From 367d6a45e117e2c14f7549b95697a445b7ed6df8 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Mon, 7 Oct 2013 14:58:26 +0200 Subject: [PATCH] Removed jOOQ-tools and jOOQ-website from public repository --- jOOQ-tools/.classpath | 9 - jOOQ-tools/.gitignore | 2 - jOOQ-tools/.project | 40 - .../org.eclipse.core.resources.prefs | 5 - .../.settings/org.eclipse.core.runtime.prefs | 2 - .../.settings/org.eclipse.jdt.core.prefs | 382 - jOOQ-tools/.settings/org.eclipse.jdt.ui.prefs | 115 - .../.settings/org.eclipse.m2e.core.prefs | 4 - .../.settings/org.maven.ide.eclipse.prefs | 8 - jOOQ-tools/LICENSE.txt | 38 - jOOQ-tools/META-INF/MANIFEST.MF | 10 - jOOQ-tools/build.properties | 5 - .../src/org/jooq/api/rr/BNFGenerator.java | 763 -- jOOQ-tools/src/org/jooq/docs/Functions.xtend | 216 - jOOQ-tools/src/org/jooq/oss/Splitter.xtend | 251 - .../src/org/jooq/xtend/BetweenAndSteps.xtend | 343 - .../src/org/jooq/xtend/Conversions.xtend | 129 - jOOQ-tools/src/org/jooq/xtend/DSL.xtend | 156 - .../src/org/jooq/xtend/DSLContext.xtend | 473 - .../src/org/jooq/xtend/GenerateAll.xtend | 58 - .../src/org/jooq/xtend/Generators.xtend | 450 - jOOQ-tools/src/org/jooq/xtend/InsertDSL.xtend | 362 - jOOQ-tools/src/org/jooq/xtend/MergeDSL.xtend | 417 - jOOQ-tools/src/org/jooq/xtend/Records.xtend | 208 - jOOQ-tools/src/org/jooq/xtend/Rows.xtend | 1982 --- jOOQ-tools/src/org/jooq/xtend/UpdateDSL.xtend | 212 - jOOQ-tools/src/org/jooq/xtend/Util.java | 49 - jOOQ-website/.classpath | 9 - jOOQ-website/.gitignore | 6 - jOOQ-website/.htaccess | 49 - jOOQ-website/.project | 29 - .../.settings/org.eclipse.jdt.core.prefs | 382 - .../.settings/org.eclipse.jdt.ui.prefs | 115 - .../.settings/org.eclipse.m2e.core.prefs | 4 - .../.settings/org.maven.ide.eclipse.prefs | 8 - jOOQ-website/MailChimp.class.php | 74 - jOOQ-website/community.php | 297 - jOOQ-website/conf.php | 5 - jOOQ-website/css/jooq.css | 421 - jOOQ-website/css/jquery.modal.css | 44 - jOOQ-website/donate.php | 43 - jOOQ-website/download.php | 123 - jOOQ-website/e/.htaccess | 1 - jOOQ-website/e/400-bad_request.html | 89 - .../e/401-authorization_required.html | 89 - jOOQ-website/e/403-forbidden.html | 89 - jOOQ-website/e/404-not_found.html | 89 - jOOQ-website/e/408-request_timed_out.html | 89 - jOOQ-website/e/500-internal_server_error.html | 89 - jOOQ-website/e/503-service_unavailable.html | 89 - jOOQ-website/e/index.html | 453 - jOOQ-website/error.log | 0 jOOQ-website/eula.php | 25 - jOOQ-website/favicon.ico | Bin 4286 -> 0 bytes jOOQ-website/fnt/Infinity.ttf | Bin 20224 -> 0 bytes jOOQ-website/frame.php | 367 - jOOQ-website/img/.gitignore | 1 - jOOQ-website/img/banner-medium.png | Bin 104917 -> 0 bytes jOOQ-website/img/bg.jpg | Bin 75819 -> 0 bytes jOOQ-website/img/eclipse-example-01.png | Bin 7093 -> 0 bytes jOOQ-website/img/eclipse-example-02.png | Bin 13465 -> 0 bytes jOOQ-website/img/eclipse-example-03.png | Bin 16990 -> 0 bytes jOOQ-website/img/eclipse-example-04.png | Bin 23053 -> 0 bytes jOOQ-website/img/eclipse-example-05.png | Bin 8100 -> 0 bytes jOOQ-website/img/favicon-16.png | Bin 700 -> 0 bytes jOOQ-website/img/favicon-32.png | Bin 1852 -> 0 bytes jOOQ-website/img/forkme.png | Bin 6893 -> 0 bytes jOOQ-website/img/jooq-console-01.png | Bin 71501 -> 0 bytes jOOQ-website/img/jooq-console-02.png | Bin 72011 -> 0 bytes jOOQ-website/img/jooq-logo-black.png | Bin 947 -> 0 bytes jOOQ-website/img/joox-big-bw.png | Bin 866567 -> 0 bytes jOOQ-website/img/joox-big.png | Bin 1394281 -> 0 bytes jOOQ-website/img/joox-bw.png | Bin 29458 -> 0 bytes jOOQ-website/img/joox-small.png | Bin 13366 -> 0 bytes jOOQ-website/img/joox.png | Bin 36844 -> 0 bytes jOOQ-website/img/logo-223x170.png | Bin 33338 -> 0 bytes jOOQ-website/img/logo-big-bw.png | Bin 312350 -> 0 bytes jOOQ-website/img/logo-big.jpg | Bin 101490 -> 0 bytes jOOQ-website/img/logo-big.png | Bin 437022 -> 0 bytes jOOQ-website/img/logo-bw.png | Bin 37221 -> 0 bytes jOOQ-website/img/logo.png | Bin 43258 -> 0 bytes jOOQ-website/img/navigation-item-active.png | Bin 1836 -> 0 bytes jOOQ-website/img/social-fb-hover.png | Bin 2926 -> 0 bytes jOOQ-website/img/social-fb.png | Bin 2926 -> 0 bytes jOOQ-website/img/social-g+-hover.png | Bin 3324 -> 0 bytes jOOQ-website/img/social-g+.png | Bin 3345 -> 0 bytes jOOQ-website/img/social-gh.png | Bin 1313 -> 0 bytes jOOQ-website/img/social-in-hover.png | Bin 2943 -> 0 bytes jOOQ-website/img/social-in.png | Bin 2946 -> 0 bytes jOOQ-website/img/social-nl-hover.png | Bin 2964 -> 0 bytes jOOQ-website/img/social-nl.png | Bin 3104 -> 0 bytes jOOQ-website/img/social-so.png | Bin 841 -> 0 bytes jOOQ-website/img/social-su.png | Bin 907 -> 0 bytes jOOQ-website/img/social-subscribe-hover.png | Bin 2891 -> 0 bytes jOOQ-website/img/social-subscribe.png | Bin 2898 -> 0 bytes jOOQ-website/img/social-tw-hover.png | Bin 3140 -> 0 bytes jOOQ-website/img/social-tw.png | Bin 3160 -> 0 bytes .../img/sql-performance-explained-de.png | Bin 40921 -> 0 bytes jOOQ-website/inc/LICENSE.txt | 38 - jOOQ-website/inc/RELEASENOTES-2.0.txt | 2299 ---- jOOQ-website/inc/RELEASENOTES-2.1.txt | 2397 ---- jOOQ-website/inc/RELEASENOTES-2.2.txt | 2527 ---- jOOQ-website/inc/RELEASENOTES-2.3.txt | 2663 ---- jOOQ-website/inc/RELEASENOTES-2.4.txt | 2816 ---- jOOQ-website/inc/RELEASENOTES-2.5.txt | 2936 ---- jOOQ-website/inc/RELEASENOTES-2.6.txt | 3090 ----- jOOQ-website/inc/RELEASENOTES-3.0.txt | 3562 ----- jOOQ-website/inc/RELEASENOTES-3.1.txt | 3691 ----- jOOQ-website/inc/RELEASENOTES-3.2.txt | 3691 ----- jOOQ-website/inc/RELEASENOTES.txt | 3781 ------ jOOQ-website/inc/feature-matrix.php | 427 - jOOQ-website/index.php | 196 - jOOQ-website/js/jquery.cookie.js | 95 - jOOQ-website/js/jquery.js | 4 - jOOQ-website/js/jquery.modal.js | 187 - jOOQ-website/js/prettify/lang-apollo.js | 51 - jOOQ-website/js/prettify/lang-basic.js | 32 - jOOQ-website/js/prettify/lang-clj.js | 64 - jOOQ-website/js/prettify/lang-css.js | 159 - jOOQ-website/js/prettify/lang-dart.js | 88 - jOOQ-website/js/prettify/lang-erlang.js | 92 - jOOQ-website/js/prettify/lang-go.js | 58 - jOOQ-website/js/prettify/lang-hs.js | 101 - jOOQ-website/js/prettify/lang-lisp.js | 94 - jOOQ-website/js/prettify/lang-llvm.js | 61 - jOOQ-website/js/prettify/lang-lua.js | 59 - jOOQ-website/js/prettify/lang-matlab.js | 180 - jOOQ-website/js/prettify/lang-ml.js | 56 - jOOQ-website/js/prettify/lang-mumps.js | 139 - jOOQ-website/js/prettify/lang-n.js | 65 - jOOQ-website/js/prettify/lang-pascal.js | 32 - jOOQ-website/js/prettify/lang-proto.js | 35 - jOOQ-website/js/prettify/lang-r.js | 57 - jOOQ-website/js/prettify/lang-rd.js | 47 - jOOQ-website/js/prettify/lang-scala.js | 54 - jOOQ-website/js/prettify/lang-sql.js | 58 - jOOQ-website/js/prettify/lang-tcl.js | 62 - jOOQ-website/js/prettify/lang-tex.js | 46 - jOOQ-website/js/prettify/lang-vb.js | 66 - jOOQ-website/js/prettify/lang-vhdl.js | 34 - jOOQ-website/js/prettify/lang-wiki.js | 53 - jOOQ-website/js/prettify/lang-xq.js | 67 - jOOQ-website/js/prettify/lang-yaml.js | 27 - jOOQ-website/js/prettify/prettify.css | 118 - jOOQ-website/js/prettify/prettify.js | 1655 --- jOOQ-website/json/.htaccess | 1 - jOOQ-website/json/stats.php | 23 - jOOQ-website/launch/Transform.launch | 13 - jOOQ-website/learn.php | 239 - jOOQ-website/licenses.php | 22 - jOOQ-website/news.php | 60 - jOOQ-website/notes.php | 118 - jOOQ-website/pom.xml | 57 - jOOQ-website/registration-email-save.php | 32 - jOOQ-website/registration-email.php | 294 - jOOQ-website/robots.txt | 3 - jOOQ-website/sql-as-seen-by-jooq.svg | 537 - jOOQ-website/sql-as-seen-by-jooq.txt | 214 - jOOQ-website/src/main/java/Transform.java | 424 - .../src/main/resources/OPENSANS-LIGHT.TTF | Bin 222412 -> 0 bytes .../src/main/resources/ROBOTO-LIGHT.TTF | Bin 140276 -> 0 bytes .../src/main/resources/fop.config.xml | 65 - jOOQ-website/src/main/resources/html-page.xsl | 128 - .../src/main/resources/html-pages.xsl | 223 - jOOQ-website/src/main/resources/html-util.xsl | 276 - .../src/main/resources/manual-2.5.xml | 8516 ------------ .../src/main/resources/manual-2.6.xml | 9141 ------------- .../src/main/resources/manual-2.7.xml | 9141 ------------- .../src/main/resources/manual-3.0.xml | 10436 --------------- .../src/main/resources/manual-3.1.xml | 11008 --------------- .../src/main/resources/manual-3.2.xml | 11113 ---------------- jOOQ-website/src/main/resources/manual.xml | 5206 -------- jOOQ-website/src/main/resources/opensans.xml | 1 - jOOQ-website/src/main/resources/pdf.xsl | 590 - jOOQ-website/src/main/resources/roboto.xml | 1 - jOOQ-website/tutorial.php | 4 - jOOQ-website/users.csv | 0 jOOQ-website/xsd/.htaccess | 1 - jOOQ-website/xsd/jooq-codegen-2.0.4.xsd | 313 - jOOQ-website/xsd/jooq-codegen-2.1.0.xsd | 362 - jOOQ-website/xsd/jooq-codegen-2.3.0.xsd | 368 - jOOQ-website/xsd/jooq-codegen-2.4.0.xsd | 380 - jOOQ-website/xsd/jooq-codegen-2.5.0.xsd | 400 - jOOQ-website/xsd/jooq-codegen-3.0.0.xsd | 381 - jOOQ-website/xsd/jooq-codegen-3.2.0.xsd | 389 - jOOQ-website/xsd/jooq-export-1.6.2.xsd | 45 - jOOQ-website/xsd/jooq-export-2.6.0.xsd | 46 - jOOQ-website/xsd/jooq-runtime-2.0.5.xsd | 105 - jOOQ-website/xsd/jooq-runtime-2.1.0.xsd | 160 - jOOQ-website/xsd/jooq-runtime-2.3.0.xsd | 165 - jOOQ-website/xsd/jooq-runtime-2.5.0.xsd | 171 - jOOQ-website/xsd/jooq-runtime-2.6.0.xsd | 160 - jOOQ-website/xsd/jooq-runtime-3.0.0.xsd | 150 - jOOQ-website/xsd/jooq-runtime-3.1.0.xsd | 175 - 194 files changed, 119535 deletions(-) delete mode 100644 jOOQ-tools/.classpath delete mode 100644 jOOQ-tools/.gitignore delete mode 100644 jOOQ-tools/.project delete mode 100644 jOOQ-tools/.settings/org.eclipse.core.resources.prefs delete mode 100644 jOOQ-tools/.settings/org.eclipse.core.runtime.prefs delete mode 100644 jOOQ-tools/.settings/org.eclipse.jdt.core.prefs delete mode 100644 jOOQ-tools/.settings/org.eclipse.jdt.ui.prefs delete mode 100644 jOOQ-tools/.settings/org.eclipse.m2e.core.prefs delete mode 100644 jOOQ-tools/.settings/org.maven.ide.eclipse.prefs delete mode 100644 jOOQ-tools/LICENSE.txt delete mode 100644 jOOQ-tools/META-INF/MANIFEST.MF delete mode 100644 jOOQ-tools/build.properties delete mode 100644 jOOQ-tools/src/org/jooq/api/rr/BNFGenerator.java delete mode 100644 jOOQ-tools/src/org/jooq/docs/Functions.xtend delete mode 100644 jOOQ-tools/src/org/jooq/oss/Splitter.xtend delete mode 100644 jOOQ-tools/src/org/jooq/xtend/BetweenAndSteps.xtend delete mode 100644 jOOQ-tools/src/org/jooq/xtend/Conversions.xtend delete mode 100644 jOOQ-tools/src/org/jooq/xtend/DSL.xtend delete mode 100644 jOOQ-tools/src/org/jooq/xtend/DSLContext.xtend delete mode 100644 jOOQ-tools/src/org/jooq/xtend/GenerateAll.xtend delete mode 100644 jOOQ-tools/src/org/jooq/xtend/Generators.xtend delete mode 100644 jOOQ-tools/src/org/jooq/xtend/InsertDSL.xtend delete mode 100644 jOOQ-tools/src/org/jooq/xtend/MergeDSL.xtend delete mode 100644 jOOQ-tools/src/org/jooq/xtend/Records.xtend delete mode 100644 jOOQ-tools/src/org/jooq/xtend/Rows.xtend delete mode 100644 jOOQ-tools/src/org/jooq/xtend/UpdateDSL.xtend delete mode 100644 jOOQ-tools/src/org/jooq/xtend/Util.java delete mode 100644 jOOQ-website/.classpath delete mode 100644 jOOQ-website/.gitignore delete mode 100644 jOOQ-website/.htaccess delete mode 100644 jOOQ-website/.project delete mode 100644 jOOQ-website/.settings/org.eclipse.jdt.core.prefs delete mode 100644 jOOQ-website/.settings/org.eclipse.jdt.ui.prefs delete mode 100644 jOOQ-website/.settings/org.eclipse.m2e.core.prefs delete mode 100644 jOOQ-website/.settings/org.maven.ide.eclipse.prefs delete mode 100644 jOOQ-website/MailChimp.class.php delete mode 100644 jOOQ-website/community.php delete mode 100644 jOOQ-website/conf.php delete mode 100644 jOOQ-website/css/jooq.css delete mode 100644 jOOQ-website/css/jquery.modal.css delete mode 100644 jOOQ-website/donate.php delete mode 100644 jOOQ-website/download.php delete mode 100644 jOOQ-website/e/.htaccess delete mode 100644 jOOQ-website/e/400-bad_request.html delete mode 100644 jOOQ-website/e/401-authorization_required.html delete mode 100644 jOOQ-website/e/403-forbidden.html delete mode 100644 jOOQ-website/e/404-not_found.html delete mode 100644 jOOQ-website/e/408-request_timed_out.html delete mode 100644 jOOQ-website/e/500-internal_server_error.html delete mode 100644 jOOQ-website/e/503-service_unavailable.html delete mode 100644 jOOQ-website/e/index.html delete mode 100644 jOOQ-website/error.log delete mode 100644 jOOQ-website/eula.php delete mode 100644 jOOQ-website/favicon.ico delete mode 100644 jOOQ-website/fnt/Infinity.ttf delete mode 100644 jOOQ-website/frame.php delete mode 100644 jOOQ-website/img/.gitignore delete mode 100644 jOOQ-website/img/banner-medium.png delete mode 100644 jOOQ-website/img/bg.jpg delete mode 100644 jOOQ-website/img/eclipse-example-01.png delete mode 100644 jOOQ-website/img/eclipse-example-02.png delete mode 100644 jOOQ-website/img/eclipse-example-03.png delete mode 100644 jOOQ-website/img/eclipse-example-04.png delete mode 100644 jOOQ-website/img/eclipse-example-05.png delete mode 100644 jOOQ-website/img/favicon-16.png delete mode 100644 jOOQ-website/img/favicon-32.png delete mode 100644 jOOQ-website/img/forkme.png delete mode 100644 jOOQ-website/img/jooq-console-01.png delete mode 100644 jOOQ-website/img/jooq-console-02.png delete mode 100644 jOOQ-website/img/jooq-logo-black.png delete mode 100644 jOOQ-website/img/joox-big-bw.png delete mode 100644 jOOQ-website/img/joox-big.png delete mode 100644 jOOQ-website/img/joox-bw.png delete mode 100644 jOOQ-website/img/joox-small.png delete mode 100644 jOOQ-website/img/joox.png delete mode 100644 jOOQ-website/img/logo-223x170.png delete mode 100644 jOOQ-website/img/logo-big-bw.png delete mode 100644 jOOQ-website/img/logo-big.jpg delete mode 100644 jOOQ-website/img/logo-big.png delete mode 100644 jOOQ-website/img/logo-bw.png delete mode 100644 jOOQ-website/img/logo.png delete mode 100644 jOOQ-website/img/navigation-item-active.png delete mode 100644 jOOQ-website/img/social-fb-hover.png delete mode 100644 jOOQ-website/img/social-fb.png delete mode 100644 jOOQ-website/img/social-g+-hover.png delete mode 100644 jOOQ-website/img/social-g+.png delete mode 100644 jOOQ-website/img/social-gh.png delete mode 100644 jOOQ-website/img/social-in-hover.png delete mode 100644 jOOQ-website/img/social-in.png delete mode 100644 jOOQ-website/img/social-nl-hover.png delete mode 100644 jOOQ-website/img/social-nl.png delete mode 100644 jOOQ-website/img/social-so.png delete mode 100644 jOOQ-website/img/social-su.png delete mode 100644 jOOQ-website/img/social-subscribe-hover.png delete mode 100644 jOOQ-website/img/social-subscribe.png delete mode 100644 jOOQ-website/img/social-tw-hover.png delete mode 100644 jOOQ-website/img/social-tw.png delete mode 100644 jOOQ-website/img/sql-performance-explained-de.png delete mode 100644 jOOQ-website/inc/LICENSE.txt delete mode 100644 jOOQ-website/inc/RELEASENOTES-2.0.txt delete mode 100644 jOOQ-website/inc/RELEASENOTES-2.1.txt delete mode 100644 jOOQ-website/inc/RELEASENOTES-2.2.txt delete mode 100644 jOOQ-website/inc/RELEASENOTES-2.3.txt delete mode 100644 jOOQ-website/inc/RELEASENOTES-2.4.txt delete mode 100644 jOOQ-website/inc/RELEASENOTES-2.5.txt delete mode 100644 jOOQ-website/inc/RELEASENOTES-2.6.txt delete mode 100644 jOOQ-website/inc/RELEASENOTES-3.0.txt delete mode 100644 jOOQ-website/inc/RELEASENOTES-3.1.txt delete mode 100644 jOOQ-website/inc/RELEASENOTES-3.2.txt delete mode 100644 jOOQ-website/inc/RELEASENOTES.txt delete mode 100644 jOOQ-website/inc/feature-matrix.php delete mode 100644 jOOQ-website/index.php delete mode 100644 jOOQ-website/js/jquery.cookie.js delete mode 100644 jOOQ-website/js/jquery.js delete mode 100644 jOOQ-website/js/jquery.modal.js delete mode 100644 jOOQ-website/js/prettify/lang-apollo.js delete mode 100644 jOOQ-website/js/prettify/lang-basic.js delete mode 100644 jOOQ-website/js/prettify/lang-clj.js delete mode 100644 jOOQ-website/js/prettify/lang-css.js delete mode 100644 jOOQ-website/js/prettify/lang-dart.js delete mode 100644 jOOQ-website/js/prettify/lang-erlang.js delete mode 100644 jOOQ-website/js/prettify/lang-go.js delete mode 100644 jOOQ-website/js/prettify/lang-hs.js delete mode 100644 jOOQ-website/js/prettify/lang-lisp.js delete mode 100644 jOOQ-website/js/prettify/lang-llvm.js delete mode 100644 jOOQ-website/js/prettify/lang-lua.js delete mode 100644 jOOQ-website/js/prettify/lang-matlab.js delete mode 100644 jOOQ-website/js/prettify/lang-ml.js delete mode 100644 jOOQ-website/js/prettify/lang-mumps.js delete mode 100644 jOOQ-website/js/prettify/lang-n.js delete mode 100644 jOOQ-website/js/prettify/lang-pascal.js delete mode 100644 jOOQ-website/js/prettify/lang-proto.js delete mode 100644 jOOQ-website/js/prettify/lang-r.js delete mode 100644 jOOQ-website/js/prettify/lang-rd.js delete mode 100644 jOOQ-website/js/prettify/lang-scala.js delete mode 100644 jOOQ-website/js/prettify/lang-sql.js delete mode 100644 jOOQ-website/js/prettify/lang-tcl.js delete mode 100644 jOOQ-website/js/prettify/lang-tex.js delete mode 100644 jOOQ-website/js/prettify/lang-vb.js delete mode 100644 jOOQ-website/js/prettify/lang-vhdl.js delete mode 100644 jOOQ-website/js/prettify/lang-wiki.js delete mode 100644 jOOQ-website/js/prettify/lang-xq.js delete mode 100644 jOOQ-website/js/prettify/lang-yaml.js delete mode 100644 jOOQ-website/js/prettify/prettify.css delete mode 100644 jOOQ-website/js/prettify/prettify.js delete mode 100644 jOOQ-website/json/.htaccess delete mode 100644 jOOQ-website/json/stats.php delete mode 100644 jOOQ-website/launch/Transform.launch delete mode 100644 jOOQ-website/learn.php delete mode 100644 jOOQ-website/licenses.php delete mode 100644 jOOQ-website/news.php delete mode 100644 jOOQ-website/notes.php delete mode 100644 jOOQ-website/pom.xml delete mode 100644 jOOQ-website/registration-email-save.php delete mode 100644 jOOQ-website/registration-email.php delete mode 100644 jOOQ-website/robots.txt delete mode 100644 jOOQ-website/sql-as-seen-by-jooq.svg delete mode 100644 jOOQ-website/sql-as-seen-by-jooq.txt delete mode 100644 jOOQ-website/src/main/java/Transform.java delete mode 100644 jOOQ-website/src/main/resources/OPENSANS-LIGHT.TTF delete mode 100644 jOOQ-website/src/main/resources/ROBOTO-LIGHT.TTF delete mode 100644 jOOQ-website/src/main/resources/fop.config.xml delete mode 100644 jOOQ-website/src/main/resources/html-page.xsl delete mode 100644 jOOQ-website/src/main/resources/html-pages.xsl delete mode 100644 jOOQ-website/src/main/resources/html-util.xsl delete mode 100644 jOOQ-website/src/main/resources/manual-2.5.xml delete mode 100644 jOOQ-website/src/main/resources/manual-2.6.xml delete mode 100644 jOOQ-website/src/main/resources/manual-2.7.xml delete mode 100644 jOOQ-website/src/main/resources/manual-3.0.xml delete mode 100644 jOOQ-website/src/main/resources/manual-3.1.xml delete mode 100644 jOOQ-website/src/main/resources/manual-3.2.xml delete mode 100644 jOOQ-website/src/main/resources/manual.xml delete mode 100644 jOOQ-website/src/main/resources/opensans.xml delete mode 100644 jOOQ-website/src/main/resources/pdf.xsl delete mode 100644 jOOQ-website/src/main/resources/roboto.xml delete mode 100644 jOOQ-website/tutorial.php delete mode 100644 jOOQ-website/users.csv delete mode 100644 jOOQ-website/xsd/.htaccess delete mode 100644 jOOQ-website/xsd/jooq-codegen-2.0.4.xsd delete mode 100644 jOOQ-website/xsd/jooq-codegen-2.1.0.xsd delete mode 100644 jOOQ-website/xsd/jooq-codegen-2.3.0.xsd delete mode 100644 jOOQ-website/xsd/jooq-codegen-2.4.0.xsd delete mode 100644 jOOQ-website/xsd/jooq-codegen-2.5.0.xsd delete mode 100644 jOOQ-website/xsd/jooq-codegen-3.0.0.xsd delete mode 100644 jOOQ-website/xsd/jooq-codegen-3.2.0.xsd delete mode 100644 jOOQ-website/xsd/jooq-export-1.6.2.xsd delete mode 100644 jOOQ-website/xsd/jooq-export-2.6.0.xsd delete mode 100644 jOOQ-website/xsd/jooq-runtime-2.0.5.xsd delete mode 100644 jOOQ-website/xsd/jooq-runtime-2.1.0.xsd delete mode 100644 jOOQ-website/xsd/jooq-runtime-2.3.0.xsd delete mode 100644 jOOQ-website/xsd/jooq-runtime-2.5.0.xsd delete mode 100644 jOOQ-website/xsd/jooq-runtime-2.6.0.xsd delete mode 100644 jOOQ-website/xsd/jooq-runtime-3.0.0.xsd delete mode 100644 jOOQ-website/xsd/jooq-runtime-3.1.0.xsd diff --git a/jOOQ-tools/.classpath b/jOOQ-tools/.classpath deleted file mode 100644 index 56307d52c7..0000000000 --- a/jOOQ-tools/.classpath +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/jOOQ-tools/.gitignore b/jOOQ-tools/.gitignore deleted file mode 100644 index b49acfe491..0000000000 --- a/jOOQ-tools/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/xtend-gen -/bin diff --git a/jOOQ-tools/.project b/jOOQ-tools/.project deleted file mode 100644 index 2a44f1e7ce..0000000000 --- a/jOOQ-tools/.project +++ /dev/null @@ -1,40 +0,0 @@ - - - jOOQ-tools - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.pde.ManifestBuilder - - - - - org.eclipse.pde.SchemaBuilder - - - - - org.eclipse.xtext.ui.shared.xtextBuilder - - - - - org.eclipse.xtend.shared.ui.xtendBuilder - - - - - - org.eclipse.pde.PluginNature - org.eclipse.jdt.core.javanature - org.eclipse.xtext.ui.shared.xtextNature - org.eclipse.xtend.shared.ui.xtendXPandNature - - diff --git a/jOOQ-tools/.settings/org.eclipse.core.resources.prefs b/jOOQ-tools/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index 365bbd6097..0000000000 --- a/jOOQ-tools/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,5 +0,0 @@ -eclipse.preferences.version=1 -encoding//src/main/java=UTF-8 -encoding//src/main/resources=UTF-8 -encoding//src/test/java=UTF-8 -encoding/=UTF-8 diff --git a/jOOQ-tools/.settings/org.eclipse.core.runtime.prefs b/jOOQ-tools/.settings/org.eclipse.core.runtime.prefs deleted file mode 100644 index c522e1f4ae..0000000000 --- a/jOOQ-tools/.settings/org.eclipse.core.runtime.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -line.separator=\n diff --git a/jOOQ-tools/.settings/org.eclipse.jdt.core.prefs b/jOOQ-tools/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 1d48cf419d..0000000000 --- a/jOOQ-tools/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,382 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore -org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull -org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault -org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable -org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.6 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.doc.comment.support=enabled -org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.autoboxing=ignore -org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning -org.eclipse.jdt.core.compiler.problem.deadCode=warning -org.eclipse.jdt.core.compiler.problem.deprecation=warning -org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled -org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled -org.eclipse.jdt.core.compiler.problem.discouragedReference=warning -org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore -org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore -org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled -org.eclipse.jdt.core.compiler.problem.fieldHiding=warning -org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning -org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning -org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning -org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning -org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled -org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning -org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore -org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore -org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning -org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled -org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=enabled -org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled -org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected -org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning -org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning -org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore -org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning -org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled -org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore -org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore -org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled -org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public -org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=all_standard_tags -org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore -org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled -org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled -org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public -org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning -org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled -org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning -org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=warning -org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning -org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning -org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore -org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error -org.eclipse.jdt.core.compiler.problem.nullReference=error -org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error -org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning -org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning -org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore -org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning -org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning -org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore -org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning -org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning -org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning -org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore -org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning -org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore -org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore -org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled -org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning -org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled -org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled -org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore -org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning -org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled -org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning -org.eclipse.jdt.core.compiler.problem.unclosedCloseable=ignore -org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore -org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning -org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore -org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning -org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled -org.eclipse.jdt.core.compiler.problem.unusedImport=warning -org.eclipse.jdt.core.compiler.problem.unusedLabel=warning -org.eclipse.jdt.core.compiler.problem.unusedLocal=warning -org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore -org.eclipse.jdt.core.compiler.problem.unusedParameter=warning -org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled -org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled -org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled -org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning -org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning -org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning -org.eclipse.jdt.core.compiler.source=1.6 -org.eclipse.jdt.core.formatter.align_type_members_on_columns=true -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_assignment=0 -org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 -org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 -org.eclipse.jdt.core.formatter.alignment_for_enum_constants=49 -org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 -org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0 -org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 -org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_after_package=1 -org.eclipse.jdt.core.formatter.blank_lines_before_field=0 -org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 -org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 -org.eclipse.jdt.core.formatter.blank_lines_before_method=1 -org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 -org.eclipse.jdt.core.formatter.blank_lines_before_package=0 -org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 -org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 -org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true -org.eclipse.jdt.core.formatter.comment.format_block_comments=true -org.eclipse.jdt.core.formatter.comment.format_header=false -org.eclipse.jdt.core.formatter.comment.format_html=true -org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true -org.eclipse.jdt.core.formatter.comment.format_line_comments=true -org.eclipse.jdt.core.formatter.comment.format_source_code=true -org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true -org.eclipse.jdt.core.formatter.comment.indent_root_tags=true -org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert -org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert -org.eclipse.jdt.core.formatter.comment.line_length=80 -org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true -org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true -org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false -org.eclipse.jdt.core.formatter.compact_else_if=true -org.eclipse.jdt.core.formatter.continuation_indentation=1 -org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=1 -org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off -org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on -org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false -org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true -org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_empty_lines=false -org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true -org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true -org.eclipse.jdt.core.formatter.indentation.size=4 -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert -org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert -org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=insert -org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=insert -org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert -org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.join_lines_in_comments=true -org.eclipse.jdt.core.formatter.join_wrapped_lines=true -org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false -org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false -org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false -org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false -org.eclipse.jdt.core.formatter.lineSplit=120 -org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false -org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 -org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 -org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true -org.eclipse.jdt.core.formatter.tabulation.char=space -org.eclipse.jdt.core.formatter.tabulation.size=4 -org.eclipse.jdt.core.formatter.use_on_off_tags=false -org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false -org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true -org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true diff --git a/jOOQ-tools/.settings/org.eclipse.jdt.ui.prefs b/jOOQ-tools/.settings/org.eclipse.jdt.ui.prefs deleted file mode 100644 index e0c272bb40..0000000000 --- a/jOOQ-tools/.settings/org.eclipse.jdt.ui.prefs +++ /dev/null @@ -1,115 +0,0 @@ -cleanup.add_default_serial_version_id=false -cleanup.add_generated_serial_version_id=true -cleanup.add_missing_annotations=true -cleanup.add_missing_deprecated_annotations=true -cleanup.add_missing_methods=false -cleanup.add_missing_nls_tags=false -cleanup.add_missing_override_annotations=true -cleanup.add_missing_override_annotations_interface_methods=true -cleanup.add_serial_version_id=true -cleanup.always_use_blocks=true -cleanup.always_use_parentheses_in_expressions=false -cleanup.always_use_this_for_non_static_field_access=true -cleanup.always_use_this_for_non_static_method_access=false -cleanup.convert_to_enhanced_for_loop=false -cleanup.correct_indentation=true -cleanup.format_source_code=false -cleanup.format_source_code_changes_only=false -cleanup.make_local_variable_final=true -cleanup.make_parameters_final=false -cleanup.make_private_fields_final=true -cleanup.make_type_abstract_if_missing_method=false -cleanup.make_variable_declarations_final=false -cleanup.never_use_blocks=false -cleanup.never_use_parentheses_in_expressions=true -cleanup.organize_imports=true -cleanup.qualify_static_field_accesses_with_declaring_class=false -cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true -cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true -cleanup.qualify_static_member_accesses_with_declaring_class=true -cleanup.qualify_static_method_accesses_with_declaring_class=false -cleanup.remove_private_constructors=true -cleanup.remove_trailing_whitespaces=true -cleanup.remove_trailing_whitespaces_all=true -cleanup.remove_trailing_whitespaces_ignore_empty=false -cleanup.remove_unnecessary_casts=true -cleanup.remove_unnecessary_nls_tags=true -cleanup.remove_unused_imports=true -cleanup.remove_unused_local_variables=false -cleanup.remove_unused_private_fields=true -cleanup.remove_unused_private_members=false -cleanup.remove_unused_private_methods=true -cleanup.remove_unused_private_types=true -cleanup.sort_members=false -cleanup.sort_members_all=false -cleanup.use_blocks=true -cleanup.use_blocks_only_for_return_and_throw=false -cleanup.use_parentheses_in_expressions=false -cleanup.use_this_for_non_static_field_access=false -cleanup.use_this_for_non_static_field_access_only_if_necessary=false -cleanup.use_this_for_non_static_method_access=false -cleanup.use_this_for_non_static_method_access_only_if_necessary=true -cleanup_profile=_jOOQ -cleanup_settings_version=2 -eclipse.preferences.version=1 -editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true -formatter_profile=_jOOQ -formatter_settings_version=12 -org.eclipse.jdt.ui.ignorelowercasenames=true -org.eclipse.jdt.ui.importorder=java;javax;org.jooq;org;com; -org.eclipse.jdt.ui.javadoc=false -org.eclipse.jdt.ui.ondemandthreshold=99999 -org.eclipse.jdt.ui.staticondemandthreshold=99999 -org.eclipse.jdt.ui.text.custom_code_templates= -sp_cleanup.add_default_serial_version_id=true -sp_cleanup.add_generated_serial_version_id=false -sp_cleanup.add_missing_annotations=true -sp_cleanup.add_missing_deprecated_annotations=true -sp_cleanup.add_missing_methods=false -sp_cleanup.add_missing_nls_tags=false -sp_cleanup.add_missing_override_annotations=true -sp_cleanup.add_missing_override_annotations_interface_methods=true -sp_cleanup.add_serial_version_id=false -sp_cleanup.always_use_blocks=true -sp_cleanup.always_use_parentheses_in_expressions=false -sp_cleanup.always_use_this_for_non_static_field_access=false -sp_cleanup.always_use_this_for_non_static_method_access=false -sp_cleanup.convert_to_enhanced_for_loop=false -sp_cleanup.correct_indentation=false -sp_cleanup.format_source_code=false -sp_cleanup.format_source_code_changes_only=false -sp_cleanup.make_local_variable_final=false -sp_cleanup.make_parameters_final=false -sp_cleanup.make_private_fields_final=true -sp_cleanup.make_type_abstract_if_missing_method=false -sp_cleanup.make_variable_declarations_final=false -sp_cleanup.never_use_blocks=false -sp_cleanup.never_use_parentheses_in_expressions=true -sp_cleanup.on_save_use_additional_actions=true -sp_cleanup.organize_imports=true -sp_cleanup.qualify_static_field_accesses_with_declaring_class=false -sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_with_declaring_class=false -sp_cleanup.qualify_static_method_accesses_with_declaring_class=false -sp_cleanup.remove_private_constructors=true -sp_cleanup.remove_trailing_whitespaces=true -sp_cleanup.remove_trailing_whitespaces_all=true -sp_cleanup.remove_trailing_whitespaces_ignore_empty=false -sp_cleanup.remove_unnecessary_casts=true -sp_cleanup.remove_unnecessary_nls_tags=false -sp_cleanup.remove_unused_imports=true -sp_cleanup.remove_unused_local_variables=false -sp_cleanup.remove_unused_private_fields=true -sp_cleanup.remove_unused_private_members=false -sp_cleanup.remove_unused_private_methods=true -sp_cleanup.remove_unused_private_types=true -sp_cleanup.sort_members=false -sp_cleanup.sort_members_all=false -sp_cleanup.use_blocks=false -sp_cleanup.use_blocks_only_for_return_and_throw=false -sp_cleanup.use_parentheses_in_expressions=false -sp_cleanup.use_this_for_non_static_field_access=false -sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true -sp_cleanup.use_this_for_non_static_method_access=false -sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true diff --git a/jOOQ-tools/.settings/org.eclipse.m2e.core.prefs b/jOOQ-tools/.settings/org.eclipse.m2e.core.prefs deleted file mode 100644 index 14b697b7bb..0000000000 --- a/jOOQ-tools/.settings/org.eclipse.m2e.core.prefs +++ /dev/null @@ -1,4 +0,0 @@ -activeProfiles= -eclipse.preferences.version=1 -resolveWorkspaceProjects=true -version=1 diff --git a/jOOQ-tools/.settings/org.maven.ide.eclipse.prefs b/jOOQ-tools/.settings/org.maven.ide.eclipse.prefs deleted file mode 100644 index c5172a20ac..0000000000 --- a/jOOQ-tools/.settings/org.maven.ide.eclipse.prefs +++ /dev/null @@ -1,8 +0,0 @@ -#Sun Apr 10 10:03:42 CEST 2011 -activeProfiles= -eclipse.preferences.version=1 -fullBuildGoals=process-test-resources -resolveWorkspaceProjects=true -resourceFilterGoals=process-resources resources\:testResources -skipCompilerPlugin=true -version=1 diff --git a/jOOQ-tools/LICENSE.txt b/jOOQ-tools/LICENSE.txt deleted file mode 100644 index 03b0953bc3..0000000000 --- a/jOOQ-tools/LICENSE.txt +++ /dev/null @@ -1,38 +0,0 @@ -Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com) -All rights reserved. - -This work is dual-licensed -- under the Apache Software License 2.0 (the "ASL") -- under the jOOQ License and Maintenance Agreement (the "jOOQ License") -============================================================================= -You may choose which license applies to you: - -- If you're using this work with Open Source databases, you may choose - either ASL or jOOQ License. -- If you're using this work with at least one commercial database, you must - choose jOOQ License - -For more information, please visit http://www.jooq.org/licenses - -Apache Software License 2.0: ------------------------------------------------------------------------------ -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - -jOOQ License and Maintenance Agreement: ------------------------------------------------------------------------------ -Data Geekery grants the Customer the non-exclusive, timely limited and -non-transferable license to install and use the Software under the terms of -the jOOQ License and Maintenance Agreement. - -This library is distributed with a LIMITED WARRANTY. See the jOOQ License -and Maintenance Agreement for more details: http://www.jooq.org/licensing diff --git a/jOOQ-tools/META-INF/MANIFEST.MF b/jOOQ-tools/META-INF/MANIFEST.MF deleted file mode 100644 index e72557888b..0000000000 --- a/jOOQ-tools/META-INF/MANIFEST.MF +++ /dev/null @@ -1,10 +0,0 @@ -Manifest-Version: 1.0 -Bundle-ManifestVersion: 2 -Bundle-Name: Xtend Tutorial -Bundle-SymbolicName: jOOQ-tools -Bundle-Version: 2.3.0.qualifier -Bundle-Vendor: Eclipse Tools Project -Require-Bundle: org.eclipse.xtext.xbase.lib;bundle-version="2.3.0", - org.eclipse.xtend.lib;bundle-version="2.3.0", - org.junit4 -Bundle-RequiredExecutionEnvironment: J2SE-1.5 diff --git a/jOOQ-tools/build.properties b/jOOQ-tools/build.properties deleted file mode 100644 index d6c49e5cf1..0000000000 --- a/jOOQ-tools/build.properties +++ /dev/null @@ -1,5 +0,0 @@ -source.. = src/,\ - xtend-gen/ -output.. = bin/ -bin.includes = META-INF/,\ - . diff --git a/jOOQ-tools/src/org/jooq/api/rr/BNFGenerator.java b/jOOQ-tools/src/org/jooq/api/rr/BNFGenerator.java deleted file mode 100644 index 9e457d0b1d..0000000000 --- a/jOOQ-tools/src/org/jooq/api/rr/BNFGenerator.java +++ /dev/null @@ -1,763 +0,0 @@ -/** - * Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com) - * All rights reserved. - * - * This work is dual-licensed - * - under the Apache Software License 2.0 (the "ASL") - * - under the jOOQ License and Maintenance Agreement (the "jOOQ License") - * ============================================================================= - * You may choose which license applies to you: - * - * - If you're using this work with Open Source databases, you may choose - * either ASL or jOOQ License. - * - If you're using this work with at least one commercial database, you must - * choose jOOQ License - * - * For more information, please visit http://www.jooq.org/licenses - * - * Apache Software License 2.0: - * ----------------------------------------------------------------------------- - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * jOOQ License and Maintenance Agreement: - * ----------------------------------------------------------------------------- - * Data Geekery grants the Customer the non-exclusive, timely limited and - * non-transferable license to install and use the Software under the terms of - * the jOOQ License and Maintenance Agreement. - * - * This library is distributed with a LIMITED WARRANTY. See the jOOQ License - * and Maintenance Agreement for more details: http://www.jooq.org/licensing - */ -package org.jooq.api.rr; - -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.HashSet; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import java.util.TreeSet; - -import org.jooq.api.annotation.State; -import org.jooq.api.annotation.Transition; -import org.jooq.impl.DSL; -import org.jooq.tools.StringUtils; - - -/** - * A parser for org.jooq.api.annotation annotations, generating a - * BNF notation of the jOOQ API. - * - * @author Lukas Eder - */ -public class BNFGenerator { - - static Map> edgesFrom = new LinkedHashMap>(); - static Map> edgesTo = new LinkedHashMap>(); - static Map> edges = new LinkedHashMap>(); - static Set> visited = new LinkedHashSet>(); - static Set terminals = new LinkedHashSet(); - - public static void main(String[] args) throws Exception { - resolve(DSL.class); - resolveStates(); - - grammar("before substituting"); - substitute(); - grammar("after substituting"); - - System.out.println(); - System.out.println(); - - for (String terminal : terminals) { - if (!edgesTo.containsKey(terminal)) { - System.err.println("Terminal is not contained in grammar: " + terminal); - } - } - - for (String name : edgesTo.keySet()) { - if (!terminals.contains(name)) { - System.err.println("Rule for a non-terminal in grammar: " + name); - } - } - } - - private static void grammar(String comment) { - System.out.println(); - System.out.println(); - System.out.println(); - - String s = "Grammar: (" + comment + ")"; - System.out.println(s); - System.out.println(StringUtils.rightPad("", s.length(), "-")); - - for (Entry> entry : edgesTo.entrySet()) { - System.out.println(string(entry.getValue())); - } - } - - private static String string(Edge... e) { - return string(Arrays.asList(e)); - } - - private static String string(Collection e) { - return string(e, true); - } - - private static String string(Collection e, boolean collect) { - StringBuilder sb = new StringBuilder(); - String previous = ""; - String separator = ""; - - for (Edge edge : e) { - if (!edge.path.to.equals(previous) || !collect) { - if (sb.length() > 0) { - sb.append(";\n"); - } - - sb.append(edge.path.to); - sb.append(" ::= "); - - previous = edge.path.to; - separator = ""; - } - - sb.append(separator); - sb.append(edge); - - separator = " | "; - } - - sb.append(";"); - return sb.toString(); - } - - private static void substitute() { - // Remove all states that appear exactly once as from and once as to - - pruneLoop: - while (true) { - - // Some debugging.... - String check = "WindowPartitionByStep"; - Set e = edgesTo.get(check); - if (e != null) { - System.err.println(); - System.err.println(); - System.err.println(); - System.err.println(string(e, false)); - System.err.println(string(edgesFrom.get(check), false)); - System.err.println(); - System.err.println(); - System.err.println(); - } - - // Alternatives with equal paths are substituted - // A ::= B x | B y; => A ::= B ( x | y ); - // ----------------------------------------------------------------- - for (Path path : new ArrayList(edges.keySet())) { - Set set = edges.get(path); - - if (set.size() > 1) { - List list = new ArrayList(set); - List expr = new ArrayList(); - - for (Edge edge : list) { - expr.add(edge.expr); - } - - Edge substitute = new Edge( - list.get(0).path, - new Choice(expr.toArray(new Expr[0])) - ); - - for (Edge edge : list) { - remove(edge); - } - - edge(substitute); - - System.out.println(); - System.out.println("Substituted Choice: ( A ::= B x | B y; => A ::= B ( x | y ); )"); - System.out.println("--------------------------------------------------------------"); - System.out.println(string(list, false)); - System.out.println(" -> "); - System.out.println(string(substitute)); - continue pruneLoop; - } - } - - // Alternatives with equal expressions are substituted - // A ::= X a | Y a; B ::= A b; => A ::= X | Y; B ::= A a b; - // ----------------------------------------------------------------- - factoringLoop: - for (String name : new ArrayList(edgesTo.keySet())) { - if (terminals.contains(name)) { - continue factoringLoop; - } - - Set set = edgesTo.get(name); - Set expressions = new HashSet(); - - if (set.size() > 1) { - for (Edge edge : set) { - expressions.add(edge.expr); - } - - if (expressions.size() == 1) { - Expr expr = expressions.iterator().next(); - - if (expr.toString().length() > 0) { - List list = new ArrayList(set); - List before = new ArrayList(edgesFrom.get(name)); - - for (Edge edge : list) { - remove(edge); - edge(new Edge(edge.path)); - } - - for (Edge edge : before) { - remove(edge); - edge(new Edge(edge.path, new Sequence(expr, edge.expr))); - } - - System.out.println(); - System.out.println("Factored out Expression: ( A ::= X a | Y a; B ::= A b; => A ::= X | Y; B ::= A a b; )"); - System.out.println("-------------------------------------------------------------------------------------"); - System.out.println(string(list, false)); - System.out.println(string(before, false)); - System.out.println(" -> "); - System.out.println(string(edgesTo.get(name), false)); - System.out.println(string(edgesFrom.get(name), false)); - } - } - } - } - - // Sequences are substituted (only if B consumed exactly once) - // A ::= B x; B ::= C y; => A ::= C y x; - // ----------------------------------------------------------------- - for (int maxSize : new int[] { 1, Integer.MAX_VALUE }) - substitutionLoop: - for (String name : new ArrayList(edgesFrom.keySet())) { - if (terminals.contains(name)) { - continue substitutionLoop; - } - - if (edgesFrom.get(name).size() == 1) { - Edge from = edgesFrom.get(name).iterator().next(); - Set set = edgesTo.get(name); - - if (set != null) { - if (set.size() > maxSize) { - continue substitutionLoop; - } - - if (set.size() > 1) { - if (!"".equals(from.expr.toString())) { - continue substitutionLoop; - } - else { - System.out.println(); - System.out.println(); - System.out.println("Substituting multi-sequence"); - System.out.println(string(from)); - System.out.println("..."); - System.out.println(string(set)); - } - } - - List list = new ArrayList(set); - List substitutes = new ArrayList(); - - remove(from); - - for (Edge to : list) { - remove(to); - - Edge substitute = new Edge( - new Path(to.path.from, from.path.to), - new Sequence(to.expr, from.expr) - ); - - edge(substitute); - substitutes.add(substitute); - } - - System.out.println(); - System.out.println("Substituted Sequence: ( A ::= B x; B ::= C y; => A ::= C y x; )"); - System.out.println("---------------------------------------------------------------"); - System.out.println(string(list, false)); - System.out.println(string(from)); - System.out.println(" -> "); - System.out.println(string(substitutes, false)); - continue pruneLoop; - } - } - } - - break pruneLoop; - } - } - - private static void resolveStates() { - for (Class type : visited) { - State state = type.getAnnotation(State.class); - - if (state != null) { - String stateName = state.name(); - if ("".equals(stateName)) { - stateName = type.getSimpleName(); - } - - // Collect terminals and add edges from states to their aliases - // ------------------------------------------------------------- - if (notEmpty(state.aliases())) { - for (String alias : state.aliases()) { - edge(new Edge(new Path(alias, stateName))); - - if (state.terminal()) { - terminals.add(alias); - } - } - } - - if (state.terminal()) { - terminals.add(stateName); - } - - // Add edges from states to their super states - // ------------------------------------------------------------- - for (Class superType : type.getInterfaces()) { - State superState = superType.getAnnotation(State.class); - - if (superState != null) { - String superStateName = superState.name(); - if ("".equals(superStateName)) { - superStateName = superType.getSimpleName(); - } - - edge(new Edge(new Path(stateName, superStateName))); - } - } - } - } - } - - private static boolean notEmpty(String[] array) { - return array != null - && array.length > 0 - && array[0] != null - && array[0].length() > 0; - } - - private static void resolve(Class type) { - if (!visited.contains(type)) { - visited.add(type); - - for (Class i : type.getInterfaces()) { - resolve(i); - } - - resolve(type.getDeclaredMethods()); - } - } - - private static void resolve(Method[] methods) { - for (Method method : methods) { - Transition transition = method.getAnnotation(Transition.class); - - if (transition != null) { - Class declaringClass = method.getDeclaringClass(); - Class returnType = method.getReturnType(); - - // From state - // ------------------------------------------------------------- - String from = transition.from(); - if ("".equals(from)) { - State fromState = declaringClass.getAnnotation(State.class); - - if (fromState == null) { - System.err.println("No State defined on " + declaringClass.getName()); - } - else { - from = fromState.name(); - } - } - - if ("".equals(from)) { - from = declaringClass.getSimpleName(); - } - - // To state - // ------------------------------------------------------------- - String to = transition.to(); - if ("".equals(to)) { - State toState = returnType.getAnnotation(State.class); - - if (toState == null) { - System.err.println("No State defined on " + returnType.getName()); - } - else { - to = toState.name(); - } - } - - if ("".equals(to)) { - to = returnType.getSimpleName(); - } - - // Transition name - // ------------------------------------------------------------- - String name = transition.name(); - if ("".equals(name)) { - name = method.getName(); - } - - // Transition arguments - // ------------------------------------------------------------- - String[] args = transition.args(); - - // Calculation - // ------------------------------------------------------------- - edge(new Edge(new Path(from, to), new Args(name, args))); - resolve(returnType); - } - } - } - - private static void remove(Edge edge) { - remove(edge, edges, edge.path); - remove(edge, edgesFrom, edge.path.from); - remove(edge, edgesTo, edge.path.to); - } - - private static void remove(Edge edge, Map> map, K key) { - Set set = map.get(key); - - if (set != null) { - set.remove(edge); - - if (set.isEmpty()) { - map.remove(key); - } - } - } - - private static void edge(Edge edge) { - edge(edge, edges, edge.path); - edge(edge, edgesFrom, edge.path.from); - edge(edge, edgesTo, edge.path.to); - } - - private static void edge(Edge edge, Map> map, K key) { - Set set = map.get(key); - - if (set == null) { - set = new TreeSet(); - map.put(key, set); - } - - set.add(edge); - } - - private static class Path implements Comparable { - final String from; - final String to; - - Path(String from, String to) { - this.from = from; - this.to = to; - } - - @Override - public int compareTo(Path o) { - int result = 0; - - if (to != null) { - result = to.compareTo(o.to); - if (result != 0) - return result; - } - - if (from != null) { - result = from.compareTo(o.from); - if (result != 0) - return result; - } - - return result; - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((from == null) ? 0 : from.hashCode()); - result = prime * result + ((to == null) ? 0 : to.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - Path other = (Path) obj; - if (from == null) { - if (other.from != null) - return false; - } else if (!from.equals(other.from)) - return false; - if (to == null) { - if (other.to != null) - return false; - } else if (!to.equals(other.to)) - return false; - return true; - } - - @Override - public String toString() { - return from + " -> " + to; - } - } - - private static class Args extends Expr { - final String name; - final String[] args; - - Args(String name, String[] args) { - this.name = name; - this.args = args; - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - - if (!"".equals(name)) { - sb.append("'"); - sb.append(name); - sb.append("'"); - } - - if (notEmpty(args)) { - sb.append(" "); - - String separator = ""; - for (String arg : args) { - sb.append(separator); - - if (arg.endsWith("+")) { - String sub = arg.substring(0, arg.length() - 1); - sb.append(sub); - sb.append(" { ',' "); - sb.append(sub); - sb.append(" }"); - } - else { - sb.append(arg); - } - - separator = " ',' "; - } - } - - return sb.toString(); - } - } - - private static class Choice extends Expr { - final Expr[] expr; - - Choice(Expr... expr) { - this.expr = expr; - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - - boolean optional = false; - boolean any = false; - - if (expr.length > 1) - sb.append("( "); - - String separator = ""; - for (Expr e : expr) { - String s = e.toString(); - - if ("".equals(s)) { - optional = true; - continue; - } - - any = true; - - sb.append(separator); - sb.append(e); - - separator = " | "; - } - - if (expr.length > 1) - sb.append(" )"); - - if (optional) - sb.append(" ?"); - - return any ? sb.toString() : ""; - } - } - - private static class Sequence extends Expr { - final Expr[] expr; - - Sequence(Expr... expr) { - this.expr = expr; - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - - String separator = ""; - for (Expr e : expr) { - String s = e.toString(); - - if (s.length() > 0) { - sb.append(separator); - sb.append(e); - - separator = " "; - } - } - - return sb.toString(); - } - } - - private static abstract class Expr implements Comparable { - - @Override - public final int compareTo(Expr o) { - return toString().compareTo(o.toString()); - } - - @Override - public final int hashCode() { - return toString().hashCode(); - } - - @Override - public final boolean equals(Object obj) { - return toString().equals(obj.toString()); - } - } - - private static class Edge implements Comparable { - - final Path path; - final Expr expr; - - Edge(Path path) { - this(path, new Sequence()); - } - - Edge(Path path, Expr expr) { - this.path = path; - this.expr = expr; - } - - @Override - public int compareTo(Edge o) { - int result = 0; - - if (path != null) { - result = path.compareTo(o.path); - if (result != 0) - return result; - } - - if (expr != null) { - result = expr.compareTo(o.expr); - if (result != 0) - return result; - } - - return result; - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((expr == null) ? 0 : expr.hashCode()); - result = prime * result + ((path == null) ? 0 : path.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - Edge other = (Edge) obj; - if (expr == null) { - if (other.expr != null) - return false; - } else if (!expr.equals(other.expr)) - return false; - if (path == null) { - if (other.path != null) - return false; - } else if (!path.equals(other.path)) - return false; - return true; - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - - String s1 = ""; - String s2 = ""; - - if (path.from != null && !"DSL".equals(path.from)) { - s1 = path.from; - } - - s2 = expr.toString(); - - sb.append(s1); - if (!s1.isEmpty() && !s2.isEmpty()) - sb.append(" "); - sb.append(s2); - - return sb.toString(); - } - } -} diff --git a/jOOQ-tools/src/org/jooq/docs/Functions.xtend b/jOOQ-tools/src/org/jooq/docs/Functions.xtend deleted file mode 100644 index e183d50d28..0000000000 --- a/jOOQ-tools/src/org/jooq/docs/Functions.xtend +++ /dev/null @@ -1,216 +0,0 @@ -/** - * Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com) - * All rights reserved. - * - * This work is dual-licensed - * - under the Apache Software License 2.0 (the "ASL") - * - under the jOOQ License and Maintenance Agreement (the "jOOQ License") - * ============================================================================= - * You may choose which license applies to you: - * - * - If you're using this work with Open Source databases, you may choose - * either ASL or jOOQ License. - * - If you're using this work with at least one commercial database, you must - * choose jOOQ License - * - * For more information, please visit http://www.jooq.org/licenses - * - * Apache Software License 2.0: - * ----------------------------------------------------------------------------- - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * jOOQ License and Maintenance Agreement: - * ----------------------------------------------------------------------------- - * Data Geekery grants the Customer the non-exclusive, timely limited and - * non-transferable license to install and use the Software under the terms of - * the jOOQ License and Maintenance Agreement. - * - * This library is distributed with a LIMITED WARRANTY. See the jOOQ License - * and Maintenance Agreement for more details: http://www.jooq.org/licensing - */ -package org.jooq.docs - -import java.lang.reflect.Method -import java.util.EnumSet -import org.jooq.Field -import org.jooq.QueryPart -import org.jooq.SQLDialect -import org.jooq.Support -import org.jooq.conf.RenderNameStyle -import org.jooq.conf.Settings -import org.jooq.impl.DSL - -import org.jooq.conf.StatementType -import java.sql.Date -import java.sql.Timestamp - -class Functions { - static Field numberB = DSL::fieldByName(typeof(Byte), "number"); - static Field number = DSL::fieldByName(typeof(Integer), "number"); - static Field start = DSL::fieldByName(typeof(Integer), "start"); - static Field length = DSL::fieldByName(typeof(Integer), "length"); - static Field string = DSL::fieldByName(typeof(String), "string"); - static Field search = DSL::fieldByName(typeof(String), "search"); - static Field replace = DSL::fieldByName(typeof(String), "replace"); - static Field date = DSL::fieldByName(typeof(Date), "date"); - static Field timestamp = DSL::fieldByName(typeof(Timestamp), "timestamp"); - static Field expression = DSL::fieldByName(typeof(String), "expression"); - static Field e1 = DSL::fieldByName(typeof(String), "expr1"); - static Field e2 = DSL::fieldByName(typeof(String), "expr2"); - static Field e3 = DSL::fieldByName(typeof(String), "expr3"); - static Field e4 = DSL::fieldByName(typeof(String), "expr4"); - - - - def static EnumSet families() { - return families(SQLDialect::values()); - } - - def static EnumSet families(SQLDialect[] dialects) { - if (dialects == null || dialects.length == 0) - return families; - - val result = EnumSet::noneOf(typeof(SQLDialect)); - - for (SQLDialect d : dialects) { - if (d != SQLDialect.SQL99) - result.add(d.family()); - } - - return result; - } - - def static void main(String[] args) { - System::out.println(''' - - «heading("Math functions")» - «expr("Arc sine function", DSL::asin(number), typeof(DSL).getMethod("asin", typeof(Field)))» - «expr("Arc cosine function", DSL::acos(number), typeof(DSL).getMethod("acos", typeof(Field)))» - «expr("Arc tangent function", DSL::atan(number), typeof(DSL).getMethod("atan", typeof(Field)))» - «expr("Arc tangent 2 function", DSL::atan2(number, number), typeof(DSL).getMethod("atan2", typeof(Field), typeof(Field)))» - «expr("Sine function", DSL::sin(number), typeof(DSL).getMethod("sin", typeof(Field)))» - «expr("Cosine function", DSL::cos(number), typeof(DSL).getMethod("cos", typeof(Field)))» - «expr("Tangent function", DSL::tan(number), typeof(DSL).getMethod("tan", typeof(Field)))» - «expr("Cotangent function", DSL::cot(number), typeof(DSL).getMethod("cot", typeof(Field)))» - «expr("Hyperbolic sine function", DSL::sinh(number), typeof(DSL).getMethod("sinh", typeof(Field)))» - «expr("Hyperbolic cosine function", DSL::cosh(number), typeof(DSL).getMethod("cosh", typeof(Field)))» - «expr("Hyperbolic tangent function", DSL::tanh(number), typeof(DSL).getMethod("tanh", typeof(Field)))» - «expr("Hyperbolic cotangent function", DSL::coth(number), typeof(DSL).getMethod("coth", typeof(Field)))» - - «expr("Absolute function", DSL::abs(number), typeof(DSL).getMethod("abs", typeof(Field)))» - «expr("Round function", DSL::round(number, 2), typeof(DSL).getMethod("round", typeof(Field), typeof(int)))» - «expr("Trunc function", DSL::trunc(number, 2), typeof(DSL).getMethod("trunc", typeof(Field), typeof(int)))» - «expr("Floor function", DSL::floor(number), typeof(DSL).getMethod("floor", typeof(Field)))» - «expr("Ceiling function", DSL::ceil(number), typeof(DSL).getMethod("ceil", typeof(Field)))» - «expr("Sign function", DSL::sign(number), typeof(DSL).getMethod("sign", typeof(Field)))» - - «expr("Exponential function", DSL::exp(number), typeof(DSL).getMethod("exp", typeof(Field)))» - «expr("Ln function", DSL::ln(number), typeof(DSL).getMethod("ln", typeof(Field)))» - «expr("Log function", DSL::log(number, 2), typeof(DSL).getMethod("log", typeof(Field), typeof(int)))» - «expr("Power function", DSL::power(number, number), typeof(DSL).getMethod("power", typeof(Field), typeof(Field)))» - «expr("Square root function", DSL::sqrt(number), typeof(DSL).getMethod("sqrt", typeof(Field)))» - - «expr("Random function", DSL::rand(), typeof(DSL).getMethod("rand"))» - «expr("Radians to degrees conversion", DSL::deg(number), typeof(DSL).getMethod("deg", typeof(Field)))» - «expr("Degrees to radians conversion", DSL::rad(number), typeof(DSL).getMethod("rad", typeof(Field)))» - «expr("Euler constant", DSL::e(), typeof(DSL).getMethod("e"))» - «expr("Pi constant", DSL::pi(), typeof(DSL).getMethod("pi"))» - - «heading("Bit functions")» - «expr("Bit count function", DSL::bitCount(numberB), typeof(DSL).getMethod("bitCount", typeof(Field)))» - «expr("Bit length function", DSL::bitLength(string), typeof(DSL).getMethod("bitLength", typeof(Field)))» - «expr("Bit AND operation", DSL::bitAnd(number, number), typeof(DSL).getMethod("bitAnd", typeof(Field), typeof(Field)))» - «expr("Bit NAND operation", DSL::bitNand(number, number), typeof(DSL).getMethod("bitNand", typeof(Field), typeof(Field)))» - «expr("Bit NOR operation", DSL::bitNor(number, number), typeof(DSL).getMethod("bitNor", typeof(Field), typeof(Field)))» - «expr("Bit NOT a value", DSL::bitNot(number), typeof(DSL).getMethod("bitNot", typeof(Field)))» - «expr("Bit OR operation", DSL::bitOr(number, number), typeof(DSL).getMethod("bitOr", typeof(Field), typeof(Field)))» - «expr("Bit XNOR operation", DSL::bitXNor(number, number), typeof(DSL).getMethod("bitXNor", typeof(Field), typeof(Field)))» - «expr("Bit XOR operation", DSL::bitXor(number, number), typeof(DSL).getMethod("bitXor", typeof(Field), typeof(Field)))» - «expr("Bitwise left shift", DSL::shl(number, number), typeof(DSL).getMethod("shl", typeof(Field), typeof(Field)))» - «expr("Bitwise right shift", DSL::shr(number, number), typeof(DSL).getMethod("shr", typeof(Field), typeof(Field)))» - - «heading("String functions")» - «expr("Char length function", DSL::charLength(string), typeof(DSL).getMethod("charLength", typeof(Field)))» - «expr("Length function", DSL::length(string), typeof(DSL).getMethod("length", typeof(Field)))» - «expr("Octet length function", DSL::octetLength(string), typeof(DSL).getMethod("octetLength", typeof(Field)))» - «expr("Ascii function", DSL::ascii(string), typeof(DSL).getMethod("ascii", typeof(Field)))» - «expr("Concat function", DSL::concat(string, string), typeof(DSL).getMethod("concat", typeof(Field[])))» - «expr("Lower function", DSL::lower(string), typeof(DSL).getMethod("lower", typeof(Field)))» - «expr("Upper function", DSL::upper(string), typeof(DSL).getMethod("upper", typeof(Field)))» - «expr("Lpad function", DSL::lpad(string, number, string), typeof(DSL).getMethod("lpad", typeof(Field), typeof(Field), typeof(Field)))» - «expr("Rpad function", DSL::rpad(string, number, string), typeof(DSL).getMethod("rpad", typeof(Field), typeof(Field), typeof(Field)))» - «expr("Trim function", DSL::trim(string), typeof(DSL).getMethod("trim", typeof(Field)))» - «expr("Ltrim function", DSL::ltrim(string), typeof(DSL).getMethod("ltrim", typeof(Field)))» - «expr("Rtrim function", DSL::rtrim(string), typeof(DSL).getMethod("rtrim", typeof(Field)))» - «expr("Position function", DSL::position(string, search), typeof(DSL).getMethod("position", typeof(Field), typeof(Field)))» - «expr("Repeat function", DSL::repeat(string, number), typeof(DSL).getMethod("repeat", typeof(Field), typeof(Field)))» - «expr("Replace function", DSL::replace(string, search, replace), typeof(DSL).getMethod("replace", typeof(Field), typeof(Field), typeof(Field)))» - «expr("Substring function", DSL::substring(string, start, length), typeof(DSL).getMethod("substring", typeof(Field), typeof(Field), typeof(Field)))» - - «heading("Date and time functions")» - «expr("Date add function", DSL::dateAdd(date, number), typeof(DSL).getMethod("dateAdd", typeof(Field), typeof(Field)))» - «expr("Date diff function", DSL::dateDiff(date, date), typeof(DSL).getMethod("dateDiff", typeof(Field), typeof(Field)))» - «expr("Timestamp add function", DSL::timestampAdd(timestamp, number), typeof(DSL).getMethod("timestampAdd", typeof(Field), typeof(Field)))» - «expr("Timestamp diff function", DSL::timestampDiff(timestamp, timestamp), typeof(DSL).getMethod("timestampDiff", typeof(Field), typeof(Field)))» - «expr("Extract the year from a date", DSL::year(date), typeof(DSL).getMethod("year", typeof(Field)))» - «expr("Extract the month from a date", DSL::month(date), typeof(DSL).getMethod("month", typeof(Field)))» - «expr("Extract the day from a date", DSL::day(date), typeof(DSL).getMethod("day", typeof(Field)))» - «expr("Extract the hour from a date", DSL::hour(date), typeof(DSL).getMethod("hour", typeof(Field)))» - «expr("Extract the minute from a date", DSL::minute(date), typeof(DSL).getMethod("minute", typeof(Field)))» - «expr("Extract the second from a date", DSL::second(date), typeof(DSL).getMethod("second", typeof(Field)))» - - «heading("Other functions")» - «expr("Coalesce function", DSL::coalesce(e1, e2), typeof(DSL).getMethod("coalesce", typeof(Field), typeof(Field[])))» - «expr("Decode function", DSL::decode(e1, e2, e3, e4), typeof(DSL).getMethod("decode", typeof(Field), typeof(Field), typeof(Field), typeof(Field[])))» - «expr("Greatest function", DSL::greatest(e1, e2, e3), typeof(DSL).getMethod("greatest", typeof(Field), typeof(Field[])))» - «expr("Least function", DSL::least(e1, e2, e3), typeof(DSL).getMethod("least", typeof(Field), typeof(Field[])))» - «expr("Null if function", DSL::nullif(e1, e2), typeof(DSL).getMethod("nullif", typeof(Field), typeof(Field)))» - «expr("Nvl function", DSL::nvl(e1, e2), typeof(DSL).getMethod("nvl", typeof(Field), typeof(Field)))» - «expr("Nvl2 function", DSL::nvl2(e1, e2, e3), typeof(DSL).getMethod("nvl2", typeof(Field), typeof(Field), typeof(Field)))» -
- '''); - } - - def static heading(String description) { - return ''' - - -

«description»

- - - - Function description - «FOR d : families» - «d.name» - «ENDFOR» - - ''' - } - - def static expr(String description, QueryPart p, Method method) { - val support = method.getAnnotation(typeof(Support)); - return ''' - - «description» - «FOR d : families» - «IF families(support.value).contains(d)»
«DSL::using(d, new Settings()
-                    .withRenderSchema(false)
-                    .withRenderNameStyle(RenderNameStyle.AS_IS)
-                    .withStatementType(StatementType.STATIC_STATEMENT)
-                ).render(p)»
«ELSE» Â«ENDIF» - «ENDFOR» - - ''' - } -} - diff --git a/jOOQ-tools/src/org/jooq/oss/Splitter.xtend b/jOOQ-tools/src/org/jooq/oss/Splitter.xtend deleted file mode 100644 index 3fb904bfeb..0000000000 --- a/jOOQ-tools/src/org/jooq/oss/Splitter.xtend +++ /dev/null @@ -1,251 +0,0 @@ -/** - * Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com) - * All rights reserved. - * - * This work is dual-licensed - * - under the Apache Software License 2.0 (the "ASL") - * - under the jOOQ License and Maintenance Agreement (the "jOOQ License") - * ============================================================================= - * You may choose which license applies to you: - * - * - If you're using this work with Open Source databases, you may choose - * either ASL or jOOQ License. - * - If you're using this work with at least one commercial database, you must - * choose jOOQ License - * - * For more information, please visit http://www.jooq.org/licenses - * - * Apache Software License 2.0: - * ----------------------------------------------------------------------------- - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * jOOQ License and Maintenance Agreement: - * ----------------------------------------------------------------------------- - * Data Geekery grants the Customer the non-exclusive, timely limited and - * non-transferable license to install and use the Software under the terms of - * the jOOQ License and Maintenance Agreement. - * - * This library is distributed with a LIMITED WARRANTY. See the jOOQ License - * and Maintenance Agreement for more details: http://www.jooq.org/licensing - */ -package org.jooq.oss - -import static java.util.regex.Pattern.*; - -import java.io.File -import java.util.ArrayList -import java.util.regex.Pattern -import org.apache.commons.lang3.tuple.ImmutablePair -import org.jooq.SQLDialect -import org.jooq.xtend.Generators -import java.util.concurrent.ExecutorService -import java.util.concurrent.Executors - -class RemoveProCode { - def static void main(String[] args) { - Splitter::split("pro", "/../workspace-jooq-oss"); - } -} - -class RemoveTrialCode { - def static void main(String[] args) { - Splitter::split("trial", "/../workspace-jooq-pro"); - } -} - -class Splitter extends Generators { - - static ExecutorService ex; - String token; - - def static void split(String token, String workspace) { - ex = Executors::newFixedThreadPool(4); - - val splitter = new Splitter(token); - - val workspaceIn = new File("../..").canonicalFile; - val workspaceOut = new File(workspaceIn.canonicalPath + workspace).canonicalFile; - - for (project : workspaceIn.listFiles[f | f.name.startsWith("jOOQ")]) { - val in = new File(workspaceIn, project.name); - val out = new File(workspaceOut, project.name); - splitter.transform(in, out, in); - } - - ex.shutdown; - } - - def transform(File inRoot, File outRoot, File in) { - val out = new File(outRoot.canonicalPath + "/" + in.canonicalPath.replace(inRoot.canonicalPath, "")); - - if (in.directory) { - val files = in.listFiles[path | - !path.canonicalPath.endsWith(".class") - && !path.canonicalPath.endsWith(".dat") - && !path.canonicalPath.endsWith(".git") - && !path.canonicalPath.endsWith(".jar") - && !path.canonicalPath.endsWith(".pdf") - && !path.canonicalPath.endsWith(".zip") - && !path.canonicalPath.endsWith("._trace") - && !path.canonicalPath.endsWith("jOOQ-tools") - && !path.canonicalPath.endsWith("jOOQ-website") - && !path.canonicalPath.endsWith("jOOQ-websites") - && !path.canonicalPath.endsWith("jOOQ-webservices") - && !path.canonicalPath.contains("\\access") - && !path.canonicalPath.contains("\\ase") - && !path.canonicalPath.contains("\\db2") - && !path.canonicalPath.contains("\\ingres") - && !path.canonicalPath.contains("\\oracle") - && !path.canonicalPath.contains("\\sqlserver") - && !path.canonicalPath.contains("\\sybase") - && !path.canonicalPath.contains("\\target") - && !path.canonicalPath.contains("\\bin") - ]; - - for (file : files) { - transform(inRoot, outRoot, file); - } - } - else if (token == "pro" && in.name.equals("LICENSE.txt")) { - ex.submit[ | - write(out, ''' -Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com) -All rights reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - -Other licenses: ------------------------------------------------------------------------------ -Commercial licenses for this work are available. These replace the above -ASL 2.0 and offer limited warranties, support, maintenance, and commercial -database integrations. - -For more information, please visit: http://www.jooq.org/licenses'''); - ]; - } - else { - ex.submit[ | - var content = read(in); - - for (pattern : translateAll) { - val m = pattern.matcher(content); - - while (m.find) { - content = content.substring(0, m.start) - + m.group(1) - + m.group(2).replaceAll("\\S", "x") - + m.group(3) - + content.substring(m.end); - } - } - for (pair : replaceFirst) { - content = pair.left.matcher(content).replaceAll(pair.right); - } - for (pair : replaceAll) { - content = pair.left.matcher(content).replaceAll(pair.right); - } - - write(out, content); - ]; - } - } - - val translateAll = new ArrayList(); - val replaceAll = new ArrayList>(); - val replaceFirst = new ArrayList>(); - - new(String token) { - this.token = token; - - if (token == "pro") { - - // Replace a couple of imports - replaceFirst.add(new ImmutablePair(compile('''import org\.jooq\.(ArrayConstant|ArrayRecord|impl\.ArrayRecordImpl|impl\.FlashbackTable.*?);'''), "// ...")); - replaceFirst.add(new ImmutablePair(compile('''import static org\.jooq\.impl\.DSL\.(cube|grouping|groupingId|groupingSets);'''), "// ...")); - - // Replace the Java / Scala / Xtend license header - replaceFirst.add(new ImmutablePair(compile('''(?s:/\*\*[\r\n] \* Copyright.*?eula[\r\n] \*/)'''), ''' -/** - * Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com) - * All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * Other licenses: - * ----------------------------------------------------------------------------- - * Commercial licenses for this work are available. These replace the above - * ASL 2.0 and offer limited warranties, support, maintenance, and commercial - * database integrations. - * - * For more information, please visit: http://www.jooq.org/licenses - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - */''')); - - for (d : SQLDialect::values.filter[d | d.commercial]) { - - // Remove commercial dialects from @Support annotations - replaceAll.add(new ImmutablePair(compile('''(?s:(\@Support\([^\)]*?),\s*\b«d.name»\b([^\)]*?\)))'''), "$1$2")); - replaceAll.add(new ImmutablePair(compile('''(?s:(\@Support\([^\)]*?)\b«d.name»\b,\s*([^\)]*?\)))'''), "$1$2")); - replaceAll.add(new ImmutablePair(compile('''(?s:(\@Support\([^\)]*?)\s*\b«d.name»\b\s*([^\)]*?\)))'''), "$1$2")); - - // Remove commercial dialects from Arrays.asList() expressions - replaceAll.add(new ImmutablePair(compile('''(asList\([^\)]*?),\s*\b«d.name»\b([^\)]*?\))'''), "$1$2")); - replaceAll.add(new ImmutablePair(compile('''(asList\([^\)]*?)\b«d.name»\b,\s*([^\)]*?\))'''), "$1$2")); - replaceAll.add(new ImmutablePair(compile('''(asList\([^\)]*?)\s*\b«d.name»\b\s*([^\)]*?\))'''), "$1$2")); - - // Remove commercial dialects from imports - replaceAll.add(new ImmutablePair(compile('''import (static )?org\.jooq\.SQLDialect\.«d.name»;'''), "// ...")); - replaceAll.add(new ImmutablePair(compile('''import (static )?org\.jooq\.util\.«d.name.toLowerCase»\..*?;'''), "// ...")); - } - } - - // Remove sections of delimited code - translateAll.add(compile('''(?s:(/\* \[«token»\])( \*.*?/\* )(\[/«token»\] \*/))''')); - translateAll.add(compile('''(?s:(.*?))''')); - } -} diff --git a/jOOQ-tools/src/org/jooq/xtend/BetweenAndSteps.xtend b/jOOQ-tools/src/org/jooq/xtend/BetweenAndSteps.xtend deleted file mode 100644 index 6715362b03..0000000000 --- a/jOOQ-tools/src/org/jooq/xtend/BetweenAndSteps.xtend +++ /dev/null @@ -1,343 +0,0 @@ -/** - * Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com) - * All rights reserved. - * - * This work is dual-licensed - * - under the Apache Software License 2.0 (the "ASL") - * - under the jOOQ License and Maintenance Agreement (the "jOOQ License") - * ============================================================================= - * You may choose which license applies to you: - * - * - If you're using this work with Open Source databases, you may choose - * either ASL or jOOQ License. - * - If you're using this work with at least one commercial database, you must - * choose jOOQ License - * - * For more information, please visit http://www.jooq.org/licenses - * - * Apache Software License 2.0: - * ----------------------------------------------------------------------------- - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * jOOQ License and Maintenance Agreement: - * ----------------------------------------------------------------------------- - * Data Geekery grants the Customer the non-exclusive, timely limited and - * non-transferable license to install and use the Software under the terms of - * the jOOQ License and Maintenance Agreement. - * - * This library is distributed with a LIMITED WARRANTY. See the jOOQ License - * and Maintenance Agreement for more details: http://www.jooq.org/licensing - */ -package org.jooq.xtend - -import org.jooq.Constants - -/** - * @author Lukas Eder - */ -class BetweenAndSteps extends Generators { - - def static void main(String[] args) { - val steps = new BetweenAndSteps(); - steps.generateBetweenAndSteps(); - steps.generateBetweenAndStepsImpl(); - } - - def generateBetweenAndSteps() { - for (degree : (1..Constants::MAX_ROW_DEGREE)) { - val out = new StringBuilder(); - - out.append(''' - «classHeader» - package org.jooq; - - import javax.annotation.Generated; - - /** - * An intermediate DSL type for the construction of a BETWEEN - * predicate. - * - * @author Lukas Eder - */ - «generatedAnnotation» - public interface BetweenAndStep«degree»<«TN(degree)»> { - - /** - * Create a condition to check this field against some bounds - */ - @Support - Condition and(«Field_TN_XXXn(degree, "maxValue")»); - - /** - * Create a condition to check this field against some bounds - */ - @Support - Condition and(«TN_XXXn(degree, "maxValue")»); - - /** - * Create a condition to check this field against some bounds - */ - @Support - Condition and(Row«degree»<«TN(degree)»> maxValue); - - /** - * Create a condition to check this field against some bounds - */ - @Support - Condition and(Record«degree»<«TN(degree)»> maxValue); - - } - '''); - - write("org.jooq.BetweenAndStep" + degree, out); - } - } - - def generateBetweenAndStepsImpl() { - val out = new StringBuilder(); - - out.append(''' - «classHeader» - package org.jooq.impl; - - import static java.util.Arrays.asList; - import static org.jooq.Clause.CONDITION; - import static org.jooq.Clause.CONDITION_BETWEEN; - import static org.jooq.Clause.CONDITION_BETWEEN_SYMMETRIC; - import static org.jooq.Clause.CONDITION_NOT_BETWEEN; - import static org.jooq.Clause.CONDITION_NOT_BETWEEN_SYMMETRIC; - import static org.jooq.SQLDialect.ASE; - import static org.jooq.SQLDialect.CUBRID; - import static org.jooq.SQLDialect.DB2; - import static org.jooq.SQLDialect.DERBY; - import static org.jooq.SQLDialect.FIREBIRD; - import static org.jooq.SQLDialect.H2; - import static org.jooq.SQLDialect.MARIADB; - import static org.jooq.SQLDialect.MYSQL; - import static org.jooq.SQLDialect.ORACLE; - import static org.jooq.SQLDialect.SQLITE; - import static org.jooq.SQLDialect.SQLSERVER; - import static org.jooq.SQLDialect.SYBASE; - import static org.jooq.impl.DSL.row; - - import javax.annotation.Generated; - - «FOR degree : (1..Constants::MAX_ROW_DEGREE)» - import org.jooq.BetweenAndStep«degree»; - «ENDFOR» - import org.jooq.BetweenAndStepN; - import org.jooq.BindContext; - import org.jooq.Clause; - import org.jooq.Condition; - import org.jooq.Configuration; - import org.jooq.Context; - import org.jooq.Field; - import org.jooq.QueryPartInternal; - import org.jooq.Record; - «FOR degree : (1..Constants::MAX_ROW_DEGREE)» - import org.jooq.Record«degree»; - «ENDFOR» - import org.jooq.RenderContext; - import org.jooq.Row; - «FOR degree : (1..Constants::MAX_ROW_DEGREE)» - import org.jooq.Row«degree»; - «ENDFOR» - import org.jooq.RowN; - - /** - * @author Lukas Eder - */ - «generatedAnnotation» - @SuppressWarnings({ "rawtypes", "unchecked" }) - class RowBetweenCondition<«TN(Constants::MAX_ROW_DEGREE)»> extends AbstractCondition - implements - - // This BetweenAndStep implementation implements all types. Type-safety is - // being checked through the type-safe API. No need for further checks here - «FOR degree : (1..Constants::MAX_ROW_DEGREE)» - BetweenAndStep«degree»<«TN(degree)»>, - «ENDFOR» - BetweenAndStepN { - - private static final long serialVersionUID = -4666251100802237878L; - private static final Clause[] CLAUSES_BETWEEN = { CONDITION, CONDITION_BETWEEN }; - private static final Clause[] CLAUSES_BETWEEN_SYMMETRIC = { CONDITION, CONDITION_BETWEEN_SYMMETRIC }; - private static final Clause[] CLAUSES_NOT_BETWEEN = { CONDITION, CONDITION_NOT_BETWEEN }; - private static final Clause[] CLAUSES_NOT_BETWEEN_SYMMETRIC = { CONDITION, CONDITION_NOT_BETWEEN_SYMMETRIC }; - - private final boolean symmetric; - private final boolean not; - private final Row row; - private final Row minValue; - private Row maxValue; - - RowBetweenCondition(Row row, Row minValue, boolean not, boolean symmetric) { - this.row = row; - this.minValue = minValue; - this.not = not; - this.symmetric = symmetric; - } - - // ------------------------------------------------------------------------ - // XXX: BetweenAndStep API - // ------------------------------------------------------------------------ - - @Override - public final Condition and(Field f) { - if (maxValue == null) { - return and(row(f)); - } - else { - return super.and(f); - } - } - «FOR degree : (2..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition and(«Field_TN_tn(degree)») { - return and(row(«tn(degree)»)); - } - «ENDFOR» - - @Override - public final Condition and(Field... fields) { - return and(row(fields)); - } - «FOR degree : (1..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition and(«TN_tn(degree)») { - return and(row(«tn(degree)»)); - } - «ENDFOR» - - @Override - public final Condition and(Object... values) { - return and(row(values)); - } - «FOR degree : (1..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition and(Row«degree»<«TN(degree)»> r) { - this.maxValue = r; - return this; - } - «ENDFOR» - - @Override - public final Condition and(RowN r) { - this.maxValue = r; - return this; - } - «FOR degree : (1..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition and(Record«degree»<«TN(degree)»> record) { - return and(record.valuesRow()); - } - «ENDFOR» - - @Override - public final Condition and(Record record) { - RowN r = new RowImpl(Utils.fields(record.intoArray(), record.fields())); - return and(r); - } - - // ------------------------------------------------------------------------ - // XXX: QueryPart API - // ------------------------------------------------------------------------ - - @Override - public final void bind(BindContext context) { - delegate(context.configuration()).bind(context); - } - - @Override - public final void toSQL(RenderContext context) { - delegate(context.configuration()).toSQL(context); - } - - @Override - public final Clause[] clauses(Context ctx) { - return delegate(ctx.configuration()).clauses(ctx); - } - - private final QueryPartInternal delegate(Configuration configuration) { - // These casts are safe for RowImpl - RowN r = (RowN) row; - RowN min = (RowN) minValue; - RowN max = (RowN) maxValue; - - // These dialects don't support the SYMMETRIC keyword at all - if (symmetric && asList(ASE, CUBRID, DB2, DERBY, FIREBIRD, H2, MARIADB, MYSQL, ORACLE, SQLITE, SQLSERVER, SYBASE).contains(configuration.dialect().family())) { - if (not) { - return (QueryPartInternal) r.notBetween(min, max).and(r.notBetween(max, min)); - } - else { - return (QueryPartInternal) r.between(min, max).or(r.between(max, min)); - } - } - - // These dialects either don't support row value expressions, or they - // Can't handle row value expressions with the BETWEEN predicate - else if (row.size() > 1 && asList(CUBRID, DERBY, FIREBIRD, MARIADB, MYSQL, ORACLE, SQLITE, SQLSERVER, SYBASE).contains(configuration.dialect().family())) { - Condition result = r.ge(min).and(r.le(max)); - - if (not) { - result = result.not(); - } - - return (QueryPartInternal) result; - } - else { - return new Native(); - } - } - - private class Native extends AbstractQueryPart { - - /** - * Generated UID - */ - private static final long serialVersionUID = 2915703568738921575L; - - @Override - public final void toSQL(RenderContext context) { - context.visit(row); - if (not) context.sql(" ").keyword("not"); - context.sql(" ").keyword("between"); - if (symmetric) context.sql(" ").keyword("symmetric"); - context.sql(" ").visit(minValue); - context.sql(" ").keyword("and"); - context.sql(" ").visit(maxValue); - } - - @Override - public final void bind(BindContext context) { - context.visit(row).visit(minValue).visit(maxValue); - } - - @Override - public final Clause[] clauses(Context ctx) { - return not ? symmetric ? CLAUSES_NOT_BETWEEN_SYMMETRIC - : CLAUSES_NOT_BETWEEN - : symmetric ? CLAUSES_BETWEEN_SYMMETRIC - : CLAUSES_BETWEEN; - } - } - } - '''); - - write("org.jooq.impl.RowBetweenCondition", out); - } -} \ No newline at end of file diff --git a/jOOQ-tools/src/org/jooq/xtend/Conversions.xtend b/jOOQ-tools/src/org/jooq/xtend/Conversions.xtend deleted file mode 100644 index 83f774e298..0000000000 --- a/jOOQ-tools/src/org/jooq/xtend/Conversions.xtend +++ /dev/null @@ -1,129 +0,0 @@ -/** - * Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com) - * All rights reserved. - * - * This work is dual-licensed - * - under the Apache Software License 2.0 (the "ASL") - * - under the jOOQ License and Maintenance Agreement (the "jOOQ License") - * ============================================================================= - * You may choose which license applies to you: - * - * - If you're using this work with Open Source databases, you may choose - * either ASL or jOOQ License. - * - If you're using this work with at least one commercial database, you must - * choose jOOQ License - * - * For more information, please visit http://www.jooq.org/licenses - * - * Apache Software License 2.0: - * ----------------------------------------------------------------------------- - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * jOOQ License and Maintenance Agreement: - * ----------------------------------------------------------------------------- - * Data Geekery grants the Customer the non-exclusive, timely limited and - * non-transferable license to install and use the Software under the terms of - * the jOOQ License and Maintenance Agreement. - * - * This library is distributed with a LIMITED WARRANTY. See the jOOQ License - * and Maintenance Agreement for more details: http://www.jooq.org/licensing - */ -package org.jooq.xtend - -import org.jooq.Constants - -/** - * @author Lukas Eder - */ -class Conversions extends Generators { - - def static void main(String[] args) { - val conversions = new Conversions(); - conversions.generateAsTuple(); - conversions.generateAsMapper(); - // conversions.generateAsHandler(); - } - - def generateAsTuple() { - val out = new StringBuilder(); - - out.append(''' - «FOR degree : (1..Constants::MAX_ROW_DEGREE)» - - /** - * Enrich any {@link org.jooq.Record«degree»} with the {@link Tuple«degree»} case class - */ - implicit def asTuple«degree»[«TN(degree)»](r : Record«degree»[«TN(degree)»]): Tuple«degree»[«TN(degree)»] = r match { - case null => null - case _ => Tuple«degree»(«FOR d : (1..degree) SEPARATOR ', '»r.value«d»«ENDFOR») - } - «ENDFOR» - '''); - - insert("org.jooq.scala.Conversions", out, "tuples"); - } - - def generateAsMapper() { - val out = new StringBuilder(); - - out.append(''' - «FOR degree : (1..Constants::MAX_ROW_DEGREE)» - - /** - * Wrap a Scala Tuple«degree» => E function in a jOOQ RecordMapper type. - */ - implicit def asMapperFromArgList«degree»[«TN(degree)», E](f: («TN(degree)») => E): RecordMapper[Record«degree»[«TN(degree)»], E] = new RecordMapper[Record«degree»[«TN(degree)»], E] { - def map(record: Record«degree»[«TN(degree)»]) = f(«XXXn(degree, "record.value")») - } - «ENDFOR» - «FOR degree : (1..Constants::MAX_ROW_DEGREE)» - - /** - * Wrap a Scala Tuple«degree» => E function in a jOOQ RecordMapper type. - */ - implicit def asMapperFromTuple«degree»[«TN(degree)», E](f: Tuple«degree»[«TN(degree)»] => E): RecordMapper[Record«degree»[«TN(degree)»], E] = new RecordMapper[Record«degree»[«TN(degree)»], E] { - def map(record: Record«degree»[«TN(degree)»]) = f(Tuple«degree»(«XXXn(degree, "record.value")»)) - } - «ENDFOR» - '''); - - insert("org.jooq.scala.Conversions", out, "mapper"); - } - - def generateAsHandler() { - val out = new StringBuilder(); - - out.append(''' - «FOR degree : (1..Constants::MAX_ROW_DEGREE)» - - /** - * Wrap a Scala Tuple«degree» => Unit function in a jOOQ RecordHandler type. - */ - implicit def asHandlerFromArgList«degree»[«TN(degree)»](f: («TN(degree)») => Unit): RecordHandler[Record«degree»[«TN(degree)»]] = new RecordHandler[Record«degree»[«TN(degree)»]] { - def next(record: Record«degree»[«TN(degree)»]) = f(«XXXn(degree, "record.value")») - } - «ENDFOR» - «FOR degree : (1..Constants::MAX_ROW_DEGREE)» - - /** - * Wrap a Scala Tuple«degree» => Unit function in a jOOQ RecordHandler type. - */ - implicit def asHandlerFromTuple«degree»[«TN(degree)», E](f: Tuple«degree»[«TN(degree)»] => E): RecordHandler[Record«degree»[«TN(degree)»]] = new RecordHandler[Record«degree»[«TN(degree)»]] { - def next(record: Record«degree»[«TN(degree)»]) = f(Tuple«degree»(«XXXn(degree, "record.value")»)) - } - «ENDFOR» - '''); - - insert("org.jooq.scala.Conversions", out, "handler"); - } -} \ No newline at end of file diff --git a/jOOQ-tools/src/org/jooq/xtend/DSL.xtend b/jOOQ-tools/src/org/jooq/xtend/DSL.xtend deleted file mode 100644 index 979879352f..0000000000 --- a/jOOQ-tools/src/org/jooq/xtend/DSL.xtend +++ /dev/null @@ -1,156 +0,0 @@ -/** - * Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com) - * All rights reserved. - * - * This work is dual-licensed - * - under the Apache Software License 2.0 (the "ASL") - * - under the jOOQ License and Maintenance Agreement (the "jOOQ License") - * ============================================================================= - * You may choose which license applies to you: - * - * - If you're using this work with Open Source databases, you may choose - * either ASL or jOOQ License. - * - If you're using this work with at least one commercial database, you must - * choose jOOQ License - * - * For more information, please visit http://www.jooq.org/licenses - * - * Apache Software License 2.0: - * ----------------------------------------------------------------------------- - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * jOOQ License and Maintenance Agreement: - * ----------------------------------------------------------------------------- - * Data Geekery grants the Customer the non-exclusive, timely limited and - * non-transferable license to install and use the Software under the terms of - * the jOOQ License and Maintenance Agreement. - * - * This library is distributed with a LIMITED WARRANTY. See the jOOQ License - * and Maintenance Agreement for more details: http://www.jooq.org/licensing - */ -package org.jooq.xtend - -import org.jooq.Constants - -class DSL extends Generators { - - def static void main(String[] args) { - val dsl = new DSL(); - dsl.generateRowValue(); - dsl.generateRowField(); - dsl.generateValues(); - } - - def generateRowValue() { - val out = new StringBuilder(); - - for (degree : (1..Constants::MAX_ROW_DEGREE)) { - out.append(''' - - /** - * Create a row value expression of degree «degree». - *

- * Note: Not all databases support row value expressions, but many row value - * expression operations can be simulated on all databases. See relevant row - * value expression method Javadocs for details. - */ - «generatedMethod» - @Support - @Transition( - name = "ROW", - args = "Field+" - ) - public static <«TN(degree)»> Row«degree»<«TN(degree)»> row(«TN_tn(degree)») { - return row(«Utils_field_tn(degree)»); - } - '''); - } - - insert("org.jooq.impl.DSL", out, "row-value"); - } - - def generateRowField() { - val out = new StringBuilder(); - - for (degree : (1..Constants::MAX_ROW_DEGREE)) { - out.append(''' - - /** - * Create a row value expression of degree «degree». - *

- * Note: Not all databases support row value expressions, but many row value - * expression operations can be simulated on all databases. See relevant row - * value expression method Javadocs for details. - */ - «generatedMethod» - @Support - @Transition( - name = "ROW", - args = "Field+" - ) - public static <«TN(degree)»> Row«degree»<«TN(degree)»> row(«Field_TN_tn(degree)») { - return new RowImpl(«tn(degree)»); - } - '''); - } - - insert("org.jooq.impl.DSL", out, "row-field"); - } - - def generateValues() { - val out = new StringBuilder(); - - for (degree : (1..Constants::MAX_ROW_DEGREE)) { - out.append(''' - - /** - * Create a VALUES() expression of degree «degree». - *

- * The VALUES() constructor is a tool supported by some - * databases to allow for constructing tables from constant values. - *

- * If a database doesn't support the VALUES() constructor, it - * can be simulated using SELECT .. UNION ALL ... The following - * expressions are equivalent: - *

- *


-                 * -- Using VALUES() constructor
-                 * VALUES(«FOR d : (1..degree) SEPARATOR ', '»val1_«d»«ENDFOR»),
-                 *       («FOR d : (1..degree) SEPARATOR ', '»val2_«d»«ENDFOR»),
-                 *       («FOR d : (1..degree) SEPARATOR ', '»val3_«d»«ENDFOR»)
-                 * AS "v"(«FOR d : (1..degree) SEPARATOR ', '»"c«d»"  «ENDFOR»)
-                 *
-                 * -- Using UNION ALL
-                 * SELECT «FOR d : (1..degree) SEPARATOR ', '»val1_«d» AS "c«d»"«ENDFOR») UNION ALL
-                 * SELECT «FOR d : (1..degree) SEPARATOR ', '»val1_«d» AS "c«d»"«ENDFOR») UNION ALL
-                 * SELECT «FOR d : (1..degree) SEPARATOR ', '»val1_«d» AS "c«d»"«ENDFOR»)
-                 * 
- *

- * Use {@link Table#as(String, String...)} to rename the resulting table and - * its columns. - */ - «generatedMethod» - @Support - @Transition( - name = "VALUES", - args = "Row+" - ) - public static <«TN(degree)»> Table> values(Row«degree»<«TN(degree)»>... rows) { - return new Values>(rows).as("v", «FOR d : (1..degree) SEPARATOR ', '»"c«d»"«ENDFOR»); - } - '''); - } - - insert("org.jooq.impl.DSL", out, "values"); - } -} \ No newline at end of file diff --git a/jOOQ-tools/src/org/jooq/xtend/DSLContext.xtend b/jOOQ-tools/src/org/jooq/xtend/DSLContext.xtend deleted file mode 100644 index 19c7fdc312..0000000000 --- a/jOOQ-tools/src/org/jooq/xtend/DSLContext.xtend +++ /dev/null @@ -1,473 +0,0 @@ -/** - * Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com) - * All rights reserved. - * - * This work is dual-licensed - * - under the Apache Software License 2.0 (the "ASL") - * - under the jOOQ License and Maintenance Agreement (the "jOOQ License") - * ============================================================================= - * You may choose which license applies to you: - * - * - If you're using this work with Open Source databases, you may choose - * either ASL or jOOQ License. - * - If you're using this work with at least one commercial database, you must - * choose jOOQ License - * - * For more information, please visit http://www.jooq.org/licenses - * - * Apache Software License 2.0: - * ----------------------------------------------------------------------------- - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * jOOQ License and Maintenance Agreement: - * ----------------------------------------------------------------------------- - * Data Geekery grants the Customer the non-exclusive, timely limited and - * non-transferable license to install and use the Software under the terms of - * the jOOQ License and Maintenance Agreement. - * - * This library is distributed with a LIMITED WARRANTY. See the jOOQ License - * and Maintenance Agreement for more details: http://www.jooq.org/licensing - */ -package org.jooq.xtend - - -/** - * @author Lukas Eder - */ -import org.jooq.Constants - -class DSLContext extends Generators { - - def static void main(String[] args) { - val ctx = new DSLContext(); - ctx.generateNewRecord(); - ctx.generateSelect(); - ctx.generateSelectDistinct(); - ctx.generateInsert(); - ctx.generateMerge(); - } - - def generateNewRecord() { - val outImpl = new StringBuilder(); - val outAPI = new StringBuilder(); - - for (degree : (1..Constants::MAX_ROW_DEGREE)) { - var fieldOrRow = "Row" + degree; - - if (degree == 1) { - fieldOrRow = "Field"; - } - - outAPI.append(''' - - /** - * Create a new empty {@link Record}. - *

- * The resulting record is attached to this {@link Configuration} by - * default. Use {@link Settings#isAttachRecords()} to override this - * behaviour. - * - * @return The new record - */ - «generatedMethod» - <«TN(degree)»> Record«recTypeSuffix(degree)» newRecord(«Field_TN_fieldn(degree)»); - '''); - - outImpl.append(''' - - «generatedMethod» - @Override - public <«TN(degree)»> Record«recTypeSuffix(degree)» newRecord(«Field_TN_fieldn(degree)») { - return (Record«recTypeSuffixRaw(degree)») newRecord(new Field[] { «fieldn(degree)» }); - } - '''); - } - - insert("org.jooq.DSLContext", outAPI, "newRecord"); - insert("org.jooq.impl.DefaultDSLContext", outImpl, "newRecord"); - } - - def generateSelect() { - val outDSL = new StringBuilder(); - val outImpl = new StringBuilder(); - val outAPI = new StringBuilder(); - - for (degree : (1..Constants::MAX_ROW_DEGREE)) { - var fieldOrRow = "Row" + degree; - - if (degree == 1) { - fieldOrRow = "Field"; - } - - outAPI.append(''' - - /** - * Create a new DSL select statement. - *

- * This is the same as {@link #select(Field...)}, except that it - * declares additional record-level typesafety, which is needed by - * {@link «fieldOrRow»#in(Select)}, {@link «fieldOrRow»#equal(Select)} and other predicate - * building methods taking subselect arguments. - *

- * This creates an attached, renderable and executable SELECT - * statement from this {@link DSLContext}. If you don't need to render or - * execute this SELECT statement (e.g. because you want to - * create a subselect), consider using the static - * {@link DSL#select(«FOR d : (1..degree) SEPARATOR ', '»Field«ENDFOR»)} instead. - *

- * Example:

-                 * using(configuration)
-                 *       .select(«field1_field2_fieldn(degree)»)
-                 *       .from(table1)
-                 *       .join(table2).on(field1.equal(field2))
-                 *       .where(field1.greaterThan(100))
-                 *       .orderBy(field2);
-                 * 
- * - * @see DSL#selectDistinct(Field...) - * @see #selectDistinct(Field...) - */ - «generatedMethod» - @Support - @Transition( - name = "SELECT", - args = "Field+" - ) - <«TN(degree)»> SelectSelectStep> select(«Field_TN_fieldn(degree)»); - '''); - - outDSL.append(''' - - /** - * Create a new DSL subselect statement. - *

- * This is the same as {@link #select(Field...)}, except that it declares - * additional record-level typesafety, which is needed by - * {@link «fieldOrRow»#in(Select)}, {@link «fieldOrRow»#equal(Select)} and other predicate - * building methods taking subselect arguments. - *

- * Unlike {@link Select} factory methods in the {@link DSLContext} API, this - * creates an unattached, and thus not directly renderable or executable - * SELECT statement. You can use this statement in two ways: - *

    - *
  • As a subselect within another select
  • - *
  • As a statement, after attaching it using - * {@link Select#attach(org.jooq.Configuration)}
  • - *
- *

- * Example:

-                 * import static org.jooq.impl.DSL.*;
-                 *
-                 * // [...]
-                 *
-                 * select(«field1_field2_fieldn(degree)»)
-                 *  .from(table1)
-                 *  .join(table2).on(field1.equal(field2))
-                 *  .where(field1.greaterThan(100))
-                 *  .orderBy(field2);
-                 * 
- * - * @see DSLContext#select(Field...) - * @see #select(Field...) - */ - «generatedMethod» - @Support - @Transition( - name = "SELECT", - args = "Field+" - ) - public static <«TN(degree)»> SelectSelectStep> select(«Field_TN_fieldn(degree)») { - return (SelectSelectStep) select(new Field[] { «fieldn(degree)» }); - } - '''); - - outImpl.append(''' - - «generatedMethod» - @Override - public <«TN(degree)»> SelectSelectStep> select(«Field_TN_fieldn(degree)») { - return (SelectSelectStep) select(new Field[] { «fieldn(degree)» }); - } - '''); - } - - insert("org.jooq.DSLContext", outAPI, "select"); - insert("org.jooq.impl.DefaultDSLContext", outImpl, "select"); - insert("org.jooq.impl.DSL", outDSL, "select"); - } - - def generateSelectDistinct() { - val outDSL = new StringBuilder(); - val outImpl = new StringBuilder(); - val outAPI = new StringBuilder(); - - for (degree : (1..Constants::MAX_ROW_DEGREE)) { - var fieldOrRow = "Row" + degree; - - if (degree == 1) { - fieldOrRow = "Field"; - } - - outAPI.append(''' - - /** - * Create a new DSL select statement. - *

- * This is the same as {@link #selectDistinct(Field...)}, except that it - * declares additional record-level typesafety, which is needed by - * {@link «fieldOrRow»#in(Select)}, {@link «fieldOrRow»#equal(Select)} and other predicate - * building methods taking subselect arguments. - *

- * This creates an attached, renderable and executable SELECT - * statement from this {@link DSLContext}. If you don't need to render or - * execute this SELECT statement (e.g. because you want to - * create a subselect), consider using the static - * {@link DSL#selectDistinct(«FOR d : (1..degree) SEPARATOR ', '»Field«ENDFOR»)} instead. - *

- * Example:

-                 * using(configuration)
-                 *       .selectDistinct(«field1_field2_fieldn(degree)»)
-                 *       .from(table1)
-                 *       .join(table2).on(field1.equal(field2))
-                 *       .where(field1.greaterThan(100))
-                 *       .orderBy(field2);
-                 * 
- * - * @see DSL#selectDistinct(Field...) - * @see #selectDistinct(Field...) - */ - «generatedMethod» - @Support - @Transition( - name = "SELECT DISTINCT", - args = "Field+" - ) - <«TN(degree)»> SelectSelectStep> selectDistinct(«Field_TN_fieldn(degree)»); - '''); - - outDSL.append(''' - - /** - * Create a new DSL subselect statement. - *

- * This is the same as {@link #selectDistinct(Field...)}, except that it - * declares additional record-level typesafety, which is needed by - * {@link «fieldOrRow»#in(Select)}, {@link «fieldOrRow»#equal(Select)} and other predicate - * building methods taking subselect arguments. - *

- * Unlike {@link Select} factory methods in the {@link DSLContext} API, this - * creates an unattached, and thus not directly renderable or executable - * SELECT statement. You can use this statement in two ways: - *

    - *
  • As a subselect within another select
  • - *
  • As a statement, after attaching it using - * {@link Select#attach(org.jooq.Configuration)}
  • - *
- *

- * Example:

-                 * import static org.jooq.impl.DSL.*;
-                 *
-                 * // [...]
-                 *
-                 * selectDistinct(«field1_field2_fieldn(degree)»)
-                 *  .from(table1)
-                 *  .join(table2).on(field1.equal(field2))
-                 *  .where(field1.greaterThan(100))
-                 *  .orderBy(field2);
-                 * 
- * - * @see DSLContext#selectDistinct(Field...) - * @see #selectDistinct(Field...) - */ - «generatedMethod» - @Support - @Transition( - name = "SELECT DISTINCT", - args = "Field+" - ) - public static <«TN(degree)»> SelectSelectStep> selectDistinct(«Field_TN_fieldn(degree)») { - return (SelectSelectStep) selectDistinct(new Field[] { «fieldn(degree)» }); - } - '''); - - outImpl.append(''' - - «generatedMethod» - @Override - public <«TN(degree)»> SelectSelectStep> selectDistinct(«Field_TN_fieldn(degree)») { - return (SelectSelectStep) selectDistinct(new Field[] { «fieldn(degree)» }); - } - '''); - } - - insert("org.jooq.DSLContext", outAPI, "selectDistinct"); - insert("org.jooq.impl.DefaultDSLContext", outImpl, "selectDistinct"); - insert("org.jooq.impl.DSL", outDSL, "selectDistinct"); - } - - def generateInsert() { - val outDSL = new StringBuilder(); - val outImpl = new StringBuilder(); - val outAPI = new StringBuilder(); - - for (degree : (1..Constants::MAX_ROW_DEGREE)) { - outAPI.append(''' - - /** - * Create a new DSL insert statement. - *

- * Example:

-                 * using(configuration)
-                 *       .insertInto(table, «field1_field2_fieldn(degree)»)
-                 *       .values(«XXX1_XXX2_XXXn(degree, "valueA")»)
-                 *       .values(«XXX1_XXX2_XXXn(degree, "valueB")»)
-                 *       .onDuplicateKeyUpdate()
-                 *       .set(field1, value1)
-                 *       .set(field2, value2)
-                 *       .execute();
-                 * 
- */ - «generatedMethod» - @Support - InsertValuesStep«degree» insertInto(Table into, «Field_TN_fieldn(degree)»); - '''); - - outDSL.append(''' - - /** - * Create a new DSL insert statement. - *

- * Unlike {@link Insert} factory methods in the {@link DSLContext} API, this - * creates an unattached, and thus not directly renderable or executable - * INSERT statement. - *

- * Example:

-                 * import static org.jooq.impl.DSL.*;
-                 *
-                 * // [...]
-                 *
-                 * insertInto(table, «field1_field2_fieldn(degree)»)
-                 *   .values(«XXX1_XXX2_XXXn(degree, "valueA")»)
-                 *   .values(«XXX1_XXX2_XXXn(degree, "valueB")»)
-                 *   .onDuplicateKeyUpdate()
-                 *   .set(field1, value1)
-                 *   .set(field2, value2)
-                 * 
- * - * @see DSLContext#insertInto(Table, «(1..degree).map[e | "Field"].join(", ")») - */ - «generatedMethod» - @Support - public static InsertValuesStep«degree» insertInto(Table into, «Field_TN_fieldn(degree)») { - return (InsertValuesStep«degree») insertInto(into, new Field[] { «fieldn(degree)» }); - } - ''') - - outImpl.append(''' - - «generatedMethod» - @Override - public InsertValuesStep«degree» insertInto(Table into, «Field_TN_fieldn(degree)») { - return new InsertImpl(configuration, into, Arrays.asList(new Field[] { «fieldn(degree)» })); - } - '''); - } - - insert("org.jooq.DSLContext", outAPI, "insert"); - insert("org.jooq.impl.DefaultDSLContext", outImpl, "insert"); - insert("org.jooq.impl.DSL", outDSL, "insert"); - } - - def generateMerge() { - val outDSL = new StringBuilder(); - val outImpl = new StringBuilder(); - val outAPI = new StringBuilder(); - - for (degree : (1..Constants::MAX_ROW_DEGREE)) { - outAPI.append(''' - - /** - * Create a new DSL merge statement (H2-specific syntax). - *

- * This statement is available from DSL syntax only. It is known to be - * supported in some way by any of these dialects: - * - * - * - * - * - * - * - * - * - * - * - *
H2H2 natively supports this special syntaxwww.h2database.com/html/grammar.html#merge
DB2, HSQLDB, Oracle, SQL Server, Sybase SQL AnywhereThese databases can simulate the H2-specific MERGE statement using a - * standard SQL MERGE statement, without restrictionsSee {@link #mergeInto(Table)} for the standard MERGE statement
- */ - «generatedMethod» - @Support({ CUBRID, DB2, H2, HSQLDB, ORACLE, SQLSERVER, SYBASE }) - MergeKeyStep«degree» mergeInto(Table table, «Field_TN_fieldn(degree)»); - '''); - - outDSL.append(''' - - /** - * Create a new DSL merge statement (H2-specific syntax). - *

- * Unlike {@link Merge} factory methods in the {@link DSLContext} API, this - * creates an unattached, and thus not directly renderable or executable - * MERGE statement. - *

- * This statement is available from DSL syntax only. It is known to be - * supported in some way by any of these dialects: - * - * - * - * - * - * - * - * - * - * - * - *
H2H2 natively supports this special syntaxwww.h2database.com/html/grammar.html#merge
DB2, HSQLDB, Oracle, SQL Server, Sybase SQL AnywhereThese databases can simulate the H2-specific MERGE statement using a - * standard SQL MERGE statement, without restrictionsSee {@link #mergeInto(Table)} for the standard MERGE statement
- * - * @see DSLContext#mergeInto(Table, «(1..degree).map[e | "Field"].join(", ")») - */ - «generatedMethod» - @Support({ CUBRID, DB2, H2, HSQLDB, ORACLE, SQLSERVER, SYBASE }) - public static MergeKeyStep«degree» mergeInto(Table table, «Field_TN_fieldn(degree)») { - return using(new DefaultConfiguration()).mergeInto(table, «fieldn(degree)»); - } - '''); - - outImpl.append(''' - - «generatedMethod» - @Override - public MergeKeyStep«degree» mergeInto(Table table, «Field_TN_fieldn(degree)») { - return new MergeImpl(configuration, table, Arrays.asList(«fieldn(degree)»)); - } - '''); - } - - insert("org.jooq.DSLContext", outAPI, "merge"); - insert("org.jooq.impl.DefaultDSLContext", outImpl, "merge"); - insert("org.jooq.impl.DSL", outDSL, "merge"); - } -} \ No newline at end of file diff --git a/jOOQ-tools/src/org/jooq/xtend/GenerateAll.xtend b/jOOQ-tools/src/org/jooq/xtend/GenerateAll.xtend deleted file mode 100644 index 276e5d352b..0000000000 --- a/jOOQ-tools/src/org/jooq/xtend/GenerateAll.xtend +++ /dev/null @@ -1,58 +0,0 @@ -/** - * Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com) - * All rights reserved. - * - * This work is dual-licensed - * - under the Apache Software License 2.0 (the "ASL") - * - under the jOOQ License and Maintenance Agreement (the "jOOQ License") - * ============================================================================= - * You may choose which license applies to you: - * - * - If you're using this work with Open Source databases, you may choose - * either ASL or jOOQ License. - * - If you're using this work with at least one commercial database, you must - * choose jOOQ License - * - * For more information, please visit http://www.jooq.org/licenses - * - * Apache Software License 2.0: - * ----------------------------------------------------------------------------- - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * jOOQ License and Maintenance Agreement: - * ----------------------------------------------------------------------------- - * Data Geekery grants the Customer the non-exclusive, timely limited and - * non-transferable license to install and use the Software under the terms of - * the jOOQ License and Maintenance Agreement. - * - * This library is distributed with a LIMITED WARRANTY. See the jOOQ License - * and Maintenance Agreement for more details: http://www.jooq.org/licensing - */ -package org.jooq.xtend - -/** - * @author Lukas Eder - */ -class GenerateAll { - def static void main(String[] args) { - BetweenAndSteps::main(args); - Conversions::main(args); - DSLContext::main(args); - DSL::main(args); - InsertDSL::main(args); - MergeDSL::main(args); - Records::main(args); - Rows::main(args); - UpdateDSL::main(args); - } -} \ No newline at end of file diff --git a/jOOQ-tools/src/org/jooq/xtend/Generators.xtend b/jOOQ-tools/src/org/jooq/xtend/Generators.xtend deleted file mode 100644 index d463346119..0000000000 --- a/jOOQ-tools/src/org/jooq/xtend/Generators.xtend +++ /dev/null @@ -1,450 +0,0 @@ -/** - * Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com) - * All rights reserved. - * - * This work is dual-licensed - * - under the Apache Software License 2.0 (the "ASL") - * - under the jOOQ License and Maintenance Agreement (the "jOOQ License") - * ============================================================================= - * You may choose which license applies to you: - * - * - If you're using this work with Open Source databases, you may choose - * either ASL or jOOQ License. - * - If you're using this work with at least one commercial database, you must - * choose jOOQ License - * - * For more information, please visit http://www.jooq.org/licenses - * - * Apache Software License 2.0: - * ----------------------------------------------------------------------------- - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * jOOQ License and Maintenance Agreement: - * ----------------------------------------------------------------------------- - * Data Geekery grants the Customer the non-exclusive, timely limited and - * non-transferable license to install and use the Software under the terms of - * the jOOQ License and Maintenance Agreement. - * - * This library is distributed with a LIMITED WARRANTY. See the jOOQ License - * and Maintenance Agreement for more details: http://www.jooq.org/licensing - */ -package org.jooq.xtend - -import java.io.File -import java.io.FileWriter -import java.io.IOException -import java.io.RandomAccessFile - -/** - * @author Lukas Eder - */ -abstract class Generators { - - def file(String className) { - if (className.contains("scala")) { - return new File("./../jOOQ-scala/src/main/scala/" + className.replace(".", "/") + ".scala"); - } - else { - return new File("./../jOOQ/src/main/java/" + className.replace(".", "/") + ".java"); - } - } - - def read(String className) { - return read(file(className)) - } - - def read(File file) { - val f = new RandomAccessFile(file, "r"); - try { - val contents = Util::newByteArray(f.length); - f.readFully(contents); - return new String(contents); - } - catch (IOException e) { - e.printStackTrace(); - } - finally { - f.close; - } - } - - def insert(String className, CharSequence contents, String section) { - val result = new StringBuilder(); - val original = read(className); - val start = "// [jooq-tools] START [" + section + "]"; - val end = "// [jooq-tools] END [" + section + "]" - - result.append(original.substring(0, original.indexOf(start) + start.length + 1)) - result.append(contents); - result.append("\n"); - result.append(original.substring(original.indexOf(end))); - - write(className, result, section); - } - - def write(String className, CharSequence contents) { - write(className, contents, null); - } - - def write(String className, CharSequence contents, String section) { - val file = file(className); - write(file, contents, section); - } - - def write(File file, CharSequence contents) { - write(file, contents, null); - } - - def write(File file, CharSequence contents, String section) { - file.getParentFile().mkdirs(); - - try { - System::out.println("Writing " + file + (if (section != null) (" (section: " + section + ")") else "")); - val fw = new FileWriter(file); - fw.append(contents); - fw.flush(); - fw.close(); - } - catch (IOException e) { - e.printStackTrace(); - } - } - - def first(int degree) { - switch degree { - case 1 : "first" - case 2 : "second" - case 3 : "third" - case 4 : "fourth" - case 5 : "fifth" - case 6 : "sixth" - case 7 : "seventh" - case 8 : "eighth" - case 9 : "ninth" - case 10 : "tenth" - case 11 : "eleventh" - case 12 : "twelfth" - case 13 : "thirteenth" - case 14 : "fourteenth" - case 15 : "fifteenth" - case 16 : "sixteenth" - case 17 : "seventeenth" - case 18 : "eighteenth" - case 19 : "ninteenth" - case 20 : "twentieth" - case 21 : "twenty-first" - case 22 : "twenty-second" - case degree % 10 == 1 : degree + "st" - case degree % 10 == 2 : degree + "nd" - case degree % 10 == 3 : degree + "rd" - default : degree + "th" - } - } - - def classHeader() { - ''' - /** - * Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com) - * All rights reserved. - * - * This work is dual-licensed - * - under the Apache Software License 2.0 (the "ASL") - * - under the jOOQ License and Maintenance Agreement (the "jOOQ License") - * ============================================================================= - * You may choose which license applies to you: - * - * - If you're using this work with Open Source databases, you may choose - * either ASL or jOOQ License. - * - If you're using this work with at least one commercial database, you must - * choose jOOQ License - * - * For more information, please visit http://www.jooq.org/licenses - * - * Apache Software License 2.0: - * ----------------------------------------------------------------------------- - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * jOOQ License and Maintenance Agreement: - * ----------------------------------------------------------------------------- - * Data Geekery grants the Customer the non-exclusive, timely limited and - * non-transferable license to install and use the Software under the terms of - * the jOOQ License and Maintenance Agreement. - * - * This library is distributed with a LIMITED WARRANTY. See the jOOQ License - * and Maintenance Agreement for more details: http://www.jooq.org/licensing - */ - ''' - } - - def generatedAnnotation() { - ''' - @Generated("This class was generated using jOOQ-tools") - ''' - } - - def generatedMethod() { - ''' - @Generated("This method was generated using jOOQ-tools") - ''' - } - - /** - * A comma-separated list of types - *

- * T1, T2, .., T[N] - */ - def TN(int degree) { - return - if (degree == 0) - "Object..." - else - (1..degree).join(", ", [e | "T" + e]) - } - - /** - * A comma-separated list of identifier references - *

- * t1, t2, .., t[N] - */ - def tn(int degree) { - return - if (degree == 0) - "values" - else - (1..degree).join(", ", [e | "t" + e]) - } - - /** - * A comma-separated list of identifier declarations - *

- * T1 t1, T2 t2, .., T[N] t[N] - */ - def TN_tn(int degree) { - return - if (degree == 0) - "Object... values" - else - (1..degree).join(", ", [e | "T" + e + " t" + e]) - } - - /** - * A comma-separated list of identifier declarations - *

- * Object t1, Object t2, .., Object t[N] - */ - def Object_tn(int degree) { - return - if (degree == 0) - "Object... values" - else - (1..degree).join(", ", [e | "Object t" + e]) - } - - /** - * A comma-separated list of identifier declarations - *

- * T1 t1, T2 t2, .., T[N] t[N] - */ - def TN_XXXn(int degree, String XXX) { - return - if (degree == 0) - "Object... " + XXX + "s" - else - (1..degree).join(", ", [e | "T" + e + " " + XXX + e]) - } - - /** - * A comma-separated list of field declarations - *

- * Field<T1> t1, Field<T2> t2, .., Field<T[N]> t[N] - */ - def Field_TN_tn(int degree) { - return - if (degree == 0) - "Field... values" - else - (1..degree).join(", ", [e | "Field t" + e]) - } - - /** - * A comma-separated list of field declarations - *

- * Field t1, Field t2, .., Field t[N] - */ - def Field_tn(int degree) { - return - if (degree == 0) - "Field... values" - else - (1..degree).join(", ", [e | "Field t" + e]) - } - - /** - * A comma-separated list of field declarations - *

- * Field<T1> t1, Field<T2> t2, .., Field<T[N]> t[N] - */ - def Field_TN_XXXn(int degree, String XXX) { - return - if (degree == 0) - "Field... " + XXX + "s" - else - (1..degree).join(", ", [e | "Field " + XXX + e]) - } - - /** - * A comma-separated list of field declarations - *

- * Field<T1> field1, Field<T2> field2, .., Field<T[N]> field[N] - */ - def Field_TN_fieldn(int degree) { - return - if (degree == 0) - "Field... fields" - else - (1..degree).join(", ", [e | "Field field" + e]) - } - - /** - * A comma-separated list of field references - *

- * field1, field2, .., field[N] - */ - def fieldn(int degree) { - XXXn(degree, "field") - } - - /** - * A comma-separated list of field references - *

- * field1, field2, .., field[N] - */ - def XXXn(int degree, String XXX) { - return - if (degree == 0) - XXX + "s" - else - (1..degree).join(", ", [e | XXX + e]) - } - - /** - * A comma-separated list of field references - *

- * Unlike {@link #fieldn(int)}, this will return at most 5 fields - *

- * field1, field2, .., field[N] - */ - def field1_field2_fieldn(int degree) { - XXX1_XXX2_XXXn(degree, "field") - } - - /** - * A comma-separated list of literals - *

- * Unlike {@link #fieldn(int)}, this will return at most 5 fields - *

- * XXX1, XXX2, .., XXX[N] - */ - def XXX1_XXX2_XXXn(int degree, String XXX) { - if (degree <= 5) { - return fieldn(degree); - } - else { - return (1..3).join(", ", [e | XXX + e]) + - ", .., " + - (degree - 1..degree).join(", ", [e | XXX + e]) - } - } - - /** - * A comma-separated list of value constructor references - *

- * val(t1), val(t2), .., val(t[N]) - */ - def Utils_field_tn(int degree) { - (1..degree).join(", ", [e | "Utils.field(t" + e + ")"]) - } - - /** - * A numeric degree or "N" - */ - def degreeOrN(int degree) { - return degreeOr(degree, "N") - } - - /** - * A numeric degree or [nothing] - */ - def degreeOr(int degree) { - return degreeOr(degree, "") - } - - /** - * A numeric degree or [or] - */ - def degreeOr(int degree, String or) { - return if (degree == 0) or else degree - } - - /** - * The generic type of a class, e.g. "" or <T1, T2, T3> - */ - def type(int degree) { - type(degree, "") - } - - /** - * The generic type of a class, e.g. "" or <T1, T2, T3> - */ - def type(int degree, String spacer) { - '''«IF degree > 0»<«TN(degree)»>«spacer»«ENDIF»''' - } - - /** - * The generic type suffix of a class, e.g. N or 3<T1, T2, T3> - */ - def typeSuffix(int degree) { - '''«typeSuffixRaw(degree)»«type(degree)»''' - } - - /** - * The "raw" generic type suffix of a class, e.g. N or 3 - */ - def typeSuffixRaw(int degree) { - '''«degreeOrN(degree)»''' - } - - /** - * The generic type suffix of a record, e.g. "" or 3<T1, T2, T3> - */ - def recTypeSuffix(int degree) { - '''«recTypeSuffixRaw(degree)»«type(degree)»''' - } - - /** - * The "raw" generic type suffix of a record, e.g. "" or 3 - */ - def recTypeSuffixRaw(int degree) { - '''«degreeOr(degree)»''' - } -} \ No newline at end of file diff --git a/jOOQ-tools/src/org/jooq/xtend/InsertDSL.xtend b/jOOQ-tools/src/org/jooq/xtend/InsertDSL.xtend deleted file mode 100644 index aee6a16cf9..0000000000 --- a/jOOQ-tools/src/org/jooq/xtend/InsertDSL.xtend +++ /dev/null @@ -1,362 +0,0 @@ -/** - * Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com) - * All rights reserved. - * - * This work is dual-licensed - * - under the Apache Software License 2.0 (the "ASL") - * - under the jOOQ License and Maintenance Agreement (the "jOOQ License") - * ============================================================================= - * You may choose which license applies to you: - * - * - If you're using this work with Open Source databases, you may choose - * either ASL or jOOQ License. - * - If you're using this work with at least one commercial database, you must - * choose jOOQ License - * - * For more information, please visit http://www.jooq.org/licenses - * - * Apache Software License 2.0: - * ----------------------------------------------------------------------------- - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * jOOQ License and Maintenance Agreement: - * ----------------------------------------------------------------------------- - * Data Geekery grants the Customer the non-exclusive, timely limited and - * non-transferable license to install and use the Software under the terms of - * the jOOQ License and Maintenance Agreement. - * - * This library is distributed with a LIMITED WARRANTY. See the jOOQ License - * and Maintenance Agreement for more details: http://www.jooq.org/licensing - */ -package org.jooq.xtend - - -/** - * @author Lukas Eder - */ -import org.jooq.Constants - -class InsertDSL extends Generators { - - def static void main(String[] args) { - val insert = new InsertDSL(); - insert.generateInsertValuesStep(); - insert.generateInsertImpl(); - } - - def generateInsertValuesStep() { - for (degree : (1..Constants::MAX_ROW_DEGREE)) { - val out = new StringBuilder(); - - out.append(''' - «classHeader» - package org.jooq; - - import java.util.Collection; - - import javax.annotation.Generated; - - /** - * This type is used for the {@link Insert}'s DSL API. - *

- * Example:

-             * using(configuration)
-             *       .insertInto(table, «field1_field2_fieldn(degree)»)
-             *       .values(«XXX1_XXX2_XXXn(degree, "valueA")»)
-             *       .values(«XXX1_XXX2_XXXn(degree, "valueB")»)
-             *       .onDuplicateKeyUpdate()
-             *       .set(field1, value1)
-             *       .set(field2, value2)
-             *       .execute();
-             * 
- * - * @author Lukas Eder - */ - «generatedAnnotation» - public interface InsertValuesStep«degree» extends InsertOnDuplicateStep { - - /** - * Add values to the insert statement. - */ - @Support - InsertValuesStep«degree» values(«TN_XXXn(degree, "value")»); - - /** - * Add values to the insert statement. - */ - @Support - InsertValuesStep«degree» values(«Field_TN_XXXn(degree, "value")»); - - /** - * Add values to the insert statement. - */ - @Support - InsertValuesStep«degree» values(Collection values); - - /** - * Use a SELECT statement as the source of values for the - * INSERT statement - *

- * This variant of the INSERT .. SELECT statement expects a - * select returning exactly as many fields as specified previously in the - * INTO clause: - * {@link DSLContext#insertInto(Table, «(1..degree).join(", ", [e | 'Field'])»)} - */ - @Support - Insert select(Select> select); - } - '''); - - write("org.jooq.InsertValuesStep" + degree, out); - } - } - - def generateInsertImpl() { - val out = new StringBuilder(); - - out.append(''' - «classHeader» - package org.jooq.impl; - - import java.util.Arrays; - import java.util.Collection; - import java.util.List; - import java.util.Map; - - import org.jooq.AttachableInternal; - import org.jooq.Configuration; - import org.jooq.Field; - import org.jooq.FieldLike; - import org.jooq.Insert; - import org.jooq.InsertOnDuplicateSetMoreStep; - import org.jooq.InsertQuery; - import org.jooq.InsertResultStep; - import org.jooq.InsertSetMoreStep; - «FOR degree : (1..Constants::MAX_ROW_DEGREE)» - import org.jooq.InsertValuesStep«degree»; - «ENDFOR» - import org.jooq.InsertValuesStepN; - import org.jooq.Record; - import org.jooq.Record1; - import org.jooq.Result; - import org.jooq.Select; - import org.jooq.Table; - - /** - * @author Lukas Eder - */ - @SuppressWarnings({ "rawtypes", "unchecked" }) - class InsertImpl - extends AbstractDelegatingQuery> - implements - - // Cascading interface implementations for Insert behaviour - «FOR degree : (1..Constants::MAX_ROW_DEGREE)» - InsertValuesStep«degree», - «ENDFOR» - InsertValuesStepN, - InsertSetMoreStep, - InsertOnDuplicateSetMoreStep, - InsertResultStep { - - /** - * Generated UID - */ - private static final long serialVersionUID = 4222898879771679107L; - - private final Field[] fields; - private final Table into; - private boolean onDuplicateKeyUpdate; - - InsertImpl(Configuration configuration, Table into, Collection> fields) { - super(new InsertQueryImpl(configuration, into)); - - this.into = into; - this.fields = (fields == null || fields.size() == 0) - ? into.fields() - : fields.toArray(new Field[fields.size()]); - } - - // ------------------------------------------------------------------------- - // The DSL API - // ------------------------------------------------------------------------- - - @Override - public final Insert select(Select select) { - Configuration configuration = ((AttachableInternal) getDelegate()).configuration(); - return new InsertSelectQueryImpl(configuration, into, fields, select); - } - «FOR degree : (1..Constants::MAX_ROW_DEGREE)» - - @Override - public final InsertImpl values(«TN_XXXn(degree, "value")») { - return values(new Object[] { «XXXn(degree, "value")» }); - } - «ENDFOR» - - @Override - public final InsertImpl values(Object... values) { - if (fields.length != values.length) { - throw new IllegalArgumentException("The number of values must match the number of fields"); - } - - getDelegate().newRecord(); - for (int i = 0; i < fields.length; i++) { - addValue(getDelegate(), fields[i], values[i]); - } - - return this; - } - - @Override - public final InsertImpl values(Collection values) { - return values(values.toArray()); - } - - private void addValue(InsertQuery delegate, Field field, Object object) { - - // [#1343] Only convert non-jOOQ objects - if (object instanceof Field) { - delegate.addValue(field, (Field) object); - } - else if (object instanceof FieldLike) { - delegate.addValue(field, ((FieldLike) object).asField()); - } - else { - delegate.addValue(field, field.getDataType().convert(object)); - } - } - «FOR degree : (1..Constants::MAX_ROW_DEGREE)» - - @Override - public final InsertImpl values(«Field_TN_XXXn(degree, "value")») { - return values(new Field[] { «XXXn(degree, "value")» }); - } - «ENDFOR» - - @Override - public final InsertImpl values(Field... values) { - List> values1 = Arrays.asList(values); - if (fields.length != values1.size()) { - throw new IllegalArgumentException("The number of values must match the number of fields"); - } - - getDelegate().newRecord(); - for (int i = 0; i < fields.length; i++) { - // javac has trouble when inferring Object for T. Use Void instead - getDelegate().addValue((Field) fields[i], (Field) values1.get(i)); - } - - return this; - } - - @Override - public final InsertImpl onDuplicateKeyUpdate() { - onDuplicateKeyUpdate = true; - getDelegate().onDuplicateKeyUpdate(true); - return this; - } - - @Override - public final InsertImpl onDuplicateKeyIgnore() { - getDelegate().onDuplicateKeyIgnore(true); - return this; - } - - @Override - public final InsertImpl set(Field field, T value) { - if (onDuplicateKeyUpdate) { - getDelegate().addValueForUpdate(field, value); - } - else { - getDelegate().addValue(field, value); - } - - return this; - } - - @Override - public final InsertImpl set(Field field, Field value) { - if (onDuplicateKeyUpdate) { - getDelegate().addValueForUpdate(field, value); - } - else { - getDelegate().addValue(field, value); - } - - return this; - } - - @Override - public final InsertImpl set(Field field, Select> value) { - return set(field, value.asField()); - } - - @Override - public final InsertImpl set(Map, ?> map) { - if (onDuplicateKeyUpdate) { - getDelegate().addValuesForUpdate(map); - } - else { - getDelegate().addValues(map); - } - - return this; - } - - @Override - public final InsertImpl set(Record record) { - return set(Utils.map(record)); - } - - @Override - public final InsertImpl newRecord() { - getDelegate().newRecord(); - return this; - } - - @Override - public final InsertImpl returning() { - getDelegate().setReturning(); - return this; - } - - @Override - public final InsertImpl returning(Field... f) { - getDelegate().setReturning(f); - return this; - } - - @Override - public final InsertImpl returning(Collection> f) { - getDelegate().setReturning(f); - return this; - } - - @Override - public final Result fetch() { - getDelegate().execute(); - return getDelegate().getReturnedRecords(); - } - - @Override - public final R fetchOne() { - getDelegate().execute(); - return getDelegate().getReturnedRecord(); - } - } - '''); - - write("org.jooq.impl.InsertImpl", out); - } -} \ No newline at end of file diff --git a/jOOQ-tools/src/org/jooq/xtend/MergeDSL.xtend b/jOOQ-tools/src/org/jooq/xtend/MergeDSL.xtend deleted file mode 100644 index 6dacf0f8b8..0000000000 --- a/jOOQ-tools/src/org/jooq/xtend/MergeDSL.xtend +++ /dev/null @@ -1,417 +0,0 @@ -/** - * Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com) - * All rights reserved. - * - * This work is dual-licensed - * - under the Apache Software License 2.0 (the "ASL") - * - under the jOOQ License and Maintenance Agreement (the "jOOQ License") - * ============================================================================= - * You may choose which license applies to you: - * - * - If you're using this work with Open Source databases, you may choose - * either ASL or jOOQ License. - * - If you're using this work with at least one commercial database, you must - * choose jOOQ License - * - * For more information, please visit http://www.jooq.org/licenses - * - * Apache Software License 2.0: - * ----------------------------------------------------------------------------- - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * jOOQ License and Maintenance Agreement: - * ----------------------------------------------------------------------------- - * Data Geekery grants the Customer the non-exclusive, timely limited and - * non-transferable license to install and use the Software under the terms of - * the jOOQ License and Maintenance Agreement. - * - * This library is distributed with a LIMITED WARRANTY. See the jOOQ License - * and Maintenance Agreement for more details: http://www.jooq.org/licensing - */ -package org.jooq.xtend - -import org.jooq.Constants - -class MergeDSL extends Generators { - - def static void main(String[] args) { - val merge = new MergeDSL(); - merge.generateMergeNotMatchedStep(); - merge.generateMergeNotMatchedValuesStep(); - merge.generateMergeKeyStep(); - merge.generateMergeValuesStep(); - merge.generateMergeImplImplements(); - merge.generateMergeImplValues(); - merge.generateMergeImplWhenNotMatchedThenInsert(); - } - - def generateMergeNotMatchedStep() { - val out = new StringBuilder(); - - out.append(''' - «classHeader» - package org.jooq; - - import static org.jooq.SQLDialect.CUBRID; - import static org.jooq.SQLDialect.DB2; - import static org.jooq.SQLDialect.HSQLDB; - import static org.jooq.SQLDialect.ORACLE; - import static org.jooq.SQLDialect.SQLSERVER; - import static org.jooq.SQLDialect.SYBASE; - - import org.jooq.api.annotation.State; - import org.jooq.api.annotation.Transition; - - import java.util.Collection; - - import javax.annotation.Generated; - - /** - * This type is used for the {@link Merge}'s DSL API. - *

- * Example:

-         * DSLContext create = DSL.using(configuration);
-         *
-         * create.mergeInto(table)
-         *       .using(select)
-         *       .on(condition)
-         *       .whenMatchedThenUpdate()
-         *       .set(field1, value1)
-         *       .set(field2, value2)
-         *       .whenNotMatchedThenInsert(field1, field2)
-         *       .values(value1, value2)
-         *       .execute();
-         * 
- * - * @author Lukas Eder - */ - «generatedAnnotation» - @State - public interface MergeNotMatchedStep extends MergeFinalStep { - - /** - * Add the WHEN NOT MATCHED THEN INSERT clause to the - * MERGE statement. - *

- * Unlike the {@link #whenNotMatchedThenInsert(Field...)} and - * {@link #whenNotMatchedThenInsert(Collection)} methods, this will give - * access to a MySQL-like API allowing for - * INSERT SET a = x, b = y syntax. - */ - @Support({ CUBRID, DB2, HSQLDB, ORACLE, SQLSERVER, SYBASE }) - @Transition( - name = "WHEN NOT MATCHED THEN INSERT" - ) - MergeNotMatchedSetStep whenNotMatchedThenInsert(); - «FOR degree : (1..Constants::MAX_ROW_DEGREE)» - - /** - * Add the WHEN NOT MATCHED THEN INSERT clause to the - * MERGE statement - */ - @Support({ CUBRID, DB2, HSQLDB, ORACLE, SQLSERVER, SYBASE }) - <«TN(degree)»> MergeNotMatchedValuesStep«degree» whenNotMatchedThenInsert(«Field_TN_fieldn(degree)»); - «ENDFOR» - - /** - * Add the WHEN NOT MATCHED THEN INSERT clause to the - * MERGE statement - */ - @Support({ CUBRID, DB2, HSQLDB, ORACLE, SQLSERVER, SYBASE }) - @Transition( - name = "WHEN NOT MATCHED THEN INSERT", - args = "Field+" - ) - MergeNotMatchedValuesStepN whenNotMatchedThenInsert(Field... fields); - - /** - * Add the WHEN MATCHED THEN UPDATE clause to the - * MERGE statement - */ - @Support({ CUBRID, DB2, HSQLDB, ORACLE, SQLSERVER, SYBASE }) - @Transition( - name = "WHEN NOT MATCHED THEN INSERT", - args = "Field+" - ) - MergeNotMatchedValuesStepN whenNotMatchedThenInsert(Collection> fields); - } - '''); - - write("org.jooq.MergeNotMatchedStep", out); - } - - def generateMergeNotMatchedValuesStep() { - for (degree : (1..Constants::MAX_ROW_DEGREE)) { - val out = new StringBuilder(); - - out.append(''' - «classHeader» - package org.jooq; - - import static org.jooq.SQLDialect.CUBRID; - import static org.jooq.SQLDialect.DB2; - import static org.jooq.SQLDialect.HSQLDB; - import static org.jooq.SQLDialect.ORACLE; - import static org.jooq.SQLDialect.SQLSERVER; - import static org.jooq.SQLDialect.SYBASE; - - import java.util.Collection; - - import javax.annotation.Generated; - - /** - * This type is used for the {@link Merge}'s DSL API. - *

- * Example:

-             * DSLContext create = DSL.using(configuration);
-             *
-             * create.mergeInto(table)
-             *       .using(select)
-             *       .on(condition)
-             *       .whenMatchedThenUpdate()
-             *       .set(field1, value1)
-             *       .set(field2, value2)
-             *       .whenNotMatchedThenInsert(field1, field2)
-             *       .values(value1, value2)
-             *       .execute();
-             * 
- * - * @author Lukas Eder - */ - «generatedAnnotation» - public interface MergeNotMatchedValuesStep«degree» { - - /** - * Set VALUES for INSERT in the MERGE - * statement's WHEN NOT MATCHED THEN INSERT clause. - */ - @Support({ CUBRID, DB2, HSQLDB, ORACLE, SQLSERVER, SYBASE }) - MergeNotMatchedWhereStep values(«TN_XXXn(degree, "value")»); - - /** - * Set VALUES for INSERT in the MERGE - * statement's WHEN NOT MATCHED THEN INSERT clause. - */ - @Support({ CUBRID, DB2, HSQLDB, ORACLE, SQLSERVER, SYBASE }) - MergeNotMatchedWhereStep values(«Field_TN_XXXn(degree, "value")»); - - /** - * Set VALUES for INSERT in the MERGE - * statement's WHEN NOT MATCHED THEN INSERT clause. - */ - @Support({ CUBRID, DB2, HSQLDB, ORACLE, SQLSERVER, SYBASE }) - MergeNotMatchedWhereStep values(Collection values); - } - '''); - - write("org.jooq.MergeNotMatchedValuesStep" + degree, out); - } - } - - def generateMergeKeyStep() { - for (degree : (1..Constants::MAX_ROW_DEGREE)) { - val out = new StringBuilder(); - - out.append(''' - «classHeader» - package org.jooq; - - import static org.jooq.SQLDialect.CUBRID; - import static org.jooq.SQLDialect.DB2; - import static org.jooq.SQLDialect.H2; - import static org.jooq.SQLDialect.HSQLDB; - import static org.jooq.SQLDialect.ORACLE; - import static org.jooq.SQLDialect.SQLSERVER; - import static org.jooq.SQLDialect.SYBASE; - - import java.util.Collection; - - import javax.annotation.Generated; - - /** - * This type is used for the H2-specific variant of the {@link Merge}'s DSL API. - *

- * Example:

-             * DSLContext create = DSL.using(configuration);
-             *
-             * create.mergeInto(table, «field1_field2_fieldn(degree)»)
-             *       .key(id)
-             *       .values(«XXX1_XXX2_XXXn(degree, "value")»)
-             *       .execute();
-             * 
- * - * @author Lukas Eder - */ - «generatedAnnotation» - public interface MergeKeyStep«degree» extends MergeValuesStep«degree» { - - /** - * Specify an optional KEY clause. - *

- * Use this optional clause in order to override using the underlying - * PRIMARY KEY. - */ - @Support({ CUBRID, DB2, H2, HSQLDB, ORACLE, SQLSERVER, SYBASE }) - MergeValuesStep«degree» key(Field... keys); - - /** - * Specify an optional KEY clause. - *

- * Use this optional clause in order to override using the underlying - * PRIMARY KEY. - */ - @Support({ CUBRID, DB2, H2, HSQLDB, ORACLE, SQLSERVER, SYBASE }) - MergeValuesStep«degree» key(Collection> keys); - } - '''); - - write("org.jooq.MergeKeyStep" + degree, out); - } - } - - def generateMergeValuesStep() { - for (degree : (1..Constants::MAX_ROW_DEGREE)) { - val out = new StringBuilder(); - - out.append(''' - «classHeader» - package org.jooq; - - import static org.jooq.SQLDialect.CUBRID; - import static org.jooq.SQLDialect.DB2; - import static org.jooq.SQLDialect.H2; - import static org.jooq.SQLDialect.HSQLDB; - import static org.jooq.SQLDialect.ORACLE; - import static org.jooq.SQLDialect.SQLSERVER; - import static org.jooq.SQLDialect.SYBASE; - - import java.util.Collection; - - import javax.annotation.Generated; - - /** - * This type is used for the H2-specific variant of the {@link Merge}'s DSL API. - *

- * Example:

-             * using(configuration)
-             *       .mergeInto(table, «field1_field2_fieldn(degree)»)
-             *       .key(id)
-             *       .values(«XXX1_XXX2_XXXn(degree, "value")»)
-             *       .execute();
-             * 
- * - * @author Lukas Eder - */ - «generatedAnnotation» - public interface MergeValuesStep«degree» { - - /** - * Specify a VALUES clause - */ - @Support({ CUBRID, DB2, H2, HSQLDB, ORACLE, SQLSERVER, SYBASE }) - Merge values(«TN_XXXn(degree, "value")»); - - /** - * Specify a VALUES clause - */ - @Support({ CUBRID, DB2, H2, HSQLDB, ORACLE, SQLSERVER, SYBASE }) - Merge values(«Field_TN_XXXn(degree, "value")»); - - /** - * Specify a VALUES clause - */ - @Support({ CUBRID, DB2, H2, HSQLDB, ORACLE, SQLSERVER, SYBASE }) - Merge values(Collection values); - - /** - * Use a SELECT statement as the source of values for the - * MERGE statement - *

- * This variant of the MERGE .. SELECT statement expects a - * select returning exactly as many fields as specified previously in the - * INTO clause: - * {@link DSLContext#mergeInto(Table, «(1..degree).join(', ', [e | 'Field'])»)} - */ - @Support({ CUBRID, DB2, H2, HSQLDB, ORACLE, SQLSERVER, SYBASE }) - Merge select(Select> select); - } - '''); - - write("org.jooq.MergeValuesStep" + degree, out); - } - } - - def generateMergeImplImplements() { - val outKeyStep = new StringBuilder(); - val outNotMatchedValuesStep = new StringBuilder(); - - outKeyStep.append(''' - - «FOR degree : (1..Constants::MAX_ROW_DEGREE)» - MergeKeyStep«degree», - «ENDFOR» - ''') - - outNotMatchedValuesStep.append(''' - - «FOR degree : (1..Constants::MAX_ROW_DEGREE)» - MergeNotMatchedValuesStep«degree», - «ENDFOR» - ''') - - insert("org.jooq.impl.MergeImpl", outKeyStep, "implementsKeyStep"); - insert("org.jooq.impl.MergeImpl", outNotMatchedValuesStep, "implementsNotMatchedValuesStep"); - } - - def generateMergeImplValues() { - val out = new StringBuilder(); - - out.append(''' - - «FOR degree : (1..Constants::MAX_ROW_DEGREE)» - @Override - public final MergeImpl values(«TN_XXXn(degree, "value")») { - return values(new Object[] { «XXXn(degree, "value")» }); - } - - «ENDFOR» - «FOR degree : (1..Constants::MAX_ROW_DEGREE)» - - @Override - public final MergeImpl values(«Field_TN_XXXn(degree, "value")») { - return values(new Field[] { «XXXn(degree, "value")» }); - } - «ENDFOR» - ''') - - insert("org.jooq.impl.MergeImpl", out, "values"); - } - - def generateMergeImplWhenNotMatchedThenInsert() { - val out = new StringBuilder(); - - out.append(''' - - «FOR degree : (1..Constants::MAX_ROW_DEGREE)» - @Override - @SuppressWarnings("hiding") - public final <«TN(degree)»> MergeImpl whenNotMatchedThenInsert(«Field_TN_fieldn(degree)») { - return whenNotMatchedThenInsert(new Field[] { «fieldn(degree)» }); - } - - «ENDFOR» - ''') - - insert("org.jooq.impl.MergeImpl", out, "whenNotMatchedThenInsert"); - } -} \ No newline at end of file diff --git a/jOOQ-tools/src/org/jooq/xtend/Records.xtend b/jOOQ-tools/src/org/jooq/xtend/Records.xtend deleted file mode 100644 index 040c3f560e..0000000000 --- a/jOOQ-tools/src/org/jooq/xtend/Records.xtend +++ /dev/null @@ -1,208 +0,0 @@ -/** - * Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com) - * All rights reserved. - * - * This work is dual-licensed - * - under the Apache Software License 2.0 (the "ASL") - * - under the jOOQ License and Maintenance Agreement (the "jOOQ License") - * ============================================================================= - * You may choose which license applies to you: - * - * - If you're using this work with Open Source databases, you may choose - * either ASL or jOOQ License. - * - If you're using this work with at least one commercial database, you must - * choose jOOQ License - * - * For more information, please visit http://www.jooq.org/licenses - * - * Apache Software License 2.0: - * ----------------------------------------------------------------------------- - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * jOOQ License and Maintenance Agreement: - * ----------------------------------------------------------------------------- - * Data Geekery grants the Customer the non-exclusive, timely limited and - * non-transferable license to install and use the Software under the terms of - * the jOOQ License and Maintenance Agreement. - * - * This library is distributed with a LIMITED WARRANTY. See the jOOQ License - * and Maintenance Agreement for more details: http://www.jooq.org/licensing - */ -package org.jooq.xtend - -import org.jooq.Constants - -/** - * @author Lukas Eder - */ -class Records extends Generators { - - def static void main(String[] args) { - val records = new Records(); - records.generateRecords(); - records.generateRecordImpl(); - } - - def generateRecords() { - for (degree : (1..Constants::MAX_ROW_DEGREE)) { - val out = new StringBuilder(); - - out.append(''' - «classHeader» - package org.jooq; - - import javax.annotation.Generated; - - /** - * A model type for a records with degree «degree» - * - * @see Row«degree» - * @author Lukas Eder - */ - «generatedAnnotation» - public interface Record«degree»<«TN(degree)»> extends Record { - - // ------------------------------------------------------------------------ - // Row value expressions - // ------------------------------------------------------------------------ - - /** - * Get this record's fields as a {@link Row«degree»} - */ - @Override - Row«degree»<«TN(degree)»> fieldsRow(); - - /** - * Get this record's values as a {@link Row«degree»} - */ - @Override - Row«degree»<«TN(degree)»> valuesRow(); - - // ------------------------------------------------------------------------ - // Field accessors - // ------------------------------------------------------------------------ - «FOR d : (1..degree)» - - /** - * Get the «first(d)» field - */ - Field field«d»(); - «ENDFOR» - - // ------------------------------------------------------------------------ - // Value accessors - // ------------------------------------------------------------------------ - «FOR d : (1..degree)» - - /** - * Get the «first(d)» value - */ - T«d» value«d»(); - «ENDFOR» - - } - '''); - - write("org.jooq.Record" + degree, out); - } - } - - def generateRecordImpl() { - val out = new StringBuilder(); - - out.append(''' - «classHeader» - package org.jooq.impl; - - import java.util.Collection; - - import javax.annotation.Generated; - - import org.jooq.Field; - import org.jooq.Record; - «FOR degree : (1..Constants::MAX_ROW_DEGREE)» - import org.jooq.Record«degree»; - «ENDFOR» - - /** - * A general purpose record, typically used for ad-hoc types. - *

- * This type implements both the general-purpose, type-unsafe {@link Record} - * interface, as well as the more specific, type-safe {@link Record1}, - * {@link Record2} through {@link Record«Constants::MAX_ROW_DEGREE»} interfaces - * - * @author Lukas Eder - */ - «generatedAnnotation» - @SuppressWarnings({ "unchecked", "rawtypes" }) - class RecordImpl<«TN(Constants::MAX_ROW_DEGREE)»> extends AbstractRecord - implements - - // This record implementation implements all record types. Type-safety is - // being checked through the type-safe API. No need for further checks here - «FOR degree : (1..Constants::MAX_ROW_DEGREE) SEPARATOR ','» - Record«degree»<«TN(degree)»>«IF degree == Constants::MAX_ROW_DEGREE» {«ENDIF» - «ENDFOR» - - /** - * Generated UID - */ - private static final long serialVersionUID = -2201346180421463830L; - - /** - * Create a new general purpose record - */ - public RecordImpl(Field... fields) { - super(fields); - } - - /** - * Create a new general purpose record - */ - public RecordImpl(Collection> fields) { - super(fields); - } - - // ------------------------------------------------------------------------ - // XXX: Type-safe Record APIs - // ------------------------------------------------------------------------ - - @Override - public RowImpl<«TN(Constants::MAX_ROW_DEGREE)»> fieldsRow() { - return fields; - } - - @Override - public final RowImpl<«TN(Constants::MAX_ROW_DEGREE)»> valuesRow() { - return new RowImpl(Utils.fields(intoArray(), fields.fields())); - } - «FOR degree : (1..Constants::MAX_ROW_DEGREE)» - - @Override - public final Field field«degree»() { - return fields.field(«degree - 1»); - } - «ENDFOR» - «FOR degree : (1..Constants::MAX_ROW_DEGREE)» - - @Override - public final T«degree» value«degree»() { - return (T«degree») getValue(«degree - 1»); - } - «ENDFOR» - } - '''); - - write("org.jooq.impl.RecordImpl", out); - } -} \ No newline at end of file diff --git a/jOOQ-tools/src/org/jooq/xtend/Rows.xtend b/jOOQ-tools/src/org/jooq/xtend/Rows.xtend deleted file mode 100644 index 0497b0347b..0000000000 --- a/jOOQ-tools/src/org/jooq/xtend/Rows.xtend +++ /dev/null @@ -1,1982 +0,0 @@ -/** - * Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com) - * All rights reserved. - * - * This work is dual-licensed - * - under the Apache Software License 2.0 (the "ASL") - * - under the jOOQ License and Maintenance Agreement (the "jOOQ License") - * ============================================================================= - * You may choose which license applies to you: - * - * - If you're using this work with Open Source databases, you may choose - * either ASL or jOOQ License. - * - If you're using this work with at least one commercial database, you must - * choose jOOQ License - * - * For more information, please visit http://www.jooq.org/licenses - * - * Apache Software License 2.0: - * ----------------------------------------------------------------------------- - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * jOOQ License and Maintenance Agreement: - * ----------------------------------------------------------------------------- - * Data Geekery grants the Customer the non-exclusive, timely limited and - * non-transferable license to install and use the Software under the terms of - * the jOOQ License and Maintenance Agreement. - * - * This library is distributed with a LIMITED WARRANTY. See the jOOQ License - * and Maintenance Agreement for more details: http://www.jooq.org/licensing - */ -package org.jooq.xtend - -import org.jooq.Constants - -/** - * @author Lukas Eder - */ -class Rows extends Generators { - - def static void main(String[] args) { - val rows = new Rows(); - rows.generateRowClasses(); - rows.generateRowImpl(); - } - - def generateRowClasses() { - for (degree : (0..Constants::MAX_ROW_DEGREE)) { - val out = new StringBuilder(); - - val typeSuffix = typeSuffix(degree) - val typeSuffixRaw = typeSuffixRaw(degree) - val recTypeSuffix = recTypeSuffix(degree) - - out.append(''' - «classHeader» - package org.jooq; - - import org.jooq.Comparator; - import org.jooq.api.annotation.State; - - import java.util.Collection; - - import javax.annotation.Generated; - - /** - * A model type for a row value expression with degree «IF degree > 0»«degree»«ELSE»N > «Constants::MAX_ROW_DEGREE»«ENDIF». - *

- * Note: Not all databases support row value expressions, but many row value - * expression operations can be simulated on all databases. See relevant row - * value expression method Javadocs for details. - * - * @author Lukas Eder - */ - «generatedAnnotation» - @State - public interface Row«typeSuffix» extends Row { - «IF degree > 0» - - // ------------------------------------------------------------------------ - // Field accessors - // ------------------------------------------------------------------------ - «FOR d : (1..degree)» - - /** - * Get the «first(d)» field. - */ - Field field«d»(); - «ENDFOR» - «ENDIF» - - // ------------------------------------------------------------------------ - // Generic comparison predicates - // ------------------------------------------------------------------------ - - /** - * Compare this row value expression with another row value expression - * using a dynamic comparator. - *

- * See the explicit comparison methods for details. Note, not all - * {@link Comparator} types are supported - * - * @see #equal(Row«typeSuffixRaw») - * @see #notEqual(Row«typeSuffixRaw») - * @see #lessThan(Row«typeSuffixRaw») - * @see #lessOrEqual(Row«typeSuffixRaw») - * @see #greaterThan(Row«typeSuffixRaw») - * @see #greaterOrEqual(Row«typeSuffixRaw») - */ - @Support - Condition compare(Comparator comparator, Row«typeSuffix» row); - - /** - * Compare this row value expression with a record record - * using a dynamic comparator. - *

- * See the explicit comparison methods for details. Note, not all - * {@link Comparator} types are supported - * - * @see #equal(Row«typeSuffixRaw») - * @see #notEqual(Row«typeSuffixRaw») - * @see #lessThan(Row«typeSuffixRaw») - * @see #lessOrEqual(Row«typeSuffixRaw») - * @see #greaterThan(Row«typeSuffixRaw») - * @see #greaterOrEqual(Row«typeSuffixRaw») - */ - @Support - Condition compare(Comparator comparator, Record«recTypeSuffix» record); - - /** - * Compare this row value expression with another row value expression - * using a dynamic comparator. - *

- * See the explicit comparison methods for details. Note, not all - * {@link Comparator} types are supported - * - * @see #equal(Row«typeSuffixRaw») - * @see #notEqual(Row«typeSuffixRaw») - * @see #lessThan(Row«typeSuffixRaw») - * @see #lessOrEqual(Row«typeSuffixRaw») - * @see #greaterThan(Row«typeSuffixRaw») - * @see #greaterOrEqual(Row«typeSuffixRaw») - */ - @Support - Condition compare(Comparator comparator, «TN_tn(degree)»); - - /** - * Compare this row value expression with another row value expression - * using a dynamic comparator. - *

- * See the explicit comparison methods for details. Note, not all - * {@link Comparator} types are supported - * - * @see #equal(Row«typeSuffixRaw») - * @see #notEqual(Row«typeSuffixRaw») - * @see #lessThan(Row«typeSuffixRaw») - * @see #lessOrEqual(Row«typeSuffixRaw») - * @see #greaterThan(Row«typeSuffixRaw») - * @see #greaterOrEqual(Row«typeSuffixRaw») - */ - @Support - Condition compare(Comparator comparator, «Field_TN_tn(degree)»); - - // ------------------------------------------------------------------------ - // Equal / Not equal comparison predicates - // ------------------------------------------------------------------------ - - /** - * Compare this row value expression with another row value expression for - * equality. - *

- * Row equality comparison predicates can be simulated in those databases - * that do not support such predicates natively: - * (A, B) = (1, 2) is equivalent to - * A = 1 AND B = 2 - */ - @Support - Condition equal(Row«typeSuffix» row); - - /** - * Compare this row value expression with a record for equality. - * - * @see #equal(Row«typeSuffixRaw») - */ - @Support - Condition equal(Record«recTypeSuffix» record); - - /** - * Compare this row value expression with another row value expression for - * equality. - * - * @see #equal(Row«typeSuffixRaw») - */ - @Support - Condition equal(«TN_tn(degree)»); - - /** - * Compare this row value expression with another row value expression for - * equality. - * - * @see #equal(Row«typeSuffixRaw») - */ - @Support - Condition equal(«Field_TN_tn(degree)»); - - /** - * Compare this row value expression with a subselect for equality. - * - * @see #equal(Row«typeSuffixRaw») - */ - @Support - Condition equal(Select select); - - /** - * Compare this row value expression with another row value expression for - * equality. - * - * @see #equal(Row«typeSuffixRaw») - */ - @Support - Condition eq(Row«typeSuffix» row); - - /** - * Compare this row value expression with a record for equality. - * - * @see #equal(Row«typeSuffixRaw») - */ - @Support - Condition eq(Record«recTypeSuffix» record); - - /** - * Compare this row value expression with another row value expression for - * equality. - * - * @see #equal(Row«typeSuffixRaw») - */ - @Support - Condition eq(«TN_tn(degree)»); - - /** - * Compare this row value expression with another row value expression for - * equality. - * - * @see #equal(Row«typeSuffixRaw») - */ - @Support - Condition eq(«Field_TN_tn(degree)»); - - /** - * Compare this row value expression with a subselect for equality. - * - * @see #equal(Row«typeSuffixRaw») - */ - @Support - Condition eq(Select select); - - /** - * Compare this row value expression with another row value expression for - * non-equality. - *

- * Row non-equality comparison predicates can be simulated in those - * databases that do not support such predicates natively: - * (A, B) <> (1, 2) is equivalent to - * NOT(A = 1 AND B = 2) - */ - @Support - Condition notEqual(Row«typeSuffix» row); - - /** - * Compare this row value expression with a record for non-equality - * - * @see #notEqual(Row«typeSuffixRaw») - */ - @Support - Condition notEqual(Record«recTypeSuffix» record); - - /** - * Compare this row value expression with another row value expression for. - * non-equality - * - * @see #notEqual(Row«typeSuffixRaw») - */ - @Support - Condition notEqual(«TN_tn(degree)»); - - /** - * Compare this row value expression with another row value expression for - * non-equality. - * - * @see #notEqual(Row«typeSuffixRaw») - */ - @Support - Condition notEqual(«Field_TN_tn(degree)»); - - /** - * Compare this row value expression with a subselect for non-equality. - * - * @see #notEqual(Row«typeSuffixRaw») - */ - @Support - Condition notEqual(Select select); - - /** - * Compare this row value expression with another row value expression for - * non-equality. - * - * @see #notEqual(Row«typeSuffixRaw») - */ - @Support - Condition ne(Row«typeSuffix» row); - - /** - * Compare this row value expression with a record for non-equality. - * - * @see #notEqual(Row«typeSuffixRaw») - */ - @Support - Condition ne(Record«recTypeSuffix» record); - - /** - * Compare this row value expression with another row value expression for - * non-equality. - * - * @see #notEqual(Row«typeSuffixRaw») - */ - @Support - Condition ne(«TN_tn(degree)»); - - /** - * Compare this row value expression with another row value expression for - * non-equality. - * - * @see #notEqual(Row«typeSuffixRaw») - */ - @Support - Condition ne(«Field_TN_tn(degree)»); - - /** - * Compare this row value expression with a subselect for non-equality. - * - * @see #notEqual(Row«typeSuffixRaw») - */ - @Support - Condition ne(Select select); - - // ------------------------------------------------------------------------ - // Ordering comparison predicates - // ------------------------------------------------------------------------ - - /** - * Compare this row value expression with another row value expression for - * order. - *

- * Row order comparison predicates can be simulated in those - * databases that do not support such predicates natively: - * (A, B, C) < (1, 2, 3) is equivalent to - * A < 1 OR (A = 1 AND B < 2) OR (A = 1 AND B = 2 AND C < 3) - */ - @Support - Condition lessThan(Row«typeSuffix» row); - - /** - * Compare this row value expression with a record for order. - * - * @see #lessThan(Row«typeSuffixRaw») - */ - @Support - Condition lessThan(Record«recTypeSuffix» record); - - /** - * Compare this row value expression with another row value expression for - * order. - * - * @see #lessThan(Row«typeSuffixRaw») - */ - @Support - Condition lessThan(«TN_tn(degree)»); - - /** - * Compare this row value expression with another row value expression for - * order. - * - * @see #lessThan(Row«typeSuffixRaw») - */ - @Support - Condition lessThan(«Field_TN_tn(degree)»); - - /** - * Compare this row value expression with a subselect for order. - * - * @see #lessThan(Row«typeSuffixRaw») - */ - @Support - Condition lessThan(Select select); - - /** - * Compare this row value expression with another row value expression for - * order. - * - * @see #lessThan(Row«typeSuffixRaw») - */ - @Support - Condition lt(Row«typeSuffix» row); - - /** - * Compare this row value expression with a record for order. - * - * @see #lessThan(Row«typeSuffixRaw») - */ - @Support - Condition lt(Record«recTypeSuffix» record); - - /** - * Compare this row value expression with another row value expression for - * order. - * - * @see #lessThan(Row«typeSuffixRaw») - */ - @Support - Condition lt(«TN_tn(degree)»); - - /** - * Compare this row value expression with another row value expression for - * order. - * - * @see #lessThan(Row«typeSuffixRaw») - */ - @Support - Condition lt(«Field_TN_tn(degree)»); - - /** - * Compare this row value expression with a subselect for order. - * - * @see #lessThan(Row«typeSuffixRaw») - */ - @Support - Condition lt(Select select); - - /** - * Compare this row value expression with another row value expression for - * order. - *

- * Row order comparison predicates can be simulated in those - * databases that do not support such predicates natively: - * (A, B) <= (1, 2) is equivalent to - * A < 1 OR (A = 1 AND B < 2) OR (A = 1 AND B = 2) - */ - @Support - Condition lessOrEqual(Row«typeSuffix» row); - - /** - * Compare this row value expression with a record for order. - * - * @see #lessOrEqual(Row«typeSuffixRaw») - */ - @Support - Condition lessOrEqual(Record«recTypeSuffix» record); - - /** - * Compare this row value expression with another row value expression for - * order. - * - * @see #lessOrEqual(Row«typeSuffixRaw») - */ - @Support - Condition lessOrEqual(«TN_tn(degree)»); - - /** - * Compare this row value expression with another row value expression for - * order. - * - * @see #lessOrEqual(Row«typeSuffixRaw») - */ - @Support - Condition lessOrEqual(«Field_TN_tn(degree)»); - - /** - * Compare this row value expression with a subselect for order. - * - * @see #lessOrEqual(Row«typeSuffixRaw») - */ - @Support - Condition lessOrEqual(Select select); - - /** - * Compare this row value expression with another row value expression for - * order. - * - * @see #lessOrEqual(Row«typeSuffixRaw») - */ - @Support - Condition le(Row«typeSuffix» row); - - /** - * Compare this row value expression with a record for order. - * - * @see #lessOrEqual(Row«typeSuffixRaw») - */ - @Support - Condition le(Record«recTypeSuffix» record); - - /** - * Compare this row value expression with another row value expression for - * order. - * - * @see #lessOrEqual(Row«typeSuffixRaw») - */ - @Support - Condition le(«TN_tn(degree)»); - - /** - * Compare this row value expression with another row value expression for - * order. - * - * @see #lessOrEqual(Row«typeSuffixRaw») - */ - @Support - Condition le(«Field_TN_tn(degree)»); - - /** - * Compare this row value expression with a subselect for order. - * - * @see #lessOrEqual(Row«typeSuffixRaw») - */ - @Support - Condition le(Select select); - - /** - * Compare this row value expression with another row value expression for - * order. - *

- * Row order comparison predicates can be simulated in those - * databases that do not support such predicates natively: - * (A, B, C) > (1, 2, 3) is equivalent to - * A > 1 OR (A = 1 AND B > 2) OR (A = 1 AND B = 2 AND C > 3) - */ - @Support - Condition greaterThan(Row«typeSuffix» row); - - /** - * Compare this row value expression with a record for order. - * - * @see #greaterThan(Row«typeSuffixRaw») - */ - @Support - Condition greaterThan(Record«recTypeSuffix» record); - - /** - * Compare this row value expression with another row value expression for - * order. - * - * @see #greaterThan(Row«typeSuffixRaw») - */ - @Support - Condition greaterThan(«TN_tn(degree)»); - - /** - * Compare this row value expression with another row value expression for - * order. - * - * @see #greaterThan(Row«typeSuffixRaw») - */ - @Support - Condition greaterThan(«Field_TN_tn(degree)»); - - /** - * Compare this row value expression with a subselect for order. - * - * @see #greaterThan(Row«typeSuffixRaw») - */ - @Support - Condition greaterThan(Select select); - - /** - * Compare this row value expression with another row value expression for - * order. - * - * @see #greaterThan(Row«typeSuffixRaw») - */ - @Support - Condition gt(Row«typeSuffix» row); - - /** - * Compare this row value expression with a record for order. - * - * @see #greaterThan(Row«typeSuffixRaw») - */ - @Support - Condition gt(Record«recTypeSuffix» record); - - /** - * Compare this row value expression with another row value expression for - * order. - * - * @see #greaterThan(Row«typeSuffixRaw») - */ - @Support - Condition gt(«TN_tn(degree)»); - - /** - * Compare this row value expression with another row value expression for - * order. - * - * @see #greaterThan(Row«typeSuffixRaw») - */ - @Support - Condition gt(«Field_TN_tn(degree)»); - - /** - * Compare this row value expression with a subselect for order. - * - * @see #greaterThan(Row«typeSuffixRaw») - */ - @Support - Condition gt(Select select); - - /** - * Compare this row value expression with another row value expression for - * order. - *

- * Row order comparison predicates can be simulated in those - * databases that do not support such predicates natively: - * (A, B) >= (1, 2) is equivalent to - * A > 1 OR (A = 1 AND B > 2) OR (A = 1 AND B = 2) - */ - @Support - Condition greaterOrEqual(Row«typeSuffix» row); - - /** - * Compare this row value expression with a record for order. - * - * @see #greaterOrEqual(Row«typeSuffixRaw») - */ - @Support - Condition greaterOrEqual(Record«recTypeSuffix» record); - - /** - * Compare this row value expression with another row value expression for - * order. - * - * @see #greaterOrEqual(Row«typeSuffixRaw») - */ - @Support - Condition greaterOrEqual(«TN_tn(degree)»); - - /** - * Compare this row value expression with another row value expression for - * order. - * - * @see #greaterOrEqual(Row«typeSuffixRaw») - */ - @Support - Condition greaterOrEqual(«Field_TN_tn(degree)»); - - /** - * Compare this row value expression with a subselect for order. - * - * @see #greaterOrEqual(Row«typeSuffixRaw») - */ - @Support - Condition greaterOrEqual(Select select); - - /** - * Compare this row value expression with another row value expression for - * order. - * - * @see #greaterOrEqual(Row«typeSuffixRaw») - */ - @Support - Condition ge(Row«typeSuffix» row); - - /** - * Compare this row value expression with a record for order. - * - * @see #greaterOrEqual(Row«typeSuffixRaw») - */ - @Support - Condition ge(Record«recTypeSuffix» record); - - /** - * Compare this row value expression with another row value expression for - * order. - * - * @see #greaterOrEqual(Row«typeSuffixRaw») - */ - @Support - Condition ge(«TN_tn(degree)»); - - /** - * Compare this row value expression with another row value expression for - * order. - * - * @see #greaterOrEqual(Row«typeSuffixRaw») - */ - @Support - Condition ge(«Field_TN_tn(degree)»); - - /** - * Compare this row value expression with a subselect for order. - * - * @see #greaterOrEqual(Row«typeSuffixRaw») - */ - @Support - Condition ge(Select select); - - // ------------------------------------------------------------------------ - // [NOT] BETWEEN predicates - // ------------------------------------------------------------------------ - - /** - * Check if this row value expression is within a range of two other row - * value expressions. - * - * @see #between(Row«typeSuffixRaw», Row«typeSuffixRaw») - */ - @Support - BetweenAndStep«typeSuffix» between(«TN_XXXn(degree, "minValue")»); - - /** - * Check if this row value expression is within a range of two other row - * value expressions. - * - * @see #between(Row«typeSuffixRaw», Row«typeSuffixRaw») - */ - @Support - BetweenAndStep«typeSuffix» between(«Field_TN_XXXn(degree, "minValue")»); - - /** - * Check if this row value expression is within a range of two other row - * value expressions. - * - * @see #between(Row«typeSuffixRaw», Row«typeSuffixRaw») - */ - @Support - BetweenAndStep«typeSuffix» between(Row«typeSuffix» minValue); - - /** - * Check if this row value expression is within a range of two records. - * - * @see #between(Row«typeSuffixRaw», Row«typeSuffixRaw») - */ - @Support - BetweenAndStep«typeSuffix» between(Record«recTypeSuffix» minValue); - - /** - * Check if this row value expression is within a range of two other row - * value expressions. - *

- * This is the same as calling between(minValue).and(maxValue) - *

- * The expression A BETWEEN B AND C is equivalent to the - * expression A >= B AND A <= C for those SQL dialects that do - * not properly support the BETWEEN predicate for row value - * expressions - */ - @Support - Condition between(Row«typeSuffix» minValue, - Row«typeSuffix» maxValue); - - /** - * Check if this row value expression is within a range of two records. - *

- * This is the same as calling between(minValue).and(maxValue) - * - * @see #between(Row«typeSuffixRaw», Row«typeSuffixRaw») - */ - @Support - Condition between(Record«recTypeSuffix» minValue, - Record«recTypeSuffix» maxValue); - - /** - * Check if this row value expression is within a symmetric range of two - * other row value expressions. - * - * @see #betweenSymmetric(Row«typeSuffixRaw», Row«typeSuffixRaw») - */ - @Support - BetweenAndStep«typeSuffix» betweenSymmetric(«TN_XXXn(degree, "minValue")»); - - /** - * Check if this row value expression is within a symmetric range of two - * other row value expressions. - * - * @see #betweenSymmetric(Row«typeSuffixRaw», Row«typeSuffixRaw») - */ - @Support - BetweenAndStep«typeSuffix» betweenSymmetric(«Field_TN_XXXn(degree, "minValue")»); - - /** - * Check if this row value expression is within a symmetric range of two - * other row value expressions. - * - * @see #betweenSymmetric(Row«typeSuffixRaw», Row«typeSuffixRaw») - */ - @Support - BetweenAndStep«typeSuffix» betweenSymmetric(Row«typeSuffix» minValue); - - /** - * Check if this row value expression is within a symmetric range of two - * records. - * - * @see #betweenSymmetric(Row«typeSuffixRaw», Row«typeSuffixRaw») - */ - @Support - BetweenAndStep«typeSuffix» betweenSymmetric(Record«recTypeSuffix» minValue); - - /** - * Check if this row value expression is within a symmetric range of two - * other row value expressions. - *

- * This is the same as calling betweenSymmetric(minValue).and(maxValue) - *

- * The expression A BETWEEN SYMMETRIC B AND C is equivalent to - * the expression (A >= B AND A <= C) OR (A >= C AND A <= B) - * for those SQL dialects that do not properly support the - * BETWEEN predicate for row value expressions - */ - @Support - Condition betweenSymmetric(Row«typeSuffix» minValue, - Row«typeSuffix» maxValue); - - /** - * Check if this row value expression is within a symmetric range of two - * records. - *

- * This is the same as calling betweenSymmetric(minValue).and(maxValue) - * - * @see #betweenSymmetric(Row«typeSuffixRaw», Row«typeSuffixRaw») - */ - @Support - Condition betweenSymmetric(Record«recTypeSuffix» minValue, - Record«recTypeSuffix» maxValue); - - /** - * Check if this row value expression is not within a range of two other - * row value expressions. - * - * @see #between(Row«typeSuffixRaw», Row«typeSuffixRaw») - */ - @Support - BetweenAndStep«typeSuffix» notBetween(«TN_XXXn(degree, "minValue")»); - - /** - * Check if this row value expression is not within a range of two other - * row value expressions. - * - * @see #notBetween(Row«typeSuffixRaw», Row«typeSuffixRaw») - */ - @Support - BetweenAndStep«typeSuffix» notBetween(«Field_TN_XXXn(degree, "minValue")»); - - /** - * Check if this row value expression is not within a range of two other - * row value expressions. - * - * @see #notBetween(Row«typeSuffixRaw», Row«typeSuffixRaw») - */ - @Support - BetweenAndStep«typeSuffix» notBetween(Row«typeSuffix» minValue); - - /** - * Check if this row value expression is within a range of two records. - * - * @see #notBetween(Row«typeSuffixRaw», Row«typeSuffixRaw») - */ - @Support - BetweenAndStep«typeSuffix» notBetween(Record«recTypeSuffix» minValue); - - /** - * Check if this row value expression is not within a range of two other - * row value expressions. - *

- * This is the same as calling notBetween(minValue).and(maxValue) - *

- * The expression A NOT BETWEEN B AND C is equivalent to the - * expression A < B OR A > C for those SQL dialects that do - * not properly support the BETWEEN predicate for row value - * expressions - */ - @Support - Condition notBetween(Row«typeSuffix» minValue, - Row«typeSuffix» maxValue); - - /** - * Check if this row value expression is within a range of two records. - *

- * This is the same as calling notBetween(minValue).and(maxValue) - * - * @see #notBetween(Row«typeSuffixRaw», Row«typeSuffixRaw») - */ - @Support - Condition notBetween(Record«recTypeSuffix» minValue, - Record«recTypeSuffix» maxValue); - - /** - * Check if this row value expression is not within a symmetric range of two - * other row value expressions. - * - * @see #notBetweenSymmetric(Row«typeSuffixRaw», Row«typeSuffixRaw») - */ - @Support - BetweenAndStep«typeSuffix» notBetweenSymmetric(«TN_XXXn(degree, "minValue")»); - - /** - * Check if this row value expression is not within a symmetric range of two - * other row value expressions. - * - * @see #notBetweenSymmetric(Row«typeSuffixRaw», Row«typeSuffixRaw») - */ - @Support - BetweenAndStep«typeSuffix» notBetweenSymmetric(«Field_TN_XXXn(degree, "minValue")»); - - /** - * Check if this row value expression is not within a symmetric range of two - * other row value expressions. - * - * @see #notBetweenSymmetric(Row«typeSuffixRaw», Row«typeSuffixRaw») - */ - @Support - BetweenAndStep«typeSuffix» notBetweenSymmetric(Row«typeSuffix» minValue); - - /** - * Check if this row value expression is not within a symmetric range of two - * records. - * - * @see #notBetweenSymmetric(Row«typeSuffixRaw», Row«typeSuffixRaw») - */ - @Support - BetweenAndStep«typeSuffix» notBetweenSymmetric(Record«recTypeSuffix» minValue); - - /** - * Check if this row value expression is not within a symmetric range of two - * other row value expressions. - *

- * This is the same as calling notBetweenSymmetric(minValue).and(maxValue) - *

- * The expression A NOT BETWEEN SYMMETRIC B AND C is equivalent - * to the expression (A < B OR A > C) AND (A < C OR A > B) for - * those SQL dialects that do not properly support the BETWEEN - * predicate for row value expressions - */ - @Support - Condition notBetweenSymmetric(Row«typeSuffix» minValue, - Row«typeSuffix» maxValue); - - /** - * Check if this row value expression is not within a symmetric range of two - * records. - *

- * This is the same as calling notBetweenSymmetric(minValue).and(maxValue) - * - * @see #notBetweenSymmetric(Row«typeSuffixRaw», Row«typeSuffixRaw») - */ - @Support - Condition notBetweenSymmetric(Record«recTypeSuffix» minValue, - Record«recTypeSuffix» maxValue); - - // ------------------------------------------------------------------------ - // [NOT] DISTINCT predicates - // ------------------------------------------------------------------------ - -««« /** -««« * Compare this row value expression with another row value expression for -««« * distinctness. -««« */ -««« @Support -««« Condition isDistinctFrom(Row«typeSuffix» row); -««« -««« /** -««« * Compare this row value expression with a record for distinctness. -««« * -««« * @see #isDistinctFrom(Row«typeSuffixRaw») -««« */ -««« @Support -««« Condition isDistinctFrom(Record«recTypeSuffix» record); -««« -««« /** -««« * Compare this row value expression with another row value expression for -««« * distinctness. -««« * -««« * @see #isDistinctFrom(Row«typeSuffixRaw») -««« */ -««« @Support -««« Condition isDistinctFrom(«TN_tn(degree)»); -««« -««« /** -««« * Compare this row value expression with another row value expression for -««« * distinctness. -««« * -««« * @see #isDistinctFrom(Row«typeSuffixRaw») -««« */ -««« @Support -««« Condition isDistinctFrom(«Field_TN_tn(degree)»); -««« -««« /** -««« * Compare this row value expression with another row value expression for -««« * non-distinctness. -««« */ -««« @Support -««« Condition isNotDistinctFrom(Row«typeSuffix» row); -««« -««« /** -««« * Compare this row value expression with a record for non-distinctness. -««« * -««« * @see #isNotDistinctFrom(Row«typeSuffixRaw») -««« */ -««« @Support -««« Condition isNotDistinctFrom(Record«recTypeSuffix» record); -««« -««« /** -««« * Compare this row value expression with another row value expression for -««« * non-distinctness. -««« * -««« * @see #isNotDistinctFrom(Row«typeSuffixRaw») -««« */ -««« @Support -««« Condition isNotDistinctFrom(«TN_tn(degree)»); -««« -««« /** -««« * Compare this row value expression with another row value expression for -««« * non-distinctness. -««« * -««« * @see #isNotDistinctFrom(Row«typeSuffixRaw») -««« */ -««« @Support -««« Condition isNotDistinctFrom(«Field_TN_tn(degree)»); - - // ------------------------------------------------------------------------ - // [NOT] IN predicates - // ------------------------------------------------------------------------ - - /** - * Compare this row value expression with a set of row value expressions for - * equality. - *

- * Row IN predicates can be simulated in those databases that do not support - * such predicates natively: (A, B) IN ((1, 2), (3, 4)) is - * equivalent to ((A, B) = (1, 2)) OR ((A, B) = (3, 4)), which - * is equivalent to (A = 1 AND B = 2) OR (A = 3 AND B = 4) - */ - @Support - Condition in(Collection rows); - - /** - * Compare this row value expression with a set of row value expressions for - * equality. - * - * @see #in(Collection) - */ - @Support - Condition in(Row«typeSuffix»... rows); - - /** - * Compare this row value expression with a set of records for equality. - * - * @see #in(Collection) - */ - @Support - Condition in(Record«recTypeSuffix»... record); - - /** - * Compare this row value expression with a subselect for equality. - * - * @see #in(Collection) - */ - @Support - Condition in(Select select); - - /** - * Compare this row value expression with a set of row value expressions for - * equality. - *

- * Row NOT IN predicates can be simulated in those databases that do not - * support such predicates natively: - * (A, B) NOT IN ((1, 2), (3, 4)) is equivalent to - * NOT(((A, B) = (1, 2)) OR ((A, B) = (3, 4))), which is - * equivalent to NOT((A = 1 AND B = 2) OR (A = 3 AND B = 4)) - */ - @Support - Condition notIn(Collection rows); - - /** - * Compare this row value expression with a set of row value expressions for - * equality. - * - * @see #notIn(Collection) - */ - @Support - Condition notIn(Row«typeSuffix»... rows); - - /** - * Compare this row value expression with a set of records for non-equality. - * - * @see #notIn(Collection) - */ - @Support - Condition notIn(Record«recTypeSuffix»... record); - - /** - * Compare this row value expression with a subselect for non-equality. - * - * @see #notIn(Collection) - */ - @Support - Condition notIn(Select select); - - «IF degree == 2» - // ------------------------------------------------------------------------ - // Row2-specific OVERLAPS predicate - // ------------------------------------------------------------------------ - - /** - * Check if this row value expression overlaps another row value expression. - *

- * The SQL standard specifies a temporal OVERLAPS predicate, - * which comes in two flavours: - *

    - *
  • (DATE, DATE) OVERLAPS (DATE, DATE)
  • - *
  • (DATE, INTERVAL) OVERLAPS (DATE, INTERVAL)
  • - *
- *

- * jOOQ also supports arbitrary 2-degree row value expression comparisons, - * by simulating them as such

-                 * -- This predicate
-                 * (A, B) OVERLAPS (C, D)
-                 *
-                 * -- can be simulated as such
-                 * (C <= B) AND (A <= D)
-                 * 
- */ - @Support - Condition overlaps(T1 t1, T2 t2); - - /** - * Check if this row value expression overlaps another row value expression. - *

- * The SQL standard specifies a temporal OVERLAPS predicate, - * which comes in two flavours: - *

    - *
  • (DATE, DATE) OVERLAPS (DATE, DATE)
  • - *
  • (DATE, INTERVAL) OVERLAPS (DATE, INTERVAL)
  • - *
- *

- * jOOQ also supports arbitrary 2-degree row value expression comparisons, - * by simulating them as such

-                 * -- This predicate
-                 * (A, B) OVERLAPS (C, D)
-                 *
-                 * -- can be simulated as such
-                 * (C <= B) AND (A <= D)
-                 * 
- */ - @Support - Condition overlaps(Field t1, Field t2); - - /** - * Check if this row value expression overlaps another row value expression. - *

- * The SQL standard specifies a temporal OVERLAPS predicate, - * which comes in two flavours: - *

    - *
  • (DATE, DATE) OVERLAPS (DATE, DATE)
  • - *
  • (DATE, INTERVAL) OVERLAPS (DATE, INTERVAL)
  • - *
- *

- * jOOQ also supports arbitrary 2-degree row value expression comparisons, - * by simulating them as such

-                 * -- This predicate
-                 * (A, B) OVERLAPS (C, D)
-                 *
-                 * -- can be simulated as such
-                 * (C <= B) AND (A <= D)
-                 * 
- */ - @Support - Condition overlaps(Row2 row); - - «ENDIF» - } - '''); - - write("org.jooq.Row" + degreeOrN(degree), out); - } - } - - def generateRowImpl() { - val out = new StringBuilder(); - - out.append(''' - «classHeader» - package org.jooq.impl; - - import static org.jooq.Clause.FIELD_ROW; - import static org.jooq.impl.DSL.row; - - import java.util.Arrays; - import java.util.Collection; - - import javax.annotation.Generated; - - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - import org.jooq.BetweenAndStep«typeSuffixRaw(degree)»; - «ENDFOR» - import org.jooq.BindContext; - import org.jooq.Clause; - import org.jooq.Comparator; - import org.jooq.Condition; - import org.jooq.Context; - import org.jooq.DataType; - import org.jooq.Field; - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - import org.jooq.Record«recTypeSuffixRaw(degree)»; - «ENDFOR» - import org.jooq.RenderContext; - import org.jooq.Row; - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - import org.jooq.Row«typeSuffixRaw(degree)»; - «ENDFOR» - import org.jooq.Select; - - /** - * @author Lukas Eder - */ - «generatedAnnotation» - @SuppressWarnings({ "rawtypes", "unchecked" }) - class RowImpl<«TN(Constants::MAX_ROW_DEGREE)»> extends AbstractQueryPart - implements - - // This row implementation implements all row types. Type-safety is - // being checked through the type-safe API. No need for further checks here - «FOR degree : (0..Constants::MAX_ROW_DEGREE) SEPARATOR ','» - Row«typeSuffix(degree)» - «ENDFOR» - { - - /** - * Generated UID - */ - private static final long serialVersionUID = -929427349071556318L; - private static final Clause[] CLAUSES = { FIELD_ROW }; - - final Fields fields; - - RowImpl(Field... fields) { - this(new Fields(fields)); - } - - RowImpl(Collection> fields) { - this(new Fields(fields)); - } - - RowImpl(Fields fields) { - super(); - - this.fields = fields; - } - - // ------------------------------------------------------------------------ - // XXX: QueryPart API - // ------------------------------------------------------------------------ - - @Override - public final void toSQL(RenderContext context) { - context.sql("("); - - String separator = ""; - for (Field field : fields.fields) { - context.sql(separator); - context.visit(field); - - separator = ", "; - } - - context.sql(")"); - } - - @Override - public final void bind(BindContext context) { - context.visit(fields); - } - - @Override - public final Clause[] clauses(Context ctx) { - return CLAUSES; - } - - // ------------------------------------------------------------------------ - // XXX: Row accessor API - // ------------------------------------------------------------------------ - - @Override - public final int size() { - return fields.size(); - } - - @Override - public final Field field(Field field) { - return fields.field(field); - } - - @Override - public final Field field(String name) { - return fields.field(name); - } - - @Override - public final Field field(int index) { - return fields.field(index); - } - - @Override - public final Field[] fields() { - return fields.fields(); - } - - @Override - public final Field[] fields(Field... f) { - return fields.fields(f); - } - - @Override - public final Field[] fields(String... fieldNames) { - return fields.fields(fieldNames); - } - - @Override - public final Field[] fields(int... fieldIndexes) { - return fields.fields(fieldIndexes); - } - - @Override - public final int indexOf(Field field) { - return fields.indexOf(field); - } - - @Override - public final int indexOf(String fieldName) { - return fields.indexOf(fieldName); - } - - @Override - public final Class[] types() { - return fields.types(); - } - - @Override - public final Class type(int fieldIndex) { - return fields.type(fieldIndex); - } - - @Override - public final Class type(String fieldName) { - return fields.type(fieldName); - } - - @Override - public final DataType[] dataTypes() { - return fields.dataTypes(); - } - - @Override - public final DataType dataType(int fieldIndex) { - return fields.dataType(fieldIndex); - } - - @Override - public final DataType dataType(String fieldName) { - return fields.dataType(fieldName); - } - «FOR degree : (1..Constants::MAX_ROW_DEGREE)» - - @Override - public final Field field«degree»() { - return fields.field(«degree - 1»); - } - «ENDFOR» - - // ------------------------------------------------------------------------ - // [NOT] NULL predicates - // ------------------------------------------------------------------------ - - @Override - public final Condition isNull() { - return new RowIsNull(this, true); - } - - @Override - public final Condition isNotNull() { - return new RowIsNull(this, false); - } - - // ------------------------------------------------------------------------ - // Generic comparison predicates - // ------------------------------------------------------------------------ - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition compare(Comparator comparator, Row«typeSuffix(degree)» row) { - return new RowCondition(this, row, comparator); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition compare(Comparator comparator, Record«recTypeSuffix(degree)» record) { - return new RowCondition(this, record.valuesRow(), comparator); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition compare(Comparator comparator, «TN_tn(degree)») { - return compare(comparator, row(«tn(degree)»)); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition compare(Comparator comparator, «Field_TN_tn(degree)») { - return compare(comparator, row(«tn(degree)»)); - } - «ENDFOR» - - // ------------------------------------------------------------------------ - // Equal / Not equal comparison predicates - // ------------------------------------------------------------------------ - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition equal(Row«typeSuffix(degree)» row) { - return compare(Comparator.EQUALS, row); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition equal(Record«recTypeSuffix(degree)» record) { - return compare(Comparator.EQUALS, record); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition equal(«TN_tn(degree)») { - return compare(Comparator.EQUALS, «tn(degree)»); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition equal(«Field_TN_tn(degree)») { - return compare(Comparator.EQUALS, «tn(degree)»); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition eq(Row«typeSuffix(degree)» row) { - return equal(row); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition eq(Record«recTypeSuffix(degree)» record) { - return equal(record); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition eq(«TN_tn(degree)») { - return equal(«tn(degree)»); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition eq(«Field_TN_tn(degree)») { - return equal(«tn(degree)»); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition notEqual(Row«typeSuffix(degree)» row) { - return compare(Comparator.NOT_EQUALS, row); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition notEqual(Record«recTypeSuffix(degree)» record) { - return compare(Comparator.NOT_EQUALS, record); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition notEqual(«TN_tn(degree)») { - return compare(Comparator.NOT_EQUALS, «tn(degree)»); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition notEqual(«Field_TN_tn(degree)») { - return compare(Comparator.NOT_EQUALS, «tn(degree)»); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition ne(Row«typeSuffix(degree)» row) { - return notEqual(row); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition ne(Record«recTypeSuffix(degree)» record) { - return notEqual(record); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition ne(«TN_tn(degree)») { - return notEqual(«tn(degree)»); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition ne(«Field_TN_tn(degree)») { - return notEqual(«tn(degree)»); - } - «ENDFOR» - - // ------------------------------------------------------------------------ - // Ordering comparison predicates - // ------------------------------------------------------------------------ - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition lessThan(Row«typeSuffix(degree)» row) { - return compare(Comparator.LESS, row); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition lessThan(Record«recTypeSuffix(degree)» record) { - return compare(Comparator.LESS, record); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition lessThan(«TN_tn(degree)») { - return compare(Comparator.LESS, «tn(degree)»); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition lessThan(«Field_TN_tn(degree)») { - return compare(Comparator.LESS, «tn(degree)»); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition lt(Row«typeSuffix(degree)» row) { - return lessThan(row); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition lt(Record«recTypeSuffix(degree)» record) { - return lessThan(record); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition lt(«TN_tn(degree)») { - return lessThan(«tn(degree)»); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition lt(«Field_TN_tn(degree)») { - return lessThan(«tn(degree)»); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition lessOrEqual(Row«typeSuffix(degree)» row) { - return compare(Comparator.LESS_OR_EQUAL, row); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition lessOrEqual(Record«recTypeSuffix(degree)» record) { - return compare(Comparator.LESS_OR_EQUAL, record); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition lessOrEqual(«TN_tn(degree)») { - return compare(Comparator.LESS_OR_EQUAL, «tn(degree)»); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition lessOrEqual(«Field_TN_tn(degree)») { - return compare(Comparator.LESS_OR_EQUAL, «tn(degree)»); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition le(Row«typeSuffix(degree)» row) { - return lessOrEqual(row); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition le(Record«recTypeSuffix(degree)» record) { - return lessOrEqual(record); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition le(«TN_tn(degree)») { - return lessOrEqual(«tn(degree)»); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition le(«Field_TN_tn(degree)») { - return lessOrEqual(«tn(degree)»); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition greaterThan(Row«typeSuffix(degree)» row) { - return compare(Comparator.GREATER, row); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition greaterThan(Record«recTypeSuffix(degree)» record) { - return compare(Comparator.GREATER, record); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition greaterThan(«TN_tn(degree)») { - return compare(Comparator.GREATER, «tn(degree)»); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition greaterThan(«Field_TN_tn(degree)») { - return compare(Comparator.GREATER, «tn(degree)»); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition gt(Row«typeSuffix(degree)» row) { - return greaterThan(row); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition gt(Record«recTypeSuffix(degree)» record) { - return greaterThan(record); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition gt(«TN_tn(degree)») { - return greaterThan(«tn(degree)»); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition gt(«Field_TN_tn(degree)») { - return greaterThan(«tn(degree)»); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition greaterOrEqual(Row«typeSuffix(degree)» row) { - return compare(Comparator.GREATER_OR_EQUAL, row); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition greaterOrEqual(Record«recTypeSuffix(degree)» record) { - return compare(Comparator.GREATER_OR_EQUAL, record); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition greaterOrEqual(«TN_tn(degree)») { - return compare(Comparator.GREATER_OR_EQUAL, «tn(degree)»); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition greaterOrEqual(«Field_TN_tn(degree)») { - return compare(Comparator.GREATER_OR_EQUAL, «tn(degree)»); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition ge(Row«typeSuffix(degree)» row) { - return greaterOrEqual(row); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition ge(Record«recTypeSuffix(degree)» record) { - return greaterOrEqual(record); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition ge(«TN_tn(degree)») { - return greaterOrEqual(«tn(degree)»); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition ge(«Field_TN_tn(degree)») { - return greaterOrEqual(«tn(degree)»); - } - «ENDFOR» - - // ------------------------------------------------------------------------ - // [NOT] BETWEEN predicates - // ------------------------------------------------------------------------ - «FOR keyword : newArrayList("between", "betweenSymmetric", "notBetween", "notBetweenSymmetric")» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final BetweenAndStep«typeSuffix(degree)» «keyword»(«TN_tn(degree)») { - return «keyword»(row(«tn(degree)»)); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final BetweenAndStep«typeSuffix(degree)» «keyword»(«Field_TN_tn(degree)») { - return «keyword»(row(«tn(degree)»)); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final BetweenAndStep«typeSuffix(degree)» «keyword»(Row«typeSuffix(degree)» row) { - return new RowBetweenCondition(this, row, «keyword.startsWith("not")», «keyword.endsWith("Symmetric")»); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final BetweenAndStep«typeSuffix(degree)» «keyword»(Record«recTypeSuffix(degree)» record) { - return «keyword»(record.valuesRow()); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition «keyword»(Row«typeSuffix(degree)» minValue, Row«typeSuffix(degree)» maxValue) { - return «keyword»(minValue).and(maxValue); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition «keyword»(Record«recTypeSuffix(degree)» minValue, Record«recTypeSuffix(degree)» maxValue) { - return «keyword»(minValue).and(maxValue); - } - «ENDFOR» - «ENDFOR» - - // ------------------------------------------------------------------------ - // [NOT] DISTINCT predicates - // ------------------------------------------------------------------------ - - // ------------------------------------------------------------------------ - // [NOT] IN predicates - // ------------------------------------------------------------------------ - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition in(Row«typeSuffix(degree)»... rows) { - return in(Arrays.asList(rows)); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition in(Record«recTypeSuffix(degree)»... records) { - Row«typeSuffix(degree)»[] rows = new Row«typeSuffixRaw(degree)»[records.length]; - - for (int i = 0; i < records.length; i++) { - rows[i] = «IF degree == 0»(RowN) «ENDIF»records[i].valuesRow(); - } - - return in(rows); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition notIn(Row«typeSuffix(degree)»... rows) { - return notIn(Arrays.asList(rows)); - } - «ENDFOR» - «FOR degree : (0..Constants::MAX_ROW_DEGREE)» - - @Override - public final Condition notIn(Record«recTypeSuffix(degree)»... records) { - Row«typeSuffix(degree)»[] rows = new Row«typeSuffixRaw(degree)»[records.length]; - - for (int i = 0; i < records.length; i++) { - rows[i] = «IF degree == 0»(RowN) «ENDIF»records[i].valuesRow(); - } - - return notIn(rows); - } - «ENDFOR» - - @Override - public final Condition in(Collection rows) { - QueryPartList list = new QueryPartList(rows); - return new RowInCondition(this, list, Comparator.IN); - } - - @Override - public final Condition notIn(Collection rows) { - QueryPartList list = new QueryPartList(rows); - return new RowInCondition(this, list, Comparator.NOT_IN); - } - - // ------------------------------------------------------------------------ - // Predicates involving subqueries - // ------------------------------------------------------------------------ - - @Override - public final Condition equal(Select select) { - return new RowSubqueryCondition(this, select, Comparator.EQUALS); - } - - @Override - public final Condition eq(Select select) { - return equal(select); - } - - @Override - public final Condition notEqual(Select select) { - return new RowSubqueryCondition(this, select, Comparator.NOT_EQUALS); - } - - @Override - public final Condition ne(Select select) { - return notEqual(select); - } - - @Override - public final Condition greaterThan(Select select) { - return new RowSubqueryCondition(this, select, Comparator.GREATER); - } - - @Override - public final Condition gt(Select select) { - return greaterThan(select); - } - - @Override - public final Condition greaterOrEqual(Select select) { - return new RowSubqueryCondition(this, select, Comparator.GREATER_OR_EQUAL); - } - - @Override - public final Condition ge(Select select) { - return greaterOrEqual(select); - } - - @Override - public final Condition lessThan(Select select) { - return new RowSubqueryCondition(this, select, Comparator.LESS); - } - - @Override - public final Condition lt(Select select) { - return lessThan(select); - } - - @Override - public final Condition lessOrEqual(Select select) { - return new RowSubqueryCondition(this, select, Comparator.LESS_OR_EQUAL); - } - - @Override - public final Condition le(Select select) { - return lessOrEqual(select); - } - - @Override - public final Condition in(Select select) { - return new RowSubqueryCondition(this, select, Comparator.IN); - } - - @Override - public final Condition notIn(Select select) { - return new RowSubqueryCondition(this, select, Comparator.NOT_IN); - } - - // ------------------------------------------------------------------------ - // XXX: Row2 API - // ------------------------------------------------------------------------ - - @Override - public final Condition overlaps(T1 t1, T2 t2) { - return overlaps(row(t1, t2)); - } - - @Override - public final Condition overlaps(Field t1, Field t2) { - return overlaps(row(t1, t2)); - } - - @Override - public final Condition overlaps(Row2 row) { - return new RowOverlapsCondition(this, row); - } - } - '''); - - write("org.jooq.impl.RowImpl", out); - } -} diff --git a/jOOQ-tools/src/org/jooq/xtend/UpdateDSL.xtend b/jOOQ-tools/src/org/jooq/xtend/UpdateDSL.xtend deleted file mode 100644 index 4fa11ca274..0000000000 --- a/jOOQ-tools/src/org/jooq/xtend/UpdateDSL.xtend +++ /dev/null @@ -1,212 +0,0 @@ -/** - * Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com) - * All rights reserved. - * - * This work is dual-licensed - * - under the Apache Software License 2.0 (the "ASL") - * - under the jOOQ License and Maintenance Agreement (the "jOOQ License") - * ============================================================================= - * You may choose which license applies to you: - * - * - If you're using this work with Open Source databases, you may choose - * either ASL or jOOQ License. - * - If you're using this work with at least one commercial database, you must - * choose jOOQ License - * - * For more information, please visit http://www.jooq.org/licenses - * - * Apache Software License 2.0: - * ----------------------------------------------------------------------------- - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * jOOQ License and Maintenance Agreement: - * ----------------------------------------------------------------------------- - * Data Geekery grants the Customer the non-exclusive, timely limited and - * non-transferable license to install and use the Software under the terms of - * the jOOQ License and Maintenance Agreement. - * - * This library is distributed with a LIMITED WARRANTY. See the jOOQ License - * and Maintenance Agreement for more details: http://www.jooq.org/licensing - */ -package org.jooq.xtend - -import org.jooq.Constants - -/** - * @author Lukas Eder - */ -class UpdateDSL extends Generators { - - def static void main(String[] args) { - val update = new UpdateDSL(); - update.generateUpdateQuery(); - update.generateUpdateQueryImpl(); - update.generateUpdateSetFirstStep(); - update.generateUpdateImpl(); - } - - def generateUpdateQuery() { - val out = new StringBuilder(); - - out.append(''' - «FOR degree : (1..Constants::MAX_ROW_DEGREE)» - - /** - * Specify a multi-column set clause for the UPDATE statement. - */ - «generatedMethod» - @Support({ DB2, H2, HSQLDB, INGRES, ORACLE, POSTGRES }) - <«TN(degree)»> void addValues(Row«degree»<«TN(degree)»> row, Row«degree»<«TN(degree)»> value); - «ENDFOR» - «FOR degree : (1..Constants::MAX_ROW_DEGREE)» - - /** - * Specify a multi-column set clause for the UPDATE statement. - */ - «generatedMethod» - @Support({ DB2, H2, HSQLDB, INGRES, ORACLE }) - <«TN(degree)»> void addValues(Row«degree»<«TN(degree)»> row, Select> select); - «ENDFOR» - '''); - - insert("org.jooq.UpdateQuery", out, "addValues"); - } - - def generateUpdateQueryImpl() { - val out = new StringBuilder(); - - out.append(''' - «FOR degree : (1..Constants::MAX_ROW_DEGREE)» - - «generatedMethod» - @Override - public final <«TN(degree)»> void addValues(Row«degree»<«TN(degree)»> row, Row«degree»<«TN(degree)»> value) { - addValues0(row, value); - } - «ENDFOR» - «FOR degree : (1..Constants::MAX_ROW_DEGREE)» - - «generatedMethod» - @Override - public final <«TN(degree)»> void addValues(Row«degree»<«TN(degree)»> row, Select> select) { - addValues0(row, select); - } - «ENDFOR» - '''); - - insert("org.jooq.impl.UpdateQueryImpl", out, "addValues"); - } - - def generateUpdateSetFirstStep() { - val out = new StringBuilder(); - - out.append(''' - «classHeader» - package org.jooq; - - import static org.jooq.SQLDialect.DB2; - import static org.jooq.SQLDialect.H2; - import static org.jooq.SQLDialect.HSQLDB; - import static org.jooq.SQLDialect.INGRES; - import static org.jooq.SQLDialect.ORACLE; - import static org.jooq.SQLDialect.POSTGRES; - - import javax.annotation.Generated; - - import org.jooq.api.annotation.State; - import org.jooq.api.annotation.Transition; - - /** - * This type is used for the {@link Update}'s DSL API. - *

- * Example:

-         * using(configuration)
-         *       .update(table)
-         *       .set(field1, value1)
-         *       .set(field2, value2)
-         *       .where(field1.greaterThan(100))
-         *       .execute();
-         * 
- * - * @author Lukas Eder - */ - «generatedAnnotation» - @State - public interface UpdateSetFirstStep extends UpdateSetStep { - «FOR degree : (1..Constants::MAX_ROW_DEGREE)» - - /** - * Specify a multi-column set clause for the UPDATE statement. - *

- * This is simulated using a subquery for the value, where row - * value expressions aren't supported. - */ - @Support({ DB2, H2, HSQLDB, INGRES, ORACLE, POSTGRES }) - @Transition( - name = "SET", - args = { - "Row", - "Row" - } - ) - <«TN(degree)»> UpdateWhereStep set(Row«degree»<«TN(degree)»> row, Row«degree»<«TN(degree)»> value); - «ENDFOR» - «FOR degree : (1..Constants::MAX_ROW_DEGREE)» - - /** - * Specify a multi-column set clause for the UPDATE statement. - */ - @Support({ DB2, H2, HSQLDB, INGRES, ORACLE }) - @Transition( - name = "SET", - args = { - "Row", - "Select" - } - ) - <«TN(degree)»> UpdateWhereStep set(Row«degree»<«TN(degree)»> row, Select> select); - «ENDFOR» - - } - '''); - - write("org.jooq.UpdateSetFirstStep", out); - } - - def generateUpdateImpl() { - val out = new StringBuilder(); - - out.append(''' - «FOR degree : (1..Constants::MAX_ROW_DEGREE)» - - «generatedMethod» - @Override - public final <«TN(degree)»> UpdateWhereStep set(Row«degree»<«TN(degree)»> row, Row«degree»<«TN(degree)»> value) { - getDelegate().addValues(row, value); - return this; - } - «ENDFOR» - «FOR degree : (1..Constants::MAX_ROW_DEGREE)» - - «generatedMethod» - @Override - public final <«TN(degree)»> UpdateWhereStep set(Row«degree»<«TN(degree)»> row, Select> select) { - getDelegate().addValues(row, select); - return this; - } - «ENDFOR» - '''); - - insert("org.jooq.impl.UpdateImpl", out, "set"); - } -} \ No newline at end of file diff --git a/jOOQ-tools/src/org/jooq/xtend/Util.java b/jOOQ-tools/src/org/jooq/xtend/Util.java deleted file mode 100644 index 3c2dd94e91..0000000000 --- a/jOOQ-tools/src/org/jooq/xtend/Util.java +++ /dev/null @@ -1,49 +0,0 @@ -/** - * Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com) - * All rights reserved. - * - * This work is dual-licensed - * - under the Apache Software License 2.0 (the "ASL") - * - under the jOOQ License and Maintenance Agreement (the "jOOQ License") - * ============================================================================= - * You may choose which license applies to you: - * - * - If you're using this work with Open Source databases, you may choose - * either ASL or jOOQ License. - * - If you're using this work with at least one commercial database, you must - * choose jOOQ License - * - * For more information, please visit http://www.jooq.org/licenses - * - * Apache Software License 2.0: - * ----------------------------------------------------------------------------- - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * jOOQ License and Maintenance Agreement: - * ----------------------------------------------------------------------------- - * Data Geekery grants the Customer the non-exclusive, timely limited and - * non-transferable license to install and use the Software under the terms of - * the jOOQ License and Maintenance Agreement. - * - * This library is distributed with a LIMITED WARRANTY. See the jOOQ License - * and Maintenance Agreement for more details: http://www.jooq.org/licensing - */ -package org.jooq.xtend; - -public class Util { - - public static byte[] newByteArray(long length) { - // Xtend seems incapable of doing this: - return new byte[(int) length]; - } -} diff --git a/jOOQ-website/.classpath b/jOOQ-website/.classpath deleted file mode 100644 index 9352932b55..0000000000 --- a/jOOQ-website/.classpath +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/jOOQ-website/.gitignore b/jOOQ-website/.gitignore deleted file mode 100644 index 13a0a25e02..0000000000 --- a/jOOQ-website/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -/target -/manual -/manual-pdf -/manual-single-page -/doc -/access.php diff --git a/jOOQ-website/.htaccess b/jOOQ-website/.htaccess deleted file mode 100644 index e43e067c9e..0000000000 --- a/jOOQ-website/.htaccess +++ /dev/null @@ -1,49 +0,0 @@ -################################## Errors ###################################### -#ErrorDocument 301 /e/301-moved_permanently.html -#ErrorDocument 302 /e/302-moved_temporarily.html -#ErrorDocument 303 /e/303-see_other.html -#ErrorDocument 400 /e/400-bad_request.html -ErrorDocument 401 /e/401-authorization_required.html -#ErrorDocument 402 /e/402-payment_required.html -ErrorDocument 403 /e/403-forbidden.html -ErrorDocument 404 /e/404-not_found.html -#ErrorDocument 405 /e/405-method_not_allowed.html -#ErrorDocument 406 /e/406-not_acceptable.html -#ErrorDocument 407 /e/407-proxy_authentication_required.html -ErrorDocument 408 /e/408-request_timed_out.html -#ErrorDocument 409 /e/409-conflicting_request.html -#ErrorDocument 410 /e/410-gone.html -#ErrorDocument 411 /e/411-content_length_required.html -#ErrorDocument 412 /e/412-precondition_failed.html -#ErrorDocument 413 /e/413-request_entity_too_long.html -#ErrorDocument 414 /e/414-request_uri_too_long.html -#ErrorDocument 415 /e/415-unsupported_media_type.html -ErrorDocument 500 /e/500-internal_server_error.html -#ErrorDocument 501 /e/501-not_implemented.html -#ErrorDocument 502 /e/502-bad_gateway.html -ErrorDocument 503 /e/503-service_unavailable.html -#ErrorDocument 504 /e/504-gateway_timeout.html -#ErrorDocument 505 /e/505-http_version_not_supported.html -################################################################################ - -#Create uniform manual URLs, also for 2.4 manual -RewriteEngine On -RewriteBase / -RewriteRule ^manual(.*)$ doc/2.4/manual$1 [L,R=301] -RewriteRule ^doc/latest/manual([^/]*)/(.*)$ doc/3.0/manual$1/$2 [L,R=307] - -RewriteCond %{SCRIPT_FILENAME} !-d -RewriteCond %{SCRIPT_FILENAME} !-f - -# Create vanity URLS, mapping non-existing directories to equivalent .php files -RewriteRule ^.*?$ $0.php - -# Rewrite datageekery.com to subdirectory -RewriteCond %{REQUEST_URI} !^/datageekery.com/ -RewriteCond %{HTTP_HOST} ^(www\.)?datageekery.com [NC] -RewriteRule ^(.*)$ /datageekery.com/$1 - - -Order Allow,Deny -Deny from all - \ No newline at end of file diff --git a/jOOQ-website/.project b/jOOQ-website/.project deleted file mode 100644 index 08bfce2bfb..0000000000 --- a/jOOQ-website/.project +++ /dev/null @@ -1,29 +0,0 @@ - - - jOOQ-website - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.m2e.core.maven2Builder - - - - - org.maven.ide.eclipse.maven2Builder - - - - - - org.maven.ide.eclipse.maven2Nature - org.eclipse.m2e.core.maven2Nature - org.eclipse.jdt.core.javanature - - diff --git a/jOOQ-website/.settings/org.eclipse.jdt.core.prefs b/jOOQ-website/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 1d48cf419d..0000000000 --- a/jOOQ-website/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,382 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore -org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull -org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault -org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable -org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.6 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.doc.comment.support=enabled -org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.autoboxing=ignore -org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning -org.eclipse.jdt.core.compiler.problem.deadCode=warning -org.eclipse.jdt.core.compiler.problem.deprecation=warning -org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled -org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled -org.eclipse.jdt.core.compiler.problem.discouragedReference=warning -org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore -org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore -org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled -org.eclipse.jdt.core.compiler.problem.fieldHiding=warning -org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning -org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning -org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning -org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning -org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled -org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning -org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore -org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore -org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning -org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled -org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=enabled -org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled -org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected -org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning -org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning -org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore -org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning -org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled -org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore -org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore -org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled -org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public -org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=all_standard_tags -org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore -org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled -org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled -org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public -org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning -org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled -org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning -org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=warning -org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning -org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning -org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore -org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error -org.eclipse.jdt.core.compiler.problem.nullReference=error -org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error -org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning -org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning -org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore -org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning -org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning -org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore -org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning -org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning -org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning -org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore -org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning -org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore -org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore -org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled -org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning -org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled -org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled -org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore -org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning -org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled -org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning -org.eclipse.jdt.core.compiler.problem.unclosedCloseable=ignore -org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore -org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning -org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore -org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning -org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled -org.eclipse.jdt.core.compiler.problem.unusedImport=warning -org.eclipse.jdt.core.compiler.problem.unusedLabel=warning -org.eclipse.jdt.core.compiler.problem.unusedLocal=warning -org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore -org.eclipse.jdt.core.compiler.problem.unusedParameter=warning -org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled -org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled -org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled -org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning -org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning -org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning -org.eclipse.jdt.core.compiler.source=1.6 -org.eclipse.jdt.core.formatter.align_type_members_on_columns=true -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_assignment=0 -org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 -org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 -org.eclipse.jdt.core.formatter.alignment_for_enum_constants=49 -org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 -org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0 -org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 -org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_after_package=1 -org.eclipse.jdt.core.formatter.blank_lines_before_field=0 -org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 -org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 -org.eclipse.jdt.core.formatter.blank_lines_before_method=1 -org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 -org.eclipse.jdt.core.formatter.blank_lines_before_package=0 -org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 -org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 -org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true -org.eclipse.jdt.core.formatter.comment.format_block_comments=true -org.eclipse.jdt.core.formatter.comment.format_header=false -org.eclipse.jdt.core.formatter.comment.format_html=true -org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true -org.eclipse.jdt.core.formatter.comment.format_line_comments=true -org.eclipse.jdt.core.formatter.comment.format_source_code=true -org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true -org.eclipse.jdt.core.formatter.comment.indent_root_tags=true -org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert -org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert -org.eclipse.jdt.core.formatter.comment.line_length=80 -org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true -org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true -org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false -org.eclipse.jdt.core.formatter.compact_else_if=true -org.eclipse.jdt.core.formatter.continuation_indentation=1 -org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=1 -org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off -org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on -org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false -org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true -org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_empty_lines=false -org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true -org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true -org.eclipse.jdt.core.formatter.indentation.size=4 -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert -org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert -org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=insert -org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=insert -org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert -org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.join_lines_in_comments=true -org.eclipse.jdt.core.formatter.join_wrapped_lines=true -org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false -org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false -org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false -org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false -org.eclipse.jdt.core.formatter.lineSplit=120 -org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false -org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 -org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 -org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true -org.eclipse.jdt.core.formatter.tabulation.char=space -org.eclipse.jdt.core.formatter.tabulation.size=4 -org.eclipse.jdt.core.formatter.use_on_off_tags=false -org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false -org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true -org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true diff --git a/jOOQ-website/.settings/org.eclipse.jdt.ui.prefs b/jOOQ-website/.settings/org.eclipse.jdt.ui.prefs deleted file mode 100644 index e0c272bb40..0000000000 --- a/jOOQ-website/.settings/org.eclipse.jdt.ui.prefs +++ /dev/null @@ -1,115 +0,0 @@ -cleanup.add_default_serial_version_id=false -cleanup.add_generated_serial_version_id=true -cleanup.add_missing_annotations=true -cleanup.add_missing_deprecated_annotations=true -cleanup.add_missing_methods=false -cleanup.add_missing_nls_tags=false -cleanup.add_missing_override_annotations=true -cleanup.add_missing_override_annotations_interface_methods=true -cleanup.add_serial_version_id=true -cleanup.always_use_blocks=true -cleanup.always_use_parentheses_in_expressions=false -cleanup.always_use_this_for_non_static_field_access=true -cleanup.always_use_this_for_non_static_method_access=false -cleanup.convert_to_enhanced_for_loop=false -cleanup.correct_indentation=true -cleanup.format_source_code=false -cleanup.format_source_code_changes_only=false -cleanup.make_local_variable_final=true -cleanup.make_parameters_final=false -cleanup.make_private_fields_final=true -cleanup.make_type_abstract_if_missing_method=false -cleanup.make_variable_declarations_final=false -cleanup.never_use_blocks=false -cleanup.never_use_parentheses_in_expressions=true -cleanup.organize_imports=true -cleanup.qualify_static_field_accesses_with_declaring_class=false -cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true -cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true -cleanup.qualify_static_member_accesses_with_declaring_class=true -cleanup.qualify_static_method_accesses_with_declaring_class=false -cleanup.remove_private_constructors=true -cleanup.remove_trailing_whitespaces=true -cleanup.remove_trailing_whitespaces_all=true -cleanup.remove_trailing_whitespaces_ignore_empty=false -cleanup.remove_unnecessary_casts=true -cleanup.remove_unnecessary_nls_tags=true -cleanup.remove_unused_imports=true -cleanup.remove_unused_local_variables=false -cleanup.remove_unused_private_fields=true -cleanup.remove_unused_private_members=false -cleanup.remove_unused_private_methods=true -cleanup.remove_unused_private_types=true -cleanup.sort_members=false -cleanup.sort_members_all=false -cleanup.use_blocks=true -cleanup.use_blocks_only_for_return_and_throw=false -cleanup.use_parentheses_in_expressions=false -cleanup.use_this_for_non_static_field_access=false -cleanup.use_this_for_non_static_field_access_only_if_necessary=false -cleanup.use_this_for_non_static_method_access=false -cleanup.use_this_for_non_static_method_access_only_if_necessary=true -cleanup_profile=_jOOQ -cleanup_settings_version=2 -eclipse.preferences.version=1 -editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true -formatter_profile=_jOOQ -formatter_settings_version=12 -org.eclipse.jdt.ui.ignorelowercasenames=true -org.eclipse.jdt.ui.importorder=java;javax;org.jooq;org;com; -org.eclipse.jdt.ui.javadoc=false -org.eclipse.jdt.ui.ondemandthreshold=99999 -org.eclipse.jdt.ui.staticondemandthreshold=99999 -org.eclipse.jdt.ui.text.custom_code_templates= -sp_cleanup.add_default_serial_version_id=true -sp_cleanup.add_generated_serial_version_id=false -sp_cleanup.add_missing_annotations=true -sp_cleanup.add_missing_deprecated_annotations=true -sp_cleanup.add_missing_methods=false -sp_cleanup.add_missing_nls_tags=false -sp_cleanup.add_missing_override_annotations=true -sp_cleanup.add_missing_override_annotations_interface_methods=true -sp_cleanup.add_serial_version_id=false -sp_cleanup.always_use_blocks=true -sp_cleanup.always_use_parentheses_in_expressions=false -sp_cleanup.always_use_this_for_non_static_field_access=false -sp_cleanup.always_use_this_for_non_static_method_access=false -sp_cleanup.convert_to_enhanced_for_loop=false -sp_cleanup.correct_indentation=false -sp_cleanup.format_source_code=false -sp_cleanup.format_source_code_changes_only=false -sp_cleanup.make_local_variable_final=false -sp_cleanup.make_parameters_final=false -sp_cleanup.make_private_fields_final=true -sp_cleanup.make_type_abstract_if_missing_method=false -sp_cleanup.make_variable_declarations_final=false -sp_cleanup.never_use_blocks=false -sp_cleanup.never_use_parentheses_in_expressions=true -sp_cleanup.on_save_use_additional_actions=true -sp_cleanup.organize_imports=true -sp_cleanup.qualify_static_field_accesses_with_declaring_class=false -sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true -sp_cleanup.qualify_static_member_accesses_with_declaring_class=false -sp_cleanup.qualify_static_method_accesses_with_declaring_class=false -sp_cleanup.remove_private_constructors=true -sp_cleanup.remove_trailing_whitespaces=true -sp_cleanup.remove_trailing_whitespaces_all=true -sp_cleanup.remove_trailing_whitespaces_ignore_empty=false -sp_cleanup.remove_unnecessary_casts=true -sp_cleanup.remove_unnecessary_nls_tags=false -sp_cleanup.remove_unused_imports=true -sp_cleanup.remove_unused_local_variables=false -sp_cleanup.remove_unused_private_fields=true -sp_cleanup.remove_unused_private_members=false -sp_cleanup.remove_unused_private_methods=true -sp_cleanup.remove_unused_private_types=true -sp_cleanup.sort_members=false -sp_cleanup.sort_members_all=false -sp_cleanup.use_blocks=false -sp_cleanup.use_blocks_only_for_return_and_throw=false -sp_cleanup.use_parentheses_in_expressions=false -sp_cleanup.use_this_for_non_static_field_access=false -sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true -sp_cleanup.use_this_for_non_static_method_access=false -sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true diff --git a/jOOQ-website/.settings/org.eclipse.m2e.core.prefs b/jOOQ-website/.settings/org.eclipse.m2e.core.prefs deleted file mode 100644 index 14b697b7bb..0000000000 --- a/jOOQ-website/.settings/org.eclipse.m2e.core.prefs +++ /dev/null @@ -1,4 +0,0 @@ -activeProfiles= -eclipse.preferences.version=1 -resolveWorkspaceProjects=true -version=1 diff --git a/jOOQ-website/.settings/org.maven.ide.eclipse.prefs b/jOOQ-website/.settings/org.maven.ide.eclipse.prefs deleted file mode 100644 index c5172a20ac..0000000000 --- a/jOOQ-website/.settings/org.maven.ide.eclipse.prefs +++ /dev/null @@ -1,8 +0,0 @@ -#Sun Apr 10 10:03:42 CEST 2011 -activeProfiles= -eclipse.preferences.version=1 -fullBuildGoals=process-test-resources -resolveWorkspaceProjects=true -resourceFilterGoals=process-resources resources\:testResources -skipCompilerPlugin=true -version=1 diff --git a/jOOQ-website/MailChimp.class.php b/jOOQ-website/MailChimp.class.php deleted file mode 100644 index 8855ff9cbd..0000000000 --- a/jOOQ-website/MailChimp.class.php +++ /dev/null @@ -1,74 +0,0 @@ - - * @version 1.0 - */ -class MailChimp -{ - private $api_key; - private $api_endpoint = 'https://.api.mailchimp.com/2.0/'; - - - - /** - * Create a new instance - * @param string $api_key Your MailChimp API key - */ - function __construct($api_key) - { - $this->api_key = $api_key; - list(, $datacentre) = explode('-', $api_key); - $this->api_endpoint = str_replace('', $datacentre, $this->api_endpoint); - } - - - - - /** - * Call an API method. Every request needs the API key, so that is added automatically -- you don't need to pass it in. - * @param string $method The API method to call, e.g. 'lists/list' - * @param array $args An array of arguments to pass to the method. Will be json-encoded for you. - * @return array Associative array of json decoded API response. - */ - public function call($method, $args=array()) - { - return $this->_raw_request($method, $args); - } - - - - - /** - * Performs the underlying HTTP request. Not very exciting - * @param string $method The API method to be called - * @param array $args Assoc array of parameters to be passed - * @return array Assoc array of decoded result - */ - private function _raw_request($method, $args=array()) - { - $args['apikey'] = $this->api_key; - $url = $this->api_endpoint.'/'.$method.'.json'; - - $ch = curl_init(); - - curl_setopt($ch, CURLOPT_URL, $url); - curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - curl_setopt($ch, CURLOPT_TIMEOUT, 10); - curl_setopt($ch, CURLOPT_POST, true); - curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($args)); - $result = curl_exec($ch); - - $err = fopen('error.log', 'a'); - fwrite($err, curl_error($ch)); - fclose($err); - - curl_close($ch); - return $result ? json_decode($result, true) : false; - } -} \ No newline at end of file diff --git a/jOOQ-website/community.php b/jOOQ-website/community.php deleted file mode 100644 index ee3677251f..0000000000 --- a/jOOQ-website/community.php +++ /dev/null @@ -1,297 +0,0 @@ - - -

jOOQ lives from your feedback and support

-

-jOOQ is a very interactive project. It lives from your feedback and support. -There are many ways how you can contribute to the jOOQ community. -

- - - - - - - -
-

The technical community

-

Hall of Fame

-

-Passionate contributors have made jOOQ what it is. Here's a list of contributors -worth mentioning (in alphabetical order) -

-
    -
  • Aaron Digulla: jOOQ-codegen cleanup
  • -
  • Ben Manes: Gradle integration
  • -
  • Christopher Deckers: jOOQ-Console contribution
  • -
  • Christopher Klewes: Maven integration
  • -
  • Ed Schaller: Improvements to unsigned data types (jOOU)
  • -
  • Espen Stromsnes: DB2, H2, Sybase, and HSQLDB integrations
  • -
  • Florian Adler: jOOQ-minuteproject contribution
  • -
  • Ivan Dugic: Various GitHub ticket contributions
  • -
  • Lukas Eder: Project lead
  • -
  • Rakesh Waghela: Spreading the news
  • -
  • Robin Stocker: Git, GitHub, and Scala support
  • -
  • Sander Plas: jOOQ-codegen-maven, jOOQ-wicket contribution
  • -
  • Sergey Epik: jOOQ-spring contribution
  • -
  • Sugiharto Lim: Firebird integration
  • -
  • Vladislav "FractalizeR" Rastrusny: MySQL integration feedback
  • -
- -

You can contribute too!

-

-The easiest way to contribute is by providing feedback. Tell me, tell us, tell the world! -How to do it? Telling us:
-The jOOQ User Group

-Telling the world:
-http://stackoverflow.com/questions/tagged/jooq

-... or blog about jOOQ. Write articles! Advertise jOOQ! -

- - -

Contributing code

-

... or contribute code! If you want to share code, please follow these instructions

-
    -
  • If you haven't already, download Eclipse (Indigo or Juno) from http://www.eclipse.org/. While you could develop with other IDEs as well, you wouldn't profit from all the installed launch configurations, etc.
  • -
  • Be sure that you have http://www.eclipse.org/egit/ installed in your Eclipse distribution
  • -
  • Check out the codebase from GitHub: git@github.com:jOOQ/jOOQ.git
  • -
  • Import the jOOQ projects into Eclipse
  • -
  • If you haven't already, get M2E, the Eclipse Maven plugin to build jOOQ with Maven in Eclipse (The one from Sonatype, NOT the one from Eclipse)
  • -
  • Use the Eclipse formatting settings that have been checked in with the projects. Keeps the code nice and clean. Your code should not change (not much), if formatted with Ctrl-Shift-F. But don't format jOOQ DSL query code!
  • -
  • Send me your changes directly to the user group or in a GitHub ticket.
  • -
  • Send your changes as an Eclipse-compatible .patch file (or the sum of the modified Java classes). Ideally, the .patch file can be applied to the latest version of jOOQ on the SVN trunk.
  • -
  • I'll review, audit your changes and it goes into the repository with the next release, if I'm happy :-) AND: you'll make it to the hall of fame. Provide me with links to your webpage / blog / etc, if you would like to see that mentioned.
  • -
  • If you are a committer on GitHub, please commit with the following comment scheme:
    [#Issue-ID] GitHub-Ticket-Title - Your specific comment
  • -
- -

Hints for new features

- -

A lot of ideas are around already. Check out this GitHub Milestone to see some of them

- -

Hints for new database integrations

- -

Should you wish to provide an extension/support for a new RDBMS (such as Informix, Firebird, etc) your work would consist of these steps:

-
    -
  • Extend Eclipse .classpath files and .launch targets such that all developers are able to use your newly added database / JDBC drivers
  • -
  • Implement code generation for the new RDBMS. For that, you'll need to provide an implementation for AbstractDatabase in jOOQ-meta
  • -
  • Make the integration tests for the new RDBMS run.
  • -
- -

Or in more detail:

-

In detail, you have to do these steps:

-
    -
  • Migrate create.sql and reset.sql scripts to your dialect
  • -
  • Create the above schema (create.sql) and data (reset.sql) in your test database
  • -
  • Extend org.jooq.util.AbstractDatabase. Ideally, you'll use your own generated meta-schema classes and the jOOQ API to navigate through your RDBMS's meta-schema in order to discover your test schema. Apart from the integration tests, this adds an additional layer of "proof of concept". See for instance org.jooq.util.oracle.OracleDatabase, where rather complex nested queries are used to navigate through Oracle foreign key relationships.
  • -
  • For a minimal implementation, check out org.jooq.util.sqlite.SQLiteDatabase, which only implements loadPrimaryKeys0() and getTables0(). All other implementations are optional extensions.
  • -
-

Once you've done these steps, in order to be sure that everything works fine you'll also have to do this:

-
    -
  • Let jOOQ generate the integration test schema
  • -
  • Extend the org.jooq.test.jOOQAbstractTest for your RDBMS
  • -
  • Run the integration tests for your RDBMS
  • -
  • Fix all issues. You should get syntax errors, SQLDialectNotSupportedExceptions, etc
  • -
-

If you provide me with instructions how to set up your RDBMS instance and any partial implementation of the above, I'm going to take that into the jOOQ code base (giving you credit, of course) and guaranteeing implementation integrity in the future.

- -

So let's get to work, then! :-)

- -

Cheers, Lukas

-
-

The business community

-

Invest in jOOQ

-

-jOOQ is currently looking for partnerships. If you are a database vendor -or a software vendor and you wish to get basic or advanced support for your -specific database product integrated in jOOQ, or if you have any other specific -feature request, please contact me directly at -lukas.eder@gmail.com. -

- -

Advertise on www.jooq.org

-

-jOOQ has a growing community in dire need for good database products. Make -yourself heard to many database users! -

-
-
-
- - - -

Donations

-

-If you simply wish to -donate, -that is fine too. -

- -

The latest news, links

-

-Follow jOOQ on any of these channels to get the latest news: -

- - -

The jOOQ Brand

-

-Want to publish something about jOOQ? Use the official brand! Right-click on any image and -choose "Save As..." to store the image on your computer. -contact me for more specific formats: -

-

Logo (colour and b/w, 250x180):

- - - - - -
- - The jOOQ Logo 250x180 - - - - The jOOQ Logo 250x180 - -
- -

Logo (colour and b/w, 1024x768):

- - - - - -
- - The jOOQ Logo 1024x768 - - - - The jOOQ Logo 1024x768 - -
- -

Banner (colour and b/w, 1024x186):

- - The jOOQ Logo 1024x186 - - - -

Logo (colour and b/w, 220x220):

- - - - - -
- - The jOOQ Logo 250x180 - - - - The jOOQ Logo 250x180 - -
- -

jOOX Logo (colour, 1800x1800):

- - - - - -
- - The jOOQ Logo 1024x768 - - - - The jOOQ Logo 1024x768 - -
- -
- - diff --git a/jOOQ-website/conf.php b/jOOQ-website/conf.php deleted file mode 100644 index 0f343e1fee..0000000000 --- a/jOOQ-website/conf.php +++ /dev/null @@ -1,5 +0,0 @@ - \ No newline at end of file diff --git a/jOOQ-website/css/jooq.css b/jOOQ-website/css/jooq.css deleted file mode 100644 index b97fdf503c..0000000000 --- a/jOOQ-website/css/jooq.css +++ /dev/null @@ -1,421 +0,0 @@ -body { - font-family: 'Oxygen', sans-serif; - font-weight: normal; - text-shadow: 0 1px 0 #FFFFFF; - font-size: 15px; - font-style: normal; - font-weight: 400; - color: #000000; - letter-spacing: 0; - line-height: 1.4; - text-decoration: none; - text-shadow: none; - text-transform: none; - word-spacing: 0; - margin: 0; - padding: 0; - - background: #888787; - background: -webkit-gradient(linear, left, right, from(#888787), to(#666)); - background: -moz-linear-gradient(left, #888787, #666); - background: gradient(linear, left, right, from(#888787), to(#666)); -} - -h1, h2, h3, h4, h5, h6 { - font-family: 'Special Elite', cursive; - font-weight: normal; - color: #000000; - margin-top: 0.5em; - margin-bottom: 0.5em; -} - -h1 { - font-size: 4em; - text-shadow: 0 1px 1px #444; - padding-top: 10px; - margin: 0; -} - -h2 { - font-size: 2.5em; - text-shadow: 0 1px 1px #444; -} - -h3 { - font-size: 1.3em; - text-shadow: 0 1px 0 #444; -} - -pre { - background: none repeat scroll 0 0 #333333; - border-width: 2px; - border-style: solid; - border-color: #000; - box-shadow: 5px 5px 20px #AAAAAA; - color: #F1F2F3; - display: block; - font-family: monospace; - font-size: 12px; - line-height: 1.5em; - margin: 1.5em 0; - padding: 1em; - white-space: pre-wrap; - word-wrap: break-word; - text-align: left; -} - -button { - background: none repeat scroll 0 0 #333333; - border-width: 2px; - border-style: solid; - border-color: #000; - box-shadow: 5px 5px 20px #AAAAAA; - color: #F1F2F3; - display: block; - font-size: 12px; - line-height: 1.5em; - margin: 1.5em 0; - padding: 0.3em; - text-align: center; - width: 90%; -} - -p { - padding-left: 1em; - padding-right: 1em; -} - -td.left, th.left { - padding-right: 5px; - padding-bottom: 5px; - vertical-align: top; - text-align: right; -} -td.right, th.right { - padding-left: 5px; - padding-bottom: 5px; - vertical-align: top; - text-align: left; -} - -table.ticket-table td { - vertical-align: top; -} - -td h3 { - white-space: nowrap; -} - -ul { - margin: 0; - list-style-image:url(../img/favicon-16.png); -} - -ol { - padding-top: 1em; - padding-bottom: 1em; -} - -dl.toc { - overflow: hidden; -} - -dl.toc dt { - float: left; - clear: left; - width: 4em; -} - -dl.toc dt.toc-main { - padding-top: 1em; -} - -dl.toc dd { - float: left; - width: 50%; - margin: 0 0.5em; -} - -dl.toc dd.toc-main { - padding-top: 1em; -} - -button a, -button a:link, -button a:visited, -button a:hover, -button a:active { - color: #F1F2F3; - text-decoration: none; - text-shadow: 0 1px 2px #333333; -} - - -a, -a:link, -a:visited, -a:hover, -a:active { - color: #000000; - text-decoration: none; - text-shadow: 0 1px 2px #333333; -} - -a:hover { - text-decoration: underline; -} - -h2 a, h2 a:link, h2 a:visited, h2 a:hover, h2 a:active { - color: #aaaaaa; - text-decoration: none; - text-shadow: 0 1px 1px #444444; - - left: -30px; - position: absolute; - width: 740px; -} - -h2 a:hover { - text-decoration: underline; -} - -.wrapper { - height: auto; - min-height: 101%; - width: 1050px; - margin: 0 auto; - position: relative; -} - -.block { - background-color: #FFFFFF; - width: 100%; - - border-width: 0; - border-style: solid; - border-color: #000; - box-shadow: 0 0 30px #777777; -} - -#header { - padding-top: 1em; - padding-left: 3em; - padding-right: 3em; - padding-bottom: 1em; - - background: #aaaaaa; - background: -webkit-linear-gradient(left, #aaaaaa, #ffeeee); - background: -moz-linear-gradient(left, #aaaaaa, #ffeeee); - background: gradient(linear, left, right, from(#aaaaaa), to(#ffeeee)); - filter: progid:DXImageTransform.Microsoft.Gradient( - StartColorStr='#aaaaaa', EndColorStr='#ffeeee', GradientType=1); - - -webkit-box-shadow: inset rgba(0,0,0,.1) 0 5px 5px; - -moz-box-shadow: inset rgba(0,0,0,.1) 0 5px 5px; - box-shadow: inset rgba(0,0,0,.1) 0 5px 5px; - border-top: 1px solid rgba(0,0,0,.2); -} - -#content { - padding-top: 1em; - padding-left: 3em; - padding-right: 3em; - - background: #e8e8e8; - background: -webkit-linear-gradient(left, #e8e8e8, #ffffff); - /* [#2354] Firefox seems to have a bug here, for large pages */ - /* background: -moz-linear-gradient(left, #e8e8e8, #ffffff); */ - background: gradient(linear, left, right, from(#e8e8e8), to(#ffffff)); - filter: progid:DXImageTransform.Microsoft.Gradient( - StartColorStr='#e8e8e8', EndColorStr='#ffffff', GradientType=1); - - -webkit-box-shadow: inset rgba(0,0,0,.1) 0 5px 5px; - -moz-box-shadow: inset rgba(0,0,0,.1) 0 5px 5px; - box-shadow: inset rgba(0,0,0,.1) 0 5px 5px; - border-top: 1px solid rgba(0,0,0,.2); -} - -#navigation { - font-family: 'Special Elite',cursive; - - padding-top: 25px; - padding-left: 3em; - padding-right: 3em; - - height: 50px; - background: #444; - background: -webkit-linear-gradient(left top, #555, #333); - background: -moz-linear-gradient(top, #555, #333); - background: gradient(linear, left top, left bottom, from(#555), to(#333)); -} - -#tweets { - padding-top: 4px; - height: 25px; - float: left; -} - -#menu { - float: right; -} - -div.tweet-item { - float: left; - white-space: nowrap; - overflow: hidden; -} - -#tweets { - height: 25px; - float: left; - padding: 0; -} - -#menu { - float: right; -} - -div.tweet-item { - float: left; - padding-right: 20px; -} - -div.tweet-item img { - box-shadow: 0 0 5px #000; - border: 0; -} - -#navigation a, -#navigation a:link, -#navigation a:visited, -#navigation a:hover, -#navigation a:active { - color: #aaa; - text-shadow: #000 -1px -1px 0px; - text-decoration: none; - font-size: 1.5em; -} - -#navigation .navigation-item-active a, -#navigation .navigation-item-active a:link, -#navigation .navigation-item-active a:visited, -#navigation .navigation-item-active a:hover, -#navigation .navigation-item-active a:active { - color: #ffdddd; -} - -#navigation a:hover { - text-decoration: underline; -} - -div.navigation-item-left { - float: left; - margin-left: 2em; - height: 50px; -} - -div.navigation-item-active { - background: url("../img/navigation-item-active.png") no-repeat center bottom; -} - -#footer { - font-size: 0.7em; - color: #ddd; - - padding-top: 1em; - padding-left: 3em; - padding-right: 3em; - padding-bottom: 1em; - - background: #888787; - background: -webkit-gradient(linear, left, right, from(#888787), to(#666)); - background: -moz-linear-gradient(left, #888787, #666); - background: gradient(linear, left, right, from(#888787), to(#666)); - -webkit-box-shadow: inset rgba(0,0,0,.1) 0 5px 5px; - -moz-box-shadow: inset rgba(0,0,0,.1) 0 5px 5px; - box-shadow: inset rgba(0,0,0,.1) 0 5px 5px; - border-top: 1px solid rgba(0,0,0,.2); - text-shadow: #555 -1px -1px 0px; -} - -div.screenshot { - background: none repeat scroll 0 0 #ffffff; - border-width: 2px; - border-style: solid; - border-color: #000; - box-shadow: 5px 5px 20px #AAAAAA; - color: #000000; - display: block; - font-family: monospace; - font-size: 12px; - line-height: 1.5em; - margin: 1.5em 0; - white-space: pre-wrap; - word-wrap: break-word; - text-align: center; -} - -code { - font-family: monospace; - font-size: 12px; -} - -.mono { - font-family: monospace; -} - -.row { - width: 100%; - margin-top: 0; - margin-left: auto; - margin-right: auto; - overflow: hidden; -} - -.col { - float: left; - margin: 0; - overflow: hidden; -} - -.col > * { - margin-right: 20px; -} - -.col .input, -.col select { - width: 90%; -} - -.col-1 { - width: 33%; -} - -.col-2 { - width: 66%; -} - -.col-3 { - width: 100%; -} - -#intro { - height: auto; - margin-top: 40px; -} - -#intro .row { - margin-bottom: 30px; -} - -#intro .col { - height: 300px; -} - -#registration { - height: auto; -} - -#registration .row { - margin-bottom: 10px; -} diff --git a/jOOQ-website/css/jquery.modal.css b/jOOQ-website/css/jquery.modal.css deleted file mode 100644 index 7f5c7fc840..0000000000 --- a/jOOQ-website/css/jquery.modal.css +++ /dev/null @@ -1,44 +0,0 @@ -.modal { - display: none; - width: 400px; - background: #fff; - padding: 15px 30px; - -webkit-border-radius: 8px; - -moz-border-radius: 8px; - -o-border-radius: 8px; - -ms-border-radius: 8px; - border-radius: 8px; - -webkit-box-shadow: 0 0 10px #000; - -moz-box-shadow: 0 0 10px #000; - -o-box-shadow: 0 0 10px #000; - -ms-box-shadow: 0 0 10px #000; - box-shadow: 0 0 10px #000; -} - -.modal a.close-modal { - position: absolute; - top: -12.5px; - right: -12.5px; - display: block; - width: 30px; - height: 30px; - text-indent: -9999px; - background: url(close.png) no-repeat 0 0; -} - -.modal-spinner { - display: none; - width: 64px; - height: 64px; - position: fixed; - top: 50%; - left: 50%; - margin-right: -32px; - margin-top: -32px; - background: url(spinner.gif) #111 no-repeat center center; - -webkit-border-radius: 8px; - -moz-border-radius: 8px; - -o-border-radius: 8px; - -ms-border-radius: 8px; - border-radius: 8px; -} \ No newline at end of file diff --git a/jOOQ-website/donate.php b/jOOQ-website/donate.php deleted file mode 100644 index 20b5b9b312..0000000000 --- a/jOOQ-website/donate.php +++ /dev/null @@ -1,43 +0,0 @@ - - - -

Crowd-Fund jOOQ features on Catincan

-

-Some features might need a little funding to get started first. For example adding MS Access support to jOOQ. -

-

-In order to provide official support for MS Access in jOOQ, an MS Access license needs to be purchased from Microsoft. -

-

-You might have other ideas about features that could be funded in jOOQ. For more info, please refer to Catincan: -

-

-https://www.catincan.com/projects/close/jooq -

- - -

Donate directly through SourceForge / PayPal

-

-If you don't need any merchandise, or if you want to donate a bigger amount, feel free to do so directly here: -

-

-https://sourceforge.net/p/jooq/donate -

-

-Your donations are highly valued and make up for the numerous amounts of hours (and love) put into jOOQ. It also helps buying those more and more demanding machines that can run 14 RDBMS in parallel, for integration tests :-) -

- \ No newline at end of file diff --git a/jOOQ-website/download.php b/jOOQ-website/download.php deleted file mode 100644 index 192818daf1..0000000000 --- a/jOOQ-website/download.php +++ /dev/null @@ -1,123 +0,0 @@ - - -

# Download

-

-Get the latest version from SourceForge
-https://sourceforge.net/projects/jooq/files/Release/ -

- -

Maven

-

-jOOQ is also available as a Maven dependency from Maven central. Early snapshots can be obtained from the Sonatype Maven repository: -
-https://oss.sonatype.org/content/repositories/snapshots/org/jooq/ -

- -

Source Code

-

-jOOQ's sources are hosted at GitHub: -
-git@github.com:jOOQ/jOOQ.git -

- -

# Get the right version of jOOQ

-

-For increased quality, jOOQ uses semantic versioning. -The jOOQ roadmap plans for: -

- -
    -
  • jooq-X.0.0: major releases about once a year
  • -
  • jooq-X.Y.0: minor releases about once a month
  • -
  • jooq-X.Y.Z:patch releases at will
  • -
- -

3.x release notes

-

-Find release notes for currently maintained branches here: -

- - -

2.x release notes

-

-Find release notes for past branches here: -

- - -

-All branches are available here
-https://sourceforge.net/projects/jooq/files/Release/ -

- -

Future versions

-

-The semi-formal roadmap is here:
-https://github.com/jOOQ/jOOQ/issues/milestones -

- -

# License

-

-jOOQ is distributed under the Apache 2.0 licence -

- -

# Download other products of the jOO* family

-

-"jOO*" stands for Java Object Oriented ... It started with jOOQ, an internalised -domain specific language (aka SQL), written in Java. This DSL happens to be a -fluent API, a concept that is on the rise in software engineering. jOO* comes -into play whenever a pre-existing API is too clumsy and no fun to work with. Here -are some other products: - -

jOOX

-
- - The jOOX Logo -

jOOX stands for Java - Object Oriented XML. It is a simple wrapper for the org.w3c.dom package, - to allow for fluent XML document creation and manipulation where DOM is - required but too verbose. jOOX only wraps the underlying document and - can be used to enhance DOM, not as an alternative.

-
- -

jOOR and jOOU

-
-
 
-

jOOR stands for Java - Object Oriented Reflection. It is a simple wrapper for the java.lang.reflect package, - to allow for fluent reflective access of objects in Java.

-

jOOU stands for Java - Object Oriented Unsigned. It is a simple implementation of unsigned integer numbers in Java, - created out of necessity, as jOOQ supports MySQL's (and other databases') unsigned integers

-
- - - \ No newline at end of file diff --git a/jOOQ-website/e/.htaccess b/jOOQ-website/e/.htaccess deleted file mode 100644 index 5e4215af73..0000000000 --- a/jOOQ-website/e/.htaccess +++ /dev/null @@ -1 +0,0 @@ -Satisfy any diff --git a/jOOQ-website/e/400-bad_request.html b/jOOQ-website/e/400-bad_request.html deleted file mode 100644 index 4f215aca4d..0000000000 --- a/jOOQ-website/e/400-bad_request.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - 400 Bad Request - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- The jOOQ Logo - - diff --git a/jOOQ-website/e/401-authorization_required.html b/jOOQ-website/e/401-authorization_required.html deleted file mode 100644 index c275d1c612..0000000000 --- a/jOOQ-website/e/401-authorization_required.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - 401 Authorization Required - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- The jOOQ Logo - - diff --git a/jOOQ-website/e/403-forbidden.html b/jOOQ-website/e/403-forbidden.html deleted file mode 100644 index 4db7dc95be..0000000000 --- a/jOOQ-website/e/403-forbidden.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - 403 Forbidden - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- The jOOQ Logo - - diff --git a/jOOQ-website/e/404-not_found.html b/jOOQ-website/e/404-not_found.html deleted file mode 100644 index e8e31554e8..0000000000 --- a/jOOQ-website/e/404-not_found.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - 404 Not Found - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- The jOOQ Logo - - diff --git a/jOOQ-website/e/408-request_timed_out.html b/jOOQ-website/e/408-request_timed_out.html deleted file mode 100644 index 3eeabc129f..0000000000 --- a/jOOQ-website/e/408-request_timed_out.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - 408 Request Timed Out - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- The jOOQ Logo - - diff --git a/jOOQ-website/e/500-internal_server_error.html b/jOOQ-website/e/500-internal_server_error.html deleted file mode 100644 index 85d878abc1..0000000000 --- a/jOOQ-website/e/500-internal_server_error.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - 500 Internal Server Error - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- The jOOQ Logo - - diff --git a/jOOQ-website/e/503-service_unavailable.html b/jOOQ-website/e/503-service_unavailable.html deleted file mode 100644 index ff06679fa2..0000000000 --- a/jOOQ-website/e/503-service_unavailable.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - 503 Service Unavailable - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- The jOOQ Logo - - diff --git a/jOOQ-website/e/index.html b/jOOQ-website/e/index.html deleted file mode 100644 index 19b5105ac2..0000000000 --- a/jOOQ-website/e/index.html +++ /dev/null @@ -1,453 +0,0 @@ - - -Codes HTTP / HTTP Codes - - - - -Codes : -1xx -2xx -3xx -4xx -5xx -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
*1xx : Codes d'information / Information codes
CodeStatut / StatusDescription / Comment
100ContinuerAttente de la suite de la requête.
-La partie initiale de la requête a bien été reçue et le client peut continuer avec la suite de cette requête.
ContinueWaiting for the end part of the request.
-The initial part of the request has been received and the client may continue with its request.
101Changement de protocolesLe serveur accepte la requête du client de changer de protocole.
-Le client a demandé au serveur d'utiliser un autre protocole que celui actuellement utilisé, et le serveur accepte cette requête.
Switching ProtocolsThe server is complying with a client request to switch protocols to the one specified in the Upgrade header field.
-The client asked the server to use another protocol than the one actually used, and the server complied this request.
*2xx : Codes de succès / Success codes
CodeStatut / StatusDescription / Comment
200OKLa requête HTTP a été traitée avec succès.
-L'information retournée avec la réponse dépend de la méthode utilisée dans la requête. Par exemple la réponse à une requête GET classiquement émise par un navigateur web sera la ressource demandée (c'est-à-dire une page HTML, une image, etc).
OKThe HTTP request has succeeded.
-The information returned with the response is dependent on the method used in the request. For example the response to a standard GET request issued by a web browser is the requested resource (i.e. an HTML page, an image, etc).
201CrééLa requête a été correctement traitée et a résulté en la création d'une nouvelle ressource.
-Cette ressource peut être référencée par l'URI retournée dans le corps de la réponse, avec l'URL la plus précise pour la ressource indiquée dans l'en-tête du champ "Location".
CreatedThe request has been fulfilled and resulted in a new resource being created.
-The newly created resource can be referenced by the URI(s) returned in the entity of the response, with the most specific URL for the resource given by a Location header field.
202AcceptéLa requête a été acceptée pour être traitée, mais son traitement peut ne pas avoir abouti.
-Ce code est utilisé en remplacement du 201 lorsque le traitement ne peut pas avoir lieu immédiatement, son résultat est donc indéterminé.
AcceptedThe request has been accepted for processing, but the processing has not been completed.
-This code is used instead of 201 when the processing of the request cannot be carried out immediately, leaving the result undetermined.
203Information non certifiéeL'information retournée n'a pas été générée par le serveur HTTP mais par une autre source non authentifiée.
Non-Authoritative InformationUsually the preliminary information sent from a server to a browser comes directly from the server. If it does not, then this code might also be sent to indicate that information did not come from a known source.
204Pas de contenuLe serveur HTTP a correctement traité la requête mais il n'y a pas d'information à envoyer en retour.
-Cela peut par exemple se produire lorsqu'un fichier HTML ou le résultat d'un programme CGI-BIN est vide.
No ContentThe request was accepted and filled but no new information is being sent back.
-The browser receiving this response should not change its screen display (although new, and changed, private header information may be sent).
205Contenu réinitialiséLe client doit remettre à zéro le formulaire utilisé dans cette transaction.
-Ce code est envoyé au logiciel de navigation quand il doit réinitialiser un formulaire généré dynamiquement par un CGI-BIN, par exemple.
Reset ContentThe browser should clear the form used for this transaction for additional input.
-Appropriate for data-entry CGI applications.
206Contenu partielLe serveur retourne une partie seulement de la taille demandée.
-Ce code est utilisé lorsqu'une requête spécifiant une taille a été transmise.
Partial ContentThe server is returning partial data of the size requested.
-Used in response to a request specifying a Range header. The server must specify the range included in the response with the Content-Range header.
*3xx : Codes de redirection / Redirection codes
CodeStatut / StatusDescription / Comment
300Choix multiplesL'URI demandée concerne plus d'une ressource.
-Par exemple, l'URI concerne un document qui a été traduit en plusieurs langues. Le serveur doit retourner des informations indiquant comment choisir une ressource précise.
Multiple ChoicesThe requested URI refers to more than one resource.
-For example, the URI could refer to a document that has been translated into many languages. The entity body returned by the server could have a list of more specific data about how to choose the correct resource.
301Changement d'adresse définitifLa ressource demandée possède une nouvelle adresse (URI).
-Toute référence future à cette ressource doit être faite en utilisant l'une des URIs retournées dans la réponse. Le navigateur web doit normalement charger automatiquement la ressource demandée à sa nouvelle adresse.
Moved PermanentlyThe requested resource has been assigned a new permanent address (URI).
-Any future references to this resource should be done using one of the returned URIs. Web browsers should automatically load the requested resource using its new address.
302Changement d'adresse temporaireLa ressource demandée réside temporairement à une adresse (URI) différente.
-Cette redirection étant temporaire, le navigateur web doit continuer à utiliser l'URI originale pour les requêtes futures.
Moved TemporarilyThe requested resource resides temporarily under a different URI.
-Since the redirection may be altered on occasion, the client should continue to use the Request-URI for future requests.
303Voir ailleursL'URI spécifié est disponible à un autre URI et doit être demandé par un GET.
See OtherThe requested URI can be found at a different URI (specified in the Location header) and should be retrieved by a GET on that resource.
304Non modifiéLe navigateur web a effectué une requête GET conditionnelle et l'accès est autorisé, mais le document n'a pas été modifié.
-Cette réponse classique signifie que vous avez configuré votre navigateur pour utiliser un cache HTTP (proxy) dans lequel une copie du document demandé est déjà stockée. Le proxy a donc demandé au serveur si le document original a changé depuis, et a reçu cette réponse : il pourra ainsi utiliser la copie locale.
Not ModifiedThe web browser has performed a conditional GET request and access is allowed, but the document has not been modified.
-This classic response means you have configured your web browser to use an HTTP cache (proxy) in which a copy of the requested document is already stored. The cache proxy thus asked the server if the original document was modified, and received this response, so it will use the local copy instead of loading it from the server.
305Utiliser le proxyL'URI spécifié doit être accédé en passant par le proxy.
Use ProxyThe requested URI must be accessed through the proxy in the Location header.
*4xx : Erreur du client / Client Error
CodeStatut / StatusDescription / Comment
400Mauvaise requêteLa requête HTTP n'a pas pu être comprise par le serveur en raison d'une syntaxe erronée.
-Le problème peut provenir d'un navigateur web trop récent ou d'un serveur HTTP trop ancien.
Bad RequestThe HTTP request could not be understood by the server due to malformed syntax.
-The web browser may be too recent, or the HTTP server may be too old.
401Non autoriséLa requête nécessite une identification de l'utilisateur.
-Concrètement, cela signifie que tout ou partie du serveur contacté est protégé par un mot de passe, qu'il faut indiquer au serveur pour pouvoir accéder à son contenu.
UnauthorizedThe request requires user authentication.
-This means that all or a part of the requested server is protected by a password that should be given to the server to allow access to its contents.
402Paiement exigéCe code n'est pas encore mis en oeuvre dans le protocole HTTP.
Payment RequiredThis code is not yet implemented in HTTP.
403InterditLe serveur HTTP a compris la requête, mais refuse de la traiter.
-Ce code est généralement utilisé lorsqu'un serveur ne souhaite pas indiquer pourquoi la requête a été rejetée, ou lorsqu'aucune autre réponse ne correspond (par exemple le serveur est un Intranet et seules les machines du réseau local sont autorisées à se connecter au serveur).
ForbiddenThe HTTP server understood the request, but is refusing to fulfill it.
-This status code is commonly used when the server does not wish to reveal exactly why the request has been refused, or when no other response is applicable (for example the server is an Intranet and only the LAN machines are authorized to connect).
404Non trouvéLe serveur n'a rien trouvé qui corresponde à l'adresse (URI) demandée.
-Cela signifie que l'URL que vous avez tapée ou cliquée est mauvaise ou obsolète et ne correspond à aucun document existant sur le serveur (vous pouvez essayez de supprimer progressivement les composants de l'URL en partant de la fin pour éventuellement retrouver un chemin d'accès existant).
Not FoundThe server has not found anything matching the requested address (URI).
-This means the URL you have typed or cliked on is wrong or obsolete and does not match any document existing on the server (you may try to gradualy remove the URL components from the right to the left to eventually retrieve an existing path).
405Méthode non autoriséeCe code indique que la méthode utilisée par le client n'est pas supportée pour cet URI.
Method Not AllowedThis code is given with the Allow header and indicates that the method used by the client is not supported for this URI.
406Aucun disponibleL'adresse (URI) spécifiée existe, mais pas dans le format préféré du client.
-Le serveur indique en retour le langage et les types d'encodages disponibles pour cette adresse.
Not AcceptableThe URI specified by the client exists, but not in a format preferred by the client.
-Along with this code, the server provides the Content-Language, Content-Encoding, and Content-Type headers.
407Authentification proxy exigéeLe serveur proxy exige une authentification du client avant de transmettre la requête.
Proxy Authentication RequiredThe proxy server needs to authorize the request before forwarding it.
408Requête hors-délaiLe client n'a pas présenté une requête complète pendant le délai maximal qui lui était imparti, et le serveur a abandonné la connexion.
Request Time-outThis response code means the client did not produce a full request within some predetermined time (usually specified in the server's configuration), and the server is disconnecting the network connection.
409ConflitLa requête entre en conflit avec une autre requête ou avec la configuration du serveur.
-Des informations sur les raisons de ce conflit doivent être indiquée en retour.
ConflictThis code indicates that the request conflicts with another request or with the server's configuration.
-Information about the conflict should be returned in the data portion of the reply.
410PartiL'adresse (URI) demandée n'existe plus et a été définitivement supprimée du serveur.
GoneThis code indicates that the requested URI no longer exists and has been permanently removed from the server.
411Longueur exigéeLe serveur a besoin de connaître la taille de cette requête pour pouvoir y répondre.
Length RequiredThe server will not accept the request without a Content-Length header supplied in the request.
412Précondition échouéeLes conditions spécifiées dans la requête ne sont pas remplies.
Precondition FailedThe condition specified by one or more If... headers in the request evaluated to false.
413Corps de requête trop grandLe serveur ne peut traiter la requête car la taille de son contenu est trop importante.
Request Entity Too LargeThe server will not process the request because its entity body is too large.
414URI trop longLe serveur ne peut traiter la requête car la taille de l'objet (URI) a retourner est trop importante.
Request-URI Too LongThe server will not process the request because its request URI is too large.
415Format non supportéLe serveur ne peut traiter la requête car son contenu est écrit dans un format non supporté.
Unsupported Media TypeThe server will not process the request because its entity body is in an unsupported format.
416Plage demandée invalideLe sous-ensemble de recherche spécifié est invalide.
Requested range unsatifiableThe server will not process the request because the requested range is invalid.
417Comportement erronéLe comportement prévu pour le serveur n'est pas supporté.
Expectation failedThe behavior expected fot the server is not supported.
*5xx : Erreur du serveur / Server Error
CodeStatut / StatusDescription / Comment
500Erreur interne du serveurLe serveur HTTP a rencontré une condition inattendue qui l'a empêché de traiter la requête.
-Cette erreur peut par exemple être le résultat d'une mauvaise configuration du serveur, ou d'une ressource épuisée ou refusée au serveur sur la machine hôte.
Internal Server ErrorThe HTTP server encountered an unexpected condition which prevented it from fulfilling the request.
-For example this error can be caused by a serveur misconfiguration, or a resource exhausted or denied to the server on the host machine.
501Non mis en oeuvreLe serveur HTTP ne supporte pas la fonctionnalité nécessaire pour traiter la requête.
-C'est la réponse émise lorsque le serveur ne reconnaît pas la méthode indiquée dans la requête et n'est capable de la mettre en oeuvre pour aucune ressource (soit le navigateur web est trop récent, soit le serveur HTTP est trop ancien).
Not ImplementedThe HTTP server does not support the functionality required to fulfill the request.
-This is the appropriate response when the server does not recognize the request method and is not capable of supporting it for any resource (either the web browser is too recent, or the HTTP server is too old).
502Mauvais intermédiaireLe serveur intermédiaire a fourni une réponse invalide.
-Le serveur HTTP a agi en tant qu'intermédiaire (passerelle ou proxy) avec un autre serveur, et a reçu de ce dernier une réponse invalide en essayant de traiter la requête.
Bad GatewayThe gateway server returned an invalid response.
-The HTTP server, while acting as a gateway or proxy, received an invalid response from the upstream server it accessed in attempting to fulfill the request.
503Service indisponibleLe serveur HTTP est actuellement incapable de traiter la requête en raison d'une surcharge temporaire ou d'une opération de maintenance.
-Cela sous-entend l'existence d'une condition temporaire qui sera levée après un certain délai.
Service UnavailableThe HTTP server is currently unable to handle the request due to a temporary overloading or maintenance of the server.
-The implication is that this is a temporary condition which will be alleviated after some delay.
504Intermédiaire hors-délaiCette réponse est identique au code 408 (requête hors-délai), mais ici c'est un proxy ou un autre intermédiaire qui a mis trop longtemps à répondre.
Gateway Time-outThis response is like 408 (Request Time-out) except that a gateway or proxy has timed out.
505Version HTTP non supportéeLa version du protocole HTTP utilisée dans cette requête n'est pas (ou plus) supportée par le serveur.
HTTP Version not supportedThe server will not support the HTTP protocol version used in the request.
- - - diff --git a/jOOQ-website/error.log b/jOOQ-website/error.log deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/jOOQ-website/eula.php b/jOOQ-website/eula.php deleted file mode 100644 index 46466db031..0000000000 --- a/jOOQ-website/eula.php +++ /dev/null @@ -1,25 +0,0 @@ - - -

End User License Agreement

-

- The jOOQ Commercial License is not yet effective. You may thus not yet use jOOQ using the Commercial License. -

-

- Come back soon to learn how to commercially license jOOQ. -

- - \ No newline at end of file diff --git a/jOOQ-website/favicon.ico b/jOOQ-website/favicon.ico deleted file mode 100644 index a4773d156f270f79c77e30387d6c39057373eeab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4286 zcmeHLX>3$g6uyKX`VV7*;g3j&%4#s8mSE$kboLwSGLl!6q#XQD6I%( zYg$a%L@d;FrO;BP%TT(_R)#5M=_1{sopxqEzk8o=28xJ;AI5~&+_~Gi=X~d!@16Tn zA-eIePah$FMdAxWyd;F^&&DM&icPLR>H#30wP!K-uQ=fM`^i7qApCwU4{}Xg56&Nl zuj`q|$p`oSqOs8<5)w+WXU}=$<<)RYV$m?^*yP&v>y0QWsYY(@Eu^Qrlx%rveti;|S__G{1a4zc3ne(WlQc^z1no{rj&&VPSOu!@YZ6ap_VWmM+c2{{2O$u5LkP zWfPpvJE*E^MqS-qq@_7a3&MOIc7oD~gH_OHC^v3xiVE>}I?c;j3A^iz?N z&&zY8Z{HPYY-|&kFW-d4auf6=(3lT3mcnvf&h@dHa$a5Cij-6rl9Maxhc|%X?_yG1 zT!VS@j^p%ct5hSL&Ke9D5XL;$;B2x}=??zrw)H-^BS#vZVDEOfVE674)Yi5Xa65oQ zjypU5J|^)Amoa2W1a|GpW6XWTRg9RJbM&P`nxGBU!D?;7_um&_sFTOYdqcKa(<(l4>EJ?=5kp`SR>A+5N4qkqFDc*kD zgh7KMFn8`riusY0WaHeR*5uxhAzSh4s~fR;bqeF{Q!@Ms#3Lc07=s5#QEof=6^{uM zVi6J&gUOTkO0fsxGJpONeE8vh7!0}S-Fqc*W?}PYJHo;W@$S0@eExYN-h0oCi4)_o zVnsgIuP?#MmHGJOlQYC)Vt*93ZZ%8mQa9h3%gm=4ix*$Sx^))3|Na4D2}4;~Exg`f z4s>pWghXTQ+Eje@*+JSkh@Cs#*s`Sz+qPMW!9uPY7@vLEu%Q^=eP>5RL@9GnMvUcZ zEhJ2L^+c z{#vnUQ3msBVqSlv-(?ElwrvuFjo8yMVuXq3(lKUCoU$1m?PMGr#N@#I`6)d2GyV6` ze^~<|7A#0WuU<=-&$BXjV$Phsm^SSf@-K(B%OT^xYL$g~bTW>|uzdONj7v6sFI9U+ zqm{btijUK#rLuY7PX{p-@LUY>omI7B=+J0< z`DGUQ=4R|{7&y>~>C=CN&!^oHItTS$`YxN-3nAa@>C=-G?nR3VRBS)^AddEuna@0O zWea0$QF>);qoOMK?w%&UBj9$c`j3>9O6D*YbLRYtQKJsyqmPcTws+7*@Q&AQckSKo zdY+A>zcGC0_mFQU>M--ZZISrN<8<=d%sO(E?`sNqmq^=@bDC}4p7ghC)At%0+WH!esjOKCc(+;5)YL9DE8VOgtgV%*ri~pNOPPZTQ(c{u z3EI!juH{|bDwmWUUAI1eR4?Up+2rJ#$SG$U8f~ zQ|`$1fG#&9kF|fl zjD|rwbM0CSYegZ7ivK`EgNHT5t1w6$vdQ}{DalPP7V;jrEAc#0%ys#$y@o-n*Bu=` zVY4>iLUs-B=PKTn*Ky{o{7!P=*s%%}6=~mZQinX(RoBzZ@5dp(9X%eOV4g*Dvqv;F zdH7x7qdm>0Zd>o4#_qGTPsZ8*QM?HC;paDZC^m)nz$VcRFA4$vTOqVji09b^TQ|MA lISyybVY?wjcfSzNvGqW>cm-J^6mGErjijWv`@=@K@+X*nMFju= diff --git a/jOOQ-website/fnt/Infinity.ttf b/jOOQ-website/fnt/Infinity.ttf deleted file mode 100644 index f67855a26c6783d72cf8fbd5db9cc4292964c637..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20224 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 J1iL6n{~P~cHb(#e diff --git a/jOOQ-website/frame.php b/jOOQ-website/frame.php deleted file mode 100644 index f538b57a87..0000000000 --- a/jOOQ-website/frame.php +++ /dev/null @@ -1,367 +0,0 @@ -This version of the manual is outdated. For the latest version, follow this link: ' . - 'http://www.jooq.org/doc/' . $minorVersion . '/manual' . $singleSuffix . - '.

'; -} - -?> - - - - <?php - if (isset($home)) { - print "jOOQ is a fluent API for typesafe SQL query construction and execution"; - } else { - print getH1(); - } - ?> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - -
-
- -
-
-
- - - - -
- The jOOQ Logo -
- - - - - diff --git a/jOOQ-website/img/.gitignore b/jOOQ-website/img/.gitignore deleted file mode 100644 index 0acd18c94c..0000000000 --- a/jOOQ-website/img/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/Thumbs.db diff --git a/jOOQ-website/img/banner-medium.png b/jOOQ-website/img/banner-medium.png deleted file mode 100644 index aefd51b57f40bd5980ade11a8b347c0cc1d19da1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 104917 zcmZU)WmFtp&@DW;Ly#cBAy{yCOCY!ecXxM(!QFzpy9Q@)cXxMp_kqjve&7A^uKS~> zPp|G--PKiRpS`Q9!{lYfP!PW%0ssIM32_kx008=P2xx(a{QT|IFPZz?K{zUi{RC7^ z5FCFVK${B72m=5$F-ULvFrUW=cH-)e003(5e;dT0ZHW;8@KGosBCO=5bEXZWr#bi> zV>Qa6`8zc=)qr^8Xn4a>FTBN>3Cyb*{fA2{ z!+&@prHN5EG8)JQA_9{jc>XYo^H@HyHs>J`{+ z?h}T9gCW4OlkfUp0|sI zT(@_W9{`Dp$VI)CZY>2>>S8!`AfG9h<5ttTtfhM%;QP<)&J}2 zt(-2=-w^a2#cITvrm>yz@pY`PCjEeM_J`MfT_d*Vy4KS#fcG;zyZX!jdxQV~PFgHj zxECAw*EjlX-~cEn=qFy@*~ura90gS5l6wk>m-1frBdxlCUjVK}EEm4b|79!zR&xPO zSIaHy65&vmuUpxct39dh0qf#;RR7Bz>*VaHM5%(43s-A1mm|n9IQS~L?U-HzE>|ke z1vs(A70s68g6`9ox)|C$+Dx%Zr?tRpp$&LuV27%=7I{f%t{>hRay57G<{omej}3a5 z`FlBYXN6~@y})U~D%K@#<76bp?&uKn6v@Glv>?l-d3b@LDRO34zri;qkQ=r?A8|%_ za4J`g$6=!P+M z#nQHO`1=d+uM3cjTTth+uvVWV%&+lC< z7bcewZSOjG&Ok);ZTe>`A)ds>O4RJexrQhBqXMw?53n@ILcYLYc2$Gd%!H9D`9Tx{ z(`BM$ddfT?aD@@zgbLARqQcy6Qdu!y#}iHf+4Vg2n>)6Oo5*EOj1|UZ^1-Piu)s|F zf#|oXTt6Tx0`*py{%^hQ>Ioj!8ptq2i_T@+Aw;QcqeI}ZTev~t7IzZQt^$r+nqY5;SrJgsJQA z55`jlLP+0V0KLMkx*mp)(ek0Vq^YqB+r;yU#P%Ul02efXA93kBnyvwlb_ihW3qbnM zR-T;>ZkUQc-dU(~a-=4jcOdHZuVpz$SBxpf_|m|hiA-L&!Wq&+1$u0>5~U~Pwu_Vf z{l4Aq5HT(7@%`(qrP@CXU2Ll2iY>k7mu5GQ zJpNSaqJc!Oj>iHCeN4(`H}}*pP-^go_iF5pe!Y--;wgXYBKQw!Ju77nV@sn}7x3>r zjgNv&;1(lO=!zCA*>Ceq*458*J}+fmTpnjKE!J+{a%%Y>58w@}dxqIZ;9bvOh!(83 zh&k*o>*2u7G!P#1?2&o81PdayL>ei6D+LJMgTMblK3zkTBc{w~y4;g!eiYZ#;HzU9 ztaq)qT7lLj)Pk=j8Ul138N$LrJi-~(GRw+7ISBo5_J7%2_a5s4I6Z4IGJ26*cUM(4 z>wSR?(ArSbiPrRof+A)5GV5PXJ2>9}0;xm30%D2}9LV$XdLkmA2BYuc(TFKwbMz@$ zd<_YR^uF@e^wpq5qCmwBpf#P7E;M!D1|1PF0~(n_YeLOerF9L?3{urT>I~{(YCl~z zTU>@`WbVw)gG`=u#BJ4D<1?~^NJ)SVSk1|m!Qyno`nCFZ?I<>4%nF-aWrmv$@Gabe z9sH67?&~CGWKdmMqJG;&Qw0LItF&uRPJ}s|Qu-r|qoVR=6x^jESVQv9&Xpe@S`eW( z)Kj6n!Cx@+;Oy@2oske7(9m$`)MBrnc6-3DhBlp<_+O8+QfX{Uh!xP>AlKy5plNz& zSrq2yVag$gVfuEj!Eav8TKcY>XjwnO;IfyOT0-8H$8)6dN!R;_1rdBp%;0FXhF3u( zZ2|@%71F_fNWa@aDI5FN@njXmXopfdPVj(-8YEBgRgUSyUs_IT04pfRZwUPt&jPf9 zEl9FjY~;o2n}5fS27Wu_Lmg)k7f3}@OWhitu4xdJWDAUE<7ff3NNQ-#PuSfM?{V|OVc{IM-zlsPM3Fik`seaU zNqrN1d0 z>iwl_GAcPy6_GMoJ<$VN*=@jVj)FQ23_nVhmgk56itnGF`*STObui?iotv#L@|ER&O zB=)}Ue;<)#Kt`99g{Q*3yE%yy@8ip&$|lavAOQA%)dB+Jm=a7-jq?NXQhUq3e?kcX zq^~k1Db8oSA{o78Ym2Iw8KBsu{4N;S)R+~W=B>z7HTmw8zNAact)o$96QX4l7KY+} z(9^?k;AzvCjjG(lZ}3kBAL+GAN?NPF@pPpHn?bEsK9N`EFkfarENA2W#=%}a)%A~l zUqUH(e*VW_aknFRTlLho%JKO@Qy~Vi0^6xbype;0gb*SJ2gmsP`}xZa?xHe}NJ&EA z|S5bjU{*D$CT2ZmI zvy)R}Sc=Rfjr@-i>TU8TP6$%0cjWQ^SgK8sA2i%ZgxO*^_vt{gJ5VhSH#8swkW=Ve zX?gD-gGUFsh*R%{xR5F2ZX+mF$;(kV5IrE?gf~LK~Qaz&5U` zWrmeOr`hE^R%zt=F0x}gxGRrLKD6vAY!M|y@nHuE!FBDJ=!>3mwQZDy%$saBjkQ_H z`xex6?yvWF%4y5z|OD4-=Y@AnHB1RePTmy!R2~m+7J->I8W!0 z$UVC}#>-bB_mgu}PE=xW#b>45U(ke3Rfh-)x@r)7KdTEM`?GOcO^Q(BGesZqGzoLZ zNu+!4dFf2do#)HlGs$=fe*8;xcZarl>Gc7XRa`8XO&p(s%V!wuDv9_VHjPmnlc;Nm zmeR?RL)@e2lI3aPTa%Vq=!8DRKmFq)?VT?Gx~Ws3N@U~Dcq9u)`;r#xq_1KQ3p$@@ z@kuV~8~k?<@(OqrknuG74Q~EMZ-dHa#l>p@jS;M=7b~Go@}>raZ}{qR;$q zi7Vs9DgRusmzu&qah~c4SEZDfy~ST|NC=Rp|=+ct^}T5{j;~ z^$W3A51A#%a9HUqqiso>f6C!RNmCU^j6rpAp-0l!Der=m zw3lSfjscuKugyaTc(^X=h5U~x^)urT6gYljcG6cuYye6r1GBg(%KUP;?WY2;rdgJp z)L&tNjazP*|AzF#<;O7t;^qF|_#pb-QMXsF)|MZutLYtJ7x6-c`}_N!o14?#LN14ivws&M)3wjun*9A8zj= z!y@nC5pP1n!rn%8VYg8GJfM$7VLnmm*G>%Xu?|+bnGx^kzXsF80|Srsm4`2{c3{+b7~=i4_)>WCrxQh21vKWMBdR$exl6b&!nGfEen#zt5P zhy=^z%=f!P*hLi8<6wPg9BqOulUpif=>Iw`&d+nO56_=)5fguO2{~cQ3IyqTL2SMt z5kH>J>a47JT_tIfRX3CEgwwi7f4OR!E&c_IyW_A61KC+ZJx7Vu`sT3MC3J$`hmA6o z1G(Cjl34m5Pv8vyk0)RQ@RO?#YSBkUIS>IQrqk0(4VJ49Wh&^3!1VN#EKYNWKcP*n zh0$4zE;Z5>j^BTin}|_-b-kAq`eN&o)0AFhGZa+!NmhNm%ZIihje>P>GPIl^^pflT zw5F_+(PhmpaAL!$(^h}c07UmuIC`7~=8&0a43)Bke8 zY+&y#+MnVFaj~WMRBJ3N7Sj?KR9LCjeScHyD%fdPCFrzjU4s9`bC9rOcaSD6O|!|G z_VuEbD9As6?srYi5b?=30s_a|@w5^^Ls}>VS4;}l?}z9ef->z1oV?Z{XkQ3tV3S*< z!kX9JR5$%92TmlB{CzGrOd7A7-e`2?{(Pkc z_@HRA!=XE)S>AHo+|zK30V-hRA4q1Jfx zKzeBA>p1HQ1Ilk}L0-%4koHp{pl^OtI0=$-gOb%`9;9JZL4b z5jS*l@rT1Fd8r+P32_peXSJ}C_jVc`fy#WtuTI_GHSictD_DXNONt;qMn!$FeR?Qo z_-L~2UpwJZ zHZfu5>t6i&c_op8`_$fW)yBqy%>mBJeX*_^L=aN!`Jm;^_oh(0>6QDQcq*x&pHD2t zBBIZ*Frc7dL~I5pG_(-0FB`ECRy5cqe9|ERJ%bbVJmeCi!VnjqNAP5^#i~}jcfP@F z@pu-0CH3s+_&lzkrkbc^;?B~8GO<^UZ2#^3p@i&wy}A+C;dR92)8RQ%I|!OQ%|{&z zkRbV7V@$x+6e|rAue%C|>|8H*m7Sgc zUa%Yh@UnTcej3yM9B&Xg`=&|c`LMvP#jyDMM90nuGz8Vq4 z--?Z8anSQW3dpd;R#3)j<`>vKLOkI8PX&%-4Y^?No3p4fEs4s8OtRNy#8ZsuV zyoYnO1wSVXlCj>BLAL3|ehb!%azn%{l^+3uuRz7`w-+yjA^i&G!0ZymIoqh`;BU03 zs&_Z0Sd^qvmFJKEYnywxNxtVx*Tw0BzI6^Z&LuS;`0;T%NsiSF8VDiE9W=nmr1PZkaPk6f?4`B4FBH={67tb)6{BdLd z>xXr^&gXi?25Z>aVCvbO)Nwp}nEkYaW)eeqboewun0$OO@ua}>sciyX)Bur322uMJ z#J}$T9xg))t^1@{32LdTGQ_y<^y7G*oW5#mxCI2rYUL4+d%squP$c)h_K$B82RWw- ztnhqGZ>$sCB}49(Avs!W$KMZEyzI=@mCrdljVDEq6+twlYYPCJXKdfIu?5Br1V|RT zD#XFIEbS;Vd5I+Z0`z{SdnMHsskn4_ZH|9-n?55%R{XHzgzNXK$(@8pHJzY*OTibLSBcg1UrXTB+I2x2 z9uo≫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 z
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

Z|lZsVZoBG65H zyFm7NbYgU{2QHVJWDR;vs0vkGWOksGkIzEWSji9c?6>Ds*UZb-O&IvxMPe8?P%J(V zt!3ipz`6tLPM_Sl#zp1Br%81LH0=uJ>Jmut@0v%>^_A=3DZDd1>nCCd{(zpUt6dN#l1nLogS3%l>kUXy9{2@)pZ8(+nBq8S0)E)A{T19Cl_qZavW zY_i6FwU_-U97LN4!{h30Dp+D8;(z4=J;>nyU#j(bX3WHVcr9*-|P7lym#@l={RFP}fa37sW>O?+CfQKXP{wAc`vaJ`^-4GP!vGKz92_DRE6x z<4_4KlM@#)&_A(;siN{w~k@984Fm8F+m&0GT|G{CsKldc2X*ol`ybAJpMk2#HQI zRW|=R!>Zpns9M$^HtJvRvvs?nkY9cGasOO?%>@M7k^^M(2}UnQTY=wwMMB!_QZ3bP zeV5)`Tgy0Au-@+aXGSSk`D9rm@JRE%SaQIiCGBjb{L5F3#RX$EY;;zzlw&2ho}36FJD@| zeChu7?PhQ=-|zNR_%n_j0y;(--Gb71DU=ubQ%~E3Y%a^&M+_G+L54PM>^PBv?d9&z zC|K-7)GwnR?yiRtQ;xW2|8~T}I_PezA4JJyZ$^L+W`zyj9KsZ&m8EdKt%86@$Smeae%0BAUQA+jys*Yu71(Xf4nAe6r%SFJfLLS+7mR ztvCC86>np__)c1^F=*4wJIeqsDH|ov7Ub%YyigRdi9IQ=Ig%UTmbRl@4n~MIEBu4> z@|^Y?FYlrHJ0t75fBq_9tjdKB#5Z#u-p<@yZ!!_z%^^w^$KU=|uP^zeykt@N9s){YepaI8h>r-*l+WT$@sH_4DtqW`(2s@03kb&gj4D z`1PC;k0QiH9bq7^S$~cNAr)bnm|!!aRvpYPr zJvb3|Kbk8jmE}9x2s)XoerVy{;TddG1>1eqVkVuldy4nX+UKmJo&K3N#b}yVRgGTv z;Zj;TCfXG*y4R_FK!okNHE%o3z}c`qukR3|HzaH1H+rpUNc-kPlrV=?$W0j<40rny_}<1@ zP*5;|;_p&d=XPqMpMgQ~^MO`%O!xE6UFTWg{j}upiMG+FHC>OKu-NB$ZAc60;&;A} z+Fd8Z@N7VfNaLqx72{LksV}3Q4g-c`);%ra#@y9qKWp39jSg5n{|5k$Kykk@v`y6( zu~d^`${np&EiWxDI&|dFiIXRry2!nP+N6F_OO{*s;~)@wN?pcYpeDv>0d3iEOg)3m zwH0U1pFer*49wANZ3J_kx)qSnyP_=Tq3 zu<{zjhQA2bP_2ey=&5s+Ixr&0m@?T_R@6%?o=h@T6fCcFAPh*M0WtyWbiJ(%oPA@Qs3qAWLlZpct)h zZ2aY`cRu)WC#_HP_}^Y#kP|)933r<_2ePP-yi0*^B1RofIG$7UpQw(T%zAETRe7X(J0-`l7*@HOh`X z+c$sr{hEEJ&a3*g>(tIs;NurEeb(Fsv!^8l`;4Y4xu84R%qC)A|HqI;8%M>G#bH!t zoXIkrCV*VT7DFJYdG9@Sb@kpeXWDyuU?oq~Yt*^};rxN{5)p?jARzzcml4wo#>U`Iz2*aIpmM&|)7Soj?%766w~3}*;r z;lP?Old%R^3_(>gRt}&Pv3PFEFbW9Pgi?Yc}ab9 z-I_1Hspvq`O8e0G>_v-aCj|RCOFdmg+B?|NqtjqFqS5Bsv#US-Y}4V>%29I8djzFF z`q;fGp`27zd(3goVK!TU`K0PZB=QrOr`2@0*bxH7tjeLG1`dRdfE>2mk)y;JHeT zF4ghyrDGSFaoM8}+!X08xu9*sF#zDEj%;81?q}bZH|VjKVO4ex;yEksxb@0u5&>^) zNH;j7-1^<8?|r_mzMEt`wQ~^og+^qgrr~EoRw6SKG<nl9!!OKf)q-8bI-pP}P8aWa@zEEX^sCX~mPcQ{aaOuEZ;Lr5U|=T4gx9pb}I5~WJ<+20>|^Tz`Q&Hv5}01}4t(|L=etgpk7>r_keEN`k^62-57+v)jJ6jB274>doGz+q zLhTTDA{19xu)om3u2vyUlmtxqGbsj56%T5T_O%goMj6FMq-${xGp z`KG>(rcNd7@*M1W(TUmfub4MAE7@cX7&004!%jjTjp8%*l42JgMvCiMX3@g&|N!SxNaj@9f>QrADIxnq<+0 z5atpS1bj>!PoW2(ktp#u;4)GOqaoaS)Y!-d7Bvi}qdfZ!nKTOEEuc@NC=PISjdpXh z>FxDfbVbzdcZ`kx$!Z!JDqpka$44Hq6^U4C0*35a$C&&ZtOz?~*jM-ixSwMW@CUvF zs3lGTv=~b*OeEzL_cJztWFliq2AT?&a1<0Vqda3O@RiigK4s?g=tmzDxR?>Gnmt2) zO#!&)emid-gz{u)VDN}d5aG30gdzk*0-ej?1;NaFC=WnbL6(q#rg`=eiR!@z!e!jq z*~QOq!m=xQo*or%zg<;Yiu}+raB!54;H*#{p-y1{hU5&OKO(&G9UXDvVIum#JN5VD zH-t$6Zf>z*VX-&e=o%G`7)0_~`N>FLmo*zVp08-K1hu<*g#6{(Rsh!x=`89YU`5DP>C2-|CCoIrzQ&?#mg0-iD$hDm84}ux8D=%{!`^ zIxO&Ju=5FvyK&`RvvQ&=WzS$6S8?jQ?^bQyd!&PiC(S%|4*dAkY5(`&%~4*i!n{m%yP7E zS+I*(Nu-1Kx=#ZOAlSY{)BdGix^563G}dg*k1iJo?c6Pn@i8v*5ha)@0}CboD(? zKe%Fw$vhOGWNY2&hwixVKz-NPiv-+SQuf@ZAHOrsSIZLP-L}TlcVBzw@pf&JHIzwA z%du-ef3nK<>Kh9;e*AT_fhfw^BjK%gU(FrPBKG$;JbLY|Kb@($5Qhx=g3E7z@lRKK ziG_x8Q2k!8G5`j1InHDmp#h-Qb+F0i3x&l`KYgyW6y`TLx3z``V%Hj?vl|MZAr-8QCG^EFS;f3NqJrsV|oo>k~tk*}Md1m!zpDAf5Pe2qPO8{sv z00a|Li92`zi1`_O$LN?HIm69{K{ml2pb)S%!Q8gCu^t}bK0e6a?mcyCpGCM@PgXf-Mue{(M_lQ*w3unnf z08!S6(1Efv_ye6pJxnuzNJ@~3V$_hY6Y8O`S{;^{n0)>9L38I4ld20`-joh@5rEQS$(FM^7Cc*JF9 zrr&lOqe;uwt#v>AaICUYC6_}Fz_AUOM9e!X4@2ZrJG*kF5)q=n8bPxJy$X0OSPP4t zoFYR*L(|ejuDP1!4l_L*3!uwI7pPzmTZaBor>v#oqgS7J_-|iz_KoBhz*M>1LMdPW{0h7D&%qW|$F z_QljTG}P7FGAuc<*;>GQ?fm)2;}?Sd$wc(YKmGedcRl~L+|*)5Hr8Lh{@5(~r}d~$ z>{)f~jZf9vb^ry$)91(n}j0Ga zAzlQKm(#uiFTywk1+?fNz>ek)gSAhnSd8BQ(}0GgBo#apLm&vAA$4+eOnu`GpnoQ+ zH~TR5(zl=>Vd+v-3)>#_2j~;1)Y;B1Tr8H-==j8jhw=&}R~H>1QwK25V?4|lh9xW` zP1A(OOgW(aigp-(qZLH?goiXZ9EjF&b@~Ja-Mn|tyj80R`lo|8+wDtQ03(C*@yz$$ z599G*Oa=T6+X`mfkIZGQFyo=T8D^h^>;M@kFT_GK5ib#uXbAbT{QN?rqtkA_8D>A^ zr?=O0$`oNhfU}E>K#05%WCn@t5Dcj3q%(J6*bYIupW@;YCKU2%yddV|L87}3396Yw=uqWU%uFGjxuz;4aola+Iv+UU8AuamQ-T84A^}qrv z7LIUV(gpk#xq4)##UdKoMKnFWuR!$PPUAN+@ z!u$+Zf#G)7eD(Ts>yK5B)+KP5uAaW5?YqwE(q;uN>w&VOUAJC+^S-)a$IEDSwv=sp z?SsvhL={8LCC4^C@W4}ttHw~JjxRYcNp1ZDiuMkDSOp(X4?|(Lag!K$Ys>lX*6uL= z%Fdo28l5zC>da-!mR)nrbvIsj&CIC%Av-3(V<)v0w){{3r(t}_?V3v1DFr2rA`Qs6a+An}0O)F21e-Z1t6s3kc8VC8~9 zH#9*kIk723miqd_n!XuPVg?70f;aHKdrsYTPu;eyOkOp8ka2 zaYvxHx4_8>4#9*6p!^%t;lPjLcvn}6TnLKX&%Q#Ejf&(+VdSB zY%R)}G09Db0Km%$g(7D+?;%xlbzSS&%#^JiKP7k4oS9SevoljuQj+l`C2>FLX(>r@ z(E+}`u!m-xFg!!5&mAgj8VeJMq<)j9Oqn$?&C5MNVB2xBL?7LSjS${`9dfk;-*w{D zY11YZ#6$)u+nYP(+B<3ZT-bpHnlyFVto*c);9&S=vMaV%qgwyb-~Y8{4~@B{e;kF9 z%-jjnrc9bNAvYx{DK0)SJ|Q94-^WJN)7d>t=-<^`vhz^OlsS3gQDnVpMZ=2^{ApKt z^Y9jICEg+V1rrJ<6->y^N=Z&hN=`|LkMZ_|u~VyJm{5G++_Ak)w*C_mLkQ^%n0{Nn z#7Q_%QCgwwGok0w*t=#&i=Vjjfi347jOWhYktYBz=;%Naa~KR<-QCdA=P@xg!XiT; z3-oAQ-PGlu?;a31&{<#Gs-Jh2tZ~E7Ymb+=^AH8XZm5So3b|V7BpPA-h8mDcS0a(P z5=XD$Rt(Ifa-j9ow?D4!(eh(rkANu?()?)lU)BvXEaGs1N>_8my7fERwsrCho|2U~ zwmUC^!tMC^=Q?WA<{g$eZ(3eVcqlT9jSc3EPmIxQUCbWnCPoKIiK6GLf4+3Es&&Nc zJg0ygZ@X?*er`reQhaP|Ok_l0V34n0P+)L?rmenJ#v!r3st(8bGcs972g3)=5f3hb zNYl~O)YfTun6P3)g9`tM9QE1tcRcn=v(otdv*infSc2et;gx4l^HAyW<1q!(!#syM zPmdr=e}C_upFXbvHM6<0$X%hZF?zd+cx)(jGSpPbdsXOoaV9G1S3>V37w8I&^jh zPM#=|NS%X2q!SC8e_Y$PXODAYf}=p#xqp9uPfw>xC8yzWSWW=oOJe^`bA-Vl2S)#Z zhFa?you2?i@`&>jEEW^%Xsk?)#*fFF_{=jg_uj{IbGuOVPbbh8!GeO8E-m})Ge16G z8W13oN`-L2SCH+CLlO`eePEU_%-RP(P!vEk&QuVr^K=SH@&Wv*wHl(|f>9xF(T$1! zFfMzIX3}l9&Hv~lm)KaXrPBq@o%!u}Q6-pvZTSZu@V&hF9v-bbc94jieSNr{q3}n< zQsO2-MPS6Gf#g1fibRA=VW60gpWlo}9!a_U^59961RfsDSl>`)k5JA26DK02T6aqe z7z{8%s0aW6N&wIYWMM&*FsB6OQ+*5Qi2%xIA~-6_FC&9g$faO2am(uNlhMaMZVbSw ztv_rzSw8amwBsjaPM9?{9~Urg;Hb#RaB{T8#3dvr#729%yACL2U2@Kob*ScCNkCFc zu!qFhO%t1m@X6($54eYb0&R#Ta z0vZCm_Ve>YL)?!K9@3}>s^TmnAcYr8or(?~mG=#L1;u5iMBDdvck0J$!*>Z-ykvG> zN@8S01Tu8Ecu9(O@9i?>&>WULVd2zlfS91*@QAnsiJ-5dqL#ZDu+Jpkq0?thpFS}s zB_TFEEDT9@*sTM)RTl4g7cmyWhc*D}k+3E2y(ZNW@iShXPVF=znxJtvp zKH2vw+dK8_ld`iRB&i_EPhz~5(8R9q-urC(so{63eNx`ks}@YpOihlBCiy=7e0}kQ zU;Y6h;nA`FUJ|9Oy<4v0F6@Tt&WUp;A{Ln86@m$pdiqDk#)X9VIXT+4Hn-tG;rbwJ zX)Zo@{7jvpaMaE-AS^30D<4lzc2-taW_m_)VvM6kR^Qsiz1Z*IG9xd^q=mnhJ0N(k-CymxT%7KgvVgTgbjq88h!njE%@De%6 z@XH(n%_ERq(ZP-98;K0HyRE*i&tvhlY(yXW9T@-|i#6qk-g^66V?#Bs=&U=hoP#85 z*qvS;9wb+;n;W)-s+-iKj$jv7(GAhE~ z)7_?Dj`%wUOMS4c;{3ktyE+X#b0Ct4Nlu$MA%E)B$rEyNvNJQ2lT(5Nykt#vJqWj@ zeKes7g_+UA!txk001){d-uTIV&%JB7is-AhF75%DSlSsW0Y2WL;jzMJO{fQ>RPnhyjR{BlrS|Z*v)W9qvn1Gk(h5sQt7FB2L=Zm z9EE>gX=pi$QS|5*bxEb>_+?(|vWD3mO0iC(rQ6sPNE0hu-ccBTWKsX59K-o?bEW zDGL@ZxO)E7$eLHL6g!V8RMki=@*EWtPFthEjEmvhF_ax0BHKHzQ)GZii*~r9wdN= z=pBbYtU-X-h%gwc0FlVOyW1lt2M`S$gSxS?>gZA4;GmmIzlUk@X5_(y}jrTo1D{M`5{J8 zw|aH2Oy)6R0#p~ZyLLgZ61#HcP*<0imlv$Rlzn~ReB51J0)2d7&m)3Kk3{0(>6yG_ zN#-rL@ZkXhyB(Svn7Hcd1oqqp#MR;z9^QKH+@MlPG6`d;(8=ZQ7mj-P9L^HZJYbd` zot(ns<2{p-z&4B;0*F$R4Sx(sFg^?b#T{ig@ge5;jBiC z5&Yl}FK?gVkg)Jbzmh}8l{S(Yg{fG4TIygcA|4hV(daL@+u$`?w) z0DnUxax)U+;}V>Pfs#_9O&mcpoVdqO0LAkJzysZEzF2A-k&|P zvcEn1&vyL{3Pprp!PM!OPn!@M9UbWJuWdpkVojj`7_XO)e@H~Mhl`^PpQmbRM+1X> zim=s-`yCO|{<4K?`rf^UfO^W>j7bzZLv80u|nHw;W~8=5p>>6}7v9dXf7Kz_l& z;0gl+{DT6*{K^g;>eNMd6}Wg$&rh=?2#F=TNPo&e_~GDy4kO90n~x{YrnjvX9P6mk z#{OPKY0-(DyLa#0wQI+&U2A_>+hQY)4h?`((4?pv4XHK#r}uBI>SR;T&nd{yPKw3i z=ZJPe48WkhV#7B-%P3D}FZP(3pKe%{@#zUi=R@1po@>w=Q3ORKPR@+O`nk|^c7&+g z^4E<=huina=CwZ`K4V;oTTtS)3#Q;SAaDPJ2YCAh+4MBl=ujrgt7IK=1Lq=JJJA(aU%T|ODUf;q(uIeH zLSBGfAdz}F+NsZ-(}Fp?7@svYFFweyMMJVct?}7E|5ikKE$*?kbIdNBbKT<0CS<0^ zN5{m)#iu4E#79Mi1_yil1VqNf#YRUWCqz?y6Z1$jcz#a?09RX8>8TA{_URaa{;-5e z6OuwXu5|?2VX1%e!1mP}_8Qwn3MC;oTz9#*3t*2{&dBBz2Makuh5Y8Svz_F;!ZXPC zj-Q9G%L?8c$I6aT8 z7+A7p3oOIBluB4a!YT&VILrZ;oHYW0)ZINWKOZO!|8fwCs&?;I$z(w>(cT3GoM2v( zoa{YmlJATe9)*SBH{6hS_uU0cmV|kF+IDsl!y!H&79)Vy1oZ1h3zytvS69g9?L{Ia zt8##osGS{n;VZUojhH=KFbE zVQ1V0vu!H=hvgD<7ldh{S_@PQrU-rrV2bb|^CciCmLfD?7Z)hFqks%2O`7qqe-DjE zPOI@6vc8_7p`Nm`hP7)$Z@LNhy0W1`-P|0!bg2NM-U$;BArwH|%gM=8BJm9mmw0=7 zA@Ea5N>o8X;!QWX1_UtoT)=uJr>BNQMtdL1B3D<>z(DW-g2BNa~L04C27f*oIvU8;>-3{7nE1sC0h;!Bu1(MJWt)-v6_hpAp%;p`D zb;}J)rcca`4h;c1MCFF%@i$t*!OajY0H-&??kd_!5%ou5Nh)=96BX~<)21@v zEaAu#MkVJgo|T^*7YBwDlPHl&aRK88%RnfUR2S_o)n#|qCAwI$KZX*E1jzs}V#V!>Jd})8~)vI$o}g=H6%LG`%nj zDI_mcY%`7w01PwEojJ1q*jeL)&{2$=YZBx%hG+>*JHTF6C>$7a>~5_ntJmgkbMcRz znH@V~ASg`ABce0i6xcFYifUyiz@I5A5IeD}$Kn;&E}4-Z6&4148dHgDnJV7Tn%`_WifN=^7@Pwx2kA@%0O*CdS4BTr!m-JFKu< z(H1`O^YQiag|m%a>G_Ibc5gPnCj)?ksHd-e^P0_^(N#=p!Gz@S(KG;X|1Bv!y?4(M zW1FhM0jEXRF2J#3xakPMqKx;zpq)b2bgsOPErubdz$<5E8&Vj2AnpaohJfR7iQ=FD zZzgb(wpSO`8$=JAblH`Qrseo}d2#3;wXuT;Q;8F}rM`5}ffEK+iTo?CzhVBw>_{k` z0|Fpe!BT-OpW$-qk+=N#^^XRE5^e?_A^op_VXsq zD)6J}oW>dH(uFtbF=)9#&i{Z35Rp{F1l-A~YReWRX@U{}`EeonhP4Kk1PM+J89ARH zl#$_|l*FPm3S3>=kRKO5D3w*wE0zP=8Il^AZc!Vv=XQX{aC&;&l~-n6du`UOw>p=V zc`B8yN~No-OQ64Bpo2psKzUkP)bizpFT9X^D(W&47fG|L@fq@XV!XW{2Y`jQ}qbNHBX5G`- z`LZYeJni`xGOoWq@tSLruDv#5>C%9S6EDI@X?({xT5W21PxaPq&XJKWQBj!0*1dZJ zFTWf!J3uA+&e73s85yF82vt)PKQNH*?HzR0RnBp70$*QNfcbs^gc(DB?KWfBeP~GN z?H!VnV{`T_%(sx<0jEE%U?FUc;7b5r4z^W}j?S=Bfgu)bgArgVBm^;qoMU3fvi~vI z&SUKA@o@sCR&FB}pD-nb2>zkaG->F`fFOpHHF3^e|95w+x7HT6t+KqbvkQVo!&yND zo3i7_s$`t85P$0Q!i?nPu+UK8$Wim8Q2Y%*k759$5|Rs#Jxzak;`J({V3D{&aAboG zz*UNFy9juOcf7xU03@9k8t?>lqBgKVxTk>wJUyb*k^;G*seAiD9KGyTXEJ%)tcG8)%CT66j5^9*Go2Mrv=ur_7E+VZs zLDhNsndd%gA8r|?QFrg$xrf7E(!i+6c^T=csS#mem>L%R%lIMk5k4P63))1eK&!5> zIl1|(_kKDElSkuMP!&L!7v2alNHC`>#}oT4zWS;a^QQv+~5)1ha-uU}wcu zJD_RWyzMl?x0xmNMHIm3&{Y^#!SF37Yr@<`*W7gD^|Pi;&dE#*^6`W{_}Fz0_N#ZT z`R9Fq`4p$8aY-;#@maaLrEH5B0;7phE$KP<)8rIw6iYte5lDCJ6;5WsfZ6D%I9pWP z`a7nWC8wO7om*&xr#=(8!MJr%=SGkM2O=g240%*sEGH|guBl}arAB*z|8N2TWQWB^ zIvM%0{wmNXAH zfC);Rc}YG!Ytr$10KabqHc$F=o_qJuwm1%>hfo157#YNvKTI18ITT+Ego+A zcx&}d&0{PZ0yx}!{k=?Pmm@J)Odctq0MLANN&@#DGe*Tw8$ALqln=y_Wmld-ttb^T?sYw{F;Y-M)P@w`|FN z^UaXOi&+5#5z2hy4gCFEOcqsTr2YAcg*$h;WoHLYoahrCKKI2J=YIO>6&p7$-?%Yv z)vBDwAM=Hs0-uk#^+Vm=$X_Mw?+=fTUb1y-(EJ7HCuG3nw@yuQp~9ozVwkiIzLWDn zNr`7x7MbgT0jHQ4=EAG}p_#mRo}Qt%+~U7*q4%s=xIUm8=|=%3_@|4((CB|e&xxp? z>IaCD$IZ>8L_d^0Rd81SC|jMkpRvZQZFxvYr}B1Ak<8L{_KDLGw$Adp)X<{ z1s3`;jYhQbVE}Obc+#|A+#~k%j|~f80^qUlRLJjRVpC^Koxsl1f!@{=C#w;m-0&@E z`Ag0eaZ+DNP}0==Bp`c8V$7}{CWgm}4>x?yuBf^6SY`7teTDJd$Xc2V<;?K>hWhy8 z79W+Zlkq{Gl$M#ru}Wu87bD9wH;D*1+tO@8{BPVSM9Q2j%{wS41UYL&Ch{vIAJECu z`p_sLX}JaQk&qff{AreM;My78{QUfNSKZ*befwHuDD{!H8-rhdF73Z=g*ln zXTj3T=fp>bA~F(aWgLI0c*hrCY&>opnFo6kgBFFwf*5f^6& zZiZ>njNibrL2g5X&->b2I=HyE7uSbh`4*OhyL(t#dW?~r!(sB2Y?o13P|yuqM$B{M zu;dVgHWoN{;>>YzhU|TW)sv%taLiRpE=x;JhV+-EWFGNgSwdHwmX*$tZ?M1l_^Eo6 z!|&B-%1#_J3>O3E*CmUlM}&q#LNNxD#v~5mp<$_+85a{8_E%2ED6cbypNk)bQgDeG zg8@KcH>rP0Mv9S0(>7=3RNpb@)JZ7dE=AIcxp1qX7|yHcgv`i5?J0!rZCdwBi@A`v zhGWf|QWzmI;kss6Mko+Xn!C`|D5jZrcx*WAO-CP;lbDaNf4ZuMa6FF9sa~2nwAQMp z0I_kWu-+#v4GaKm8(=5~#0S|wL?p-x421wur%-Ett}rasq(WgQ@{2A|9Vk8$tn1yyK>s8x-PvNLC7MMVs$Ltv@3=K=C& zz#TUR45DacPbB3fZoc4on8A-_0Xo?#A~#Q8pZ~(kd0t);s3lWVGZGRK^78T)FD|_P z`l<8grOla>b@$!*&pw;5V#R<)gI8dhMbgh%*2)+Z7&ivM-3?)*^pBgTmk$+$n590s zvE1Ae^Kw13C*#1D^_v@d^Z}1SBIwQP8?-4TQK6$i?0kWNN6?BC_U=NCOYT#c4y2>) zZ-2l1_^}g)oo{M2Evqv-K*IuHhr-g5btARuZYVij+Q6OWg9D1TcI~Clck-M#bxNS? zNM8t6TTfFx2VG&~PJGgh1OSw7E%lB1gGTJ+3j4bY+JTUDc>r_h$DomS>tP9&d2?k= zmp;4+QkA)0XiOMPO=y^2Hm{M(6r&5~F-&;=8Ilw+0n;W-T`(mJl03q2jv@%b>Eq@W z93CX$-W})#UpXqLaY55MMqzXqfDD4hxY$^t5Xj6d$e%QO?t;bhE}J}M*79p^xaGDx zZol=`l{c-NJtbE(OgYf^@hg8>ccjFa$>;N&+$C&b3}{SQLs{PW!NK;bYOQ~WSnP!9 zHoH7zU50@W1ujzl@2dd-u!dAVbMmw(U#X4>dpHjZI%y+x4p@25&6AU2!Cj9g@&Gn~p-yNF+&c9SQs0=IEVZWl z_{m{WO#_oM^W!5WE~6qvt{&ny@9G+vlHkr8f0F>qm)3}qcJ{Cl(0_(2Zw%=bI4GFt zBxDt&M)`AB6p!yb{qk!byk?qk6ccC6san;!>&La6+k~vHR%XGRLY)%e7o40F&+(A8 z#fQ#Swv0Ad^jy)>#06q=;QKFLm}gQ1V^{+Q6_r?U`Roa>iDaK6dQ((#?)6J&gm`4bD5#(Sryq74;=%U}48ZpehVRfx zvQu=(@P2`VEJDK5Z{a{JJAT5VR{m29jeSi7ELxQC+;hRpmZAI3;SpZBxnO?G-YmcS zSlNlx4#ZCnjqbC=tkf>R9|ji;sWW7+eb_%KGr)e#iu_FukmCXD`23KSE4}8-k>uor z+<9mAgAc|oSrR^TX5g}AK6B=X!^6R2XrqX7CPu$j0ieyh{A($XsZ}e7C3!*E4cJ~= zm>(27!p%D-KQo;5L(y9N&D#AcUBF`y2oM=wsa!8xOLjf;^2g`uMx?qNYZP!YQFeBz z^iWlE>TLBGFK9G+V8n`{4`Vr8TSh`+3E&bG9mX+B&?^if&LDdmO*X0e9C)IL#O$kA zEGo>KFd;LZePwv!gCGqJoZyfTb5q!X81F6=>+2JG`sl@4MLWKK;oUX09b>6JMvMav z{oQTt1|X%qs90lgOnQTlef3)!}zq9l{Jkn zw1ewaXZx^=IW#eMW^Q6+csMMq#?U$7Jmw1qRdRjD;7mWBsQ^H2P5a@)XOPR#cOlY8x50 z986GhQV4AYf+Pfqxp*~TU%#S7%X2zPTt#MeT*z%#TdR+@DTJYfkcho3pYCxli9H2N z!kCz}D{s25J9>OM+7qUbhe#1y!Wfm-uu6MZ&|eBmg5cj zz2NHWEwO--XbvedyLJBebU4BlH(#9>6$ORQ7_xaH1xK{bp+N(^qJv1A#(Ef42)E^a{78mew&C0FV)8 z`ms?7^RHTY=N)(4dE0Fd-gn<$pL+C;E9W3`HVoCcc2S9{r?dFvp|8IF_`&<{ynNA> zznst??5_TP2##pBlcmf8nb@jEnYHjl_o1Nn8WA?HmgL3m& zu;Q*KpM2_`JMX;f_S^5j>-Jl&S}-9EZ~GVyYM@V9Rd(j5b>BVt`2Cae3m*S?lYz~X z(A|dwd^9^KYXM^lFp)WVfYC?%=(O|}(T!n12x6fphb$5c67H}xpKGv4q)p%j$Hne$ zt&pDDBDy9e`T6_z3x#E!on2>(Eo$hGTG2xk3e^$qTP=(<%Xm4sF|B(bdJFUff*r?kk2oq#> z1)>`rb=3wbJoxTLfk(;V)8AinuDo+t-T;?`#1I$|nq7yi0Orw2>ZOHa2hZhNCxZ$OF38QjZ2I)sGiFSmG9@o7D-tA0i|O1xEhBatF#!>PtgtYXNyF{vYJ~__+G` zz}ypDJvqn_QIP(CL*#b|=xx1{tAM#C)ygY5R&G7)-raR2wJhLg%iTSlbgs3|KXI7*)E*g(} z6P+2KE1|!??VL6&2^%2a%Y*p9Sw1}|Jk;4H*F`o{%Nond>zOA2$kN-}Tw1C(0phCd z*C-q7%C>Lax_Qf%EnBx9IaAizqc>1dc6YYv9z=W|(HUPa6TYOZ3^sQCsoh7)ho#g~hOZg=CU zZ++kc-fS2o`jcHC0y_$T+#asTJKdrKdM-*|KT#X8b-~Rx49* zAb(KS(ca3Qw)PPq37nd@hu$iQME5&+RA!KmK-UDRxM|a-&AV$_+toU} z1t-@wZ3C_C9o-|CDxsT%KL(>^YwHyp#&H0WfT--aP=fv~5JESdDKeC)B9+THLLwM# zH@0@b=YPY;f8Ttf=0aI>%pmjwuwqI}Nu4llR)iO4C({4k-`}pL^UggeTwkNbAI&W- zWAIC6S7Td6ZI`wXVF1kfxKr7KzE)LdV|}aqg08W~l0Em{`}ilTSHJw1hwpvvqb{}j zf?hW{B6J%NiUd%1wcq;LyK8nF+`E7K3r{{gZ~pvQ^OrsF^wW<$_3-j*@7z<-JQfFU zu?P?jx86Q_i^s{cW`@%g@n)%w{d@lWIm2Q=<;HLI_Vu+@R}aq@%k%JdvnX#JtqwyW zxg`xNw|I1BN5KkcR4xB{>hAQM%s50WNza~g#dSaIEgIv5L>!CIkN~c7S!3ha23KTG z5%3O)Nj$_SHh=fwnk~Eb?0D_vCuh%^HEGt|l@C1p;A0OhS$f^K2hNSMl6~FOKc%#*LbJp7?sZHJ{o3kB`?L zJAVADPu{w6$>jwzW-Pn)z6TzCbm`*D|N8Yd)$m+5!)JuRR0{`X;Z*(?7t@LR5u=3Q zeneA2TooP^ar6fvDe=SpMv8MpSO*(`l7zlvE*mC%WwKb0q$Gr(!mPjp7@!CK03Pt2 z!yF;{r$Qk+e;!{kbcdtUZ^@GBPd(-9gqki!jc|%0KN^xvj0-g6XOBsn$lVm(SPVZrtOat=pS|gjSGoMN;reC z81{}X-o6q`Fd5f6sPCInci!eKMOA6S! zdwYvV4`_gO(o}ICaM;0-4}4?K<3sWap`h8SLARPJeF%1xM+{oCc-L&TTmhW#N)?0Y z%1=K35fPCsf0vbHCL##r5*8ZkVIaHhQ_6aj!_Xkcg1d^n1?wpwl8Zi_s!ttbUgwS? z37B^C1R2?q;>huG#+O?1;O(Q^w{+=>p4qA$@4M*bB`=K2WD19!urVVWEqR81s! zs4WsrW8=9XHmzkVP^oIJZQw?aT7_=zCQ>Ls)Swxe_u3ZNWkLLByoydUY4 z81#o#0_*@!p6uMWukpL@n%1mo{^_UIpMFx6mi9F_GiHFW0W>WA*m?lYwbw5pfn;q2 z%127_{{HU1zMj556?N-`RLChfh^-BPIilO{?R5?ah@CdArU0}+OTVS1ZP)IqAAhiL zV9Y8SUnKRm&n&5*f@%5eZ$Rmi`KqT>FC)^#!o-xLfVf{-0_lrk!f8_iGv2{{ZC zauHC7fbd8*;S7zl{_&7Ffv;yRh9>4e{`kWaz0CVc71W+Ujb!sJe&vaSpihmh*>>SKth(I&!RDXC5GMc6Oo( z7K}SaV1#B=WCk)B&`kj1IP&01Aas#>f@;u8(=2;r6xfcn`_P=GHY;IJC(9bIQ#zU1EP=eirEf#aIM-Vljh zJR-7T)wOu`q(NvdM&W-(^a=(CDz%|!f;ckV%Mz)rg)@%&D=JD^;p!vXPgajyKNi-5 zE!$?-@~+NqHBidPSy0GY_V3#M^M;=uyX*Qp|NQrZXRD2I zHj=w<+qRF@?Bea^ZNZ+kwR7|Hhh-I4)e=JhSts-Fx3%x2;%|k(A|YI@aW<(?vOOB!uE+OkQyPHP_6^ zj%sM_u*8;(vWTi)1L3Y)NThM@VKmI-KqGo!ksMq14(a4TXOlrlF=F*RP9{L8yz=DM zx4zS^9D{ypK6wB05mCYnN5Q#u;lqBlQZqUO09v)TmHp}Z6;HqOO^12WkDb`XEje@I zJ^%NAkKB2EZd$sZ&#*WFmTWy7%Q%|+!oxj8+}2Zn`uYbI%3&fD#0@yLYe$8GJ6CNd zPMRPYGtwQ``oKWXTMylM{hwc}fU4WfW6Kvfg~cQ-UUtqPbVB-|H!W z*(BMxXaIGH_KA#NC{)$eR=n{>*^4hWu3p``c5V0m{qkeSdX67gl$11l{dM&_?^M3= zhV1xp01jpjWM;?dlmISXUJiWzAQ%7`#10IUD-&NHUuFsC;J zYj5kUKeGEUmp}(;xV?Ns(zCNC$*`j* zmh=d~5)&JrkdPP`6P2BvJ7Y?IO!!#Q^l(w_+p@O2dDt<{6MN2_neWa8K{q|3!H%}p zZe=eZobmC&eWK}A9@@60iQXauefHT?@`Bvm>Q3(a`M_!23b2h&%}S3AwRf;PzGr)* zoZUAAb#47w>0v*8`u3mQ<9SrvL-$*K0YBSAu$1=$8&P?W=zhF3=J{N zZHXpIPaZf?*1#=XzQ{EyHZcc|trI5XP}rooND9D!Fk zv1h}P(nhGKVq*dnO8(4wlfy=d89HnqT98f;;glhmbG-)cuq)()aSw*8rc2)TesZ* z^pBgj?bx-aqN$_4>fHKuKWy4xBy#r)@pI=?bG0XTzW(VijJF7nOPi9N3?JpOu`I|~ zRdnb`seZtE~|76*xzv=g~NvJ-|A3x~{vyj+|olM3=@PA!}7`?0%6bN0mEdb%Fik()kYT8y6?*U9eg?j4(dIC7rz02W=bd|7H_ z5S#t6iFt1Knuq`Sy^&^+V12)Up!kHuY+O!wvNEw!3-U-h;jEOTgxFXdiSoMQ_4`iI zZiuGMof_%mLvlEB-MWzDWvqVww6%eAPjmC)f?%+NIDhdz7UI(7B1ALjxvzx;yq-3?PzN9grqbvPUvJ}zgTjdTFZQJ^#{6c76RdTer%4dp$!#Cp`8T(j9QJ|52sS#?4!{6V0Exrs^^O)` zHq<_(<dg(Xd!-2D*Rz?A?bSdn0D%M0X1lpdjZq#Q}~Yx2*gOXGOQVm)M1l%L&3N z@%HuC)h2XvvAyWvJh(e}j(WQkMA|`~dBc8UyZMA=PRU~V5C-@B`0=;fPjPlQ=XS4p z?DcO9J+oP{n)8RBedMl}KHJKIpW>cc|J}E`uq+ON0Y1o7Wfq8IYP`Mm@wlM22@deF ze5d0Gb92}G-l%0&`;RwVG@&pGpz5;YTUTu#7E;53FP*hu@jZ9n^#H=hTz~cQMGNO& zHgiT{;q=LqCl>%#Wg`9(Osx=5-w;LhA*-bYs{t!ez;lqxWSw=V|MvV-uYX@WZ>mMo zS!y!?^C5EN`iI8mrzJMjHmOXlK+G@lhjW5xd!GAU4_qHKO6*IMU4~Uy`LUxTqeodV zI!lTuRZT}vl#Nod?eNh`)0$GM*yi5iIXRoil|aA7oYqwy`Rx1chG(#?ooLdm1^3-| z?_>AhbKh+%Z(NQ50`um~n8Eym^K)_%kpa-p57!VfuyVI&ui^rtKJ~ku&y6djL_s&~yzu}r| zmRzxD_GJrZOrJAzCdM_ru&^K}Cn-K&J1G5u(67>Z?OQTe|D$Dy%@5E&pI`CehiBHT zIkjoisyF|6aOciV=gzG=cWy^TMNL;%RcGgp#>NBn^=pnC`TE3(Q*cV@>G6n(k+3{7 z<|MwH2@pa6xr)UDc6M-PVo3nNH((3HiU^1Jpn-WLd4=i$@Do368dOeowYBbkfjCnB zN9XBx8a8Lgs%dK4y>jKLC!Yk?(lj^o?CcV*x@y8R&p2X25z~nU_5ZD`aefzKjL*sg zWQmH2GdLFQ_3}u|hJ{q|MMdYivaY^fJQeh5L|g(;A{M#%`|A^p^{V;FC}x=5-DK|u5&F_dORMRrJ73yj z(%2e_9EuNZy!-b157uh^h7}zp$4*s^mac__fuT5nK7HT3|Jrpo-17b53f(7mDS26u zULFV>iSQ<=6Q{Ts<&M#n6!`f{M++d0DG-Z%1NCt&plz@Xj*dn`T+o3Liv8g40Dpf* zNdz*7J^`e|4|F*A5QSk3gknOY+zV*JFE-jBcAkwLUmP19jWCyZi`B_Bfh3)1h&2I} z&zivBtO=L{p``h#8R*{d!#bwZ80@!|y6{0Ii*P&v1%!oG%c{Tl==)}yexSGdY?fGWe25u}Q=R-__ zL4qnrSFzo%ablJ$dVX2`y8fy%T5GMo4 zQl}*;deWPoCIlEtS}37tE%@q@KHdle&1 z%vnhg*)uG}RcC`R(A)m+*Ixf@>sT(fBf1S8!s#Mo@wwT-SyVuyku|lBmO*bwsZbEh z2Xl`|>gF;@EYS*;4 z>XYP{BlG|0_c&+z+S)V?4LzNm%AOvzT+V~_jam(vuEXFUu3l&|@f&7Bh~6g00YnUN zhahF~PD(`*&E4;LHV%wyjc@sS@-14r~dNFXAPaQ{l9#>O`n+AMBn?>b+5em_QvgNAH4rL znf818^ojYgzMjVRA;#|$&Gs;EWT?5#5Z0KX76#%I7GjWB4y^FS$H5@+aO+O)IHY$f z5W9uke)nD1&nrZlg}{ISY$C8L2=HQ(MWn(w*Z^qlJ#aA~qN>^HhNh+0!Je<%4f5u* zr%T!{a0MdcHJk(oMG_a0sTGKAFOi1F#^{}tl=Aiu|Ni>vR^5z^*-PLF6*(ct*E?U| zWN)8ZVE}>+`(kV766_~3$@&frbvEk^7x9X3aIn;r?v7ahca&|~dYG%$LEwJVo%cL^ z!xah9(ZKo;?!ev*Yjw0aMH<#leO?h+ZPlonSYs+e2^Jm_nl-tATcWKcdv+hMVI=_+ zk;sYL*tYg=%a=}bvLH4q&W0aXt>(BQ1TW5?G3VB+=Hwy^K&T7yw9^0&;T=%aXcv&H(<|IesxQKmGNu13f+C zcoY2>Oy8v&!k|V|{Ln)?uD<%)S+jn+@kT_x^9c&_pE9Knpd~umZ@~h%+YLkim#!=S z88wd&1As&Oyg?YyK2=*uNgd=RmXERe#4#@DrlZh1F(E`Ekub?337v*ajge7aVor3} z_rt26$0a7uC_Quz2r}VDR(a-(v5T8Z)wprPUL)Wj^70)urV1cb_O#jJQM`-g>T`}yilSfc!pxbE4oAA1mSR9&=fc#jxx4OPry>ncGnX(E=6Hac4 z1{pLvtB>qBTrrN4^^p@aH00^62S(@i?DUsjb_b1j$5YsHEonf!E*qieUw5P~zQp-E+&r9AgnX7KW>fWZD&r+;!TailaX* zUApv)j;A-s%pD5Mt*g4+e70|@`WLuLxo9z}Z+_SYUf(PQ2oG)V>MGHjGQuRrBSD-HdT)S}jvYf~OlO|#P{fbU~I$PVQ z@KBSXGZFf^wY{m$pycGaOBPSf4`Op_j@5^Nrl-52ypjX`Jr%VUaZPL(uyBJiAviSL zL!W|O`SqHuI5Y96l#M@p_N~r|!FI~!ODDyIg1t0LM75@)s#ed31jeS#pPZYOmKGEc zVA-IW_v|^rwNh7K|7(#p$27ezk)m`h?JG}=NjBFvGX z89@KwAaN-mv=$R@k=Y*_>N=sP^VoDCOOeVHiB)QEFT6zwh^J}+oIEU$DAI&A{QUEX zdT@Xc767}buP^?ptNMh(@0Kh<8B4bIf5X)Lj$@#*{NC>F_R7j`n0vXp!kl%$*;$;F zl>YqlLG$L3R9rOQt3@iH-*F)0*YtQX0DNbIz=a@kOG^i0U|HBtd3))5pXlA;eZ#}T zJUoDax#J$t#N90@Ha3*2u<7ike|@$4g5)mga*gaJ zpD)auI+Ihub60)ewo z$i0gT#z|xXnTb8aRxFzlj1bhL8^J?^?BgFB6Yj+g;pE0ozS?oda%_r{YI)bu13N$b z*Xu|b_WaBLDAEPMW_6;8xV$`Xy{AFn2e1F*bVJ7lHPO{xyM5ETS6+AlS;Joa_xGKn z!zpN55n_rP&fq|IWm&x?VJKnmFLre`i1;Wwa=dyR85PJQy}UT%_@SS^{ABN$()RA* z!Q98(4+wU(`=^g?x$E&7U5t^=nv<`-`GXxC{!C3VR!Cr2dO^B=Qw;Q~xx5Ybj_%WD z<`?GW&73i5jF^b_j?#h&$*?+r4AK%y9-NGg4Z}80OI20#g~amjL-ZFt9n_W8Z5KTY zxI^t-oVdLqau1(gnBnj1i!Eao{bPM9lz!f^khHBWa)89dWlx=)VQ@qY?mK+c668mfQR)#KiLy)9 zGj6(UL_IN%oobs|ID5gQEG#7Ba}Ud=rJ|}uuQzZ>PJ&Z|3Fu5>zNu}U_4wQK@KGvU;xp8`B71RSS%)EE(*7YZ(%7 z6Zuo241!}1vT^Zv!8hI*l$q%T>r)pOzJmjFf)E>NjRGk8#wQ3}*jriIdF03l75!*b zVy{DH44-xA9B_^i;hL>2Q~^DJ_uv=@2m9nk5uYfNKq3P5_q+J}$7E->IyxSG;t4Ac zaEVqU($lqOKmP+p|09SzJ`8}ZoggJM z!{E{#C@HN{TX0DAsk*kV{@|t??<>{W&)C|DQxYR#wQnd{!9fY5@rdMP17Y^y=1*Vw zdPlJ(JOEZekF4dR7azI%ktg5#VimH6ZP>Ja$5F#@gu}=Jej^|>DJE1O{6Y71`{r$@ zM_Bel03Q++H{w2wPDt?3C3iGl*2LIUD$SfaBg)-GYR{msP>F$p8>bA?#+nFz(ps^8 zUm1YH7`P2|^Kkb_NKG@aN9q0GrDwN~&iokm7K|{M<>&6b`M$@V`RLoV$m;dWh98a= z>m$IRFkc|>@`_GN(Ob>-$}69I;&r4Jvt&P`iOQ2(uDkO3KfmzmnoXNFY})kw*FQEG zADX(lAgyU{)!R1M^ISjxO9IJ5B;(}n!4L=E*(V_?DmBjUqM@hBIfY<}`@C0P^YC4_ zELwhFQL}jgB)ZX1di0)amp$~ik9&sMo;l3BYJR{dVP3H?oSa;e6HIG|2Kstkq#m%7 zmf8=E!G#3JC8b4%!TZ9(Oh#?>r&s-az;O7Aw(>(KDlOr`@Ydj9@BTHb4I`uq1+dOF zFFrT9mOuebR}ZIWginYFJe~y!xd>aU>iF>a$A39x$jl5POsCmJOA|ROWgYtE?HwH8 zWWf-KZ#R#J4a=GcNk~F4u5b_2DJ*dM0U%}-PWI79rL-yD{>#w@GX^aPLB9U8S8u=l ziD6j`ZEQNLDq77%F)%xHZ2<=dkHCOopTap2d7(S_$>ppz(qYXz5tF>fK4a?IwypjMv1D7*J z&7R$dKY#nBFLvsaxQRVO5~2bv+%>kg(8zGRa8M|6g=dy&(Nu&SFKcA zz;IeRo&SyHaHJ3;I~sEn*bdA9IMyCLEz{Zg3usd zo~jPZY{r;HvAun7Pme~a1OotA-wl=nj#yNjkIVoF&m4HwRmKF?wo7}Mdd)SGfPkHQ z_EfA}d(m!V|BZ7vZezl6RQmD9o0l#ve)G+tz(AjA)8bdIboBI;q^HMRdu{llMJ)NQ zKHTTH2};Io2$!y+@nHaPmPMpzNDaDKa%lbS_dT)m^r()oDBD(X^!Dqnd-2`x3?n`J zMJ1#}1j7Eu(8LoP4g1zVC_XhwZ_y4t!-p?C^7iVzV`YM*Td}*V{@uSk{_TEkn0D69 z{=QLjWKpjJiAZ3=jC;>dtBV?k9T0=PZ3lLa=z~*wYUJ42sc>_+xjEYzNUC(ibIwSM z#3gDte6gpGNtiI$PuvW~5R4JJNhIM(SxI4fCBR^R$Fuj}vuaQA*su%dV_V(1XC8QP zSLHA)p-~S5NkHUiB4_$6F9V@qd)40CZ~JpmecRZ205oy-(9ici_yU&!jS@kl9GwAx z*ap#)xrJuu;E0TI7AExd2=S*jI*zHC31UY{V8D3h0l+MD%SKwmtGmxV{O~KaJ!8R2 zTp9a*`Q*A=?muc^BtQpfmpEbO?Ci)ffC3h3Ozy-01B_^}1-n0c_oG+-`N~7j{&Td2 zE|dgKo0J0Qc$1*b@X*mHnm>Q%`9+t{o44%tGCkyGMKmA2`T7Unt>3+O+o~@=TzSJ) zmn~Q@Z`t+FzWLFq^Hqq4jSVR4Xn_*x-M3!4YSDrhzBTZQv$1JyZ@*~WH!ks>rUnjJ zsbwYG_Lf>u**_JMW&2#Gj69_uQK-+Jlc7d|4k z5HJ&(xp3LND=zbPcOT7&zo(_up#Lqa)*i(gGJ6F==6mMg`hR}0b%aO=8UU&i>HP57 zJ7QB)<8!YpGGN|}t40429x5R>&p_BDf8pVKU;T2EAqo$OiSZv@#51DW!9iJ7O_%P& zzFm8dD=7XnJE-pV;-{Z^YeYmZd0Sg6Aj`nOwr^gEPfChPpS0>g>1Y8b%r@~~S%6q^ zFo@3#?in-C+nf8$GlPi31;-;SKAMFWW$-`f0)$XVMMj3LyxDu|RDuP^oF1kkAeA6Y zd40V-iTK|K@jqUIs1C=08>|QrgoDTHDlRrzleTNr5NPIIcL}7@wXeN?@ZNha!UN&I zat43>pcvUP@2lp_+4spOHX@N%VPWCF{uO+~4X&xFlDxdo>#mc;#xmLe|CHH}A#KNp z0l;2xmO77+=g2#%-+1+3M@}5tymjO1U-oKrVLe&%y~?J4zw%o3a6?sFJLl}oI4JRv z3u(j(Kzta4i%H6#95l?8CRG90{vB-<|9J9=^{2FsT)JvSnMomI zEHVJ}sOVT@xqGjo`tb)IdjH!WArAlH+fN_5|F)~HxqVOBFn>F-hks;yaZF1B2 z6Z+B<+rNGA&#!e1_qRrxWW7(ZQO~+tigz5)hal`zHtsoiUTImN4|@k@FW-Oq;NF90 zjvp;*v_ySx;Ymc43AQG7Q(MK(l`H>r@O-T?h#}@Q)o1>4|IL4T@k5>AzP>e|h|KF2 zPYd!xno(1NQd$uE&eK2P_Iq#fFtt1sU5z`p?;kCXlF&8qiYun4M1(^vKDN}n;q0!( z^OnB;`OnoY9VVIWUPbc30hpYmt-+6u2aT4T5C2u#*afYk@%-%iC2HC03?A>;#ywMU>BneGU&HDQ_t>1sQ zcI&2%W!>KX<&(?VBb$4KL6?FQF_w<+54Z> z4^L}l;o2Ti4EsHO@`5D`r-|+L3%*}d_u}&(6xFt}*~IVK^GBY2==Q7$c{7$=^WK`B zO0vxzCd{0>WacEq@BynZn&d+4864&>;TqlW@iQx*e7~-1ER7;G3}=pQ`SVk+8E4qS zIRgugt*bwLZOwl4pkLji8ZN>ZF*@R=;_Mt2ks2Ri818mtsr2L|ORWFdYeP1^lP2q9 z#nznKxbpvAJW^ISwg$4j@!Vr~-e0Uu0%OpDp+T6}R-WAS*h`<|Y#r!R)>c(qsG{TI zrv4B1mQKb`gYpnY08w~{931+gi=)8|kP!uJ03<9VVxF^e@bcxhj*b>)er5JQ19JJ^ z4?b|{@3*Ba2XQK}M}z?Cy@%fjk`W)zdNESEZ(s<-_wbl;=bgyudFXUe)uxSj_17GU zf3P{a1l?uSYhJ&8`x8&R79U^R)HI+{O?d6K@awJv+;2a5(!s?AY##EYlDTF^|IB~m zfA6u~xPHCKQD111k(x6*?|bmY(K8&{c?3mFoRAmp?_q1BDLQaq&*5X;BU3!uMyF3+ zF>ey`c5#Yw!@eQcQfWoSi6gsy`Ef(LdPJl-J9od(!l_dtd?bKHQm=pjPj`ujr0(qg z7oPijm289v)?xC(6?ZP5<336n8Z?UYw7k4{-FK^wo-XP%x@*T?C&4MxUwrU7#Je1M zX$=2&m#q4!+wVPT6i_dB_H_^4I1f5vuDGnLT1vnG-?Y}sSjPo!l<9^#)@f3jxdKEs9Nz!xW_PMW`PdP-ENrhKd%`w*DfIz~lhop%W#nw!|qb-g@+UKvkfJw)%5leX;s% zMM+tGOGjI$vGz>p(Sr_YqT`h~TZ?f-elQEt+m z+`@0XX{ke3U8BbH=9?FJvJB9=B`53dK7Q)(r*FM}q^xPg?c~6Boig`|iHX5LgJ%!# z*?IIFG7$C1I#fooe?z)T{NiuAW}&-?#}m2dPRMZOIhb{pFzgSj3e@Q8>MAWSKYncA zkKe7T(HpmrZ?VqZ-CS%2U~?-QzP4>+vZmjA?ffKqypP6vBMD>i`SY89`R?2AH>eC0 zq;`&in8cg~vuEY!BzQyaB*lyv#c0IDppG5g^4Nn< zH>eD`PWyo9goT&QpO~8x;N$BlA*NFbSx0kA!^z{vHmqN}^H|9!%58r7gv6>NC)%ku zjiV^==@%ZHm7Z?$(loiNMxFHkmPBCMQ5$4VBw2wGGEXG>`L4TaYim2Yx?n~HI)D>^ zUTz3RzyAJL{o^0d55QiC81!?H-DFB8@DE@c_}YN6Q7E*Le1?X+g+izl zhJ-?CP|%9E-U7D8E4c6f5R%BU6VX~q zPXVHVfn8`z%YpaaJNU&HNCbh{<%v_LW6vYed_O?^1tjO++=0S1f-ZDJo; zR*Csj_qR#}Hf{_+XGih9D<1eYk>_BLaMkj86H=1l@?}yaNiH6ltfZ{0`1Fxon>W`D zzj%zN2l>O0RK^I8N-n?h$~hA=VfQ?S^*q|@?CPqlsyen~?Kd0tT?lVzKlkd}S1z0k zQ^OHm8ZqneL;v`153SxmETxXEo$Jl_-##ll-4FpI;qIYrtN!xp$A&^bfh6>yhi}P_ zi-Y~f7z_ZrurU@ur4vVXZ~SFz=SbdZB;`PSW5t5N*?+~gOA0enpocN08)>4m^L%N^ zj$gjpviD@43DYLSR!q)}t$$Sdl?$h($H)3Y?5%Tqg#d5WtABdqr{iYNIT!EHtFOCd z>5NPmbfR!)L(#)`KT^~_I!|g)qu4Y3-|s&e3S45m@hoEiWHQ;_?LYke)ekIkeHeW( zb`C!G{`s~TPfyUe)r4aE(D`BW0yU3-m;k!7^lq`43kF^ z&c~f!zVhJPKbR%{#TDQ=1wHoE-IL+lV~|F0?5Yg=iB;Fy)^_aF(N!P*>sV#Wh4z8( zG%=C`1zu|%BZks;=8kmmubN5|!+v#C(eoeM!7oRor!3Xb33-LrhVHI%T z=MNrw`D2BNn8GGrFTDDR*YBD`Fr{vyNxFunreh}$ulw?o!?66h&=HPVK6By!z5D2u zu%I(vtI@&()`3{PrmpVjp&g%n^m#+isOFTq%55Xl3U6OACoMi6%-$G@J20nM%!iL1 z`+3!eyN;J%=#cICt_ca@jU~k`qjc%AYaV&wjs;`eXJYQ^8XCTQ=lS>7?J-H5@T~bC z{`GEOFTGtQD>mA_jzKlIwyyp1pRa$sc5H)H6ClHmADtMhX|Aqn>NH6W|G50WJ+u-z z1T2Z-HFiJ8#z5v#i?;TW1ucEiaPV}=UCfJyZy7QG6tCO$_MUj^sr@A-xO`!f07M84 z05-V5#U(Tdat4iIllh0nUv>4eDLJVK zCOx+Q7TSW38tjfVs*b}4Pg;Izi`^raUpXVtR49xQvrYu(t<}3vlo%2uC_Z!cgj8Q| zZ$pp`$+V*r|IF^4tp+(DUHu{!OwLB6b8?%Gxm?&-5K2|(B=Pb0)O5DAb;-xLSw|?Q z9UO(Bv1!*|yErc;0dzw?UE}4;O^wt$&{HaGuC0+9#(Eh! zWNHkexM+IYzW(5|YMEJtVWUxWoj6vLGdtgd1`N^kwXOdAN0}K`MBB4IWxHo^VqCB( zuK>#!0MN5{(4n>RR85;MPT+-{!dRR>ff4x=CtiKkg3Q<$A z84#D0fLv=n9#SM?uo>#_>jfiba-MlP6DJmABx@HB?Wdxx;=_Nvw{Gixkx#I%M9f5+ zSP3WgY}|dC*u#wbBMpqddBvQ>@NiFecS}5Xjj;<^br7C8@C6d*j_R^D^Dva6G&`jF zaf*mfUvcHaq}aIN5MNn+O^0HbMGcDNO`Utq<%OOS3H+N+AKCrgFS{*>YCP0hUskK} zoS&ZnP7(>N&K%jjEdNZ;`-30)a^ACp7n{mjrY@g@Y$N6?G+KBV9nMcIQ72aq-#~9=dvj~YSX(V1I_K7F z=K=kjooh0uJh1Q%NP(elt8X-lx;9F0?Svw6Ps) zU-zxN+|S)@?A)t3-=JKosVF{le55{;w$5L1!wtFd;l?+}X!klhfhFEScB;lRB{h~< zi(#Geg+h1Fz^Sul&X|ysnVl^h=qj&i9zOkc-a%1U%$=5*7!P5=7|viLi1t6H0iYlo z5#$gCzG?I3hR#lAkj#R04nYLZ=Lh=vg-@9Rq)w7B8tyWq#ZTU$8US2{4SV-i7Zs_L zN?d77q7RhxM+S+Aif-TzGImV<;Sh{4v>?!$)F;R&0JVxkDZU<2l zKF2|O&B?uoWR?ZcaB>g6dilb%=txL3jYlzJ`=Wl$fPBy9y&Uv_huoCuQ!*1{A^taf zor^Oh>wn!1!`; z^D|SUfdyF;2E)HHxZLfp8z3f!^u$V=oACH3p5y@%M zfhIx|TE+mNMO+I4SEr`ZbFe`Vh)kVYI3Y1UJ~|>)A{MHYJ!(@+2nt}Iz{rV{CSNvl zYGHm(W=c{-Xb1~|Wx_^c^b3IS0Em<&aSI3tjEIPePe@EoPEAcsONx(;h>VJ-kE@Nm zR+~x6AtgIEBR-1gj_5Nu*#5$ucYd?ySZUe0)AfDRa^m0;$4pUs2m220-Z!QU+fE=v z2o3U(%xdNlsx40-3J8svH6=ecJr&8kNz_h@?>6I2L=tB6#a@9y0setOeiE#@-ch(d zzF3l)nKyU#tjnfOo<1=*DJB|$*d?y+cvoPfZfS0Z5YLhCl$e>fV%eg(g?Vtm0B%E8 z-R91gV|(_>#dLlP2WlO`AGp-jv+rxHxZ5PfJ4I zFou@L6H2`Nf&v3Vf_*yb>Xm(_V-`3#isRF==g*%rZ^pE_(mv#MMpW?eEOD zX=_2~qkf1m!eY~}yY{LT^QJ`vkbDAWMcu@4)WO-?S5$Vac*H5`6`6bAjSGC-OmGon z05rNog`NQsAt6Cw5y8sF+RjmqU)+g-;jvSuOqn@la$!Mkb~5hLxR9Wb;D~rXPp5{O zYPnKlYwzeC5HWq$jQLXwvXbHu@8Xhp*=1Z9cs<=l98HvGAkM!q9FogV{_9^IGMO5YYiVXNmR%UX!E7KnfW+H7 ztgw*ym_nssG!urifTNau@8s*-boemtcsY0#x!k|6zx&LY#^cBQ3np55fDt6*2vW0U z%f1(0*!AIueE<)L;Ns-u>**;*-nY=u=sWN9oj4IwgJ`W<;~yjRj}NH6>4Nzy6E9d+ ziTReyAv%i~Jqw`AxS0Scl*)$sdgz6LeStI4zt+~KeLFTEIbPJ#g$UI4?p|(A&M=A# zk_ZNm@84U|BKHZ2&C5#k_wsVQJsxwFTA3sxy zsG}Nnui-X>iVnG%LPMi+ax>z>f<2I1z{v?$3#{(UPXHw_8iI|%nc_2tcdp;O=foIc zbNC|H#I&r!ytKHeNEmOJR4*7e+TPi|ZR6T)I}fP`1|S8Gj)}|9N{NbyKn?`M3C4@i zFgCZelvR`-KYX~m&n_Y?I4Ud@CAEe|mMs@THx055cQrINR#condSK7#vsJwV{hD4w zhYDLn_7uBFBO+sSvQnZ$gTXJ6bgEEm4od-RVg;g~pg(J(zMhIM6 zT5&G`^$Pd`sfSNoVnQmoKKN^(2^SYkjkbwl3_x$$x#ORH@WHXOmC9lL9N7VTM?p&7 zwEM2RA|yDN1ZU7_s%lEte)ILNLnoAKERA7KBM{)YO1(lt0tS>sQxzH=JA2y1#OUY| zlqYRiu!~q%NM5S?`g0}c8|xbUBf|aQT#F!ay}hswf`>p$b3;{SS#5n&OG~?>7>*Xw zz>whRu&^M1AFO;Za==nZssI?xp#Q}kE-d~XdV&WNLH>t>kEWYF_|wO4t=Y}GnseE; zPuzM1+GYPN+5O%1kG#$Z+O zkN_1k1u>aLXPK^$F~kHf?Y0kRgNb z=pD9&j_v-(o?2LtjHw4KD6g#Czi-Em?c2(0TQt3z5$^(r`ve39__%a5wecmMV1(xt z=Ar|}R}ne}qXn1)!6>n&rt*C8i6h5~dWi$on3?d zeKB8X1yhPS#SX%p!h;L6f*pTjb2CUs<0<*07{c~r(hZHQOb(r#x74-fWYOs_{{70q z620^Rsg56f`pIR5*~DmVOtKi)j6tDeI0`VXCUmd7w6?CML#ALz)KTc3*99y z@XLouI)39!Aj8rP3M;#;q5?yMpc*FzlJ}vQhg1qf=L?Ew@IS`@P=P%(D)Qpu+V|co zsi`^F(E%$TP#!-6B%P&`hp+DqZ@+CreE^2B0n8YQ%{BWU7yuX)2?SNEzi-^St*W7+ zPA0=q0y7}g2Ad*h9?#Xu36aZFCQXXH_F6Odrz1^+&QQQhI#sq=3Q-N07jly`qgO}PXpkA3lH>#IF3OFoZztL#FY$JHhhcI zA0QF{3k7gtbaZq8rNL7c7ZtJU;X~FoO!RB|Rx;=eU=3-ar3JSRm;wCV)7{bB)M6)a zmbf@cq=@4Q$9iYn_qc`tl+nPjZEW`1qXhtHa0yjbRc`y?vu#Jq90h#raD49M>h2_T zbe4JmDENAN`T2Okses{z(S$L^$1cDb=!44u>=TFv=UN#5psOQnWC^f_(Wn)QcQ)=+0!%?Siv_gY zE+S1Rm1qK{v_NJmm7=-6uC+_)?&S_UBo}9by>NqK>d^$S;K(KnXBj~xWwNSjMDwfb z>T2(j$x*pn)*)B*vd!!u5aZ(H3&c{1GbCZL(a}g5LF6$cE0CfVki5Pgt|PLpPPq~g z)>e!JZB%%PwE?gN0-{22hVVRrb+QS!5Q`ZAOcLQsArR7N2oo$OhBRznfZ*5#AO(J- z3=^G#wz$R72h1iBpAVnJi(>%D^<=QHnUfP^08Z`t{+=h_Wa7-Yy!n5aAE(8#m>TbCl9boANFba0I zKq(B|k9jfHu3(Jt;ll$$F$JR*CQ@QD*CPP0>e^cD7iCX37*S;SX>V!A|45hY>|7-7 zE+X)>9+9CTkk^v@P>5%bg({a<)z-pR9#gMSD!RM6;9UspfYg2@$d8K)e((odflx;f zB^y{NQ`?znW57%zjb%p%fM8u+by;a?U430=j|ylQ&AWU0#zaL#g$83Kvr`DH3pOCS zjc#DR@H!g8zQep@ccVpsOXe_R=CJ_jqJ9t%R!`XYpgh(C&^X~~v9@8)qjPMqQ1Zh1 zLk>O6sa%dZmG$(Hnkm7_RU*KA@`&n3EQY`j{~WQ9NJ?P2Tp=gN1yg=vq3X+wd8x5Z zViX|Vwyo<{efxvlUK|(@6cH8_6B#)%C(F;r$E4w9(zpW?F}CQ5^Bb1kByiGt!4qo0rdws{KON@wY5d{^)OpPm^S-?fjN)= zIdswGP~Vx`uK(rVvxq&VZ@tyHetnl(jhzD*YFnTb#9VT5@tZf#IX<2zl@5dc^d1}| z&X1J=7`bRJlmRe#xZtFNfDQK$RzHc51@u7eJAr{WRvnyHEuXuLI4dowTZ}Z zbf-F#kPaONfq-3b))SnX1t9_~dfVw6OGK*M1TT?hj}ZdRODy}h6tnHvMTVMGk! zp(jKO4?`4-XNF9U!341;fEv*P9$a{AYS09=+lHhA5*ZSFnK4wu2R!T(-1@+Cm|P%f z-0L`+@tdI;h6YdxAswIZOecZ^@%S1|vtdFWjt&qfEu;;gsRLMNKy6T!z(j!nG&ON{ zTFwCIPz$>?w9+D7jY!!5XKwTazyghOq!4Z}2%v^FjCF{G zM-&}&1#&zFJ7n+xx8Wf?lJ4jriyteH9)l!-D_v}$A^Jnm9tC-91)>tIh0K^_VNe@f z8AQ~O2x!?bD(nF62fM{I8|*3 zu$l05tY$|24pT|_O|3IE)*m|n*-{*%%3q0eL0;%^z`vmt5EdLe#7W@pv8Q*ON9V#Yy{!A#(rKmZhT5rg3{9*Bh9)795QskzFa&=v zSSO*6vLT^K{DHoHdUTNg6wGE{>DfNgRLA`@Z(E zW1n;0a~vnj>|YhN?#VgF=REK2d4BKja_bfw66jYLBWMD+`<9fzQ25Dx`__KuGZ@=U z1K>D}2%;;qnU3vW!TX0DC@7d68an&J3)pPDI5-GTV_t)@zjyx&v!f%(IA*ciJ*Q8v{rcCfWo5$TuVnktr~dJ_Sc1h! z3p;u9nPhb8Uu1x~WXuIfWmZajC>gkNM4}C)xfChnSj?n)3xi1kfN#cJfJGNeDc?h9 zs}3U+Y{F)89m}>3@7F^{28$-?Now##beA}8{Dn-2v6N1yC8IGj3f+Rm4d0O@Dx{Q7 z`5w%&(TvXA(kukM!UmXyMjPc__cz>KxBm{J#~@0y=pl*TqjwW6K?Ko>&R{TzUW3u2 z2GN4iiC!XlAB1?cXweCx_nABId+)pM{U7f6Wv_MGK4+h`_vxQa(?=e^DO}_j+Xj@9 zbr)H;+H%o)uJmATmiaNODOQN#CdrFHhvn%pB@F$;E$@+_l^-vIHtO1H5I7?RT{cVG zgQh-hskj|5e;Ei zv)pJW-}H5LU1U!CO|4z15fa2uL`hMd)wG@EAAnBxi!YGH% z#U-#nDVM{JI+_9oiRM`bGkzDA4go zny&5NU>kYh9S@= z%O79W$V~U*tWoPCZ*yhu7kwyu<1f;w|8P&b(y!GB;F5|DCVXAMS}jP&F*HPK;b0mYU1Ybo45pp;%jJWoz+wT_+ZH$ zbN$a7L&*)L-p=)cDHj7Wo?<-tc7o&I3d6S6?F5cJ1*h^%&e$>i%#*EJ)5hkXoxJs} z?=0<}OL{pDzRK;cL~MTI&cMvovL|i)4oN6;e9-o4 zXjbRAQ#jK#a!svwrP~24r-yZR?olj4S-Mmc5@!V6414z1Wj(dJ0=aMm!R%Fk57-6| zB;*Er(9g<^VmSZ)?rG!_C+ltko3*=9E*v*h*M7BXAEW9)aqu`BkSklC?J{67(>`(K zwqr8w6lban4-7Gvmn%|sOg3;Q--x*My1{>tz>%5#*8>By9slc{+LNu-Eo)w08##Ub za`?WZ@3q4p+?0m;DE0B~Ev|z-{+DV=@~PAGkoko;J=&|^pZz1}zZHSMxIf78ec}fP zG=tgg#6O86lpLG`wAyuOJZS?GJ>IAWz0TmvHf;6dySqvVlExe!{8l$WpEeiPx@atX zB366C%^`h8k%15}Qle9V=>mgXnLJ^f>JLRxd@%VG;i#RmP?Z`U8J_NnF{aRcgP_~B zP{^0V{9FpSi76za z$`wSesmjKCzK*lyvv84r+1qO9vB)fgNx)fh7JI-ma%WU07@em;1_cn^2io-SIKU+k zlg0SY?M}M|`0llA@!hU5yK%Uv;Tf3je`+%pm%cD5z<(uM5-1?}R_=@5+W6>&CSS+p z)WP>hVcKC`Uim&US80HBYPzxB-6^@H@A>=2U3%27OW&O;w1HXX&OR?;gqe&lWeZ6sIw=(V`2AlW zlLRo28HJ#9O(;uAO3!LpRit%vkOhl?pdbyQ1tO2wNRxc6H!RPMDD-^A8z(vhlQO@5 zpKm6uxVT~YDt>w+^nuPNDM0gUjfoPW$Y^fvA$sWL@WO(D+zIK^2dfgH8Q`F+k#v5u z@XsOaRtsso%t8Jy*TzgEpcg4y@r8}D6k^g}qJ-Xt&k0xB3ItL3L7I)nQSTENW&E}i zImtW6WD)hsZm(5T77rGwU0fin1TVpPpHgPk{-RGMHS4ji`@C2|7FD^)01L>XY~Z2y zE~Isza-X&~)FuiO>EH;}Znh1%5Wc{-hB_a87!@kkzzNQPl7b3FtW<w7FZZ+MysKR8xkco_uCOk&5t-8??(yzkA78DM6e}HOWOtY{RX%wc zLGXbA6-_*A<7X~9>u3yJ&^y5kR1}5UId6%_mIi-FNsP1N(a(>M{YVz-gEfSAPf=q_ z*Jl{i>Dd|uN%_;myB)-DhJl-FK4zKg&8{%v5c#%|h(S*u-^fIx+QLHE)Z=ku*Uc-g z3U05juC5LZ40B&&J!8Rpj2VA4(BjN7$}M@MpU zVmVFAfWzZ`&*YZkLQXDWEvn6+b0C84jBEFmNFMg?3>A+{z$SP;PFSw^3Pr|7QQyCJ zU+tCd-)|Sid?tjy+UXuKI4yi%o}0v3=8(o`42Lqx-j0V69A!tz$S+~1Xn3{phyAe4 z!=Rbz_DG^EYFo6OJFWD$$zKx_NY~4-G4`+$orl9t3ZuA{HMnRKSDwFFpl9|y?x7d15T6xJ`Fo1P`qt&?E!^j4O0#5jjD!n z5`9E6yp3}n!~)7wdZ`!GK;?0uR@#&ZOgQnvKv@0anKI=w{o(^+%^Y9(QCM@G8;H4E zwMe`=VE3Vo<~%+LfXw&o2;qTZF|*|44YG!x!8#JL7-GB7zJI7`m4sJr{f0-vA|lAr z_qt^K-moILo9;-u>4To1)F=z%u#OPEbiql;TdlJrKp&^?)Yi7|>}ZY48lOxkHDl^$ zPO?lB?z2a-@`K}F_#}Bj#bZL8-|whojOVlDaeNs;9cKf>OMaIP3u;nok&)f`6AeQz z(q8AJn+-kVb=luWx;Qxe*@o~ga_ai3Vm3e7cHuHuv?`na9GF{{l$s8*)Sc>mIrC`z zIQ8ZHeN+NlsxeE}Su`V|nm1M=G|5-B*sVu@7f2P~UR(6*t~vUgDoMB6Hm> z*{+1acXho}x5DZ^D+0rTi>5{n?vfgxJ~d*t)sQ!c&Sm7jTvAE#J;Vgi%@kE6r1Cbu z^vPkVUPo2cYDmZqWc_=`--w~6B}LZL(0|(6q%iX`f+6kUgs-{PVgw*5_xGI|p_TT~ zCs1UQ*rH8cIu$hy?_MMjV?8$Z3q6(FKi=+o;i7|p4mgn;QOkVmEyfG#{FJ=#tglC@ zGb;JrrPTJ3kKg;-bUu{ncPKx<`As*veEC{T_Z`+#vCerQ+}VF}%lhDjhsTn|#Hy!Q zV}nt*2h&SgqXu|RWqwCZJDa20Kq2u*>(P58^kkE*M0lvqy!MpjjB|e!rvO>hJu&x`Yop=> zhY0X6jl=_p06m#VE8yo9+_PKEQU5jc>+2hpF9-;b2n;T9DCmWbIed$7*xm zwG?j{jC2Dh-!hNoFBY<*pHEGPqTKYAqj}Rt2XTs2M$U;zTO=`&Xs&;~ZBJyE_%frU zcVHE=rg@(FdPS9D+fPB^jH?lpCm;klJ)8M6tJ4r5^;+TZ=sT^J_Kft|+;JrSh{^0t zHAw)Mw&8G&IQGcr`dY_?j?O=E0Q=fsUw`#63M{(~b*_NA(%J^kHpPD=|ei)Noi?I^{dZPxA%ozI!Rx%qPQa*&-BPEms;zZy(L0@HcM zYz*T5)0d5Yer6|HLqiw9Gw_R;lonHE@mpcs zAi@Vlpd4M?B#M0`9h}uI4DhxUB(%DH5`;=QIl+Gx7usDG3|*`1Iz3Sh(yK~p) za>uAFgLih7vg&?D;01e*@=CDoKTp?^Ej70p6;_tzNPA|Rt(w$wP$1G;8)?=FNk=v% zmKvKfBf&yf6B?}xzth;T`g~*yW8C1In$9VK(WNP?@A0^T+u_aH0`l)yE+>{@5|xZ1S*U>iBt zxW8E)DC)HqxxA->0=-swct3)XFkIe8q_`+$brMm>NTR%Q1eQaLUe$l-0(o zE1R=3$co%h_`q=CS6cFYEox0nz3ie=iIV)(rMzm3q7LxlqSU`zcSnva;)f# zYhC~xYbjz=(}oaElwe$9qDmD{#EtO+&+c^Jrt3S@h#U(;i6nS-T1|!iRYSAGma{BWR$q+5E zVB%nyb$*YPU2w~whY?$S2#nkyV&!HX#+qo+T0QQ!qf7q1VPPb!i)iIRG?fJ7EU!YP zAfhKEOVdx9`u_dCK)KO#o61V-nX1(3>C`IYEqh0+C0&zq?)=u6j|q8bckjTiyQ#7G zGAX|j+){Zykc@RQD?Ifr?u$c~ps@|19jvLZucgUOJl9pm3C0U9t!jMT8uc&BMhVOv z{HcmM-Q9-T-?~&t^l~^L7So? za?6IgU-9)rT*NMK^TudL7tU_Z=NuhZ&cnLv3w~FdP3*$TwrA1uDR&;-y!1It6lL=M zZ~UXJ2;%s3e|u53zwZqyq?h-P=RDA)!XLUAXXM$X8kxOG1RxHy8}h1fQycLl4Yng` zx?Mii?|elU*mVottLIWN92v+nU(tSwCr%6C!1`F? zgOPM!MebZ5MC?(V?7K)B_E41~JsvOD=&RvpPtNlR9>1bl8I@Y?#1jhd&OQWxz)c!- z*+%4(bWe8>`Xy?^E)sK4wt#&=v(q_JIuJ zq)D@wpLV|10oqtqcItsB7QB15_f@ymhEYYbhQnoy{?LU3NNZ@C=#Mhv(sq{=SW2L+ zIz2Ac+#hooZ+*8bCK=W1`@B)Gpt;vA*SC?YGuavT-8bW;5~+QU>ry@sSwU)tA0Ugx z`Y#AQ3cT(8ZM0Sl9olU^#@9(677``shXa2n%aoV5A>-M6>c)_dz^k1Wy3Zaqn%xmb28GbzXtpeBcGgrXd2HHc8oE z%l}mQY~FA3o{FJGA~|IsGWQ*X%x;e5tz|6VQ;Yiz;rNTG-*k3ujO0zEwCLzx&9EjOaP=RP!-u>kGhxOOhqXtDKYlfD%QuUhpgapZfk)Xpn*h#4->y l_U~-}(~*CX|Gz9QgC45;N)*#Z-U8V0LPcA-O3@jR*{LnuNhLP4MbAkiS8&>;Q|0r3Cl;sE~>&`^*72pGiAF#%M- z=c%9}pr9aNp9Oma~+RZ|KWb}@06Z&;LSNgQS&$qiJ6{X16@ z>aMf@W&ZE@&-kCb001NuGz0(!_H&FM4FCZJ2?GfY4GRVFc@oI~lNkX0nORg7;|kN% z0tXrTWYi+vnRZYfa!ks-!t|b1pYl{1NLtea327x7FIGEL;QOp8Lq&9nf&)Dy zTRL;d(u*Lywk;(FnG8DS9a)EtG!x9LCekIU8X*IEmmt1ze^f7kRymzq_r~+8VhL}S zc^*IL?18ehT9vGKMW$tL2)~B75Ro*?f{{c{&8@f(*hOdrltTU_x ztFpuON=jCL?>v>~Z)HxTP%{b4NpmDo$m3j;P_E^Dz;`m5z3{QL+@%iXB@dzfK2R@w zR0&zb6vL{h0)}J49p&fe=Uu9S^||e~6e|bWb0Mg#lu~(`SZ`cQM@2piK;T+i88xhm zl<6hmgv+w^K5YnDh;@8j{8owMWJ-s*=( zkBe8^oowkfeH`zfbiC5OCm0!=t=|`^jA$@N2MHfb4yMQ*yl+VTeV}l2RExx&#dQSY z`ff}0D0NHetPiA8@|RM?*^??lq@j*X-;6fPSKjHL~O zqHN?vTQWyqC~v~j+Q;h_qe#GtAOwff7D&`gVrRBO0M(eU$Z$U2(WT^j-Vb?*`)vQ= z%vaAb2e#kIGn({Au@(1ww;Uiq$-Yx2u9Kb$6I$xS@U;ohZdf8XB*!4 zBZcM?OLNH#sJ*H7QBuHPejQb4RGS<4KYVkB0H7=T)>87|WShIdx;f!e!*&8T?)LXL z7pBE^S;uk8JOs*IUO6C70w4hT>qPhw_G|dEkO%(nrrll8tsMDHJAz+a$~#1%b+R|U zWX8^kJ;`^u*dM%)ud{{abu=Z(1xdM%&Yt|hOLuKc5gUHMLiu@n^dDiX;k87P#MEll z=Q%J1Dk4j=L>?UH7d%%s(i=T z1C(w!Fwjs08yL88Zp8fe&E>}#L=e|TcU#j5Ej*T2Q~cSrui{Va);xszHy0(}_n_!K z&*!$QLq4|=-+)jvq_zg`?CODphVQNp)@b~7?8laW(Mz3S;;#{{| zN4?+;n1pBFR!Z7&jRk#>p6criFmCE1je6aV~ze-uLCA_LON&WV#Ego&Z2r<|gQ zO?hpa^9yx#O6*~VjKHrtm+5N8j;Dl%s95fKn_>kw?!jA7ej&Kse9N){0N}*c8Ygfq z*w(jYD#xEn^|Vxm{{F71Q=5%uF{z0a$+W3~{B_jK%(yST zcPq1_&RE}wwIkMR?U)`?22mK?9-rnJ4X~?V=wQfLAPQRBuP*ML!!0~+OT`3|HZCWR;G+6W>JDG%_DbSE5rNS^DW|4{+<90|%Mo#qEPV`*i9GlB-bQ}O>u?2e^+B>4^ z`6wo%V4wq8%=SmKQ<9jZlkp_Qk+Tx=ouEO6F{32f))ITzaxUEPqBtU=>`4>+yIE(y z>sG(CMmpR1ydN3d&E-sdU4UEHq3JyfeORWI{axXUTPaF$kR;;oKbU=_kaW@tx;uOY zUzIq#yo0-XIhP%Iw>v$fh?!A;k7S?S#c?lH%eQXgl#~SJ1v=i&)6V<4k&ks*NO*AC zo#G+DzL-eE8LZ{ViK<4J^Bj3sLZ*hxA;3*i7$NsZayAEW{sZ)uT90^_^R4&`zumsR zOuwk&QZVO*rsZ5&n(daL9Fg9Vo&Y!(iNJo2k|^$v=a+=mwKgS?Y5pP?{Ch&cbVju^ zqyRZ6*!9OYj+%ycAJ_XC?Ib3}kA9^32 zY&cfk!D#P>q6BJDh6#9|pv9?#Gx30f@2*n%v(JUT_;*99D=zJ8# zWw4H!Vya#d_1_h2w}jj$vpvB4^9Bk^nlPhN{{U#V(=vB~g4GFAn`_6&zqGr&f{1MJ zTrO|8Zq!2p(aAktPLkmKhdH`H+o7UxLo-uba~xZGN=h6)tls;Q9$jlo4Dpd%@B;q; zt=}G*^_+;lK|F7AY#H?a@)c)lpUebP;#OCMYl?7%skHq0Y`-Ae0k)O&bTC`*@H5Ln z)9DJy#XqRSo@e`$uo=MJP1y-{YcOW2UfDnK!cqPK_zcs2?V@m;wedJp=}HrPWF2Wx zFFH1sgJa>B^IWSeU+OVl6!Q$rtzN*M%%{5#8^$=B5$_533(_I^3He)dg2%YW_i#~p zsYgWb=60Lh6?fM!xxK}o7-{AN z_zWf=Jjv|zH~|?7zCkvSd;ouP< zk~F*AMfTv^N8pvP-ON6d6Te^=gh3-mCcSKE>^l4hn16n%Wx5>kC&u|Yb*)TvhIcKG zYreNs;#$C-BbgQ;wK2fzrRk1eb(Ymt=V7 zbw+k-VseGA`!zi-dM)EHH~M<}o+uA)38!(Ml{3lt&H|(~z0yphN^(PhNJ()j+-+Hn z4*3bWz(sB(G1Oz28}@j=WjhhETxYUEARpolg8u}il=ipLlb^ezkYkjnl5RnKYH0p3 zZ3GD1KQwfk%S>8aMIHIIGoS|`xyJI|%;OqSZu(f(SZ#-e-qXewo< zjVauhs`?a7k11n=`!a#$T_ULsi?1-kXsquqQZMu3^v5_8N(fOk)>CP)LT@qw65v#5 zh)jU!k=;)#((Ct24HG6RS-BAH2y$~{|K66?xSwb3j#%H?mr~F?qq)-LWM&K9yWoc) zC(V1xH2~jQ7r+P0ttsPQK7^blRF!YR_kD}8zeUXt{EUWdRgPU zcMW$5r~WlmF5u{r{hZkSHKugER8VIq36hR|f;8&D3cgY@H=!A+K7O3ButRbee6kYk zh=Bk3JCLz#Tf(vG(iavY`$xM$E=4MNq<=QN8mZVon?q77|Jx8CB8(4^Z}?tK2vV#m zG{ZzmWzfB~n3#y6z?FoyYB<1o3C+(gTQ7Th@#TZX_hHy;SCbFdg~0pjWRo+c@v2q( zGXmeBJ=9M`%Xf=(ZMuSm9t zHMqr}1O3kl)I zFw>AK-Qdlz60GHfdLl4rRXEeS)N%h^r_`hPs@h|2^t{aH_6Rd+!KMOB^n4kp$kABO zAVQKS{Je0{JBYTZqC^4pd!Zl3C(b@uBF$^$^w?=V7SGnN2mzC0anfz!$wW4%T5DBw zpg`=2S0&;cu(}yDNJcF9;k4bk(N}nWSocxKF(R(K=H055Mu92qcZpW!A=*s7JhY1u z&2qVUJ?!a;JIMmYKVX*PjWB;F49!9jdTp(<_{tUUt{v9C9sJer!(%B!5YQA%OY79; z7wtj{sSMfis+GDIX$v#@h1AZ@l*&h9$y{buY^Wm2B3u%_=ye;wyHtA7DPE~XnN(}H z&;m4|te)ZHa&#&Vo}jRe^bm`-YlD4c_p3mx>!Ogho$YGZY_gYep%8j}r+Zi$+1bnq zJ7BX#AhnqjLxj@|sJ&;pLPq;2^gq!?X>mZzSAmD6c__h5Yz($S!1GaMak(kH^{vTQ zp-gc%=EunXi`-S?Ck@%YsLVIm4>aXbk2u@nU&L`_IV28Y5t;e@*jtvaMPr#*#Xjn% zQ^82|4^Wb1l0Q;nby6OZJa9nTAAegp?m|bGjOsyvKWhRHed9|KfOvri8ft6->^2iF zi>lEetG6ha{%FHEKiNaUgPMp|?@k-WQC&otM9^n$S;YjnR^ z4kmNC_Ar$^Yz}0TEMqTpv2=)~QMe%tZ&1oXhq-FWYa!8Cuv~(drHnS}_O!a;P$Y81 zguJ*PPTDD_0?ANlhe@FNhVzYfXCAEbEhF7>*tluki=cSr9-)JgyaCYccZ~de|5Lk< zY?7JNZrh{Pwn?jprOh@_Pq(3=eaxA>WD5`v@7YcEOmOztOptD_4&KxxL>NCeV=aJ4 zN=A)3tRx}qQanPK*uSy?!z-KkF{Bw@OVf_qqM9V@&31BNRZgR1PbHCiE^u`|r`e+n z!}*hy$W1HoDyAiH=n4^f{|dkn`jCCX1dkHlugoJ4H(^h5LkWMZdmYrJI&==`=-W%t zq`C?O&erGMbx_26ukm8a5{CRxoW%*klF)vb!}CVXSkcl80lG7SY8YV&vG!##Wym5K zY;g;MiLoya$GLpojwR=vx=YLvz5O>n*0g!b2~}MNf&8<#Zr4}-Lau|q4={@^&Q7iN z)#3(k%VKE`)zr^^1t}@=t<9d*7}7pT{3sp&W&YIq%*7q!0opS9>@;I8^>TQ=Gbg*< zm2iimj`Gk5D;{Ser~V1bp|wKU>H^=X(05rkUc5Xl0e8nA;TyH6=aZI=11cZC1z*0* z&&3@X`=9n^<669g;=hD+N#tArkjrDLDPpSYIFNeeExBS0un1FTtZz&2jTqf6?ySrb zm9f25M?aLO&T?FkN!xeAkQHga7{eFt9QEf=v80nz7ZHhVY+w=eCX2q3jO3I}sAM3( zAfdxoF)t<8o0?qcu2ZCI0%6)Tyh$<+6#8AGuzK^ooO%hkk#-~SQRlDsy9Cr3{lQ%#oy-!`Nu0MA4b$<_@vZG2gi^!Aaj5IdOE4jP z6roiHwjhWFTv0q_;swW_XRM2|xM9&95aFosZ>L_Fws-EE5HeYSA|bLKDS=GNbQy{? zJ)I!$VD84q=PEk^{LV#~@a8qm?*x46gq91fM0zq}%>uKxmgA!=txU{0lcc&bU7DN* zkdUF)>)u$?olDa*6?+q5d{W(yeM>*=z+YkDmcP;A`8<;1YdmaxAe!Um=hD#$qRTuHVUdb%21P_{r>0QdkNRZK*h z6VbV$fujsJbWCudv*4GV+?@3sgm z%xO@F8ac*`%{oe16rHqV%Tu=jK#q4#`h|yAy+0gs$~?E1P4xfF*JZ8RfQcBumV55LdX{m+8Pb7Y5)c{u+!ZVE- zL#k35beXyIuv)qA{lJ^)ZY#8*3#?pK-9AyvkV-q%8@={rwmDSvNfRn4vc6gwppGny zZ0zw0FMamcifaxUKPuKn&qcN@ePoYivu159@kwe`kp#)vh<9&2gDUeJBad54K>6H25WHmG4%w1MFb3? zU0jol=S&*g+!3*^gGprg^Sb#>k<0KaZBQaSTz3Uh3@tomDl+sweW^*(*nxbwlvy-m zJeXg_U1u4elPzLYvJVj}DVJ9DngKd91w*=T63=^A6+;ZF(SiCSQLw+YHZ;ibQqgr0 z+k$1?1d6tNg9WsCk_KbRu7kTOybDKZ@ehzr*V6F(()!I^YVGUg#@0v!d=sd}!~v;= zaB(`|;IfuPHv!>K|HshV#!;DS*nct!&aXZN!>59nJqo@dQ#KT!)W*(s=li6`sA*zo%)n@gexOxLUc& z0nzq#KU-15$cgatf_#<*fpfd&Gfh*7W2%p3XFI)b#2W9Nd|9h>O~X4QkUi#s4{=-t zjys1(Wkm?6c0;h$IEF^)=UvRBx@0;EQKg{~2lGoYXASSxg=M!68~OohP2>7)MwcXl zS~XnL!1ZnsM#5i;benh=5z&+7LNBA6T`X1%B>T{2h69hF1Kth&_w2f^r@6mBnoaH& zSeo)u>htbf57)as*6)h{qY-G;f29(cGt8dhcf8ICTDOMppXM~3oOY21)ISsl)Y%l3Q~NHIoGN3v=&%Otm!X!>KmPzT zd{OC+XwG}_yisZXm3t3yY|H98p9{b2g?m<#x%;?(_Xc(>Hi6^F3f(_R&jn{+Pqrdg zHfhS|b);PVN3Tb|+g|E-*b|uuk)>)!EWhj-v4-x}?`(C~zrTLsrunwps&rhgFv=u% zE0n>RgeCi+g{!Wo8lzcZMZu$q%A^Ql1L7|sLyjo;>TwGeQ9gk6u3X zqIKQS)Y7uX^J~ovGAWW+*ED4hIMK7$*Z&kj0P?~gd>6m6I^Q==b(eg*b=gYKT56rF z7WJT`YCg4ZloA<9G(YDhuwz>QaL*tQFD_mOoYf@i%b|G|6$zQooV_e_&M~9Z+*$L~ z?8GLa6Sj)8Liv`eaE}^+t2%e@>S7{$JommMlPBp2?pR(&lRN>Vs~aoXj0JKio%awR&?0 zolFM;Dc$mqDBQ|c=aV;ng)(6UH3&2NJWpq9-m>gX2lvxi8t#gWc_yB@i*j{`Nb9k+ z{R#KBgzi=cSPNAaEnprGt}uV z8Q2E@07cekswvd8jpot1X+|aj&iR$U!rW=y78mn4=$d;B$GhaBn&nK&r}^3I)>KQ& zu_tmsl%;%GkE}-uw)%JiDdcN3TtkUp4YFX5UG18cSq}QXv>wT%A!uh{wAF$d_0-4Z zM+j)xhwZUtOGl$_D6SPIU8Se!8X<};AYo?rjq;jd7r!BnKqDM6%q)fMFp?cm6-WJa z<@`bj|I>ey{OI@2^uxLcbZ~WF0XIp<+X*t$)l7^tgYw|Ma84s0{6wys`@s^S%T?q= z=1v?Izt6Ape}JVF_o>MhKBRucncrTm-^*p8t*ASQC>3WrJCnsaSxoKwijeX7Du);- zi#e*;lFDJ}G1I7YwBRYs)8McjM#jgYy%7hAo~#I}l!EuOK$9~h%F+hIm2FMZnwzEl z)cz5K2S?{=n$8=Ic;azPhFZl5-~>VYCT9ZHZJ{C=Eu0%r!c!d7Mzk{=Tvl&0*J-=i zwXzvvs~QEu(fQHz;?lC&1~3c;3x3A&5%Ul_1fuvVa1AMpXAdY29N57l2AU%99@_(t z35G1hnKp(QoWLJFIjvjM(HrI2Z8F|zv=*8TLM>Ht(JsNxN?idq9mxm%7_xCVm9D4Q zK&w(N1Yikk@hFMkk`9=sdbsLj>poQoZFHIJvxh8@5hd*=hARwu~YznL}9~U-G@oivt3PQ=&Wwp}F zKA2$t+M`}>cds^L2VsB$7%(*xHF#CZqmJjaIgt7_PPZfxhA`a>vVtgC5kl|g?@EV5 zg-~yyTI0>-x5N^R*f%J?v#o|bXO$QN8DM{}C^kHW-YX8UL+npCBh8_*;7MLq^iFC? zLUa_i?byV`u#QD!e_vWe%T%y;VVg%tcQ)ba*`&4rF|`52Vr+NUpKE2;1-1baAfnvE zUeDWE6HC0#D69`TOYe>P(A@>%1^#-rPltYiP&in1M>v9ZB?TwXN>Er!mug1nfa$xCmJXys-OF0@<5`~#ZjT8YUuc9j%S!J3` z*HCcR38BMN*Gu~XxAnlv(^mE_6#TNV@NNTkX05*z#~IqM$8MKgbuNae?bR6W@(fp2 z*WaxL1d3xwNE_Gh9B0yc&^)KIqDm2}LKNx6)sJkcYvlzrRU&57@5zzZ||k#C^vRy)X*vwCJt zr%-f_ZYef!Pq=#q+)$B;qdhN183UU#^>$L-;TnSZ7=g%kvh1RbT&gLgCLFUUXH9eY zI&u*!?WOMUxI(x04aFC95xEP@b)piqCkmN152b>%l2VbOz=CVNTVR`qLLDm#?Vr&! zY>P{dLmBE{&;|)4oukkyD>*J(*3uq<6WCKldRm-zh2^*7b1=NaKf5eSn@v6V@`8Q| za+FLaK#dbiBr&9jz{h=PC)$TLFPmMo)Ejo#JG4;Ck;@P~{z{{2%auc-RYk5=)q-<| zt$MCy+Su%(^F?$)2$iEi7;rC4SYzRG3!Ev}UF6=J{ke7t?!5Tzf3LTswO8e~O;$pr z^gMc>XU8&!9beyr0x9Ppm67aFkZVli99DBu)6dz1vgKxyz^mp5s1>ilIw& zlHFhn<1kss;^DhxY7||UM)%XHpXP9X8NQ^qp%;{7&ICSU9xd%vjhr?Bfj&QeZjUr7 z;8wGUpgK}z^29F6z~Ro5c|5G5Ap)w^jAQyzWKci%~Ihsi?H#EcGqiwT)=g zOukAd_19ueeqU{=DXAzny(`7UtZ8*s`Si3*2p@E(ZA3vYWL)or=|bR#d+m$YlXrcu zAD}bml3j&FpG&Y@(Xk$7iN4a08R1{78CbHc+Zp7%7GWGeL(EgR+V-8la`<)?SE@dR zMs{$)Bf_g$5gvQ_=$*ZJt7r@hmb{%B~_iJe0Y_v8Jo8S~72jRq(BzZ&$=Fxk3++-+9n8KP$s zdH4-L)T7+fNp9W_scRvaMWvuNKjc%-10W(SW{R*}9utF(ig)3rwo8x?gFM>!HiSFi zOly6eaoopDMk#dCRG~d!GQ&4siZ-^n-eUYauK#>{6gSMHZlf;%Ao~vhQZ(7iINt+7 z1C^vFeI}WgfkP~N)h8URKp)OWW_rXOd)Wo?9!G9fFH$AHsRGVqCdc zIYe5hSjE28GqV1NtA*v%P!u=Z9gUj7Wlw^@ECe&fVk23xo-)rP!|U`q5@bWA&OTPzJ%=cCxcdSd+$+0nJME!1v1tqA4V_4jXSzI& z3~6GmVeN#$S9S#dyV9d4m`d#hCUQxylZimQ8U{g|->ViDGd!$ffQG$qeb(8PjVAu4 z;WzpPh0T|OiYmJx*DZthmW;2>Tf4*v1*H^UcER({N5FtdhURut?^%-k7R#%Fqo7Ei z60SU9z>6<<;~i^CdvW@Q*Hc1x!{GezH8ST6crBn}-dWRr`>M>!#p(TAK>Y*aNzfj( z#s)Ej5(-XLeY#gOvP||db5-9Q6I9!oiJ}=vvnjNew|1b7+rU*~%9{6nY0$c`4iiGD zh{Q|}{8FP+G|bjdS6QZCF+98Pr%`n~v-oFzD3P5zIG*Hpj_J1l7zHrQY zsnA?%DSpa&5aB1iufkovKpQGyOuC46!?7T^v$!-E^Ck0$`4_SKcf#ZD3;-<3_wK=% z{y0pk)i-m;M}eP>K^!oDNT6h_9!E>ow;3nmjq+vR4?A}Pv{U~=(1_~$By(#drE#NT zc7eVq%e6`~mLjDAZwIJaa20mJFKa#%4UCntKpDz-U|%pVr9Ytjv(+7`CJvh$ZR@f8 zp()P~qk*j(i3s?cJOtqUqhVrYF9H;XPqt4>OJ!rRbTLg0DItyo%1{`>P@_n-hooG? zlZS_Ap9yRgQj+6w`JHa{wqp)-5H6lPV!sm#qiT`yYI1XJ5_}y>GgCNd^TR*6ihb5u zHL_M#Qf}};L7+)7sXHs%Uik#-ql#&qVTAhEn~QOV?wN+|GCb4WUTv^h6E&rV;`GtL zJ}lA)coR{4iPRr>_&Mk)SDEA;nwnxo;To7&B8Y%vKmmYrPQ&8RJ_;y|mTaTj(VH;% zg04WFV%=EFcNyy7^lf-4-^pod_!@c#BUc>++I8`lRl=P1d+aD3BP#ZgUilk~b^5>y zO|Lyg?4Fv4i5OPqUYQg|i-jP=8!s_?WjYpu{6pR6VDo6)p^q7}p#6(Y%+aMDXkg9d zw;~N9g`CG^Z07|v#y7O`{1%##?6)qA@iwOno2}N~xcB8fxse)Ni|su-ZB-o>*?vCI zUA;S|I|IX(?%_KE8R~e`me%`yUm4ceVZFw>{+;uis7}~{Vn^%MN+4x5x;10h%Cd4o z>a)(=a56=R@Rs<@sh2;5l8(#F{K_)d9-XC(p5=Vu-mmG7avgCb(2#tD_~+90K`rAf zrCK9-XV%YCT>Q?L`dTt7S+-=+o65P;Qk_H@?R3prWYlSdrI?I-Se%$?2y$4Ssidh#vui0p{K$QPHF!9Fif;44yKbWU!oWkHHu?;aBS4Byz zvV}5UG-3NVQT1uKdi*mj&mW-Km%2+aO)d=8o8 zgk07`ZO3k;SXEwiW7A1%K1V6qoGPPy=H=&inY%o`yF15+MUSS_N5{*(S`yWSuk(W+ zw#&at{ATZUt^ycH{+c~^%_tOa>2*I{?UyHzK}VTZB=Zu6nuH(|(Y0aEHME*)r02S% znOh80O;i=Cib$$pLiA~V`cAJ91#AkriV&2ao)d>|Q$Z*>q4w56UaOj3@NX6L<>8-o z%(vx58>9H@QLzY1IUCh=jpg%19QHGu3iZO}8FPPc|Go=u`QjK4dU*I7`@;V8fYb7I z%S94os`8zm%h~P1nK{|L*B5vdR(INrGrro;T*g`ISSJ#n`(#uGkMdP@v3KQkbqV!; z?Ut_z%@f}q$mA1{&{*eDC60hoT)4jCcu0gAg!a$LtQ>sT^AcBO7yT(`^3p=kWwLKYp$X^|B|=x*!iuK zaXkoB+~t(A>Sg$5Q~QGZ53rJ#6BxLl)k{+S9|7da4QMKr{$=Ll`ONi|X${=l^D2z9 zlv=|RPm=6+u{1+aLCBfeo4~TQC{K!d=1o_Ov~~zG|8Po;}aOPq1V>@*c=ewkR5@W zmm?Pr(=*@t)Tw$6&n~xc$N8nkVsbQvSgfBCz%{SfzYZ@P!cqM_^%Ni$t?^~%SQ@LQ zyV^_bh644lB>~cGkPz(x0sq`^C|w|>{XeN&&`vG3W}?9Qn7rXg<28JEgo>zoZgyz6 zBn@L+u5g91<*M4kQP{K+w?U7Iuw5>-#?L{xwjC>&&I~=-#DTu-3)&CZBT0q|WG52@ z&0o)%nrC$k!)stfy~NZi3$Kc`hQ=Hbh5^~%SG*Ob@<{>&H-&dM7as6f=?f6bE#szs zy+L*LUA6`CAlg*SQ%;N{#SU>s{_t>fi7#(Y6Xh}AP8wa=U?q}YvfpWT(8mOIds^fd zk*U7@X_72!mu26~^Eq@Y6ZTrN{IV_Q?8to?Xgdr_tNp$e?6**_=ix}uK2jKJT6h^K zDIW=tQnM$UQ<+Gv)~v>K2FskwLf_EW3LS*=ja%v@McQvJR>@_PR-mHz#M#7fsU5~T zDWTBH-&4OL1-uIzw>bp~+CDtgG?*nV0DX8x?=R1l8Nt~`t?aw3{yj%!Zs&Tx2ku=s zjI3kas^f}2atH0dIv#L8UaGG&GhE_$QF)I}xDy?-jaeExx$G?cXLVzy#W<*r_QVfK zZu&52KsW@-)&=n)EeV)g;zm=cXMpF*narH)U@Z>LjG7~3lbR|#dm?{Bjf+h$QqLIU z7q%{Z?^8%E0VrSChiH_f1)JEJld0w@%RcZuZHFnE=N(tHwVs-g*V6R_`*_v{8B-lzyB6(8xG@0WM@>x$!ITsh77-PnGoouExp6NzwUsu|FF*Psp-@Atb@x-;(IaB1jyft^7qK6U(>S} zUFS$sGkWEdN8;Lge>iZ#F)$n&6u>t-gD6UYNzJ~zsn(I4N(Y@4m#)1HK#qFCl?dL)G|nopECEKKqPF z>mJML6Fsy*7g;)um&b;+rixN@ExA;m>83R9^3ilq98H|)O1^3%Oo{=7r*hw7r1cPe zaSRF_#)xsCz;UKi&5b@Z0$nu=tySy(6yW%p-cMOkK{cH&1A%#^XYBoNbUZ}5VBi)2D4D>sCD$@ha^O$sw5 zICf-osTuYU%!Z3EfoJEJ(jUM9azzB5c#2Xe0_MpdX>q$r0yK{acP#608o=?Ei;+0t z@7b2wo0ZzyAKqJ=9BUlYRe@Wj4&aq!7Y9zF%Ok`5n6#9WcP7-6w^}ONxGQ^cnYxMSWeYcM8;GuSb1hQ3+v5oSlnUVx`Warb8l@7%feT zsEzKz($Yj5J&voyQ6|mWCsS$3NER}e!7VaAQ`~vRTgwz z-Q5LRUkjEhhH3@7P2s@VcgR#Q^r zDoNDSm3{t}Q2G^)gq~1=tuf$prsGJ=ZoSOGp8w6X?bQSxDE(V1H3I)XfTrZ$ZvnM3 zw0TnNqbMZ**%6R|wd zv{77cscy1eGwB(Bvdam3MjlPcWbCFuc|fk>>ad?nVx_`hJi%|=*tQ6*I?uC7oAYUL zWN}1CY{3%x^V?YV=^}%2K_$HveLX_=3@z^kA)-p)h4rh`BG&Va~kw-Grq&^ZP*67X(_ql6y$_oTo_7Mxx)xF zu-BJFibM#ZZc9IiOqwYM$#mkal#F{g(+#@4pj0p=jx_j76Q-c_1^5fMOhL(eRz$%F zI1h8(xXQc4RKrzp1L|#XkMV8=Ea7(>kdOr<9fYSkMnC%mZDW;tdK1f6hm8|fy#oBT z>N^-BgctL2kgfGBXGHk?3Ga%1KE;?4UZfOAWq5`1w?_Rgd_&?K;yDUj#l3~gEV@L5% zFqgY&M2YauKHDQ-U#Yd_4jvb)PK3q2@W~O?)|7T6t?dxpiqpu2^o-@Wb-q;*dDi5P zOJhc4a~vl9kTRJxcy@0TDz^^JUVUey} zm)HJ_#va-RiyLm$THwNv7d1JF(I0zfsk3*6C-*<|Vuu#kQA|hw0jN5=9BxuC5ERlrs`kn82V?U?K;2~ z=c`am3D=-^?Sh*&WDqUh^D!OpWFlI&pVt>8Ju(mhui)~SLJwzh-dWYB+V`_7;pn#N zvhD(VTn`;{7bEfL*J;-MWQL@mPFUnb;!TMvo)sB3i+qYZZ+)-7A*)cYof zbd_CgrfSvE^UJ!$N@tUN>Mxa0&jq!?EC^b<;)qA~B++jtzt_9dk(^;!GnWwXqTVX- zJ6+N>1}MsUTxX*7(z!c4=TU|EZqJF^y+|URpn-6imjTFBB2rR{gohGr+NeD2Ses)E zsKD0(W+zTBJ@ZXYlvaJ4szvEtZIWi6vx4a?#`WWjF+tv_N^1+tJ~E!n&4RI43&K}8 ztbs(h1s?%qb%f*gpFv}(6Vf#I@vzo*{8FGzAP#*WU~;CHvy3gu+-9FpCN`e=$$%}- z4;v-L;j9XT(wW0-Pe}YwIS`GF`I+#c*vza9-J48`HJ!;Y{*cKA-5Y8fu@-4L!|8+U z8z}xeNv7AdYTb+a1&QWFXB}ERIUHtGiH=GaTLm;MQ@@5W?5FHkE$-fx${D@bxYtyW zlEK0*m?dw^#0-z_UzHoTegp9uA9xhU2_s2bBUa4XzuPFHp*{VcpYkK=G{A_t?0N#5 zxq7qrY$xhJ*U8x_&Q+sDi41R%+d-c_bg&~{oo4K@wb=J>4Oa#|4y`=7H$wZut8w;r zNEehLH|!|>(WN8fj}!f7LKGmvwpZaFZB|zTQwPk@gg}1qbZ!{K!73ek z!50)|%mhPww23-Huks`w_b*7bce%}Bhk{B#a9`X+;O<|0B9{?;rp6pc8kRi2J>MVDFyXktqQ!wTLkr=;azGs2vQtb%XE1bRY$Y2keS*PSv|g9|HE_CFF@T~BvHVjACry` zoZ*A!d2U&{0E9i%e*lJ8vBw}qH_dyuN=9Z!qBg^xK~dE1_&dPY%->-PG6jss?@HKH*l*iq+FElDY*!nXQJnZjG53e z_Bx!J(?r+7r9-r3PpMOVip3BFBOe#}d2^fvrrzF$us zH;cU++)mofygi(<@m*_<(tHCFAn=dMCWr@x0$3uy3Sbq@&cp66OpASW#lie=3O>Xro zTmtg$j3b5iY}H#qyHsKreTQ%>ZU;K2*)9ik4dIQhSe9{ExdY^5_xmOV?ArR7NKTh! zrH*vXdx_?5EK!5;jjzgk zxyYzuav^F`7GLGKsO>-H9C&wIzH20;A|sLHm7tDDnU2c+P=+ukM70vK$90hq{DLI9{>PNd7$0pI#648A-& z70goECmr3)Qm5`HMtl!h-LTvq;?+pYQJl{BCdrb(ipi%`(f9ur@8O#;7yU8 z&q>5RbVwm?{B@Be3N?>)1trfLr7jI*v{b+7fV`?>DxDa#(Vi$RVR z(W@&Ry?&}A^}GXLt@O0C)vVdu6KU(wJk8C5<-(->4CbC@T)c?ml!nv^$@ET>4v@9&%No*hB_lpEhSb>8Ns%S)Iq_IET#+aXvxF9eikerx%XS zDB1vB*aiGrPM8i8qaPkdpzkx0Y^{&!4?k#iRHQ1S|+KsPjuPvjtTH1RGj9jZ!&Wi?KW460(hoXxgKh~Id)4TacRI9<8 zv$YE&XPZu5R=_~|F1At~%6WV|@GIMm)TN1Wb0&RV^o8Lrn~oy|n~uI}++Tp+q(jiJ zlNmYZsNeRg$9uQl&;(K29Nfk2de&K0`(DwfIfY4af9xpg$jeaEg`o`ko-FkO|~D z1QA48A%6W72B^gWvUIQr1f%G<$CjZPHCe!JPa zCVIDW&`fXm>i!`6xJ8|X5dG(OJi`2MuQ3F{Xn+-XGD3m5n!1GWg;Wj5l_bvAvFPCW zYF*{Jg0xGhMkp@FZw*b^VQ7H{0d|Hy=-8czjVr%w0avT8;$k(qunk|!S(VfG#L4U% zeuL>abM@RMDYlrMr4s^MF2Z6`rP^e)m?Kp(gSupxp}w^%%6}*{xBc;R3_`_Jgndy(C+}3yE*Q>BivTb zcE|eiMsiICmee8ouk0W7_@7n7lfB9fXyup`HZ!7{fqO|Kfhax^&j2 z-)>wN+u|=|9iC!2oEPEQpRybA#(iBDrlVP=!fwam(`&rsT)MdO)2OT8XHH@#Y5d85 z)b-oGD#5qIIvKDNDFO%vq~?8B+uHHxXD@cO_{X)L;Sbo$(x;sZiUyo7HyQ*X-=eZ( zM0j#j(o%tDGA`PXJ0@4m+tC&f{8Hqyz8QkRXW*!h_fiQa6CDV?7@A(4%1lr4=^Q%Z z$tzSfJLo6B{SlSn}VIsF&_nEfEb&-)W;TLU!qeVj)%QhK~ zYn0Lm1OMPAcyLIGG!0sKZE=No+NKG!=h$^LgNZWjqqV* z$#ZA6WTm>;+RG9W$hFEckC}1u3;uVExJDMD-3oh8$j$cv@2%@fl2-N)Z3F#-Z9-?` z#pW`s?N_7dxlD#ubVqAry)v|G!*NolS!|(kjgGwS`)WFRWUeeOUqtz%t}&UYN1~XD zuO_OLnJ85oy#+JLb@!K2$=Ym_^{J>c54njzt z&Bb&TmK-k|O((}P4dQ{ETT$=bn-ZjgcxwA?;;WjfnVRIpS8VCGUnY*8`DeSY(LQ4o zVDGvLzP&wJGC4_+7f3b~2kLNMsC?6LnLyqNU$erV-TO zipruWf$%jrGGaP%L+tQ4AFc_41ZV?tn$Y< zE#Ww-_C0NCI2wz#W8Fjv4#Qnz%kMIrKtrR4_Ut=K&jiJd+ilrEB%XfZTZ&SyO*LHm z-PwvGxqdgrY7K?5o6^Wtw3_x*03EE@jbBC*_6XEaR06m4s+dW%x&jt{pRZzXckfF$ z@g=Lc^!l^i&#dPpQ6HH8SzHIYz6U5VevxCj;d!*(Sy)b@-GMtCjkiCB`Ezbu)y_5) zfQbOHk^i5eant{QL*pkWSw*UxMY6LY$(SmT6q*3fRYfS7!dTzmamiNpQY6t0z95^6 zDzGS(mDPxIo#+lHMfVs|8KR9EXJ%b79S0_vEoC_PsL<@~!i(jy76H>$?F)i>R;v~E5ynHb6CLpSxAw+<&W!Gi~U61z0Bee%x@RR{iU+^?3c z<2>zpVOWtyzwr4_darSm=lxdtWRzt34|!HyT*(?PgOPoRb{09DqD-Q@q>b8jgcukY z!lEiCFf!cej#%(u=H!G_|OV5Zhd~J2Ast{vU=AkC(ng6;Q-CQKI z%~a@FRaE-PEJJFt93rf~wV+&H%2bwR%a<=<{o{J8g_6%AB?M}O>i8JRlQ+NHC8W!1 zbY7)w)g`0WdI7`8H0G~=so28PU!kpD_Fq0I?jr5jLaGoKGZPejZFn4iKyWc<@(0}1 z02HMZPOai{R-gWvxq`@0L|l&@4E>Br{`H}HzzX2KC}y)Vyol@WQu6Jep}0?5df?&7 zHkOfNJe(AJ8V`=WD>FXXV9hMyT@N_RMoS+X0?Vv#Khzw{bZ$07OE+9SNZ@OkCp1%Z zWmhLVWILI)zEK8ow>$U%B+bdC7g}V2EQg4J!R!jX&WSOOtz(j=8y7~lIp5vE1!LP= zq};kItNss(mxtv?H#e&lUEtI|F4}SGd1*e@EY5E;qhn*i%%UR(PJ%9*^DWWrJ2P`r z{**aiqBNF4LnX2qGxp~VU2PfWwlp8!8+nvk;==~YHGxVNXvao9%|^qdJU;_L#9c-g z5XRZ<#o1-vuWTgmxIUX@cP*b9wC2je)xu)eU`X&7q?5gCaO{!)be5EQ_r5hA9%18O zXDf$ub9!nt#c7{zJ3C(J)oN*~@sEnH2LM-a#@n9z28Ook<pqB}(u|=+Se6B{@9XM3h+XIQO~At`5b1u>o8)TDIq(>cB72T~3vC?9=^>s#6f( zd<!J?$s8<3IX^oz#N)Z5?u*emN3HVVuGVWqA{=J~D&^u?0_ADU#j_3xi8S#{N z;=c#4%huN-DA!~ZWgc22g0YP?owX4#!w#NR0{H7j91girDplsl8mH@yP~AcrQyUte zcvOf5w2AI)_^#(#`!8TRXs>2gJ3Ox1oSQ20p;vEWEGxuz{D9@F&}lc*p4(dI%WYws z)M&U|Ez%<|E$CShN4$OyaC2nX+idW?Z6LCggKM%!l>kHQ^d3(^6yCRsR`<))-hDK9 zH+fBFaK^FvS-s|L-f7#C5jZqnf@Be?t5M-9v$~rh0dPyOONW~dx-q0{%o3#gQOCv` zIr&ih8AVqvCO~!~GC1_t&{`v1`ox<=_ba^4?5MY_NjJg-vb!6+uTl#6ysc754xsSZo$crt1yYUx0`#mVAg`GeDOQdxcfPlk^z1a zz7@q!MW)8bb!`G*(oY@D}$_f%VNt>%W@T23oD z$RlTOqN26+62T!qA(8)L^Ducp8l>$YWA2C-fUHFoYW=wCxj-oWn@RcxSVk!7xS5p4 z&BrJQ`J#fHI7Nm@{@sIsA>B;AC+?Y*hqPpaj-$xpc`54wvgJ6$^5>?6F)xDnV(DX< z0pDP43RgCAtl(?KSFUw44P_?7Ld7Cq${nbdW@{v~g|$^JIGY#=w3-+z#Rn4NpSLgZ z%BtGZem(6QDQ&(K!n)h5VvwB&bJl86KE5&%>(-@TzXcB@^nUAW^n79aP%D+$BfPtL z89nqOtC^X|ZzJOCTQptS(W=;}eu=;&?zHx>z0~Mw>+D=O@F$X2V~&7K>lbRPofPBNrNvpWv60@`Y<3Xr+ zspb7+{gYo?Cb$rz(9gv5d0u&jnLx0mnbc9TL;zLd|GZnY{-1XXu0*^`pJoHr2WQD% znq@QuZ^JgTQ1kttpOk+dAGdXWPWI>)GH2ksFr??)E$?V``WaU&9uk%JR`5psQupUC zfas;`9t!C6`TYevxxKm6UAgickNUnf&)mFFzIt>UIpWqGM`MGQSTQNg@Q2va4n=H2VJ~{Se*79$WzbA?N{MsIiCIoNlPK~yJ zVH+5`rhcLig!|{PPi$Qxk-DyB^Wjz(#r_2-I#=RZx9O^%jlkQ?@N0e)(hhv3pAquQ zeX45deduY^9{y!;x@TYXP7rF|d3Gkb6d#qS7F2+?I{#m2pURE?Tl@4CUFQn~G$hv~ z|5b*_j+LU$-Y2u_agHsg*RWB)hpGnHk5jtpPEgyu`-4<15-fmP^^xi8muTFIFUn*Z zX!H-z;T@?gQRy8bC9+KS>ml@89{^ttf2g7O6+NO+eG)$KM}y&{DKu?EMn~?;G1z_g zS%;9?XsdK<%6W=!qFw-5Lz5&Z2=wB3eR;WYBA=CdrhoE@?<-U-S=~QZMxiA*2SRr$ zk|(+_1+3=wigvO|cM6mj_yYToiW{h|`DbgwRRVVB#0d%tzdx3JeCK%QWe!aXH=1*& zesGPhE&AM#1g)MA@1AuG@2ZySI;QnDohgHPdP&TWPxI1xge<^JBpkzB@8Q>4<#?VI zvBl7lMes%Evit15SvopLq?0IDKU$m)GlkZa!PSfauZ{M;5wbF&i$3g%Bkq~qff%A2 zU8M#Oq?9|VL3flbXmRaO80h7cJHweHANgyF=~Y`SuMS2T?_AcLlo7XbAVih2w6l8le^ZLL7Vk4wGvLN1mAQZ6h(uL zp>Y;OWhZ~c-FtL`(m)rqCh)L9^}1hF`E zc`aTaF4tHsVmH+(HmARxt$54!e3Nq5JG7U-3uOBX*sZ>qF%)hY+4(UV!ZDZUYjGim zjz&Oa+SgiaeU_GI*vU{H>ogftL5Ij-sv7-~)ZvgsOBv5&3k)H?{f1^TTgWHidYTJU ze>+Bvq<9$VcEKg;NC%9>Q_G`e;%q1iCmWA_&pBn>)hM=)i)TqRe(%C9kMeoV>C%9i zjy3~VxG#k}RYx7oad^j90Mp-(bFN0v(R>hy)iu)3qPn_-5riceT>jgB&DDI;b10Z3 z?n*>Y-`cP%(v>4ZTZ~*MQ7V?=tei;#7qp+n5a*6p+tFuhNY_?Ydziqv?S5P9YU3;C zsTy&r36b4_$ytQ?q|t@2K2o6pfid;9+;HHU%T=L6!8K82LsriK;>x^xbNzlaG#%a3 z`jN&E$pnL1D8Ra9>AcM$q!S`xy%n?l$`T~1BljHz*WV9L`%WKOr5g~ZXgFacK`{O4o4&jV9y+tC0=C!;XEuKAN5xa+K9x712(_yzq2q*|Sr|}t0v0l@6jKQIi!lPxN zA+NS98pRc3s`y&y<^;p*t!;UfS5;8f`I^&3d`>74G9XHNf1uGg$X?$@*zO9w6rS^w z>iW||x9NwJEQ1%iXpHr4TMMnN{LgoY*^B)xx}Ku=AsP8C{)0UW0|d!pP}!q6Q1tgV zeEK8d>t@Y{NBZ9<((GB?Am3_;hEqh8dQ(Js0L;hKjAg-DTINsHwnL1Y-z0e95gOTI zT?>fVDvt(=8N2ZW%!^Nt&kRzRic^Ylkq88<1EXWv#iSD?yIL6*)&qSh2!H1VmZebB z;)UT%z3UQkhm28u5y<>)5SS86C@LKz*VQVr(4FXuNm@;rSc@tiM*qDi^EAv0iwPn& z;EHc+D@OQLOEedRzBMVx?1Y8*y1++{O1krq#mn%G`oo@H`m$}Gks|kLD8Jnr9TUu_ zbMLJrg=9&$3{`Sk*seu=8?0TjKvbD6S-;yZLB5Hwk0gG*ngVEr5@wNP?|iCck7>eU z7Z*10P5Kv&=Y6eH5P$=LNYf1?=ZuwK!}E z&i;C`p^d?Epn)w3O*rMsSMgULAjSXsS$(C>dNaC55mNCYWhvQ|boDJn*19m}O?S_h zs=iiWw=g?34J}R_+CUL&GAXXL9GRrpdammmu9oIlpPHT&BJWUIZvc#SgMM7+&f$u9 zo<`V+W9=hqj!H{5EG{T;*ppN`zu7W^{2UyC=j@Z3&lcBF73ef)1fqjC7qLD_fxwP) zq<*#5<)9dKOSbm$?GMxDQ?=Bx!`ggQClc1;3dj)gIb);kfN+kCW zv&e?sF*D2VV7HN{eqewft0NS^BDk*60l7@T#I$7|>9BQ{iopX<)kcGvIIrl_7{+5c z=!vTr+-wc&>MJit7grXUJ;Q5e=M

7&0j9a+61MKWqI0H-GkombCnQDnzBIF;z+S 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 wwYF4(Lmh89{=IRWuhA7*lw!P*fOCCS6xO z>rx~|@wF(tgz(j}_if|L_Ds>j$YSi+aJDdWZZ1bdMM?KkT=_cY(&Rk;y{gbKJr#MM zuRe*vS69&E*zP3PmP1W(|XMZd2hdK89R$P7G>l>6gVsKTAUh74IFM}IS sZ2Jy<)!>|8eb$1t;yaYD;@hQc$S$4@58dvdlo$fY&A(sH|M%nn09C|0y#N3J diff --git a/jOOQ-website/img/eclipse-example-01.png b/jOOQ-website/img/eclipse-example-01.png deleted file mode 100644 index 372276eaf592af7aa734ea59c14e3b1f6ce7918e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7093 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 H55xZ#aUs#} diff --git a/jOOQ-website/img/eclipse-example-03.png b/jOOQ-website/img/eclipse-example-03.png deleted file mode 100644 index a1d87db25b67f34f3a2003da7ae65005294d90c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16990 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%0A6YA<6;~lvmPR~ozb5>ivh!tWZF)dttFWc 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 BXMg|z diff --git a/jOOQ-website/img/eclipse-example-05.png b/jOOQ-website/img/eclipse-example-05.png deleted file mode 100644 index 1fac385811f8ac49e6f672161149daf3b7a391a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8100 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 YD8cxe)+H|R%{ri?WuRH5Zuji}0aT2&G5`Po diff --git a/jOOQ-website/img/favicon-16.png b/jOOQ-website/img/favicon-16.png deleted file mode 100644 index 58d2c8b32ef01a32a57128235ecdd8ad1d2e1b88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 700 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

os+m<8wB|BFG%0_DlNxb zA02$&PvP#V_D!y06B8z{QwQC?A;l6W_XXi_h7vyOV$lFQ#7Kl zU>?X!>Qj&qiXZRZV}N_(r656qhA83hoNA9lN}lmHNEY5)c!2n=X=V1c`wIs0l0(l2 z1Q$7&(P*P&r!y91EDopdb^J8c2RqBRFfNhC7mL!27fGcrfIFG2e=1Fg(|&axSGr;~ zTa#VBpje?w<4;ZZWXF$XKYChEr_-9og<`Q%(!wL|mCc z8TwX+5=|;46AE6__=S~N>^wuskDJx-cNrb96lw`DhEU*!#};`Qmhb?`;IN;OE2H1@l3vl z9@47DTYd0Ov-Gkuwy+0o?n}%bZW_R#Z?|b0G8k150BD80sF5M7lZCOxZ`*;oVAMQb zpc~Wos(6Zl6gy{-sIC%V8c#Hbo&wi>V(`YOaB>n!p=e~eC=Hcp;4ZAQ1(*gz3EQWo zr&pBn2^Bb0YWl~rnz5qu4Pfhx9bU%S7&K`;XriPo@jn^2A?}hY_g;f~SvrUcxokT4 z>@x~#nZ`i5%#ic>%Tz3u(8>GVH!ZMwrAFSW-y zxen)7aYiOjNJsy>okruN`Z4n2%*_Fcf(4VxYSU@bEI?G@Av&oVUAw$-y1(|Wlc8+ti#G@P4 zeTSP1sI)6!tA0S@O;u%9r{1C6vq1T0j67iod*kVp>8~RcXyxR(hTi7SPtAZ0-k6~S{;Sg-!u8X#y7Amdd1 zpA(|{bA>I9r%hz}>R&bU=ix@4S)f Stw#EP1<=tl)U1ZvWBv~ks^vBS diff --git a/jOOQ-website/img/jooq-console-01.png b/jOOQ-website/img/jooq-console-01.png deleted file mode 100644 index b52d1f4644969159f0bce64ebf530849c40ac0b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71501 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 j#S8FM0n~&SxVRhbP0l+XkK?&9=Q diff --git a/jOOQ-website/img/joox-big-bw.png b/jOOQ-website/img/joox-big-bw.png deleted file mode 100644 index 63e984bbf1ec3fd25c910c1ab94ea7c83caefd51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 866567 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%0AH|sb^tuj$Oqic&#~zvmGWl<=c)SOrTcMLO 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%0AW)W)^Q^;ppmEK+YM1I(g%u&3e;)@j$Cy!Zbf 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

9a$%+{t7soMB4$7-B&iwa% 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 z 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

f{K4_i|6AU@g*aB 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

ZSrRq=RyGg`1Dp5G;1_I*$5;kV2 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

  • X6%{sU+7_)iaKINw|z+^&rv20HWt01 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

    l`u(Dl_LNV1xV1hTZLAwxvPyx-ui{(JPjL3=OOG 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Î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�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 z
    a8%j82*b<~H?w`s|7kLwgKrg}FEqoBrIJ){VoPmc}Z)QdyPr;wA^t~UICrK`e z=ur^Oz8!SPJf>|MNscbXBypqr9rvC|Q?rZ`gA0UgVitpzf3njmS;p$|AzDrCx^|$E z^jdg7s8kV6);}DENuGSWgb$Bog3_I5l zR#6}q$Dp8jPMhm~BfCG)^?AcmiA#D@E}LcOBrTL4ok50oE}h?LoX$-LUbRt#$4-1g zq7{9=7rpCS4!PpVSGs)J-PWkK(@g`6xps66N6fzjlDXn0K+~`f?N{McZ^Z3L_`>hM z-HEZ0e6Fu*A9lQr!M`p#6Z#YY!|cVR-r}3$KA~FL#c|^B=rwF6Bx9sam^sjNK!MzB zmgyIO3)fc0f{a0O{M3w-c-MkUQd*MD5)n`3ab*c+p)K@W zmQlo+L5ab#%8u*aX6gfa7hc`cx>IG-q_RcW;Sj0YZgOyvKyv2FXQ5HO8vEcUI!osp zqw^oOn|Iy8YVK7)pg(epE??&_UyqlJ&2&I)gfI zw7;(Cu2q2JGjeoCx(-?loiIDv@3wdP9z(Gle$Y+BeNU&&p8~*O0BizFqIZGiXAAs) z1?(aqMDangN;>fZt6^^I+Ew4(gwp|7@V;Jb&m0vrGD>9)zsn%|Ux+kT;5xKCWMIYX zpAqQY{z=41K!6D)cy|`QDkFn>Q4PaSHGung0xjABEuDenQc_9EK|$$6te#%XZxq>n z*!s!3hM2|+@7F|cuXiqf&zJRi9oyYk%hP1oSX9FQ?TgnOM8)`_2kQJ5rA7U}`^3yM zMd%p%W|JqyIY?RlSfTR5_p(9t?t6MFl5}7fwbp`2ipm)&w=7FONQd?mr^+Y(Jr~?E zdJ%Z6?sNY7(FCZ{#J3jOj8H)jMRkiMYa7*H5xs9xjkf$XaXfoHr3K;03ZvfTSfG3| zac0?_W3I@JOrHj#E_4=i$1LmOh7b_U*dZS2)G*4oi{Sa7_Qsy-*AV}*;MpZMfo!i> z6C;I%PnbtvwdK!pp&xi~>T$msn8g(`VMfzBryjB%<)i7qcj^-xRXa6R#yT6Vg18W9 z1TI*t3LfAK|Kh4pqQu3O!mNhC!{A@IYCJH>6J`bnP9W$CYCfODkW<-9Se8!?wF&pY z>1YKg%-aWYpPAle{o@3tQa5VJsg^4^vdd6uN@O zZAKBFS4~2OUA8`dH3I6QEf9@m%I}m=-4{t|R@scJ?y5bf#>mrxX%<<8TkybnK?c8f zwJ0(ETaN@it1lZ+f)}m+UO{fKk)SJ>^mKL6&T;PCyE)>pZOpzK&*1glD2$DP~{7c(`LTp6+CgWmJgj%Ci1VedSKg&}~)Y zUSi|Nd0xz|Zda;dzX<4^nxILH>bMk76DW|L2OiJ2I&lOX8Au&8WPGLm3 zTC~JM{}?u?3PDo9nSN%)({L9gFb0e!PL|Q(IOMmrUadqGg|^4RZR}d{Nb%<2BZC96 zM*P)X02|7>El0y#(>EH>i~@H_{?`=t$l-Dq`H7T_O6rMhlR>f0m}P60o8aAc|RIfzeqob`HBO?l3y!EmMQJ>jH`2 zzpnm^Q!6FZtU-xEHMbW?O_7zdNu@W?0(}+IIKxjYp|-YnM&XTk|0njW`*QYv7%a&c zl;l-IjAeJa-4newkD5yu+Bs$eG`HuKF+`my*d9A?7`1B~N+kQd(|U8)P9yPQ2Urp% znU_E@Puq$>SW}#Pb6;WRysWTZB9~KK_`3v;_hj1KgY@#eo}~qr;Nw!bDaVjx-N+Zd z*h*hMCI=04bo<6`t5`ruK1#KEUgW>+DZTAKW}EEy!c}L$+r`QeLLuPHx6xeG{^@&^ zs>6(1*Gbhg#X#x&F-7s~$dlZZkQJJZGa0gu{Q9g@cs|g{BGIgD^4+g3 z_n(`+P4)(?g4Z=*@r3GsGEagq3Z?_}yZPd=fPZ#Cbd>-WRN3B4)^J#>&J@_cVgyCq z18Xy!)-!i#PvsukoDx;5Ja2cCtmd!`oyzI!H?5>X8SfmRsWqK|Y0e7B=jxF@x zludx<4)+133Cc~w8$P>%+llq_P_&tl4hNR04Vt>A&s!wq>W@F$F{}wIj3%;1ko#7R zIA$no)H*Ole5+lfEzAp{^Tojbgj$s=(9#-?=*)O2!VFcJ<0IOw>s-_ai`Q<-dxr&y z@==ou;Xf8}$!~)_SCcDFW^1SWLl1BX%{JYDjdaq=7HWN1WhhiYI9Vn5&E3W@o=Zl@ zF8%|OPANDg>PQcDoiQF?1T5gc#d;g=)+CXoX8lYDBWzl9M=5QsvvDu;^GjlMVJm|y z7q*K;;eEV=ve@OcR(?$+pYtEa;k63hFq%SwX}aYwNf=u{z zoa?PcDDFj8Lh|}4Pe_1Iz~G<@-jQtk3$#Capa!%!>kt6em@Y4fvnE=niy3e(9%^ab zJ{KZ$UiCIq1Xg(+Epo{!$}O5&Uz@6Shu$TgGzLD_8b4iU^}ken-0b!|(OU5=xLPI# zopkpHJT4qeSlGM0zlA^FpKtbb=&%6{S3GHGNY@8uI4c(h)7I8u$L#gws4_#p>e`FOiSh$FTi*c2_$ZB$g<;Wc5vXz>A=sNK< z7VFYtmaY5hzjJ2{BdV%KSCN#2QSq|&8P7hKho#Jt zRQjh1B6>+(_B|+nRzw3UL|xD(I$$isB|gGm346Ae6@1dM!IK^ouga55ja4AuI40cR z$e4n*7l&>tg?3Zc7LIt^iOT{L6>V6?Y=O}i&@5|!)YOM?^3$OCp^la_Im}@lMY;i& zpgYt2#ycU;v`!klCiCZ8R^Ln+6{j>!;Dd9MSM(tQXZgXz7 zv-aWdiWYlk&q^8*Zu&F;-1L1grlb*L&z}EC&|qjQ&yI!xB{(NrfOLYNAP$J71!6$> z{lj|sCpH_3krLj%;$Ws%og-IbJIwIJyy2FNBy;jc%7?_vW}Qw3c$6A4Cd_m2OAbteIR`7wldop;pmYl>Cyb`Vce`eht+8_px)J19Urm5NQ(^NpEr_ObyNtpr^?> zkr)$!MU%`aq%^ec!xoVr3tH`WH!Rje^T|n*g||~keJcH|bTZ47c-LoUWJ*ZDP$>)z zUO60*TLT@xbQ^tcZVR;j(*+aqs~aSMEoXZ}T7tVnceUZ632Ofk{lk)vCTFOlVX9+t z*`S)H)WCe0-wvRzW5qOmwet34JU07YU>pX<*a)X+twqZEc(!+bCe-xJ6|x*?(BnlB z{R3*r=s?Deb{FdD^u1vy^uKt%9Bm9Bk%}nrBdcwfaE#VzzsV3Lx9)pr>f0Bea>kNp zzC&a2L`z@vX27*1bw@Y z6oX&&OjL(WU}Q9INt{DTHRP~DI&TS>k9E0njb=Do>g}%9h#3eXxM1@9JRe6|0-57p z)CW3<{^Fsqm!PQ3As(Cx3Uu~6n_<)d7^gAxTf;-wWD>am3Zn>+tA6XkA3Q7Dh-c(= zuy^gO35`ZWnf82J@1Yk%-?uGG$`IMeaL_^5?v?m3m0{H=AY!vcYwB*GEHefkdKpIX z+Hb0y1%aB@!Hc1wZ?Uhp>J$w^b>U-{8}7s@%`S%FU>^j2q-0F5ZGjp0^&XumYu9BDW z<1e0^MHoklWPh=AVhM#Gx(}qdC4L>I)Ez~SiCukL6(-$|EWUkse3{?&4(t^*@Iv+4 z`keFr@HNSKyEpLJ!pjW~4sdPu>|X?(-nQoZ{L3jQl#-M0uCZAv5Z4$6 zQaIR!pM2R>3f%pdz|#U;AyAk><(1bH7KH`^yv~&RZfs#LqFK588x|2FLOxpGFBG|E=B~V- zlFPjd6=A%rW+c+{k$##rcPzWWluVQ)9V5OXmAWpJ$y%gmX^}3M-bDeY-k)2#5~x7^ zPDWzjgSQg=#aMBK79kR0zTw}a{J&n?;IE&toeNgo(ajUMh-QrWgAb0)lQ)B1TsVt9 z0-%XdFE{9kGAsOVzxm%Q?!Qc^w^x}BQi-x3Y7fuY_WOwOsPV(wK=|Jlc=rR5eO=R0 zz}Ets@B5AqQGzlX{5nDr_NeirXg?3|Zf!8^*}F3(zXB{69!A98C|)MSUIRPbHmQ*4 znCAJV?rp^XNf8vt&YpAa@w&Pnp)pov^D#+~q&k#EnDtUJ{lSTQVA(>rmJpGUru=Pk zYa+m7EzXC=GQx_~gYpLm3LwN*Vv3#;M*|QNB&X{-4y8><#ahq78LMf^((J;4R50XO z#(Gt6KT%f5b2=0=Yh<#}0|mqD)K=x!#RZ=vv+Y`yS!ZhX)>}tEPUX^5H(G8Hev80c zq`;eiOV1#*HKwd%qYr5#Xjw)X6Eh$h6p0%tbf7~W*!JSx<=QyB_dbTzDRF>+{TPYE^W;ecY z?Hxf09#SAiZl*etgo!q=!HwB)sh^nPg=sU&oGU*zH)s1+D{$P6lpkJ3s5Ol$`gWDP z`#IXCA|59olNi2&~SsZmG{xOq;(IW0A zL4HGi(sKQyNZ?i+qtf|iU%a;Q<_~oh<54YP+NkHwA%ZKiOK&%d#r8+~Qy5ho>APfcs2OMntr_>x z?uR6VQmk@EN22(^>L!K^hE$~EzF>GcVs2DEB5|Ai*@~&*voMy#Ic>^E(Z9}y=m?r| z9p`ng7hs5>bH0Q;B9DzDzlEo?$QF`dIDkhZ{6o++V=&75%Zgay!70aT(je%vZ~I30 zd{Y1nO;m^Kf4(rg_?>jI&6z!Y*y-_?8_Ia`A2<>5`CE}S$IIS6hR+7zSp>~T^&HPV zY{p0pF&~Q%Cw0@A*&Bu;)?=OSx;VlP76yX~-!xwCHPLK7kaYk#A z=CgDWJtX6rq(R7k({l_`N^66Z+YfkmXAj=SNT8l@_}w3F9cM9dMr$E$nkzCR7!e&hEi#jWLY z+Dtg)@WhmZEXatOb6K2{raSqp1is|w{@Y1Q`oB+@S=ybeh!hAW1J-RIXG{HP$dF!c z;6g9QQATJn%oJb$z<1~vc#Lto<-W$W`|4>oa42^+Pf%cbt#))N;~NQ8-5s1@9+ zKo{jm;oi+mJY0J=tqhkFc+mB%F;lQ8`o|jvIP~}O@)uGhpNIp8sNIlICp7<=-JJWP zAL8DeMeJ8yvw@TtyRnkkECGpPj2~H@>)R$=J;#d?XQKDOMeJzv6$v3~MJQ+-O+udM1EZPtvJ9VT zc=&{j8L)+v3vcglU33^ZGrBytVSOwp_INwHf{bs7;piVy6S1lDGff>vbACIq2H)5% z$Ji180rT50fv90pf1#eH<-NVpcz!|AK^Oi(vn4ZON`K^N*~s^dtPy&-w{Hb8sH*XM-?`-cEyF)UM{`PcxvXa+uX7y_gI(2$MK>^T&tD>~e|4wh1 zw#c5)$ALj4E-Rd%ok$`hpKB;nuC<*^j{;9{=;M3YteUhrvAVe*H!}E%oDwdZ9K#bF zJ6k*tKsPM?1V7b-7-fa>6Pg_;{4sO)$$>9ou-HD-j(=qS>O)jI+Dg&-Xbo&DT8^fr zfkG4Ubr&fEB-@nz?}ro=ytgtyc?QDI78`*Y@Qm_~W;jin!*dKu)T(}7)II16f6wgE zo|J_kjRyjX|AxeYf$yQjs15t^JDodSW&Um%imrL+1FKZfl}f|$zszFN7G<-;SOOM| zMUuUCvaw8mcK>3$`8XRZg%0H~$BCs0%W6?DuDRl5j5ngcymaaGLROp0qg= zq(y|e`f&!DYk4SH6K`BIJ>?HmZ<)u@aw5W1hXMiKO@{^Z)7;8F_e!FFu~UnlbbF^H zuz5tZvFciyW}>@cKqzo0F1qZ?VJ4vu`Hcr}a1@-!j4paUagR;-P+w~{=6yvghUIZ; zf$Hu;Pt`n2O%~L?D?^tk%`L}FA{uL6v{dVxkT$!Cufl@(t1o4f@GOKU_29eH5HUWY z9`YH13u%nsFYgT0LCR>M5mcGolpZrUzL^iVG>4V9U;_^9#seK%mPKu}S_XcV$md3T z1Xr|FjQs*afjt$lSy*=}TxgYUssVwv%cJLP+&4-z(JU#fID5Kbll_a6mh&{ag@~>x zYb?a#x~9JPoP6e=99CU`z?vz^3jS&rFpXzl5wM1wxAIBLrj!ClCMi*1mp; zZOQ(S=B+VK1&tt3h_9o4s5W9&y9TB&AHMMeRsBOSPOU(hwFJd;*|=!cy%O-Kse4sz7OWCbRW}Ao5>? zB^&gw_ZPdrw-A=m3jNOmIl*Y1jzVmQ3go{xkXMUO5Yp=@U;v7Q*%;l+yDwcgo!JJQ9V$lte7qWj6I4Z_qBhxWg)fDYesn%*5%Wpe+-l$SGmEQ4;o%J;mUKw$bNbtSl|seD5qXq=>g7@$G^T!Ph)@`C2ZyD+ zHDbPU7g7VSE&4@b^l^w=AAZE;7!`_1Y*+kHt%AB3_mOV5I84U0Y}S?XHd4v-M(YK3 z9A}l(WBH*Js1{X|K+iCj3ioU2%$YInKvA;&~GM*fa@#EKX z=l5XvM0*p~_!)sZEd_&K7hIg;mIUnn3xNbA_}|?(fGyWsTj+R?`StlL2)MiO_>;I8 zDb!_=q9p3Jh8G3YBwN|aUKXb1W$WNR%hAd!ridfYAlI-7N6Y5xIys@ z1$pmYG(501UoReDoO#G62?3Bwlpw-U;fN&+@sk>>luDd+UqK181%$TLEpXrAZIKs4 zXp2OSK*K)VGF9wG{`;5#Z_xNeeVGt{p~^fz>WaPECxdXpLGl@?{&$6PRZy5EIvLX! zXJ1C(`(D028z3G^<7Quq49>r#vajD< zUtiC4a8x=57YFS@-#%1tg^&RV{A?eji|VyG*-*sKu-!s0FI@lGq{XJ-3x;Wn_ONME z!)@(z++p>ObULPBJz=BENBDx2SplQJa($c4PW=9MUsQ&2I10oB&VKTzMsW$PmMH8? z`R}KW58{;VNswB**(FVrH0$N_`s)@mTW2hz_+pXda^(&V7RyAUeM5p;oLwU2e-P)8 zW_jIRp7PA@#h$2yb>y8pza@(Wy;rOl1wEc@KRhW!NB_9biuV$QqEsC)&Y)gdqh6oK zJriL{DiNPcli=Xs0o&X|j5Xo^O~3#)a>6d_0yo&TNTHp7XatCYe6t9%Ru0kMMz`IE z_k;cB>Y`Vc(^e?;;ir=tpTq{0WtC1#BdgxF4w;O1% z^8V5MPx6CMjt<=)2N6u{sR}l-pu82|yx9`_noL+9~D_E0v8br#wm6pi*jPQAf;u$5#r` zK1w|lG4HO>AedK1{B^hK^W)}s3y8?3sV=c{3WAPB6rDiA)kJIL_m`gAyt+nU7;X`{ z*DqfiNq2s8p|Gv_Zt+to>s-%WgM#|GgT47i=tJ(99L~GA%T2kj2j6#Itgcokh6+!3 zuIfv1>Dqt6AbJ?{Xf#xvjzm9Tx8i`T;4jU}yg93qwi=wwa$=>x57nN}x^c}PZ7y!{ zn`t)%9a^=87Z{2Bzm-rVo%#<3lRhUZ<=>&JI3&+$d;xOX&mV^*o}qXJKA6wCdNi6j zUemq56a|G&tY_?A3hV1zKO{Q$CS`x{zBq4b?vF((sk5t_5D?72DZ%a^|J;9t`RViL zwauO)?jstTbG%M~o|5Uhsx5Nxb89=XIVbpzd$HV_Ip=!HgAW|D{M2%iAVTKU#(H9^ zf!^VMj*2EBkZN#Z9k^!B)44FKT>hCsNI}8oFmykX;H-@gZ*z>WT{GMZ&>WhC5?7@~_j6Te!T1_TO*v@~qnv+JHiWv<7%rIj>8(zl7-YI_u794b@%FB~{~d z3>#c)ok%ZuI^Ds4iu%h}9sym%qOfTW>fRh#=3ndijs5U-S%~6~8OGE$ye!-NtYz z0Qq3KrAud#y~Fi^IcyQ{kSBp1bdnpuAA<za1p`<0eXSfJ&hT6QeDEwDl>SzB8e`+v;Fx$dwXR(jBTFn(`{F+w4b~T z?gZ>JW`6mWAT>$d_kOHA`m`8Exb=X9R?QL&oYQ z3xl5IqU`1tu8tdn!)x@KjHx(H<;PIyf6(#=2;YN}tra98A!V(C26=H3by9wu=N&xI z?IODwmKEvR*f~_-Lu`^A@)Jel&tk%-Io6B3Zbs2g!`H9x2P*2%f-A*(k!AAqKKcZY zF8ri%&1=wpy@jsTkMwyPeo8FJjkKYbCOs<|j;7{C-vukuyQjKSbxjn`7sHh{Y_M}< zqce2x`gmQTK=jeEpeVnnL8VGX!cU#aLsw-F!=n2P{|Gy{C`xPLvSVF*0qz4)3I&a zwr$&XI<{@w=vXIqI#$QFI=1znd+YxO_nn+dRYqr!oxRsu&*DgkDgAMLNZ}S-=4N}l zMamAKZ#<>l&v~6;$gA$W#r!Gl;!;E1fD(fboycm$Lx%Lo04LR)ir9 z0x5SpK>Y-09PE0!%+r+{ef`BXF_WN|nKynn9oNZlj}%O&%@AG}OoLPzQc-Bs$75nr z9@&V8hkx?~@bFvE?dgmpAsI>gge~CZ^07b)*+bI7M=P&Aj`Xui>(r&34cee(vWGdZsg#)i z2fs&a3!;PcVCv&?vMC9F*r1Co9c-MnTEZl@v#o7%N$YW(W%YL+ih>VFeDcMG3WhYIoBrS{ z&)r^|;#Hnl{)dHuW5>Kl8KZQ@N{8>uNe_DTwVPjWJ&SHH0esLi4^OUH(XdQ`fuAA& z-gAbOh&E(cdfo5o60aLen;I`&brT<3d8l+i(d`y8Qnzl#Tej)Y(w50yA3cB5~&sH!uYnTx=c9ADGb*5 zW6496L|Fyse9{21B+S&KU}FZftl_Y1U%tW4zCSXYvtgKb;#ZvO=W3#Pb*!}W+T!8RUf$jv3!w*6Y{w=MGFg-cxibYN2~ zN>ygn)H7$vy#l)+p`WkQeXrwq)k0o;4SjFLdtbup571d`VYXSZ6B;QjnXqp5FarV^ zeNSVk5$S(d$P>J~-6RTGlr&28)rUBG>L3r`Ojh0NloX=aSKT#VlR~dPjKmVCZa%zQ zu~wYYBzf-dkOuwYJ7>_2hmjR3e{zYClhw~Q1wRORb81o1o56>Z-Xmp$@QmZv)*_aD z58VmbkyKolEazV4u!z8k(o@5Jk~-~o0cfk)u!+k@ld-SeK7I+4QS-AKJI3ZGc5NaD zG?^`xPwQ-AsJUhNGf&dk!i3KV%sf2h&r^s%`u;+Y{&oX5XS7v+e@zmxEZzVe>S)x; zk-9mCuA`8Mv7vLAbO`|rZku41ji@pv9m!uy`XO2%=tL(|6cW@ z34|f&9u1eWdoRmn-a*gCZa%!3V@y?A!r~~vW^=WMZH-*8!mrmCu4w#$(ex|Ob>M)l z(0#1?sm5OW?2Za0t?u~F^yEcV@SE~C!X9sZ_vAD#FW>7SY9&tiaAaqlc8;93q2YyXrHM+I(?i$$wWxjwMr2+^mj6-f96?LLQf4(*}^*O*37Z_1z z_vw0Gt#^l}b4pdSyO~}w99G@uB5A|8wuOZRFB~L&v6`%BUZBT{!f2KMBP@GZ(HAA{ zfU~ZeAs%LAai;|?p~jeT5fUHx4>dk@5owAj^)sv z-cE=A!CP&P2QX3Y_Po5eJ&@0A0_0y_?R0ru=ij?AE$i5dBct2arY*jS?e@*M$4{S( z-}4Fj9AB(iZa+`4CI~#OqDmzGr-?|O7q_6RUEB9!R;^$&Q&fL0HORusW z5lNfFPIuM@-DHiy)@HUH0|MsJ<9XY*-}&WrPfu4@*L!_V@Z4=Aqk59b}+z+odQTsez1~q{Q`)9}7FSi_CV*z6^VX4tTY}Y%JKg#Tm zmpv@~&XH+wIhJ_p(WYV@Ak>hl#zAf5CV1Q2A~4JG)Faz zTiu1)`F-^}t!3IM zQ?i@J8lrYLl>SH}U?LN`dAMWhXS0EgI)hE=mq3PEmh39{d&D~o+g>xhUX+nQtS0@6 zR4tHW+FZWt2(OHeLSJU`*rzxe$oIb98vmC6vwtWsx)4x zUJ-5^m=+E=waj`9bY%A?>93SsYVDE#MkzY$y2c)U>4sQP3wz)y*>8P(k}FKWQCcxY z6rCzho>5DLs_Gbwk}}f%bK=-z5|y4eXT8v3ll4cmZRs>wtw~nwCxx?NIha{lwGO9z zUut}5JVu5aVx*klb>}-~DWbR7XH<)vw@^0&Xzd(iyCbJm#xON?B^u#nhX~QC*6sG{ zg@kPtI1^UXteAidf7fl1|z;S;lFpA`}g`sv&SF$J?-BNE4DT!mZQ* zw+XJjl{nC=#(-h|IY$4(R05nYONRwti5Lxz3M>*^B?3ZSNsgkB;KWvr;}0OxTn|s2 zpJLj$a$w^?Na~)JB5nvtq(Uwo!6~AWeqoz6ttFoQ^EdKGw&`E@PH;^1dJ{Cg)cO;X z;{6dybfb+?QAc>2%|9qbk*!{b8VQz9J+SM7j>vJB+WLziA?`GE5$T(vR*xU@PZIVrEzAJ z(ishx*IPG?FPxHT(N+e#+p&Ybi1+9C7eB!}@V<}PZwO09fuV~+6F#Ir5D4zqN}0ig zey`?>RLwRsmVI~JHPC1HLwu&nyck^JI!dxMsX~cXg<+MuqH#*fi3cDR>T0`@!Zk>0 zs#lGMDl&w$bylJI^OJLDwfg%J{FB{@f%ZTNSBTND`aEv_y?3v@3|m@yz1vWbQ0<07 zTbZ-;mkwu%dA{}pjHsX9^B*Fv!YtMw+CYr4n{p4jmA%Znwm%{X*GB!>cwzZmJYAfb z>NfUBbb}GbGrT>s!o2YNaoXlw99?Hd_L<7=E*Ie(aT`YJ>BjDeCdptLixoR^_?GUxf+s5y9Yaf&y>#wbQ_O7mz`b=W&L*`G zFa|+wr>{nPj3p1I5hgwl7>{cPi-!Ev{OK2%#4NGZC9~;f#FkHzI>p{CC^vDjR@IHt zPyHP^t}kyDo#^6rvo^vY7uxdkt6C(%WBH#DYB&pBD#TVnVTr@cWgp+>s7_HnLj z1n|KVYo(ia04=Zo`GGj}hL?VaezM69*yMPAmXaWFyQ-QXz>SSLbndtn&?V4vf4aac zo_U?HJfqK)qqwx6(E8V9aOMi1Ay;s;Wo&JOemn+L9Z*0@PKvvs_b5cEZY*yDyC64CEr+^PwmLAVnfG=Vm zQ8*0{nE6V>bH_MYpZ#}HJAlKqD3tGxQAd8z6Q9ykYkkt?DHgAlVuC#pDi>~M(@3m{ zjFYsR&rGxc$8PJ{EUV=s8E}UgpmI&`ZZ~${oy~ac;jqG!#x0KXTHtIZBob#=FFLC^m#vi231sYHDCeU}s@Drn-&I0z%=fJ#HJ$23jgFS?%0 zm&s-b+%^(6Y9qI@s|{rY%>E2v{653o7lHSru?c^T1QvwJuYq`_BgbT>uJZ;DIx$%Y z6tHI5Aq6&N2Z7t=-+oyZP_}y_;mNz4O%P`T$dr1V4!sm8=25_baoop$spxJZ69=rp zD^l^EOKPY7EFk8nASRlBR48Cpa3*U67#76B*gsThUy!w#$L?VIFD@2<{cxx?D;kU1 zpEfP&NLJ0hDmMTM+p1-i#x73p;^<4z(A#8@;sE(;{X9zoA|Re7a!2-@N2VaB$k3h^ zp0Pv5_m_KSZ8F)fH2={}_P6ADblNFMaa0&eXm>cuaZjD(`@8$GWhxl9!hFd z073jkZ3#N_aa_jK95xI@|qq0V`2!FYQQh9@V>8>mX#x(M-V=Kw}ydFRA=fBvn z^?bR#J=NUKeals6IhXnKT?svQ7h{bs& zoZo>ffv)TZ`0PJRtCUJo@k%>39_7?>f_Xz|4#gGpacSJJ92>HXrTW9Nt8!CLFfe~` ztJ;Jjol4QI*(UsC#Y~M;(3|A4|^r76vvU4)jpR}a)J0ft5W#Z?DnI-}`|LIL z`>OAgoU8yD&iAdtKlGN$($qB1cBRhwbRt#oIYv;{g0lOyC#U=V$=?4+Q*hSzxWmsQ z-U-@4B&Z0M-LyFjXRm?BgnuXglbB0QujLp`)WJkS*TTejZxf%T)wG+j5n2Eo)@4yt zVuon)wznKXJ^S88&c%MN&`COp$MO)8j)IV=F2xh&&6bGIySJVK{PSDkg1WI zggh(3bO>jXXcpS7zXL_K5LOa8e9kIl%`QRL(SUTfG5N>h-V(1fvMS!=w?o9bzmQ^7~#8d{22d^f_U5^m_+52KaPx z7~TAxZ`)fOd}vgQf`2c)^B9$Inv|JP%f!G$Nr zG9Vlr=mmBtSX;j{aBI|}a{yinCb>_xyI(FHzdsni7MH$X9ly>n><(vrca`639eaZ+ z%u?gBy1>xJSYuqHy(Nc(`Lw`e5c7v#i4EW8GhPlU12UWFuoYm*nlA{qcheku2j9F0 zR23Z?GDX$X)JkG~7tOg=&8Vy73jq(-cnd$Q=>w@+Rb^^_j+0<7Z? z=G4GH7D0R;krnoN@Y|S$wCa_CH#8t8)7145zKa`*x7IBjj9wIF6Gz_Y=w=6HeV%IDfhX)QDXWY5HtSK zlVV;?)o$v`FY}{Ch6^qu^HfrP-=fXib8Iuq1 zV2VnA&7FY7pOt7o5{U<9ulaT!Qd98jm0z8$Dq+Y)!kQNfi`yb%{m}3!2J0;hbM#nM z`>s=W;?|xj0h#>Suhm&|H`L3<-#uVG*JT|Q3Y_pf~P>1F=fY8xGwwleBr`~pgi6|*poPigp0 zv#rehgluw@1vYGD8ams2d)c@r%Fe=Q*^H!|+)cPKHcHA-qw&R71Qg=hHb~iq!n$~D zw|!`yk_Y7hLN2>{Q7P>i9CXiV%U;7R%dynWcp_*(wFyBkOk`Z^mMF!caSXC<_xIq> z8pK%>n;7MxH_yoG6FWQj)$N&={)qg&!6W+PuRz21dB%Im@0W^3Q|L#~kW;K&l;F`! z^lN8+KW2U20qd{VqnPk(TpsX(9gXTuQmfu=L+X^g4K@#QXoA%8Q!$ z9h-QLK*fL9=euXN`sq3`t1iE&(V=m9ywdg7H4Np(NfO91&p&4|#$(A#d<+_Xm>zaG zdH(7*(`)GRNSFo$$2DtGMS~uRj5jk6HynPvf(pJlet|gpKHK-+=W)L5d|&N|Zl!3s zERUc*SxT-ZG7~{rYX3tB3q<_6zNyaQi(gEV97`N8Vnaj2wrDo8D>79(6}vZv|2Tn_ zyjAWlu3MMAx5zwQ&ZWsbJ$ma9%9BnGjb#e6z2_%=dJ<@CQh}%LDq#`nksp?0+87&+ z>~@5;0lMu&u@>p!zO!rR93OX^_}+|vx4Ey+;#PUE4hZlpU=~FS>9kVhVaA@hWHyU@ z$we{#liE!+#%^kG$vQFnBS?f!7~eqljAy;Y()z;727?MBUO7J{#`ySYoNVZnA1}x^ z^LBpJKTz-)GXMc!W3Rg2-@)0+Vbk+GuWg%VvZ?!HENl{Xv(xY7X*#FP;R-0n{^vm2 zlW}+E(Zm8A1jmw+lAPN;Uk)8qllPc21%&dM3T;EbY<(vEADeg5#~=7`*HV+99sBO_ zTbJ9Ed5tXVEv~H!jG6a8vRvU#z}yquD@BI;4?Rm#>tYqy=hLEI^U>=b)IM%E2~`Mc zOYMYLEXHKMeOJ(KDy5Hv^31OqGh?B0N9_)n%G{6a%rur2FNbe%ls3+0_>-Xr*xJgf zj7aC}Bq2lCDU#m=ki+eRQk>MbjQem@G%&{?i&IW@+|Flebsc-&mvKF=cX|w0-1u{5 zE!wWd0JcDdRk3z_fKMGU|9@o4E_QU++iy^H7~)EcEP%Oo*MDGoo&NW4kA1g>pPQ=R z<9+vib@q1r_W8bVRo(Y9?Cz63sf&R{zkafeXxR>6*GxBRi73g`dVa>OyuOSI0;#md zj@JYSkD!*VGcH_xlUF_bbw}yf+9+iYVdf-Ci+;&PP`|PXip)y@CQ={|4USV=oql zGau5*%jHrSD>F0Ai>a~xa$J~r%P%pIbg3(oHOCS02Xg*?p~Ii8>XEl6^b{;#M&U09 zIo-K{{IK48Ne7A9*x`s#GKW}2to5^Df@w&a`TE^h!vl#ECAKkt+>CWvg-mWvJ&%kz zhtf=JA`+t&hOp)D_)k6~YTL9_!j{xx{mZ1ZS|-&=Z=kglJ{33|9ypoHHPHlnVp}Ps zDUXb!LNSo^CZ25jop~BmMMamx7bASq?fo9>vLlcP@%h#T%h@?P;7{?qo$rdqlVL%n zpUNM`s29wXz%TEp-n@!w{d`_U_A|A}g>|Y|B(~P5l5;Z97kcYD>Y@OmovN@_%V(O+C<%7n9*cm9~MjW_oa6rTUND94vN!uPZ-F5slzJz`{+PVHU zK%bR#aaVk<#s~$#K5W(Q6RE<>Fmtrh4GU<=)+2wGr>T*`MQN-hp{!$_Q&C%_Yzs`h zKs}9=V|Ts|lBf9~xuoEWlqcv1vTQljm(1A~1dD8zu)XJ3umpos7zqI-neZ zLnc|X+wJ(wHvM_}&>pw;wl4;9z1sH+Kqhi($?5Jx6pyLc(E0rj6Kw72vFo+cQo34y zPFOcFIeHmf8pP@&u~=T9sBC-ywaKhz%Qsyj4cN&mKz9vW3b5h)3nm(He>QN$-CE#B z9Y+I&|?eMdjVJy#;4A#sn-o|_}O3&lfM12jMN=e2Qpm#O3DfmcBsYj2e-!kT}*yu{vsU5 zwx^IlF7Kk4p9Y;md(JIPIZqrQ{azDyic=TdL_99+Q}p)FP$i)0e73d=%pQW zFQEP5jdN7%7<6;osX8b8P@fPjeA#KG`tO%rPhhJMgHEXXJMO}I(#k2dRlT-l-2CwZ_GyQ13qcv^2*x=aF&$O4_>?}7YKrFx33hW7`)Hjj*#-qMGmV8F zZqqyZ%QVi$xj(|tKRRdS`sNCd!}mGG6L6UDg(t9iSY5!3McwZD9Qa#*)T@l?d};{P zHkbGxvP5X%PrG#FZsF4YFs-|ktmuhL5>L3Gaic$9zTwk!#Ga7S^4Ru|U7z(Ul`{Af zShIN7;GzRH`6Zs^Ync<`OT@&9S#Y-SBe)_UC$=uknTf{ZnTM)pyU0-F_x(WvCxGfvzcLq4xNF>8u92@ za_pE!7A-@d|KykwyWf;hS)u7QV4{<-tBG?9a5OyjpkLM789Wa6USahCB%bRzT77kff?K_$_x%XZbnE#WlzI2 zX1hj~IG%r}Cf1}R8_C=hI!yBq&obu-9AU@B)y~>hkJrIST;8Y8dzX)o&-?E*b8VaY zJd&*c*$?Z@Qh;}1?G+td(qv5Wy^!kXr{^c&+0)1I*~#NMse)s6)hp?mFxBNN>E7;~ zqrUr<9x^01On0}3vW+`z7AZ-KJ=~axIq#q2XYF@b!Plwaj8UfQDxBeTW^8%)?OTps z-xI=J8U&%|*QcJ>$B&e_+($s>sivlkz6PAVg6d^%aUv6BEWrMcA|aN|Zecj|!!%?g z^66ZCQGD3bG3ZqitdxbWta3#V5*k1r-77`C#Tx>-&_POaps=WV$6-un183=xxh62v zEF*=k5(l6=1p-!0Jx<}dXdxRaZMcQJ!`MCUbqU%j z3?1Y3rCsZ-8__6Bfrz1nTnN{Nsb!WCncC&9XBi!R=2;d+CTH7{D=0zQCU+GSXIL}^ zcU{f39;JXj>F*(BzSteWEZ&Q#(Hkz-(2Kl;|F7jEYg?A(WGl19a9*3AFEMpe`ju(1 zy%{@SZ-Bi(RR}K9+*mS7t@2-Xa5LMSs_>l&>{@KFxP5T$j(QKjuXpdc%&e-;;(0bi zub^XB0I^|INJiR<-wQ-$K7J*~q2V>_7|gxR#>vj)Q@gq4(aYwdz)&TIQj{xQt-ek+ zCQg|#Y4-9^w@oE zQ|}}&x-e)Hp(DUGW85*T+4EeF@zc;wqy%$uFVu~Irb?rr2vtb*_t?2+21}zL0n*`@r^%JCR~aJ9HoV^ z(hX>PEw!{&inq)~=OWFh8QF(2Yt;Emr{%h4A3TxdxdSJ25UklTr+rDsMGV$+Ekbqy z6?oE|UE}F8K^|i8IFLx+3yP9{k3P;XANn6Z3CZ2`WgAz zMjuZ>i%07z61;zjG+cLfk>NZP-sNTFl2lEgI+}1~l(Y2rO%%-{N3t|{m5EUU7!(${ zUI~!q{ei+74cAZOfNtSqOP+BZ5;`rS9o)!{xE@7^* z20;-QEQ_9gvh;|rK*dO7x;>LCdd@Ip?;V}i&FzWc_|**P8QrtPwUTq_FcZ-_3nXQf z9%gtfvaV_xtBbB}I<}ryA>nrr;(Pt~NXCcZ7i|D}O?~YoZN0B-E#Ph4!(e5Uz)!EO zZ8o#-JK+0sAMtaKaQ5rz`>E{+)Bj5G-ZkJ-5`^ly|7$PFLGE`>5(*oGxrVI<|&)6dlJ^A$5cU~e7> zPGw_s$$)sa{2o%==zBH{SYX)ZPv)C-R{yor;prTsY0xL354GqOZH&yyaFUP2$1NI5 zrHhtN+9dnE!+dI1YfdXg8L#Zg;z65E<#FW7d|t zbaDvNRCHpnUuB^Kt!Ixu!0o$52jT5&g!%7)#+J$t~f+$&onu z>RDvjccyA?wG8H}Kvd?vX4H*&OSJXA_RuVFq*}8M=MJ9w>w3Knm3{Jzv(&Pp1DyBq zg3HHM()4`wWv4FK2;bT|A!KEKcBhzpw$yQ9wX$CWnqtl%-bzIx&#q&|T(WiswCY;? zA}azZ4*0?FEUTR^<9@H0fMrMyh3n)*ew3`yQSvE3JSyEOk+KDj%PtOksl{slL#O1k z!KPn4l4f>)&)3v%qITu__8?$awfl3KV8`bjvN=RF-2Km>q!Wpecl3b*;Q~ml-=lkl zfdF6QD4eW08o_Yd>eSGq0VF10{1`?)}Fj)Z8boa;48)|Qib zBL0mz22<9SMV0X3a=ojUT$8LI89J8g5J{)SD2y1zR;_H*mNvwf+BSn;dlDI*7l0;F zMI2?IytwZCdW(dua?HBHK=hmeq?447^XZkPB6j&Wia~a-wUkdWQp_ld)@F7bg^QB( z-XY4m?UkKE3b$U7OdW6e%&F0FA|BjkXDYIXNGD z`A4;SXphQGSWafaeFtmo2B#k_ba(%&_0rK=kD_|Ux=~(z7CIF!1~e66nAsvmc7c++ z&kdbEO=+bjK@t!DO2rJKYH((T!ICjP%Z_Jx){$v5kdBjyi->8|l!_tW(%BIaeaMNe zlNU@_5cZix&-JuH>9(*|by3G*_Vx73n#^=e@LI_8&* zi!$oZ5RrhLOjyg70@*dV+mNSIF-b^KC24V(iC?a9oljPQ-B_qLLl;j1Ch#ezXl~95 zup~s-UK&Wbqnhj*uxC{kT-qT#OuU<>Ojtw`nX^yS(ZO>gxq?rW07iN;zl-08?ehlU4> z%9_38j4m=V7^wmtx+T2mPlvWTZvs;>*~Z+f-s@Rp-qR;eK)O{ zF3ExM3&d#Q$rUyHp=YshuV9Ubk z%6!G00+Utm?@OQ8-CrZPhVO5heQqb)m%O;R=eU~n0xoV`cnBUI?*H+bxLN{}{X;74 zx7P~6PE1&Ez#VdV=08w^GgD210AQp)pAHf?WNWLz=lzV$^KYkwtrEXub?KSFO)*;K#j?oMzzXH)(JVvx=v^y3 z_fl0@kMR!Vb0!IDmg03i`fXd8?rEem&nx70K&iH?TnKf|ArvPBBj|fzvzHbLG{B=D zU2gOFIi9}AavOhX*7+#XVyHyxA0;;pMOB4$%VD~7<8;?`_hgx@Zf=L3)5&(1)#`F* z-FZpL+S~x}0ULd=Os72g2u{5688KppfpL&;g{hJMnW*0h*;O{s#HE`9IbB^5KpQVF zZy^sJLWCs{PXpxql+otsF0h8&8aZk0FiS?bLavdQ=iqwMZmxAjdBh7Rq2}7MuE64^ zh4$9nP;ra)zSPb(wh9~$ofsOi@Q?1zAq*8ERSDsz;;vj1XYKudHtb(AlHbHy9xx5f zG@Q$)_en40#~nBp!t$09p3aoRo6t}3>o1JHSw)S z`bF&_;e(MzZ#_4udnWYvIB>&!wFopMCTAT4Db5%4{#|^t*%Dtv|SGDpfs>4Da z(EWxgd=c;aFLAmTr5a%Lh)7AG#)~vc_B$;6-xeeMTz3B;MZyGD3c-dwhTN4X}SXO)_T;rk(>mc79t8+7OgH zU3h6C=m}>mn#yXYy08%2=Y-D4C2yFnA7z|;HPZngbAw0V}6ro5L< z=_B8?_~dJdg|_&1qGxR}lL%jNE3Q&!GGlc%T_eD<%>3U);OT{J&iTdG=uuCMyqN|W zY)S4Y-7LHf(w*4$VdSl+p(usgy=e3tr0&VcR6JjVq^raBC&R%w2s8WnhU$~MgVTHE z{@|JM*Rf=gk7S<}Z7bv{8BHm9$ zw4q_y>1ZwMs(1_N{Ok&dvS%WfhH>@-y;6wBTH{RFWh*f@it@J2RRgM&ItX^vLFdaE zQepgbqK!KX(~V1IqrGisdY9zi*7ZsQs>5<*aWq}!4Wi=xuiFAVg##gCvN8!3jlGUA ze9|`KYKJJ3g9uKjwd!7y(IQ~+M7>o zI}7>YEIsj{_E)OV%0Y(cocfC)aL)c3q0%=-Of*?Ehz{TK?k(T-h{m`Z%^`&K?~ z?ziJOnc3PvOGa(6;KEW`L8r(a#vu;H8;y+#kz8ZEKF|+i#ujBAw2oVVU~gnJXVbO^ zJ;Dfh+P$2GU}{eyCCDq{jC39bJu(G=O++puw}5bUg!L{Rw2Rr->whZz9-tH zrE1Okx1j8SHz%v|kw|4>MCI7diH^M2xtViE|C2{Xzeiicw>Qqdug9&eye&x}LA9x^ zt&h_%HOA5Je97^@O(MWi_Tivu7=|RGoqqJ6xyDQ}sphcL>34p-m4~03UQ~CsMjD|R zutWI%SM~cN;A4HgHzzA-EqQ1N8|s~PBn60<1FEF0UeD|B?vH`fdyuQ_S9n|H#TL!0 z$CW%}^C50J)p9%s!I_!b+cm{B`b^fWD;9A3zP}mr%F3Frz-dHg&0%zYF1W{QZGCgl zGSa>8K1&aj3zaoj&vBTpx4ff+*veJOE{c5(1E@{M{?;W~3sZo_BFt+qk^MB7bYe0y zpkeHJA#R;PtG=oOHiY=j{7U!Nd&^C zJkUjytTz3q%oG}bDTIoYYsAlMW-Mme+%q~wG_tRl@V#M6g-q#J_JZT^C3Dsyiurx2 z%hz?;>4Lt5O&H>98iKc;O8_NxNHK^%3`!v8n%r`pXr>1!v&>ynIisAGO5lcuTyu zdPM~y?IaP^Bx9}f&!QK4qZ0{A{C$jUh(HPb%q=F%u&+5~!&lFKZ>Vu$ofdY6IWc4> z(&gbhZAva7KE@5RB-B&)0Tfe$S#Cqc;7+Hm>Up>Dygt9$=n(kVL6=le zL^_1)(hz31V75gGl|vFDQAQ+>p{rsqbMK`{6u54;WUyUfQ9<)Vi-y9VSK{#Nu zh^kkJW!C+&XX*7^%iZ@u`<==+o7oQI#$}R^M&1k6`jdlZ1veQpg#{=-YP$~VCqo5( z#C7sM^gGGd+ccVt4<~QLit7V-$^!R8Bw1ty=qhsuEJVL<1wYNdY6ai;0ARXMcKM?C zom70MYniPW4ixITlT{h}5-I@Mq{v>M_g2(2HgH0LD=L&H<$yd$%y_8t}{zG63>8vAm4U(09#u!XPlA+4sh7;CJLkkpimwid{9q zT97s;62np(O`wR+`uE@ODz#2M#Zx)01$>=ee)+QAU&HhgP3dSCsUAfTH-}hJo91a8 z66VvMsmoOzxT9H(_Koqz9hucTeX%$!0D5jL*>*E)|F#jMkmTRe4_HxB^W-m0jqS^( zXAw?=c6Ux?#wQrtS`Tk!uNB2|>yi;x@rk6Kxo<6fiv-kX^9G9mp&GJeJ@0oUd5x;+ zcKbMWfU1CWj#ciH;=I{j2hb}WUtE48Ew8A)o@hUR70mZ=p(6ddkyJXAX$49{3@;rb z{ySJ!97n+12qr{H3{07tP?xc@D%EFQ|$C5e7^UwpPhsKZKI++ z>(*3~eB~MG;TZGgW=EP{nxIN6+xDOXDh&eEBLiaGdDF&IQSQH-gHr~!ZU3$tG^ zS16iTGRaJ~RXWN!97WuPOV>3$-=Mmy%J%haTf^msBn_quR zeMf)hO<zUgIC0g)!SDzd=myrr^k%x6g# z)0$AHEb9ARhGCV#*Bl`pVuR~F(3SBSV)!}Q_x(9=>%^56E0L!#=XLg*vY_|vC9QfL z%k^X?kN3L!b9=*0e<{U=PnW-~rMDsb5#zj!TtkVQu3X)^>Ni2p^L8z6J@C}+(f65m z?R!$&R@cXk6DRQw6#)gbK}r5Up3X8TuKtPAGq}6EySp>E1a}GU?!n#NEjWbW?h@Rc zKydfq65Mv)t^IFT%@=C8P%~Bccf0$X=K!u}1h0DB0~$IYDron}*7 zx?TmlT3Yo$##)uj^fBP6_e;28+xF|ck=M=M=ewuT8R-@meib$t>|hf&;#qWn=j%&= zxG6OjXKcxB`&;LL+T9+u$rd4;2njbD!#$8<>0&qaenC7}oNrO97{8~9kh}QTy5y)- z>(G0U3oW0GEZbiHou&Gb4b|RX&;eHrQRBXeGDPUj6m892IMuhk{-f@qhYD**BWKcI z#i;teyueA76ki8$s6)76S>iyosk{C4-%QrMuIG3Z(cqcgZj3E^ds(hY59s>A+q^$eh~Kc(bA@fq zsrjoMC|Gr3Wt|J1459ZkzHV2&zz0QBlVX;$9>Uf^)%~U2=MaMdc~QDV-2%WK_vZwg z-`&CNfh-x5^O@6d@^qI=Wp{7}*cqJ>gN+^2%6nPHST_;U7f#@Ft^6Ec#2BX^w23p% z(GnA)xVy-tcXnkycVjSv}#jb+_o7Uoxwi@XWcJr&A)yQ){;SN#7P<~I;8`R zkQKdD z1N5bQa#3!>_s%MypS(y#fD5fPyocx$tuhwNQ%1@!S6TQpVW~cSygDQTv5V>x6&rM3 zxejJ-SMwZa#5Q50nw(f>-x7-@jNxhA(Js}~h=|ACr}4YB%u#}6P&xv^-@ zfQi1+>A{s0%cNG?C2S+eY@@|Gx>1-G4}v$A?MWJUd#62+SsqZSPI9{hi4lJ5TPn-q zKzcs6bsb_JeROs+j1XFbRxj~)dpO4+t4lnJ$UG7c{rWAJouERXn7#L5KL`$lOqty) zgNxob_p$lZZ7YgOusHs>o+iF~RpP+JR3lzhATv%==(kek)uqZFfV9Fl+G*uTltpw* zaGc|~FL1W3;rgvx+8&BF9T}>)p0wx(RdtTt&8JaO7^ox#!N7gvxKDg=095jgvq5{L zzHP`XQxR{u(AdaoZX5wmzh6g;_bl|s$WWXLnM?#i?=|NqjU>{<4OErgWEK%>-%sh< zpDQbLDhWG5!W4_;4egRA1x-4eIA33b9oQhhGn5+w$5$&{`CyYnmT;yzW;2?}CO}$+ z1Kp5^2I?C7321PJrbTqI^2)(YrwWfy6%tZkOz7O?2i;j|=(`mawK{2ip{sPtZh1)X z>PhVH$-MCv1tj(X`x^#@xjAqR;YA2BJ0O^n{)3}rpKnMFjo$n=*?%(P~ ztd?Ky3_4j=#>$JB*sW@ncB1`*#QPCX%1IQ4RZ_$%h|Kg&O1i=-tHsc&>k0<#c?Oq8 z7TCVQ3c{im{&AzAN_nK4bxYSiwC4fi5vQgIk9lWA-7fZ*V}vHR170`V($!9@Q@sBl zS@;5pOvo;B zo6*Xk$xDrcFjEFi394jSxpY#8b=jXd$NnGBYM`&WMYW9DUKR<7ish@mdCC`p4#@d?it9+u}k`WSvZ(+t`$ zr-(2uPwMm1lu+ku?MZBYr4Kb=Ss{|;`|P2ln<(pkEH4+RaFs783yy|%Bqv1N6jQ~E zX_ZgAYEl&0gAHaVyB{vE%vNXlnMtH!L3GscPdE=nlp5rQ(EfAB_(_vWS7XUD3hG*+ z3I5j$$awFy$PfAR{4szKmDIBRa|bBSVjO{lnPz-|vPFFsL?wEh#0!~Muue(-6Pj-- zbXQFD;13f-A3>dw=P*2aEYoBXrc4zTLbzUUD*{r_!*t#LUq;*;?T-oVo0l^|uN(FC z`W9f_KTvA)>}q3uE4dZ`CnGKA%fgK$tv0>)&`Y#TP;AZR3mxnFLV)G(QTvx;)MwyB z*zgT0D&3DlgnUR*<$t3ckC_QU?$b`!zf`ESU3!GmRmf$9r-9>pTl5DMFs~}So=;P3 z9Qkj1KolpNzlIeteJJ#8m%8c$D+ogn>6{r_f@Cc*odV)*3!@{JxUE`Q3e0q*Chw*w zmw*lCo2Nf_I_o-N$pjt-p{u4gZs@7=SlYE;LEQ6C;ep4;*UEwWb~>U3C1VWsc}62v zMqa?Wo(JK7jnqVE0)OBmPsAYqaBEJPyWfY zr(qttQfPmk!2A2UWIg}<(yBOhdvJ8{-S)=>PMag|6yS)6FsCaJ= zvKu8BemES2?9k?Tqr$OWxaehf zcFL~tmJ3Oa)7nLEL`%0Zp^EjK{D0==erysc;@A)NEJ;(uQk{8cU}v4e17e{KrE9Fl zlFT$~`t@S#{2tWD7=zPMT9;ev+u9-(m`y5R6-HT5wU2SUwL!w-!i2lOTade-2G^gG zNxNXy3-|`&O;s`=bAjjip{0db&1i_qSiuXu&ZE=JxuFsXPAd}d1-a^_tDH3VE}6Jd zH1ff7GfF(cQBpi9>TCS1t>d$;;{m$4om=$yzv9Vawbgua0qAs@H#=kD2Yuo?S6mV} z^6X59m$idLc0C zI&K8EewEpLB6vT$;pumxP%M)ugrqNZrI;35;oT7#{oXzwp1II&*lOM2Ic>=Gmp8Y| zHr@paW0#BsG_j@WpqP1P4klIxjm}uc^{V#A9lR#B{i9b{ymMuhbc95s559zlD-$O_ zz)u$2nm$|n)a-C~x7PtH5!J0V->Z*cp{I`;u+aS1^AXr^``;Az0&HnfEL)&QpSK3z z)WIE|zLP;9BALR-{tXyUXkBx^b-8t!x9;f}Xt%#1-Mf9o$?5y5FL-af16Dg$XPFCposG5wpRRWYH#av8%;Lryne=sZbl66+ z8gr)|gt26ykD#I7zrKG=oK93y z6oak6fy(Ynng0t2%>#y6T`1Q?M_Jc+O#E~s9B330;u8Y%4j-n$IoK=*&!Hg-3BxVt zdp8nY9>|2@QYERvFV2ETGxj5d~REsz7NP!Xf;VvQJ4hmZaNRmE^XD z#GEqff+!p?(a!zKZr<&3EhryDF|E72ZU+5j5~p0UM$fit?sAxB2{MN25_AmUhQ;D* zlSU*zL@-UmqOc%2X&R4M!k)pyVg@g>$)6!8NZKnD))~gL$YAbvrbo3GLpXORFz_+hwMmyWjE3LL$diS+%k$ee=?;C?{5J zha1a;;d!XF0%}JH42#81cP2<(ks9*xK=XS4u&_;wtKaG3Q&33y`}w={p-K<@m{+Xc z>i0$->eG)OO$z&Rx${hQs)(C}%X7qc>2O|Z)VaL=SR(de?vL=S>ICJ&qK~g*M%w?t z0@z?jr&8ooeL964D*d}lx28U0a7bYI5>p`p1G zxz7SwS7J;vL4i=CzcH#B^1a4mxSvYsU+C!-+M88z^T9 zm`ss&wpG8>rOF^3H3nvOe_j(F{jJYOm(kbzGBT*O78(XramVaDAxLx6m_oEEdzrxM z6b@&CG?uq_V5OXW!ArD_n*`1nof=z|B<|mm^RQqven4q)aa_dQcbpdfgfABwI{ghH zEi?M`@0esXv*!u&>E7s__QV+4ybSP@udNlvepw~!e_8-;3L>S%{+>RWpD?QsNzv*6 z5M}BVPoOnF0qiT%IlOcCbl)XXJYq2KaCqmCvxn{&fV7W0-hNo9jWa8ta*DK z4rPM!=4nM161rgYeMoSHIzz-zTcB$T^jJXxP8cHXZPEP%|jJV zy{8Zr5*Z(+mj-~6-Jr_P>(-K7%*!OR94q*tYJCgnvc4DJ%_IT>KTtVOSxH zX0dU+hL1GOmP=&peGk#|@6ayjV)w*2X16?K58~cBEd8Dcw=Q?|#gcRlsiB#H&WHbB zbx1zEtzCm_0P#WzurrS+_c7QOViBM*3N~utsKK#ABCt)=z*o4g@i37=0Gc-948HYM zLBcWu)`VHjfaCM5K3>jO0K_l2&Tq~k#Z6J$pSXd5R^dg=oueE7e;k0;P)FL)O<&Z8 z_B9D72Qh})N^q9<;%-lO6Q`dS7Zr!OiM^(#CfFC+vcyoTp{e<2F!B{O*dNax!sI<(I#4Bb|vuG) zXGNVMFo`!St)nKKD;PMF{Nt2e!_d?;F^SdMIkO`OYtwMv;N%`5s`+XNre+tkh~8KxXLr!WP=K+DfN*I-VUloNbfBAt*oDCAzM6;y}>D6$kgjXRD} zV;NQMCr;qkQ<%2mhK{BDbStGtUCB6&&})YpHN`!0t?eeJYkCcrZlDoo6VDeVZk_w+ z!SGeZ7L)t5vi+9~v^Tbm(UV*XO+xujxi=OiF$rS83LxfG8hCt#aG3HVPY@u16k9$l;@5*XQpWzlOeF?b%A2f}L`vIQeIKD7-KT^Gw|pv!@y}!&|$%L z^*$yIk4sv=E0+V&-`+cg5)NjgidDBY=`aR&9Xg|+rwldGj{2 z(UFS?&_e&*CGNIpZx25lse8S*c&dD-=O|_4=F|bS%qn44zK4!~)ym{Mj4IV-N`qx# z-+NNlm_naukrU6nmsd4f+<}Q=EsqTUfJjrLn}m-z1Pnniuf1!`7)z-P7Uv?(8IhfD z1QHs3+^`0fN@pDJIKr}t>_^+*e&q-Lw&xT{HDWeJ6n!zciv&i{(uDmW^(Nd=j|PzV zIj$lWgjlvVO3hb8lR{z4=+n1-Y{G7oMA;l}OGk+yRnU;PbI-QOED7C7yt2NE3x)Hq z1aq+rexbIlweCCaANU=LeI6|s4Uqt}V{lr&sJ5r4TgI!G796gsO+LnN3_#7xWy2#i z^{$Ei_&zZ4jH2Ngv4#TF6gynH$JdEk)H!`rT{fe$PCLZQQ;HZ4zkp${Ybe&c4y&HEuMe&2Ehyxui&1e=q!93u+>v0cMPN3E7rcQ=h&dsp^wL~>VI~mbnPCt!^@*Ij&VFv*MqRPK$)}weV zQ`D1$rQ-16J(|&40&IiCzEi?^Gyb_YGI@8tokd9}wO^C-zrygpmT8SZgdxRg0Pd@1Hq3 zG!AI2K8ux-kReyUH>#|_2S%!{&&vnN;Y*wqWzz5Vw*wd+7LSH@_Q3_#S`!nuh|JGF zxa{f@g?1qPE3b=#_&QNT`5-NhR&K90_B(7gHNr8OuqESv- z_U>m<>j&nu=&uC@o>WH?FEs+Im{6E8uRe7Vn9pOngh8+{^oOG@5H2vL zF}mL+&)rZs``Cu)K(4)8Ja^)Np9YR)w=}rY5g92i<0CK%rH2U z2kH0uLj1Pm6oBkx)En20 zS#uSI;n2s5=DLv`|DKC=8?Qd;`M@OtJxt7Yn5Bi?xhPi3c%ahmcZiXJ(}kulVbM30 z;PTu-^0936+D0y%d~@LJdN%?_N%TB#o&5)d@aEzZn79?%-rCwS)HN{lZ*S{;T+-hT zJnIjIMV$eI0M>K`|8K&~e?8%60m_dwJwrpo9`Fiy_zpaDh3o^j(ZobVBO%i5>A;R_)+Oy!Z!{P;s@8bnQ&Z)4pJdOSmH>_LgfOa(dc)wfC zDfTb+iGK6^7P5p1b9t{{`E`RbyuIQ>TFA_#w`%3TGnT+{$RmQ>R?}r)OzFOr0*Y8C zq3kdnZ__D|vP0~aEG~6`Oz?5AUNvp@G0U8&Xg-HI_d#)xzlDsGNUAW5D>ad@pG#_@-Ch*rM1hJH3@gwG@&TB2xBC;C2{x_~ z!Oi95VFT;P@2BC5(lJnc$Ng*s5cVU`D#SGjLnUJ@6eHf%+0cKub6oJp!Zm(z>%B!t zTS_n_+@OEzEERlT0N{%$i3y!6VN(0H;!@}ybR10ISzS-)R}Z%8MAdQ@7>-+K!$Xb8 zph@SHsZ2aTY_=zHOEd=$K!X8z40(daf$ZTI!BW+d5JQI;#3Z2#qZ2#-1gFk<`%7L1 zFpe-cjpJi8w!PbPKHr*GKgFAWm+dLuLv7xt=#e6Zyojyz2okKb1 z1COl884@qjTSdrvQ;*OaMMVUeObELAgDhyShJ0dnv9`V7Lr_UG-jE)vFF+ovBzH>X z?q_wf1ll9D1C39vi9}B=Y}FhEW7uN}hA|Z}fFz7;zlWE;6WSGdEF>N9gS<85zSU(2 z$z7nf&tQoxJ@l4EMIXc-#hkH(qjC!LA&e!9D-zgq#gppGC}NB?oFD#Y3{nkV8J*cOcsnvI z7_+M0U>D&bibrC83lsE$_a{`-uL<>@&bWk`IQ6Zo;iq;}=jZ`@WxY|1%FO#~vB%d_ z;Md!v_RW)rx0P>K#$0Z;o<+;Qg?sF>nD7`3p=TVuEPG%F=9AxKDPd9 zrJ@GXhA8bEd!0<0=v%^JP&bwu;|OVyQK>Gv$4i^8uWvxAZ_=wCRcEtMks|%0P;$cB zG39Y~Wb+NG^=AF1SZEZuS*Bg9`k7WcG1;v65KQb8{bxk(w+D??3yoGKC zed%KM`yMQ078b%GDhDHl|{q8po3!XaaSl%8)U;I7x-+>kQ^^e!UpMUVOO%E7CDa57mGkjuC za16}l$tO93pw<@IS`!utLw_efr0@%T=XxF_B46R_!XJ<7iz?X)~{nnbqnB& z|A=77l>ljO45NM?+&vv+vh3(6|CR7Y*EZUcaY?eq)}Ee#05>x?AtK~$ zzq=Y4M5_Wz10euew-^Zw960Y*k8w<}JpewO;?LE)p& zemF#zT%F&t1;!0{1TiQV{dwf{@%W@1@E14vm|xPh`*z~d`Tp;hm7c}~M_9ZBD1Jt~ zz!A3{TncNfYNPLi25vz}6cmkElbk6yV)Iy_8bGB>DzJJ8nVPy)fF)llJo2Q z(%PlT4?AQ?5jyzL#?jS?=aBp;?TG%-lNJX_!u3^Dl=0#pPn+hPu4ZCK*icZg#t2`W zxokz(C8g+yuIXcNEbdMP!jP!ZlZ2tWkpZ~6a2!$XBIaW8{poF3dnZ#=%t35e-`0i$ zqaEWg1k#*~3*`W{QQiVS15fU-V&2QRau^W8NTaE9VWfxsWJDba!yQXlnki`QJ ? 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

    fqpp+O)CUqm)hw%Du2z3~seqIE4 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 H+dTOnwDO4I diff --git a/jOOQ-website/img/joox-small.png b/jOOQ-website/img/joox-small.png deleted file mode 100644 index aa255723e4249fa2e0b72fef5cf92ccf7084a198..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13366 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 M07*qoM6N<$g5vWH@&Et; diff --git a/jOOQ-website/img/joox.png b/jOOQ-website/img/joox.png deleted file mode 100644 index bc78caeba85ed398a3ac935bc9028127ccbb4a0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36844 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 diff --git a/jOOQ-website/img/logo-223x170.png b/jOOQ-website/img/logo-223x170.png deleted file mode 100644 index e66bffe3f46a3b3fb51fc5dfa28a04c84183e4df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33338 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 CMvrj- diff --git a/jOOQ-website/img/logo-big-bw.png b/jOOQ-website/img/logo-big-bw.png deleted file mode 100644 index 8bf09d77729ddc45ae4861eceb708c1908f0bb20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 312350 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%0D=-oej*APLYzarTk~> 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 HF<^SnF5AlydLW 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®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

    YKmZa=if~ZlnSFM<={%~seQ#0XlXkX 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

  • 511^;0h2!(foO-E_) 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 iMCz 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í!ru( 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�UZ96Vp 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 SaKu9d{G%+dE>|sM7W#i_9eaZS diff --git a/jOOQ-website/img/logo.png b/jOOQ-website/img/logo.png deleted file mode 100644 index 3c4dfe1eb8835fbcee48a443cfa53ab7d155f790..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43258 zcmXt9Wl&pP*9{)5Sh1qP-Q7tkP~6=q4#kVRI}|AHUfkWixVyW%+n48^`6hF7CpSON zJu-W(z1H4g3UU&tNMDcu008QDNiikJ{TXuA0pTIv?H#Nj$PLO-NdgS07$-b}{D3!- zmJkDc{P)RjFN%jeL9~<9bOZp9vHrWD0IBJCkcS9P-(|lctRP~1qGvQONuB}#NCDr) zL{(guPupGUC?%Yk-c?nL;wPF9_6ez|$0Eh2Nk5|l(ZBbZ8CN|)k>TN>dEhU}pIohz ze@O}H)>sTR3&8LutwN8XKt>1pVP^BB;*UwjAB?XO$_o{>mL5MysNbD=a6<2~@YSnT z6388&E9;-NcfOtJib;j-n@8{Sw1-T!!Hr$v!E0W<CLVZ`^4WP5V^F&cr zqTe^vCMuzeX{wOnT=j`^5g*N-Mr?lDGn*^KD-$Y~jsY|Pr%zX`r3I}Lo#PsW!bd+^ zJ+P3e#g+RwG#hG5kqi`}i2n7cL(Kv>$b4~SySV+<2`5mhEc&p`j#hb z1_3;P-vGA$x0mwiuqpQmdOb~OQo34p@!a|-7#heR3M%s*#P%0yzPA5OipszWT^p&m zp<(gZmioH29r~5y`dvkEA0S!$aG7vt>QT`|20ufQCVW={?Tha`3Z1OJS;+!BX2U5SDopFWzB0vjqs@eF zeNFI_0ZLaBv=`Q;Y&Q2GR^2KC^zkB+ff?E6`24`&4Vu@{U+a;UyQ`fAJ%Uo~2v+Kh zU!(=?3MGqF#-9#WLp5$Z4E_9i97{1@RF|IsD0cGWRhB262Y9Q z@j~sxmU?>T#nI&f3~e>FtU$cQ<^1`k!2oaf>5o*m3>DP4 zC>~5bgRc^BBA|G|-sr=dmNt>d#wIo$3rw5y2hK?Ix-Sf?O{cOIvsg{HadKvvkKJzF z4a=+2>&*OR$xH&OQukR4_ENU61M+%0t2SbiRX_T$7xJ~vcV)Rz$6j{_=4_Z-n{1B< z2(;URf?S{Xm|eKqUe?CDnSGX0JMPrJ&RdTD`;n~9q&#IFyEuvdn_xcvI^act&jI!q z9h_xqpCpBWY3)#^7Z?2cHO}eNp~MtqW&E%Ec=9a_-_3;KnAOoQP6Owr{GI|3w)%`} z>O8ow=&%)L0#oDy*r*8lb9p$p22cldpjBpq6?rW4v4NKTH$VrTEk zO)!(0!4`4uzCjWT#c!NS)_4f!PG5ZrlaHjYn%I6|zccrTEdC7Tdjp^k>WAv++TZB= zf43@TS3_~Xv=|ELBw~yn-!2{ii;2A<{J(tOZ`N)GV-9eNiWn9C)f9e5nShBH{Qm0% zKbv6Qc*W!bE=L-lJQzT(>fzP4fVJlkfbiPpDw!KEZLQ68Y&1gXuB2r5`7X6&!QRvU8{vk^DyQFjo6D5V z-k(O8L%2!()y7J*ef7@c632sqfn(~6j@Iig=Y>Ry17xo>E?FD5J$m^v zkByf)ZQ&dSPZi%CPTgm!$t+u@mM~JHKMGea2)^CdTfL<{VnyL;ALM*iH4V=Zx7iEU_a9Fx5Id`z@%?T}PrfRQ4r zmsH>0u$bRBK3;yfpDo7&uP@^Ph1iGE8ow90$~~|SCp2SgLnAW7nhwtZ?hpEIdkT9) zaiFai-Gu70%eTkHoUf*HH<5TE3+)GNPS(6%_a}HI96(hkSXtRdhJMx`+rkP`hvWc4 zxI1>#O9_IIj#rb>4G-oo@$u9DO!w|9J-?-veD=9qwr%cwT-{KoRglCVSWWfwD|v5h zx5>TvEiL!u>d_vMhjfdqL07ybTgC17u2Z)y*XRBKedu^_;PFYvS+z)?#_3Y4T-jYO zZC5~-9_MU(G*Zz)cY1E>dreYXx>Lt?;-OBxmgVHNILvHA7R;rW=X}P(iRup$*LP;GrE=BM`j(5Nkea0+Yd*oHyXOTGlIGKzUO+TWmpuJ+ z#d_VjY_@Qck-c>DAtS&YfWj#C_-T-k3Ey;w#!8z^4d3GJM?aMVE>l7k!_0 zeYzwouM(B&{u)zagU?GU2+n&MA)1YamXDN?ITrQ2a` z7Ln`o8qbfr`N{|BQ9o+y3d*AZq-|4OOB;{y zWjg0|a1Z|!i3oaiFTA;**I!LZrp(5dyRV6n2P0Uyh$}e3B#Xjo?btHrx0Jz z_kPM5-5*21-mG_KHZH*rw*HTGoV%{7RJaq1koeXcbFWq%^>KGL|KXFXylnfk6M{w! zG|&vJ%53b+n0z@8m|BZMRoB57lGo4PIe%zF(5nv3d1yyVanuhS7-p4Ob%y9K@Fc?_F#F@|deGSE1?U1X#5qR*lb>+Q=r>@W*|B2MfS+xM0Ps*{tuHkr zT#p6QUs&eV89&!J-rTU#6~qw{QmhEwv$6?u`nlFeHy|_lCQ7w$+U~wjc*5^}4FS-` zwQYLxvR}^m<}K)Y%H$pN%k8li?i|ay>_D!TMK`@h5!gfvJ3PTDqfK> zPfvG9K3uV)<(Y?UV9VTbeL3f*rr5n7#$7VIPwt%C^e!H7a2@s9iMeHG@S1Ox+~;vS zC0~sYo8vI*tkU#*EIR`D5{j;fH@Htk)wSnp0;myCHs$kykix8IWnV zCJ5}a8BnTiTu-%@k=K60Z3hCyIEnvoS9pp>nK}*?q3tS8mm_xpeWSQL@5%|h3<9Au z7*k~a$xzwsw>a$xd;0Az*!m`5ro4C=xgXzn_Isw4m#CuATm^6Gt+z{vN5{0 zXfC3HhLX{1K2Ce^d1&RYSZ}gli99Gb`7^i1%l4bqk$2_jIG4ZkWet7z%VJfEo=(_|+@UB6viX?Y=Q z;()C>nLLQaef?3K?K<-zw$S7KamRVxyvr_KLO_j#WU%++5{>7zbps?(LXm)^9}1sW zN8#nua@ThA$@cxW=mA~oft2)!3f+89{^eF1>rh@+K#uI(o!@uvd~|d_%kwrb?P1M+ zknW$x!+3XhWV{^zRk!H;%RYDfYJ<%f-Ya5s%FFpThP1B^uC7ba*%y0WkTw20811J( z*Dm!j!U^v`Vy*QYgIH}>3H~Yjc|t!IxyIiceZHRe zARFY*P|PiTPq9f;9gkO?IFY=&E$cXXy=i>k?Y}RWX)M0@y~ROsmeK&P^DeC5}}ylN?%nAFG@!u%9iK@0O z=klw%`taAyUT8m`-d8@H&dM$x>X&|b%W7-)NER>v>OR^pK*O?Wu}8;0*V~Ki5~!(S zUj-9ArY_AliiF`Dci=}~FD0N0kf<9}$(5Kmkb)G8N>92SJMQas0mQI&grXJg-h5CH z7D&AbSCXs~;5qZo{BhHOQ1NyjY*aqKvB%RKXfeQZApW7f4u)U9W7^K2F(25Ie?#{V zNY8B^C=t(78aT9R%yr$7-;$G)0@ETCII}0FG86K$E#Lf8KiBnm+IxUmEbZ#ZW_Y!L zx-TSodSq-46S13uGq5q7$YgwYU0L9sC5YespR0_V-nL|1b2h2A5er6KF7 zNzY}$V*^=_4k}Pmav0Ir*>c6v?zGp2f4s%#aP6W4x67MBzFn}A5ki_`P-gl)Umf2@(DQN|Qb&Ogl^|Iyxf zo{t)Ka;J!wYgF!)?BnN;s;z7Z-{hDpmS`Ok(sCR&n~s>O2P9Mve(((#6wUxZL*=>> zZQ=n5_vZz(EGXhBoDXRm8dvY$rUy6BP_zqOH*LT|&G!2c(VygtA~_^o!Ox?kh5R3f zG4s4np287>D?#Xpc0bEL4kZwIqm;}PC*?MLgd@eEcRF7wPtSjjo^8Y=8=70?;2+JaC43_4*{(JoD$|b{Ua^&U=*JC6964OJr^18@s9IUhWY5nR3dw=sHD0uF zdei%JpoYfbX8jkz`@2d4E9Oo@HEC%W=@qb`EqA1O%XtyJs}p%Ihkt{78XXqaitS6D z@UqHv+q*T}k`WN2QCn+t&gX_Z|LnAO_z2ccuXL;Hp)+RVZEeF)4wxKBN)lr{c$@Ge%ieI2He1P zY2P90Fz2A_<0!g0NWYotgXvuzdd@P z>weVGd-u#jNx|%^(YaGabddhFLD%cf0`A&F_#P5M!*+c0o(;p0B_Q7QsD(q zQ{w32Li^Ig8bxlc&Xs~_`)6MT_Hl5b0PW3$S{@!-i6gOqQKv5%l|F*cOzpS42=`wX zJauI}AKW*_O(Xil!s7qzoHlO`5M01lA&VAiu9b*$_`SbYFE0z49Z!xCC~GXsn8d97?I_E^R(%{;qwG-W3m_pi^5|eMxL&QJy~L(G+2w;dlFXrc~i(@iJRd%tTd1< z&AgQLRmb3NhE#SEyLi5x@Yvtd&=|-5Yv)9Sf+C&OVWkNY1^(+mi&ts_cag&46llZ` zi+q7c>FxTetPB82vchZNgrb{E7sRs4CXARg9dYnA*z~4ycj7mfYx|kKtV<$(2cCDF zve{c-tPgY@&qe4JI9NZ{j1V7spIKc%R}qLtw-+1zT7rFcbP;>tu2n%fFD9?hx#I#5 zMO9b-%4=`G*;jA>d(kyI+EsVq(wtrdNX8^(9q1|uq=sb}5D5}lZV(L;8Rx(tho!=m z{B+w(_ysJjP5-=pYq~pM?jg4p+u!bCze6qL=k>6GHexSQ5D4f3`iauwfnouH=mrVU zNoWc$vJcxxhh?!ERp65}C%oq&}q#g7f@PgOJi=>m2z=|nh(A&$^8GS|9Zg;@e_}?!& zDp1^c;SvyK3GfIGv`$c&u&^WU6G(vPPDY;%1X>Qxz2;hql4?xnn#p3pguxmG`?=aO z7aJOk>AzuXNPh}D&onu>k@4V}>3mNVaJWXo%tz66w8C~?=HVq@cY1$Z)4ta_#0*`KLEp#<=S$Ighw%NDD?_~J1?DE;dg|2NOlVY+dCqt(BjW;@UoO(c1DFSPd~A+zlKl;PfMpPk3;?XFlx-q<$B zm+qh&MdgnROUA&xACyMAamSQMfTIfUVA%uXBi4rU5Fq7QBYjd zfLQRpMmg^8*vnij2RYk%l0z_lmPLWz;j{mZnMu)?JHgmYWahrvw}+YOKG>`MgW*dn zeJgbEZ3RCOa5=;T`vOZj1iSgvZ0&C+x{k|P%>g=xwSe)pnK1uLYK-R(>69C9sC*g_ zJYacJO%BSpOyhT0bZY^u>L2vD55L$hy3z$Js#IzGmNuM%Ax#|X0T$KL?nF!!k)j;~ z^RX{&=Pf6h9E*1+w(qsVy>VVI1`6T12RS_fc1l=3f~7JjWw0Foh0hEfq=wsb&vK$r z#!K$sm=FKhoI5d>k?&=ZC8SSOxD-GKD?GdvIL6pvKd)PCD~Stzy@7!hS#OBrM0vfk zX@n|#0xq4^ijHD{cjecw%-*Nk(bO=5S#e_qsYfEmr~->;5$y{S?%thGkZ>WOF5oZV z0VOK?@)> zuUd)2JK|4GN!Ni^vZe_~n7gWydp*3&Sb!wc;hsV4Hqvw7z;&9M_BF$i0u{y{WY@iy zWW1L3euNdi#7R2vvkhag<5^Xqx9jzm|R0-LICm-#{oP z{^sWJr$x7<3wQByJ11=B^IGKsh$p02ZOh5Yph9P03nF;`eL0|omdEsO*@i2wxflD_ zWvs9e%Yg!l3;!v<{rj&wtgh6wwU#eZyCu&lne3VDQlC-y>Lida4zE_^Wnn2>%nL&*%o9-<^ieeMfKi?*= zswuSQqSsM(b}sN2-q)oEm|vOb8c2@^_YdSrlADboXfOb!!Z0y`XqVMrD_9LiE^mAK zMz7=iQ`1vW{8@wVZ!h*uD*h^w?#mooNEmw53H=FlAF{yi)OodAig=c7d%QwK3%pox zmt=weU)J$}4x1~UNEIY;HpDHrVq$*yqC6OJGQXgmL3^i#3Ohdwpda5sjv2XXh2CH0 zF!N1%=Fsn9No}`e>0Wb5nO9-t0%*txpA6m?Sy!(Xe4_kKaxh$t{Q>?k=~A@Y!61h} zl)50-;RoHcX?J}#&06DXrC%@i)p2OvmpQI355%zHEt)1v^cw3m$N2aI7M~n+o#zn@ z=92VoQs>0W=T}H6Bm%1t3uOL2YSTPS0U&_S?#P?qNs^A9Ovk+rk-=X7Flt~$Y)vwI z`-LrOx`GWLc{ON$4*Re%2vDgum7Lc58b{8a>o&m$(M!uHUr6UYoazR4AQ+DKqfL7)kq zq&Cj8yN9SJiJ+ihb|E6fmXfCGHe!|BKrlo}U`6i*&;+RvBY|Lh>|?dszv$H?8Kn;0 z-Wh%+^XutF%WG=Fga3<-4VIZdF*x?&yEP2-g}LMj5v9F9TMDQR>|$4C*iDq8Ib8`! zgJcO2du*QISSczDEV3qVu(?0$He$C9Z2^E~!Q5Ao4iy|o4@*+I@Ww@Z5~csaw>5V% zaNqgi@wNW~i;j{T(LfIB9Y112ULv9cb2k9MrT@0PaGosa?j$|U@gfMCrrhAJA0c+0 zla-n};~64=*Lr@AU8{i;XMoo$&vk$0*?xO72!qYPFg^_?P{4%d1f=ObNhMcnn1>+( zhIwDLP~$tFP@~7jwj`TT0;&}Vm9_Q@O!())jPkKlI0jBP;N&lAX(x`uLp$} zL5a`>5rzqn0FITFtFE6&^|Df-E9Y2hU6}tSBB2!2Ia(8-jgIFQj!)>vW$ymVH~?>s zZW*?{@^3&z3}(&qc%I*{*uPKVY%5g{`HPP+z!HCA%MXS8k5^x z!%H;D$`678QaA^&)C#sg=VvTAK-~&gO(CKN4&RNNlg$b|c_Ospd^$R`i#aA8n+?k`Z zHd*5?oC#gwT6Q@PjF$_EAo3-}tq@^U9pl#2d?**d%Jp6lalyqEmBAWqfGBt9nFubw za3HqYZ3Z_}8Ybrk<~$00a-OC!IfE`X{_w!Z6rKp^-0Gz%&SecWTCI4I`)Vs2v}!O2qud z7d5xi0P5zAj){UJRrkj#DNBZz%h8jt^$}hs4q)gYIlxIHS7+2-@O_u7v-S+L=@p-!~nN$HZ z5^@*Kv-5}41f?LX_@Y;NL-{Lk7TZEPF=={|R+`q3RU8i_23?4@7$Fqnp){abU=*hG zy&=<4?ky#HPM$j3Dp(Mb{k3$bWvu-gDPe>6?x->MPA7hAijtpe)ubM>i&7 zor}}v;?<7fr;Y5-Dq*o4J~_@nOp&<<(HN4!fyQ>!)6XyEf+@G;fKx~WQ`o3QII3VG zOi4wuJV_k-PNVQux3m`zMQSQ>#E%_*!#Tj(|JoA|B#9TS*M{ru2e2X z#hN~WphPv&bGc*&li;6fYF>~Z{RQg6yOa}%gSp^8S zzWvohhSL*#;tvUqrAcIIZUXAV=(<67IGBypfBE;Y8gOUpxl^Lf1!nPDxUic+5c0K{ z2q4+QrvY6Cb~&|wIz(azvrNth&q2)Gi$K^iDrTbpIEKaXS2Wc^)Pt!d0MBaWV2GVx zM3E&2>>e#|H2RoR-+90A#vPV{Pn3dV?la7yY@1YHq7hu4uuc(ICI`IGc%NWqM}9M z+Z}dNK|q|Aab}XR58#0|_>I0zYsH=*NouSaYQi@3qt^W51g5%-6i4+Zx8l6`VD8ka zV_7LODXd<7`12^r=pP&kCE80%Z10lKa_;R4k^q&?EV5(qaUp_sI&M_(Cb>eM#R(l^ z_g6F_U^lN^f5Br!MAM$_JHfzT)ma{dgnJztKe-@BVB$hZ!r|ya^%iy|P{Z+zmjy>J zPbGUUJBe>T##adGkGTdWlPO;XHEbV?L4BPF5)^y9UuzY>Qd6VR7$F%Qvdwi+xNeqk7xZJuK8fk>duVuLWyr&M*`DE%gJtC?owDw^#%oF_~#pD z&#}aY_fPT)ME+36#eDLtI%E&_i(u-JW@-WUmX{xf^-q3@=w=-=*+~3OtI-uyJuKc! z+w^lC0snoTGAW(a>&1p2VEt{YciP2Z*&dV0`m~(i;iQos!&BK>46sC-kB}#Rd zs3-`#VP5(9O)>_{VSGbm0L`l z{!+_P-0-_lRploY(fxeLk`m9%G@Wn57TMV9{CIiS{&i-#BccNx3=527t3tQDR+fr8 zI)*S1g98T$nHK5Km03tYhAMv4k=MbjzmEj5viWcKiCt<*!6YrRkm_erhr%*%_z zk~KS@Om587ex@oOWc!1y!7g>>v+?0Asj348iXKgZ2p?Z@4HW#Z+y!Av=4X{T?THd| zm#f@4xzc^Si#KQfX#I87(Qnin>S3xp=KDHQ;YU(kCN}s0hCSxl2)Xn^C&DyG9>aq~ zfToCu*!13irmP1oq0Y`*k*EZuylAU>-(tnBo}FDUHxCcl*1C40MuJYZGaou|3qnW+ zbjpK=-HA9iLdK~h)k>59E`ajIE{1@7%uRqJ)lvf*dHEX#zQCD>iP61S%}ybJ4^=>u z4Fa-Z9|Qdrw(hL}mWV@xmQ7Ylx(=t~Ad&XLMaRqPzuViVR-x-SM|A7ir2=1D0adj( zCqT=(1_&m*l#g%OXK=!2eQr~LJg}-6T?M{RGP&a_U(AXRwNppDL_uUFng~6d(<{)U zg{|PTy{#y1u}RKD0dvr0n*nrVoi7V~rG}0v1|kT(g9K9>3`7T!26c@`FpF~$qwTo2 zvuONPQAwuS|3rjD{g@f!{TWg&GfIDCsUeU%B!pRA!Fa{<-1rj?PkTL8bFbn9z}IsV zhH1S#;#ad9+QuB#^j6g3bH1t*ixE1gSUG3s^zf5{5!rqO>1Fymtsxt{GUI5lrByu( zZ&*lW%Q0gAQ6T#0h8MS3d$g{{eRl5dxK6=<<=^N`O#d6EHuQ{@hVD_*q;{ben&9@K zgiuLL|J}c;l9k#acg$Y2tK#I7^oK0s)z7LMMI8xLzK>to*`GW<5#lZ01u+e-IaS`Z`hh73;;oqibw&~q_TNBvzapRCF63B zQSe$JA)<*v3qScE+6o@E`scr-|8^V-{gxN$x6E~nh2`fSu7pRY76UD!?N4J-z}RZ2 zx!B?LqSS&UTHboT4+eGU93qjAfTRaGG!#Rzkb=oH;mLD}N1Y%sXGH%Kb#6p#oZXKp=P+u@TAF(4j;!T&TYdh$HrzlI zlGoA1QWeW4&h3Bk2UwGNZ@~9SQR1EcBfcA0-}&m5pC_5jiF}^4>|iNrsqaB3g|%ut zlnltaZ*Q03-#(j~#^Mp8P_^($a!3%S^yLJFdp0jav#*FdTOvWu(__8X<~cG{1)gTR zxj9&lW?M$v69gN~Z7tGj)2l>F2%B#(xH6Hi(D4S;N(+j3x@IO17U-M=Ato=a0Wl5 zoPhr+KFevAc1+cCBhD8@uBya2Ziwkm)Z2^R5d+D-Fl}sDFvD2(KT%uvIShw-&?R~_ zPNzbNl+|PBPWkH7!P!K4k>pMR<&{1n3r{#mX+WESo39bf@KH>p;pGp3U040zW@iuV z8R|{6#1m-k>L9kZ>r}*MT|MIs8CXGr+M=(wtE8(IbJ6_@3tGwN*N?bRtzV$N-$}W? z+t?8XS3EUV3%N557{(~^6471ENmGz4BBVOImf>L1q?e;-Kv}B#Vr9d7HQxRiVkmzv zQoQzh{O5nd#M^>sDnKle+sJ+ES&ZZoDy9ApSXE7?0u9P>l`_*zw#hRY!Lb%TDXWr_ zXJ*j|-$E=%7*8BAZC40g@cVP5ZF{EC-4#!b{Og&cWyZaeO#+IwRIWoBQOjN4-if@J z!%A^C^~z&hG2V_9HoWovI*K8d>liEPu zUo9(q!-CMihp^n3h;|bJ+9eR$(y0Pne^wBdv$KZXr>4Ox4#Ye=3$=2Q*E}fpP`(v# z1#dz$AGifnhl#iW9DnpO*&_QZD?OMRB^^x4HL?Xsr#5dS5s5Y9+%CF=#@twx$M>3k z^1p)FQw|z;O*8ACjPN$^__SJDsw`dcBGDf!koj?X3o|pT4$>#3ctMj!npFw#?e>o> zrna4L_RSalAtb>UZqj#Gd>*;SXE%jmIzAstUlgT64G!jFV?fI{5q21Sr6NEmM?%+r zqah!SX2N1a(zR)5=|m2zH$Rmi6(IlV&C%OVD8Fh1a|4SRP^Dp5NbdlE~?a!O?$L{|)=mlOoBDA95h7H%d<#ij?e zGRc5Rc|$N_$m3=FGXxMJWza~5b+LtW_7JrP5VI+L(@+=$s<5^aB9i&vo#T(?*wo1PFF^<$gi~)lU6&+hz{!>iJPOT+i9fh zFgEyo9#P9ErN_(=SM`OOSBGL!?Hm#EKv;h~lOulapJFfT?a69b14{L)d^lMa9Dnvo zozItYKI3*=CssMZWuyiw5CXyq?`cq71F^GFaD9s-h?}`piipTTB12WB53`j?aqz@B zjUtj&@kgU5#Wn$W@HnPsFfsXBLD~#GqdzujoJphVc5>qq*KwgC)xh?rsa7nH<1X*r zVZ$RPglQ?FvO$=ImO+%hRr9_LjR>oV1vwA7x-R(5J|kfK`bmq4AYM6zA#&Ja!>*%K zvAsjZu7@~I+0jxQ-Dg4>u)isV=%dJhC8wp*v1>wuz++?9IqyrU{t1*FwCF-Awd$*p zKtHKVLc}_>wgY?d&~6}zuOjbQT2>K>J_~_U)^#u% zB+OFv<8D?yN7ceT_jrx(jzU#`njA>876?ia^H=&DO@a{B523Jj8})a%WV4eJE>KYe zmn8&2ZeuyBvd4q}i_oeO#xHFG zcy@f5gpp($j-CefZ;2OFfM_+k!>InQ^Y#Z;sJBa0Zi5CrwDWe%t-yAu+3k#BqHpq@6Q8D*yMj>5~<81voM#8`Hx1 z{q|O+t;OPUOJgcsKw4QQf-AS0h^<5CEs=jHc8sTrrD+M)KH@00==o>bjRLcSfR@|R z)WmVc*;`T8_^19jmXwc6*9n7zL{kk665>p0jE@7(>g@%NsOO zQ97x@PmMvljOZ4ch{X#o#>nW2*j*r*nmJR+*PE41#MCRmoJYYMrhqLlsK!g5S3@6& zJv$!|5$a?p*rV_NqFBFGTM=Pd{g@oc<^geC3y*R7X45BS8Sz1((qZE{Ih*_ipCegW zY{tkJ#Byl|uzQMVo*~-or4^^-_}2J%E{Z|R6tG~ph1zNEp_@FDf-(?YYRR=6hhK}S z@$_XI*Li1n&_ARI^>E5n08-%~3P_87J(O6fe3=%u5p;XJbpJktPMIH~wET&bJ|LM- zXu-UXm@d&s`ObZGZ`H!?r*s$1Q%6Fe-Rt|c;9D~ypt-r-!!gQ%cNkdRl%V3mbmg?u zuYx3JW~N}OMVC`wixq4WqH2)?7t{1ZF`~TlbP_HaQ)&6Sghk|8XuFwEXG6lx$ml!S zU&pENE={#N>^FwHC9CIW=m%BZs(!rm(8Hh-Q|tgpuD;QXrBd3+p-i}BPdQ3sejzfr z9A^hhuM{#;rpXaiXqM_8eUAs8*V{Y#ileuY7y2@C;*2-^BNjXR^V!$0v3Gp04*0Vi z5TPc_lX%HhpzLrb4o*z_X?eSc1eO;Bdn87tu{i5uQYN`#({kCf*~V#`yQ1^$?{m*L zSvR*F7hF|oOlX{loF-e6)gU;A^W`8Ih>nC+TU%U7eP!B)p67q zN3|<2t%LOOW~Op`xwq_pA>4t*cnM5S)@y%XtTO1B!p^lbp(ed=^xss|2Hlo%dunJX zd&9&w;piXQi^@@dJGurzLy&Wg-zE6eo+pm{&j|)?L8vQL`t4Mz&042mMzDUlKi{Wd zNXLW>dyQ6pE>47VWc9RCwV;(=VJXl(12p3`iKMFydT~jth ziTbJeJ>3=pM%6@{sQw-jmEN_N95lmUzi=uNL-c1#wcv6B>p(Bl4W__PPHz1KHDlros_d)|zc$hV&XS3w5Qp>w>pX;eRUyR9lT(F`=g%#Gyx zf{NtPceSGC5e;QcT8WGB=VoW95fI8s6NB;4W4P*m}yh=K1w z#(|QEzyPHM)3RiTwW~38J-5%@^L4d6cZD~K5t+Y5n8Ynol`OG*9RM?T?yiQ2y}(pz zSK@yVjGWr&)VZs}+ysU9UklWPn{YOTX{|LM1W^!!V8i^NBsW4JQlVZc+)wwwNpg(t z?;J_d%0tG=g<<)Y#$u{8Mi~BgC70hawxMxY*Il7TXUA?oMTl3 z+86o<#}g`j>m8LJD|vr+_a9EbeRBjIXCD7iRmu36T&_2~QfdN-Z`+++iM{LxZ74b! z&OG!#fONPwNsU;4EU!$pxN|;VKlz#|dfg)I*!SUmU1ot+)nf>5N~O+3@5Ak}1ja$S z_a4gC^#yyR`wfE{``Dpw&5_FCx_s3ce!gCv==%&*2L+)z)4o6|w!opi1wRx>FQWTn zS;rJ$6@hgFn7#&q95kSBY11XYdU>D>K8x;ntRZN>cih+^!wtqyM=M(nWp`z9I3;1z zR%`D41HsZoMEL%L^ewn0d?N1KhC$1Q1UuLImaVRc!mfeh}S29!8;uiA|$QJWtXH2xqB?5cr%~G;OiCbV_d3m&f;OoMek@7Bybw>CO zw1`dh_m9W&wAHf71P%7ev4`+=Ts;F0!G59?weOFwz^_vHnDA5}NP?bBm&RbnWHCvX zqzwK74+^3H86Vg#JDDFOsuM%oIec5UGr^%la@xVodMn#<821GKSu#-v-VW?s;^2rp zKP&Kf6Czh2+h39rdmn;E85z3RP#}LwE^#055S+M5gI8y3ntU-c2?Sz3Cm&w7> zDsE_O^vIAjT%8G1wKox#h% zkQM_k2h6bUZj(Q2x*8%j51Do_GQu?h(eHv7F?j`@K5o?65*5dWsDV1&d6Mb5!TLo% z=B!RViDw(8rWZm=p4`x-FqGF^=>Hb!uRT;Rng>QOhK<@wg~EVq_If3ju_qldY#&$; z=Ax(##*FFI@Z2wFvh5&_nnNa8Wa?Q zDVW#TIADzznCj~47-9z1wZ0Kuh-~J^xOFo=7W`FOu7jY zk=}2ph5d@kvP5aU+g+F&CMJw8(;cCa2{koBF+&0kbQMFvDlK7Rnvas9IVZJWZABYn z!#O5na^*Z8ADX@kpS3fW{CyrY6Kai#gGE4=r>`9fsBe8L*bbo^ri8~m<{y{^g>sM@I=sNgG za$~Rqfkf;#t82RP3q+>aYDs=SvyHRlV7X{9%)vxfkfAUD(qi2_Y;5p7-DJ5qb-eCr z5$ma?&^|deoxA&7MfYS1ew}$(TFHX8UTPNQZCSgVj^%aL&b3 ziIHspn8^sX-}dkBhT+$LXwhx9SviNRLhb_9Yq??c$X=-7tNWzUIY~lGB5%kyK^lgo z=v3d+p&`aF1K5BHvpX2c(qo5r;oH*9W=ZBTSn8DV^QA&_WFDF@;pbd2x_J(sT%<}9 zT_tr)j(;`2U~XQV(wE{C_QgC`%koHYbo5t?pD2+V)$L zhRt1lRcIM0(=ZaLSS>oAnq0Xi3_UU0E%e`0^+%!5oi0@z9c`m>jG|++s2d6E6^equ z_^}?TqJZu-C7qSm>`k`ezxx>it-`AFvF_iH+4LR+d zByKY(;E?|VJVC?0cpOG71~Z*Tva=JhXwj2W>`7%@T_K!&Jf3~%%U^C&Mm8B?-^o*L z(P^|KbnnMM-bG5KHZ&Tki311B8t23$M4F7rD(4b_EO{PhlyZ-APXM*7X_j)7&aXM^ ztl9Oie)V+w*=L_j3=AAr03TB+HLkn{M;%%h@2OR+t{%@!|Kb-d!m=`ibK4+<=`S*= z*i0z|lDQm+j>5d*c`JTfPNOu^3|; zTo(`mQL6?cw<84R=jO0{@F03NZ(i+!r#i|BEjNuLFaq2>(YSI^ z)&H++)RyA)C-ha_05q}-ZTl1{2`(W7`g(dWSF0r@5|I*2WkLzRpAgL4e;+pe_HTDB z)`e5kSWpVH$w{Rtr;1#X8yyALDYjbROaVV-mswySvat16NX=S0W+OWEDN>@SRzbHYtHks1;%<$ed}8Tqt{;BV<6>T z5-j$WG~;A-*RDuJQAhZGqqt_x%GCV4<5(6iTUNN}`w<}|9I&iTk&ybji!WZ0latGD z{>C>Jol0d!)!=g~V4I4a#<3~~wFbc2J)isB#G1=5uQZPwVF&;2?;3*_UU1^V&;NN_ z{SE_Q=2^@J*Pf@#$;%zF8`4uM{xewSges}QZDuTGnj5LS$a_vW9U;ec(bGt zii_Pva50dFNd}_RXru183WeC{q1{e?r?a$_1cGJAWtr$e0if^F*C7%d7LBv8#?%!2 z=bwkKWSjNX3Wb2HY?boG;_B-eprJ(g(vbH?N^nA^P=C~zj3nQ)?bS`)(9HvY;+i$E zOQrZ4sj`C>3ON4_Z@}_>_r*MXH5q^q#9@ps`MwLFnEmEAdq=OmwqykQPrU0cRq@}h zTzv8T*tORlJN4~v+l8%LSJoAaR=wHuN}D!ye(vh4{b+X9JL{t#ZRH0Cm#OP6sV;gI zu?5Yt8lCAGIa4EpLBv{F8^86w_idaze0bFQ+Sjs-v34Gqy5jdfsrnNT>i42n7={2M zE~Ti2p`?IxC?!%#L;&1E0rjaV%yc>lONgqS)>co4G58AmT@OR_I1U=sD%x7fRR^UB z^)%B{y+{;D##E6tJK3i>o19^6rAKx`Nm7Ba*cM7bONHmfI%b9kT61OwCu_C%!U%z~ zj;5 zrMG5g1}vL}J2C=Vt;VkxMe+1v@7`5aSfkTzD`l7rrQr2O668`!9Q~^=!OdhKn$4~r z3Q>qUj#v}|DZ&m?@Lm(Gcv{-7-;e1%r$4K0$0J9bDX7fhMoLjzTIz!IQX_lf zQi2MB(#Qz5-TbMplfHHM1=zNY-oH~WD*@WHO8#C3y5K*%UcVJ-ESw#pe`+fol8E{?X7y|*YrneWJ zW)o4Xg?1Ri<2+G|ZFwF<7y_!FkOa6!k)5G~PK-vPiS$bVCi*kz&z81mHc)_PRI@Rl z!ct1umWAUdPsYKoPH(Q{v-EGeQsNiC{N)5rn~a7s8E|!Pi6Q+|b{y1{uYDn#T@@A4 zpHm3Hw!1P17;;@C)!9#sFZ8uCXuwISV&LJ0>dq6BFJJ&{h-IO*vVx**qoo?hMau%0 z5}}kV5F&Fl49j!7clQnL+-Wk}qMvl23l+3N1@?++^TP;kvm7@6TN;3yylS?s1F-cU ze)av^c0aLei<8TZbvQ3kLc~J7-rV-Fk1Z?W{c*&KGj;WMsLB%Rfj&3Uu4@hN1Ck|gJ78`^O?-ODM3Rm-+vWin_r zn_X4~6FovjBgReH^ zq$6%@IE)aKYzJQ8Bkjm$S1PD4EycR{D%cr-;r@QibUN^bK&DviCN-I#%{;Nq(VdyX z8_hR;-;+%~2tcG<#XIQUgu!u08k>5CudYeHuMeY{3=Xtf2_}EQbxA9Vs6(kEfx`6n zzE>LBxigP$M;G~%oTKYt4^^PoRqb6(rRbh|nt@NSst7XzU~^cnU+_m;wp{eg6T7wn zSVt-Cm+>ZGwr1g zHPFLlEa7R|{$DXc;v>4Zx|kf3Yfn>DE+O$;Obm1)&fLsgWhlQ~(;YOx1P zOR)0!)rBNPVltS#p6?^j%{Gay(p>4G}uh>5t6LVP}J4`=AIYZa_P^hx&DTL zh1MgGW&@KD&`bs+r4mYvff9mh5MVHuL)Nkg044#a-Kgua^Gn9Ozf$&^Gy*PE&&UXB z^Awja!gjmhbFX{djy56ZSd2|Lj8zDb$uMRWEQ?Xb*fU@KDl^v1nVw=9Qba;XJwDSZ zdZ;ngjK#niO|}3~bR1+DL!i_^UCY9HTjZCo^pF)H{gdupRgCk2zi9$`%Wj7mc zdNJ$G$Hd(m?=?wH(;|~;5{!upNR>Cl7z-x<&3UYet|+X8F?4)CA9jgIlP{n%If?y;4uLTibG+5h&$rw0!W9BesgwX+fNp~ZnF2+1x!M>reUj$yYf+CN zfZNyCEy!u4>%?gA5tHbISX0j#9!4gcO?=`PIvxEtNRBaDKYEnDTwePBs=`b<@O~6@ zHm9(Us|OEiX=pP=F`x9J%ilzx zyv`GQN+Gb&YQ=w;u|&W@N{M_!7A*|qgJ#sr&~jiyc~9)FpE&sc18Y&86WPA56(;zG>ob{7HASX@j3 z!&W6pBt)F47;dU01$ybKF^#lT8qFoM`G{18gH#Vg*RDbbwK;awz$7imK`B~`i*OYl zz{HljhJ#C4sn8%rDYYvVMB_P4kE%L5N= zn{PBWL&{N$(h`-@$ypXH*)|~naVe!XrLNCd0jDd+5(A}YFRd(Fln_e06&KMF0-bgn zQr&Q&cJg)AXbqn(h)LoVC+lDr}ODWuJHpx`d z*kwo0J2;zMv|!@3>ys)02Rkc;H%V_+qa_#IgL|D zFX~JNp%UnT_Fz{dIsG)VC24E~B$cU{@=?UtOuD8LDFaTH&2}{iWlBR&pX$QUDUeEp zf?5_3hL}?rf=Egf^ZBG~>2QwP^76|L!k<>4>$H97zR%n;!GSSC$N(XvAf*=*uih^FA=bX@oo5uCXey&bVGuO3 z3Jj%FWu|N97Xge*ZK$Y6p86!${R|V`XJjYIh|s)7=+@5HJO^rsc9=Z?83gEbI>`pK zZ(#w`?KXsz$S{TtFHz?Dry1yJb=V=<*Eg7DtT%62IhRtK5khQ$Xon8O#tRgHGpK;;s1Xq*1h(VADijc? zS+qVqCPqdOw%bVxCR24ONd*Q;rEw&+=!wCcLTYSf28L9$ODP1TGDirT%~h0L3Kdsz z-DKnxa*hMaI6{OW0N}vVQld|$Kik;&c(?dOx*??(c4{Nj-to!xFoW5&P&V=WsX8?Q zi5RJ>G{Gj6BJ@186tl3dwCppgfm*O_Senl;K7PhIe}+<&EGt0opnZ zI&JTpf9$aVQC;pG&t^0IuFEV+kztHDs=KPa!#vK3jMZG-sL{w8tTkecyLoQoS^Uxu ze1J2x)5Sd7KR=K8~N@J3@bfK0wO=jiS2?GiC;MG*qegA@V_ zzK@m?CDZ^6N(g!f22QIVyT)NEs7>xUN!7Sri(QLcsIPjnFg@qejVM!X$J_u#5WsJ@ zu@Z&|I7dU*^XhN6qbMFZoqG-{o41?+$3xI_;RUhIp1M}PYTyOBVJk$U=`T|Nqy!9Q zWMOH^Yn(xw-^?q5m6h%WpRq9}IsoePaLyrAZ$~I|&*G*{F&;tnBp@Z)DuW1wz}h#z z`86Bp836f%pZ#oZ>-zQ9y1qU+n#n{t#yBBF5alPvrG%^4R)G*y0(N70Icrc#6DFwr6@QK{#CgY4UT*pxEzQq& zl`YAAO?jZhNY`O#2apsi&n!jkaye=Lf^zT=Llm5RN4qb zx3;)gM69Y&GU{|~TNSo4*+>F{#QJkxW(Z5wY77dI66XyJ#PzvyDJ?h-Mz?N-RW4(? z)j~Upl9`}ODI9eQYvDj*iYk}^r>vax2}X>K#$=%-oOZKgn{oh2*j*~^)vB#t?4{EiN&<>W%P*-}b9H_mC)#ZU>UXo0VkDbgwZD=QVHjfj+u#18i*Dp?Z;P9i z*(@@u!O9IX6Cnf(3k$0dRkZ<1!)H&ZlU5oNo6~5?jK#IQF-A?pgr$+S=~G=qQF3~B zZSwlm_dGN?PXtb-QF^sGhi%)hxj@&j*=A*Ie73S~{h@_F|H7W^(9qs@{nI}k9T^^4 zbO`YxDMcuRr0ODuG2)B0InUIk?45h?fnh~@G39P005O!$OPf+@X~#>WR?jkq_T(g3 zCWEYkdunT+xpo`#Gc%Z6T*Sdf1HMw7fs`oNHe?Wh<#MatXS2hq(|RKn*SzFpRFXQy zgwcQ^X(X1>jTfGWU~w@4Qh29MtE1NF~&&ai3ui2H@nicx0Wh4nv7kZ>e>iF(?A_(m7i~5-v#IJYBii}wcx1@ zim6(BvfYNG?yry%XN`gL0SDPAAGQ?XsV5zWm5^{gp@9qlJ(d&LMbuZ=@3Q;wFt=+T(|P< zSN?v@&tLwgHR?5L3KbVq8N(0`r3lpm6lzg%ZKhYLfHa#3q6lk>MNHP~u$7eKKn17d6Zc zO)vKerOxtLwVKRYg|<&p3u?#21cuH&J265u$uz{+XsB717#qTAAd+-9{tQ23qUuhA z&>GD!y>Tu~O(i0bRMn>)eX?og6##F%>Gyy9!tU!s#j-H6v;@D^LQRdP@|G3LNHK;J z2M=QFx^>C>q-m}G^r%p46X@(NH8u@B57phfVUNEjiBooUuy~`n~BQh5k||nLgC`OKOJRss zwTi;3wEw4$}A0I(|IShmY#@t`kM4mU^SnriHcw*PPYYhhs}i2|QDOu1n544?QCz zU80PpUY$wDO!(QV#!Mul($-7q#-j-aF`IfuDIn6a(Prnm)xwee`xBNL(G5{01gTHu z{#+jG-tv~y-%ILIn3zDYxQO$%Z^sWGcp$0I^OhA0O%j5z(}D0jkbFMbn2G9noHlke z1Tnk%4Qi9(trlMR&UY}a(27DzctRiwL)es}asU130Z>xjbDinw*h1O_(x}&*@x0`k zI%>nV2$39!BF_EN+O?hm2bZsf)E!1Wt+DY-02Tl&_pDvp&NCKjP^H^#i$j!TbVf>9 zf|R`~b$3O=8W8JlElp0wqWS{^ph94KrGlJ7U}-f`O_C^D z7Oq&k7NybA1a?Zy`prZ$Y3rj@H@yo*r=*#>Ml(qUtQ=dy5IhJVJP*yIM-#s;?s*88 zmysDBJ`KU814b&lW?e$`XS1;5Nd}l2Ee-beqOyK{?3ZrHIm7s>Pbm{AhqQ|R`%jlK2~*AY@%(qci;nLnlIG1Q zLMMvg34!Gxz z9FX9pp6ox3Ku=@i11Rchxme&C#-z5!l?IJerEp|93@uLxckaOlGb+d(7~+t*fq{Hq zCgb$lHkAqrD~xecv0R4medO1!1)J%H>2W&Q(pSi~IWUmb1=6Zg}{#(Fsi3 zVdHc@t!7Q(rKP#JjT&ChkvlUpSbFqPG!Guc;_ls;dj5HMzK{IIjSxYAsNGJWs%J#s zDRxzMYz!=uL9@|7Mg?=xvaoa0ChWZY^0+&1BGt_C7p1EkSsIsaf<(@slh<{cr|Wb5 zUX6}(Vw7Ms8l@1}b>DrcHX5;zqfS!|Y`!*KSabgQ=)3gN7jGb=Uy5kPO_hYqQH8Id5J#GMH1c1qA z6T2RL6rGh7bY^C{Tx@h-fdxUlhV{&!QsGh>a4GBCUVrI)ZtdDxMI?JMC!?Qw>i%Nb zcmaTC){I62nG8SNXh;G`C}^Wji=wzgP8cCfSeB(uavNG4^3g~8sN)o|+@E|}4+A}kFzE;D6=b_+v$R0Wbr>6(m(a|nenJH*NjB+A3 zHU@WK0A9O|^*ue{VTh6K+hLbV;JUkOIFy`bHKo&4L;6|UNlQ~w=|$|L(?O3ksKgk{ zfztSzsLk%7+iyoR#qLY`EdWRq#fU}U$6J2qce)XRKWbrTv&e4PfO5Sa>j&zT7(gQo z(Gmg`HIZo@KMt17BD-eI>OD$v5NLWtsNTOfGZWi=Nr{CZ08>O1oly$Yb53QA^(exl z`}czpf~)%b;g(7jNEcK>My zx_P<>z2~0mTT%ui*(^WSYDq4o9L{FR!A2t?VYH)&lr4)b9zN`zwW`M zm~ldz^vf>d24h`wV_oy5XUHG~?UN^AWwY=)9qd_N#!3)?0`Q^;j~qXakx~g4j*YD% z^NduHoQ@I!&15kAhBtIsFiV5?u7kWQ1=lCBA%$Endf0r~L&GhyRv{h+z z*!B183kz6L(*sREWvOXFASHagV2S_$AOJ~3K~!8qkl_L&Z+zp+T4?J({9$+}Pl8md z=!qhn^1S4}9jn#Agg~iK0CAky=GfS*Oqs3pl*IgZW?%qOCIhctPXyekA){5cEcCf9 zjx-uzYE(Gg>7b@k`yYJ&`}l?Tya&Q{fiT46!Gp03nsRYzbB-W(`S5bZ;_~Pl-Y|<; z0k)wU-7iT6mc9x>uEi@_LA_pYcRHZc8O&&Yxfg%n?$W#G>G(r!m(|N0*d(ETqJN-Mf?8S%aOJ zg1Wkt#)~!deYBA;>a@G0o>!Sc6lo7V7ObxaXmD;sj(ECg7$- z$kI&Z&%jBLQG^qViwRU$my8;tpJ5E0C_>3`AORe0wa`{84e6~?pu#YHyoE5A(N{?)G$OG=_4tdSzOM2d2H zcxq}Dt(EfrHnGc8)vH~dW8IWfwQ84!w}GTeVd23Caq{7Z5i}YQQ3S5Q79t2@Acpz3&txH`F#SY*HvN?v z(#6D7M=@$rX$HHwfta{{vy*O~;;F8+DZUtWI(YC0KfqkG*%cUs5V(ZEr4$yWiO%27 zZRg_bU;mAlz0llB1=hp_n!b-v%A^UaX}hzYhsk;!k>{aZtKsnXzu#?isjjPjn!0$P z6wGmO;<3jPAWmfXy7jv*ELDm|O6bDU*^*iZ+9kHhIiB3L3o}zw@JzFb)q5iez(dZH z{uWkUTI6f}L~jD9w_kXnR?ZMb)`D*y7o0w_F!QF zezS?0PABdkC^LznOa?{E!l_ONffBf!tktm6>EPJX66%YKNstj^oFxqxR1rn1YBeT6 z!vKGD(POo}vj*50C%AcSOscL-;Qq=m8~{P@rM8Q-_YP3Ro{QU zW)#H}2SQ{%lhF#u;^hSSt97C$H97##z4A(b-uF2Hq^d`dQXOir%@%Uw{Y z_&zZ)-wG7bnV!a^LVpFudkKZWwCBaBHg)Pudmi@J>u7V1=lAXf34+zGzsY+yY>B0T zuZE#wB8(c^gs76#OxVl>h_-w-!7b+8U2hiVSWyd1rcrh3G&}Ub1K2k|ze*W3%nzxe z(gs4HY}+_1pU0L`35!3t2hZJd%ge`KtIw66n20kyA&_GXLK`ir`?wMWXhsq0o(F$+ zb``p70Hug&&80Ri2mxVq+a+R#q(unoL4dYe%Z(^Pp#EM#&GCf-bZN5&-?$FCPr+6< zN||F!4wcLD@<(ioF-Bi#q!zMf3hJ6vTO@1u zR4OI18#iL~+G}4K*@6&UbK7lTo|mZLX4L)EJa+-W;~bupIP~zth&r9PJkq@jlbB+B zUYf}uH!*>HCIhaiXxDVosU~$ECz{91Akbm?$t7 zopa%Z;mZNZyp{spAHVcc&t=SaDCHE8UKGikWuau-Nv+oA9Gr9HH*Dw0w>l&n+(_QU(WR2fGUgZw9hKqct}Kawbs;Bi%Kdh+Ub3flC)b z(47$(-gHz!b_M4UQ3S76!}Isvi%t-rp;BW?2uf1ye5s!pn8EqAd7~i-N zkP;3d2oz-3p%ev0s9_3btpPwq+XkaF5%$!i8NE>#Y#U*GJp~~oqCjV)r>B8c--PJp z2K%d(x+k4?yIigp8EXx=Za@f;fx2K)p_hPI0n}m)vv=R!HKty9@<}}NCx3$KlTU&# zEp^Q>^(h^x)A@%FKA4O@WJ+v6rkp~h0-|)Kv@Zr2NeL^MjV;qcsJXI&z0W;|b{NJ? zIrV+53zo>_s?91e2pF23))oR!?%oZle_wAdnn7oXKO{0y8pf(ehAJgDJNaf~P3nvx z#nK{%BTIrKP$!-=)Ka=oa0;@!>xVzYd=Q|fUfZD*6}5>4DqGRB>#SuV!x%2U?mE2p z>t9E%SboW~^A}xkQewxi|2hUUnOMNVXpV+PU!oaBs0IOEn3+NA$Pq;Cb{FlqtE^F* zxFiJqTepGtH@>o`~r z0x*@y6l^=5BB;eU(`;h*7K8f_HYMx5O^hY;^5DiBW7!12aAW~lg zV>9V;Q8k=b5+IK%6`pjVMAbiW1~lBm@eU1)C7$T^Fyv;f5cJ zXMZ{Adw$a<5GiqXe?Oj@n@f;t5dceVrn*NH0yuH(7&aCPa7v{_ug>JocL{OWHimLJ zEQTShD8i0QEehf+$CV~keTuGJWK z8vyOU_+lbBhf^qEB?#a!7XO~QAsj%z;~-~Qa4ic*_V35ZUAtDyAXDn5hGBw}TY`c`lXFT>5=;V#sot9Wp4tq$#%Bs(qfcrchTy8^hS_mXLqm1PG$KV^^h=Dh~2~;)6xL*7!bJDPB zy%vs4O<~{e-Q6Y|hWwK>@DsIz2QfM{go#Q8SAFn<=-Ik8cH=cRVIGEf`}^My+Zf+Q zs`034%qjzwp_Ia+G@w9pZ7#Qzv8-tTQ&NaoMGEurGTCddc8wkY@P;qHJRkrkfb2vO zT1qZR5d;WgAdI#A+;gr5%K%{O-|-HJAi&(p3Nnl#r|P1dCY&f>1OZ})7D6yPKM%iN zKYdngjH6)ir}f+!sm9Y8PY#s@=uR?W3@g*qcwu27X*6j+EiGM~5EtUCB|d!&96>b* z656IT5OPmG`e+RB(C^=PBBg?2;jFUwwLch5?~PDYEL`O>EeJH{Ei}OTx0hlJtG^O*esMv)GW&qiox8 zPlr-4O3{;=)=)~ZxV(%&33Db5TH`uF2=Gn^)Ux3A^>G^)TAglQ`>$ zw9sa}`AYziMM%@7bZ&fN;uxz`j!xct?-ZeQ39*q$__J`Lr%!glG8vI$OzK^&!#Qd} zkTlc)&<^J|cbshXxxIM>gJqL<-6d%zBUZvt5-H`y8#iL>_&97z;i$ScG=g&4^Khck zz~evsA-K|gPmpGYf{V}^Xr>o>s$q2+FeL590$}OjLEL%IJ+TM30hrMlhfo}8E(9*B zR4|&!Aj?=Rynxs+QV@a_g}Mrq%Lt_uwJ^jJ_urq09GEa!nVM%OGFaw}UDfb3<@s$Y z*d{@rz6J&$NGk30$G`VIJn_&&SZcSi5QboS{%m0MwKlm1i#UwIQO&85HEVGFcfRuz zOV`hozB@fV*!1cD1V?qdGmIgt{nh~tWim;rr@h{ux$7=OD=S?-_BwSJoWq-)MRsfq zz2~2wlq@vW`!Idg`%5KQst050&5PA3k>o-If#=nJu{q{CsY1nX{)7#>>&hD ztKs3tACE^%2CP=9MJ`p^7IKcu-~Dd9{tI7-z157($6U*o z<)rljOBooL%rTv!n~gStRkOrIAk)OQtFPhG5{^9d5cYoWdkB~Mm9)I*v zoSd6OO?9gqY5{X8(c~Oqtp69|&eaJzoXui9o5hgpVoR}zE$3~+hxYGB@kOMYf6@=j zb#d0a-US+lNucTJOgoBVLq@euw6zxjaO&Ve9K7>Rcyn{Bs6*dBZ4@bu5{DSQAQ=Rx zO-|z3!-o^;W@>z1Yt<-%Sd`M5?^|*uoqt{NLFYn!p{!$4! zN)tzsNL_Fm2NVGzmb7hm>drg0T}eB?apOu5hBYarH`d?J-E0nH+s;R3{RW&}E+eZh zv|fC=7Sm{_=MNsl!hr*cqH1zubY@|yw;IhCX`sYR31AQc9t7BP@4cw2W)nBW1zl}K zASDWxg(85D{?%V4*P(pz#TYo}9Aq2^wo;=dguqg;$xsMvE*3H1x-pyx{w>L#;_r zQLkCFEcDto9LBJ|SVUgYG$kQew_^w1^!NYIze!F0qf+>-H{5_rKk^aSxm=P}^s9pg zY7^G7&;XFPZH%v7i@aswxx4N{?ZgTAOG}8_?QY$7Gxqf|{xCxyI8me&$shuXQ~_o1suB zz_ly{Kr)lG5bJIWDM=%WXgi9mX0@sjf^7ixB4aI|kU%tB!rr_|daV}O@}Uo7{=0YJ z=WQF`otXib5-p|vT2^3$Bh4nxE|qZd_;C~p1!UK*O|;ZWx(-i6Ia6{>e&!iS!*fe2*ydEHgW*gD z1;$WSB?$l=TUx^8BafiZb#cKt=fKJ5k?rdPRSK%+>3tfVG^OrJQlMr#c<96|sh^1#21Uu+|hPD3zW5QVD_Qp&f=8+p+~0+;-dl@{IhIHs;R1=_X_b z2XW`;KaXY=HjBVbGu^l^-P1QtK zQo~YfYTrIQ_T-arY#UIhM@`G6>X_#0K2U%#N-Zg6Q2=ZHFEHs)l&1Y>TDdnCIY=OGK#sUpM}pkY(ijL7J?u^s1a^)FcD7(+HSRU%tQeE z@prrX~P7YGox({Y(tE&cBp=aU>;%`ucF* z``*`$I+GG(*Ia{v%P+^&hd+#yM~}ucc8#$Huo8ywIY-5HVKW9M1Uf3%xs<2{0d_z4 z95&=~ptcPsmqVtf2fgFtAh}#DG^u`G!(zK6pj4oHOG{`iFXO3w`w&DC#&S928G|nb zW<3veB}tuN0?b*oTC^JQ6iA7IViC6M!pUZF{g=Lk^0sY1m74rVVc@rX@PioGxf5Ui z(1$SH>0l_6iD{*sPErPOA<&i*PdxP$#&S6n7(+7*QRf^l96k)$>7b`lNi3z9>q2l2 z#u(;jXYuU8gXpM9jvluq6D6Z7t@ZI-#z@h!SUrleLdpSY+x(9Az0cnI_P6((_2CZ> z8TI|M?$L-?Im2agI69OEj_rA+WVn!iiQ3%LR7Tu5Dvv-8v9;DlaG*?CH5VNTrr4 zRj_(NfWRp$qX5A-EfBL#y6vgScKS;kYbN*(}iQla^7vX^{qVg&}jcP*G#PY z#b2C6EI!dzr+E=TrM7Qh-~E62m)Ye#dpcMC{_mfdxc+*kHUt0F4s;1Xlm~}-%eDm< zLQ+Dc!x${pC3hJ^J6>3%BLs_9g&}PK^x_+D#1B65kvR3rW#DFFEq3ZS*n0D)(7NFU z?CkBu(<>`Ur}OznBN3<2-QW!^ z6CE`h*FqUwrM50(abPMiOe6%>DYsTX3~~9bx5ma0Kjy@_{`TAPjcc#PLcN}(db%GF z2m!8wDbO3D>hf|Su;}|(Qh=MhWkCQ~Y`4Li%~&r_QF$35sMhOP2?ErDU=sAm-vGxNWK;MNs@mhQA_^sc<_Fw%~ z{Pi2(m}sbegpddzEWUQmu{q=QqqBpEpImkJHVCFmD@j*yX zv~9i;hLTGu9YTnsMs5l)Lo<}xexs37wMqs6qhTngJWupGj$C~DY1umPJSIN=+vph` zLuKbqjKBNcpx^r*PC5=|JDpf$UX4kz3Q4CagT4@$@qJADKHPR2_R><^6k`nIwhh;^ z;6)KSoW~e#1NfnR--@=K%)p5nCkxVYf}&BXtth!Z3D}HE63+N;Fl&DOCLh?IN4#h#N9g+IQYp zr4J({`JE`%;s+%JIo0RTjjWMU2@nFCKKV)XTyVjwdW!$Z@l&CIkKKDO9=qih?0Mvo zSU8l@#CX#;xCvZJoL#A4w$Z?3rxT~@##Du?YnV}%UxZRL!%zmCi!5V7D1;XP9R@@W zAr>Jd%P7qX&TR=$DJ6*j0wKtZ=MmR&=#ggA;XrQVo;~G5_4?354?ogmmKD@}p9v{5 zKIgf}vNBu~h#YpY#Wd#w%YMrMETFT=~e-xElg35B3> zZ%8I&2LT8I1P&p!t=C*LZ};}r0NB;(>A|ONzkO)5SS*#cZnb;gd=;6!?_N?l|9mjZ z1|1$md-@b+j~qoqD|4!`NyT;H8k9>7l+aSc8iyW9iIp(KsdgK)o`*%>k3F%F2CguwW({4z#<{^ws-ZOSYQ1ATos^!@L{QVO|Th@?c&pGT;& z#00b?=qugyRB3gfFbc}!uB&WFtcHz#1XI|34c1{Qldud&7gwEL<|weASvcqCuE4o} z`e!JvTlbm`@?^x7%VGSgt8o0E{~5Jb3!xCwqLi30RZUva*L_g|mP`Q+?N<*qBew~W zW7#Zkaqe-TCV-hjr84cKnP0!L@&A^J~c&#F)vT)(mC&a@3hxx0hJs~b zFq26(8v?-cJZwDsY+U-uPh!g_J`rzFukj#H7N%v%@e3}H?GwjEXK_h}oJ*Hd5=lv< zaSfVbh~*$iHaL-hCaEr?q?Q0-goKSK>NKNhITT`Y>$&G1{OFx`?(5mIDdoj2TLRUH z;H8O)>cIGD{ltlr9(sCtzNgpPcI&Np=EfUw!B_qcnQ{-Ll-T)4e}t8G8;{?07aFQ# z+)^?9;93?2T^EZ%fL0V~U-vGhlpJFic3r@>alz+4hy2>L zuc*tce}3fh%dzd3ehK^UxC2DdRGIoaMM|+TpT{XBJKWJKFNTY%ek~0M5k^KLOf0?n zJuS_p1tJtbI<}=o%pE9L7J3{93%(!Y9smqZOyE6#{}tr=2Tp^`{tP@MAw-nVJCDEh z@4gcL>m`>+tEY$UuhlGzQYNG%j8ZHG0SOJ^2us0>dAzyCVvd9eDMTcJ&=aD~g;*g{ zp6bu#4qf++Z|nzfOs(PGvu?Pdb?W=ycQUnFHjvVeq@pQA8v_ zFYN7=fe_?SqY;njgpfiA2}(t$(+My7zi-p}a{SfCx+lbz$hLh(2rpWelu{zEP76n! zzEth1^PP^KRz>PU)%r%(G(sVQnWINVD7egyj$-`xZp5A&Zp75R|C-dKZ~n7C!-f6* z*iWYrZN=m zilS9sw9uw7I{(c0xv6$LKIMEL*WY?8-v8b2BG*6gQw72Ngx6$92x$VSUUt`Ai>z3z zZ77x679m3aC}scvAOJ~3K~%m?NB}7#i&D-Akx->iB&FmrshtZTzc|a1g*@0EYk^y!dbb_RxrBO%Y((Cd9Lp5Q`qmhC;xX z5>KzJ;83#(pK}~(waET@y-S$~gosc|zvry88pVl;6?KrlCc5q%K*Vynh}CL55<(J6 zWhf=`l!8-=Fp40AAdFHw1Tu&3y*Ib%s;eCJA-qkOUFJRf@WbKai4$V^*ij6u--tDr zy$QW%pM&Fn`(@N0e*)`2{@cj*^rCO`W_X7VVWw7#7cG#CK!8|MNT=Su5Q*ikW8l*@ z7$#>~n8@WYl+9v6&6a5pV8FI<@vXOF{2lL%SqeXac`+db`L%0t)jjv%e_nkxMshh6 zDiu)2!P!FKh1uCyCW$fhISx9UV=)N2G}0}VZbMrfsV==V^x5?YDB-WG%`MAV7p@^v z3(pP$T>d-1gY6&xc$eD=`Pn(ejlEQILP+P(7r(eP_TKkaa}yI0Atay6=ZhnahC^J} zY6XEK2yqvLunA*KN=ZT?gkoO?0k|ed*%au2kh&0}TDI-Q_x#mgEtc1=ohy!wY0Ua0 zR&nb(t95g0))e3I-S6h_yy+(A*xtR=BBT-#lA(k!N(j+bRlaJVwg~}?qGbH6c>R(Q zB7~Fyv8jIefJXnr{&6iw)oj2Zy^6)V1Qt5Q4 z=}+L{l*@Sku3czPPviN|eGXBh0aB|WO9(=JYO9gjcs`G!WuXy#5rtAVM}0qVjS21)9rxkt}?ZL_5yqr_d`f<;%i^4`_<}P zZen59DH{X0S`{oTdkWRf$q?DCV z$_%8W7NtaIRhl=U_5F#IGQ*f;ltx^LAdu3_7YZGPo(ll*S9`pcNJ?$J@y7Zi_uSJe zI!;gvf*etu+`#waw2@LGgkT=$&Qz!4szx3M&>DFC>+2axn~hd0;DqFW?o)K_2R|6k zK-+BujRtZ!^Yd_oh-cP}p`pCB^#bm5U2G{7K%~TyWuchK zfGcx=-hlzU_0BtgsuwRiGJ*^K;x8bj#N6F?WBjqlFtdL@R_5l=ZnfYthDtVzPzba= z4=!WKDzQSL0vbl6t>QQ+TNb93ZIKpi3^<3K&BAdUlx-VP7-G%3btrA!ir4+&A9k_j zeuf_sfM^~*?9bkP_sWhhd|?K_sg>uR3!HqOZoBzro*5eQFT3i{%oMz5FSND#50QLTD+p23anR-nK@8I3{ z@N;gy*<#E(|Tn3`0=c##5jCB$oEa0_|#Rw~HU z8yK{0RJL!&&=pr;{1<)!%yF>$kN+5=TE))KfBscNb`e4_{MNT(_^ofnb}12cI@t4t zKgW@O{tl|1hq`jVX-5%ylvj5Vz*%Esm|s{#pW|RzH76H>09sd{5rV!#0dM?2Zo=qW z-?mEV5dzG0k={&y)*oK8Ax=E-fY*QZ)hlj){~Ul*2mi}|X}#r+J3J!=#sy#eVh@1f zr6-;k+WYBGm)$~vGR9gvKL7bDwe5L@SesX;cU_&Tp$fP&`I-y0j+gZ`YW$t=Wbfa) z)qd)R8*HaqWpln?isDHWY)VBWr67bzFN!39C_|}lQQ8nf)Jjq=Z|LcnU1C#LQYZ&3qZ;D_3vxj*xGoh)Qpb>A~zh_u$Bvz69B5V7b+TY&H>E7D|qT z@on4imjC|WVX5nKrfd1{CCC9FQz(jP-@a({Q=e+9pqm}J_S!`itjp>|mWZ+By?vKl z())A&@-GFod_2TNlbW$9Bx&>NgzStIQ)wJ{RrPvy@vO5lxeeQ?oi5yayj1)!vFJ9flGjelnW zZB8-F&()ck!SYj2$;JEc=VRAj-vLlv`-{Igt<#8E;oACuWvcMy@5M58D;W?PUW)8R>t1_ z?m1m5FxPGNY~S8c@3Z|SBZdyd59;Nc)+)@AfGne9rSkmN8Pc zED|z?l`sU2JBtMEwn=Q^0DPLwc%swsA!S4vq4zn zU!B?-_$5-$SK_8(2Ky3#quJ3>{`!CX$J)u;Zy)JQPUhBq{NusEC6}zItieycm*rHW zFElovA9>zGXSh|@veDzzZ_78tpojq})^8CVrJ#=6{8NBjJ_G31v|NZ!Pn1;WU&wB8SU&Qhg zPvG@m|GJE7HSx@6KO5A2zcu@fZ`Mct6{9467e<#O`>Ywt^=$aqOL3j1g{{d_+1bPOAv7&ObP_d z0uzQ1giM`I(&;3fo@?l;>Ke|t_xGdDNluyo9S8#9yld4WDQXqX>HX~YeV_gA=h?V& zrM15}rtZ(>a?@*ThuSZ_)M3l>cypr!aSTBHb``Dz=Dgh|Fc)z*zW0AC^F;vw&aAtW zy(Jsaew&<40B8Zw24D(+NdQ{yR||k<0QCTB00ePJz6M88!Z@2s5I|l3jvdWCU0wA6 z!i*59&gUaFiUQ4XOQqEG6H;nvX-P+C%owuEoHCVVqv;c$;B5;Q(7r$a*;m)p=r?mY zrS4-3nW$d>^H#YBau7nW`5WH=gb+kgtbu_6bze_UHkwHEo`2_^ow1oSw*lz3nez(X zq1V|l;I7&250Gjk{wz2=wM{Biw&R^Wo z#hBkusLv+|=R9%78Je6-=IWO$NdXu{_583O)ggiM1i71qSk&GeguUw-0IW$17h>)?=g8Zhc_uKURPqPf+N8-B zeu{V{ya#eZ2znoSNLaC$h=1&KbH}}_)$WmzQNJwre(tWjwnsZUwxT+cI&6c=d>=qQ zzFOvQ!HG?roV5Y&NYT{U;I0SI*#GP^%{@Q8rCC^3Jt&RBvV20{u3arnvrcT-v3^4`Rw~8)vK-Bo%l__so|&A}wqg-NmNB)tSqRHAca=(NDxFR= z-*Ss`MkJD-`MJ;Sw?XLkNO-%xL<2AuY-!20_4 zsO!5;JEM=j#@0Alxt%OkOf&C*IL(e`dx^KVT3Uzd7`yc#W zel(pPPKHAJK6(HByZsFfT>y64ARom$usr&phve$Dr#^k|xzqQjQd85W*|helr)mkM zVGaZcpjbjMQXQ@*`-(;Q7{lgN3Kh<|M2O;J%v`i$MPTw-XE9fno+$h7Fo$DOFgO~O zq_O>~s+CRC3Q3YwHcjIAVmX&Hc)3i*v7Qd8mjf`gV&%&I)!+Vh>z=Nznk6l54ynkz zCI8VW(*Zym8WJ17`(07qzTFHrG^pjCo*Xin{<)W5zWbDGuIaK%^?j(a+&NbjDvqaT zLIJd3Df@w!eVy-@IN`|fuc3_}n4e7Sk&e?rn<+$g}P*g7wcY({Y&$BqbV6ow;tEVU){x zIT-8%P+J%rXx#a|?@tP+Qf+zDY@~$5Btm>DK>dsni*qmlrXy6yIediBk!PP}?H67s z;f?3*ZwYL>vXD__(ZiIGfDXtKKo2^i;E*t)ObB+|bQ2c+`qxJSyMgND&;Wov%f9!$ zx_hs@vi82^%Y*;6X_F*`@Y!JZ;y3~L!B&wFu8oc&l}aI}>%1Wl&=f_w@s_S>bp`>dQF&ku>(|I<6=U~n^lO#ohuHZ{Mn;LbZYw#=N-8DngqMwW{T zrKUouaE$8@YGc{=vnPc@MBTPc>i)$q94Y3b$(#(;qrDofP)Mkp#|YpPLQqQx0$amv z%rv2Mj*?|TO{b5v`;NaL&^u-E;$5>&J8e%-u{gZ(>Z?nH5KDYWa6Owf zhS#ktKfQc;-Y67CWkN=0C6k%3&o@vkmAd8j_AS#s|M^$!^}Wqr^I05nJK@Lsvy$vG zm$_a(RL>D}|Lgt-tl?8m@s}wL8JznIx-JPoP+O(axi+UzYIek8n$%EVNpIVxO*^_i z$I0dq0LjAOU>%_}MhWqO5L&P$oro~oJ14g=Wp+57IR?K<_; z_+yVe5=ksstW3S|Q}ie|A}>CGK?o7u_uOM{yW@_cUs1A^V6f1(c(L9-bt>4Gp)?pWh@Xje`(B11NVC zKZOt$V9A73$`%yjSt1Io?nG8x&q-jJzszg$l zF+nNi0ZPq*r=K>GS6yYi$uG;f!kTwV_^;h_PvR#RTo8NUzpnG0{p6Eu(XalWU)U!J z9%MdLS-dKGX&B;97hJ##xttaiB0Fj6(*5UMe|yB7hJ7`Onz#(o1;t!3PBi1k9kOmCt?r@pNqZ z^nCz!?Y!fT)QqdHD$W1d&x-c%-YwtsZb;$}JTAB`C|JA_QT!6_BkhCK#n$ zwJenhk&VO?2V5ja0TVl3BQBuF(yzT%n<*9}1|e1H9GBZ?OqPYkIj>ljQ6{7un>@Mb zVoUj3l<-CSXY$Rt{BmC;5Rm?G(@kvkSHDKj{K}Q_rB{E;2gW?0f4~8*r&4(7&O7n) z{r3w=mU$>1H)k(jURkngRj$4i1-iR$ zmH-4QeSP7n(P$u*%gF$!BR{KGZH+krG|BJJ`5PKW?0&y+6g#J5;t&83Ntesff?)4+y{kz|u5y-hMm&wtBT7io%0FpOp*-^_EzywCMZa z&#wQ>XZFjJChb}Ht6%L!^*nsomA#Kv0OBJBbf<4t00a$HjR+tlQK}FjD0NBs8bSyn zgcX$}=Z1}HXIN{3Ag4C@7XeT^x@}w3ugHGYG}%E3mHlU|UcJYcOzuGS*v!ojSs&#LKGBSR z@IHEZpx+lz6xq)hE7`85031<&A`!w;n&w0G4BWZ5&Ro5|827!zRW&$g=ke0sy>)vY zez-;^#IF;=2qDCDIf!VMB_v9@0Q7()sgloEo&eCt_v<;En2Db9wXenYed$X<9uCuz zY1VBT840b}^s2nCzn|={ugCoF{9h03?*q62h~8(O!S)9q6rJnW3mOPmL2=Z@r~19*f0Fm5NX2oCX-fs9{t+ z!Z-&cNdPc8=W55aX=8Tptxm8sb5G4>0PJg7zC3u@qmN3D{p-J4x@GZ#X*N9e`s?Ay zHc5)eGEH@L;p40C8@~v>IQ9q!2oYRWG5F+@yz@7|;R8KA))-*XK)|#(S3BbIg5NOG zk?GS1YUj;6Fy}x1!!be_K=t1EN1kkZH$Vpf1R5Iw0Fy%@^c0I#|EKDBD&d?nlXJgC zNa9cb`-^Rtt$AdaP&#Hm?34{ghm>=&cgO~~WS8yD0GicZyX$1e!dYFHbCq>&q;TkbeGmYR&zfajv2mlhX7OTVHI42l6iCiALkeTk zuD`!Vra$;Q(tgpW!DPi-DencwITsK@?Ed-B`QT%ZS=my_|hu3NUOFEVYK8{jE>4U|2y?cD)g0N}oc28&S2{gNbnj0w~Bz7|!hBEqXT+hUu$ zcDA+t;0L8;t5$IwlAjtzRY6nO0Ivto$W0?gC0Vx1{A8iCvm-Y;+K|@uP)64!g;L_U zeOjoV*K3@cCgvcG^2bpJGlFN{h$#`!>n17f9qDM<-`+70T7!zJ3~y8 za?krA=^Ti@bFE@!Iwyk;?0S$4;-O4{&HuF~6^ zfufA={Q1udiynF?6KriAL{-dW@CX3+$hLO@^n)@s>cD_zn5Hg;!&X}?Cb~yQtGZ0p zb96!pVM2(I2{f#^?>>>vW_@RVME zy9D^~+O?wdh8wu0X{Hqk(PsdBdk;$47!004>3o{i}2+0xcktAcaB_r35}R;=(n{-6KJ z`nPOBS1N_njW=PbuAzSMQbZ?D_ImdT@oNHv5Mh^I4|%+{){tdcXOdJl zbv;ig9ceoM{DG6d^PR!{fBDOB(|P9&+L=3xLmFw$iH-;GcNpXd_d6WYtOmez0B5XQ zv0`bct?lIgp`rRMeSN-)X;M^~F^HG~Trj$k`35BW$xS)hsF=u_Sif8JJt1aAMe$mDt)rr%_ut>_&&M;e32|)g1t)}9n{T+D?|AHSZkVP) z3DF|5T#_g)#1e_Dp3M$V`|4NwCRG)Q25h3#$=oFzE@{j?fWJ2xU9%r}D%{?l;ksUI zZ*8r8xu-|*%d#*zC#JoCrRoYMgb=x)>lB1YrVxR_o}QXb=bY1;h{sh*h^%I_aRZ1K z4I@MeVF{lPylTNq1VBLuA%q}r7$AfQE`+5}ss zN|Npm22~aa6sCOP^V!B_%hSHv+F>ae9IydCWCPr7Wi)=`(F6D~&ggJux_SU74LtSK z(%yUT{U={MKK<3rn`8aitgLZPbo-di`7LOc1pzp_x@mE4fDnxcVK7Q*kTIXZxxZ{# zl8-S`Bg-Ub7@}-h#QBffe$PS(!6yZSYK<&sO;z1@#oD!7!_Cc`0Bo_rKG8ATiDY&k zfFyvKm4SiNH+}v8oXW?F?NTI?@V7LFPrdE-0I3p(G~d@pI-hug{Ozv0pcjjnok$?A zC;(&77(?U7K8D(pPsZ^2zX63YNHb@k?X#C4l&ps@6gsZJ4M1>!(@Mqc{PPpWGe5gc z8}98b2mStHjo+Vdp)?uvmhUf#j^G7?U|YF?Wt35xFPK-!^<|HbM|{q_SVJ$+{@noK%m23{2^3L8&2D@ zYSpsAr=Ol5tgCB#e)sNhM%Nh^f=HCY&lqG%kx^Bc_JU>r6vm)gmN0BUQ%V6L2p0m} z{)}VO+vNA7ST#}<)52k+U>F4k^qzh0xm!-U`DQ1R@59mEjGJgUBfl}bifOiAExYgj zb^G4c_qFMkRZoHFf*<`TShsAM4}eq|9%A>bIE!Tf$_OD9&Jkb?Ga4F5OLH?${>jZm zuBm|}$sm*-O}2c$c7!)Ld#@56uM2OfFUN)HcPX1Q$c7#-CF=M@eVeU#?QrkR~{ z)>)a3S+i2}zxq|@&O^qPtsQp}%|)siuKwH0-tQyOo$|d7z^u&X&1bx_a^*r649=){ z%_jE%00=%wL_t)TX7agI%4c!T1R)4A2FbqJ7MEqDG!3fltm0%d(`M>nYt1oKrJ*GI z@BS(fL`0UYsi9C=v#dcO%boxB!V52>D&p5|v+eK2ed0IBS=rT0J%Guj0|%z;y5o-K z!IxgDOJy=~Ef|a}`})@d#dYiaYN6nlPMoQ9J^lpSIW|TVNg@oOF`thG2%*g<%^_14 zEh05j+Tm|$hSW9*zCaL)tYDmjjN7x$tq<^zEXBEQ=={L%e=l->ThBLjb@8!m)*RC` zolvTBK&6CKpsHhLr82r?<;u(%D_5o>t*vfwXYH)*&e-D#HST5a4-U|s@;w4zGJsS5 z{_Srs99X~p6beip(zMvtd|n1XWc$vzGncO0I_w9BUK}#&5OV{$dUOWZH{pVkBxFi? zjV!BEL!nHV^X|o~S8oc>ocS`UN}WS?3HV;kF}sB~oT`|Sha&6j*uQKC`SZ&@s#&nafH=&$7RK0&EWIj6&w3L?>{m^6Df z2)D?>i!Y|}6J}6fOEctH4anhOaDIljRl!lS8TjLgiDqhX*hv6@vC%ZwyL+s3U!S@0 z?tApYfdj^1sbom9Y%oG}-7r*cnq%>BIA5Dc6y{uf@z{wMUN{0VRq9qW}PKZQuK}p)zuypC>IjdH^0$?+$mlpEJhFuUQk@w)UCOh^i_XT_=_hCKrNB zlrl*OpPy1C>G#u+B*F6gjG3pNswL*lvxsRaLwoiFv#-78t3UfJT6fY(Wa#A62?m4ykK%(qLh}yu~?btdU@_e7nRy)&K#Y2$t7;$ zEI+Q-c7xl*(Yxw;@je6HZGhMWV0P~x{&4!9U;c7_PE|WfmX#P%RX-PkSpcb+CQ&(u zW?7&B40~4H0rnqcm?hIxD5VjJ z(vVE45|tzbDK-D;^2^kj-@KZyTlu9>d3SfsK(QFE4+f=Fxl9bZ|F?ud(XwE2j#@=Q zM3OLO7*H64ZoAn?gkVTjAyX<8Laf$cP%m1R$^e}ZVriBoDyAt6&UseXHI?%*p=s$) zUVClo^eeB-^}hJxSlgmSj%{$!KHgvpnL_+uZ z{UxJR8qw0}?z7ge?Zn|?e(#45mV42-w+3o(9-EJ z0CGVx>D<@%_rLynO=j1wXtAryA7+e=zVL$ZC6XopS`!M__-bmBg!8D(m|PzSkW{6D zh%95UQaM-&?JJeQCKEOQo(R)VouPKn2d?NU6~wrG*Vl2=>=nnR+Q<9con+{XdXodtiGBvX9B0y%N^ z*+SdBTQzp=Y8)|)n4hswOqP8C#^i!w(7b69VlM#6W}Iszi4;u}b%B7Wk3`Iw@wn;_ z221+b*cg%JZ2j`(2a-#cbWvH}VVCQpc>nJgyB9IHpM|@;cdp#JD*&In07)hRN>S+UM$_!s2#<_F07xuch@lM|teTDvExCMIzG?9iXX4E5E9PuqWA?Mo zAE6Al-UQfQuYDYq?&Dc$KY%!@M{d(H+qX~ay!qyq;m*!FMUoPcSS%K(tqrLI1Im_s zo(!uhH-zAl?U}{^IwcaJ)00U{P+BIkJSt2x%?%@c(v3F`)y|!J0M#S3eK>UU&A zu#a<~V_dd!&YK%;HoCs=_rI_2`Q1ZF7+NhKD~7pg(zL1?8Pl}-N+q$dxtSM!hFSsCA?Cu_#cgrmUHmIFxskB|Lmt7_Mhi!q8aao^?1B&y$`^Cob0Wyxx@#d{s zFCB+p3K@T1&b^H70sTmsT{!|99kFAvALyjz2NcC`;iG&1miabieqz*ek33t=`$X%J)lpBjSjkiA9R(f4q%;g zc}GjWXlL#M4$V26_~_nJB1f@7yc4i{K=y!sOv+PtPb#~5M0bDfl&OvxqJ}prc6y7^ z3okxEK!3ZQlpF!LPx#24YJ`L;%A8O#n?N*$T=4000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipl1 z6b>i;ToBm+00yi{L_t(Y$Gw$XY*g13hX1wC#dEc1JoX?w_`(>l4X%q#E2?s>0~HTI z5~NV6k)k|=1f-}Eja2n14;4shlZcXt6y<@uw0&p;MT91?BbCbXa0vnv5|JoSyZFM` z!%K5U8&YlV#aPBmyUsftsDg_`twOes1o=iuU$nYxnL={I8(&4ZwoqCr|DeK7M?U z6_2;Xx_{&iwYF6-GwjMr5D}mhAOc|qyDn}f5_0c4i|3Tl+>9s(!YDRoZYqS595hM^P_<~ zaNwuC&ph+Rh}uclIWGdOE%pT=Lklr%vzQopk5s z{w>_SQOstgn9E5%oxTr}nMJ#6soFX#PeToWFe89!{kes<~M8aX%6%{CnV6ITWyyGBjnt1B)VZ_$0 zD;Lc@WdwkRjvsd1)`^@#ZW z5{t#i7m47)2Oq%W^PyqYD!AD!K7Rdm{Qa%Bkei;y%GImU)Y5|H6)RBJ+>A(NC3t2A zX~#kG$`yR~i6>y#_I=JkL=tXowWcp#+<5iq(b%6yM*i|pz|6UGtB$|=>LJ^4ntssL zMN3w%mfD&cI)DB=P0h~YJFTsl7s1CpJy`Sf(-<2Vz=vPzVGo|dVgZ#A72GjB4VF7 zcYRF~d)XJP8b zjrE~m&{){e0K@MGYc0eK+b|II`QSJX7Sz?De$gUa>gz*tauRDdZbY!E3b||+)xjW4 zj|X$P9KZ~Sz~l9z%CZovu10QT1lRle9(EBRwtYM5R<7Lo{PB+ib&MsTD zU;)hP>Vhs5m`f$942J>3kfh^4l!6eUy`w_{6&2{{=s+|Yl~SxN| znIk*QAu8wFUrTttnhr zhsPQlg_*(S%#`XoJDFXVZr{0vWf|?8HYvGf9ilZrB*IL-g$pq=GJ-;>1Unc63yX(K~?GM@J`e%*EMKiDZ7BKmnP|l12!%(a>*_MURzx)z95P<9VV`5?g%#2d01R{bi|LomnnsT#LYW>C9wR?Wk z-~T%RFb9)KZy=wi!E{>r97l)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0001)Nkl%ztmvYtqsUD|RCg4yVAN5A(ouslO^rHg)KR038g&$n9R&aY0RR63 Y0J6RE&8KeZiU0rr07*qoM6N<$g4GayrT_o{ diff --git a/jOOQ-website/img/social-fb.png b/jOOQ-website/img/social-fb.png deleted file mode 100644 index ae733892c493cd59e32025c19ba618d900c4ca94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2926 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 Y0J6RE&8KeZiU0rr07*qoM6N<$g4GayrT_o{ diff --git a/jOOQ-website/img/social-g+-hover.png b/jOOQ-website/img/social-g+-hover.png deleted file mode 100644 index ce6b4261ca36980220c836c6b06df18f4da785f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3324 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 bp?(ekVrRz~-N21z00000NkvXXu0mjfmEB3U diff --git a/jOOQ-website/img/social-gh.png b/jOOQ-website/img/social-gh.png deleted file mode 100644 index 470a72be738623739052e22e2c948cf1d34eeaa4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1313 zcmV++1>X9JP)Ii1C(*9mouUjW`~ zhd4PKFwF)i?Pd+&3EQuNR#2oyxwpB14f_8gV!O<{F~ojoC1kzszcw}ootAbpViK^u z$#`D{&@tc}*W+XP|2M@xKr00MkT%63fMz|o(@n3&d;zQnkTijPKj^gaO%l%=?!_FJ zIA{1nuoSq?W}V;@!+xZngjZocHY_T<{wUZIlXzi}@8%Fd4bbDl>+`A-w#Ox%jY${> z#?vhQ0W<>qiJ6q>V;aUy#1hb@b`mZWGIABtxXen+$gBq*PqXy(7-GK`D4B(pcNOHZ zu_PAbne{Qm3%~_xnVOiz&Y5Tn3GKpu3;3%Rr;s*d+Ac*$0$66;^ zX9;V0{hLA)DmEA3RtPOC(=i{5<$8N5u)>}WSHMJlqQm*}#Z{jC8!gA;@Ogon1|g!v z%9)#T?q?oEKVGR`1S43R(kxq)^}2*sQjg@VK-TM$X6Yhelg)@K@24t$YUmV4iuj!K zT!6O&8*{RE>yf-D3d2UhcI8!Lz!q3KQv2=eWZ5;6e<^N$O46k5#ez$Qr$HYIPa68` zR^R4o3lfsRiBl&fXc!g(4*_pWj8u9+-_aG+ZD<)`4CO1W3cZCYpc2#uvfxY-yyy(F}gc-imPos-e2MCp2r~wX3dNYP_IS$dh=8!I-OvP`VZn^{0#5@cf1b;1Q9D7M8OAod~ zJTstt7E~}|M)AP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z00020NklgWK~O?*URhyobS(YDC@@MYmrm;LIvmx009600|2-MYGAPzBqjg=002ovPDHLkV1g$EdvE{% diff --git a/jOOQ-website/img/social-in.png b/jOOQ-website/img/social-in.png deleted file mode 100644 index 1d4044e9148891e89a036f0ded9b718c2867bbf6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2946 zcmV-|3w`v7P)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z00023Nkli{s;k(RArl$&PWCCM9qD1btZBzd#W9>C>x_lJ5s?RvI5R$p!E&rsXT s1tqAzMakDiP=XSahrR#+0RR630H3zW%X47rZ~y=R07*qoM6N<$f~326;Q#;t diff --git a/jOOQ-website/img/social-nl-hover.png b/jOOQ-website/img/social-nl-hover.png deleted file mode 100644 index d18926c04617fd9b7861f361045a8c5493191463..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2964 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 TV2lJO00000NkvXXu0mjfXtaZ4 diff --git a/jOOQ-website/img/social-su.png b/jOOQ-website/img/social-su.png deleted file mode 100644 index 857407e236c7165ef76941ba22638f65132cc827..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 907 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 diff --git a/jOOQ-website/img/social-tw-hover.png b/jOOQ-website/img/social-tw-hover.png deleted file mode 100644 index 9932d128b2d30f8c9a41017b9d56d7ee5541ce4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3140 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 to values() - -Version 2.0.5 - February 26, 2012 -================================================================= - -This release finally introduced basic runtime configuration -features for the jOOQ Factory. This configuration now includes: - -- Execute listener and SQL tracing support. jOOQ allows you to - hook your own listeners into jOOQ's query execution engine to - be notified of all sorts of events -- The existing SchemaMapping features. They are now part of the - runtime configuration -- StatementType settings. Specify whether a Factory should - execute java.sql.PreparedStatements (with bind variables) or - static java.sql.Statements with inlined variables. - -The runtime configuration is documented here: - -http://www.jooq.org/manual/JOOQ/Factory/ - -The listener and tracing support has been requested by -Christopher Deckers, a new jOOQ user who has had the courtesy to -contribute the new jOOQ Console, which is documented here: - -http://www.jooq.org/manual/ADVANCED/ExecuteListener/ - -Apart from that, another long-requested feature is now fully -implemented: The GeneratorStrategy, allowing for custom naming -strategies in generated source code. This will allow for -generating custom table / record class name prefixes / suffixes, -as well as overriding the default behaviour for rendering UPPER, -lower and CamelCase artefacts. See the manual for details: - -http://www.jooq.org/manual/META/Configuration/ - -Features and improvements -------------------------- -#93 - Add Field.equalIgnoreCase(), Field.notEqualIgnoreCase() -#408 - Add class prefixes, suffixes and other options to the - code generator -#492 - Add runtime configuration -#1107 - Let Field.contains() support the Postgres ARRAY @> ARRAY - operator -#1140 - Add ResultQuery.fetchResultSet() to return the underlying - JDBC result set -#1143 - Add Result.isNotEmpty() for convenience -#1145 - Add runtime configuration to specify whether jOOQ should - execute java.sql.PreparedStatement (with bind variables) - or a java.sql.Statement (with inlined parameters) -#1146 - Add Query.getSQL(boolean) to indicate that bind values - should be inlined (as a convenience for - Factory.renderInlined(QueryPart)) -#1148 - Add Cursor.resultSet() to expose the underlying ResultSet -#1149 - Allow for optional - "http://www.jooq.org/xsd/jooq-codegen-2.0.4.xsd" - namespace in jooq-codegen configuration -#1152 - Add & org.jooq.EnumType> - E MySQLFactory.enumType(Class, int) for enum reverse - lookups of MySQL-specific enums -#1159 - Support matching numbers with LIKE, e.g. ID LIKE '%33%' -#1160 - Implement Field.contains(), .startsWith(), .endsWith() - for numeric values, too -#1161 - Use reflection to remove compile-time dependency on - ojdbc for creating ARRAYs -#1162 - Integrate jOOR into jOOQ for simpler reflection -#1164 - Distinguish between Definition.getInputName(), - .getOutputName() -#1165 - Add constraint name to generated javadoc -#1167 - Trivial issue with org.jooq.Factory.exists Javadoc - - GitHub issue #10 -#1169 - Add Configuration.setData(), getData() to convey custom - data in a configuration's lifecycle -#1172 - Add runtime configuration to deactivate JooqLogger -#1177 - Add jOOQ-Console module to jOOQ -#1184 - Add DataType.isArray() - -API changes (backwards-compatible) ----------------------------------- -#1142 - Rename Result.exportXML() to Result.intoXML() to stay - more consistent -#1151 - Deprecate SchemaMapping in favour of new runtime - configuration - -Bug fixes ---------- -#978 - Schema.getTables() and similar methods return empty lists - when Schema is mapped with SchemaMapping -#1153 - Bad inlining of booleans in Sybase ASE / DB2 / Oracle - SQL Server / SQLite -#1154 - Bad inlining of byte[] in most dialects -#1155 - byte[] are erroneously converted to String when using - Record.intoArray() -#1156 - Bad inlining of DATE / TIME / TIMESTAMP data types in - Ingres (and other dialects, when the setting differs from - the default) -#1166 - Some generated Javadoc uses naming strategy or plain - output name, instead of qualified output name -#1168 - Oracle packages are generated as static, instead of - static final -#1175 - Factory.use() seems to render SQL with the Schema name - still present -#1179 - Oracle-generated ArrayRecords need a reference to - org.jooq.Schema to read TABLE of OBJECT from stored - procedures - -Test cases ----------- -#1147 - Add integration tests for executing SQL generated using - Factory.renderInlined() - -Version 2.0.4 - February 12, 2012 -================================================================= - -This release introduced many improvements to source code -generation. These improvements include: - -- Maven and standalone code generation now use the same XML - configuration, which is read by jOOQ-codegen using JAXB. This - allows for more complex configuration elements in the future -- jOOQ-codegen can now handle multi-schema databases and generate - code for tables referencing tables from other schemata. This - is integration tested against the SQL Server AdventureWorks - database -- jOOQ now allows to generate simple POJOs in addition to Records - and to annotate both POJOs and Records with JPA annotations - such as @Entity, @Table, @Id, @Column, @UniqueConstraint, etc. - -You can migrate your existing .properties configuration by running -> org.jooq.util.GenerationTool /your.properties migrate - -Besides that, there is a lot of ongoing work to improve the -integration of Oracle's TABLE and VARRAY types. - -Features and improvements -------------------------- -#8 - Add JPA annotations to generated POJOs / Records -#282 - Add support for multi-schema databases -#287 - Add support for Oracle TABLE types -#395 - Use XML configuration file instead of properties file -#1089 - Add Field.contains(), .startsWith(), .endsWith() as a - convenience for Field.like() (including escaping) -#1092 - Move master data table configuration from - generator.generate to generator.database namespace -#1093 - Add support for generator.strategy in Maven source code - generation -#1094 - Add support for generator.database.date-as-timestamp in - Maven source code generation -#1095 - Move generator.generate.unsigned-types to - generator.database namespace -#1096 - Add support for generator.generate.unsigned-types in - Maven source code generation -#1103 - Add support for SQL Server data type uniqueidentifier -#1106 - Add Factory.escape(Field, char) for use with LIKE -#1108 - Add support for multi-schema databases using Maven code - generation -#1115 - Add support for Oracle VARRAY/TABLE of OBJECT types -#1127 - Add support for POJO classes generation -#1129 - Allow for using Param in LIMIT .. OFFSET clauses -#1132 - Add RenderContext.castMode() to allow for avoiding casts - where this is not really needed -#1136 - Add generation option to enable/disable generating - navigation methods - -Bug fixes ---------- -#1099 - Derby generated artefacts are not sorted alphabetically -#1101 - Internal API leak exposed through covariance in - AbstractTable.joinXXX() methods -#1110 - VARRAY element type information is lost when unnesting - VARRAY's in Oracle -#1111 - VARRAY element type information is lost when unnesting - VARRAY's returned from functions in Oracle -#1114 - Syntax error when unnesting TABLE of OBJECT in Oracle. - The unnested table contains several columns but jOOQ only - unnests "COLUMN_VALUE" -#1117 - NullPointerException when passing an ArrayRecord - containing a null array to a stored function in Oracle -#1125 - Postgres needs casting for date time data types in - queries like SELECT ? FROM DUAL -#1131 - DB2: [Noauthorized routine named "LIKE" of type - "FUNCTION" having compatible arguments was found] when - using Field.like(concat(x, y)) -#1133 - Compilation errors in generated source code if the same - constraint name exists in several schemata -#1134 - NullPointerException in code generation when a foreign - key constraint references a table from another schema - that is not being generated -#1135 - Generated Javadoc references inputSchema instead of - outputSchema - -Test cases ----------- -#1009 - Add more integration tests for proper handling of - java.sql.Date, Time, Timestamp -#1090 - Run jOOQ tests against AdventureWorks SQL Server sample - database -#1105 - Add integration tests for multi-schema source code - generation and querying -#1122 - The 10k lines of integration test code are too heavy for - the compiler. Create test modules with fewer lines of - code, each. - -Version 2.0.3 - January 29, 2012 -================================================================= - -This release focuses on increased compatibility between various -SQL dialect integrations as far as ARRAY and JOIN support is -concerned: - -- ARRAY types are only available in H2, HSQLDB, Oracle, Postgres. - Nevertheless, they can be somewhat simulated in other dialects - using nested selects with UNION ALL. Increased compatibility - leads to a nicer API, where ARRAYs are used along with ALL/ANY - quantifiers, for instance. - -- JOIN syntaxes can be quite powerful in SQL. Apart from - simulating NATURAL JOIN, JOIN USING clauses, as well as a - synthetic "KEY JOIN" syntax, jOOQ now also supports nesting - JOIN expressions to create more complex table sources. See a - recent blog post on the subject here: - -http://blog.jooq.org/2012/01/15/lets-revise-the-sql-from-clause/ - -Features and improvements -------------------------- -#578 - Add KEY JOIN syntax to simulate joining using generated - foreign keys -#577 - Simulate NATURAL JOIN syntax, where this is unavailable -#582 - Simulate JOIN USING syntax, where this is unavailable -#671 - Allow for nesting JOIN clauses -#676 - Add Table.join() methods to create more flexible table - sources -#993 - Add Field.equalAny(T[]), .equalAny(Field) methods -#1048 - Simulate (array) syntax for dialects - that do not support arrays -#1051 - Add Factory.execute(String, Object...) as a convenience - method for Factory.query(...).execute() -#1055 - Simulate Factory.table(Object[]) and table(List) using - UNION ALL in dialects that do not support arrays -#1060 - Improve debug logging of H2 arrays. The syntax is not - ARRAY[1, 2], but (1, 2) -#1065 - Add OracleFactory.sysContext(String, String) to support - Oracle's SYS_CONTEXT function -#1069 - Add support for INSERT INTO table(field1, field2, ...) - SELECT syntax - as opposed to the existing INSERT INTO - table SELECT -#1072 - Add support for LIKE .. ESCAPE .. syntax -#1074 - Add Field.notBetween(T, T) for convenience -#1080 - Add support for JDBC's Statement.setFetchSize() in - ResultQuery.fetchLazy() -#1082 - Add some more DEBUG logging in AbstractResultQuery - -API changes (backwards-compatible) ----------------------------------- -#1059 - Change SelectFromStep.from(Collection>) to - from(Collection>) - -API changes (backwards-incompatible) ------------------------------------- -#1087 - Change the NTILE function to return Field - instead of Field - -Bug fixes ---------- -#1071 - Make Sequence Serializable -#1081 - Derby error in NULL handling when simulating unnested - arrays that contain NULL values -#1084 - Bind index mismatch in val(null).equal(null) and in - val(null).notEqual(null) -#1091 - Add missing @Support annotations on Table.crossJoin() - methods - -Test cases ----------- -#1026 - Add integration tests for NTILE window function and - document compatibility -#1073 - Add integration tests for NOT IN queries holding NULL - arguments - -Version 2.0.2 - January 8, 2012 -================================================================= - -This is a maintenance release for jOOQ 2.0. The main improvements -include - -- The whole jOOQ API is now annotated with a new org.jooq.Support - annotation to help you assess whether a certain SQL clause is - available in your database or not. This is particularly useful - when your application should support several databases at once - (e.g. MySQL, Postgres, Oracle) -- The Oracle PIVOT clause is now formally supported for advanced - statistical queries in Oracle. This clause will be simulated in - other dialects in the future. -- The DATE data type can be mapped to TIMESTAMP. This important - when you query a legacy Oracle database, where DATE columns - can also contain time information -- Several convenience methods have been added for more fluent - syntax, when using plain SQL result queries, subqueries as - tables, or when unnesting arrays in ANY() and ALL() quantifiers - -Further type mapping support is still experimental. An official -cooperation with MinuteProject for source code generation is -being analysed. With MinuteProject, many source code generation -issues could be addressed centrally, as MinuteProject specialises -in source code generation: - -http://minuteproject.wikispaces.com/ - -Features and improvements -------------------------- -#595 - Add support for Oracle's PIVOT clause -#869 - Add support for using ANY, ALL with arrays, not just with - subselects -#1007 - Formally document the API methods to indicate whether - something is supported by any given SQL dialect -#1011 - Add code generation configuration parameter to avoid - generating @Generated annotation -#1019 - Render LIMIT x OFFSET y also for MySQL, instead of - LIMIT y, x -#1022 - Add missing Sybase ASE implementation for Factory.use() -#1024 - Add Factory.resultQuery(String, Object...) to allow for - arbitrary execution modes of plain SQL queries (lazy, - later, into, array, etc) -#1025 - Add missing SQLite implementation for Factory.deg() and - Factory.rad() -#1033 - Generate table comments into generated Tables.java as - Javadoc -#1040 - Add Object[][] Result.intoArray() and - Object[] Record.intoArray() for convenience. Let - E Record.into(Class) also support array types. -#1041 - Add Table Factory.table(Select) convenience - method for more fluency -#1042 - Add support for DISTINCT keyword in SUM, AVG, MIN, MAX - aggregate functions -#1046 - Generate Ingres table and column comments in generated - source code (only Ingres 10) - -API changes (backwards-compatible) ----------------------------------- -#1050 - Deprecate usage of SOME quantifier in predicates, such as - equalSome() - -API changes (backwards-incompatible) ------------------------------------- -#1036 - Fixed API typo in - WindowsRowsStep.rowsBetweenUnboundedFollwing() -#1037 - The fluent API allows for JOIN clauses without FROM - clause - -Bug fixes ---------- -#1010 - The MERGE INTO .. WHEN NOT MATCHED THEN INSERT .. syntax - may cause type-safety issues in some databases. VALUES - should be converted before binding -#1014 - FindBugs: Latent risk of infinite recursion due to typo - in QueryPartList.retainAll(); -#1015 - FindBugs: 7 occurrences of "Bad attempt to compute - absolute value of signed 32-bit hashcode". In extreme - cases, this could lead to SQL syntax errors -#1016 - The Oracle CONNECT BY cond1 AND cond2 syntax erroneously - creates a WHERE cond2 CONNECT BY cond1 statement -#1028 - Syntax errors when using untyped param() in HSQLDB (and - other strongly typed dialects) -#1029 - Postgres can't bind NULL values in cases, where bind type - is Object.class and bind value was created with - Factory.param() -#1030 - UnsupportedOperationException when calling - Query.bind(int, Object) on a query containing plain SQL - fields -#1031 - Incorrect debug logging when plain SQL QueryParts like - field("?") bind null values -#1032 - Incorrect debug logging when plain SQL QueryParts contain - String literals, such as 'Hello? Anyobody out there?' -#1047 - Field.notEqualAny() erroneously renders <> ALL() - -Test cases ----------- -#1021 - Add explicit integration tests for - LEFT|RIGHT|FULL OUTER JOIN - -Version 2.0.1 - December 23, 2011 -================================================================= - -This is a maintenance release for jOOQ 2.0. The main improvements -include - -- Better integration for using jOOQ with Spring Data. This - includes support for named parameters, as well as allowing to - change bind values on previously constructed Query objects -- The MERGE statement has been enhanced for better integration - with Oracle. -- jOOQ is now ready to use with Scala / Groovy - -For more information about using jOOQ with Scala, see this blog -post: -http://blog.jooq.org/2011/12/11/the-ultimate-sql-dsl-jooq-in-scala/ - -There is now also experimental support for a custom type mapping. -This mapping allows to rewrite data types at code generation time -as well as to specify custom enum data types (e.g. boolean Y/N). -Not all integration tests run smoothly for custom data types, -hence, this feature is not yet fully supported. - -Features and improvements -------------------------- -#691 - Add support for Oracle CURSOR REF IN / INOUT parameters -#677 - Add type-mapping configuration, enforcing types for - columns -#947 - Add custom type mapping support (experimental) -#968 - Allow for custom enum types, configured in the code - generator (experimental) -#974 - Add Schema.getTable(String), getSequence(String), - getUDT(String) for better runtime Schema meta-navigation -#975 - Add Sequence.getName(), getSchema(), getDataType() -#980 - Add support for named parameters, to better interact with - Spring -#991 - Add Query.bind(String, Object) and bind(int, Object) to - easily modify existing bind values -#992 - Document thrown DataTypeException in Convert methods -#998 - Enhance MERGE statement for Oracle extensions: - WHEN MATCHED THEN UPDATE .. WHERE .. DELETE WHERE .. - WHEN NOT MATCHED THEN INSERT .. WHERE .. -#1000 - Add support for MySQL's INSERT INTO .. SET .. syntax in - MERGE statement's WHEN NOT MATCHED THEN INSERT clause - -API changes (backwards-compatible) ----------------------------------- -#981 - Cannot insertInto(table("my_table")), as plain SQL tables - return Table, not Table. Relax - bound on R -#988 - Change Factory.field(String) to return Field - instead of Field -#999 - Make MERGE's WHEN MATCHED .. and WHEN NOT MATCHED .. - clauses optional -#1001 - Identity.getField() should return TableField - instead of Field -#1006 - Add Factory.value(...) as a synonym for Factory.val(...) - for increased Scala / Groovy compatibility - -Bug fixes ---------- -#973 - EnumType renders name() instead of getLiteral() in - formatXXX() methods -#977 - EnumType renders name() instead of getLiteral() in - Convert.convert() method -#979 - Record.from() sets all changed flags to true. That's not - necessarily correct in the event of storing the record - back to the DB -#985 - AbstractRecord.equals() does not correctly compare - arrays. Compare them using Arrays.asList() -#986 - Postgres / DB2 / Sybase ASE foreign-key namespace is - unique-per-table. jOOQ forces all foreign keys from all - tables into the same namespace -#990 - Problems when encoding arbitrary byte[] as String(byte[]) - in inlined SQL. This can cause issues when DEBUG-level - logging is activated -#995 - Routines don't respect SchemaMapping - Github issue #8 -#1002 - TableRecord.storeUsing() doesn't update IDENTITY column - values, if the column is not part of the main unique key -#1003 - Sybase / SQL Server / MySQL / Ingres / H2 / Derby's - INSERT .. RETURNING simulation returns null if a table - has an IDENTITY column, but no primary/unique key -#1005 - The INSERT INTO .. VALUES .. syntax may cause type-safety - issues in some databases. VALUES should be converted - before binding - -Test cases ----------- -#984 - Detach IDENTITY column tests from UNIQUE KEY tests, - create a dedicated test suite instead - -Version 2.0.0 - November 25, 2011 -================================================================= -This release is a fresh start in many areas of jOOQ, adressing -issues that have been requested by users for a long time. These -release notes docment the most important changes, a detailed -upgrade guide, as well as the detailed list of improvements. - -Most important changes ----------------------- -- The API became more static. This applies to many Factory - methods, such as val(), literal(), as well as to many Field - methods that have been moved over to the Factory. For example, - when before, you wrote this using "postfix function notation": - -
    NAME.replace(" ", "_").trim()
    - - you will now write (just as in SQL): - -
    trim(replace(NAME, " ", "_"))
    - - Using static imports of Factory.*, jOOQ makes SQL look even - more like SQL. The current "postfix notation" is maintained for - backwards compatibility. -- By default, jooq-codegen will now generate a "dynamic" meta - model as opposed to the existing static one. Generated tables - covariantly override the as(String) aliasing method, leading - to a much more convenient aliasing style. When before, you - wrote: - -
    -Table parent = T.as("parent");
    -Table child  = T.as("child");
    -Condition join =
    -  parent.getField("ID").equal(child.getField("PARENT_ID"))
    -
    - - You can now write: - -
    -T parent = T.as("parent");
    -T child  = T.as("child");
    -Condition join = parent.ID.equal(child.PARENT_ID)
    -
    - - Of course, the existing notation still works - -- Exceptions are no longer checked. When previously, the DB's - SQLException was propagated to client code, there is now an - unchecked DataAccessException hierarchy, similar to that of - Spring. This will eventually give way to a standardised error - handling abstraction, in future developments. -- Window functions are now constructed from their underlying - aggregate functions just like in SQL. For example: - -
    -sum(AMOUNT)
    -sum(AMOUNT).over().partitionBy(ACCOUNT)
    -
    - - This makes for a more concise API, especially when considering - future extensions, such as Oracle's KEEP (DENSE_RANK FIRST...) - syntax. -- More type safety has been introduced regarding various places - where generic and types are involved. - This is especially true for INSERT / UPDATE / DELETE statements -- Sequences now also have a type -- Unsigned number types are now supported in those databases that - use them. Unsigned numbers are implemented in jOOU, a spin-off - open source project. For convenience, this library is - "internalised" into jOOQ, to avoid adding a dependency - -http://code.google.com/p/joou/ - -Upgrade instructions: ---------------------- -Various of the above changes are incompatible with jOOQ 1.x. In -order to upgrade, please be aware of the following pitfalls: - -- The schema needs to be re-generated. -- Much of the post-fix function notation is replaced by static - methods in the Factory. Today's org.jooq.Field API is - maintained in jOOQ 2.0, for backwards compatibility. It will - be removed, eventually, though. Expect some incompatible - changes, where window functions are involved -- Some Factory instance methods (such as val(), literal()) are - now static. They are compatible, but may cause compiler - warnings. -- The meta model is now an instance model by default. If you - prefer the static meta model, you can configure this in your - jooq-codegen configuration. -- The additional typesafety involving and types may cause - compiler warnings and errors. -- SQLException is no longer part of the API. This can cause - compiler issues, in particular when extending jOOQ -- Some utility classes have moved to org.jooq.tools - -Should these incompatibilities be too significant for your -project, you can still stay on the 1.x branch, which will be -maintained for a while. Be aware that upgrading might be more -difficult, later, though. - -Features and improvements -------------------------- -#55 - Implement improved exception handling -#117 - Improve DSL support for field and table aliasing (decrease - verbosity) -#519 - Add support for MySQL UNSIGNED numeric types -#626 - Create static function access -#661 - Add support for bitwise operators -#718 - Sequences should be mapped to appropriate type (e.g. - SMALLINT, INT, BIGINT, etc) -#734 - Add support for Oracle / SQL Server CUBE() and ROLLUP() - grouping functions -#751 - Add support for Oracle / SQL Server GROUPING SETS() - function -#799 - Add support for Oracle PL/SQL's object-oriented MEMBER - PROCEDURES and MEMBER FUNCTIONS -#804 - Add to Insert, Update, Delete -#835 - Review API typesafety for InsertSetMoreStep - set(Field, T) and similar methods -#890 - Add Factory.selectCount() convenience method -#891 - Let min() max(), etc functions return a new type - AggregateFunction. This type can then be used as an entry- - point for window functions -#892 - Add support for Oracle / SQL Server GROUPING() and - GROUPING_ID() functions to be used along with CUBE() and - ROLLUP() -#893 - Simulate ROLLUP() function for MySQL, using the WITH - ROLLUP grouping modifier -#894 - Move functions from Field to org.jooq.impl.Factory - and make them static -#895 - Add power(..., Field) -#897 - Add (experimental) Spring integration project -#898 - Replace usage of checked SQLException by an unchecked - DataAccessException, similar to that of Spring -#899 - Build jOOQ .jar files as bundles to be deployed into OSGI - environments -#900 - Purge deprecated API - Prior to 2.0 -#901 - Introduce InvalidResultException as a subtype of - DataAccessException for integrity checks in methods like - ResultQuery#fetchOne(), ResultQuery#fetchMap(), etc. -#902 - Make AggregateFunction the base type for constructing - window functions -#904 - Move SQLDialectNotSupportedException into - org.jooq.exception package -#905 - Introduce MappingException as a subtype of - DataAccessException for integrity checks in methods like - ResultQuery#fetchInto(), etc. -#907 - Add missing Field.like(Field), notLike(Field) - methods to overload the existing Field.like(T), notLike(T) -#908 - Change rpad / lpad functions to accept String instead of - char -#912 - Add R newRecord(Table, Object) as - the inverse of various into(Class) methods -#916 - Add > {Record.into(Table) | - Result.into(Table) | ResultQuery.fetchInto(Table) | - Cursor.fetchInto(Table)} -#917 - Add various Cursor.fetchOneInto() convenience methods -#918 - Add CustomTable, CustomRecord as base classes for more - convenience when used with various into(Table) methods -#919 - Allow for accessing non-public constructors of Record - subtypes -#923 - Move some utilities to org.jooq.tools -#924 - Generate a reference to every table in a new Tables.java - class for improved static access -#928 - Add DataTypeException extending DataAccessException in - case something went wrong when converting data types -#930 - Support converting date time types to java.util.Calendar. - This applies to various into(Class) methods, as well as - Result.getValue(xx, Class) -#931 - Allow for conversion between Long and date/time types, and - vice versa -#932 - Let the bound of R in TableRecord extend TableRecord, - in UpdatableRecord to extend UpdatableRecord -#933 - Add support for type Character in Record.into(Class) - methods and similar -#936 - Accept primitive types, such as int.class for type - conversion -#938 - CODEGEN: Add static/instance table field configuration -#939 - Include license.txt and readme.txt in .jar files' META-INF - directory -#953 - Make DefaultGeneratorStrategy methods non-final to allow - for overriding -#954 - Add examples for source code generation of multiple - schemata with Maven -#955 - Generate a reference to every type in a new UDTs.java - class -#957 - Add R Factory.newRecord(UDT) for constructing - attached UDTRecords -#958 - CODEGEN: Add generation-time schema mapping, allowing for - re-writing schemata in jooq-codegen -#960 - CODEGEN: Add code generation configuration parameter to - avoid using the new UByte, UShort, UInteger, ULong wrappers - for UNSIGNED number types -#961 - Use Oracle's SYS.ALL_SEQUENCES.MAX_VALUE to determine the - type of a sequence. -#969 - Add List ResultQuery.fetch(Field, - Class) convenience method - -Bug fixes ---------- -#686 - Reduce the internal API leak by preventing access to - TableFieldImpl, UDTFieldImpl, ParameterImpl -#903 - lag(Field, int, T) erroneously delegates to lead() -#906 - Add more NullPointerException safety to API -#913 - NoClassDefFoundError in JooqUtil.isJPAAvailable() -#920 - Generic type is lost in Cursor.fetchInto(RecordHandler) -#925 - SelectConditionStep should extend SelectConnectByStep, not - SelectGroupByStep -#926 - AbstractRecord.into() fails to convert java.sql.Date into - java.util.Date -#934 - Don't consider static members in reflection utilities when - used with Record.into(Class) and similar methods -#935 - Don't consider final member fields in reflection utilities - when used with Record.into(Class) and similar methods -#937 - In the event of name clash (same name for table and field) - generated code has errors -#945 - Calling UpdatableRecord.setValue() twice with the same - argument causes the changed flag to be reset to false -#948 - Always set the changed flag to true in Record.setValue() -#959 - Compilation errors in generated source code if MySQL enum - values match Java reserved words, such as 'true', 'false', - 'new', etc... -#962 - Postgres ordering of generated enum literals is unstable -#967 - Better document type conversion - -Version 1.7.0 - November 25, 2011 -================================================================= -This is a maintenance release for the 1.x branch. Some important -bug fixes are merged from version 2.0. These include: - -Bug fixes ---------- -#925 - SelectConditionStep should extend SelectConnectByStep, not - SelectGroupByStep -#926 - AbstractRecord.into() fails to convert java.sql.Date into - java.util.Date -#937 - In the event of name clash (same name for table and field) - generated code has errors -#945 - Calling UpdatableRecord.setValue() twice with the same - argument causes the changed flag to be reset to false -#948 - Always set the changed flag to true in Record.setValue() -#951 - Empty Password for jooq-codegen-maven causes NPE - -Version 1.6.9 - November 7, 2011 -================================================================= -This is a maintenance release for the 1.x branch. Developments -on this branch will stop after version 1.6.9. Only important bug -fixes are merged to this branch. Developments for release 2.0 -have started. - -The most important functionality in release 1.6.9 is the newly -added support for JDBC batch operations. You can now batch -execute several queries. - -See the official blog for more information: -http://blog.jooq.org/2011/10/25/jdbc-batch-operations-with-jooq/ - -Features and improvements -------------------------- -#621 - Add support for JDBC batch operations -#794 - Add support for ORDER BY [int value] in order to reference - a column index for sorting -#882 - Optimise Field.isTrue() and isFalse(). Take Field's data - type into consideration. -#885 - Add support for INSERT INTO .. VALUES (..) syntax, - omitting explicit field declarations -#887 - Add List Cursor.fetchInto(Class) - -Bug fixes ---------- -#748 - H2 regression in 1.3.158 regarding stored functions, which - return a ResultSet (this was fixed in H2) -#859 - Derby casting of numeric types to BOOLEAN doesn't work -#886 - Regression in date extract function when used in a - subselect -#888 - Derby casting of VARCHAR to FLOAT (and similar) doesn't - work - -Version 1.6.8 - October 22, 2011 -================================================================= -The main improvement of this release is the re-design of the -stored procedure / function API. With 12 supported RDBMS, which -all have their own idea about what is a stored procedure and what -is a stored function, it has proven to be a better design, to -unite them in one single type: org.jooq.Routine. A routine can -have a return value as well as OUT parameters. It can be embedded -in SQL and used as a field or a table. - -This means, you will need to re-generate your database schema, -when upgrading to jOOQ 1.6.8. After re-generation, you'll need to -fix your client code. These are the package changes: - -- [generated.package].procedures > [generated.package].routines -- [generated.package].functions > [generated.package].routines -- [generated.package].Procedures > [generated.package].Routines -- [generated.package].Functions > [generated.package].Routines - -Oracle generated packages are not re-located. With these -improvements, using stored procedures and functions becomes even -more reliable, especially when cursor types are involved. Read -more about the rationale behind this change: - -http://blog.jooq.org/2011/10/17/what-are-procedures-and-functions-after-all/ - -Apart from that, important improvements have been made in the -area of plain SQL tables. Also, consider a demo integration of -jOOQ with Google Cloud SQL: - -http://blog.jooq.org/2011/10/22/jooq-and-google-cloud-sql-example/ - -Features and improvements -------------------------- -#271 - Don't pre-fetch table meta data when selecting from plain - SQL tables -#489 - Add support for SELECT * (i.e. render SELECT * where - applicable) -#596 - Add support for VARIANCE() and STDDEV() OVER() window - functions -#608 - Add jOOQ version number in generated source code -#670 - Add more Javadoc to Field.xxx() functions -#692 - Add support for ResultSet type returned from HSQLDB - stored functions -#850 - Use http://www.jooq.org as URL for the @Generated - annotation -#854 - Add convenience methods Fields.isTrue(), isFalse() for - conversion of "Y", "YES", "1", "true", "on", etc into a - boolean condition -#870 - Add support for MEDIAN aggregate function -#872 - Add support for STDDEV_POP(), STDDEV_SAMP(), VAR_POP(), - VAR_SAMP() aggregate functions -#874 - Reduce the number of internal classes for dialect-specific - function aliases -#878 - Implement DataType.equals() and hashCode() - -API changes (backwards-compatible) ----------------------------------- -#851 - Change Field.{sortAsc|sortDesc}(List sortList) into - Field.{sortAsc|sortDesc}(Collection sortList) - -API changes (backwards-incompatible) ------------------------------------- -#848 - Purge deprecated API - Prior to 1.6.1 -#849 - Replace Cursor.fetchResult() by Cursor.fetch() -#852 - Review stored procedures / functions concept. Merge them - all into a single "Routine" type - -Bug fixes ---------- -#756 - Error when aliasing HSQLDB and Postgres unnested tables -#761 - Exception when TRACE logging execution with plain SQL - tables involved -#773 - Execute standalone stored functions as CallableStatement - to prevent issues with transactions -#847 - Query.getSQL() doesn't render dialect-specific SQL when - Query is constructed using the fluent API -#853 - DB2 generated convenience methods for stored functions - have unstable ordering -#857 - Derby casting of numeric types to String / VARCHAR does - not work -#858 - SQLDataType.getSQLDataType() should return itself, instead - of null -#860 - SQLite CEIL function is incorrectly simulated. CEIL(2.0) - returns 3.0 instead of 2.0 -#861 - Field.replace(String) generates bad SQL for various RDBMS. - Field.replace(String, String) works, though -#863 - Ingres integration generates illegal SQL when selecting - things like SELECT 1 WHERE 1 = 1 -#866 - Sybase ASE Field.replace(String) function incorrectly - removes the argument string -#873 - Error when selecting two times the same aggregate field -#877 - Compilation error in generated source code when a table - without a primary key has an identity column -#879 - Add Google Cloud SQL Example -#880 - Query.getSQL() does not consider SchemaMapping - -Test cases ----------- -#811 - Loader integration tests fail for SQLite -#812 - CSV Loader test leaves Postgres JDBC connection in an - inconsistent transactional state on error -#856 - Add integration tests for Field.abs() -#865 - Add integration tests for Field.ascii() -#867 - Add integration tests for Field.sum(), avg(), max(), min() -#881 - Re-design H2 stored functions to be pre-compiled, in order - to speed up integration tests - -Version 1.6.7 - September 25, 2011 -================================================================= - -This release coincides with the launch of the new website at -http://www.jooq.org. Hence, it ships with little additions to the -deliverable itself. - -Apart from new convenience methods, the main addition is a Maven -plugin for jooq-codegen contributed by Sander Plas. - -Features and improvements -------------------------- -#797 - Create Maven plugin for source code generation -#825 - Add List> Factory.fetchMany(String) to - allow for fetching several result sets from stored - procedures, such as Sybase ASE's "sp_help" -#838 - Implement MetaDataFieldProvider.toString() -#841 - Add List Result.getValues(Field, Class) -#842 - Add Query.getBindValues() method to allow for extracting - bind values in the correct order -#843 - Add Factory.fetch(ResultSet) to transform a JDBC ResultSet - into a jOOQ Result - -API changes (backwards-compatible) ----------------------------------- -#837 - Avoid final keyword on Object methods, such as .equals(), - .hashCode(), etc - -Bug fixes ---------- -#836 - Bad syntax when selecting from aliased plain SQL tables -#839 - Boolean conversion in getValueAsBoolean() should trim - String values first -#840 - Numeric conversions in getValueAsXXX() should trim String - values first -#844 - NullPointerException when selecting a column from a Result, - that does not exist - -Version 1.6.6 - September 11, 2011 -================================================================= - -Finally, support for another RDBMS has been added. Sybase's other -important product Sybase Adaptive Server Enterprise (or simply -Sybase ASE) is now officially supported by jOOQ - -Apart from this, there had been important improvements with the -recently added INSERT .. RETURNING clause, as well as some fixes -related to DECIMAL / NUMERIC data types - -Features and improvements -------------------------- -#796 - Complete missing public org.jooq.impl Javadoc -#800 - Add support for Sybase Adaptive Server Enterprise -#808 - Add support for INSERT .. RETURNING for Ingres -#809 - Add support for INSERT .. RETURNING for Sybase SQL - Anywhere using SELECT @@identity -#810 - Add support for INSERT .. RETURNING for SQLite using - last_inserted_rowid() -#813 - Add DSL support for INSERT .. RETURNING -#814 - Change TableRecord to reload its trigger-initialised main - key in Oracle and other RDBMS that don't support IDENTITY - columns -#818 - Add SQLiteFactory.rowid() -#819 - Support SQLite AUTOINCREMENT columns as IDENTITY -#820 - Add Factory.fetchOne(String) for executing plain SQL - queries that return single records -#826 - Allow for returning several records in the INSERT .. - RETURNING clause. This now works for DB2, HSQLDB, MySQL, - and Postgres -#827 - Support Sybase SQL Anywhere's TOP n START AT m clause - instead of simulating it with nested SELECT's - -API changes (previous API now deprecated) ------------------------------------------ -#817 - Deprecate Factory.lastID(Identity) - -Bug fixes ---------- -#815 - SQL Server fetching of IDENTITY value is broken -#821 - Optimise ResultQuery.fetchAny() executing fetchLazy() - internally, and only fetching one record from the cursor -#822 - Let Constant cast to more precise NUMERIC/DECIMAL types - in those RDBMS where casting is necessary -#823 - Cannot bind SQLite BigDecimal, BigInteger types - bind - them as String instead -#824 - BigInteger values cannot be bound in DB2, Derby -#828 - Document inefficient implementation for GREATEST and LEAST - in some RDBMS - -Version 1.6.5 - August 28, 2011 -================================================================= - -This release finally adds a loader for CSV data to jOOQ. You can -now load CSV data using a simple fluent API, configuring error -handling, duplicate behaviour and transaction handling, as well -as various CSV parameters. - -This release also changes the way generated keys are retrieved -after INSERT's. Instead of (potentially inconsistently) running -SELECT MAX(pk) immediately after the INSERT, Postgres' INSERT.. -RETURNING clause is used (or simulated), in a single statement. - -Features and improvements -------------------------- -#784 - Add Result.exportXML() to retrieve a DOM document similar - to that of .formatXML() -#792 - Add support for loading of CSV data into tables -#795 - Add List fetch(int, Class) and - fetch(String, Class) convenience methods -#803 - Add support for INSERT .. RETURNING or simulate it where - not available -#805 - Add T[] fetchArray(int, Class) and - fetchArray(String, Class) convenience methods -#806 - Add T fetchOne(int, Class) and - fetchOne(String, Class) convenience methods - -Bug fixes ---------- -#798 - Oracle IN (...) clause with more than 1000 arguments does - not work -#802 - Use "INSERT .. RETURNING" instead of "SELECT MAX(pk)" - to retrieve the primary key of a new record - -Version 1.6.4 - August 07, 2011 -================================================================= - -This release ships with a couple of useful concepts inspired by -other frameworks. These are: - -- selecting into custom POJO's. Results can be mapped to POJO's - by convention or using JPA @Column annotations -- selecting into custom callbacks. This is already a wide-spread - practice in Spring JdbcTemplates. -- selecting long-running queries asynchronously. This idea has - been inspired by the Avaje Ebean framework - -Apart from these changes and some bugfixes, the internal API has -been completely re-designed. The idea here is that query -rendering and variable binding are even faster (less String -objects), more extensible and more accurate. This is a pre- -requisite for many future developments with even more complex SQL -statements, such as for instance CTE's (Common Table Expressions) - -Features and improvements -------------------------- -#137 - Add support for asynchronous query execution using - FutureResult ResultQuery.fetchLater() similar to - Avaje Ebean -#198 - Add SELECT INTO functionality into POJO's using - T ResultQuery.fetchInto(Class) similar to JPA - CriteriaQuery -#728 - Add .fetchInto(RecordHandler) to ResultQuery, Result, - and Cursor to allow for callbacks similar to Spring's - JdbcTemplate/Ollin Framework -#774 - Add more TRACE logging to .fetchLazy() -#777 - CURSOR: Add function alias: UNNEST for TABLE -#781 - Add E function (Euler number) -#782 - Add T Record.getValue(..., Class) methods - for convenient type conversion -#785 - Allow for storing TableRecord with a provided Field[] - indicating the primary key -#786 - Document thread-safety facts in Factory Javadoc -#788 - Add Key.getFieldsArray() convenience method -#793 - Add support for Oracle's SYS_CONNECT_BY_PATH function - -API changes (backwards-incompatible) ------------------------------------- -#758 - Change internal QueryPart rendering and binding API to use - Configuration and Context as callback parameters. If you - use CustomField or CustomCondition, please correct your - implementations accordingly. Other parts of the API should - not be affected -#778 - Purge deprecated API, deprecation prior to jOOQ 1.5.7 -#790 - Purge deprecated generated code, deprecation prior to - jOOQ 1.5.7 - -API changes (previous API now deprecated) ------------------------------------------ -#776 - Deprecate QueryPart.getSQL(), add Query.getSQL() -#789 - Deprecate Record constructors with Configuration - parameter - -Test cases ----------- -#636 - Add integration tests for more advanced CONNECT BY - example -#772 - Add integration tests for selecting cartesian products - (several tables in FROM clause) - -Bug fixes ---------- -#730 - Sybase cannot bind null values in plain SQL -#759 - Omit the TOP 100 PERCENT clause in SQL Server ordered - top-level queries -#767 - An empty Java package is generated for PL/SQL packages - containing underscores -#771 - Some exotic literals are not properly escaped with quotes - yet, e.g. UDT identifiers, VARRAY types, etc. -#775 - Automatic re-attaching after deserialisation does not work - when used with .fetchLazy() -#787 - The UpdatableRecord's internal changed flags are not - updated after INSERTs / UPDATEs - -Version 1.6.3 - July 31, 2011 -================================================================= - -This is mainly a maintenance release with lots of bugfixes, -mostly around code generation, plain SQL tables, and data types. -Please note that generated source code may contain incompatible -changes due to #639 (see below for details)! - -Apart from that, project CURSOR is advancing and it is now -possible to unnest arrays into tables. See this article for -details about where jOOQ is heading with project CURSOR: - -http://blog.jooq.org/2011/07/24/the-power-of-ref-cursor-types/ - -Features and improvements -------------------------- -#679 - Improve H2 NVL2 support as of H2 1.3.156 -#680 - Improve H2 ROUND support as of H2 1.3.156 -#735 - Add README documentation to GitHub -#736 - Add more info regarding number of generated artefacts in - jooq-codegen logging -#750 - Add DataType.isNumeric(), .isString(), .isTemporal(), - .isBinary() -#754 - Log query as executed by JDBC PreparedStatement when - TRACE logging (without inlining variables) -#752 - CURSOR: Add support for selecting from ARRAY types -#762 - Use H2's native support of NVL, instead of COALESCE -#764 - CURSOR: Add support for selecting from ARRAY types - returned from stored functions - -API changes (backwards-incompatible) ------------------------------------- -#639 - Map DECIMAL(n, 0) and NUMBER/NUMERIC(n, 0) data types - to Byte/Short/Integer/Long/BigInteger instead of - BigDecimal in generated source code. Re-generated code - will not be compatible! - -API changes (previous API now deprecated) ------------------------------------------ -#731 - Inconsistent API with Field.lessOrEqualToXXX(). Removed - "To" from method name -#757 - Deprecate Factory.constant() methods - -Test cases ----------- -#731 - Add missing integration tests for equalAll(), equalSome() - and similar methods -#747 - Upgrade H2 to 1.3.158 - -Bug fixes ---------- -#632 - Sybase error : column @p0 not found in nested SELECT -#700 - Restore HSQLDB ARRAY support with INFORMATION_SCHEMA - change in HSQLDB 2.2.3, and some fixes in 2.2.5 -#725 - Cannot insert byte[] data with plain SQL -#733 - H2 changed JDBC type for ResultSet/CURSOR from 0 to -10, - like Oracle -#737 - Compilation errors in generated source code if table - fields contain spaces -#738 - Compilation errors in generated source code if MySQL - procedure parameter type contains two comma-separated - arguments (like DECIMAL(10,2)) -#739 - Postgres navigator methods and keys are not re-generated - in the same order -#740 - Formatting is broken on Result.format() with some special - newline characters -#743 - Make SQL Server INFORMATION_SCHEMA independent from - HSQLDB again, to prevent incompatibility issues -#744 - Ingres REAL and FLOAT4 types are generated as FLOAT/FLOAT8 - which maps to java.lang.Double, instead of java.lang.Float -#753 - Postgres error when binding array that contains null - values -#755 - NullPointerException when converting an array containing - a null value -#766 - Bad decoding of JDBC Types BIGINT (to BigInteger instead - of Long) and REAL (to BigDecimal instead of Float) when - plain SQL tables are involved - -Version 1.6.2 - July 10, 2011 -================================================================= - -This release mainly introduces three new projects. - -Project CURSOR where jOOQ finally supports various RDBMS's TABLE, -CURSOR, and REF CURSOR data types. This is especially useful when -those types are returned from stored procedures and functions. -Cursors are simply mapped to jOOQ Result types and can -thus be used like regular table results - -Project EXPORT aims at exporting data from the database in -various serialisable formats, such as XML, CSV, HTML, Text, JSON. -This project will be continued in the future, to also -deserialise from (some of) these data streams. This will allow -for easy transport of jOOQ Result types over the net. - -Project CODEGEN has finally been started. Many improvements -suggested by jOOQ users will be implemented in the next releases. -In this release, important fixes have been made to prevent -compilation errors in generated artefacts. - -Features and improvements -------------------------- -#61 - EXPORT: Add Result.formatXML() -#166 - CURSOR: Add support for ResultSet type returned from - Oracle stored procedures / functions -#411 - Allow for fetching Map (instead of Record) - and List> (instead of Result) -#549 - Add Factory.function() for plain SQL functions -#611 - Simulate RPAD and LPAD in SQL Server, Sybase -#627 - Add support for Postgres FOR UPDATE OF [table-name] clause -#628 - Add support for REPEAT (SQL Server: REPLICATE) function -#637 - Nicely format time in StopWatch logging output -#640 - Simulate Postgres FOR UPDATE OF [table-name] clause in - other dialects -#649 - CURSOR: Add Cursor.fetch(int) .fetchOne() - .fetchResult(int) .fetchResult() -#653 - Add support for MySQL encryption and compression functions -#660 - Clarify Javadoc of UpdatableRecord to explain its - behaviour when changing the main unique key -#669 - EXPORT: Add Result.formatHTML() -#672 - Add convenience method UpdatableRecord.copy() in order to - reset primary key values for a subsequent INSERT -#675 - EXPORT: Add Result.formatCSV() -#683 - Implement ResultImpl.equals() and .hashCode() -#684 - Implement AbstractStore.equals() and .hashCode() -#685 - Add Store.size() to indicate the maximum index of the - Store -#687 - EXPORT: Add result.formatJSON() -#689 - Create separate builds: jooq-core.zip and - jooq-with-dependencies.zip -#690 - CURSOR: Add support for ResultSet type returned from H2 - stored functions -#695 - CURSOR: Add support for ResultSet type returned from - Postgres stored functions -#697 - Add Factory.fetch(String) for executing plain SQL queries - that return results -#701 - Add ResultQuery.fetchArray() and .fetchOneArray to return - Object[][] and Object[] -#704 - Always add top and bottom line in Result.format() -#705 - Right-align numeric values in Result.format() -#716 - Add SUBSTRING function Field.substring(Field, Field) - taking fields as arguments -#719 - Document risk of SQL injection in plain SQL and literal - factory methods -#726 - Add LENGTH function as a synonym for CHAR_LENGTH - -API changes (backwards-compatible) ----------------------------------- -#698 - Inconsistent API with Factory.fetch(Table [,Condition]) - Let method return Result instead of List -#699 - Let Result extend List - -API changes (previous API now deprecated) ------------------------------------------ -#656 - Decrease verbosity of plain SQL methods. They will just be - called Factory.field() .condition() .table() .query() - -Test cases ----------- -#643 - Add integration test for code generation of invalid and - incomplete types in Oracle -#654 - Add integration tests for master data tables with PK types - other than NUMBER/INT -#655 - Add missing integration tests for TRIM function - -Bug fixes ---------- -#450 - Improve plain SQL integrity checks for bind variables -#610 - CODEGEN: Compilation error in generated source code for - databases with table named 'system' -#646 - An empty Java package is generated for an empty PL/SQL - package. This is unnecessary -#651 - CODEGEN: Avoid importing datatypes in generated source - code to prevent collisions -#657 - NullPointerException when creating a Factory with a null - SchemaMapping -#658 - Master data table code generation is broken for tables - with more or less than 3 columns -#662 - Add support for the missing Postgres data type "bpchar" -#663 - Add support for the missing Sybase data type "int" -#664 - Ingres INTEGER data types are not correctly generated -#665 - HSQLDB Datatype CLOB and BLOB are not supported, when - selecting from plain SQL tables -#666 - The evil bug: Ingres TRIM function only executes RTRIM -#673 - UpdatableRecord.store() doesn't work if called after - .delete() -#702 - Add support for the missing SQLite data type "NULL" -#706 - CURSOR: Ensure that Query.execute() runs in a single - transaction when Postgres refcursor is involved in the - query (this fixes a Postgres JDBC driver flaw) -#724 - NullPointerException when passing a single literal null - bind value to plain SQL methods without casting to Object -#729 - DB2, Derby, Ingres, Oracle cannot bind null values in - plain SQL - -Version 1.6.1 - June 19, 2011 -================================================================= - -In this release, the PORTABILITY project has been implemented. -Finally, the SQLDialect has been removed from most generated -artefacts (Schema, Table, Field, Sequence, etc). Also, the -constructing Factory is not referenced by its created QueryParts -anymore, unless this is really necessary (Query objects, UDT's, -ARRAY types). This leads to higher compatibility between schemata -of different databases, e.g. if users want to use an HSQLDB -development and Oracle productive database. - -Unfortunately, this means that the way stored procedures are -called had to be changed. This is an API break that could not be -avoided. The pre-1.6.1 StoredObject.execute(Connection) method -is deprecated and will be removed in the future. It has been -replaced by StoredObject.execute(Configuration) - -In addition to this project, many more window functions are now -supported, as well as the Oracle-specific CONNECT BY clause for -recursive queries. - -Features --------- -#351 - Add support for Oracle ROWID data type -#452 - PORTABILITY: Create a super-set of RDBMS data types -#453 - PORTABILITY: Don't create dialect-specific QueryParts -#455 - Add support for the Oracle CONNECT BY clause -#587 - Add optional OFFSET clause to form LIMIT .. OFFSET - constructs -#589 - Add extended FOR UDPATE [OF ...] [{WAIT n | NOWAIT | SKIP - LOCKED }] support -#591 - Add support for LEAD() OVER() and LAG() OVER() window - functions -#592 - Add support for the CUME_DIST() OVER() window function -#601 - Add Factory.literal() convenience methods -#602 - Add Factory.val() methods to decrease .constant() - verbosity -#604 - Add support for RESPECT NULLS clause in some window - functions -#605 - Add Factory.use(String) for non-generated schemata -#613 - Add PI function -#616 - Add Factory.two() literal convenience method -#630 - Add support for Oracle CONNECT BY pseudo-columns LEVEL, - CONNECT_BY_ISCYCLE, CONNECT_BY_ISLEAF - -API changes ------------ -#299 - PORTABILITY: Create a dialect-independent meta-model -#588 - Add OVER() keyword to FIRST_VALUE() and LAST_VALUE() API - -Test cases ----------- -#368 - Add integration test for use with schema mapping -#586 - Upgrade H2 to 1.3.155 -#607 - Add integration tests for CRUD / SP's / UDT's / ARRAY's - with SchemaMapping -#612 - Add integration tests for LPAD and RPAD functions -#624 - Add integration test for code generation of invalid/ - incomplete views in Oracle -#631 - PORTABILITY: Add integration tests for using Oracle- - generated schema against an HSQLDB database -#638 - Add missing integration test for DECIMAL data type - -Bugfixes --------- -#176 - Stored procedures / functions in EQUIVALENT schemata - cannot be called -#493 - Bind variable mismatch when constructing bad SQL -#594 - Confusing Javadoc in SELECT DSL API -#603 - Fix DB2 'IGNORE NULLS' clause -#619 - SUBSTRING() function is broken in DB2, Ingres, SQL Server -#623 - SQL syntax error for some MERGE queries in SQL Server and - Sybase -#633 - SchemaMapping is not applied to sequences -#634 - Sequences are not escaped in generated SQL - -Version 1.6.0 - June 05, 2011 -================================================================= - -Apart from supporting various additional standard and non- -standard JOIN constructs, there is now also full support for the -SQL standard MERGE statement and MySQL's ON DUPLICATE KEY variant -thereof. A great number of API enhancements have been added, -which improve the usability of jOOQ. The Ingres database is now -also supported. - -Features --------- -#301 - Add support for Oracle execution hints -#409 - Add support for NATURAL JOIN syntax, where RDBMS allows it -#415 - Make fluent API's underlying SelectQuery objects publicly - available -#429 - Add Ingres support -#475 - Document class-level generic types and in Javadoc -#486 - Add support for SQL MERGE clause -#494 - Allow for omitting schema name in generated SQL -#496 - Automatically update IDENTITY values in UpdatableRecord, - after storing them -#520 - Add support for JOIN ... USING syntax -#524 - Upgrade HSQLDB to 2.2 -#533 - Add ORDER BY [Map] or BY [List] functionality -#534 - Add Result.isEmpty() -#535 - Call upon ConfigurationRegistry.provideFor() before - throwing a DetachedException -#536 - Simulate CASE [value] WHEN [value] THEN [result] END - syntax in Derby -#538 - Add some logging to ConfigurationProvider -#539 - Add possibility to negate numeric values with Field.neg() -#541 - Add support for MySQL ON DUPLICATE KEY clause -#542 - Allow for Collection arguments in INSERT's DSL API -#543 - Allow for creating FUNCTION() OVER() without PARTITION BY - or ORDER BY clause -#546 - Add Factory.use(Schema) -#548 - Add new internal type FieldMap -#550 - Simulate ON DUPLICATE KEY INSERT clause in dialects other - than MySQL -#551 - Add TableMapping, similar to SchemaMapping for mapping - tables -#553 - Add Factory.plainSQLQuery -#554 - Add Factory.plainSQLField with a DataType parameter -#555 - Add UpdateXXX.set(Map) convenience methods to DSL API -#557 - Enhance INSERT DSL API to allow for adding VALUES clause - with InsertXXX.set() syntax -#570 - Add support for the RAND() function -#567 - Add support for Ingres Sequences -#572 - Add support for the ATAN2() function -#573 - Add possibility for additional select() clauses for - convenience -#575 - Add support for the FULL OUTER JOIN syntax, where RDBMS - supports it -#576 - Add support for the CROSS JOIN syntax, where RDBMS - supports it -#581 - Enhance API and allow Collection> - instead of Collection> - -API changes ------------ -#397 - Purge deprecated API - -Bugfixes --------- -#481 - Handle case where an empty record is stored -#522 - Misleading Javadoc in generated stored procedures and - function constructors -#532 - Restore Postgres INFORMATION_SCHEMA -#537 - Prevent null from being added to QueryPartList -#540 - Error when TRACE logging Limit -#544 - Aliased elements are not bound correctly when rendered - with toSQLReference() -#559 - Loosen type safety on overloaded methods to prevent - compilation errors with javac/Netbeans -#560 - HSQLDB DataType REAL is configured incorrectly -#565 - Add integration tests for current_user() function -#569 - ORA-01427 when generating foreign key relations -#571 - Field.trim() not correctly implemented for SQL Server -#583 - Accelerate integration tests: Reset schema only if - necessary - -Version 1.5.9 - May 15, 2011 -================================================================= - -This version ships with lots of new functionality. Finally, the -DSL-style API has been extended to CRUD operations (INSERT, -UPDATE, DELETE)! Also, support for the TRUNCATE TABLE statement -has been added. - -The most important new features include the support for SQL:2003 -standard window functions, which are available in most major -RDBMS. Additionally, basic function support has been widely -extended. - -Features --------- -#148 - Added support for window functions -#204 - Add support for multi-record INSERT's -#416 - Added support for retrieval of IDENTITY values -#433 - Use bind variables for LIMIT and OFFSET -#441 - Added foreign key relationship meta information to the - generated source code -#446 - Beautify ResultImpl.toString() method -#461 - Automatically cast CONCAT parameters to Field if - necessary -#463 - Added support for trigonometric functions -#471 - Added support for the sign function -#472 - Added support for GREATEST/LEAST functions -#474 - Added support for "hyperbolic" functions SINH, COSH, TANH, - and COTH -#482 - Added DSL API for INSERT statements -#483 - Added DSL API for UPDATE statements -#484 - Added DSL API for DELETE statements -#485 - Added "Registry" for client code to provide Configurations - to jOOQ Attachables -#490 - Added support for the TRUNCATE TABLE statement -#495 - Generate source code for IDENTITY columns -#501 - Added support for boolean conversion to Result, Record, - and Store -#503 - Allow for schema navigation via generated artefacts -#518 - Let stored procedures reference owner package - if applicable -#525 - Added NULLS {FIRST | LAST} clause to ORDER BY constructs -#528 - Added Factory.getDataType() convenience method -#530 - Added Factory.zero() and Factory.one() convenience methods - -API changes (jooq) ------------------- -#527 - Weakened type-safety on Field.nvl2() -#529 - Deprecated Factory.select(Object...), added .selectOne() - and .selectZero() instead - -API changes (jooq-meta) ------------------------ -#30 - Add ParameterDefinition for stored procedures, instead of - reusing ColumnDefinition -#499 - Add reference to TableDefinition in ColumnDefinition -#500 - Add AttributeDefinition for UDTDefinition, instead of - reusing ColumnDefinition - -Bug fixes ---------- -#369 - Adapt H2 relations generation to H2's correction of - information_schema.cross_references -#435 - Added integration tests for NESTED SELECTs holding LIMIT - clauses -#460 - Syntax error when using a field with a reserved name -#462 - Fixed Javadoc broken links -#473 - Don't cast when cast is unnecessary -#479 - INSERT statement should not set all fields for a table -#497 - Derby referential code generation is broken, for named - foreign keys -#498 - Oracle package content is generated in arbitrary order -#502 - Syntax error when creating an empty IN condition -#526 - Corrected Javadoc in Field.coalesce() - -Version 1.5.8 - April 29, 2011 -================================================================= - -Finally, jOOQ now supports two important new RDBMS: -SQL Server and Sybase! - -Apart from this great enhancement, there is now also full support -for the non-SQL standard LIMIT clause, even in dialects where the -LIMIT clause is not supported natively (especially Oracle, but -also DB2, SQL Server and Sybase, which have limitations). jOOQ -simulates LIMITs by rendering nested selects filtering on ROWNUM -(Oracle) or on ROW_NUMBER() (DB2, SQL Server and Sybase). - -Other interesting additions are an increasing support for native -mathematical functions. More function support will be added in -future versions. - -Features --------- -#16 - Added support for SQL Server -#21 - Uniform implementation of the LIMIT clause. Implemented - LIMIT clause simulation through analytic functions, where - LIMIT is not supported natively -#97 - Added support for Sybase -#418 - Measure time of various steps in source code generation -#420 - Added support for proprietary SQL extensions "FOR UPDATE" - and "FOR SHARE" -#431 - Added additional statistics to generation log files -#432 - Unified the various "standard" ANSI INFORMATION_SCHEMA - implementations in the jooq-meta artefact -#436 - Added support for the modulo function -#438 - Added floor and ceil functions -#439 - Added support for mathematical functions (logarithms, - exponentials, sqrt) -#447 - Enhanced Field.add() and Field.subtract() to work for date - time fields, also - - -API changes ------------ -#428 - Created new Maven artefact jooq-meta to cleanly separate - database meta-data navigation from code generation -#458 - Decreased DSL verbosity for arithmetic operations and for - ordering - -Bug fixes ---------- -#417 - Restored warning when unknown column type is encountered - in source code generation -#419 - Corrected misleading Select.fetchOne(...) Javadoc -#421 - Optimised AbstractRecord's memory consumption -#448 - Corrected some Javadoc @see links -#449 - Changed Field.concatenate() to accept Field parameters - to avoid generic varargs warnings - -Version 1.5.7 - April 17, 2011 -================================================================= - -This is the first release built with support of Maven thanks to -the help of some jOOQ users! - -The main new features in this release are the improved support -for serialisation/deserialisation of jOOQ objects through use of -the newly introduced "Attachable" interface. - -If using log4j or the newly supported slf4j logging framework -in debug/trace mode, there is the possibility to log query -building/execution time statistics. - -Apart from these new features, fixes were mainly done in the -fields of type casting, HSQLDB 2.1 upgrade support, stored -procedures with OUT, IN/OUT parameters. Please upgrade, if you -are using any of those features. - -If you extend jOOQ as a base implementation for source code -generation, be aware of the fact, that the jOOQ-codegen is -currently undergoing major changes. Expect the code generation -API to stabilise again in one of the next releases. - -Features --------- -#104 - Added maven dependency -#248 - Integrate UDT types with ARRAYs -#295 - Allow for attaching/detaching UpdatableRecords to/from - Configurations -#359 - Added statistics measurement to Query execution for debug - log level -#362 - Added deprecation configuration flag -#364 - Document unknown type in generated source code -#373 - Improve exception handling in code generation -#378 - Added support for Oracle stored functions with OUT - parameters -#382 - Added Factory.attach() methods to re-attach deserialised - Attachables -#394 - Add logging support for SLF4J -#398 - Allow to provide a DataType in Factory.constant() -#399 - Provide access to TypeUtils.convert() methods via DataType -#404 - Added trace logging for measuring the speed of various - query execution steps - -API changes ------------ -#358 - Enhanced DSL API to allow for HAVING clauses without - GROUP BY clauses -#367 - Make Store, Result, QueryPart "Attachable" -#374 - Introduce strategy pattern to code generation for future - support for advanced naming schemes -#375 - Decouple Database from Generator -#381 - Made DataType Serializable -#384 - Deprecated singleton QueryParts -#388 - Unify "internal" API using an Adapter pattern - -Bug fixes ---------- -#187 - Protect generated Record navigation methods against name - clashes -#266 - Added more thorough integration tests for dialect-specific - casting (including some fixes related to varchar types) -#360 - Added more integration tests for the DISTINCT clause -#361 - Add more checks in testInsertUpdateDelete() -#366 - Warn only once per ColumnDefinition, if a data type is - unknown -#377 - NullPointerException when generating invalid stored - function -#380 - Added integration tests to check for proper - serialisability -#386 - Fixed incompatibilities with HSQLDB 2.1.0 -#387 - Fixed unnecessary imports in some Oracle generated - Records -#389 - Fixed javac compiler warning in AbstractStoredObject -#391 - Cannot properly call stored procedures when IN/OUT - parameter is bound to NULL -#392 - Procedures with several OUT parameters may not register - OUT parameters correctly -#410 - Passing null VARRAY values to Oracle stored procedures - causes issues -#412 - limit(int) sets default offset incorrectly in some - dialects - -Version 1.5.6 - March 31, 2011 -================================================================= - -This release consists mainly of code generation bug fixes and -minor API improvements and enhancements. - -The most important improvement is ticket #90, by which lazy -fetching and iteration over data is now supported. jOOQ lets you -keep a reference to a Cursor that has an open JDBC ResultSet, to -fetch data from on-the-fly. - -A few major code generation bugs were reported where the -generated code may cause ambiguity due to an inconsistent API. -This means that you will have to re-generate your schema after -upgrading to version 1.5.6. Some of your code may not compile -anymore, after this upgrade. - -Features --------- -#90 - Added possibility for lazy fetching of data -#208 - Added convenience methods for direct invocation of - sequences' currval() and nextval() attributes -#212 - Created one factory per dialect for better separation of - dialect-specific support -#213 - Generate a factory for each schema -#251 - Opened up base implementations for Field and Condition - to allow for custom implementations by client code -#274 - Integrate H2 ARRAY types with stored procedures -#292 - Documented usage of log4j and java.util.logging -#306 - Added support for the NULLIF function -#319 - Added Field.between(Field, Field) method -#320 - Added trace logging for variable binding and SQL - generation methods -#323 - Added Field.in(Field...) method -#325 - Include release version number in delivered .jar files -#328 - Improved configuration setup documentation page -#333 - Let Result implement Serializable -#334 - Added fetchMap() convenience methods -#335 - Added more functions and aggregate functions examples to - documentation -#338 - Visually improve code generation logging -#339 - Removed skipping of unreferenced UDT's, ENUM's and ARRAY's -#342 - Improved generated referential code by using fetch() and - fetchOne() API -#356 - Let UpdatableRecord.store() and delete() return an int - to indicate whether the record was actually modified - -API changes ------------ -#233 - Allow for joining TableLike instead of Table -#337 - Added generic type > to - InsertSelectQuery -#341 - Fixed API flaw where SelectOnConditionStep.and() methods - and similar ones returned SelectConditionStep, instead of - SelectOnConditionStep - -Bugfixes --------- -#69 - Corrected referential code generation for foreign keys - that reference non-primary unique keys -#85 - Corrected referential code generation for multi-field - foreign keys -#121 - Covered more Factory.executeXXX() methods with integration - tests -#318 - Fixed NullPointerException when executing SELECT * from - aliased tables -#321 - BetweenCondition does not bind left hand side Field - correctly -#322 - InCondition does not bind left hand side Field correctly -#326 - Avoid method overloading where binding to Object - may lead to compile-time ambiguities (with javac) -#343 - Add more foreign key navigation method integration tests -#347 - Add explicit integration tests for schema artefacts - excluded from code generation -#350 - Disambiguate navigation methods if several foreign keys - reference the same entity -#352 - Disambiguate navigation methods if a table ending on S - references itself -#353 - Added integration test for compilation of generated - artefacts with javac (as opposed to the Eclipse compiler) -#355 - Error when storing an UpdatableRecord that has no changed - values - -Version 1.5.5.2 - March 15, 2011 -================================================================= - -A critical bug was reported from the 1.5 release stream where -stored functions did not render their parameters in correct order - -Features --------- -#302 - Map Oracle's NUMBER data type to java.lang.Number in - stored procedures, stored functions - -Bugfixes --------- -#317 - StoredFunctionImpl.asField() renders parameters in wrong - order - -Version 1.5.5.1 - March 13, 2011 -================================================================= - -In version 1.5.5, there was a fatal bug breaking Derby source -code generation. Only the Derby dialect is affected. Please -update immediately, if you are using jOOQ's Derby integration - -Bugfixes --------- -#315 - Generated master data records are not sorted by PK -#316 - Derby code generation fatally broken - -Version 1.5.5 - March 12, 2011 -================================================================= - -This version is released early as there are some important -bugfixes. Additional improvemetns include: - -- Improved DSL related to conditions in HAVING and JOIN clauses -- Support for Oracle-style functions, such as NVL, NVL2, COALESCE - DECODE, etc - -Features --------- -#304 - Add support for Oracle NVL function -#305 - Add support for COALESCE function -#308 - Add support for Oracle NVL2 function -#311 - Add support for Oracle DECODE function - -API changes ------------ -#223 - Enhance DSL to accept and(), or() and similar methods in - JOIN steps -#224 - Enhance DSL to accept and(), or() and similar methods in - HAVING steps - -Bugfixes --------- -#297 - Fixed Factory.concatenate() function -#298 - Added integration tests for nested selects in HAVING - clause -#300 - Added integration tests for nested selects in JOIN clause -#303 - Javadoc correction -#307 - Accelerated integration tests -#309 - Fixed JDBC variable binding issue related to Conditions - where the lhs is a function (e.g. stored function) and the - rhs is a constant -#310 - Fixed issue where fetchOne() methods throw - NullPointerException if no result record is available -#312 - Fixed issue where Field.equal(...) methods rendered - unexpected SQL when rhs null is cast to a type -#313 - Fixed Derby cast type for VARCHAR -#304 - Let the DerbyDataType default for java.lang.String be - VARCHAR, not LONG VARCHAR - -Version 1.5.4 - March 04, 2011 -================================================================= - -Feature #243 required a minor API change in the base classes of -generated source code. This means you have to re-generate all -your jOOQ artifacts in order to migrate to 1.5.4. The artifacts -themselves should be regenerated in a compatible way, such that -your client code should not be affected. If this is not the case, -please report a ticket here: - - https://github.com/jOOQ/jOOQ/issues - -Apart from the Derby RDMBS and some new data type support, there -have been many new convenience methods added all over the API. -For instance, if type-safety is not really a requirement, there -are lots of possibilities to use plain SQL directly in the DSL. -In that case, data can be accessed from Record, Results, not only -through Field, but also through field names or indexes. - -Check out the updated documentation (soon) here: - - http://www.jooq.org - -- Support for the Derby RDBMS -- Support for casting. This allows for even greater flexibility - in cases where jOOQ cannot 100% ensure type-safety -- Support for ARRAY types. Oracle, Postgres, HSQLDB and H2 ARRAY - types are now supported natively as regular bindings in - jOOQ's Field -- Support for dialect-specific data types. CHAR, VARCHAR, CLOB - are no longer treated equally as java.lang.String. Their - type heritage is also generated -- More sequence support -- Lots and lots of bug fixes - -Features --------- -#95 - Support for the Derby RDMBS -#163 - Add support for JDBC type ARRAY (with Postgres) -#209 - Add support for DB2 sequences -#210 - Add support for H2 sequences -#211 - Add support for HSQLDB sequences -#215 - Support for SQL casting using as cast type -#246 - Support for SQL casting using dialect-specific data types -#254 - Add HSQLDB support for ARRAY types -#256 - Add Oracle support for VARRAY types -#257 - Integrate ARRAY types with stored procedures -#261 - Add a global type mapping to the generated Schema object -#267 - Add DataTypeDefinition for further abstraction of data - types in code generation -#269 - Add H2 support for ARRAY types -#290 - If log4j is not on the classpath, use java.util.logging - instead, as fallback - -API Changes ------------ -#156 - Allow for results to be accessed by index, not by field -#218 - Corrected bad method signature: - Record.getValueAsLong(Field, Integer) -#219 - Extended Result and Select API's to be more similar to - that of Record -#232 - Add more convenience plain SQL support to the API -#235 - Add convenience methods to Record, Result and Select for - access of data via field name -#243 - Refactor DataType implementations in order to allow for - the use of generics -#259 - Add field type to database meta data (ColumnDefinition) -#260 - Add field type to database meta data (Field) -#262 - Add default behaviour for Record.getValue(Field) -#276 - Add Javadoc as a ZIP file to the jOOQ distribution - -Bugfixes --------- -#125 - Add more plain SQL integration tests -#191 - Add more integration tests for nested unions -#205 - Implemented workaround for handling Postgres stored - functions with UDT OUT parameters -#214 - Fixed NPE when generating a stored function with an - unknown parameter type -#216 - Fixed some cases where binding of BigInteger is not done - correctly -#220 - Syntax error when using select statement in a CASE clause -#221 - Corrected integration tests for combined update and - select statements -#222 - Added integration test for INSERT statements having - nested SELECT statements for their fields -#225 - Correctly cast array types in Postgres -#230 - Potential misuse of Blob and Clob in H2's JDBC types -#239 - Factory.fetchAny() is not implemented for SQLite -#244 - Fixed peculiar MySQL casting support where cast types do - not match any data types -#245 - Fixed NPE when reading null dates in SQLite -#249 - Added ARRAY type integration tests -#255 - Stored procedure bind variables get mixed up when any - argument is null -#263 - Correctly handle Postgres function overloading -#264 - Ambiguous funciton calls when calling overloaded functions - with null parameter -#281 - Handle compilation errors when generating stored - procedures with > 254 parameters -#283 - Fixed compilation errors in generated source code for - Oracle's UDT table type -#284 - Fixed compilation errors in generated source code for - Oracle procedures in packages, when they have no - parameters -#285 - Fixed compilation errors in generated source code for - Oracle tables with the same name in different schemata -#286 - Fixed name collisions in generated objects with the - java.lang.* package -#288 - Prevent the creation of UNION queries with bad syntax - in MySQL -#289 - Correctly alias fields within UNION queries for some - dialects, which then only require the "AS" keyword -#291 - Cannot create an aliased field called "year" in Postgres - -Version 1.5.3 - January 13, 2011 -================================================================= - -- Lots of stored procedure support was implemented -- Support for sequences was added -- The final decision to postpone support for DB2 UDT's was made -- Some code generation bugfixes - -Features --------- -#36 - Added stored procedure / stored function support for HSQLDB -#140 - Added support for Oracle sequences -#147 - Added support for H2 stored functions -#162 - Correctly integrate UDTs with stored procedures -#170 - Added support for Postgres stored functions -#186 - Added support for more Oracle PL/SQL simple data types -#193 - Simulate support for H2 "stored procedures" -#195 - Simulate support for Postgres "stored procedures" -#206 - Added support for Postgres sequences - -API changes ------------ -#180 - Improved DSL for constant values -#181 - Allow for referencing Field in function argument list -#189 - Renamed convenience methods in org.jooq.Record -#207 - Add fetchOne(Field) method to org.jooq.Select API - -Bugfixes --------- -#182 - Protected generated Record classes against clashes with inherited methods -#183 - Fixed NullPointerException, when generating master data tables with - NULL fields -#184 - Fixed IllegalArgumentException, when a data type is present in the - schema, but unavailable in code generation logic -#185 - Code generation should not fail when single elements cannot be generated -#188 - Improved integration tests for stored procedures / functions / packages -#196 - Increase RDMBS version compatibility by avoiding "SELECT *" in code - generation logic -#199 - Added integration tests for stored procedures in RDBMS that do not - support OUT parameters -#201 - Fixed issue in DB2 where stored procedures without parameters were not - generated. -#202 - Added integration tests for stored procedures / functions without - parameters - -Version 1.5.2 - December 27, 2010 -================================================================= - -- Improved support for stored procedures, also in packages -- A minor API change was inevitable to implement #173. The API change only - concerns the INTERNAL API. Deprecation marks are added and deprecated items - will be removed in 1.6.0 -- Experimental SQLite database support -- Some important bug fixes - -Features --------- -#25 - Added support for Oracle packages -#114 - Added support for Oracle UDTs -#145 - Added support for the SQLite database -#150 - Generate static convenience methods for stored procedures / functions -#151 - Generate static convenience methods for stored function fields -#152 - Generate meaningful serialVersionUID in generated classes -#173 - Added support for EQUIVALENT schemata - -API changes ------------ -#159 - Added convenience method List getValues(Field) to Result -#165 - Added convenience methods for creating EXISTS clauses -#169 - Improved DSL for WHERE clauses - -Bugfixes --------- -#68 - Prevent issues originating from overloaded stored procedure names, - generating identical Java class names -#153 - Fixed issue with generated code for DB2 stored functions -#154 - Fixed issue with generated code for DB2 stored functions -#155 - Fixed issues with database NULL not being mapped correctly to Java NULL - when selecting values that have a primitive type (int, long, etc) -#158 - Potential ClassCastException when using Field -#171 - Corrected issue related to selection of default schema in DB2 -#177 - Fixed issue related to generated code for tables or UDTs without columns - - -Version 1.5.1 - December 13, 2010 -================================================================= - -- H2 database support thanks to Espen Stromsnes -- Improved stored procedure support - -Features --------- -#96 - Added H2 database support -#101 - Added stored procedure / stored function support for Oracle -#138 - Added stored procedure support for DB2 -#146 - Added support for DB2 functions - -API changes ------------ -#143 - Added convenience methods to Record - -Bugfixes --------- -#84 - Implemented referential code generation for foreign keys that do not - match their primary keys' types -#141 - Encoding problem in generated master data classes - -Version 1.5.0 - November 22, 2010 -================================================================= - -- A big one. Major API changes / improvements -- Added lots of convenience methods -- UDT support -- Enum support -- DB2 support thanks to Espen Stromsnes -- "Light" dependency to log4j added. jOOQ will still run without it - -Features --------- -#1 - Create support for UDTs (so far only for PostgreSQL) -#15 - Added DB2 support -#60 - Added support for nested selects in INSERT and UPDATE - statements -#83 - Added log4j logging to code generation and runtime -#87 - Add support for arithmetic expressions -#105 - Added support for ENUM data types, where applicable - (MySQL and PostgreSQL so far) -#110 - Added execute and fetch convenience methods -#111 - Added missing "select distinct" support -#122 - Annotate generated classes with javax.annotation.Generated -#123 - Generate user enum fields from data values (master data) -#124 - Added PlainSQLTable -#127 - Added not() operator to Condition -#135 - Added convenience methods andNot() and orNot() in - Condition - -API changes ------------ -#89 - Removed support for DataSource. jOOQ is not a transaction - manager -#92 - Added SortField type to be used for sorting -#99 - Provide better access to functions (No more FunctionFactory) -#116 - Merge Manager functionality into Factory -#118 - Improve API of org.jooq.Field -#119 - Improve subquery condition API -#132 - Reduced much of the select query API -#134 - Better separation of SelectQuery and SimpleSelectQuery - -Bugfixes --------- -#109 - Error when executing select * if generated schema does not - match actual schema -#115 - Fix various "null" pseudo field issues -#126 - Error when selecting a single field from a union nested - select -#129 - Fixed performance issue in Oracle code generation for - very large databases - - -Version 1.4.4 - November 22, 2010 -================================================================= - -Unreleased version, fixes included in 1.5.0 - -Bugfixes --------- - -#133 - JoinCondition does not take comparison operator - -Version 1.4.3 - October 25, 2010 -================================================================= - -Some more bugfixes - -Bugfixes --------- - -#71 - Generated code does not compile, when foreign key and - primary key have a data type mismatch -#73 - In Oracle generated code, multi-field foreign keys may - generated bad relations code -#82 - Conversion of literals to camelcase fails if numbers are - involved - -Version 1.4.2 - October 22, 2010 -================================================================= - -Various bugfixes and minor improvements - -Features --------- -#66 - Add support for CASE or DECODE expression - -API changes ------------ -#77 - Functions should not extend FieldImpl, but a new - AbstractField -#78 - QueryPart pollutes declared method space of its - implementations. Hide it by indirection - -Bugfixes --------- -#64 - Code generation fails when foreign key references a unique - key that is not the primary key. Code generation for these - cases is omitted -#67 - When loading properties files, a leading / seems to be - mandatory. This is preventing users from correctly setting - up jOOQ the first time -#70 - Add support for Oracle datatype TIMESTAMP(6) -#72 - Name clashes in generated Tables -#75 - Constant does not bind its values. -#76 - Constant should not render strings all the time -#79 - Constants are not properly escaped -#80 - Position function does not bind any variables -#81 - Add cast function to Constants in HSQL - -Version 1.4.1 - October 18, 2010 -================================================================= - -Oracle patch release - -Features --------- -#63 - Generate referential functionality for Oracle - -Version 1.4.0 - October 17, 2010 -================================================================= - -Support for PostGreSQL was added. -Added lots of OR-mapping functionality. -There is a general API change due to various new features. - -Features --------- -#14 - Add PostGreSQL support -#40 - Resolve foreign keys. Allow for navigation between objects. -#42 - Add PlainSQLField -#45 - Add "dirty" flag to Record's values. This allows for - updating only relevant data. -#47 - Complete implementation for UPDATE, INSERT, DELETE - statements. Added some missing functionality. -#48 - Add more support for Date, Time, Timestamp fields. -#51 - Add a org.jooq.impl.Manager class that provides common - utility methods for CRUD operations - -API changes ------------ -#10 - Add second generic type . This is a - prerequisite for many OR-mapping features -#18 - Use org.jooq.Record in InsertQuery and UpdateQuery -#46 - Create UpdatableRecords as a prerequisite for JPA and true - OR-mapping. These records support store() and delete() - methods -#52 - Add default constructor in generated Records. -#53 - Add refresh functionality to UpdatableRecords. See also #46 -#54 - Add a state to the factory class -#56 - Reduce API, remove unnecessary Condition subinterfaces -#57 - Reduce API, remove unnecessary QueryPart interfaces - -Bugfixes --------- -#49 - NullPointerException when generating relations on schema - subset -#58 - Count function renders bad SQL in various dialects -#59 - Exception when selecting unaliased functions in queries - -Version 1.3.0 - August 24, 2010 -================================================================= - -Support for HSQLDB was added. -There is a major API change due to #44. - -Features --------- -#29 - Generate primary keys and foreign keys in Oracle code - generation -#34 - Add support for HSQLDB -#39 - Generate primary keys and foreign keys in HSQLDB code - generation -#41 - Add documentation to QueryFactory and Functions - -API changes ------------ -#23 - Add support for more advanced joins -#32 - Merge SelectQuery and ResultProviderQuery interfaces -#44 - Let Query methods return "this" - -Bugfixes --------- -#35 - Add unit tests for HSQLDB support -#37 - Syntax error in combined select queries! - The usage of combined queries in MySQL may still be a bit - awkward. Keep an eye out for further fixes -#43 - Join with aliased tables doesn't work - -Version 1.2.0 - August 21, 2010 -================================================================= - -The added Oracle support is now unit tested and more stable. -The Oracle NUMBER data type is mapped more precisely to Java -types. - -Features --------- -#12 - Model primary keys and foreign keys in generated code -#22 - Improve mapping of Oracle NUMBER data type -#26 - Add Plain SQL QueryParts -#27 - Add support for HAVING clause - -Bugfixes --------- -#24 - Add Unit tests for oracle database (and fixed bugs) -#31 - Pull up addOrderBy() methods from SelectQuery to - ResultProviderQuery - -Version 1.1.0 - August 17, 2010 -================================================================= - -The main new feature is the Oracle support. Wait for -Version 1.1.1 for that support to be stabilised, as there are no -Oracle unit tests running against an Oracle database yet. - -Features --------- - -#2 - Add support for inner / nested selects -#3 - Add more function support -#4 - Implement filtering functionality for code generation -#6 - Add Oracle Support -#9 - Create true POJO's (implementing org.jooq.Record) with - getters and setters -#17 - Make org.jooq.impl.Parameter independent of Field - -Bugfixes --------- - -#11 - Code generation does not remove files - -Version 1.0.1 - August 14, 2010 -================================================================= - -Features --------- - -#5 - Prevent code regeneration, if no changes were made -#7 - Implement ant task for code generation - -Version 1.0.0 - August 14, 2010 -================================================================================ -Initial Release \ No newline at end of file diff --git a/jOOQ-website/inc/RELEASENOTES-2.1.txt b/jOOQ-website/inc/RELEASENOTES-2.1.txt deleted file mode 100644 index 5783e32b67..0000000000 --- a/jOOQ-website/inc/RELEASENOTES-2.1.txt +++ /dev/null @@ -1,2397 +0,0 @@ -jOOQ Release notes -================== - -For an interactive overview, see also -http://github.com/jOOQ/jOOQ/issues - -For a formatted text version, see -http://www.jooq.org/notes.php?version=2.1 - -For a text version, see -http://www.jooq.org/inc/RELEASENOTES-2.1.txt - -Version 2.1.1 - April 22, 2012 -================================================================= - -This is a minor patch release, fixing some issues - -Bug fixes ---------- -#1241 - Wrong variable binding when comparing CHAR columns in - Derby and DB2 without explicit casting to VARCHAR -#1244 - Cannot override class name in GeneratorStrategy in - Mode.POJO -#1264 - Pass fetchsizes <= 0 to the JDBC driver (for MySQL - compatibility) -#1267 - User defined H2 functions codegen bug -#1270 - Most databases allow for multiple identical foreign keys. - This leads to compilation errors in generated source code -#1287 - Remove oracle.sql dependency also from OSGi information - in pom.xml -#1298 - Avoid source code generation errors when generating code - for unknown, dialect-specific data types -#1308 - Oracle's DataTypeDefinition reports the length of a BLOB - / CLOB data type to be 4000 -#1343 - Regression in insertInto(...).values(...). Cannot pass - Field to values() - -Version 2.1.0 - March 18, 2012 -================================================================= - -With this version, jOOQ attempts to follow versioning rules -imposed by semantic versioning: http://semver.org/ -There will be 1 minor release per month, and a couple of patch -releases per year, depending on popular demand - -The main improvements for this release include - -- The possibility of providing jOOQ with a custom type mapping. - You can now define your own Converter types that are used by - jOOQ to map a database's SQLDataTypes to your custom types. - This is particularly useful for Java's enums. Read more about - custom converters in the manual: - http://www.jooq.org/manual/ADVANCED/CustomTypes/ - -- There are a lot of new runtime configuration options to control - the SQL style of SQL rendered by jOOQ. You can now specify - whether table/column names should be quoted / capitalised / - lower-cased, whether SQL keywords should be capitalised or not, - etc... - -- The handling of NULL has been improved in favour of using jOOQ - as a SQL builder library (e.g. along with Spring for execution) - NULL is no longer inlined, but bound as a variable. - -- jOOQ now supports simulation of the relational division - operation using an intuitive syntax. Read more about the - relational division here: - http://en.wikipedia.org/wiki/Relational_algebra#Division - -Features and improvements -------------------------- -#161 - Add runtime configuration to pretty print rendered SQL -#349 - Add SQLite relations support -#491 - Add runtime configuration for SQL keyword style (upper - case, lower case) -#521 - Add runtime configuration for SQL reference style (upper - case, lower case, as-is, quoted) -#1150 - Add code generation option to disable generation of - records -#1181 - Add support for SQL Server data types timestamp and - rowversion -#1188 - Load default Settings from the classpath at - /jooq-settings.xml, or from -Dorg.jooq.settings -#1193 - Specify main-class in jOOQ Console's manifest.mf and - include dependency in jar file -#1194 - Add ColumnDefinition.isNullable() -#1202 - Add support for the relational division operation: - A.divideBy(B).on(A.ID.equal(B.A_ID)).returning(A.X, ...) -#1207 - Add Factory.batch(Collection) for - convenience -#1208 - Render @javax.persistence.Column(nullable = false) - property, if available -#1209 - Render @javax.persistence.Column(length, precision, - scale) properties, if available -#1215 - Add org.jooq.Converter for custom type mapping -#1216 - Overload Record, Result.getValue() and .setValue() - methods to accept a Converter -#1217 - Add EnumConverter as a base type for custom enum - converters -#1218 - Add code generation options to generate - referencing a Java type and a Converter -#1224 - Add DataTypeDefinition.getLength() to jooq-meta's type - system -#1233 - Support custom JDBC properties for jooq-codegen -#1234 - Add Database.getTable(SchemaDefinition, String, boolean) - to fetch tables case-insensitively -#1239 - Add Factory.fetchLazy(String, Object...) - -API changes (backwards-compatible) ----------------------------------- -#1191 - Deprecate ConfigurationRegistry and replace by equivalent - ExecuteListener feature -#1219 - API Bug: Cannot use LIMIT .. OFFSET along with FOR UPDATE - -Bug fixes ---------- -#625 - Remove dependency from generated Routines to the - generator's SQLDialect -#1128 - NULL is inlined in INSERT statement instead of binding it - as a variable. This can cause issues when using jOOQ with - Spring -#1137 - Exclude MySQL column-level enum types when that column is - overridden by a -#1158 - Derby cannot handle inlined NULL literals in some - contexts -#1180 - Execute BatchMultiple (multi-query batch query), when - executing BatchSimple (single-query, multi-bind-value - query) with StatementType == STATIC_STATEMENT -#1189 - TableMapping regression for SQLite database -#1190 - Cannot store SQLite records when using - StatementType.STATIC_STATEMENT -#1199 - Table.getFields() returns an internal representation of a - table's field list. Make generated tables immutable! -#1200 - Internal API leak exposed through covariance in - AbstractType.getFields() -#1211 - Enforce method name disambiguation also when using custom - strategies in jooq-codegen -#1212 - Enforce identifier disambiguation also when using custom - strategies in jooq-codegen -#1221 - Incorrect ExecuteListener invocation for INSERT .. - RETURNING. executeStart() and executeEnd() are omitted -#1223 - Cache ExecuteListener classes for performance -#1225 - Bind NULL byte[] as java.sql.Types.BINARY instead of - BLOB in Postgres, to avoid errors -#1226 - Bind NULL UDTs with their associated type name in Oracle -#1232 - SQLException when Factory.fetch() does not return a - ResultSet -#1237 - Don't generate enum classes for columns in MySQL tables - that are excluded from code generation - -Version 2.0.5 - February 26, 2012 -================================================================= - -This release finally introduced basic runtime configuration -features for the jOOQ Factory. This configuration now includes: - -- Execute listener and SQL tracing support. jOOQ allows you to - hook your own listeners into jOOQ's query execution engine to - be notified of all sorts of events -- The existing SchemaMapping features. They are now part of the - runtime configuration -- StatementType settings. Specify whether a Factory should - execute java.sql.PreparedStatements (with bind variables) or - static java.sql.Statements with inlined variables. - -The runtime configuration is documented here: - -http://www.jooq.org/manual/JOOQ/Factory/ - -The listener and tracing support has been requested by -Christopher Deckers, a new jOOQ user who has had the courtesy to -contribute the new jOOQ Console, which is documented here: - -http://www.jooq.org/manual/ADVANCED/ExecuteListener/ - -Apart from that, another long-requested feature is now fully -implemented: The GeneratorStrategy, allowing for custom naming -strategies in generated source code. This will allow for -generating custom table / record class name prefixes / suffixes, -as well as overriding the default behaviour for rendering UPPER, -lower and CamelCase artefacts. See the manual for details: - -http://www.jooq.org/manual/META/Configuration/ - -Features and improvements -------------------------- -#93 - Add Field.equalIgnoreCase(), Field.notEqualIgnoreCase() -#408 - Add class prefixes, suffixes and other options to the - code generator -#492 - Add runtime configuration -#1107 - Let Field.contains() support the Postgres ARRAY @> ARRAY - operator -#1140 - Add ResultQuery.fetchResultSet() to return the underlying - JDBC result set -#1143 - Add Result.isNotEmpty() for convenience -#1145 - Add runtime configuration to specify whether jOOQ should - execute java.sql.PreparedStatement (with bind variables) - or a java.sql.Statement (with inlined parameters) -#1146 - Add Query.getSQL(boolean) to indicate that bind values - should be inlined (as a convenience for - Factory.renderInlined(QueryPart)) -#1148 - Add Cursor.resultSet() to expose the underlying ResultSet -#1149 - Allow for optional - "http://www.jooq.org/xsd/jooq-codegen-2.0.4.xsd" - namespace in jooq-codegen configuration -#1152 - Add & org.jooq.EnumType> - E MySQLFactory.enumType(Class, int) for enum reverse - lookups of MySQL-specific enums -#1159 - Support matching numbers with LIKE, e.g. ID LIKE '%33%' -#1160 - Implement Field.contains(), .startsWith(), .endsWith() - for numeric values, too -#1161 - Use reflection to remove compile-time dependency on - ojdbc for creating ARRAYs -#1162 - Integrate jOOR into jOOQ for simpler reflection -#1164 - Distinguish between Definition.getInputName(), - .getOutputName() -#1165 - Add constraint name to generated javadoc -#1167 - Trivial issue with org.jooq.Factory.exists Javadoc - - GitHub issue #10 -#1169 - Add Configuration.setData(), getData() to convey custom - data in a configuration's lifecycle -#1172 - Add runtime configuration to deactivate JooqLogger -#1177 - Add jOOQ-Console module to jOOQ -#1184 - Add DataType.isArray() - -API changes (backwards-compatible) ----------------------------------- -#1142 - Rename Result.exportXML() to Result.intoXML() to stay - more consistent -#1151 - Deprecate SchemaMapping in favour of new runtime - configuration - -Bug fixes ---------- -#978 - Schema.getTables() and similar methods return empty lists - when Schema is mapped with SchemaMapping -#1153 - Bad inlining of booleans in Sybase ASE / DB2 / Oracle - SQL Server / SQLite -#1154 - Bad inlining of byte[] in most dialects -#1155 - byte[] are erroneously converted to String when using - Record.intoArray() -#1156 - Bad inlining of DATE / TIME / TIMESTAMP data types in - Ingres (and other dialects, when the setting differs from - the default) -#1166 - Some generated Javadoc uses naming strategy or plain - output name, instead of qualified output name -#1168 - Oracle packages are generated as static, instead of - static final -#1175 - Factory.use() seems to render SQL with the Schema name - still present -#1179 - Oracle-generated ArrayRecords need a reference to - org.jooq.Schema to read TABLE of OBJECT from stored - procedures - -Test cases ----------- -#1147 - Add integration tests for executing SQL generated using - Factory.renderInlined() - -Version 2.0.4 - February 12, 2012 -================================================================= - -This release introduced many improvements to source code -generation. These improvements include: - -- Maven and standalone code generation now use the same XML - configuration, which is read by jOOQ-codegen using JAXB. This - allows for more complex configuration elements in the future -- jOOQ-codegen can now handle multi-schema databases and generate - code for tables referencing tables from other schemata. This - is integration tested against the SQL Server AdventureWorks - database -- jOOQ now allows to generate simple POJOs in addition to Records - and to annotate both POJOs and Records with JPA annotations - such as @Entity, @Table, @Id, @Column, @UniqueConstraint, etc. - -You can migrate your existing .properties configuration by running -> org.jooq.util.GenerationTool /your.properties migrate - -Besides that, there is a lot of ongoing work to improve the -integration of Oracle's TABLE and VARRAY types. - -Features and improvements -------------------------- -#8 - Add JPA annotations to generated POJOs / Records -#282 - Add support for multi-schema databases -#287 - Add support for Oracle TABLE types -#395 - Use XML configuration file instead of properties file -#1089 - Add Field.contains(), .startsWith(), .endsWith() as a - convenience for Field.like() (including escaping) -#1092 - Move master data table configuration from - generator.generate to generator.database namespace -#1093 - Add support for generator.strategy in Maven source code - generation -#1094 - Add support for generator.database.date-as-timestamp in - Maven source code generation -#1095 - Move generator.generate.unsigned-types to - generator.database namespace -#1096 - Add support for generator.generate.unsigned-types in - Maven source code generation -#1103 - Add support for SQL Server data type uniqueidentifier -#1106 - Add Factory.escape(Field, char) for use with LIKE -#1108 - Add support for multi-schema databases using Maven code - generation -#1115 - Add support for Oracle VARRAY/TABLE of OBJECT types -#1127 - Add support for POJO classes generation -#1129 - Allow for using Param in LIMIT .. OFFSET clauses -#1132 - Add RenderContext.castMode() to allow for avoiding casts - where this is not really needed -#1136 - Add generation option to enable/disable generating - navigation methods - -Bug fixes ---------- -#1099 - Derby generated artefacts are not sorted alphabetically -#1101 - Internal API leak exposed through covariance in - AbstractTable.joinXXX() methods -#1110 - VARRAY element type information is lost when unnesting - VARRAY's in Oracle -#1111 - VARRAY element type information is lost when unnesting - VARRAY's returned from functions in Oracle -#1114 - Syntax error when unnesting TABLE of OBJECT in Oracle. - The unnested table contains several columns but jOOQ only - unnests "COLUMN_VALUE" -#1117 - NullPointerException when passing an ArrayRecord - containing a null array to a stored function in Oracle -#1125 - Postgres needs casting for date time data types in - queries like SELECT ? FROM DUAL -#1131 - DB2: [Noauthorized routine named "LIKE" of type - "FUNCTION" having compatible arguments was found] when - using Field.like(concat(x, y)) -#1133 - Compilation errors in generated source code if the same - constraint name exists in several schemata -#1134 - NullPointerException in code generation when a foreign - key constraint references a table from another schema - that is not being generated -#1135 - Generated Javadoc references inputSchema instead of - outputSchema - -Test cases ----------- -#1009 - Add more integration tests for proper handling of - java.sql.Date, Time, Timestamp -#1090 - Run jOOQ tests against AdventureWorks SQL Server sample - database -#1105 - Add integration tests for multi-schema source code - generation and querying -#1122 - The 10k lines of integration test code are too heavy for - the compiler. Create test modules with fewer lines of - code, each. - -Version 2.0.3 - January 29, 2012 -================================================================= - -This release focuses on increased compatibility between various -SQL dialect integrations as far as ARRAY and JOIN support is -concerned: - -- ARRAY types are only available in H2, HSQLDB, Oracle, Postgres. - Nevertheless, they can be somewhat simulated in other dialects - using nested selects with UNION ALL. Increased compatibility - leads to a nicer API, where ARRAYs are used along with ALL/ANY - quantifiers, for instance. - -- JOIN syntaxes can be quite powerful in SQL. Apart from - simulating NATURAL JOIN, JOIN USING clauses, as well as a - synthetic "KEY JOIN" syntax, jOOQ now also supports nesting - JOIN expressions to create more complex table sources. See a - recent blog post on the subject here: - -http://blog.jooq.org/2012/01/15/lets-revise-the-sql-from-clause/ - -Features and improvements -------------------------- -#578 - Add KEY JOIN syntax to simulate joining using generated - foreign keys -#577 - Simulate NATURAL JOIN syntax, where this is unavailable -#582 - Simulate JOIN USING syntax, where this is unavailable -#671 - Allow for nesting JOIN clauses -#676 - Add Table.join() methods to create more flexible table - sources -#993 - Add Field.equalAny(T[]), .equalAny(Field) methods -#1048 - Simulate (array) syntax for dialects - that do not support arrays -#1051 - Add Factory.execute(String, Object...) as a convenience - method for Factory.query(...).execute() -#1055 - Simulate Factory.table(Object[]) and table(List) using - UNION ALL in dialects that do not support arrays -#1060 - Improve debug logging of H2 arrays. The syntax is not - ARRAY[1, 2], but (1, 2) -#1065 - Add OracleFactory.sysContext(String, String) to support - Oracle's SYS_CONTEXT function -#1069 - Add support for INSERT INTO table(field1, field2, ...) - SELECT syntax - as opposed to the existing INSERT INTO - table SELECT -#1072 - Add support for LIKE .. ESCAPE .. syntax -#1074 - Add Field.notBetween(T, T) for convenience -#1080 - Add support for JDBC's Statement.setFetchSize() in - ResultQuery.fetchLazy() -#1082 - Add some more DEBUG logging in AbstractResultQuery - -API changes (backwards-compatible) ----------------------------------- -#1059 - Change SelectFromStep.from(Collection>) to - from(Collection>) - -API changes (backwards-incompatible) ------------------------------------- -#1087 - Change the NTILE function to return Field - instead of Field - -Bug fixes ---------- -#1071 - Make Sequence Serializable -#1081 - Derby error in NULL handling when simulating unnested - arrays that contain NULL values -#1084 - Bind index mismatch in val(null).equal(null) and in - val(null).notEqual(null) -#1091 - Add missing @Support annotations on Table.crossJoin() - methods - -Test cases ----------- -#1026 - Add integration tests for NTILE window function and - document compatibility -#1073 - Add integration tests for NOT IN queries holding NULL - arguments - -Version 2.0.2 - January 8, 2012 -================================================================= - -This is a maintenance release for jOOQ 2.0. The main improvements -include - -- The whole jOOQ API is now annotated with a new org.jooq.Support - annotation to help you assess whether a certain SQL clause is - available in your database or not. This is particularly useful - when your application should support several databases at once - (e.g. MySQL, Postgres, Oracle) -- The Oracle PIVOT clause is now formally supported for advanced - statistical queries in Oracle. This clause will be simulated in - other dialects in the future. -- The DATE data type can be mapped to TIMESTAMP. This important - when you query a legacy Oracle database, where DATE columns - can also contain time information -- Several convenience methods have been added for more fluent - syntax, when using plain SQL result queries, subqueries as - tables, or when unnesting arrays in ANY() and ALL() quantifiers - -Further type mapping support is still experimental. An official -cooperation with MinuteProject for source code generation is -being analysed. With MinuteProject, many source code generation -issues could be addressed centrally, as MinuteProject specialises -in source code generation: - -http://minuteproject.wikispaces.com/ - -Features and improvements -------------------------- -#595 - Add support for Oracle's PIVOT clause -#869 - Add support for using ANY, ALL with arrays, not just with - subselects -#1007 - Formally document the API methods to indicate whether - something is supported by any given SQL dialect -#1011 - Add code generation configuration parameter to avoid - generating @Generated annotation -#1019 - Render LIMIT x OFFSET y also for MySQL, instead of - LIMIT y, x -#1022 - Add missing Sybase ASE implementation for Factory.use() -#1024 - Add Factory.resultQuery(String, Object...) to allow for - arbitrary execution modes of plain SQL queries (lazy, - later, into, array, etc) -#1025 - Add missing SQLite implementation for Factory.deg() and - Factory.rad() -#1033 - Generate table comments into generated Tables.java as - Javadoc -#1040 - Add Object[][] Result.intoArray() and - Object[] Record.intoArray() for convenience. Let - E Record.into(Class) also support array types. -#1041 - Add Table Factory.table(Select) convenience - method for more fluency -#1042 - Add support for DISTINCT keyword in SUM, AVG, MIN, MAX - aggregate functions -#1046 - Generate Ingres table and column comments in generated - source code (only Ingres 10) - -API changes (backwards-compatible) ----------------------------------- -#1050 - Deprecate usage of SOME quantifier in predicates, such as - equalSome() - -API changes (backwards-incompatible) ------------------------------------- -#1036 - Fixed API typo in - WindowsRowsStep.rowsBetweenUnboundedFollwing() -#1037 - The fluent API allows for JOIN clauses without FROM - clause - -Bug fixes ---------- -#1010 - The MERGE INTO .. WHEN NOT MATCHED THEN INSERT .. syntax - may cause type-safety issues in some databases. VALUES - should be converted before binding -#1014 - FindBugs: Latent risk of infinite recursion due to typo - in QueryPartList.retainAll(); -#1015 - FindBugs: 7 occurrences of "Bad attempt to compute - absolute value of signed 32-bit hashcode". In extreme - cases, this could lead to SQL syntax errors -#1016 - The Oracle CONNECT BY cond1 AND cond2 syntax erroneously - creates a WHERE cond2 CONNECT BY cond1 statement -#1028 - Syntax errors when using untyped param() in HSQLDB (and - other strongly typed dialects) -#1029 - Postgres can't bind NULL values in cases, where bind type - is Object.class and bind value was created with - Factory.param() -#1030 - UnsupportedOperationException when calling - Query.bind(int, Object) on a query containing plain SQL - fields -#1031 - Incorrect debug logging when plain SQL QueryParts like - field("?") bind null values -#1032 - Incorrect debug logging when plain SQL QueryParts contain - String literals, such as 'Hello? Anyobody out there?' -#1047 - Field.notEqualAny() erroneously renders <> ALL() - -Test cases ----------- -#1021 - Add explicit integration tests for - LEFT|RIGHT|FULL OUTER JOIN - -Version 2.0.1 - December 23, 2011 -================================================================= - -This is a maintenance release for jOOQ 2.0. The main improvements -include - -- Better integration for using jOOQ with Spring Data. This - includes support for named parameters, as well as allowing to - change bind values on previously constructed Query objects -- The MERGE statement has been enhanced for better integration - with Oracle. -- jOOQ is now ready to use with Scala / Groovy - -For more information about using jOOQ with Scala, see this blog -post: -http://blog.jooq.org/2011/12/11/the-ultimate-sql-dsl-jooq-in-scala/ - -There is now also experimental support for a custom type mapping. -This mapping allows to rewrite data types at code generation time -as well as to specify custom enum data types (e.g. boolean Y/N). -Not all integration tests run smoothly for custom data types, -hence, this feature is not yet fully supported. - -Features and improvements -------------------------- -#691 - Add support for Oracle CURSOR REF IN / INOUT parameters -#677 - Add type-mapping configuration, enforcing types for - columns -#947 - Add custom type mapping support (experimental) -#968 - Allow for custom enum types, configured in the code - generator (experimental) -#974 - Add Schema.getTable(String), getSequence(String), - getUDT(String) for better runtime Schema meta-navigation -#975 - Add Sequence.getName(), getSchema(), getDataType() -#980 - Add support for named parameters, to better interact with - Spring -#991 - Add Query.bind(String, Object) and bind(int, Object) to - easily modify existing bind values -#992 - Document thrown DataTypeException in Convert methods -#998 - Enhance MERGE statement for Oracle extensions: - WHEN MATCHED THEN UPDATE .. WHERE .. DELETE WHERE .. - WHEN NOT MATCHED THEN INSERT .. WHERE .. -#1000 - Add support for MySQL's INSERT INTO .. SET .. syntax in - MERGE statement's WHEN NOT MATCHED THEN INSERT clause - -API changes (backwards-compatible) ----------------------------------- -#981 - Cannot insertInto(table("my_table")), as plain SQL tables - return Table, not Table. Relax - bound on R -#988 - Change Factory.field(String) to return Field - instead of Field -#999 - Make MERGE's WHEN MATCHED .. and WHEN NOT MATCHED .. - clauses optional -#1001 - Identity.getField() should return TableField - instead of Field -#1006 - Add Factory.value(...) as a synonym for Factory.val(...) - for increased Scala / Groovy compatibility - -Bug fixes ---------- -#973 - EnumType renders name() instead of getLiteral() in - formatXXX() methods -#977 - EnumType renders name() instead of getLiteral() in - Convert.convert() method -#979 - Record.from() sets all changed flags to true. That's not - necessarily correct in the event of storing the record - back to the DB -#985 - AbstractRecord.equals() does not correctly compare - arrays. Compare them using Arrays.asList() -#986 - Postgres / DB2 / Sybase ASE foreign-key namespace is - unique-per-table. jOOQ forces all foreign keys from all - tables into the same namespace -#990 - Problems when encoding arbitrary byte[] as String(byte[]) - in inlined SQL. This can cause issues when DEBUG-level - logging is activated -#995 - Routines don't respect SchemaMapping - Github issue #8 -#1002 - TableRecord.storeUsing() doesn't update IDENTITY column - values, if the column is not part of the main unique key -#1003 - Sybase / SQL Server / MySQL / Ingres / H2 / Derby's - INSERT .. RETURNING simulation returns null if a table - has an IDENTITY column, but no primary/unique key -#1005 - The INSERT INTO .. VALUES .. syntax may cause type-safety - issues in some databases. VALUES should be converted - before binding - -Test cases ----------- -#984 - Detach IDENTITY column tests from UNIQUE KEY tests, - create a dedicated test suite instead - -Version 2.0.0 - November 25, 2011 -================================================================= -This release is a fresh start in many areas of jOOQ, adressing -issues that have been requested by users for a long time. These -release notes docment the most important changes, a detailed -upgrade guide, as well as the detailed list of improvements. - -Most important changes ----------------------- -- The API became more static. This applies to many Factory - methods, such as val(), literal(), as well as to many Field - methods that have been moved over to the Factory. For example, - when before, you wrote this using "postfix function notation": - -
    NAME.replace(" ", "_").trim()
    - - you will now write (just as in SQL): - -
    trim(replace(NAME, " ", "_"))
    - - Using static imports of Factory.*, jOOQ makes SQL look even - more like SQL. The current "postfix notation" is maintained for - backwards compatibility. -- By default, jooq-codegen will now generate a "dynamic" meta - model as opposed to the existing static one. Generated tables - covariantly override the as(String) aliasing method, leading - to a much more convenient aliasing style. When before, you - wrote: - -
    -Table parent = T.as("parent");
    -Table child  = T.as("child");
    -Condition join =
    -  parent.getField("ID").equal(child.getField("PARENT_ID"))
    -
    - - You can now write: - -
    -T parent = T.as("parent");
    -T child  = T.as("child");
    -Condition join = parent.ID.equal(child.PARENT_ID)
    -
    - - Of course, the existing notation still works - -- Exceptions are no longer checked. When previously, the DB's - SQLException was propagated to client code, there is now an - unchecked DataAccessException hierarchy, similar to that of - Spring. This will eventually give way to a standardised error - handling abstraction, in future developments. -- Window functions are now constructed from their underlying - aggregate functions just like in SQL. For example: - -
    -sum(AMOUNT)
    -sum(AMOUNT).over().partitionBy(ACCOUNT)
    -
    - - This makes for a more concise API, especially when considering - future extensions, such as Oracle's KEEP (DENSE_RANK FIRST...) - syntax. -- More type safety has been introduced regarding various places - where generic and types are involved. - This is especially true for INSERT / UPDATE / DELETE statements -- Sequences now also have a type -- Unsigned number types are now supported in those databases that - use them. Unsigned numbers are implemented in jOOU, a spin-off - open source project. For convenience, this library is - "internalised" into jOOQ, to avoid adding a dependency - -http://code.google.com/p/joou/ - -Upgrade instructions: ---------------------- -Various of the above changes are incompatible with jOOQ 1.x. In -order to upgrade, please be aware of the following pitfalls: - -- The schema needs to be re-generated. -- Much of the post-fix function notation is replaced by static - methods in the Factory. Today's org.jooq.Field API is - maintained in jOOQ 2.0, for backwards compatibility. It will - be removed, eventually, though. Expect some incompatible - changes, where window functions are involved -- Some Factory instance methods (such as val(), literal()) are - now static. They are compatible, but may cause compiler - warnings. -- The meta model is now an instance model by default. If you - prefer the static meta model, you can configure this in your - jooq-codegen configuration. -- The additional typesafety involving and types may cause - compiler warnings and errors. -- SQLException is no longer part of the API. This can cause - compiler issues, in particular when extending jOOQ -- Some utility classes have moved to org.jooq.tools - -Should these incompatibilities be too significant for your -project, you can still stay on the 1.x branch, which will be -maintained for a while. Be aware that upgrading might be more -difficult, later, though. - -Features and improvements -------------------------- -#55 - Implement improved exception handling -#117 - Improve DSL support for field and table aliasing (decrease - verbosity) -#519 - Add support for MySQL UNSIGNED numeric types -#626 - Create static function access -#661 - Add support for bitwise operators -#718 - Sequences should be mapped to appropriate type (e.g. - SMALLINT, INT, BIGINT, etc) -#734 - Add support for Oracle / SQL Server CUBE() and ROLLUP() - grouping functions -#751 - Add support for Oracle / SQL Server GROUPING SETS() - function -#799 - Add support for Oracle PL/SQL's object-oriented MEMBER - PROCEDURES and MEMBER FUNCTIONS -#804 - Add to Insert, Update, Delete -#835 - Review API typesafety for InsertSetMoreStep - set(Field, T) and similar methods -#890 - Add Factory.selectCount() convenience method -#891 - Let min() max(), etc functions return a new type - AggregateFunction. This type can then be used as an entry- - point for window functions -#892 - Add support for Oracle / SQL Server GROUPING() and - GROUPING_ID() functions to be used along with CUBE() and - ROLLUP() -#893 - Simulate ROLLUP() function for MySQL, using the WITH - ROLLUP grouping modifier -#894 - Move functions from Field to org.jooq.impl.Factory - and make them static -#895 - Add power(..., Field) -#897 - Add (experimental) Spring integration project -#898 - Replace usage of checked SQLException by an unchecked - DataAccessException, similar to that of Spring -#899 - Build jOOQ .jar files as bundles to be deployed into OSGI - environments -#900 - Purge deprecated API - Prior to 2.0 -#901 - Introduce InvalidResultException as a subtype of - DataAccessException for integrity checks in methods like - ResultQuery#fetchOne(), ResultQuery#fetchMap(), etc. -#902 - Make AggregateFunction the base type for constructing - window functions -#904 - Move SQLDialectNotSupportedException into - org.jooq.exception package -#905 - Introduce MappingException as a subtype of - DataAccessException for integrity checks in methods like - ResultQuery#fetchInto(), etc. -#907 - Add missing Field.like(Field), notLike(Field) - methods to overload the existing Field.like(T), notLike(T) -#908 - Change rpad / lpad functions to accept String instead of - char -#912 - Add R newRecord(Table, Object) as - the inverse of various into(Class) methods -#916 - Add > {Record.into(Table) | - Result.into(Table) | ResultQuery.fetchInto(Table) | - Cursor.fetchInto(Table)} -#917 - Add various Cursor.fetchOneInto() convenience methods -#918 - Add CustomTable, CustomRecord as base classes for more - convenience when used with various into(Table) methods -#919 - Allow for accessing non-public constructors of Record - subtypes -#923 - Move some utilities to org.jooq.tools -#924 - Generate a reference to every table in a new Tables.java - class for improved static access -#928 - Add DataTypeException extending DataAccessException in - case something went wrong when converting data types -#930 - Support converting date time types to java.util.Calendar. - This applies to various into(Class) methods, as well as - Result.getValue(xx, Class) -#931 - Allow for conversion between Long and date/time types, and - vice versa -#932 - Let the bound of R in TableRecord extend TableRecord, - in UpdatableRecord to extend UpdatableRecord -#933 - Add support for type Character in Record.into(Class) - methods and similar -#936 - Accept primitive types, such as int.class for type - conversion -#938 - CODEGEN: Add static/instance table field configuration -#939 - Include license.txt and readme.txt in .jar files' META-INF - directory -#953 - Make DefaultGeneratorStrategy methods non-final to allow - for overriding -#954 - Add examples for source code generation of multiple - schemata with Maven -#955 - Generate a reference to every type in a new UDTs.java - class -#957 - Add R Factory.newRecord(UDT) for constructing - attached UDTRecords -#958 - CODEGEN: Add generation-time schema mapping, allowing for - re-writing schemata in jooq-codegen -#960 - CODEGEN: Add code generation configuration parameter to - avoid using the new UByte, UShort, UInteger, ULong wrappers - for UNSIGNED number types -#961 - Use Oracle's SYS.ALL_SEQUENCES.MAX_VALUE to determine the - type of a sequence. -#969 - Add List ResultQuery.fetch(Field, - Class) convenience method - -Bug fixes ---------- -#686 - Reduce the internal API leak by preventing access to - TableFieldImpl, UDTFieldImpl, ParameterImpl -#903 - lag(Field, int, T) erroneously delegates to lead() -#906 - Add more NullPointerException safety to API -#913 - NoClassDefFoundError in JooqUtil.isJPAAvailable() -#920 - Generic type is lost in Cursor.fetchInto(RecordHandler) -#925 - SelectConditionStep should extend SelectConnectByStep, not - SelectGroupByStep -#926 - AbstractRecord.into() fails to convert java.sql.Date into - java.util.Date -#934 - Don't consider static members in reflection utilities when - used with Record.into(Class) and similar methods -#935 - Don't consider final member fields in reflection utilities - when used with Record.into(Class) and similar methods -#937 - In the event of name clash (same name for table and field) - generated code has errors -#945 - Calling UpdatableRecord.setValue() twice with the same - argument causes the changed flag to be reset to false -#948 - Always set the changed flag to true in Record.setValue() -#959 - Compilation errors in generated source code if MySQL enum - values match Java reserved words, such as 'true', 'false', - 'new', etc... -#962 - Postgres ordering of generated enum literals is unstable -#967 - Better document type conversion - -Version 1.7.0 - November 25, 2011 -================================================================= -This is a maintenance release for the 1.x branch. Some important -bug fixes are merged from version 2.0. These include: - -Bug fixes ---------- -#925 - SelectConditionStep should extend SelectConnectByStep, not - SelectGroupByStep -#926 - AbstractRecord.into() fails to convert java.sql.Date into - java.util.Date -#937 - In the event of name clash (same name for table and field) - generated code has errors -#945 - Calling UpdatableRecord.setValue() twice with the same - argument causes the changed flag to be reset to false -#948 - Always set the changed flag to true in Record.setValue() -#951 - Empty Password for jooq-codegen-maven causes NPE - -Version 1.6.9 - November 7, 2011 -================================================================= -This is a maintenance release for the 1.x branch. Developments -on this branch will stop after version 1.6.9. Only important bug -fixes are merged to this branch. Developments for release 2.0 -have started. - -The most important functionality in release 1.6.9 is the newly -added support for JDBC batch operations. You can now batch -execute several queries. - -See the official blog for more information: -http://blog.jooq.org/2011/10/25/jdbc-batch-operations-with-jooq/ - -Features and improvements -------------------------- -#621 - Add support for JDBC batch operations -#794 - Add support for ORDER BY [int value] in order to reference - a column index for sorting -#882 - Optimise Field.isTrue() and isFalse(). Take Field's data - type into consideration. -#885 - Add support for INSERT INTO .. VALUES (..) syntax, - omitting explicit field declarations -#887 - Add List Cursor.fetchInto(Class) - -Bug fixes ---------- -#748 - H2 regression in 1.3.158 regarding stored functions, which - return a ResultSet (this was fixed in H2) -#859 - Derby casting of numeric types to BOOLEAN doesn't work -#886 - Regression in date extract function when used in a - subselect -#888 - Derby casting of VARCHAR to FLOAT (and similar) doesn't - work - -Version 1.6.8 - October 22, 2011 -================================================================= -The main improvement of this release is the re-design of the -stored procedure / function API. With 12 supported RDBMS, which -all have their own idea about what is a stored procedure and what -is a stored function, it has proven to be a better design, to -unite them in one single type: org.jooq.Routine. A routine can -have a return value as well as OUT parameters. It can be embedded -in SQL and used as a field or a table. - -This means, you will need to re-generate your database schema, -when upgrading to jOOQ 1.6.8. After re-generation, you'll need to -fix your client code. These are the package changes: - -- [generated.package].procedures > [generated.package].routines -- [generated.package].functions > [generated.package].routines -- [generated.package].Procedures > [generated.package].Routines -- [generated.package].Functions > [generated.package].Routines - -Oracle generated packages are not re-located. With these -improvements, using stored procedures and functions becomes even -more reliable, especially when cursor types are involved. Read -more about the rationale behind this change: - -http://blog.jooq.org/2011/10/17/what-are-procedures-and-functions-after-all/ - -Apart from that, important improvements have been made in the -area of plain SQL tables. Also, consider a demo integration of -jOOQ with Google Cloud SQL: - -http://blog.jooq.org/2011/10/22/jooq-and-google-cloud-sql-example/ - -Features and improvements -------------------------- -#271 - Don't pre-fetch table meta data when selecting from plain - SQL tables -#489 - Add support for SELECT * (i.e. render SELECT * where - applicable) -#596 - Add support for VARIANCE() and STDDEV() OVER() window - functions -#608 - Add jOOQ version number in generated source code -#670 - Add more Javadoc to Field.xxx() functions -#692 - Add support for ResultSet type returned from HSQLDB - stored functions -#850 - Use http://www.jooq.org as URL for the @Generated - annotation -#854 - Add convenience methods Fields.isTrue(), isFalse() for - conversion of "Y", "YES", "1", "true", "on", etc into a - boolean condition -#870 - Add support for MEDIAN aggregate function -#872 - Add support for STDDEV_POP(), STDDEV_SAMP(), VAR_POP(), - VAR_SAMP() aggregate functions -#874 - Reduce the number of internal classes for dialect-specific - function aliases -#878 - Implement DataType.equals() and hashCode() - -API changes (backwards-compatible) ----------------------------------- -#851 - Change Field.{sortAsc|sortDesc}(List sortList) into - Field.{sortAsc|sortDesc}(Collection sortList) - -API changes (backwards-incompatible) ------------------------------------- -#848 - Purge deprecated API - Prior to 1.6.1 -#849 - Replace Cursor.fetchResult() by Cursor.fetch() -#852 - Review stored procedures / functions concept. Merge them - all into a single "Routine" type - -Bug fixes ---------- -#756 - Error when aliasing HSQLDB and Postgres unnested tables -#761 - Exception when TRACE logging execution with plain SQL - tables involved -#773 - Execute standalone stored functions as CallableStatement - to prevent issues with transactions -#847 - Query.getSQL() doesn't render dialect-specific SQL when - Query is constructed using the fluent API -#853 - DB2 generated convenience methods for stored functions - have unstable ordering -#857 - Derby casting of numeric types to String / VARCHAR does - not work -#858 - SQLDataType.getSQLDataType() should return itself, instead - of null -#860 - SQLite CEIL function is incorrectly simulated. CEIL(2.0) - returns 3.0 instead of 2.0 -#861 - Field.replace(String) generates bad SQL for various RDBMS. - Field.replace(String, String) works, though -#863 - Ingres integration generates illegal SQL when selecting - things like SELECT 1 WHERE 1 = 1 -#866 - Sybase ASE Field.replace(String) function incorrectly - removes the argument string -#873 - Error when selecting two times the same aggregate field -#877 - Compilation error in generated source code when a table - without a primary key has an identity column -#879 - Add Google Cloud SQL Example -#880 - Query.getSQL() does not consider SchemaMapping - -Test cases ----------- -#811 - Loader integration tests fail for SQLite -#812 - CSV Loader test leaves Postgres JDBC connection in an - inconsistent transactional state on error -#856 - Add integration tests for Field.abs() -#865 - Add integration tests for Field.ascii() -#867 - Add integration tests for Field.sum(), avg(), max(), min() -#881 - Re-design H2 stored functions to be pre-compiled, in order - to speed up integration tests - -Version 1.6.7 - September 25, 2011 -================================================================= - -This release coincides with the launch of the new website at -http://www.jooq.org. Hence, it ships with little additions to the -deliverable itself. - -Apart from new convenience methods, the main addition is a Maven -plugin for jooq-codegen contributed by Sander Plas. - -Features and improvements -------------------------- -#797 - Create Maven plugin for source code generation -#825 - Add List> Factory.fetchMany(String) to - allow for fetching several result sets from stored - procedures, such as Sybase ASE's "sp_help" -#838 - Implement MetaDataFieldProvider.toString() -#841 - Add List Result.getValues(Field, Class) -#842 - Add Query.getBindValues() method to allow for extracting - bind values in the correct order -#843 - Add Factory.fetch(ResultSet) to transform a JDBC ResultSet - into a jOOQ Result - -API changes (backwards-compatible) ----------------------------------- -#837 - Avoid final keyword on Object methods, such as .equals(), - .hashCode(), etc - -Bug fixes ---------- -#836 - Bad syntax when selecting from aliased plain SQL tables -#839 - Boolean conversion in getValueAsBoolean() should trim - String values first -#840 - Numeric conversions in getValueAsXXX() should trim String - values first -#844 - NullPointerException when selecting a column from a Result, - that does not exist - -Version 1.6.6 - September 11, 2011 -================================================================= - -Finally, support for another RDBMS has been added. Sybase's other -important product Sybase Adaptive Server Enterprise (or simply -Sybase ASE) is now officially supported by jOOQ - -Apart from this, there had been important improvements with the -recently added INSERT .. RETURNING clause, as well as some fixes -related to DECIMAL / NUMERIC data types - -Features and improvements -------------------------- -#796 - Complete missing public org.jooq.impl Javadoc -#800 - Add support for Sybase Adaptive Server Enterprise -#808 - Add support for INSERT .. RETURNING for Ingres -#809 - Add support for INSERT .. RETURNING for Sybase SQL - Anywhere using SELECT @@identity -#810 - Add support for INSERT .. RETURNING for SQLite using - last_inserted_rowid() -#813 - Add DSL support for INSERT .. RETURNING -#814 - Change TableRecord to reload its trigger-initialised main - key in Oracle and other RDBMS that don't support IDENTITY - columns -#818 - Add SQLiteFactory.rowid() -#819 - Support SQLite AUTOINCREMENT columns as IDENTITY -#820 - Add Factory.fetchOne(String) for executing plain SQL - queries that return single records -#826 - Allow for returning several records in the INSERT .. - RETURNING clause. This now works for DB2, HSQLDB, MySQL, - and Postgres -#827 - Support Sybase SQL Anywhere's TOP n START AT m clause - instead of simulating it with nested SELECT's - -API changes (previous API now deprecated) ------------------------------------------ -#817 - Deprecate Factory.lastID(Identity) - -Bug fixes ---------- -#815 - SQL Server fetching of IDENTITY value is broken -#821 - Optimise ResultQuery.fetchAny() executing fetchLazy() - internally, and only fetching one record from the cursor -#822 - Let Constant cast to more precise NUMERIC/DECIMAL types - in those RDBMS where casting is necessary -#823 - Cannot bind SQLite BigDecimal, BigInteger types - bind - them as String instead -#824 - BigInteger values cannot be bound in DB2, Derby -#828 - Document inefficient implementation for GREATEST and LEAST - in some RDBMS - -Version 1.6.5 - August 28, 2011 -================================================================= - -This release finally adds a loader for CSV data to jOOQ. You can -now load CSV data using a simple fluent API, configuring error -handling, duplicate behaviour and transaction handling, as well -as various CSV parameters. - -This release also changes the way generated keys are retrieved -after INSERT's. Instead of (potentially inconsistently) running -SELECT MAX(pk) immediately after the INSERT, Postgres' INSERT.. -RETURNING clause is used (or simulated), in a single statement. - -Features and improvements -------------------------- -#784 - Add Result.exportXML() to retrieve a DOM document similar - to that of .formatXML() -#792 - Add support for loading of CSV data into tables -#795 - Add List fetch(int, Class) and - fetch(String, Class) convenience methods -#803 - Add support for INSERT .. RETURNING or simulate it where - not available -#805 - Add T[] fetchArray(int, Class) and - fetchArray(String, Class) convenience methods -#806 - Add T fetchOne(int, Class) and - fetchOne(String, Class) convenience methods - -Bug fixes ---------- -#798 - Oracle IN (...) clause with more than 1000 arguments does - not work -#802 - Use "INSERT .. RETURNING" instead of "SELECT MAX(pk)" - to retrieve the primary key of a new record - -Version 1.6.4 - August 07, 2011 -================================================================= - -This release ships with a couple of useful concepts inspired by -other frameworks. These are: - -- selecting into custom POJO's. Results can be mapped to POJO's - by convention or using JPA @Column annotations -- selecting into custom callbacks. This is already a wide-spread - practice in Spring JdbcTemplates. -- selecting long-running queries asynchronously. This idea has - been inspired by the Avaje Ebean framework - -Apart from these changes and some bugfixes, the internal API has -been completely re-designed. The idea here is that query -rendering and variable binding are even faster (less String -objects), more extensible and more accurate. This is a pre- -requisite for many future developments with even more complex SQL -statements, such as for instance CTE's (Common Table Expressions) - -Features and improvements -------------------------- -#137 - Add support for asynchronous query execution using - FutureResult ResultQuery.fetchLater() similar to - Avaje Ebean -#198 - Add SELECT INTO functionality into POJO's using - T ResultQuery.fetchInto(Class) similar to JPA - CriteriaQuery -#728 - Add .fetchInto(RecordHandler) to ResultQuery, Result, - and Cursor to allow for callbacks similar to Spring's - JdbcTemplate/Ollin Framework -#774 - Add more TRACE logging to .fetchLazy() -#777 - CURSOR: Add function alias: UNNEST for TABLE -#781 - Add E function (Euler number) -#782 - Add T Record.getValue(..., Class) methods - for convenient type conversion -#785 - Allow for storing TableRecord with a provided Field[] - indicating the primary key -#786 - Document thread-safety facts in Factory Javadoc -#788 - Add Key.getFieldsArray() convenience method -#793 - Add support for Oracle's SYS_CONNECT_BY_PATH function - -API changes (backwards-incompatible) ------------------------------------- -#758 - Change internal QueryPart rendering and binding API to use - Configuration and Context as callback parameters. If you - use CustomField or CustomCondition, please correct your - implementations accordingly. Other parts of the API should - not be affected -#778 - Purge deprecated API, deprecation prior to jOOQ 1.5.7 -#790 - Purge deprecated generated code, deprecation prior to - jOOQ 1.5.7 - -API changes (previous API now deprecated) ------------------------------------------ -#776 - Deprecate QueryPart.getSQL(), add Query.getSQL() -#789 - Deprecate Record constructors with Configuration - parameter - -Test cases ----------- -#636 - Add integration tests for more advanced CONNECT BY - example -#772 - Add integration tests for selecting cartesian products - (several tables in FROM clause) - -Bug fixes ---------- -#730 - Sybase cannot bind null values in plain SQL -#759 - Omit the TOP 100 PERCENT clause in SQL Server ordered - top-level queries -#767 - An empty Java package is generated for PL/SQL packages - containing underscores -#771 - Some exotic literals are not properly escaped with quotes - yet, e.g. UDT identifiers, VARRAY types, etc. -#775 - Automatic re-attaching after deserialisation does not work - when used with .fetchLazy() -#787 - The UpdatableRecord's internal changed flags are not - updated after INSERTs / UPDATEs - -Version 1.6.3 - July 31, 2011 -================================================================= - -This is mainly a maintenance release with lots of bugfixes, -mostly around code generation, plain SQL tables, and data types. -Please note that generated source code may contain incompatible -changes due to #639 (see below for details)! - -Apart from that, project CURSOR is advancing and it is now -possible to unnest arrays into tables. See this article for -details about where jOOQ is heading with project CURSOR: - -http://blog.jooq.org/2011/07/24/the-power-of-ref-cursor-types/ - -Features and improvements -------------------------- -#679 - Improve H2 NVL2 support as of H2 1.3.156 -#680 - Improve H2 ROUND support as of H2 1.3.156 -#735 - Add README documentation to GitHub -#736 - Add more info regarding number of generated artefacts in - jooq-codegen logging -#750 - Add DataType.isNumeric(), .isString(), .isTemporal(), - .isBinary() -#754 - Log query as executed by JDBC PreparedStatement when - TRACE logging (without inlining variables) -#752 - CURSOR: Add support for selecting from ARRAY types -#762 - Use H2's native support of NVL, instead of COALESCE -#764 - CURSOR: Add support for selecting from ARRAY types - returned from stored functions - -API changes (backwards-incompatible) ------------------------------------- -#639 - Map DECIMAL(n, 0) and NUMBER/NUMERIC(n, 0) data types - to Byte/Short/Integer/Long/BigInteger instead of - BigDecimal in generated source code. Re-generated code - will not be compatible! - -API changes (previous API now deprecated) ------------------------------------------ -#731 - Inconsistent API with Field.lessOrEqualToXXX(). Removed - "To" from method name -#757 - Deprecate Factory.constant() methods - -Test cases ----------- -#731 - Add missing integration tests for equalAll(), equalSome() - and similar methods -#747 - Upgrade H2 to 1.3.158 - -Bug fixes ---------- -#632 - Sybase error : column @p0 not found in nested SELECT -#700 - Restore HSQLDB ARRAY support with INFORMATION_SCHEMA - change in HSQLDB 2.2.3, and some fixes in 2.2.5 -#725 - Cannot insert byte[] data with plain SQL -#733 - H2 changed JDBC type for ResultSet/CURSOR from 0 to -10, - like Oracle -#737 - Compilation errors in generated source code if table - fields contain spaces -#738 - Compilation errors in generated source code if MySQL - procedure parameter type contains two comma-separated - arguments (like DECIMAL(10,2)) -#739 - Postgres navigator methods and keys are not re-generated - in the same order -#740 - Formatting is broken on Result.format() with some special - newline characters -#743 - Make SQL Server INFORMATION_SCHEMA independent from - HSQLDB again, to prevent incompatibility issues -#744 - Ingres REAL and FLOAT4 types are generated as FLOAT/FLOAT8 - which maps to java.lang.Double, instead of java.lang.Float -#753 - Postgres error when binding array that contains null - values -#755 - NullPointerException when converting an array containing - a null value -#766 - Bad decoding of JDBC Types BIGINT (to BigInteger instead - of Long) and REAL (to BigDecimal instead of Float) when - plain SQL tables are involved - -Version 1.6.2 - July 10, 2011 -================================================================= - -This release mainly introduces three new projects. - -Project CURSOR where jOOQ finally supports various RDBMS's TABLE, -CURSOR, and REF CURSOR data types. This is especially useful when -those types are returned from stored procedures and functions. -Cursors are simply mapped to jOOQ Result types and can -thus be used like regular table results - -Project EXPORT aims at exporting data from the database in -various serialisable formats, such as XML, CSV, HTML, Text, JSON. -This project will be continued in the future, to also -deserialise from (some of) these data streams. This will allow -for easy transport of jOOQ Result types over the net. - -Project CODEGEN has finally been started. Many improvements -suggested by jOOQ users will be implemented in the next releases. -In this release, important fixes have been made to prevent -compilation errors in generated artefacts. - -Features and improvements -------------------------- -#61 - EXPORT: Add Result.formatXML() -#166 - CURSOR: Add support for ResultSet type returned from - Oracle stored procedures / functions -#411 - Allow for fetching Map (instead of Record) - and List> (instead of Result) -#549 - Add Factory.function() for plain SQL functions -#611 - Simulate RPAD and LPAD in SQL Server, Sybase -#627 - Add support for Postgres FOR UPDATE OF [table-name] clause -#628 - Add support for REPEAT (SQL Server: REPLICATE) function -#637 - Nicely format time in StopWatch logging output -#640 - Simulate Postgres FOR UPDATE OF [table-name] clause in - other dialects -#649 - CURSOR: Add Cursor.fetch(int) .fetchOne() - .fetchResult(int) .fetchResult() -#653 - Add support for MySQL encryption and compression functions -#660 - Clarify Javadoc of UpdatableRecord to explain its - behaviour when changing the main unique key -#669 - EXPORT: Add Result.formatHTML() -#672 - Add convenience method UpdatableRecord.copy() in order to - reset primary key values for a subsequent INSERT -#675 - EXPORT: Add Result.formatCSV() -#683 - Implement ResultImpl.equals() and .hashCode() -#684 - Implement AbstractStore.equals() and .hashCode() -#685 - Add Store.size() to indicate the maximum index of the - Store -#687 - EXPORT: Add result.formatJSON() -#689 - Create separate builds: jooq-core.zip and - jooq-with-dependencies.zip -#690 - CURSOR: Add support for ResultSet type returned from H2 - stored functions -#695 - CURSOR: Add support for ResultSet type returned from - Postgres stored functions -#697 - Add Factory.fetch(String) for executing plain SQL queries - that return results -#701 - Add ResultQuery.fetchArray() and .fetchOneArray to return - Object[][] and Object[] -#704 - Always add top and bottom line in Result.format() -#705 - Right-align numeric values in Result.format() -#716 - Add SUBSTRING function Field.substring(Field, Field) - taking fields as arguments -#719 - Document risk of SQL injection in plain SQL and literal - factory methods -#726 - Add LENGTH function as a synonym for CHAR_LENGTH - -API changes (backwards-compatible) ----------------------------------- -#698 - Inconsistent API with Factory.fetch(Table [,Condition]) - Let method return Result instead of List -#699 - Let Result extend List - -API changes (previous API now deprecated) ------------------------------------------ -#656 - Decrease verbosity of plain SQL methods. They will just be - called Factory.field() .condition() .table() .query() - -Test cases ----------- -#643 - Add integration test for code generation of invalid and - incomplete types in Oracle -#654 - Add integration tests for master data tables with PK types - other than NUMBER/INT -#655 - Add missing integration tests for TRIM function - -Bug fixes ---------- -#450 - Improve plain SQL integrity checks for bind variables -#610 - CODEGEN: Compilation error in generated source code for - databases with table named 'system' -#646 - An empty Java package is generated for an empty PL/SQL - package. This is unnecessary -#651 - CODEGEN: Avoid importing datatypes in generated source - code to prevent collisions -#657 - NullPointerException when creating a Factory with a null - SchemaMapping -#658 - Master data table code generation is broken for tables - with more or less than 3 columns -#662 - Add support for the missing Postgres data type "bpchar" -#663 - Add support for the missing Sybase data type "int" -#664 - Ingres INTEGER data types are not correctly generated -#665 - HSQLDB Datatype CLOB and BLOB are not supported, when - selecting from plain SQL tables -#666 - The evil bug: Ingres TRIM function only executes RTRIM -#673 - UpdatableRecord.store() doesn't work if called after - .delete() -#702 - Add support for the missing SQLite data type "NULL" -#706 - CURSOR: Ensure that Query.execute() runs in a single - transaction when Postgres refcursor is involved in the - query (this fixes a Postgres JDBC driver flaw) -#724 - NullPointerException when passing a single literal null - bind value to plain SQL methods without casting to Object -#729 - DB2, Derby, Ingres, Oracle cannot bind null values in - plain SQL - -Version 1.6.1 - June 19, 2011 -================================================================= - -In this release, the PORTABILITY project has been implemented. -Finally, the SQLDialect has been removed from most generated -artefacts (Schema, Table, Field, Sequence, etc). Also, the -constructing Factory is not referenced by its created QueryParts -anymore, unless this is really necessary (Query objects, UDT's, -ARRAY types). This leads to higher compatibility between schemata -of different databases, e.g. if users want to use an HSQLDB -development and Oracle productive database. - -Unfortunately, this means that the way stored procedures are -called had to be changed. This is an API break that could not be -avoided. The pre-1.6.1 StoredObject.execute(Connection) method -is deprecated and will be removed in the future. It has been -replaced by StoredObject.execute(Configuration) - -In addition to this project, many more window functions are now -supported, as well as the Oracle-specific CONNECT BY clause for -recursive queries. - -Features --------- -#351 - Add support for Oracle ROWID data type -#452 - PORTABILITY: Create a super-set of RDBMS data types -#453 - PORTABILITY: Don't create dialect-specific QueryParts -#455 - Add support for the Oracle CONNECT BY clause -#587 - Add optional OFFSET clause to form LIMIT .. OFFSET - constructs -#589 - Add extended FOR UDPATE [OF ...] [{WAIT n | NOWAIT | SKIP - LOCKED }] support -#591 - Add support for LEAD() OVER() and LAG() OVER() window - functions -#592 - Add support for the CUME_DIST() OVER() window function -#601 - Add Factory.literal() convenience methods -#602 - Add Factory.val() methods to decrease .constant() - verbosity -#604 - Add support for RESPECT NULLS clause in some window - functions -#605 - Add Factory.use(String) for non-generated schemata -#613 - Add PI function -#616 - Add Factory.two() literal convenience method -#630 - Add support for Oracle CONNECT BY pseudo-columns LEVEL, - CONNECT_BY_ISCYCLE, CONNECT_BY_ISLEAF - -API changes ------------ -#299 - PORTABILITY: Create a dialect-independent meta-model -#588 - Add OVER() keyword to FIRST_VALUE() and LAST_VALUE() API - -Test cases ----------- -#368 - Add integration test for use with schema mapping -#586 - Upgrade H2 to 1.3.155 -#607 - Add integration tests for CRUD / SP's / UDT's / ARRAY's - with SchemaMapping -#612 - Add integration tests for LPAD and RPAD functions -#624 - Add integration test for code generation of invalid/ - incomplete views in Oracle -#631 - PORTABILITY: Add integration tests for using Oracle- - generated schema against an HSQLDB database -#638 - Add missing integration test for DECIMAL data type - -Bugfixes --------- -#176 - Stored procedures / functions in EQUIVALENT schemata - cannot be called -#493 - Bind variable mismatch when constructing bad SQL -#594 - Confusing Javadoc in SELECT DSL API -#603 - Fix DB2 'IGNORE NULLS' clause -#619 - SUBSTRING() function is broken in DB2, Ingres, SQL Server -#623 - SQL syntax error for some MERGE queries in SQL Server and - Sybase -#633 - SchemaMapping is not applied to sequences -#634 - Sequences are not escaped in generated SQL - -Version 1.6.0 - June 05, 2011 -================================================================= - -Apart from supporting various additional standard and non- -standard JOIN constructs, there is now also full support for the -SQL standard MERGE statement and MySQL's ON DUPLICATE KEY variant -thereof. A great number of API enhancements have been added, -which improve the usability of jOOQ. The Ingres database is now -also supported. - -Features --------- -#301 - Add support for Oracle execution hints -#409 - Add support for NATURAL JOIN syntax, where RDBMS allows it -#415 - Make fluent API's underlying SelectQuery objects publicly - available -#429 - Add Ingres support -#475 - Document class-level generic types and in Javadoc -#486 - Add support for SQL MERGE clause -#494 - Allow for omitting schema name in generated SQL -#496 - Automatically update IDENTITY values in UpdatableRecord, - after storing them -#520 - Add support for JOIN ... USING syntax -#524 - Upgrade HSQLDB to 2.2 -#533 - Add ORDER BY [Map] or BY [List] functionality -#534 - Add Result.isEmpty() -#535 - Call upon ConfigurationRegistry.provideFor() before - throwing a DetachedException -#536 - Simulate CASE [value] WHEN [value] THEN [result] END - syntax in Derby -#538 - Add some logging to ConfigurationProvider -#539 - Add possibility to negate numeric values with Field.neg() -#541 - Add support for MySQL ON DUPLICATE KEY clause -#542 - Allow for Collection arguments in INSERT's DSL API -#543 - Allow for creating FUNCTION() OVER() without PARTITION BY - or ORDER BY clause -#546 - Add Factory.use(Schema) -#548 - Add new internal type FieldMap -#550 - Simulate ON DUPLICATE KEY INSERT clause in dialects other - than MySQL -#551 - Add TableMapping, similar to SchemaMapping for mapping - tables -#553 - Add Factory.plainSQLQuery -#554 - Add Factory.plainSQLField with a DataType parameter -#555 - Add UpdateXXX.set(Map) convenience methods to DSL API -#557 - Enhance INSERT DSL API to allow for adding VALUES clause - with InsertXXX.set() syntax -#570 - Add support for the RAND() function -#567 - Add support for Ingres Sequences -#572 - Add support for the ATAN2() function -#573 - Add possibility for additional select() clauses for - convenience -#575 - Add support for the FULL OUTER JOIN syntax, where RDBMS - supports it -#576 - Add support for the CROSS JOIN syntax, where RDBMS - supports it -#581 - Enhance API and allow Collection> - instead of Collection> - -API changes ------------ -#397 - Purge deprecated API - -Bugfixes --------- -#481 - Handle case where an empty record is stored -#522 - Misleading Javadoc in generated stored procedures and - function constructors -#532 - Restore Postgres INFORMATION_SCHEMA -#537 - Prevent null from being added to QueryPartList -#540 - Error when TRACE logging Limit -#544 - Aliased elements are not bound correctly when rendered - with toSQLReference() -#559 - Loosen type safety on overloaded methods to prevent - compilation errors with javac/Netbeans -#560 - HSQLDB DataType REAL is configured incorrectly -#565 - Add integration tests for current_user() function -#569 - ORA-01427 when generating foreign key relations -#571 - Field.trim() not correctly implemented for SQL Server -#583 - Accelerate integration tests: Reset schema only if - necessary - -Version 1.5.9 - May 15, 2011 -================================================================= - -This version ships with lots of new functionality. Finally, the -DSL-style API has been extended to CRUD operations (INSERT, -UPDATE, DELETE)! Also, support for the TRUNCATE TABLE statement -has been added. - -The most important new features include the support for SQL:2003 -standard window functions, which are available in most major -RDBMS. Additionally, basic function support has been widely -extended. - -Features --------- -#148 - Added support for window functions -#204 - Add support for multi-record INSERT's -#416 - Added support for retrieval of IDENTITY values -#433 - Use bind variables for LIMIT and OFFSET -#441 - Added foreign key relationship meta information to the - generated source code -#446 - Beautify ResultImpl.toString() method -#461 - Automatically cast CONCAT parameters to Field if - necessary -#463 - Added support for trigonometric functions -#471 - Added support for the sign function -#472 - Added support for GREATEST/LEAST functions -#474 - Added support for "hyperbolic" functions SINH, COSH, TANH, - and COTH -#482 - Added DSL API for INSERT statements -#483 - Added DSL API for UPDATE statements -#484 - Added DSL API for DELETE statements -#485 - Added "Registry" for client code to provide Configurations - to jOOQ Attachables -#490 - Added support for the TRUNCATE TABLE statement -#495 - Generate source code for IDENTITY columns -#501 - Added support for boolean conversion to Result, Record, - and Store -#503 - Allow for schema navigation via generated artefacts -#518 - Let stored procedures reference owner package - if applicable -#525 - Added NULLS {FIRST | LAST} clause to ORDER BY constructs -#528 - Added Factory.getDataType() convenience method -#530 - Added Factory.zero() and Factory.one() convenience methods - -API changes (jooq) ------------------- -#527 - Weakened type-safety on Field.nvl2() -#529 - Deprecated Factory.select(Object...), added .selectOne() - and .selectZero() instead - -API changes (jooq-meta) ------------------------ -#30 - Add ParameterDefinition for stored procedures, instead of - reusing ColumnDefinition -#499 - Add reference to TableDefinition in ColumnDefinition -#500 - Add AttributeDefinition for UDTDefinition, instead of - reusing ColumnDefinition - -Bug fixes ---------- -#369 - Adapt H2 relations generation to H2's correction of - information_schema.cross_references -#435 - Added integration tests for NESTED SELECTs holding LIMIT - clauses -#460 - Syntax error when using a field with a reserved name -#462 - Fixed Javadoc broken links -#473 - Don't cast when cast is unnecessary -#479 - INSERT statement should not set all fields for a table -#497 - Derby referential code generation is broken, for named - foreign keys -#498 - Oracle package content is generated in arbitrary order -#502 - Syntax error when creating an empty IN condition -#526 - Corrected Javadoc in Field.coalesce() - -Version 1.5.8 - April 29, 2011 -================================================================= - -Finally, jOOQ now supports two important new RDBMS: -SQL Server and Sybase! - -Apart from this great enhancement, there is now also full support -for the non-SQL standard LIMIT clause, even in dialects where the -LIMIT clause is not supported natively (especially Oracle, but -also DB2, SQL Server and Sybase, which have limitations). jOOQ -simulates LIMITs by rendering nested selects filtering on ROWNUM -(Oracle) or on ROW_NUMBER() (DB2, SQL Server and Sybase). - -Other interesting additions are an increasing support for native -mathematical functions. More function support will be added in -future versions. - -Features --------- -#16 - Added support for SQL Server -#21 - Uniform implementation of the LIMIT clause. Implemented - LIMIT clause simulation through analytic functions, where - LIMIT is not supported natively -#97 - Added support for Sybase -#418 - Measure time of various steps in source code generation -#420 - Added support for proprietary SQL extensions "FOR UPDATE" - and "FOR SHARE" -#431 - Added additional statistics to generation log files -#432 - Unified the various "standard" ANSI INFORMATION_SCHEMA - implementations in the jooq-meta artefact -#436 - Added support for the modulo function -#438 - Added floor and ceil functions -#439 - Added support for mathematical functions (logarithms, - exponentials, sqrt) -#447 - Enhanced Field.add() and Field.subtract() to work for date - time fields, also - - -API changes ------------ -#428 - Created new Maven artefact jooq-meta to cleanly separate - database meta-data navigation from code generation -#458 - Decreased DSL verbosity for arithmetic operations and for - ordering - -Bug fixes ---------- -#417 - Restored warning when unknown column type is encountered - in source code generation -#419 - Corrected misleading Select.fetchOne(...) Javadoc -#421 - Optimised AbstractRecord's memory consumption -#448 - Corrected some Javadoc @see links -#449 - Changed Field.concatenate() to accept Field parameters - to avoid generic varargs warnings - -Version 1.5.7 - April 17, 2011 -================================================================= - -This is the first release built with support of Maven thanks to -the help of some jOOQ users! - -The main new features in this release are the improved support -for serialisation/deserialisation of jOOQ objects through use of -the newly introduced "Attachable" interface. - -If using log4j or the newly supported slf4j logging framework -in debug/trace mode, there is the possibility to log query -building/execution time statistics. - -Apart from these new features, fixes were mainly done in the -fields of type casting, HSQLDB 2.1 upgrade support, stored -procedures with OUT, IN/OUT parameters. Please upgrade, if you -are using any of those features. - -If you extend jOOQ as a base implementation for source code -generation, be aware of the fact, that the jOOQ-codegen is -currently undergoing major changes. Expect the code generation -API to stabilise again in one of the next releases. - -Features --------- -#104 - Added maven dependency -#248 - Integrate UDT types with ARRAYs -#295 - Allow for attaching/detaching UpdatableRecords to/from - Configurations -#359 - Added statistics measurement to Query execution for debug - log level -#362 - Added deprecation configuration flag -#364 - Document unknown type in generated source code -#373 - Improve exception handling in code generation -#378 - Added support for Oracle stored functions with OUT - parameters -#382 - Added Factory.attach() methods to re-attach deserialised - Attachables -#394 - Add logging support for SLF4J -#398 - Allow to provide a DataType in Factory.constant() -#399 - Provide access to TypeUtils.convert() methods via DataType -#404 - Added trace logging for measuring the speed of various - query execution steps - -API changes ------------ -#358 - Enhanced DSL API to allow for HAVING clauses without - GROUP BY clauses -#367 - Make Store, Result, QueryPart "Attachable" -#374 - Introduce strategy pattern to code generation for future - support for advanced naming schemes -#375 - Decouple Database from Generator -#381 - Made DataType Serializable -#384 - Deprecated singleton QueryParts -#388 - Unify "internal" API using an Adapter pattern - -Bug fixes ---------- -#187 - Protect generated Record navigation methods against name - clashes -#266 - Added more thorough integration tests for dialect-specific - casting (including some fixes related to varchar types) -#360 - Added more integration tests for the DISTINCT clause -#361 - Add more checks in testInsertUpdateDelete() -#366 - Warn only once per ColumnDefinition, if a data type is - unknown -#377 - NullPointerException when generating invalid stored - function -#380 - Added integration tests to check for proper - serialisability -#386 - Fixed incompatibilities with HSQLDB 2.1.0 -#387 - Fixed unnecessary imports in some Oracle generated - Records -#389 - Fixed javac compiler warning in AbstractStoredObject -#391 - Cannot properly call stored procedures when IN/OUT - parameter is bound to NULL -#392 - Procedures with several OUT parameters may not register - OUT parameters correctly -#410 - Passing null VARRAY values to Oracle stored procedures - causes issues -#412 - limit(int) sets default offset incorrectly in some - dialects - -Version 1.5.6 - March 31, 2011 -================================================================= - -This release consists mainly of code generation bug fixes and -minor API improvements and enhancements. - -The most important improvement is ticket #90, by which lazy -fetching and iteration over data is now supported. jOOQ lets you -keep a reference to a Cursor that has an open JDBC ResultSet, to -fetch data from on-the-fly. - -A few major code generation bugs were reported where the -generated code may cause ambiguity due to an inconsistent API. -This means that you will have to re-generate your schema after -upgrading to version 1.5.6. Some of your code may not compile -anymore, after this upgrade. - -Features --------- -#90 - Added possibility for lazy fetching of data -#208 - Added convenience methods for direct invocation of - sequences' currval() and nextval() attributes -#212 - Created one factory per dialect for better separation of - dialect-specific support -#213 - Generate a factory for each schema -#251 - Opened up base implementations for Field and Condition - to allow for custom implementations by client code -#274 - Integrate H2 ARRAY types with stored procedures -#292 - Documented usage of log4j and java.util.logging -#306 - Added support for the NULLIF function -#319 - Added Field.between(Field, Field) method -#320 - Added trace logging for variable binding and SQL - generation methods -#323 - Added Field.in(Field...) method -#325 - Include release version number in delivered .jar files -#328 - Improved configuration setup documentation page -#333 - Let Result implement Serializable -#334 - Added fetchMap() convenience methods -#335 - Added more functions and aggregate functions examples to - documentation -#338 - Visually improve code generation logging -#339 - Removed skipping of unreferenced UDT's, ENUM's and ARRAY's -#342 - Improved generated referential code by using fetch() and - fetchOne() API -#356 - Let UpdatableRecord.store() and delete() return an int - to indicate whether the record was actually modified - -API changes ------------ -#233 - Allow for joining TableLike instead of Table -#337 - Added generic type > to - InsertSelectQuery -#341 - Fixed API flaw where SelectOnConditionStep.and() methods - and similar ones returned SelectConditionStep, instead of - SelectOnConditionStep - -Bugfixes --------- -#69 - Corrected referential code generation for foreign keys - that reference non-primary unique keys -#85 - Corrected referential code generation for multi-field - foreign keys -#121 - Covered more Factory.executeXXX() methods with integration - tests -#318 - Fixed NullPointerException when executing SELECT * from - aliased tables -#321 - BetweenCondition does not bind left hand side Field - correctly -#322 - InCondition does not bind left hand side Field correctly -#326 - Avoid method overloading where binding to Object - may lead to compile-time ambiguities (with javac) -#343 - Add more foreign key navigation method integration tests -#347 - Add explicit integration tests for schema artefacts - excluded from code generation -#350 - Disambiguate navigation methods if several foreign keys - reference the same entity -#352 - Disambiguate navigation methods if a table ending on S - references itself -#353 - Added integration test for compilation of generated - artefacts with javac (as opposed to the Eclipse compiler) -#355 - Error when storing an UpdatableRecord that has no changed - values - -Version 1.5.5.2 - March 15, 2011 -================================================================= - -A critical bug was reported from the 1.5 release stream where -stored functions did not render their parameters in correct order - -Features --------- -#302 - Map Oracle's NUMBER data type to java.lang.Number in - stored procedures, stored functions - -Bugfixes --------- -#317 - StoredFunctionImpl.asField() renders parameters in wrong - order - -Version 1.5.5.1 - March 13, 2011 -================================================================= - -In version 1.5.5, there was a fatal bug breaking Derby source -code generation. Only the Derby dialect is affected. Please -update immediately, if you are using jOOQ's Derby integration - -Bugfixes --------- -#315 - Generated master data records are not sorted by PK -#316 - Derby code generation fatally broken - -Version 1.5.5 - March 12, 2011 -================================================================= - -This version is released early as there are some important -bugfixes. Additional improvemetns include: - -- Improved DSL related to conditions in HAVING and JOIN clauses -- Support for Oracle-style functions, such as NVL, NVL2, COALESCE - DECODE, etc - -Features --------- -#304 - Add support for Oracle NVL function -#305 - Add support for COALESCE function -#308 - Add support for Oracle NVL2 function -#311 - Add support for Oracle DECODE function - -API changes ------------ -#223 - Enhance DSL to accept and(), or() and similar methods in - JOIN steps -#224 - Enhance DSL to accept and(), or() and similar methods in - HAVING steps - -Bugfixes --------- -#297 - Fixed Factory.concatenate() function -#298 - Added integration tests for nested selects in HAVING - clause -#300 - Added integration tests for nested selects in JOIN clause -#303 - Javadoc correction -#307 - Accelerated integration tests -#309 - Fixed JDBC variable binding issue related to Conditions - where the lhs is a function (e.g. stored function) and the - rhs is a constant -#310 - Fixed issue where fetchOne() methods throw - NullPointerException if no result record is available -#312 - Fixed issue where Field.equal(...) methods rendered - unexpected SQL when rhs null is cast to a type -#313 - Fixed Derby cast type for VARCHAR -#304 - Let the DerbyDataType default for java.lang.String be - VARCHAR, not LONG VARCHAR - -Version 1.5.4 - March 04, 2011 -================================================================= - -Feature #243 required a minor API change in the base classes of -generated source code. This means you have to re-generate all -your jOOQ artifacts in order to migrate to 1.5.4. The artifacts -themselves should be regenerated in a compatible way, such that -your client code should not be affected. If this is not the case, -please report a ticket here: - - https://github.com/jOOQ/jOOQ/issues - -Apart from the Derby RDMBS and some new data type support, there -have been many new convenience methods added all over the API. -For instance, if type-safety is not really a requirement, there -are lots of possibilities to use plain SQL directly in the DSL. -In that case, data can be accessed from Record, Results, not only -through Field, but also through field names or indexes. - -Check out the updated documentation (soon) here: - - http://www.jooq.org - -- Support for the Derby RDBMS -- Support for casting. This allows for even greater flexibility - in cases where jOOQ cannot 100% ensure type-safety -- Support for ARRAY types. Oracle, Postgres, HSQLDB and H2 ARRAY - types are now supported natively as regular bindings in - jOOQ's Field -- Support for dialect-specific data types. CHAR, VARCHAR, CLOB - are no longer treated equally as java.lang.String. Their - type heritage is also generated -- More sequence support -- Lots and lots of bug fixes - -Features --------- -#95 - Support for the Derby RDMBS -#163 - Add support for JDBC type ARRAY (with Postgres) -#209 - Add support for DB2 sequences -#210 - Add support for H2 sequences -#211 - Add support for HSQLDB sequences -#215 - Support for SQL casting using as cast type -#246 - Support for SQL casting using dialect-specific data types -#254 - Add HSQLDB support for ARRAY types -#256 - Add Oracle support for VARRAY types -#257 - Integrate ARRAY types with stored procedures -#261 - Add a global type mapping to the generated Schema object -#267 - Add DataTypeDefinition for further abstraction of data - types in code generation -#269 - Add H2 support for ARRAY types -#290 - If log4j is not on the classpath, use java.util.logging - instead, as fallback - -API Changes ------------ -#156 - Allow for results to be accessed by index, not by field -#218 - Corrected bad method signature: - Record.getValueAsLong(Field, Integer) -#219 - Extended Result and Select API's to be more similar to - that of Record -#232 - Add more convenience plain SQL support to the API -#235 - Add convenience methods to Record, Result and Select for - access of data via field name -#243 - Refactor DataType implementations in order to allow for - the use of generics -#259 - Add field type to database meta data (ColumnDefinition) -#260 - Add field type to database meta data (Field) -#262 - Add default behaviour for Record.getValue(Field) -#276 - Add Javadoc as a ZIP file to the jOOQ distribution - -Bugfixes --------- -#125 - Add more plain SQL integration tests -#191 - Add more integration tests for nested unions -#205 - Implemented workaround for handling Postgres stored - functions with UDT OUT parameters -#214 - Fixed NPE when generating a stored function with an - unknown parameter type -#216 - Fixed some cases where binding of BigInteger is not done - correctly -#220 - Syntax error when using select statement in a CASE clause -#221 - Corrected integration tests for combined update and - select statements -#222 - Added integration test for INSERT statements having - nested SELECT statements for their fields -#225 - Correctly cast array types in Postgres -#230 - Potential misuse of Blob and Clob in H2's JDBC types -#239 - Factory.fetchAny() is not implemented for SQLite -#244 - Fixed peculiar MySQL casting support where cast types do - not match any data types -#245 - Fixed NPE when reading null dates in SQLite -#249 - Added ARRAY type integration tests -#255 - Stored procedure bind variables get mixed up when any - argument is null -#263 - Correctly handle Postgres function overloading -#264 - Ambiguous funciton calls when calling overloaded functions - with null parameter -#281 - Handle compilation errors when generating stored - procedures with > 254 parameters -#283 - Fixed compilation errors in generated source code for - Oracle's UDT table type -#284 - Fixed compilation errors in generated source code for - Oracle procedures in packages, when they have no - parameters -#285 - Fixed compilation errors in generated source code for - Oracle tables with the same name in different schemata -#286 - Fixed name collisions in generated objects with the - java.lang.* package -#288 - Prevent the creation of UNION queries with bad syntax - in MySQL -#289 - Correctly alias fields within UNION queries for some - dialects, which then only require the "AS" keyword -#291 - Cannot create an aliased field called "year" in Postgres - -Version 1.5.3 - January 13, 2011 -================================================================= - -- Lots of stored procedure support was implemented -- Support for sequences was added -- The final decision to postpone support for DB2 UDT's was made -- Some code generation bugfixes - -Features --------- -#36 - Added stored procedure / stored function support for HSQLDB -#140 - Added support for Oracle sequences -#147 - Added support for H2 stored functions -#162 - Correctly integrate UDTs with stored procedures -#170 - Added support for Postgres stored functions -#186 - Added support for more Oracle PL/SQL simple data types -#193 - Simulate support for H2 "stored procedures" -#195 - Simulate support for Postgres "stored procedures" -#206 - Added support for Postgres sequences - -API changes ------------ -#180 - Improved DSL for constant values -#181 - Allow for referencing Field in function argument list -#189 - Renamed convenience methods in org.jooq.Record -#207 - Add fetchOne(Field) method to org.jooq.Select API - -Bugfixes --------- -#182 - Protected generated Record classes against clashes with inherited methods -#183 - Fixed NullPointerException, when generating master data tables with - NULL fields -#184 - Fixed IllegalArgumentException, when a data type is present in the - schema, but unavailable in code generation logic -#185 - Code generation should not fail when single elements cannot be generated -#188 - Improved integration tests for stored procedures / functions / packages -#196 - Increase RDMBS version compatibility by avoiding "SELECT *" in code - generation logic -#199 - Added integration tests for stored procedures in RDBMS that do not - support OUT parameters -#201 - Fixed issue in DB2 where stored procedures without parameters were not - generated. -#202 - Added integration tests for stored procedures / functions without - parameters - -Version 1.5.2 - December 27, 2010 -================================================================= - -- Improved support for stored procedures, also in packages -- A minor API change was inevitable to implement #173. The API change only - concerns the INTERNAL API. Deprecation marks are added and deprecated items - will be removed in 1.6.0 -- Experimental SQLite database support -- Some important bug fixes - -Features --------- -#25 - Added support for Oracle packages -#114 - Added support for Oracle UDTs -#145 - Added support for the SQLite database -#150 - Generate static convenience methods for stored procedures / functions -#151 - Generate static convenience methods for stored function fields -#152 - Generate meaningful serialVersionUID in generated classes -#173 - Added support for EQUIVALENT schemata - -API changes ------------ -#159 - Added convenience method List getValues(Field) to Result -#165 - Added convenience methods for creating EXISTS clauses -#169 - Improved DSL for WHERE clauses - -Bugfixes --------- -#68 - Prevent issues originating from overloaded stored procedure names, - generating identical Java class names -#153 - Fixed issue with generated code for DB2 stored functions -#154 - Fixed issue with generated code for DB2 stored functions -#155 - Fixed issues with database NULL not being mapped correctly to Java NULL - when selecting values that have a primitive type (int, long, etc) -#158 - Potential ClassCastException when using Field -#171 - Corrected issue related to selection of default schema in DB2 -#177 - Fixed issue related to generated code for tables or UDTs without columns - - -Version 1.5.1 - December 13, 2010 -================================================================= - -- H2 database support thanks to Espen Stromsnes -- Improved stored procedure support - -Features --------- -#96 - Added H2 database support -#101 - Added stored procedure / stored function support for Oracle -#138 - Added stored procedure support for DB2 -#146 - Added support for DB2 functions - -API changes ------------ -#143 - Added convenience methods to Record - -Bugfixes --------- -#84 - Implemented referential code generation for foreign keys that do not - match their primary keys' types -#141 - Encoding problem in generated master data classes - -Version 1.5.0 - November 22, 2010 -================================================================= - -- A big one. Major API changes / improvements -- Added lots of convenience methods -- UDT support -- Enum support -- DB2 support thanks to Espen Stromsnes -- "Light" dependency to log4j added. jOOQ will still run without it - -Features --------- -#1 - Create support for UDTs (so far only for PostgreSQL) -#15 - Added DB2 support -#60 - Added support for nested selects in INSERT and UPDATE - statements -#83 - Added log4j logging to code generation and runtime -#87 - Add support for arithmetic expressions -#105 - Added support for ENUM data types, where applicable - (MySQL and PostgreSQL so far) -#110 - Added execute and fetch convenience methods -#111 - Added missing "select distinct" support -#122 - Annotate generated classes with javax.annotation.Generated -#123 - Generate user enum fields from data values (master data) -#124 - Added PlainSQLTable -#127 - Added not() operator to Condition -#135 - Added convenience methods andNot() and orNot() in - Condition - -API changes ------------ -#89 - Removed support for DataSource. jOOQ is not a transaction - manager -#92 - Added SortField type to be used for sorting -#99 - Provide better access to functions (No more FunctionFactory) -#116 - Merge Manager functionality into Factory -#118 - Improve API of org.jooq.Field -#119 - Improve subquery condition API -#132 - Reduced much of the select query API -#134 - Better separation of SelectQuery and SimpleSelectQuery - -Bugfixes --------- -#109 - Error when executing select * if generated schema does not - match actual schema -#115 - Fix various "null" pseudo field issues -#126 - Error when selecting a single field from a union nested - select -#129 - Fixed performance issue in Oracle code generation for - very large databases - - -Version 1.4.4 - November 22, 2010 -================================================================= - -Unreleased version, fixes included in 1.5.0 - -Bugfixes --------- - -#133 - JoinCondition does not take comparison operator - -Version 1.4.3 - October 25, 2010 -================================================================= - -Some more bugfixes - -Bugfixes --------- - -#71 - Generated code does not compile, when foreign key and - primary key have a data type mismatch -#73 - In Oracle generated code, multi-field foreign keys may - generated bad relations code -#82 - Conversion of literals to camelcase fails if numbers are - involved - -Version 1.4.2 - October 22, 2010 -================================================================= - -Various bugfixes and minor improvements - -Features --------- -#66 - Add support for CASE or DECODE expression - -API changes ------------ -#77 - Functions should not extend FieldImpl, but a new - AbstractField -#78 - QueryPart pollutes declared method space of its - implementations. Hide it by indirection - -Bugfixes --------- -#64 - Code generation fails when foreign key references a unique - key that is not the primary key. Code generation for these - cases is omitted -#67 - When loading properties files, a leading / seems to be - mandatory. This is preventing users from correctly setting - up jOOQ the first time -#70 - Add support for Oracle datatype TIMESTAMP(6) -#72 - Name clashes in generated Tables -#75 - Constant does not bind its values. -#76 - Constant should not render strings all the time -#79 - Constants are not properly escaped -#80 - Position function does not bind any variables -#81 - Add cast function to Constants in HSQL - -Version 1.4.1 - October 18, 2010 -================================================================= - -Oracle patch release - -Features --------- -#63 - Generate referential functionality for Oracle - -Version 1.4.0 - October 17, 2010 -================================================================= - -Support for PostGreSQL was added. -Added lots of OR-mapping functionality. -There is a general API change due to various new features. - -Features --------- -#14 - Add PostGreSQL support -#40 - Resolve foreign keys. Allow for navigation between objects. -#42 - Add PlainSQLField -#45 - Add "dirty" flag to Record's values. This allows for - updating only relevant data. -#47 - Complete implementation for UPDATE, INSERT, DELETE - statements. Added some missing functionality. -#48 - Add more support for Date, Time, Timestamp fields. -#51 - Add a org.jooq.impl.Manager class that provides common - utility methods for CRUD operations - -API changes ------------ -#10 - Add second generic type . This is a - prerequisite for many OR-mapping features -#18 - Use org.jooq.Record in InsertQuery and UpdateQuery -#46 - Create UpdatableRecords as a prerequisite for JPA and true - OR-mapping. These records support store() and delete() - methods -#52 - Add default constructor in generated Records. -#53 - Add refresh functionality to UpdatableRecords. See also #46 -#54 - Add a state to the factory class -#56 - Reduce API, remove unnecessary Condition subinterfaces -#57 - Reduce API, remove unnecessary QueryPart interfaces - -Bugfixes --------- -#49 - NullPointerException when generating relations on schema - subset -#58 - Count function renders bad SQL in various dialects -#59 - Exception when selecting unaliased functions in queries - -Version 1.3.0 - August 24, 2010 -================================================================= - -Support for HSQLDB was added. -There is a major API change due to #44. - -Features --------- -#29 - Generate primary keys and foreign keys in Oracle code - generation -#34 - Add support for HSQLDB -#39 - Generate primary keys and foreign keys in HSQLDB code - generation -#41 - Add documentation to QueryFactory and Functions - -API changes ------------ -#23 - Add support for more advanced joins -#32 - Merge SelectQuery and ResultProviderQuery interfaces -#44 - Let Query methods return "this" - -Bugfixes --------- -#35 - Add unit tests for HSQLDB support -#37 - Syntax error in combined select queries! - The usage of combined queries in MySQL may still be a bit - awkward. Keep an eye out for further fixes -#43 - Join with aliased tables doesn't work - -Version 1.2.0 - August 21, 2010 -================================================================= - -The added Oracle support is now unit tested and more stable. -The Oracle NUMBER data type is mapped more precisely to Java -types. - -Features --------- -#12 - Model primary keys and foreign keys in generated code -#22 - Improve mapping of Oracle NUMBER data type -#26 - Add Plain SQL QueryParts -#27 - Add support for HAVING clause - -Bugfixes --------- -#24 - Add Unit tests for oracle database (and fixed bugs) -#31 - Pull up addOrderBy() methods from SelectQuery to - ResultProviderQuery - -Version 1.1.0 - August 17, 2010 -================================================================= - -The main new feature is the Oracle support. Wait for -Version 1.1.1 for that support to be stabilised, as there are no -Oracle unit tests running against an Oracle database yet. - -Features --------- - -#2 - Add support for inner / nested selects -#3 - Add more function support -#4 - Implement filtering functionality for code generation -#6 - Add Oracle Support -#9 - Create true POJO's (implementing org.jooq.Record) with - getters and setters -#17 - Make org.jooq.impl.Parameter independent of Field - -Bugfixes --------- - -#11 - Code generation does not remove files - -Version 1.0.1 - August 14, 2010 -================================================================= - -Features --------- - -#5 - Prevent code regeneration, if no changes were made -#7 - Implement ant task for code generation - -Version 1.0.0 - August 14, 2010 -================================================================================ -Initial Release \ No newline at end of file diff --git a/jOOQ-website/inc/RELEASENOTES-2.2.txt b/jOOQ-website/inc/RELEASENOTES-2.2.txt deleted file mode 100644 index a9e57cfd08..0000000000 --- a/jOOQ-website/inc/RELEASENOTES-2.2.txt +++ /dev/null @@ -1,2527 +0,0 @@ -jOOQ Release notes -================== - -For an interactive overview, see also -http://github.com/jOOQ/jOOQ/issues - -For a formatted text version, see -http://www.jooq.org/notes.php?version=2.2 - -For a text version, see -http://www.jooq.org/inc/RELEASENOTES-2.2.txt - -Version 2.2.3 - July 1, 2012 -================================================================= - -This is a minor patch release, fixing some issues - -Bug fixes ---------- -#1109 - Standalone TABLE or VARRAY types are not correctly - initialised before referencing tables load them -#1360 - jOOR issue 12: "Don't reset the accessible flag to false, - if setting it to true is required, to avoid race - conditions in concurrency contexts" -#1394 - NullPointerException when omitting element in - code generation configuration -#1403 - Documentation bug: ctx.statement() can be replaced in - executeStart(). This is not documented -#1406 - Compilation errors in generated source code when Postgres - stored procedure parameter is called "NAME" -#1407 - Compilation errors in generated source code when Postgres - data-type is "any" (with quotes!) -#1441 - Performance issue with AbstractDataType.convert(Object). - Avoid conversions when they're obviously unneeded -#1449 - Generate some meaningful Javadoc into the generated - [schema-name]Factory classes -#1454 - Add line breaks to generated Javadoc where appropriate -#1465 - Custom generator strategy's printImplements() is called - with Mode == RECORD for tables -#1478 - Caching SQLDialect in AbstractDatabase heavily improves - code generation performance -#1483 - Inefficient cloning of default settings using JAXB - unmarshalling leads to non-negligible overall overhead. - Use serialisation instead (short of a useful XJC clone - plugin) -#1490 - Compilation error when a SQL Server stored procedure has - a parameter named "value" -#1493 - Bad syntax for SELECT /*+hint*/ DISTINCT ... in Oracle -#1515 - Splitting of large NOT IN conditions is wrong. The parts - should be connected with AND, not with OR - -Version 2.2.2 - April 22, 2012 -================================================================= - -This is a minor patch release, fixing some issues - -Bug fixes ---------- -#1308 - Oracle's DataTypeDefinition reports the length of a BLOB - / CLOB data type to be 4000 -#1324 - Code generation error in Oracle 10g when generating - stored procedures -#1329 - NullPointerException when passing null to - timestampDiff(Field, Field) -#1343 - Regression in insertInto(...).values(...). Cannot pass - Field to values() -#1311 - NPE at org.jooq.util.AbstractDatabase.getOutputSchema() - -Version 2.2.1 - April 12, 2012 -================================================================= - -This is a minor patch release, fixing some issues related to the -code generation of the new CUBRID integration as well as other, -minor issues. Upgrade if you're using CUBRID - -Bug fixes ---------- -#1287 - Remove oracle.sql dependency also from OSGi information - in pom.xml -#1288 - SQL syntax errors from sequences when using RenderMapping - with defaultSchema -#1289 - DefaultBindContext logs as Util.class -#1297 - Compilation error in CUBRID generated artefacts - referencing OBJECT types -#1298 - Avoid source code generation errors when generating code - for unknown, dialect-specific data types - -Version 2.2.0 - April 09, 2012 -================================================================= - -Finally, jOOQ has added support for another database, and a very -promising one, that is. http://www.cubrid.org is a surprisingly -original mixture of a relational and object-oriented database -where tables and classes are synonyms, so are records and -instances. The CUBRID database has a high level of compatibility -with MySQL and is aimed at MySQL users wanting more performance -for their web applications. For details, see the slides here: - -http://www.slideshare.net/cubrid/growing-in-the-wild-the-story-by-cubrid-database-developers - -jOOQ is proud to have become a CUBRID partner, looking forward -to further cooperation with CUBRID in the near future. - -Apart from that, jOOQ now fully supports SQL standard INTERVAL -data types. With JDBC and JPA lacking official support for this, -jOOQ aims for becoming the tool of choice for vendor-specific -date time arithmetic. True INTERVAL data type support is given in -HSQLDB, Ingres, Oracle, Postgres databases. Besides that, CUBRID -and MySQL support INTERVAL data type arguments in functions. In -other dialects, jOOQ simulates DATEADD(), TIMESTAMPADD(), -DATEDIFF(), TIMESTAMPDIFF(). - -For jOOQ's OLAP friends, there is now also support for the Oracle -LISTAGG function (LIST() in Sybase, XMLAGG() in DB2, STRING_AGG() -in Postgres, GROUP_CONCAT() in CUBRID, H2, HSQLDB, MySQL). -LISTAGG is an "ordered aggregate function", meaning that the -aggregation is done using a specific ordering. Keep an eye out -for more such function support in future versions. - -Features and improvements -------------------------- -#566 - Add support for INTERVAL data types -#585 - Add support for DATE, TIME and INTERVAL arithmetic -#1183 - Add support for DEFAULT values in Oracle stored procedure - parameters -#1243 - Let generated POJOs (and Records) extend base classes - and implement interfaces -#1252 - Avoid JDBC escape syntax for Oracle stored procedure - calls. Generate PL/SQL syntax, instead -#1255 - Let generated Tables contain a public default constructor - to be able to extend those classes - Github issue #12 -#1257 - Add CUBRID support -#1268 - Add Factory.field(String, QueryPart...) to generate - custom clauses -#1269 - Add YEAR(), MONTH(), DAY(), HOUR(), MINUTE(), SECOND() - function support as shortcuts for EXTRACT() -#1273 - Simulate GROUP_CONCAT() aggregate function using Oracle's - LISTAGG() function, where available -#1274 - Add support for the Oracle LISTAGG(...) WITHIN GROUP - (ORDER BY ..) [ OVER (..) ] aggregate / analytic function -#1275 - Simulate Sybase LIST() aggregate function using Oracle's - LISTAGG() function -#1276 - Simulate Oracle's LISTAGG() in DB2 using XMLAGG(), - SUBSTR() and CONCAT() -#1278 - DEBUG log both executed SQL and SQL with inlined bind - values - -API changes (backwards-compatible) ----------------------------------- -#1262 - Pull up OracleFactory.prior() and other CONNECT BY - related methods to Factory - -Bug fixes ---------- -#1241 - Wrong variable binding when comparing CHAR columns in - Derby and DB2 without explicit casting to VARCHAR -#1244 - Cannot override class name in GeneratorStrategy in - Mode.POJO -#1248 - Setting both false and - true leads to compilation errors -#1256 - Fixed code generation issue with H2 user defined - functions returning VARCHAR -#1263 - Pass fetchsizes <= 0 to the JDBC driver (for vendor- - specific MySQL compatibility) -#1270 - Most databases allow for multiple identical foreign keys. - This leads to compilation errors in generated source code - -Version 2.1.0 - March 18, 2012 -================================================================= - -With this version, jOOQ attempts to follow versioning rules -imposed by semantic versioning: http://semver.org/ -There will be 1 minor release per month, and a couple of patch -releases per year, depending on popular demand - -The main improvements for this release include - -- The possibility of providing jOOQ with a custom type mapping. - You can now define your own Converter types that are used by - jOOQ to map a database's SQLDataTypes to your custom types. - This is particularly useful for Java's enums. Read more about - custom converters in the manual: - http://www.jooq.org/manual/ADVANCED/CustomTypes/ - -- There are a lot of new runtime configuration options to control - the SQL style of SQL rendered by jOOQ. You can now specify - whether table/column names should be quoted / capitalised / - lower-cased, whether SQL keywords should be capitalised or not, - etc... - -- The handling of NULL has been improved in favour of using jOOQ - as a SQL builder library (e.g. along with Spring for execution) - NULL is no longer inlined, but bound as a variable. - -- jOOQ now supports simulation of the relational division - operation using an intuitive syntax. Read more about the - relational division here: - http://en.wikipedia.org/wiki/Relational_algebra#Division - -Features and improvements -------------------------- -#161 - Add runtime configuration to pretty print rendered SQL -#349 - Add SQLite relations support -#491 - Add runtime configuration for SQL keyword style (upper - case, lower case) -#521 - Add runtime configuration for SQL reference style (upper - case, lower case, as-is, quoted) -#1150 - Add code generation option to disable generation of - records -#1181 - Add support for SQL Server data types timestamp and - rowversion -#1188 - Load default Settings from the classpath at - /jooq-settings.xml, or from -Dorg.jooq.settings -#1193 - Specify main-class in jOOQ Console's manifest.mf and - include dependency in jar file -#1194 - Add ColumnDefinition.isNullable() -#1202 - Add support for the relational division operation: - A.divideBy(B).on(A.ID.equal(B.A_ID)).returning(A.X, ...) -#1207 - Add Factory.batch(Collection) for - convenience -#1208 - Render @javax.persistence.Column(nullable = false) - property, if available -#1209 - Render @javax.persistence.Column(length, precision, - scale) properties, if available -#1215 - Add org.jooq.Converter for custom type mapping -#1216 - Overload Record, Result.getValue() and .setValue() - methods to accept a Converter -#1217 - Add EnumConverter as a base type for custom enum - converters -#1218 - Add code generation options to generate - referencing a Java type and a Converter -#1224 - Add DataTypeDefinition.getLength() to jooq-meta's type - system -#1233 - Support custom JDBC properties for jooq-codegen -#1234 - Add Database.getTable(SchemaDefinition, String, boolean) - to fetch tables case-insensitively -#1239 - Add Factory.fetchLazy(String, Object...) - -API changes (backwards-compatible) ----------------------------------- -#1191 - Deprecate ConfigurationRegistry and replace by equivalent - ExecuteListener feature -#1219 - API Bug: Cannot use LIMIT .. OFFSET along with FOR UPDATE - -Bug fixes ---------- -#625 - Remove dependency from generated Routines to the - generator's SQLDialect -#1128 - NULL is inlined in INSERT statement instead of binding it - as a variable. This can cause issues when using jOOQ with - Spring -#1137 - Exclude MySQL column-level enum types when that column is - overridden by a -#1158 - Derby cannot handle inlined NULL literals in some - contexts -#1180 - Execute BatchMultiple (multi-query batch query), when - executing BatchSimple (single-query, multi-bind-value - query) with StatementType == STATIC_STATEMENT -#1189 - TableMapping regression for SQLite database -#1190 - Cannot store SQLite records when using - StatementType.STATIC_STATEMENT -#1199 - Table.getFields() returns an internal representation of a - table's field list. Make generated tables immutable! -#1200 - Internal API leak exposed through covariance in - AbstractType.getFields() -#1211 - Enforce method name disambiguation also when using custom - strategies in jooq-codegen -#1212 - Enforce identifier disambiguation also when using custom - strategies in jooq-codegen -#1221 - Incorrect ExecuteListener invocation for INSERT .. - RETURNING. executeStart() and executeEnd() are omitted -#1223 - Cache ExecuteListener classes for performance -#1225 - Bind NULL byte[] as java.sql.Types.BINARY instead of - BLOB in Postgres, to avoid errors -#1226 - Bind NULL UDTs with their associated type name in Oracle -#1232 - SQLException when Factory.fetch() does not return a - ResultSet -#1237 - Don't generate enum classes for columns in MySQL tables - that are excluded from code generation - -Version 2.0.5 - February 26, 2012 -================================================================= - -This release finally introduced basic runtime configuration -features for the jOOQ Factory. This configuration now includes: - -- Execute listener and SQL tracing support. jOOQ allows you to - hook your own listeners into jOOQ's query execution engine to - be notified of all sorts of events -- The existing SchemaMapping features. They are now part of the - runtime configuration -- StatementType settings. Specify whether a Factory should - execute java.sql.PreparedStatements (with bind variables) or - static java.sql.Statements with inlined variables. - -The runtime configuration is documented here: - -http://www.jooq.org/manual/JOOQ/Factory/ - -The listener and tracing support has been requested by -Christopher Deckers, a new jOOQ user who has had the courtesy to -contribute the new jOOQ Console, which is documented here: - -http://www.jooq.org/manual/ADVANCED/ExecuteListener/ - -Apart from that, another long-requested feature is now fully -implemented: The GeneratorStrategy, allowing for custom naming -strategies in generated source code. This will allow for -generating custom table / record class name prefixes / suffixes, -as well as overriding the default behaviour for rendering UPPER, -lower and CamelCase artefacts. See the manual for details: - -http://www.jooq.org/manual/META/Configuration/ - -Features and improvements -------------------------- -#93 - Add Field.equalIgnoreCase(), Field.notEqualIgnoreCase() -#408 - Add class prefixes, suffixes and other options to the - code generator -#492 - Add runtime configuration -#1107 - Let Field.contains() support the Postgres ARRAY @> ARRAY - operator -#1140 - Add ResultQuery.fetchResultSet() to return the underlying - JDBC result set -#1143 - Add Result.isNotEmpty() for convenience -#1145 - Add runtime configuration to specify whether jOOQ should - execute java.sql.PreparedStatement (with bind variables) - or a java.sql.Statement (with inlined parameters) -#1146 - Add Query.getSQL(boolean) to indicate that bind values - should be inlined (as a convenience for - Factory.renderInlined(QueryPart)) -#1148 - Add Cursor.resultSet() to expose the underlying ResultSet -#1149 - Allow for optional - "http://www.jooq.org/xsd/jooq-codegen-2.0.4.xsd" - namespace in jooq-codegen configuration -#1152 - Add & org.jooq.EnumType> - E MySQLFactory.enumType(Class, int) for enum reverse - lookups of MySQL-specific enums -#1159 - Support matching numbers with LIKE, e.g. ID LIKE '%33%' -#1160 - Implement Field.contains(), .startsWith(), .endsWith() - for numeric values, too -#1161 - Use reflection to remove compile-time dependency on - ojdbc for creating ARRAYs -#1162 - Integrate jOOR into jOOQ for simpler reflection -#1164 - Distinguish between Definition.getInputName(), - .getOutputName() -#1165 - Add constraint name to generated javadoc -#1167 - Trivial issue with org.jooq.Factory.exists Javadoc - - GitHub issue #10 -#1169 - Add Configuration.setData(), getData() to convey custom - data in a configuration's lifecycle -#1172 - Add runtime configuration to deactivate JooqLogger -#1177 - Add jOOQ-Console module to jOOQ -#1184 - Add DataType.isArray() - -API changes (backwards-compatible) ----------------------------------- -#1142 - Rename Result.exportXML() to Result.intoXML() to stay - more consistent -#1151 - Deprecate SchemaMapping in favour of new runtime - configuration - -Bug fixes ---------- -#978 - Schema.getTables() and similar methods return empty lists - when Schema is mapped with SchemaMapping -#1153 - Bad inlining of booleans in Sybase ASE / DB2 / Oracle - SQL Server / SQLite -#1154 - Bad inlining of byte[] in most dialects -#1155 - byte[] are erroneously converted to String when using - Record.intoArray() -#1156 - Bad inlining of DATE / TIME / TIMESTAMP data types in - Ingres (and other dialects, when the setting differs from - the default) -#1166 - Some generated Javadoc uses naming strategy or plain - output name, instead of qualified output name -#1168 - Oracle packages are generated as static, instead of - static final -#1175 - Factory.use() seems to render SQL with the Schema name - still present -#1179 - Oracle-generated ArrayRecords need a reference to - org.jooq.Schema to read TABLE of OBJECT from stored - procedures - -Test cases ----------- -#1147 - Add integration tests for executing SQL generated using - Factory.renderInlined() - -Version 2.0.4 - February 12, 2012 -================================================================= - -This release introduced many improvements to source code -generation. These improvements include: - -- Maven and standalone code generation now use the same XML - configuration, which is read by jOOQ-codegen using JAXB. This - allows for more complex configuration elements in the future -- jOOQ-codegen can now handle multi-schema databases and generate - code for tables referencing tables from other schemata. This - is integration tested against the SQL Server AdventureWorks - database -- jOOQ now allows to generate simple POJOs in addition to Records - and to annotate both POJOs and Records with JPA annotations - such as @Entity, @Table, @Id, @Column, @UniqueConstraint, etc. - -You can migrate your existing .properties configuration by running -> org.jooq.util.GenerationTool /your.properties migrate - -Besides that, there is a lot of ongoing work to improve the -integration of Oracle's TABLE and VARRAY types. - -Features and improvements -------------------------- -#8 - Add JPA annotations to generated POJOs / Records -#282 - Add support for multi-schema databases -#287 - Add support for Oracle TABLE types -#395 - Use XML configuration file instead of properties file -#1089 - Add Field.contains(), .startsWith(), .endsWith() as a - convenience for Field.like() (including escaping) -#1092 - Move master data table configuration from - generator.generate to generator.database namespace -#1093 - Add support for generator.strategy in Maven source code - generation -#1094 - Add support for generator.database.date-as-timestamp in - Maven source code generation -#1095 - Move generator.generate.unsigned-types to - generator.database namespace -#1096 - Add support for generator.generate.unsigned-types in - Maven source code generation -#1103 - Add support for SQL Server data type uniqueidentifier -#1106 - Add Factory.escape(Field, char) for use with LIKE -#1108 - Add support for multi-schema databases using Maven code - generation -#1115 - Add support for Oracle VARRAY/TABLE of OBJECT types -#1127 - Add support for POJO classes generation -#1129 - Allow for using Param in LIMIT .. OFFSET clauses -#1132 - Add RenderContext.castMode() to allow for avoiding casts - where this is not really needed -#1136 - Add generation option to enable/disable generating - navigation methods - -Bug fixes ---------- -#1099 - Derby generated artefacts are not sorted alphabetically -#1101 - Internal API leak exposed through covariance in - AbstractTable.joinXXX() methods -#1110 - VARRAY element type information is lost when unnesting - VARRAY's in Oracle -#1111 - VARRAY element type information is lost when unnesting - VARRAY's returned from functions in Oracle -#1114 - Syntax error when unnesting TABLE of OBJECT in Oracle. - The unnested table contains several columns but jOOQ only - unnests "COLUMN_VALUE" -#1117 - NullPointerException when passing an ArrayRecord - containing a null array to a stored function in Oracle -#1125 - Postgres needs casting for date time data types in - queries like SELECT ? FROM DUAL -#1131 - DB2: [Noauthorized routine named "LIKE" of type - "FUNCTION" having compatible arguments was found] when - using Field.like(concat(x, y)) -#1133 - Compilation errors in generated source code if the same - constraint name exists in several schemata -#1134 - NullPointerException in code generation when a foreign - key constraint references a table from another schema - that is not being generated -#1135 - Generated Javadoc references inputSchema instead of - outputSchema - -Test cases ----------- -#1009 - Add more integration tests for proper handling of - java.sql.Date, Time, Timestamp -#1090 - Run jOOQ tests against AdventureWorks SQL Server sample - database -#1105 - Add integration tests for multi-schema source code - generation and querying -#1122 - The 10k lines of integration test code are too heavy for - the compiler. Create test modules with fewer lines of - code, each. - -Version 2.0.3 - January 29, 2012 -================================================================= - -This release focuses on increased compatibility between various -SQL dialect integrations as far as ARRAY and JOIN support is -concerned: - -- ARRAY types are only available in H2, HSQLDB, Oracle, Postgres. - Nevertheless, they can be somewhat simulated in other dialects - using nested selects with UNION ALL. Increased compatibility - leads to a nicer API, where ARRAYs are used along with ALL/ANY - quantifiers, for instance. - -- JOIN syntaxes can be quite powerful in SQL. Apart from - simulating NATURAL JOIN, JOIN USING clauses, as well as a - synthetic "KEY JOIN" syntax, jOOQ now also supports nesting - JOIN expressions to create more complex table sources. See a - recent blog post on the subject here: - -http://blog.jooq.org/2012/01/15/lets-revise-the-sql-from-clause/ - -Features and improvements -------------------------- -#578 - Add KEY JOIN syntax to simulate joining using generated - foreign keys -#577 - Simulate NATURAL JOIN syntax, where this is unavailable -#582 - Simulate JOIN USING syntax, where this is unavailable -#671 - Allow for nesting JOIN clauses -#676 - Add Table.join() methods to create more flexible table - sources -#993 - Add Field.equalAny(T[]), .equalAny(Field) methods -#1048 - Simulate (array) syntax for dialects - that do not support arrays -#1051 - Add Factory.execute(String, Object...) as a convenience - method for Factory.query(...).execute() -#1055 - Simulate Factory.table(Object[]) and table(List) using - UNION ALL in dialects that do not support arrays -#1060 - Improve debug logging of H2 arrays. The syntax is not - ARRAY[1, 2], but (1, 2) -#1065 - Add OracleFactory.sysContext(String, String) to support - Oracle's SYS_CONTEXT function -#1069 - Add support for INSERT INTO table(field1, field2, ...) - SELECT syntax - as opposed to the existing INSERT INTO - table SELECT -#1072 - Add support for LIKE .. ESCAPE .. syntax -#1074 - Add Field.notBetween(T, T) for convenience -#1080 - Add support for JDBC's Statement.setFetchSize() in - ResultQuery.fetchLazy() -#1082 - Add some more DEBUG logging in AbstractResultQuery - -API changes (backwards-compatible) ----------------------------------- -#1059 - Change SelectFromStep.from(Collection>) to - from(Collection>) - -API changes (backwards-incompatible) ------------------------------------- -#1087 - Change the NTILE function to return Field - instead of Field - -Bug fixes ---------- -#1071 - Make Sequence Serializable -#1081 - Derby error in NULL handling when simulating unnested - arrays that contain NULL values -#1084 - Bind index mismatch in val(null).equal(null) and in - val(null).notEqual(null) -#1091 - Add missing @Support annotations on Table.crossJoin() - methods - -Test cases ----------- -#1026 - Add integration tests for NTILE window function and - document compatibility -#1073 - Add integration tests for NOT IN queries holding NULL - arguments - -Version 2.0.2 - January 8, 2012 -================================================================= - -This is a maintenance release for jOOQ 2.0. The main improvements -include - -- The whole jOOQ API is now annotated with a new org.jooq.Support - annotation to help you assess whether a certain SQL clause is - available in your database or not. This is particularly useful - when your application should support several databases at once - (e.g. MySQL, Postgres, Oracle) -- The Oracle PIVOT clause is now formally supported for advanced - statistical queries in Oracle. This clause will be simulated in - other dialects in the future. -- The DATE data type can be mapped to TIMESTAMP. This important - when you query a legacy Oracle database, where DATE columns - can also contain time information -- Several convenience methods have been added for more fluent - syntax, when using plain SQL result queries, subqueries as - tables, or when unnesting arrays in ANY() and ALL() quantifiers - -Further type mapping support is still experimental. An official -cooperation with MinuteProject for source code generation is -being analysed. With MinuteProject, many source code generation -issues could be addressed centrally, as MinuteProject specialises -in source code generation: - -http://minuteproject.wikispaces.com/ - -Features and improvements -------------------------- -#595 - Add support for Oracle's PIVOT clause -#869 - Add support for using ANY, ALL with arrays, not just with - subselects -#1007 - Formally document the API methods to indicate whether - something is supported by any given SQL dialect -#1011 - Add code generation configuration parameter to avoid - generating @Generated annotation -#1019 - Render LIMIT x OFFSET y also for MySQL, instead of - LIMIT y, x -#1022 - Add missing Sybase ASE implementation for Factory.use() -#1024 - Add Factory.resultQuery(String, Object...) to allow for - arbitrary execution modes of plain SQL queries (lazy, - later, into, array, etc) -#1025 - Add missing SQLite implementation for Factory.deg() and - Factory.rad() -#1033 - Generate table comments into generated Tables.java as - Javadoc -#1040 - Add Object[][] Result.intoArray() and - Object[] Record.intoArray() for convenience. Let - E Record.into(Class) also support array types. -#1041 - Add Table Factory.table(Select) convenience - method for more fluency -#1042 - Add support for DISTINCT keyword in SUM, AVG, MIN, MAX - aggregate functions -#1046 - Generate Ingres table and column comments in generated - source code (only Ingres 10) - -API changes (backwards-compatible) ----------------------------------- -#1050 - Deprecate usage of SOME quantifier in predicates, such as - equalSome() - -API changes (backwards-incompatible) ------------------------------------- -#1036 - Fixed API typo in - WindowsRowsStep.rowsBetweenUnboundedFollwing() -#1037 - The fluent API allows for JOIN clauses without FROM - clause - -Bug fixes ---------- -#1010 - The MERGE INTO .. WHEN NOT MATCHED THEN INSERT .. syntax - may cause type-safety issues in some databases. VALUES - should be converted before binding -#1014 - FindBugs: Latent risk of infinite recursion due to typo - in QueryPartList.retainAll(); -#1015 - FindBugs: 7 occurrences of "Bad attempt to compute - absolute value of signed 32-bit hashcode". In extreme - cases, this could lead to SQL syntax errors -#1016 - The Oracle CONNECT BY cond1 AND cond2 syntax erroneously - creates a WHERE cond2 CONNECT BY cond1 statement -#1028 - Syntax errors when using untyped param() in HSQLDB (and - other strongly typed dialects) -#1029 - Postgres can't bind NULL values in cases, where bind type - is Object.class and bind value was created with - Factory.param() -#1030 - UnsupportedOperationException when calling - Query.bind(int, Object) on a query containing plain SQL - fields -#1031 - Incorrect debug logging when plain SQL QueryParts like - field("?") bind null values -#1032 - Incorrect debug logging when plain SQL QueryParts contain - String literals, such as 'Hello? Anyobody out there?' -#1047 - Field.notEqualAny() erroneously renders <> ALL() - -Test cases ----------- -#1021 - Add explicit integration tests for - LEFT|RIGHT|FULL OUTER JOIN - -Version 2.0.1 - December 23, 2011 -================================================================= - -This is a maintenance release for jOOQ 2.0. The main improvements -include - -- Better integration for using jOOQ with Spring Data. This - includes support for named parameters, as well as allowing to - change bind values on previously constructed Query objects -- The MERGE statement has been enhanced for better integration - with Oracle. -- jOOQ is now ready to use with Scala / Groovy - -For more information about using jOOQ with Scala, see this blog -post: -http://blog.jooq.org/2011/12/11/the-ultimate-sql-dsl-jooq-in-scala/ - -There is now also experimental support for a custom type mapping. -This mapping allows to rewrite data types at code generation time -as well as to specify custom enum data types (e.g. boolean Y/N). -Not all integration tests run smoothly for custom data types, -hence, this feature is not yet fully supported. - -Features and improvements -------------------------- -#691 - Add support for Oracle CURSOR REF IN / INOUT parameters -#677 - Add type-mapping configuration, enforcing types for - columns -#947 - Add custom type mapping support (experimental) -#968 - Allow for custom enum types, configured in the code - generator (experimental) -#974 - Add Schema.getTable(String), getSequence(String), - getUDT(String) for better runtime Schema meta-navigation -#975 - Add Sequence.getName(), getSchema(), getDataType() -#980 - Add support for named parameters, to better interact with - Spring -#991 - Add Query.bind(String, Object) and bind(int, Object) to - easily modify existing bind values -#992 - Document thrown DataTypeException in Convert methods -#998 - Enhance MERGE statement for Oracle extensions: - WHEN MATCHED THEN UPDATE .. WHERE .. DELETE WHERE .. - WHEN NOT MATCHED THEN INSERT .. WHERE .. -#1000 - Add support for MySQL's INSERT INTO .. SET .. syntax in - MERGE statement's WHEN NOT MATCHED THEN INSERT clause - -API changes (backwards-compatible) ----------------------------------- -#981 - Cannot insertInto(table("my_table")), as plain SQL tables - return Table, not Table. Relax - bound on R -#988 - Change Factory.field(String) to return Field - instead of Field -#999 - Make MERGE's WHEN MATCHED .. and WHEN NOT MATCHED .. - clauses optional -#1001 - Identity.getField() should return TableField - instead of Field -#1006 - Add Factory.value(...) as a synonym for Factory.val(...) - for increased Scala / Groovy compatibility - -Bug fixes ---------- -#973 - EnumType renders name() instead of getLiteral() in - formatXXX() methods -#977 - EnumType renders name() instead of getLiteral() in - Convert.convert() method -#979 - Record.from() sets all changed flags to true. That's not - necessarily correct in the event of storing the record - back to the DB -#985 - AbstractRecord.equals() does not correctly compare - arrays. Compare them using Arrays.asList() -#986 - Postgres / DB2 / Sybase ASE foreign-key namespace is - unique-per-table. jOOQ forces all foreign keys from all - tables into the same namespace -#990 - Problems when encoding arbitrary byte[] as String(byte[]) - in inlined SQL. This can cause issues when DEBUG-level - logging is activated -#995 - Routines don't respect SchemaMapping - Github issue #8 -#1002 - TableRecord.storeUsing() doesn't update IDENTITY column - values, if the column is not part of the main unique key -#1003 - Sybase / SQL Server / MySQL / Ingres / H2 / Derby's - INSERT .. RETURNING simulation returns null if a table - has an IDENTITY column, but no primary/unique key -#1005 - The INSERT INTO .. VALUES .. syntax may cause type-safety - issues in some databases. VALUES should be converted - before binding - -Test cases ----------- -#984 - Detach IDENTITY column tests from UNIQUE KEY tests, - create a dedicated test suite instead - -Version 2.0.0 - November 25, 2011 -================================================================= -This release is a fresh start in many areas of jOOQ, adressing -issues that have been requested by users for a long time. These -release notes docment the most important changes, a detailed -upgrade guide, as well as the detailed list of improvements. - -Most important changes ----------------------- -- The API became more static. This applies to many Factory - methods, such as val(), literal(), as well as to many Field - methods that have been moved over to the Factory. For example, - when before, you wrote this using "postfix function notation": - -
    NAME.replace(" ", "_").trim()
    - - you will now write (just as in SQL): - -
    trim(replace(NAME, " ", "_"))
    - - Using static imports of Factory.*, jOOQ makes SQL look even - more like SQL. The current "postfix notation" is maintained for - backwards compatibility. -- By default, jooq-codegen will now generate a "dynamic" meta - model as opposed to the existing static one. Generated tables - covariantly override the as(String) aliasing method, leading - to a much more convenient aliasing style. When before, you - wrote: - -
    -Table parent = T.as("parent");
    -Table child  = T.as("child");
    -Condition join =
    -  parent.getField("ID").equal(child.getField("PARENT_ID"))
    -
    - - You can now write: - -
    -T parent = T.as("parent");
    -T child  = T.as("child");
    -Condition join = parent.ID.equal(child.PARENT_ID)
    -
    - - Of course, the existing notation still works - -- Exceptions are no longer checked. When previously, the DB's - SQLException was propagated to client code, there is now an - unchecked DataAccessException hierarchy, similar to that of - Spring. This will eventually give way to a standardised error - handling abstraction, in future developments. -- Window functions are now constructed from their underlying - aggregate functions just like in SQL. For example: - -
    -sum(AMOUNT)
    -sum(AMOUNT).over().partitionBy(ACCOUNT)
    -
    - - This makes for a more concise API, especially when considering - future extensions, such as Oracle's KEEP (DENSE_RANK FIRST...) - syntax. -- More type safety has been introduced regarding various places - where generic and types are involved. - This is especially true for INSERT / UPDATE / DELETE statements -- Sequences now also have a type -- Unsigned number types are now supported in those databases that - use them. Unsigned numbers are implemented in jOOU, a spin-off - open source project. For convenience, this library is - "internalised" into jOOQ, to avoid adding a dependency - -http://code.google.com/p/joou/ - -Upgrade instructions: ---------------------- -Various of the above changes are incompatible with jOOQ 1.x. In -order to upgrade, please be aware of the following pitfalls: - -- The schema needs to be re-generated. -- Much of the post-fix function notation is replaced by static - methods in the Factory. Today's org.jooq.Field API is - maintained in jOOQ 2.0, for backwards compatibility. It will - be removed, eventually, though. Expect some incompatible - changes, where window functions are involved -- Some Factory instance methods (such as val(), literal()) are - now static. They are compatible, but may cause compiler - warnings. -- The meta model is now an instance model by default. If you - prefer the static meta model, you can configure this in your - jooq-codegen configuration. -- The additional typesafety involving and types may cause - compiler warnings and errors. -- SQLException is no longer part of the API. This can cause - compiler issues, in particular when extending jOOQ -- Some utility classes have moved to org.jooq.tools - -Should these incompatibilities be too significant for your -project, you can still stay on the 1.x branch, which will be -maintained for a while. Be aware that upgrading might be more -difficult, later, though. - -Features and improvements -------------------------- -#55 - Implement improved exception handling -#117 - Improve DSL support for field and table aliasing (decrease - verbosity) -#519 - Add support for MySQL UNSIGNED numeric types -#626 - Create static function access -#661 - Add support for bitwise operators -#718 - Sequences should be mapped to appropriate type (e.g. - SMALLINT, INT, BIGINT, etc) -#734 - Add support for Oracle / SQL Server CUBE() and ROLLUP() - grouping functions -#751 - Add support for Oracle / SQL Server GROUPING SETS() - function -#799 - Add support for Oracle PL/SQL's object-oriented MEMBER - PROCEDURES and MEMBER FUNCTIONS -#804 - Add to Insert, Update, Delete -#835 - Review API typesafety for InsertSetMoreStep - set(Field, T) and similar methods -#890 - Add Factory.selectCount() convenience method -#891 - Let min() max(), etc functions return a new type - AggregateFunction. This type can then be used as an entry- - point for window functions -#892 - Add support for Oracle / SQL Server GROUPING() and - GROUPING_ID() functions to be used along with CUBE() and - ROLLUP() -#893 - Simulate ROLLUP() function for MySQL, using the WITH - ROLLUP grouping modifier -#894 - Move functions from Field to org.jooq.impl.Factory - and make them static -#895 - Add power(..., Field) -#897 - Add (experimental) Spring integration project -#898 - Replace usage of checked SQLException by an unchecked - DataAccessException, similar to that of Spring -#899 - Build jOOQ .jar files as bundles to be deployed into OSGI - environments -#900 - Purge deprecated API - Prior to 2.0 -#901 - Introduce InvalidResultException as a subtype of - DataAccessException for integrity checks in methods like - ResultQuery#fetchOne(), ResultQuery#fetchMap(), etc. -#902 - Make AggregateFunction the base type for constructing - window functions -#904 - Move SQLDialectNotSupportedException into - org.jooq.exception package -#905 - Introduce MappingException as a subtype of - DataAccessException for integrity checks in methods like - ResultQuery#fetchInto(), etc. -#907 - Add missing Field.like(Field), notLike(Field) - methods to overload the existing Field.like(T), notLike(T) -#908 - Change rpad / lpad functions to accept String instead of - char -#912 - Add R newRecord(Table, Object) as - the inverse of various into(Class) methods -#916 - Add > {Record.into(Table) | - Result.into(Table) | ResultQuery.fetchInto(Table) | - Cursor.fetchInto(Table)} -#917 - Add various Cursor.fetchOneInto() convenience methods -#918 - Add CustomTable, CustomRecord as base classes for more - convenience when used with various into(Table) methods -#919 - Allow for accessing non-public constructors of Record - subtypes -#923 - Move some utilities to org.jooq.tools -#924 - Generate a reference to every table in a new Tables.java - class for improved static access -#928 - Add DataTypeException extending DataAccessException in - case something went wrong when converting data types -#930 - Support converting date time types to java.util.Calendar. - This applies to various into(Class) methods, as well as - Result.getValue(xx, Class) -#931 - Allow for conversion between Long and date/time types, and - vice versa -#932 - Let the bound of R in TableRecord extend TableRecord, - in UpdatableRecord to extend UpdatableRecord -#933 - Add support for type Character in Record.into(Class) - methods and similar -#936 - Accept primitive types, such as int.class for type - conversion -#938 - CODEGEN: Add static/instance table field configuration -#939 - Include license.txt and readme.txt in .jar files' META-INF - directory -#953 - Make DefaultGeneratorStrategy methods non-final to allow - for overriding -#954 - Add examples for source code generation of multiple - schemata with Maven -#955 - Generate a reference to every type in a new UDTs.java - class -#957 - Add R Factory.newRecord(UDT) for constructing - attached UDTRecords -#958 - CODEGEN: Add generation-time schema mapping, allowing for - re-writing schemata in jooq-codegen -#960 - CODEGEN: Add code generation configuration parameter to - avoid using the new UByte, UShort, UInteger, ULong wrappers - for UNSIGNED number types -#961 - Use Oracle's SYS.ALL_SEQUENCES.MAX_VALUE to determine the - type of a sequence. -#969 - Add List ResultQuery.fetch(Field, - Class) convenience method - -Bug fixes ---------- -#686 - Reduce the internal API leak by preventing access to - TableFieldImpl, UDTFieldImpl, ParameterImpl -#903 - lag(Field, int, T) erroneously delegates to lead() -#906 - Add more NullPointerException safety to API -#913 - NoClassDefFoundError in JooqUtil.isJPAAvailable() -#920 - Generic type is lost in Cursor.fetchInto(RecordHandler) -#925 - SelectConditionStep should extend SelectConnectByStep, not - SelectGroupByStep -#926 - AbstractRecord.into() fails to convert java.sql.Date into - java.util.Date -#934 - Don't consider static members in reflection utilities when - used with Record.into(Class) and similar methods -#935 - Don't consider final member fields in reflection utilities - when used with Record.into(Class) and similar methods -#937 - In the event of name clash (same name for table and field) - generated code has errors -#945 - Calling UpdatableRecord.setValue() twice with the same - argument causes the changed flag to be reset to false -#948 - Always set the changed flag to true in Record.setValue() -#959 - Compilation errors in generated source code if MySQL enum - values match Java reserved words, such as 'true', 'false', - 'new', etc... -#962 - Postgres ordering of generated enum literals is unstable -#967 - Better document type conversion - -Version 1.7.0 - November 25, 2011 -================================================================= -This is a maintenance release for the 1.x branch. Some important -bug fixes are merged from version 2.0. These include: - -Bug fixes ---------- -#925 - SelectConditionStep should extend SelectConnectByStep, not - SelectGroupByStep -#926 - AbstractRecord.into() fails to convert java.sql.Date into - java.util.Date -#937 - In the event of name clash (same name for table and field) - generated code has errors -#945 - Calling UpdatableRecord.setValue() twice with the same - argument causes the changed flag to be reset to false -#948 - Always set the changed flag to true in Record.setValue() -#951 - Empty Password for jooq-codegen-maven causes NPE - -Version 1.6.9 - November 7, 2011 -================================================================= -This is a maintenance release for the 1.x branch. Developments -on this branch will stop after version 1.6.9. Only important bug -fixes are merged to this branch. Developments for release 2.0 -have started. - -The most important functionality in release 1.6.9 is the newly -added support for JDBC batch operations. You can now batch -execute several queries. - -See the official blog for more information: -http://blog.jooq.org/2011/10/25/jdbc-batch-operations-with-jooq/ - -Features and improvements -------------------------- -#621 - Add support for JDBC batch operations -#794 - Add support for ORDER BY [int value] in order to reference - a column index for sorting -#882 - Optimise Field.isTrue() and isFalse(). Take Field's data - type into consideration. -#885 - Add support for INSERT INTO .. VALUES (..) syntax, - omitting explicit field declarations -#887 - Add List Cursor.fetchInto(Class) - -Bug fixes ---------- -#748 - H2 regression in 1.3.158 regarding stored functions, which - return a ResultSet (this was fixed in H2) -#859 - Derby casting of numeric types to BOOLEAN doesn't work -#886 - Regression in date extract function when used in a - subselect -#888 - Derby casting of VARCHAR to FLOAT (and similar) doesn't - work - -Version 1.6.8 - October 22, 2011 -================================================================= -The main improvement of this release is the re-design of the -stored procedure / function API. With 12 supported RDBMS, which -all have their own idea about what is a stored procedure and what -is a stored function, it has proven to be a better design, to -unite them in one single type: org.jooq.Routine. A routine can -have a return value as well as OUT parameters. It can be embedded -in SQL and used as a field or a table. - -This means, you will need to re-generate your database schema, -when upgrading to jOOQ 1.6.8. After re-generation, you'll need to -fix your client code. These are the package changes: - -- [generated.package].procedures > [generated.package].routines -- [generated.package].functions > [generated.package].routines -- [generated.package].Procedures > [generated.package].Routines -- [generated.package].Functions > [generated.package].Routines - -Oracle generated packages are not re-located. With these -improvements, using stored procedures and functions becomes even -more reliable, especially when cursor types are involved. Read -more about the rationale behind this change: - -http://blog.jooq.org/2011/10/17/what-are-procedures-and-functions-after-all/ - -Apart from that, important improvements have been made in the -area of plain SQL tables. Also, consider a demo integration of -jOOQ with Google Cloud SQL: - -http://blog.jooq.org/2011/10/22/jooq-and-google-cloud-sql-example/ - -Features and improvements -------------------------- -#271 - Don't pre-fetch table meta data when selecting from plain - SQL tables -#489 - Add support for SELECT * (i.e. render SELECT * where - applicable) -#596 - Add support for VARIANCE() and STDDEV() OVER() window - functions -#608 - Add jOOQ version number in generated source code -#670 - Add more Javadoc to Field.xxx() functions -#692 - Add support for ResultSet type returned from HSQLDB - stored functions -#850 - Use http://www.jooq.org as URL for the @Generated - annotation -#854 - Add convenience methods Fields.isTrue(), isFalse() for - conversion of "Y", "YES", "1", "true", "on", etc into a - boolean condition -#870 - Add support for MEDIAN aggregate function -#872 - Add support for STDDEV_POP(), STDDEV_SAMP(), VAR_POP(), - VAR_SAMP() aggregate functions -#874 - Reduce the number of internal classes for dialect-specific - function aliases -#878 - Implement DataType.equals() and hashCode() - -API changes (backwards-compatible) ----------------------------------- -#851 - Change Field.{sortAsc|sortDesc}(List sortList) into - Field.{sortAsc|sortDesc}(Collection sortList) - -API changes (backwards-incompatible) ------------------------------------- -#848 - Purge deprecated API - Prior to 1.6.1 -#849 - Replace Cursor.fetchResult() by Cursor.fetch() -#852 - Review stored procedures / functions concept. Merge them - all into a single "Routine" type - -Bug fixes ---------- -#756 - Error when aliasing HSQLDB and Postgres unnested tables -#761 - Exception when TRACE logging execution with plain SQL - tables involved -#773 - Execute standalone stored functions as CallableStatement - to prevent issues with transactions -#847 - Query.getSQL() doesn't render dialect-specific SQL when - Query is constructed using the fluent API -#853 - DB2 generated convenience methods for stored functions - have unstable ordering -#857 - Derby casting of numeric types to String / VARCHAR does - not work -#858 - SQLDataType.getSQLDataType() should return itself, instead - of null -#860 - SQLite CEIL function is incorrectly simulated. CEIL(2.0) - returns 3.0 instead of 2.0 -#861 - Field.replace(String) generates bad SQL for various RDBMS. - Field.replace(String, String) works, though -#863 - Ingres integration generates illegal SQL when selecting - things like SELECT 1 WHERE 1 = 1 -#866 - Sybase ASE Field.replace(String) function incorrectly - removes the argument string -#873 - Error when selecting two times the same aggregate field -#877 - Compilation error in generated source code when a table - without a primary key has an identity column -#879 - Add Google Cloud SQL Example -#880 - Query.getSQL() does not consider SchemaMapping - -Test cases ----------- -#811 - Loader integration tests fail for SQLite -#812 - CSV Loader test leaves Postgres JDBC connection in an - inconsistent transactional state on error -#856 - Add integration tests for Field.abs() -#865 - Add integration tests for Field.ascii() -#867 - Add integration tests for Field.sum(), avg(), max(), min() -#881 - Re-design H2 stored functions to be pre-compiled, in order - to speed up integration tests - -Version 1.6.7 - September 25, 2011 -================================================================= - -This release coincides with the launch of the new website at -http://www.jooq.org. Hence, it ships with little additions to the -deliverable itself. - -Apart from new convenience methods, the main addition is a Maven -plugin for jooq-codegen contributed by Sander Plas. - -Features and improvements -------------------------- -#797 - Create Maven plugin for source code generation -#825 - Add List> Factory.fetchMany(String) to - allow for fetching several result sets from stored - procedures, such as Sybase ASE's "sp_help" -#838 - Implement MetaDataFieldProvider.toString() -#841 - Add List Result.getValues(Field, Class) -#842 - Add Query.getBindValues() method to allow for extracting - bind values in the correct order -#843 - Add Factory.fetch(ResultSet) to transform a JDBC ResultSet - into a jOOQ Result - -API changes (backwards-compatible) ----------------------------------- -#837 - Avoid final keyword on Object methods, such as .equals(), - .hashCode(), etc - -Bug fixes ---------- -#836 - Bad syntax when selecting from aliased plain SQL tables -#839 - Boolean conversion in getValueAsBoolean() should trim - String values first -#840 - Numeric conversions in getValueAsXXX() should trim String - values first -#844 - NullPointerException when selecting a column from a Result, - that does not exist - -Version 1.6.6 - September 11, 2011 -================================================================= - -Finally, support for another RDBMS has been added. Sybase's other -important product Sybase Adaptive Server Enterprise (or simply -Sybase ASE) is now officially supported by jOOQ - -Apart from this, there had been important improvements with the -recently added INSERT .. RETURNING clause, as well as some fixes -related to DECIMAL / NUMERIC data types - -Features and improvements -------------------------- -#796 - Complete missing public org.jooq.impl Javadoc -#800 - Add support for Sybase Adaptive Server Enterprise -#808 - Add support for INSERT .. RETURNING for Ingres -#809 - Add support for INSERT .. RETURNING for Sybase SQL - Anywhere using SELECT @@identity -#810 - Add support for INSERT .. RETURNING for SQLite using - last_inserted_rowid() -#813 - Add DSL support for INSERT .. RETURNING -#814 - Change TableRecord to reload its trigger-initialised main - key in Oracle and other RDBMS that don't support IDENTITY - columns -#818 - Add SQLiteFactory.rowid() -#819 - Support SQLite AUTOINCREMENT columns as IDENTITY -#820 - Add Factory.fetchOne(String) for executing plain SQL - queries that return single records -#826 - Allow for returning several records in the INSERT .. - RETURNING clause. This now works for DB2, HSQLDB, MySQL, - and Postgres -#827 - Support Sybase SQL Anywhere's TOP n START AT m clause - instead of simulating it with nested SELECT's - -API changes (previous API now deprecated) ------------------------------------------ -#817 - Deprecate Factory.lastID(Identity) - -Bug fixes ---------- -#815 - SQL Server fetching of IDENTITY value is broken -#821 - Optimise ResultQuery.fetchAny() executing fetchLazy() - internally, and only fetching one record from the cursor -#822 - Let Constant cast to more precise NUMERIC/DECIMAL types - in those RDBMS where casting is necessary -#823 - Cannot bind SQLite BigDecimal, BigInteger types - bind - them as String instead -#824 - BigInteger values cannot be bound in DB2, Derby -#828 - Document inefficient implementation for GREATEST and LEAST - in some RDBMS - -Version 1.6.5 - August 28, 2011 -================================================================= - -This release finally adds a loader for CSV data to jOOQ. You can -now load CSV data using a simple fluent API, configuring error -handling, duplicate behaviour and transaction handling, as well -as various CSV parameters. - -This release also changes the way generated keys are retrieved -after INSERT's. Instead of (potentially inconsistently) running -SELECT MAX(pk) immediately after the INSERT, Postgres' INSERT.. -RETURNING clause is used (or simulated), in a single statement. - -Features and improvements -------------------------- -#784 - Add Result.exportXML() to retrieve a DOM document similar - to that of .formatXML() -#792 - Add support for loading of CSV data into tables -#795 - Add List fetch(int, Class) and - fetch(String, Class) convenience methods -#803 - Add support for INSERT .. RETURNING or simulate it where - not available -#805 - Add T[] fetchArray(int, Class) and - fetchArray(String, Class) convenience methods -#806 - Add T fetchOne(int, Class) and - fetchOne(String, Class) convenience methods - -Bug fixes ---------- -#798 - Oracle IN (...) clause with more than 1000 arguments does - not work -#802 - Use "INSERT .. RETURNING" instead of "SELECT MAX(pk)" - to retrieve the primary key of a new record - -Version 1.6.4 - August 07, 2011 -================================================================= - -This release ships with a couple of useful concepts inspired by -other frameworks. These are: - -- selecting into custom POJO's. Results can be mapped to POJO's - by convention or using JPA @Column annotations -- selecting into custom callbacks. This is already a wide-spread - practice in Spring JdbcTemplates. -- selecting long-running queries asynchronously. This idea has - been inspired by the Avaje Ebean framework - -Apart from these changes and some bugfixes, the internal API has -been completely re-designed. The idea here is that query -rendering and variable binding are even faster (less String -objects), more extensible and more accurate. This is a pre- -requisite for many future developments with even more complex SQL -statements, such as for instance CTE's (Common Table Expressions) - -Features and improvements -------------------------- -#137 - Add support for asynchronous query execution using - FutureResult ResultQuery.fetchLater() similar to - Avaje Ebean -#198 - Add SELECT INTO functionality into POJO's using - T ResultQuery.fetchInto(Class) similar to JPA - CriteriaQuery -#728 - Add .fetchInto(RecordHandler) to ResultQuery, Result, - and Cursor to allow for callbacks similar to Spring's - JdbcTemplate/Ollin Framework -#774 - Add more TRACE logging to .fetchLazy() -#777 - CURSOR: Add function alias: UNNEST for TABLE -#781 - Add E function (Euler number) -#782 - Add T Record.getValue(..., Class) methods - for convenient type conversion -#785 - Allow for storing TableRecord with a provided Field[] - indicating the primary key -#786 - Document thread-safety facts in Factory Javadoc -#788 - Add Key.getFieldsArray() convenience method -#793 - Add support for Oracle's SYS_CONNECT_BY_PATH function - -API changes (backwards-incompatible) ------------------------------------- -#758 - Change internal QueryPart rendering and binding API to use - Configuration and Context as callback parameters. If you - use CustomField or CustomCondition, please correct your - implementations accordingly. Other parts of the API should - not be affected -#778 - Purge deprecated API, deprecation prior to jOOQ 1.5.7 -#790 - Purge deprecated generated code, deprecation prior to - jOOQ 1.5.7 - -API changes (previous API now deprecated) ------------------------------------------ -#776 - Deprecate QueryPart.getSQL(), add Query.getSQL() -#789 - Deprecate Record constructors with Configuration - parameter - -Test cases ----------- -#636 - Add integration tests for more advanced CONNECT BY - example -#772 - Add integration tests for selecting cartesian products - (several tables in FROM clause) - -Bug fixes ---------- -#730 - Sybase cannot bind null values in plain SQL -#759 - Omit the TOP 100 PERCENT clause in SQL Server ordered - top-level queries -#767 - An empty Java package is generated for PL/SQL packages - containing underscores -#771 - Some exotic literals are not properly escaped with quotes - yet, e.g. UDT identifiers, VARRAY types, etc. -#775 - Automatic re-attaching after deserialisation does not work - when used with .fetchLazy() -#787 - The UpdatableRecord's internal changed flags are not - updated after INSERTs / UPDATEs - -Version 1.6.3 - July 31, 2011 -================================================================= - -This is mainly a maintenance release with lots of bugfixes, -mostly around code generation, plain SQL tables, and data types. -Please note that generated source code may contain incompatible -changes due to #639 (see below for details)! - -Apart from that, project CURSOR is advancing and it is now -possible to unnest arrays into tables. See this article for -details about where jOOQ is heading with project CURSOR: - -http://blog.jooq.org/2011/07/24/the-power-of-ref-cursor-types/ - -Features and improvements -------------------------- -#679 - Improve H2 NVL2 support as of H2 1.3.156 -#680 - Improve H2 ROUND support as of H2 1.3.156 -#735 - Add README documentation to GitHub -#736 - Add more info regarding number of generated artefacts in - jooq-codegen logging -#750 - Add DataType.isNumeric(), .isString(), .isTemporal(), - .isBinary() -#754 - Log query as executed by JDBC PreparedStatement when - TRACE logging (without inlining variables) -#752 - CURSOR: Add support for selecting from ARRAY types -#762 - Use H2's native support of NVL, instead of COALESCE -#764 - CURSOR: Add support for selecting from ARRAY types - returned from stored functions - -API changes (backwards-incompatible) ------------------------------------- -#639 - Map DECIMAL(n, 0) and NUMBER/NUMERIC(n, 0) data types - to Byte/Short/Integer/Long/BigInteger instead of - BigDecimal in generated source code. Re-generated code - will not be compatible! - -API changes (previous API now deprecated) ------------------------------------------ -#731 - Inconsistent API with Field.lessOrEqualToXXX(). Removed - "To" from method name -#757 - Deprecate Factory.constant() methods - -Test cases ----------- -#731 - Add missing integration tests for equalAll(), equalSome() - and similar methods -#747 - Upgrade H2 to 1.3.158 - -Bug fixes ---------- -#632 - Sybase error : column @p0 not found in nested SELECT -#700 - Restore HSQLDB ARRAY support with INFORMATION_SCHEMA - change in HSQLDB 2.2.3, and some fixes in 2.2.5 -#725 - Cannot insert byte[] data with plain SQL -#733 - H2 changed JDBC type for ResultSet/CURSOR from 0 to -10, - like Oracle -#737 - Compilation errors in generated source code if table - fields contain spaces -#738 - Compilation errors in generated source code if MySQL - procedure parameter type contains two comma-separated - arguments (like DECIMAL(10,2)) -#739 - Postgres navigator methods and keys are not re-generated - in the same order -#740 - Formatting is broken on Result.format() with some special - newline characters -#743 - Make SQL Server INFORMATION_SCHEMA independent from - HSQLDB again, to prevent incompatibility issues -#744 - Ingres REAL and FLOAT4 types are generated as FLOAT/FLOAT8 - which maps to java.lang.Double, instead of java.lang.Float -#753 - Postgres error when binding array that contains null - values -#755 - NullPointerException when converting an array containing - a null value -#766 - Bad decoding of JDBC Types BIGINT (to BigInteger instead - of Long) and REAL (to BigDecimal instead of Float) when - plain SQL tables are involved - -Version 1.6.2 - July 10, 2011 -================================================================= - -This release mainly introduces three new projects. - -Project CURSOR where jOOQ finally supports various RDBMS's TABLE, -CURSOR, and REF CURSOR data types. This is especially useful when -those types are returned from stored procedures and functions. -Cursors are simply mapped to jOOQ Result types and can -thus be used like regular table results - -Project EXPORT aims at exporting data from the database in -various serialisable formats, such as XML, CSV, HTML, Text, JSON. -This project will be continued in the future, to also -deserialise from (some of) these data streams. This will allow -for easy transport of jOOQ Result types over the net. - -Project CODEGEN has finally been started. Many improvements -suggested by jOOQ users will be implemented in the next releases. -In this release, important fixes have been made to prevent -compilation errors in generated artefacts. - -Features and improvements -------------------------- -#61 - EXPORT: Add Result.formatXML() -#166 - CURSOR: Add support for ResultSet type returned from - Oracle stored procedures / functions -#411 - Allow for fetching Map (instead of Record) - and List> (instead of Result) -#549 - Add Factory.function() for plain SQL functions -#611 - Simulate RPAD and LPAD in SQL Server, Sybase -#627 - Add support for Postgres FOR UPDATE OF [table-name] clause -#628 - Add support for REPEAT (SQL Server: REPLICATE) function -#637 - Nicely format time in StopWatch logging output -#640 - Simulate Postgres FOR UPDATE OF [table-name] clause in - other dialects -#649 - CURSOR: Add Cursor.fetch(int) .fetchOne() - .fetchResult(int) .fetchResult() -#653 - Add support for MySQL encryption and compression functions -#660 - Clarify Javadoc of UpdatableRecord to explain its - behaviour when changing the main unique key -#669 - EXPORT: Add Result.formatHTML() -#672 - Add convenience method UpdatableRecord.copy() in order to - reset primary key values for a subsequent INSERT -#675 - EXPORT: Add Result.formatCSV() -#683 - Implement ResultImpl.equals() and .hashCode() -#684 - Implement AbstractStore.equals() and .hashCode() -#685 - Add Store.size() to indicate the maximum index of the - Store -#687 - EXPORT: Add result.formatJSON() -#689 - Create separate builds: jooq-core.zip and - jooq-with-dependencies.zip -#690 - CURSOR: Add support for ResultSet type returned from H2 - stored functions -#695 - CURSOR: Add support for ResultSet type returned from - Postgres stored functions -#697 - Add Factory.fetch(String) for executing plain SQL queries - that return results -#701 - Add ResultQuery.fetchArray() and .fetchOneArray to return - Object[][] and Object[] -#704 - Always add top and bottom line in Result.format() -#705 - Right-align numeric values in Result.format() -#716 - Add SUBSTRING function Field.substring(Field, Field) - taking fields as arguments -#719 - Document risk of SQL injection in plain SQL and literal - factory methods -#726 - Add LENGTH function as a synonym for CHAR_LENGTH - -API changes (backwards-compatible) ----------------------------------- -#698 - Inconsistent API with Factory.fetch(Table [,Condition]) - Let method return Result instead of List -#699 - Let Result extend List - -API changes (previous API now deprecated) ------------------------------------------ -#656 - Decrease verbosity of plain SQL methods. They will just be - called Factory.field() .condition() .table() .query() - -Test cases ----------- -#643 - Add integration test for code generation of invalid and - incomplete types in Oracle -#654 - Add integration tests for master data tables with PK types - other than NUMBER/INT -#655 - Add missing integration tests for TRIM function - -Bug fixes ---------- -#450 - Improve plain SQL integrity checks for bind variables -#610 - CODEGEN: Compilation error in generated source code for - databases with table named 'system' -#646 - An empty Java package is generated for an empty PL/SQL - package. This is unnecessary -#651 - CODEGEN: Avoid importing datatypes in generated source - code to prevent collisions -#657 - NullPointerException when creating a Factory with a null - SchemaMapping -#658 - Master data table code generation is broken for tables - with more or less than 3 columns -#662 - Add support for the missing Postgres data type "bpchar" -#663 - Add support for the missing Sybase data type "int" -#664 - Ingres INTEGER data types are not correctly generated -#665 - HSQLDB Datatype CLOB and BLOB are not supported, when - selecting from plain SQL tables -#666 - The evil bug: Ingres TRIM function only executes RTRIM -#673 - UpdatableRecord.store() doesn't work if called after - .delete() -#702 - Add support for the missing SQLite data type "NULL" -#706 - CURSOR: Ensure that Query.execute() runs in a single - transaction when Postgres refcursor is involved in the - query (this fixes a Postgres JDBC driver flaw) -#724 - NullPointerException when passing a single literal null - bind value to plain SQL methods without casting to Object -#729 - DB2, Derby, Ingres, Oracle cannot bind null values in - plain SQL - -Version 1.6.1 - June 19, 2011 -================================================================= - -In this release, the PORTABILITY project has been implemented. -Finally, the SQLDialect has been removed from most generated -artefacts (Schema, Table, Field, Sequence, etc). Also, the -constructing Factory is not referenced by its created QueryParts -anymore, unless this is really necessary (Query objects, UDT's, -ARRAY types). This leads to higher compatibility between schemata -of different databases, e.g. if users want to use an HSQLDB -development and Oracle productive database. - -Unfortunately, this means that the way stored procedures are -called had to be changed. This is an API break that could not be -avoided. The pre-1.6.1 StoredObject.execute(Connection) method -is deprecated and will be removed in the future. It has been -replaced by StoredObject.execute(Configuration) - -In addition to this project, many more window functions are now -supported, as well as the Oracle-specific CONNECT BY clause for -recursive queries. - -Features --------- -#351 - Add support for Oracle ROWID data type -#452 - PORTABILITY: Create a super-set of RDBMS data types -#453 - PORTABILITY: Don't create dialect-specific QueryParts -#455 - Add support for the Oracle CONNECT BY clause -#587 - Add optional OFFSET clause to form LIMIT .. OFFSET - constructs -#589 - Add extended FOR UDPATE [OF ...] [{WAIT n | NOWAIT | SKIP - LOCKED }] support -#591 - Add support for LEAD() OVER() and LAG() OVER() window - functions -#592 - Add support for the CUME_DIST() OVER() window function -#601 - Add Factory.literal() convenience methods -#602 - Add Factory.val() methods to decrease .constant() - verbosity -#604 - Add support for RESPECT NULLS clause in some window - functions -#605 - Add Factory.use(String) for non-generated schemata -#613 - Add PI function -#616 - Add Factory.two() literal convenience method -#630 - Add support for Oracle CONNECT BY pseudo-columns LEVEL, - CONNECT_BY_ISCYCLE, CONNECT_BY_ISLEAF - -API changes ------------ -#299 - PORTABILITY: Create a dialect-independent meta-model -#588 - Add OVER() keyword to FIRST_VALUE() and LAST_VALUE() API - -Test cases ----------- -#368 - Add integration test for use with schema mapping -#586 - Upgrade H2 to 1.3.155 -#607 - Add integration tests for CRUD / SP's / UDT's / ARRAY's - with SchemaMapping -#612 - Add integration tests for LPAD and RPAD functions -#624 - Add integration test for code generation of invalid/ - incomplete views in Oracle -#631 - PORTABILITY: Add integration tests for using Oracle- - generated schema against an HSQLDB database -#638 - Add missing integration test for DECIMAL data type - -Bugfixes --------- -#176 - Stored procedures / functions in EQUIVALENT schemata - cannot be called -#493 - Bind variable mismatch when constructing bad SQL -#594 - Confusing Javadoc in SELECT DSL API -#603 - Fix DB2 'IGNORE NULLS' clause -#619 - SUBSTRING() function is broken in DB2, Ingres, SQL Server -#623 - SQL syntax error for some MERGE queries in SQL Server and - Sybase -#633 - SchemaMapping is not applied to sequences -#634 - Sequences are not escaped in generated SQL - -Version 1.6.0 - June 05, 2011 -================================================================= - -Apart from supporting various additional standard and non- -standard JOIN constructs, there is now also full support for the -SQL standard MERGE statement and MySQL's ON DUPLICATE KEY variant -thereof. A great number of API enhancements have been added, -which improve the usability of jOOQ. The Ingres database is now -also supported. - -Features --------- -#301 - Add support for Oracle execution hints -#409 - Add support for NATURAL JOIN syntax, where RDBMS allows it -#415 - Make fluent API's underlying SelectQuery objects publicly - available -#429 - Add Ingres support -#475 - Document class-level generic types and in Javadoc -#486 - Add support for SQL MERGE clause -#494 - Allow for omitting schema name in generated SQL -#496 - Automatically update IDENTITY values in UpdatableRecord, - after storing them -#520 - Add support for JOIN ... USING syntax -#524 - Upgrade HSQLDB to 2.2 -#533 - Add ORDER BY [Map] or BY [List] functionality -#534 - Add Result.isEmpty() -#535 - Call upon ConfigurationRegistry.provideFor() before - throwing a DetachedException -#536 - Simulate CASE [value] WHEN [value] THEN [result] END - syntax in Derby -#538 - Add some logging to ConfigurationProvider -#539 - Add possibility to negate numeric values with Field.neg() -#541 - Add support for MySQL ON DUPLICATE KEY clause -#542 - Allow for Collection arguments in INSERT's DSL API -#543 - Allow for creating FUNCTION() OVER() without PARTITION BY - or ORDER BY clause -#546 - Add Factory.use(Schema) -#548 - Add new internal type FieldMap -#550 - Simulate ON DUPLICATE KEY INSERT clause in dialects other - than MySQL -#551 - Add TableMapping, similar to SchemaMapping for mapping - tables -#553 - Add Factory.plainSQLQuery -#554 - Add Factory.plainSQLField with a DataType parameter -#555 - Add UpdateXXX.set(Map) convenience methods to DSL API -#557 - Enhance INSERT DSL API to allow for adding VALUES clause - with InsertXXX.set() syntax -#570 - Add support for the RAND() function -#567 - Add support for Ingres Sequences -#572 - Add support for the ATAN2() function -#573 - Add possibility for additional select() clauses for - convenience -#575 - Add support for the FULL OUTER JOIN syntax, where RDBMS - supports it -#576 - Add support for the CROSS JOIN syntax, where RDBMS - supports it -#581 - Enhance API and allow Collection> - instead of Collection> - -API changes ------------ -#397 - Purge deprecated API - -Bugfixes --------- -#481 - Handle case where an empty record is stored -#522 - Misleading Javadoc in generated stored procedures and - function constructors -#532 - Restore Postgres INFORMATION_SCHEMA -#537 - Prevent null from being added to QueryPartList -#540 - Error when TRACE logging Limit -#544 - Aliased elements are not bound correctly when rendered - with toSQLReference() -#559 - Loosen type safety on overloaded methods to prevent - compilation errors with javac/Netbeans -#560 - HSQLDB DataType REAL is configured incorrectly -#565 - Add integration tests for current_user() function -#569 - ORA-01427 when generating foreign key relations -#571 - Field.trim() not correctly implemented for SQL Server -#583 - Accelerate integration tests: Reset schema only if - necessary - -Version 1.5.9 - May 15, 2011 -================================================================= - -This version ships with lots of new functionality. Finally, the -DSL-style API has been extended to CRUD operations (INSERT, -UPDATE, DELETE)! Also, support for the TRUNCATE TABLE statement -has been added. - -The most important new features include the support for SQL:2003 -standard window functions, which are available in most major -RDBMS. Additionally, basic function support has been widely -extended. - -Features --------- -#148 - Added support for window functions -#204 - Add support for multi-record INSERT's -#416 - Added support for retrieval of IDENTITY values -#433 - Use bind variables for LIMIT and OFFSET -#441 - Added foreign key relationship meta information to the - generated source code -#446 - Beautify ResultImpl.toString() method -#461 - Automatically cast CONCAT parameters to Field if - necessary -#463 - Added support for trigonometric functions -#471 - Added support for the sign function -#472 - Added support for GREATEST/LEAST functions -#474 - Added support for "hyperbolic" functions SINH, COSH, TANH, - and COTH -#482 - Added DSL API for INSERT statements -#483 - Added DSL API for UPDATE statements -#484 - Added DSL API for DELETE statements -#485 - Added "Registry" for client code to provide Configurations - to jOOQ Attachables -#490 - Added support for the TRUNCATE TABLE statement -#495 - Generate source code for IDENTITY columns -#501 - Added support for boolean conversion to Result, Record, - and Store -#503 - Allow for schema navigation via generated artefacts -#518 - Let stored procedures reference owner package - if applicable -#525 - Added NULLS {FIRST | LAST} clause to ORDER BY constructs -#528 - Added Factory.getDataType() convenience method -#530 - Added Factory.zero() and Factory.one() convenience methods - -API changes (jooq) ------------------- -#527 - Weakened type-safety on Field.nvl2() -#529 - Deprecated Factory.select(Object...), added .selectOne() - and .selectZero() instead - -API changes (jooq-meta) ------------------------ -#30 - Add ParameterDefinition for stored procedures, instead of - reusing ColumnDefinition -#499 - Add reference to TableDefinition in ColumnDefinition -#500 - Add AttributeDefinition for UDTDefinition, instead of - reusing ColumnDefinition - -Bug fixes ---------- -#369 - Adapt H2 relations generation to H2's correction of - information_schema.cross_references -#435 - Added integration tests for NESTED SELECTs holding LIMIT - clauses -#460 - Syntax error when using a field with a reserved name -#462 - Fixed Javadoc broken links -#473 - Don't cast when cast is unnecessary -#479 - INSERT statement should not set all fields for a table -#497 - Derby referential code generation is broken, for named - foreign keys -#498 - Oracle package content is generated in arbitrary order -#502 - Syntax error when creating an empty IN condition -#526 - Corrected Javadoc in Field.coalesce() - -Version 1.5.8 - April 29, 2011 -================================================================= - -Finally, jOOQ now supports two important new RDBMS: -SQL Server and Sybase! - -Apart from this great enhancement, there is now also full support -for the non-SQL standard LIMIT clause, even in dialects where the -LIMIT clause is not supported natively (especially Oracle, but -also DB2, SQL Server and Sybase, which have limitations). jOOQ -simulates LIMITs by rendering nested selects filtering on ROWNUM -(Oracle) or on ROW_NUMBER() (DB2, SQL Server and Sybase). - -Other interesting additions are an increasing support for native -mathematical functions. More function support will be added in -future versions. - -Features --------- -#16 - Added support for SQL Server -#21 - Uniform implementation of the LIMIT clause. Implemented - LIMIT clause simulation through analytic functions, where - LIMIT is not supported natively -#97 - Added support for Sybase -#418 - Measure time of various steps in source code generation -#420 - Added support for proprietary SQL extensions "FOR UPDATE" - and "FOR SHARE" -#431 - Added additional statistics to generation log files -#432 - Unified the various "standard" ANSI INFORMATION_SCHEMA - implementations in the jooq-meta artefact -#436 - Added support for the modulo function -#438 - Added floor and ceil functions -#439 - Added support for mathematical functions (logarithms, - exponentials, sqrt) -#447 - Enhanced Field.add() and Field.subtract() to work for date - time fields, also - - -API changes ------------ -#428 - Created new Maven artefact jooq-meta to cleanly separate - database meta-data navigation from code generation -#458 - Decreased DSL verbosity for arithmetic operations and for - ordering - -Bug fixes ---------- -#417 - Restored warning when unknown column type is encountered - in source code generation -#419 - Corrected misleading Select.fetchOne(...) Javadoc -#421 - Optimised AbstractRecord's memory consumption -#448 - Corrected some Javadoc @see links -#449 - Changed Field.concatenate() to accept Field parameters - to avoid generic varargs warnings - -Version 1.5.7 - April 17, 2011 -================================================================= - -This is the first release built with support of Maven thanks to -the help of some jOOQ users! - -The main new features in this release are the improved support -for serialisation/deserialisation of jOOQ objects through use of -the newly introduced "Attachable" interface. - -If using log4j or the newly supported slf4j logging framework -in debug/trace mode, there is the possibility to log query -building/execution time statistics. - -Apart from these new features, fixes were mainly done in the -fields of type casting, HSQLDB 2.1 upgrade support, stored -procedures with OUT, IN/OUT parameters. Please upgrade, if you -are using any of those features. - -If you extend jOOQ as a base implementation for source code -generation, be aware of the fact, that the jOOQ-codegen is -currently undergoing major changes. Expect the code generation -API to stabilise again in one of the next releases. - -Features --------- -#104 - Added maven dependency -#248 - Integrate UDT types with ARRAYs -#295 - Allow for attaching/detaching UpdatableRecords to/from - Configurations -#359 - Added statistics measurement to Query execution for debug - log level -#362 - Added deprecation configuration flag -#364 - Document unknown type in generated source code -#373 - Improve exception handling in code generation -#378 - Added support for Oracle stored functions with OUT - parameters -#382 - Added Factory.attach() methods to re-attach deserialised - Attachables -#394 - Add logging support for SLF4J -#398 - Allow to provide a DataType in Factory.constant() -#399 - Provide access to TypeUtils.convert() methods via DataType -#404 - Added trace logging for measuring the speed of various - query execution steps - -API changes ------------ -#358 - Enhanced DSL API to allow for HAVING clauses without - GROUP BY clauses -#367 - Make Store, Result, QueryPart "Attachable" -#374 - Introduce strategy pattern to code generation for future - support for advanced naming schemes -#375 - Decouple Database from Generator -#381 - Made DataType Serializable -#384 - Deprecated singleton QueryParts -#388 - Unify "internal" API using an Adapter pattern - -Bug fixes ---------- -#187 - Protect generated Record navigation methods against name - clashes -#266 - Added more thorough integration tests for dialect-specific - casting (including some fixes related to varchar types) -#360 - Added more integration tests for the DISTINCT clause -#361 - Add more checks in testInsertUpdateDelete() -#366 - Warn only once per ColumnDefinition, if a data type is - unknown -#377 - NullPointerException when generating invalid stored - function -#380 - Added integration tests to check for proper - serialisability -#386 - Fixed incompatibilities with HSQLDB 2.1.0 -#387 - Fixed unnecessary imports in some Oracle generated - Records -#389 - Fixed javac compiler warning in AbstractStoredObject -#391 - Cannot properly call stored procedures when IN/OUT - parameter is bound to NULL -#392 - Procedures with several OUT parameters may not register - OUT parameters correctly -#410 - Passing null VARRAY values to Oracle stored procedures - causes issues -#412 - limit(int) sets default offset incorrectly in some - dialects - -Version 1.5.6 - March 31, 2011 -================================================================= - -This release consists mainly of code generation bug fixes and -minor API improvements and enhancements. - -The most important improvement is ticket #90, by which lazy -fetching and iteration over data is now supported. jOOQ lets you -keep a reference to a Cursor that has an open JDBC ResultSet, to -fetch data from on-the-fly. - -A few major code generation bugs were reported where the -generated code may cause ambiguity due to an inconsistent API. -This means that you will have to re-generate your schema after -upgrading to version 1.5.6. Some of your code may not compile -anymore, after this upgrade. - -Features --------- -#90 - Added possibility for lazy fetching of data -#208 - Added convenience methods for direct invocation of - sequences' currval() and nextval() attributes -#212 - Created one factory per dialect for better separation of - dialect-specific support -#213 - Generate a factory for each schema -#251 - Opened up base implementations for Field and Condition - to allow for custom implementations by client code -#274 - Integrate H2 ARRAY types with stored procedures -#292 - Documented usage of log4j and java.util.logging -#306 - Added support for the NULLIF function -#319 - Added Field.between(Field, Field) method -#320 - Added trace logging for variable binding and SQL - generation methods -#323 - Added Field.in(Field...) method -#325 - Include release version number in delivered .jar files -#328 - Improved configuration setup documentation page -#333 - Let Result implement Serializable -#334 - Added fetchMap() convenience methods -#335 - Added more functions and aggregate functions examples to - documentation -#338 - Visually improve code generation logging -#339 - Removed skipping of unreferenced UDT's, ENUM's and ARRAY's -#342 - Improved generated referential code by using fetch() and - fetchOne() API -#356 - Let UpdatableRecord.store() and delete() return an int - to indicate whether the record was actually modified - -API changes ------------ -#233 - Allow for joining TableLike instead of Table -#337 - Added generic type > to - InsertSelectQuery -#341 - Fixed API flaw where SelectOnConditionStep.and() methods - and similar ones returned SelectConditionStep, instead of - SelectOnConditionStep - -Bugfixes --------- -#69 - Corrected referential code generation for foreign keys - that reference non-primary unique keys -#85 - Corrected referential code generation for multi-field - foreign keys -#121 - Covered more Factory.executeXXX() methods with integration - tests -#318 - Fixed NullPointerException when executing SELECT * from - aliased tables -#321 - BetweenCondition does not bind left hand side Field - correctly -#322 - InCondition does not bind left hand side Field correctly -#326 - Avoid method overloading where binding to Object - may lead to compile-time ambiguities (with javac) -#343 - Add more foreign key navigation method integration tests -#347 - Add explicit integration tests for schema artefacts - excluded from code generation -#350 - Disambiguate navigation methods if several foreign keys - reference the same entity -#352 - Disambiguate navigation methods if a table ending on S - references itself -#353 - Added integration test for compilation of generated - artefacts with javac (as opposed to the Eclipse compiler) -#355 - Error when storing an UpdatableRecord that has no changed - values - -Version 1.5.5.2 - March 15, 2011 -================================================================= - -A critical bug was reported from the 1.5 release stream where -stored functions did not render their parameters in correct order - -Features --------- -#302 - Map Oracle's NUMBER data type to java.lang.Number in - stored procedures, stored functions - -Bugfixes --------- -#317 - StoredFunctionImpl.asField() renders parameters in wrong - order - -Version 1.5.5.1 - March 13, 2011 -================================================================= - -In version 1.5.5, there was a fatal bug breaking Derby source -code generation. Only the Derby dialect is affected. Please -update immediately, if you are using jOOQ's Derby integration - -Bugfixes --------- -#315 - Generated master data records are not sorted by PK -#316 - Derby code generation fatally broken - -Version 1.5.5 - March 12, 2011 -================================================================= - -This version is released early as there are some important -bugfixes. Additional improvemetns include: - -- Improved DSL related to conditions in HAVING and JOIN clauses -- Support for Oracle-style functions, such as NVL, NVL2, COALESCE - DECODE, etc - -Features --------- -#304 - Add support for Oracle NVL function -#305 - Add support for COALESCE function -#308 - Add support for Oracle NVL2 function -#311 - Add support for Oracle DECODE function - -API changes ------------ -#223 - Enhance DSL to accept and(), or() and similar methods in - JOIN steps -#224 - Enhance DSL to accept and(), or() and similar methods in - HAVING steps - -Bugfixes --------- -#297 - Fixed Factory.concatenate() function -#298 - Added integration tests for nested selects in HAVING - clause -#300 - Added integration tests for nested selects in JOIN clause -#303 - Javadoc correction -#307 - Accelerated integration tests -#309 - Fixed JDBC variable binding issue related to Conditions - where the lhs is a function (e.g. stored function) and the - rhs is a constant -#310 - Fixed issue where fetchOne() methods throw - NullPointerException if no result record is available -#312 - Fixed issue where Field.equal(...) methods rendered - unexpected SQL when rhs null is cast to a type -#313 - Fixed Derby cast type for VARCHAR -#304 - Let the DerbyDataType default for java.lang.String be - VARCHAR, not LONG VARCHAR - -Version 1.5.4 - March 04, 2011 -================================================================= - -Feature #243 required a minor API change in the base classes of -generated source code. This means you have to re-generate all -your jOOQ artifacts in order to migrate to 1.5.4. The artifacts -themselves should be regenerated in a compatible way, such that -your client code should not be affected. If this is not the case, -please report a ticket here: - - https://github.com/jOOQ/jOOQ/issues - -Apart from the Derby RDMBS and some new data type support, there -have been many new convenience methods added all over the API. -For instance, if type-safety is not really a requirement, there -are lots of possibilities to use plain SQL directly in the DSL. -In that case, data can be accessed from Record, Results, not only -through Field, but also through field names or indexes. - -Check out the updated documentation (soon) here: - - http://www.jooq.org - -- Support for the Derby RDBMS -- Support for casting. This allows for even greater flexibility - in cases where jOOQ cannot 100% ensure type-safety -- Support for ARRAY types. Oracle, Postgres, HSQLDB and H2 ARRAY - types are now supported natively as regular bindings in - jOOQ's Field -- Support for dialect-specific data types. CHAR, VARCHAR, CLOB - are no longer treated equally as java.lang.String. Their - type heritage is also generated -- More sequence support -- Lots and lots of bug fixes - -Features --------- -#95 - Support for the Derby RDMBS -#163 - Add support for JDBC type ARRAY (with Postgres) -#209 - Add support for DB2 sequences -#210 - Add support for H2 sequences -#211 - Add support for HSQLDB sequences -#215 - Support for SQL casting using as cast type -#246 - Support for SQL casting using dialect-specific data types -#254 - Add HSQLDB support for ARRAY types -#256 - Add Oracle support for VARRAY types -#257 - Integrate ARRAY types with stored procedures -#261 - Add a global type mapping to the generated Schema object -#267 - Add DataTypeDefinition for further abstraction of data - types in code generation -#269 - Add H2 support for ARRAY types -#290 - If log4j is not on the classpath, use java.util.logging - instead, as fallback - -API Changes ------------ -#156 - Allow for results to be accessed by index, not by field -#218 - Corrected bad method signature: - Record.getValueAsLong(Field, Integer) -#219 - Extended Result and Select API's to be more similar to - that of Record -#232 - Add more convenience plain SQL support to the API -#235 - Add convenience methods to Record, Result and Select for - access of data via field name -#243 - Refactor DataType implementations in order to allow for - the use of generics -#259 - Add field type to database meta data (ColumnDefinition) -#260 - Add field type to database meta data (Field) -#262 - Add default behaviour for Record.getValue(Field) -#276 - Add Javadoc as a ZIP file to the jOOQ distribution - -Bugfixes --------- -#125 - Add more plain SQL integration tests -#191 - Add more integration tests for nested unions -#205 - Implemented workaround for handling Postgres stored - functions with UDT OUT parameters -#214 - Fixed NPE when generating a stored function with an - unknown parameter type -#216 - Fixed some cases where binding of BigInteger is not done - correctly -#220 - Syntax error when using select statement in a CASE clause -#221 - Corrected integration tests for combined update and - select statements -#222 - Added integration test for INSERT statements having - nested SELECT statements for their fields -#225 - Correctly cast array types in Postgres -#230 - Potential misuse of Blob and Clob in H2's JDBC types -#239 - Factory.fetchAny() is not implemented for SQLite -#244 - Fixed peculiar MySQL casting support where cast types do - not match any data types -#245 - Fixed NPE when reading null dates in SQLite -#249 - Added ARRAY type integration tests -#255 - Stored procedure bind variables get mixed up when any - argument is null -#263 - Correctly handle Postgres function overloading -#264 - Ambiguous funciton calls when calling overloaded functions - with null parameter -#281 - Handle compilation errors when generating stored - procedures with > 254 parameters -#283 - Fixed compilation errors in generated source code for - Oracle's UDT table type -#284 - Fixed compilation errors in generated source code for - Oracle procedures in packages, when they have no - parameters -#285 - Fixed compilation errors in generated source code for - Oracle tables with the same name in different schemata -#286 - Fixed name collisions in generated objects with the - java.lang.* package -#288 - Prevent the creation of UNION queries with bad syntax - in MySQL -#289 - Correctly alias fields within UNION queries for some - dialects, which then only require the "AS" keyword -#291 - Cannot create an aliased field called "year" in Postgres - -Version 1.5.3 - January 13, 2011 -================================================================= - -- Lots of stored procedure support was implemented -- Support for sequences was added -- The final decision to postpone support for DB2 UDT's was made -- Some code generation bugfixes - -Features --------- -#36 - Added stored procedure / stored function support for HSQLDB -#140 - Added support for Oracle sequences -#147 - Added support for H2 stored functions -#162 - Correctly integrate UDTs with stored procedures -#170 - Added support for Postgres stored functions -#186 - Added support for more Oracle PL/SQL simple data types -#193 - Simulate support for H2 "stored procedures" -#195 - Simulate support for Postgres "stored procedures" -#206 - Added support for Postgres sequences - -API changes ------------ -#180 - Improved DSL for constant values -#181 - Allow for referencing Field in function argument list -#189 - Renamed convenience methods in org.jooq.Record -#207 - Add fetchOne(Field) method to org.jooq.Select API - -Bugfixes --------- -#182 - Protected generated Record classes against clashes with inherited methods -#183 - Fixed NullPointerException, when generating master data tables with - NULL fields -#184 - Fixed IllegalArgumentException, when a data type is present in the - schema, but unavailable in code generation logic -#185 - Code generation should not fail when single elements cannot be generated -#188 - Improved integration tests for stored procedures / functions / packages -#196 - Increase RDMBS version compatibility by avoiding "SELECT *" in code - generation logic -#199 - Added integration tests for stored procedures in RDBMS that do not - support OUT parameters -#201 - Fixed issue in DB2 where stored procedures without parameters were not - generated. -#202 - Added integration tests for stored procedures / functions without - parameters - -Version 1.5.2 - December 27, 2010 -================================================================= - -- Improved support for stored procedures, also in packages -- A minor API change was inevitable to implement #173. The API change only - concerns the INTERNAL API. Deprecation marks are added and deprecated items - will be removed in 1.6.0 -- Experimental SQLite database support -- Some important bug fixes - -Features --------- -#25 - Added support for Oracle packages -#114 - Added support for Oracle UDTs -#145 - Added support for the SQLite database -#150 - Generate static convenience methods for stored procedures / functions -#151 - Generate static convenience methods for stored function fields -#152 - Generate meaningful serialVersionUID in generated classes -#173 - Added support for EQUIVALENT schemata - -API changes ------------ -#159 - Added convenience method List getValues(Field) to Result -#165 - Added convenience methods for creating EXISTS clauses -#169 - Improved DSL for WHERE clauses - -Bugfixes --------- -#68 - Prevent issues originating from overloaded stored procedure names, - generating identical Java class names -#153 - Fixed issue with generated code for DB2 stored functions -#154 - Fixed issue with generated code for DB2 stored functions -#155 - Fixed issues with database NULL not being mapped correctly to Java NULL - when selecting values that have a primitive type (int, long, etc) -#158 - Potential ClassCastException when using Field -#171 - Corrected issue related to selection of default schema in DB2 -#177 - Fixed issue related to generated code for tables or UDTs without columns - - -Version 1.5.1 - December 13, 2010 -================================================================= - -- H2 database support thanks to Espen Stromsnes -- Improved stored procedure support - -Features --------- -#96 - Added H2 database support -#101 - Added stored procedure / stored function support for Oracle -#138 - Added stored procedure support for DB2 -#146 - Added support for DB2 functions - -API changes ------------ -#143 - Added convenience methods to Record - -Bugfixes --------- -#84 - Implemented referential code generation for foreign keys that do not - match their primary keys' types -#141 - Encoding problem in generated master data classes - -Version 1.5.0 - November 22, 2010 -================================================================= - -- A big one. Major API changes / improvements -- Added lots of convenience methods -- UDT support -- Enum support -- DB2 support thanks to Espen Stromsnes -- "Light" dependency to log4j added. jOOQ will still run without it - -Features --------- -#1 - Create support for UDTs (so far only for PostgreSQL) -#15 - Added DB2 support -#60 - Added support for nested selects in INSERT and UPDATE - statements -#83 - Added log4j logging to code generation and runtime -#87 - Add support for arithmetic expressions -#105 - Added support for ENUM data types, where applicable - (MySQL and PostgreSQL so far) -#110 - Added execute and fetch convenience methods -#111 - Added missing "select distinct" support -#122 - Annotate generated classes with javax.annotation.Generated -#123 - Generate user enum fields from data values (master data) -#124 - Added PlainSQLTable -#127 - Added not() operator to Condition -#135 - Added convenience methods andNot() and orNot() in - Condition - -API changes ------------ -#89 - Removed support for DataSource. jOOQ is not a transaction - manager -#92 - Added SortField type to be used for sorting -#99 - Provide better access to functions (No more FunctionFactory) -#116 - Merge Manager functionality into Factory -#118 - Improve API of org.jooq.Field -#119 - Improve subquery condition API -#132 - Reduced much of the select query API -#134 - Better separation of SelectQuery and SimpleSelectQuery - -Bugfixes --------- -#109 - Error when executing select * if generated schema does not - match actual schema -#115 - Fix various "null" pseudo field issues -#126 - Error when selecting a single field from a union nested - select -#129 - Fixed performance issue in Oracle code generation for - very large databases - - -Version 1.4.4 - November 22, 2010 -================================================================= - -Unreleased version, fixes included in 1.5.0 - -Bugfixes --------- - -#133 - JoinCondition does not take comparison operator - -Version 1.4.3 - October 25, 2010 -================================================================= - -Some more bugfixes - -Bugfixes --------- - -#71 - Generated code does not compile, when foreign key and - primary key have a data type mismatch -#73 - In Oracle generated code, multi-field foreign keys may - generated bad relations code -#82 - Conversion of literals to camelcase fails if numbers are - involved - -Version 1.4.2 - October 22, 2010 -================================================================= - -Various bugfixes and minor improvements - -Features --------- -#66 - Add support for CASE or DECODE expression - -API changes ------------ -#77 - Functions should not extend FieldImpl, but a new - AbstractField -#78 - QueryPart pollutes declared method space of its - implementations. Hide it by indirection - -Bugfixes --------- -#64 - Code generation fails when foreign key references a unique - key that is not the primary key. Code generation for these - cases is omitted -#67 - When loading properties files, a leading / seems to be - mandatory. This is preventing users from correctly setting - up jOOQ the first time -#70 - Add support for Oracle datatype TIMESTAMP(6) -#72 - Name clashes in generated Tables -#75 - Constant does not bind its values. -#76 - Constant should not render strings all the time -#79 - Constants are not properly escaped -#80 - Position function does not bind any variables -#81 - Add cast function to Constants in HSQL - -Version 1.4.1 - October 18, 2010 -================================================================= - -Oracle patch release - -Features --------- -#63 - Generate referential functionality for Oracle - -Version 1.4.0 - October 17, 2010 -================================================================= - -Support for PostGreSQL was added. -Added lots of OR-mapping functionality. -There is a general API change due to various new features. - -Features --------- -#14 - Add PostGreSQL support -#40 - Resolve foreign keys. Allow for navigation between objects. -#42 - Add PlainSQLField -#45 - Add "dirty" flag to Record's values. This allows for - updating only relevant data. -#47 - Complete implementation for UPDATE, INSERT, DELETE - statements. Added some missing functionality. -#48 - Add more support for Date, Time, Timestamp fields. -#51 - Add a org.jooq.impl.Manager class that provides common - utility methods for CRUD operations - -API changes ------------ -#10 - Add second generic type . This is a - prerequisite for many OR-mapping features -#18 - Use org.jooq.Record in InsertQuery and UpdateQuery -#46 - Create UpdatableRecords as a prerequisite for JPA and true - OR-mapping. These records support store() and delete() - methods -#52 - Add default constructor in generated Records. -#53 - Add refresh functionality to UpdatableRecords. See also #46 -#54 - Add a state to the factory class -#56 - Reduce API, remove unnecessary Condition subinterfaces -#57 - Reduce API, remove unnecessary QueryPart interfaces - -Bugfixes --------- -#49 - NullPointerException when generating relations on schema - subset -#58 - Count function renders bad SQL in various dialects -#59 - Exception when selecting unaliased functions in queries - -Version 1.3.0 - August 24, 2010 -================================================================= - -Support for HSQLDB was added. -There is a major API change due to #44. - -Features --------- -#29 - Generate primary keys and foreign keys in Oracle code - generation -#34 - Add support for HSQLDB -#39 - Generate primary keys and foreign keys in HSQLDB code - generation -#41 - Add documentation to QueryFactory and Functions - -API changes ------------ -#23 - Add support for more advanced joins -#32 - Merge SelectQuery and ResultProviderQuery interfaces -#44 - Let Query methods return "this" - -Bugfixes --------- -#35 - Add unit tests for HSQLDB support -#37 - Syntax error in combined select queries! - The usage of combined queries in MySQL may still be a bit - awkward. Keep an eye out for further fixes -#43 - Join with aliased tables doesn't work - -Version 1.2.0 - August 21, 2010 -================================================================= - -The added Oracle support is now unit tested and more stable. -The Oracle NUMBER data type is mapped more precisely to Java -types. - -Features --------- -#12 - Model primary keys and foreign keys in generated code -#22 - Improve mapping of Oracle NUMBER data type -#26 - Add Plain SQL QueryParts -#27 - Add support for HAVING clause - -Bugfixes --------- -#24 - Add Unit tests for oracle database (and fixed bugs) -#31 - Pull up addOrderBy() methods from SelectQuery to - ResultProviderQuery - -Version 1.1.0 - August 17, 2010 -================================================================= - -The main new feature is the Oracle support. Wait for -Version 1.1.1 for that support to be stabilised, as there are no -Oracle unit tests running against an Oracle database yet. - -Features --------- - -#2 - Add support for inner / nested selects -#3 - Add more function support -#4 - Implement filtering functionality for code generation -#6 - Add Oracle Support -#9 - Create true POJO's (implementing org.jooq.Record) with - getters and setters -#17 - Make org.jooq.impl.Parameter independent of Field - -Bugfixes --------- - -#11 - Code generation does not remove files - -Version 1.0.1 - August 14, 2010 -================================================================= - -Features --------- - -#5 - Prevent code regeneration, if no changes were made -#7 - Implement ant task for code generation - -Version 1.0.0 - August 14, 2010 -================================================================================ -Initial Release \ No newline at end of file diff --git a/jOOQ-website/inc/RELEASENOTES-2.3.txt b/jOOQ-website/inc/RELEASENOTES-2.3.txt deleted file mode 100644 index 592a2f7b02..0000000000 --- a/jOOQ-website/inc/RELEASENOTES-2.3.txt +++ /dev/null @@ -1,2663 +0,0 @@ -jOOQ Release notes -================== - -For an interactive overview, see also -http://github.com/jOOQ/jOOQ/issues - -For a formatted text version, see -http://www.jooq.org/notes.php - -For a text version, see -http://www.jooq.org/inc/RELEASENOTES.txt - -Version 2.3.3 - August 28, 2012 -================================================================= - -This is a minor patch release with some useful fixes for the 2.4 -branch - -Bug fixes ---------- -#1537 - Factory.batchStore() renders bad SQL for Postgres. The - RETURNING clause is not allowed in batch INSERTs -#1556 - Add javax.validation API to full deliverable -#1572 - Use Thread.currentThread().getContextClassLoader() to - load ExecuteListener classes as a workaround for - experienced class loading problems when using OSGi -#1650 - jOOR fix #16: Can't call Reflect.create(A, B, null) -#1660 - Factory.renderContext().castMode(CastMode.NEVER) - .render(query) doesn't work. CastMode is not applied -#1667 - Bad variable binding when NULLS FIRST, NULLS LAST is - simulated in SQL Server and other databases -#1673 - Result.formatXML() and Result.intoXML() do not render - namespaces correctly -#1693 - Cannot bind UDT values from other schemata to stored - procedures -#1632 - Improve the performance of various DefaultRenderContext - methods, by locally caching Settings values locally - -Version 2.3.2 - June 3, 2012 -================================================================= -This is a minor patch release with some useful fixes for the 2.3 -branch - -Bug fixes ---------- -#1441 - Performance issue with AbstractDataType.convert(Object). - Avoid conversions when they're obviously unneeded -#1449 - Generate some meaningful Javadoc into the generated - [schema-name]Factory classes -#1454 - Add line breaks to generated Javadoc where appropriate -#1465 - Custom generator strategy's printImplements() is called - with Mode == RECORD for tables -#1483 - Inefficient cloning of default settings using JAXB - unmarshalling leads to non-negligible overall overhead. - Use serialisation instead (short of a useful XJC clone - plugin) -#1478 - Caching SQLDialect in AbstractDatabase heavily improves - code generation performance -#1490 - Compilation error when a SQL Server stored procedure has - a parameter named "value" -#1493 - Bad syntax for SELECT /*+hint*/ DISTINCT ... in Oracle -#1515 - Splitting of large NOT IN conditions is wrong. The parts - should be connected with AND, not with OR - -Version 2.3.1 - May 11, 2012 -================================================================= -This is an important patch release fixing some regressions in the -code generator for the Postgres dialect. With 2.3.0, it was no -longer possible to generate schemata of which the database user -was not the owner. - -Bug fixes ---------- -#1334 - Fix inaccurate simulation of TRUNC(number, decimals) for - Derby -#1403 - Documentation bug: ctx.statement() can be replaced in - executeStart(). This is not documented -#1406 - Compilation errors in generated source code when Postgres - stored procedure parameter is called "NAME" -#1407 - Compilation errors in generated source code when Postgres - data-type is "any" (with quotes!) -#1409 - Postgres code generation broken when not connecting with - the owner of a schema - -Version 2.3.0 - May 6, 2012 -================================================================= - -This is a minor feature increment release, featuring many useful -API enhancements, some new functions, some new syntax support -elements, improved source code generation and a lot of -improvements on the jOOQ Console, thanks to Christopher Deckers. - -The updated jOOQ Console now allows for filtering incoming -statements directly on the server side, using regular expression -filters on statement text and other features. These improvements -are a part of a general strategy to introduce breakpoints and -more sophisticated debugging capability to the jOOQ Console. - -Features and improvements -------------------------- -#597 - Add support for Oracle KEEP (DENSE_RANK FIRST...) - aggregate function clause -#910 - Add ExecuteListener extension to allow for overriding - exception translator to handle vendor-specific error - codes -#1286 - Add "renderSchema" flag to Settings, to completely - disable rendering of schema names -#1293 - Generate setter methods for JAXB annotated configuration - properties -#1295 - Add support for MySQL's INSERT IGNORE clause -#1296 - Simulate the FOR UPDATE clause for SQL Server, CUBRID, - using JDBC's ResultSet.CONCUR_UPDATABLE -#1302 - Add Factory.inline() to allow for flagging inline-only - "bind values" -#1303 - Add connection-less Factory constructors for convenience, - when jOOQ is only used as a SQL query builder -#1304 - Add option to generate JSR-303 @NotNull and @Size - annotations to generated POJO's -#1307 - Let HSQLDB dialect render NVL2() as NVL2() instead of - CASE expression -#1312 - Allow for omitting , and generate all - available schemata in that case -#1315 - Let generated factories use their associated Schema as - the Settings' RenderMapping's defaultSchema -#1319 - Move jooq-spring's FactoryProxy to the core jooq project -#1322 - Add Factory.dateAdd() and timestampAdd() for convenience -#1327 - Add DataType.isLob() -#1328 - Add Field inline(char), inline(Character), - inline(CharSequence) for convenience -#1333 - Add support for the Oracle TRUNC function, for numeric - arithmetic -#1336 - Let Record.into(Class) and similar methods accept - "immutable" classes, i.e. setter-less classes that take - several constructor arguments -#1340 - Use Constructor.setAccessible(true), if no default - constructor is available on the target type of - Record.into(Class) -#1342 - Improve Javadoc on Factory.function(). Document arguments -#1349 - Add support for the CUBRID Click-Counter INCR() -#1352 - Allow for creating syntax-error and SQL-injection safe - qualifiers for org.jooq.Field and org.jooq.Table -#1361 - Add Factory.batchStore(TableRecord...), to allow for - batch UPDATE/INSERTs of many records -#1367 - Make configured ExecuteListeners default constructors - accessible -#1366 - Let org.jooq.Batch extend Serializable -#1378 - Upgrade internal jOOR dependency to jOOR 0.9.3 -#1379 - Upgrade internal jOOU dependency to jOOU 0.9.1 -#1390 - Add RenderContext.qualify() to indicate whether - QueryParts should render qualified versions of themselves - or not - -Features and improvements (jOOQ Console) ----------------------------------------- -#1242 - Upgrade jOOQ Console dependency on RSyntaxTextArea from - 1.5 to 2.0.2 -#1249 - Allow for filtering incoming statements in jOOQ Console -#1393 - Implement a communication protocol between Console server - types and Console client types to allow for more - sophisticated functionality - -API changes (backwards-compatible) ----------------------------------- -#1310 - Deprecate Factory.literal() in favor of Factory.inline(), - and Factory.field() -#1368 - Promote AbstractQuery.isExecutable() to the public API - -Bug fixes ---------- -#989 - INSERT and UPDATE statements always render non-qualified, - escaped field names. This may cause trouble when using - plain SQL fields -#1109 - Standalone TABLE or VARRAY types are not correctly - initialised before referencing tables load them -#1279 - NullPointerException when leaving empty -#1283 - The LIKE escape character needs escaping, too, in - contains(), startsWith(), endsWith() -#1306 - Add missing INTERVAL data types to HSQLDBDataType -#1308 - Oracle's DataTypeDefinition reports the length of a BLOB - / CLOB data type to be 4000 -#1313 - and match only table names, not - fully qualified names -#1323 - Add support for byte[] in Postgres UDTs -#1324 - Code generation error in Oracle 10g when generating - stored procedures -#1326 - Error when deserialising BLOBs from Oracle UDTs -#1329 - NullPointerException when passing null to - timestampDiff(Field, Field) -#1343 - Regression in insertInto(...).values(...). Cannot pass - Field to values() -#1344 - Initialise Result ArrayLists to their expected size, if - that size is known. -#1360 - jOOR issue 12: "Don't reset the accessible flag to false, - if setting it to true is required, to avoid race - conditions in concurrency contexts" -#1371 - Missing conversion when using unsafe Field types in - BATCH statements -#1376 - Oracle UDTs in REF CURSORs are not deserialised correctly - from procedure OUT parameters -#1377 - Oracle UDTs are not deserialised correctly when the same - UDT name is present in multiple schemata -#1394 - NullPointerException when omitting element in - code generation configuration - -Version 2.2.1 - April 12, 2012 -================================================================= - -This is a minor patch release, fixing some issues related to the -code generation of the new CUBRID integration as well as other, -minor issues. Upgrade if you're using CUBRID - -Bug fixes ---------- -#1287 - Remove oracle.sql dependency also from OSGi information - in pom.xml -#1288 - SQL syntax errors from sequences when using RenderMapping - with defaultSchema -#1289 - DefaultBindContext logs as Util.class -#1297 - Compilation error in CUBRID generated artefacts - referencing OBJECT types -#1298 - Avoid source code generation errors when generating code - for unknown, dialect-specific data types - -Version 2.2.0 - April 09, 2012 -================================================================= - -Finally, jOOQ has added support for another database, and a very -promising one, that is. http://www.cubrid.org is a surprisingly -original mixture of a relational and object-oriented database -where tables and classes are synonyms, so are records and -instances. The CUBRID database has a high level of compatibility -with MySQL and is aimed at MySQL users wanting more performance -for their web applications. For details, see the slides here: - -http://www.slideshare.net/cubrid/growing-in-the-wild-the-story-by-cubrid-database-developers - -jOOQ is proud to have become a CUBRID partner, looking forward -to further cooperation with CUBRID in the near future. - -Apart from that, jOOQ now fully supports SQL standard INTERVAL -data types. With JDBC and JPA lacking official support for this, -jOOQ aims for becoming the tool of choice for vendor-specific -date time arithmetic. True INTERVAL data type support is given in -HSQLDB, Ingres, Oracle, Postgres databases. Besides that, CUBRID -and MySQL support INTERVAL data type arguments in functions. In -other dialects, jOOQ simulates DATEADD(), TIMESTAMPADD(), -DATEDIFF(), TIMESTAMPDIFF(). - -For jOOQ's OLAP friends, there is now also support for the Oracle -LISTAGG function (LIST() in Sybase, XMLAGG() in DB2, STRING_AGG() -in Postgres, GROUP_CONCAT() in CUBRID, H2, HSQLDB, MySQL). -LISTAGG is an "ordered aggregate function", meaning that the -aggregation is done using a specific ordering. Keep an eye out -for more such function support in future versions. - -Features and improvements -------------------------- -#566 - Add support for INTERVAL data types -#585 - Add support for DATE, TIME and INTERVAL arithmetic -#1183 - Add support for DEFAULT values in Oracle stored procedure - parameters -#1243 - Let generated POJOs (and Records) extend base classes - and implement interfaces -#1252 - Avoid JDBC escape syntax for Oracle stored procedure - calls. Generate PL/SQL syntax, instead -#1255 - Let generated Tables contain a public default constructor - to be able to extend those classes - Github issue #12 -#1257 - Add CUBRID support -#1268 - Add Factory.field(String, QueryPart...) to generate - custom clauses -#1269 - Add YEAR(), MONTH(), DAY(), HOUR(), MINUTE(), SECOND() - function support as shortcuts for EXTRACT() -#1273 - Simulate GROUP_CONCAT() aggregate function using Oracle's - LISTAGG() function, where available -#1274 - Add support for the Oracle LISTAGG(...) WITHIN GROUP - (ORDER BY ..) [ OVER (..) ] aggregate / analytic function -#1275 - Simulate Sybase LIST() aggregate function using Oracle's - LISTAGG() function -#1276 - Simulate Oracle's LISTAGG() in DB2 using XMLAGG(), - SUBSTR() and CONCAT() -#1278 - DEBUG log both executed SQL and SQL with inlined bind - values - -API changes (backwards-compatible) ----------------------------------- -#1262 - Pull up OracleFactory.prior() and other CONNECT BY - related methods to Factory - -Bug fixes ---------- -#1241 - Wrong variable binding when comparing CHAR columns in - Derby and DB2 without explicit casting to VARCHAR -#1244 - Cannot override class name in GeneratorStrategy in - Mode.POJO -#1248 - Setting both false and - true leads to compilation errors -#1256 - Fixed code generation issue with H2 user defined - functions returning VARCHAR -#1263 - Pass fetchsizes <= 0 to the JDBC driver (for vendor- - specific MySQL compatibility) -#1270 - Most databases allow for multiple identical foreign keys. - This leads to compilation errors in generated source code - -Version 2.1.0 - March 18, 2012 -================================================================= - -With this version, jOOQ attempts to follow versioning rules -imposed by semantic versioning: http://semver.org/ -There will be 1 minor release per month, and a couple of patch -releases per year, depending on popular demand - -The main improvements for this release include - -- The possibility of providing jOOQ with a custom type mapping. - You can now define your own Converter types that are used by - jOOQ to map a database's SQLDataTypes to your custom types. - This is particularly useful for Java's enums. Read more about - custom converters in the manual: - http://www.jooq.org/manual/ADVANCED/CustomTypes/ - -- There are a lot of new runtime configuration options to control - the SQL style of SQL rendered by jOOQ. You can now specify - whether table/column names should be quoted / capitalised / - lower-cased, whether SQL keywords should be capitalised or not, - etc... - -- The handling of NULL has been improved in favour of using jOOQ - as a SQL builder library (e.g. along with Spring for execution) - NULL is no longer inlined, but bound as a variable. - -- jOOQ now supports simulation of the relational division - operation using an intuitive syntax. Read more about the - relational division here: - http://en.wikipedia.org/wiki/Relational_algebra#Division - -Features and improvements -------------------------- -#161 - Add runtime configuration to pretty print rendered SQL -#349 - Add SQLite relations support -#491 - Add runtime configuration for SQL keyword style (upper - case, lower case) -#521 - Add runtime configuration for SQL reference style (upper - case, lower case, as-is, quoted) -#1150 - Add code generation option to disable generation of - records -#1181 - Add support for SQL Server data types timestamp and - rowversion -#1188 - Load default Settings from the classpath at - /jooq-settings.xml, or from -Dorg.jooq.settings -#1193 - Specify main-class in jOOQ Console's manifest.mf and - include dependency in jar file -#1194 - Add ColumnDefinition.isNullable() -#1202 - Add support for the relational division operation: - A.divideBy(B).on(A.ID.equal(B.A_ID)).returning(A.X, ...) -#1207 - Add Factory.batch(Collection) for - convenience -#1208 - Render @javax.persistence.Column(nullable = false) - property, if available -#1209 - Render @javax.persistence.Column(length, precision, - scale) properties, if available -#1215 - Add org.jooq.Converter for custom type mapping -#1216 - Overload Record, Result.getValue() and .setValue() - methods to accept a Converter -#1217 - Add EnumConverter as a base type for custom enum - converters -#1218 - Add code generation options to generate - referencing a Java type and a Converter -#1224 - Add DataTypeDefinition.getLength() to jooq-meta's type - system -#1233 - Support custom JDBC properties for jooq-codegen -#1234 - Add Database.getTable(SchemaDefinition, String, boolean) - to fetch tables case-insensitively -#1239 - Add Factory.fetchLazy(String, Object...) - -API changes (backwards-compatible) ----------------------------------- -#1191 - Deprecate ConfigurationRegistry and replace by equivalent - ExecuteListener feature -#1219 - API Bug: Cannot use LIMIT .. OFFSET along with FOR UPDATE - -Bug fixes ---------- -#625 - Remove dependency from generated Routines to the - generator's SQLDialect -#1128 - NULL is inlined in INSERT statement instead of binding it - as a variable. This can cause issues when using jOOQ with - Spring -#1137 - Exclude MySQL column-level enum types when that column is - overridden by a -#1158 - Derby cannot handle inlined NULL literals in some - contexts -#1180 - Execute BatchMultiple (multi-query batch query), when - executing BatchSimple (single-query, multi-bind-value - query) with StatementType == STATIC_STATEMENT -#1189 - TableMapping regression for SQLite database -#1190 - Cannot store SQLite records when using - StatementType.STATIC_STATEMENT -#1199 - Table.getFields() returns an internal representation of a - table's field list. Make generated tables immutable! -#1200 - Internal API leak exposed through covariance in - AbstractType.getFields() -#1211 - Enforce method name disambiguation also when using custom - strategies in jooq-codegen -#1212 - Enforce identifier disambiguation also when using custom - strategies in jooq-codegen -#1221 - Incorrect ExecuteListener invocation for INSERT .. - RETURNING. executeStart() and executeEnd() are omitted -#1223 - Cache ExecuteListener classes for performance -#1225 - Bind NULL byte[] as java.sql.Types.BINARY instead of - BLOB in Postgres, to avoid errors -#1226 - Bind NULL UDTs with their associated type name in Oracle -#1232 - SQLException when Factory.fetch() does not return a - ResultSet -#1237 - Don't generate enum classes for columns in MySQL tables - that are excluded from code generation - -Version 2.0.5 - February 26, 2012 -================================================================= - -This release finally introduced basic runtime configuration -features for the jOOQ Factory. This configuration now includes: - -- Execute listener and SQL tracing support. jOOQ allows you to - hook your own listeners into jOOQ's query execution engine to - be notified of all sorts of events -- The existing SchemaMapping features. They are now part of the - runtime configuration -- StatementType settings. Specify whether a Factory should - execute java.sql.PreparedStatements (with bind variables) or - static java.sql.Statements with inlined variables. - -The runtime configuration is documented here: - -http://www.jooq.org/manual/JOOQ/Factory/ - -The listener and tracing support has been requested by -Christopher Deckers, a new jOOQ user who has had the courtesy to -contribute the new jOOQ Console, which is documented here: - -http://www.jooq.org/manual/ADVANCED/ExecuteListener/ - -Apart from that, another long-requested feature is now fully -implemented: The GeneratorStrategy, allowing for custom naming -strategies in generated source code. This will allow for -generating custom table / record class name prefixes / suffixes, -as well as overriding the default behaviour for rendering UPPER, -lower and CamelCase artefacts. See the manual for details: - -http://www.jooq.org/manual/META/Configuration/ - -Features and improvements -------------------------- -#93 - Add Field.equalIgnoreCase(), Field.notEqualIgnoreCase() -#408 - Add class prefixes, suffixes and other options to the - code generator -#492 - Add runtime configuration -#1107 - Let Field.contains() support the Postgres ARRAY @> ARRAY - operator -#1140 - Add ResultQuery.fetchResultSet() to return the underlying - JDBC result set -#1143 - Add Result.isNotEmpty() for convenience -#1145 - Add runtime configuration to specify whether jOOQ should - execute java.sql.PreparedStatement (with bind variables) - or a java.sql.Statement (with inlined parameters) -#1146 - Add Query.getSQL(boolean) to indicate that bind values - should be inlined (as a convenience for - Factory.renderInlined(QueryPart)) -#1148 - Add Cursor.resultSet() to expose the underlying ResultSet -#1149 - Allow for optional - "http://www.jooq.org/xsd/jooq-codegen-2.0.4.xsd" - namespace in jooq-codegen configuration -#1152 - Add & org.jooq.EnumType> - E MySQLFactory.enumType(Class, int) for enum reverse - lookups of MySQL-specific enums -#1159 - Support matching numbers with LIKE, e.g. ID LIKE '%33%' -#1160 - Implement Field.contains(), .startsWith(), .endsWith() - for numeric values, too -#1161 - Use reflection to remove compile-time dependency on - ojdbc for creating ARRAYs -#1162 - Integrate jOOR into jOOQ for simpler reflection -#1164 - Distinguish between Definition.getInputName(), - .getOutputName() -#1165 - Add constraint name to generated javadoc -#1167 - Trivial issue with org.jooq.Factory.exists Javadoc - - GitHub issue #10 -#1169 - Add Configuration.setData(), getData() to convey custom - data in a configuration's lifecycle -#1172 - Add runtime configuration to deactivate JooqLogger -#1177 - Add jOOQ-Console module to jOOQ -#1184 - Add DataType.isArray() - -API changes (backwards-compatible) ----------------------------------- -#1142 - Rename Result.exportXML() to Result.intoXML() to stay - more consistent -#1151 - Deprecate SchemaMapping in favour of new runtime - configuration - -Bug fixes ---------- -#978 - Schema.getTables() and similar methods return empty lists - when Schema is mapped with SchemaMapping -#1153 - Bad inlining of booleans in Sybase ASE / DB2 / Oracle - SQL Server / SQLite -#1154 - Bad inlining of byte[] in most dialects -#1155 - byte[] are erroneously converted to String when using - Record.intoArray() -#1156 - Bad inlining of DATE / TIME / TIMESTAMP data types in - Ingres (and other dialects, when the setting differs from - the default) -#1166 - Some generated Javadoc uses naming strategy or plain - output name, instead of qualified output name -#1168 - Oracle packages are generated as static, instead of - static final -#1175 - Factory.use() seems to render SQL with the Schema name - still present -#1179 - Oracle-generated ArrayRecords need a reference to - org.jooq.Schema to read TABLE of OBJECT from stored - procedures - -Test cases ----------- -#1147 - Add integration tests for executing SQL generated using - Factory.renderInlined() - -Version 2.0.4 - February 12, 2012 -================================================================= - -This release introduced many improvements to source code -generation. These improvements include: - -- Maven and standalone code generation now use the same XML - configuration, which is read by jOOQ-codegen using JAXB. This - allows for more complex configuration elements in the future -- jOOQ-codegen can now handle multi-schema databases and generate - code for tables referencing tables from other schemata. This - is integration tested against the SQL Server AdventureWorks - database -- jOOQ now allows to generate simple POJOs in addition to Records - and to annotate both POJOs and Records with JPA annotations - such as @Entity, @Table, @Id, @Column, @UniqueConstraint, etc. - -You can migrate your existing .properties configuration by running -> org.jooq.util.GenerationTool /your.properties migrate - -Besides that, there is a lot of ongoing work to improve the -integration of Oracle's TABLE and VARRAY types. - -Features and improvements -------------------------- -#8 - Add JPA annotations to generated POJOs / Records -#282 - Add support for multi-schema databases -#287 - Add support for Oracle TABLE types -#395 - Use XML configuration file instead of properties file -#1089 - Add Field.contains(), .startsWith(), .endsWith() as a - convenience for Field.like() (including escaping) -#1092 - Move master data table configuration from - generator.generate to generator.database namespace -#1093 - Add support for generator.strategy in Maven source code - generation -#1094 - Add support for generator.database.date-as-timestamp in - Maven source code generation -#1095 - Move generator.generate.unsigned-types to - generator.database namespace -#1096 - Add support for generator.generate.unsigned-types in - Maven source code generation -#1103 - Add support for SQL Server data type uniqueidentifier -#1106 - Add Factory.escape(Field, char) for use with LIKE -#1108 - Add support for multi-schema databases using Maven code - generation -#1115 - Add support for Oracle VARRAY/TABLE of OBJECT types -#1127 - Add support for POJO classes generation -#1129 - Allow for using Param in LIMIT .. OFFSET clauses -#1132 - Add RenderContext.castMode() to allow for avoiding casts - where this is not really needed -#1136 - Add generation option to enable/disable generating - navigation methods - -Bug fixes ---------- -#1099 - Derby generated artefacts are not sorted alphabetically -#1101 - Internal API leak exposed through covariance in - AbstractTable.joinXXX() methods -#1110 - VARRAY element type information is lost when unnesting - VARRAY's in Oracle -#1111 - VARRAY element type information is lost when unnesting - VARRAY's returned from functions in Oracle -#1114 - Syntax error when unnesting TABLE of OBJECT in Oracle. - The unnested table contains several columns but jOOQ only - unnests "COLUMN_VALUE" -#1117 - NullPointerException when passing an ArrayRecord - containing a null array to a stored function in Oracle -#1125 - Postgres needs casting for date time data types in - queries like SELECT ? FROM DUAL -#1131 - DB2: [Noauthorized routine named "LIKE" of type - "FUNCTION" having compatible arguments was found] when - using Field.like(concat(x, y)) -#1133 - Compilation errors in generated source code if the same - constraint name exists in several schemata -#1134 - NullPointerException in code generation when a foreign - key constraint references a table from another schema - that is not being generated -#1135 - Generated Javadoc references inputSchema instead of - outputSchema - -Test cases ----------- -#1009 - Add more integration tests for proper handling of - java.sql.Date, Time, Timestamp -#1090 - Run jOOQ tests against AdventureWorks SQL Server sample - database -#1105 - Add integration tests for multi-schema source code - generation and querying -#1122 - The 10k lines of integration test code are too heavy for - the compiler. Create test modules with fewer lines of - code, each. - -Version 2.0.3 - January 29, 2012 -================================================================= - -This release focuses on increased compatibility between various -SQL dialect integrations as far as ARRAY and JOIN support is -concerned: - -- ARRAY types are only available in H2, HSQLDB, Oracle, Postgres. - Nevertheless, they can be somewhat simulated in other dialects - using nested selects with UNION ALL. Increased compatibility - leads to a nicer API, where ARRAYs are used along with ALL/ANY - quantifiers, for instance. - -- JOIN syntaxes can be quite powerful in SQL. Apart from - simulating NATURAL JOIN, JOIN USING clauses, as well as a - synthetic "KEY JOIN" syntax, jOOQ now also supports nesting - JOIN expressions to create more complex table sources. See a - recent blog post on the subject here: - -http://blog.jooq.org/2012/01/15/lets-revise-the-sql-from-clause/ - -Features and improvements -------------------------- -#578 - Add KEY JOIN syntax to simulate joining using generated - foreign keys -#577 - Simulate NATURAL JOIN syntax, where this is unavailable -#582 - Simulate JOIN USING syntax, where this is unavailable -#671 - Allow for nesting JOIN clauses -#676 - Add Table.join() methods to create more flexible table - sources -#993 - Add Field.equalAny(T[]), .equalAny(Field) methods -#1048 - Simulate (array) syntax for dialects - that do not support arrays -#1051 - Add Factory.execute(String, Object...) as a convenience - method for Factory.query(...).execute() -#1055 - Simulate Factory.table(Object[]) and table(List) using - UNION ALL in dialects that do not support arrays -#1060 - Improve debug logging of H2 arrays. The syntax is not - ARRAY[1, 2], but (1, 2) -#1065 - Add OracleFactory.sysContext(String, String) to support - Oracle's SYS_CONTEXT function -#1069 - Add support for INSERT INTO table(field1, field2, ...) - SELECT syntax - as opposed to the existing INSERT INTO - table SELECT -#1072 - Add support for LIKE .. ESCAPE .. syntax -#1074 - Add Field.notBetween(T, T) for convenience -#1080 - Add support for JDBC's Statement.setFetchSize() in - ResultQuery.fetchLazy() -#1082 - Add some more DEBUG logging in AbstractResultQuery - -API changes (backwards-compatible) ----------------------------------- -#1059 - Change SelectFromStep.from(Collection>) to - from(Collection>) - -API changes (backwards-incompatible) ------------------------------------- -#1087 - Change the NTILE function to return Field - instead of Field - -Bug fixes ---------- -#1071 - Make Sequence Serializable -#1081 - Derby error in NULL handling when simulating unnested - arrays that contain NULL values -#1084 - Bind index mismatch in val(null).equal(null) and in - val(null).notEqual(null) -#1091 - Add missing @Support annotations on Table.crossJoin() - methods - -Test cases ----------- -#1026 - Add integration tests for NTILE window function and - document compatibility -#1073 - Add integration tests for NOT IN queries holding NULL - arguments - -Version 2.0.2 - January 8, 2012 -================================================================= - -This is a maintenance release for jOOQ 2.0. The main improvements -include - -- The whole jOOQ API is now annotated with a new org.jooq.Support - annotation to help you assess whether a certain SQL clause is - available in your database or not. This is particularly useful - when your application should support several databases at once - (e.g. MySQL, Postgres, Oracle) -- The Oracle PIVOT clause is now formally supported for advanced - statistical queries in Oracle. This clause will be simulated in - other dialects in the future. -- The DATE data type can be mapped to TIMESTAMP. This important - when you query a legacy Oracle database, where DATE columns - can also contain time information -- Several convenience methods have been added for more fluent - syntax, when using plain SQL result queries, subqueries as - tables, or when unnesting arrays in ANY() and ALL() quantifiers - -Further type mapping support is still experimental. An official -cooperation with MinuteProject for source code generation is -being analysed. With MinuteProject, many source code generation -issues could be addressed centrally, as MinuteProject specialises -in source code generation: - -http://minuteproject.wikispaces.com/ - -Features and improvements -------------------------- -#595 - Add support for Oracle's PIVOT clause -#869 - Add support for using ANY, ALL with arrays, not just with - subselects -#1007 - Formally document the API methods to indicate whether - something is supported by any given SQL dialect -#1011 - Add code generation configuration parameter to avoid - generating @Generated annotation -#1019 - Render LIMIT x OFFSET y also for MySQL, instead of - LIMIT y, x -#1022 - Add missing Sybase ASE implementation for Factory.use() -#1024 - Add Factory.resultQuery(String, Object...) to allow for - arbitrary execution modes of plain SQL queries (lazy, - later, into, array, etc) -#1025 - Add missing SQLite implementation for Factory.deg() and - Factory.rad() -#1033 - Generate table comments into generated Tables.java as - Javadoc -#1040 - Add Object[][] Result.intoArray() and - Object[] Record.intoArray() for convenience. Let - E Record.into(Class) also support array types. -#1041 - Add Table Factory.table(Select) convenience - method for more fluency -#1042 - Add support for DISTINCT keyword in SUM, AVG, MIN, MAX - aggregate functions -#1046 - Generate Ingres table and column comments in generated - source code (only Ingres 10) - -API changes (backwards-compatible) ----------------------------------- -#1050 - Deprecate usage of SOME quantifier in predicates, such as - equalSome() - -API changes (backwards-incompatible) ------------------------------------- -#1036 - Fixed API typo in - WindowsRowsStep.rowsBetweenUnboundedFollwing() -#1037 - The fluent API allows for JOIN clauses without FROM - clause - -Bug fixes ---------- -#1010 - The MERGE INTO .. WHEN NOT MATCHED THEN INSERT .. syntax - may cause type-safety issues in some databases. VALUES - should be converted before binding -#1014 - FindBugs: Latent risk of infinite recursion due to typo - in QueryPartList.retainAll(); -#1015 - FindBugs: 7 occurrences of "Bad attempt to compute - absolute value of signed 32-bit hashcode". In extreme - cases, this could lead to SQL syntax errors -#1016 - The Oracle CONNECT BY cond1 AND cond2 syntax erroneously - creates a WHERE cond2 CONNECT BY cond1 statement -#1028 - Syntax errors when using untyped param() in HSQLDB (and - other strongly typed dialects) -#1029 - Postgres can't bind NULL values in cases, where bind type - is Object.class and bind value was created with - Factory.param() -#1030 - UnsupportedOperationException when calling - Query.bind(int, Object) on a query containing plain SQL - fields -#1031 - Incorrect debug logging when plain SQL QueryParts like - field("?") bind null values -#1032 - Incorrect debug logging when plain SQL QueryParts contain - String literals, such as 'Hello? Anyobody out there?' -#1047 - Field.notEqualAny() erroneously renders <> ALL() - -Test cases ----------- -#1021 - Add explicit integration tests for - LEFT|RIGHT|FULL OUTER JOIN - -Version 2.0.1 - December 23, 2011 -================================================================= - -This is a maintenance release for jOOQ 2.0. The main improvements -include - -- Better integration for using jOOQ with Spring Data. This - includes support for named parameters, as well as allowing to - change bind values on previously constructed Query objects -- The MERGE statement has been enhanced for better integration - with Oracle. -- jOOQ is now ready to use with Scala / Groovy - -For more information about using jOOQ with Scala, see this blog -post: -http://blog.jooq.org/2011/12/11/the-ultimate-sql-dsl-jooq-in-scala/ - -There is now also experimental support for a custom type mapping. -This mapping allows to rewrite data types at code generation time -as well as to specify custom enum data types (e.g. boolean Y/N). -Not all integration tests run smoothly for custom data types, -hence, this feature is not yet fully supported. - -Features and improvements -------------------------- -#691 - Add support for Oracle CURSOR REF IN / INOUT parameters -#677 - Add type-mapping configuration, enforcing types for - columns -#947 - Add custom type mapping support (experimental) -#968 - Allow for custom enum types, configured in the code - generator (experimental) -#974 - Add Schema.getTable(String), getSequence(String), - getUDT(String) for better runtime Schema meta-navigation -#975 - Add Sequence.getName(), getSchema(), getDataType() -#980 - Add support for named parameters, to better interact with - Spring -#991 - Add Query.bind(String, Object) and bind(int, Object) to - easily modify existing bind values -#992 - Document thrown DataTypeException in Convert methods -#998 - Enhance MERGE statement for Oracle extensions: - WHEN MATCHED THEN UPDATE .. WHERE .. DELETE WHERE .. - WHEN NOT MATCHED THEN INSERT .. WHERE .. -#1000 - Add support for MySQL's INSERT INTO .. SET .. syntax in - MERGE statement's WHEN NOT MATCHED THEN INSERT clause - -API changes (backwards-compatible) ----------------------------------- -#981 - Cannot insertInto(table("my_table")), as plain SQL tables - return Table, not Table. Relax - bound on R -#988 - Change Factory.field(String) to return Field - instead of Field -#999 - Make MERGE's WHEN MATCHED .. and WHEN NOT MATCHED .. - clauses optional -#1001 - Identity.getField() should return TableField - instead of Field -#1006 - Add Factory.value(...) as a synonym for Factory.val(...) - for increased Scala / Groovy compatibility - -Bug fixes ---------- -#973 - EnumType renders name() instead of getLiteral() in - formatXXX() methods -#977 - EnumType renders name() instead of getLiteral() in - Convert.convert() method -#979 - Record.from() sets all changed flags to true. That's not - necessarily correct in the event of storing the record - back to the DB -#985 - AbstractRecord.equals() does not correctly compare - arrays. Compare them using Arrays.asList() -#986 - Postgres / DB2 / Sybase ASE foreign-key namespace is - unique-per-table. jOOQ forces all foreign keys from all - tables into the same namespace -#990 - Problems when encoding arbitrary byte[] as String(byte[]) - in inlined SQL. This can cause issues when DEBUG-level - logging is activated -#995 - Routines don't respect SchemaMapping - Github issue #8 -#1002 - TableRecord.storeUsing() doesn't update IDENTITY column - values, if the column is not part of the main unique key -#1003 - Sybase / SQL Server / MySQL / Ingres / H2 / Derby's - INSERT .. RETURNING simulation returns null if a table - has an IDENTITY column, but no primary/unique key -#1005 - The INSERT INTO .. VALUES .. syntax may cause type-safety - issues in some databases. VALUES should be converted - before binding - -Test cases ----------- -#984 - Detach IDENTITY column tests from UNIQUE KEY tests, - create a dedicated test suite instead - -Version 2.0.0 - November 25, 2011 -================================================================= -This release is a fresh start in many areas of jOOQ, adressing -issues that have been requested by users for a long time. These -release notes docment the most important changes, a detailed -upgrade guide, as well as the detailed list of improvements. - -Most important changes ----------------------- -- The API became more static. This applies to many Factory - methods, such as val(), literal(), as well as to many Field - methods that have been moved over to the Factory. For example, - when before, you wrote this using "postfix function notation": - -
    NAME.replace(" ", "_").trim()
    - - you will now write (just as in SQL): - -
    trim(replace(NAME, " ", "_"))
    - - Using static imports of Factory.*, jOOQ makes SQL look even - more like SQL. The current "postfix notation" is maintained for - backwards compatibility. -- By default, jooq-codegen will now generate a "dynamic" meta - model as opposed to the existing static one. Generated tables - covariantly override the as(String) aliasing method, leading - to a much more convenient aliasing style. When before, you - wrote: - -
    -Table parent = T.as("parent");
    -Table child  = T.as("child");
    -Condition join =
    -  parent.getField("ID").equal(child.getField("PARENT_ID"))
    -
    - - You can now write: - -
    -T parent = T.as("parent");
    -T child  = T.as("child");
    -Condition join = parent.ID.equal(child.PARENT_ID)
    -
    - - Of course, the existing notation still works - -- Exceptions are no longer checked. When previously, the DB's - SQLException was propagated to client code, there is now an - unchecked DataAccessException hierarchy, similar to that of - Spring. This will eventually give way to a standardised error - handling abstraction, in future developments. -- Window functions are now constructed from their underlying - aggregate functions just like in SQL. For example: - -
    -sum(AMOUNT)
    -sum(AMOUNT).over().partitionBy(ACCOUNT)
    -
    - - This makes for a more concise API, especially when considering - future extensions, such as Oracle's KEEP (DENSE_RANK FIRST...) - syntax. -- More type safety has been introduced regarding various places - where generic and types are involved. - This is especially true for INSERT / UPDATE / DELETE statements -- Sequences now also have a type -- Unsigned number types are now supported in those databases that - use them. Unsigned numbers are implemented in jOOU, a spin-off - open source project. For convenience, this library is - "internalised" into jOOQ, to avoid adding a dependency - -http://code.google.com/p/joou/ - -Upgrade instructions: ---------------------- -Various of the above changes are incompatible with jOOQ 1.x. In -order to upgrade, please be aware of the following pitfalls: - -- The schema needs to be re-generated. -- Much of the post-fix function notation is replaced by static - methods in the Factory. Today's org.jooq.Field API is - maintained in jOOQ 2.0, for backwards compatibility. It will - be removed, eventually, though. Expect some incompatible - changes, where window functions are involved -- Some Factory instance methods (such as val(), literal()) are - now static. They are compatible, but may cause compiler - warnings. -- The meta model is now an instance model by default. If you - prefer the static meta model, you can configure this in your - jooq-codegen configuration. -- The additional typesafety involving and types may cause - compiler warnings and errors. -- SQLException is no longer part of the API. This can cause - compiler issues, in particular when extending jOOQ -- Some utility classes have moved to org.jooq.tools - -Should these incompatibilities be too significant for your -project, you can still stay on the 1.x branch, which will be -maintained for a while. Be aware that upgrading might be more -difficult, later, though. - -Features and improvements -------------------------- -#55 - Implement improved exception handling -#117 - Improve DSL support for field and table aliasing (decrease - verbosity) -#519 - Add support for MySQL UNSIGNED numeric types -#626 - Create static function access -#661 - Add support for bitwise operators -#718 - Sequences should be mapped to appropriate type (e.g. - SMALLINT, INT, BIGINT, etc) -#734 - Add support for Oracle / SQL Server CUBE() and ROLLUP() - grouping functions -#751 - Add support for Oracle / SQL Server GROUPING SETS() - function -#799 - Add support for Oracle PL/SQL's object-oriented MEMBER - PROCEDURES and MEMBER FUNCTIONS -#804 - Add to Insert, Update, Delete -#835 - Review API typesafety for InsertSetMoreStep - set(Field, T) and similar methods -#890 - Add Factory.selectCount() convenience method -#891 - Let min() max(), etc functions return a new type - AggregateFunction. This type can then be used as an entry- - point for window functions -#892 - Add support for Oracle / SQL Server GROUPING() and - GROUPING_ID() functions to be used along with CUBE() and - ROLLUP() -#893 - Simulate ROLLUP() function for MySQL, using the WITH - ROLLUP grouping modifier -#894 - Move functions from Field to org.jooq.impl.Factory - and make them static -#895 - Add power(..., Field) -#897 - Add (experimental) Spring integration project -#898 - Replace usage of checked SQLException by an unchecked - DataAccessException, similar to that of Spring -#899 - Build jOOQ .jar files as bundles to be deployed into OSGI - environments -#900 - Purge deprecated API - Prior to 2.0 -#901 - Introduce InvalidResultException as a subtype of - DataAccessException for integrity checks in methods like - ResultQuery#fetchOne(), ResultQuery#fetchMap(), etc. -#902 - Make AggregateFunction the base type for constructing - window functions -#904 - Move SQLDialectNotSupportedException into - org.jooq.exception package -#905 - Introduce MappingException as a subtype of - DataAccessException for integrity checks in methods like - ResultQuery#fetchInto(), etc. -#907 - Add missing Field.like(Field), notLike(Field) - methods to overload the existing Field.like(T), notLike(T) -#908 - Change rpad / lpad functions to accept String instead of - char -#912 - Add R newRecord(Table, Object) as - the inverse of various into(Class) methods -#916 - Add > {Record.into(Table) | - Result.into(Table) | ResultQuery.fetchInto(Table) | - Cursor.fetchInto(Table)} -#917 - Add various Cursor.fetchOneInto() convenience methods -#918 - Add CustomTable, CustomRecord as base classes for more - convenience when used with various into(Table) methods -#919 - Allow for accessing non-public constructors of Record - subtypes -#923 - Move some utilities to org.jooq.tools -#924 - Generate a reference to every table in a new Tables.java - class for improved static access -#928 - Add DataTypeException extending DataAccessException in - case something went wrong when converting data types -#930 - Support converting date time types to java.util.Calendar. - This applies to various into(Class) methods, as well as - Result.getValue(xx, Class) -#931 - Allow for conversion between Long and date/time types, and - vice versa -#932 - Let the bound of R in TableRecord extend TableRecord, - in UpdatableRecord to extend UpdatableRecord -#933 - Add support for type Character in Record.into(Class) - methods and similar -#936 - Accept primitive types, such as int.class for type - conversion -#938 - CODEGEN: Add static/instance table field configuration -#939 - Include license.txt and readme.txt in .jar files' META-INF - directory -#953 - Make DefaultGeneratorStrategy methods non-final to allow - for overriding -#954 - Add examples for source code generation of multiple - schemata with Maven -#955 - Generate a reference to every type in a new UDTs.java - class -#957 - Add R Factory.newRecord(UDT) for constructing - attached UDTRecords -#958 - CODEGEN: Add generation-time schema mapping, allowing for - re-writing schemata in jooq-codegen -#960 - CODEGEN: Add code generation configuration parameter to - avoid using the new UByte, UShort, UInteger, ULong wrappers - for UNSIGNED number types -#961 - Use Oracle's SYS.ALL_SEQUENCES.MAX_VALUE to determine the - type of a sequence. -#969 - Add List ResultQuery.fetch(Field, - Class) convenience method - -Bug fixes ---------- -#686 - Reduce the internal API leak by preventing access to - TableFieldImpl, UDTFieldImpl, ParameterImpl -#903 - lag(Field, int, T) erroneously delegates to lead() -#906 - Add more NullPointerException safety to API -#913 - NoClassDefFoundError in JooqUtil.isJPAAvailable() -#920 - Generic type is lost in Cursor.fetchInto(RecordHandler) -#925 - SelectConditionStep should extend SelectConnectByStep, not - SelectGroupByStep -#926 - AbstractRecord.into() fails to convert java.sql.Date into - java.util.Date -#934 - Don't consider static members in reflection utilities when - used with Record.into(Class) and similar methods -#935 - Don't consider final member fields in reflection utilities - when used with Record.into(Class) and similar methods -#937 - In the event of name clash (same name for table and field) - generated code has errors -#945 - Calling UpdatableRecord.setValue() twice with the same - argument causes the changed flag to be reset to false -#948 - Always set the changed flag to true in Record.setValue() -#959 - Compilation errors in generated source code if MySQL enum - values match Java reserved words, such as 'true', 'false', - 'new', etc... -#962 - Postgres ordering of generated enum literals is unstable -#967 - Better document type conversion - -Version 1.7.0 - November 25, 2011 -================================================================= -This is a maintenance release for the 1.x branch. Some important -bug fixes are merged from version 2.0. These include: - -Bug fixes ---------- -#925 - SelectConditionStep should extend SelectConnectByStep, not - SelectGroupByStep -#926 - AbstractRecord.into() fails to convert java.sql.Date into - java.util.Date -#937 - In the event of name clash (same name for table and field) - generated code has errors -#945 - Calling UpdatableRecord.setValue() twice with the same - argument causes the changed flag to be reset to false -#948 - Always set the changed flag to true in Record.setValue() -#951 - Empty Password for jooq-codegen-maven causes NPE - -Version 1.6.9 - November 7, 2011 -================================================================= -This is a maintenance release for the 1.x branch. Developments -on this branch will stop after version 1.6.9. Only important bug -fixes are merged to this branch. Developments for release 2.0 -have started. - -The most important functionality in release 1.6.9 is the newly -added support for JDBC batch operations. You can now batch -execute several queries. - -See the official blog for more information: -http://blog.jooq.org/2011/10/25/jdbc-batch-operations-with-jooq/ - -Features and improvements -------------------------- -#621 - Add support for JDBC batch operations -#794 - Add support for ORDER BY [int value] in order to reference - a column index for sorting -#882 - Optimise Field.isTrue() and isFalse(). Take Field's data - type into consideration. -#885 - Add support for INSERT INTO .. VALUES (..) syntax, - omitting explicit field declarations -#887 - Add List Cursor.fetchInto(Class) - -Bug fixes ---------- -#748 - H2 regression in 1.3.158 regarding stored functions, which - return a ResultSet (this was fixed in H2) -#859 - Derby casting of numeric types to BOOLEAN doesn't work -#886 - Regression in date extract function when used in a - subselect -#888 - Derby casting of VARCHAR to FLOAT (and similar) doesn't - work - -Version 1.6.8 - October 22, 2011 -================================================================= -The main improvement of this release is the re-design of the -stored procedure / function API. With 12 supported RDBMS, which -all have their own idea about what is a stored procedure and what -is a stored function, it has proven to be a better design, to -unite them in one single type: org.jooq.Routine. A routine can -have a return value as well as OUT parameters. It can be embedded -in SQL and used as a field or a table. - -This means, you will need to re-generate your database schema, -when upgrading to jOOQ 1.6.8. After re-generation, you'll need to -fix your client code. These are the package changes: - -- [generated.package].procedures > [generated.package].routines -- [generated.package].functions > [generated.package].routines -- [generated.package].Procedures > [generated.package].Routines -- [generated.package].Functions > [generated.package].Routines - -Oracle generated packages are not re-located. With these -improvements, using stored procedures and functions becomes even -more reliable, especially when cursor types are involved. Read -more about the rationale behind this change: - -http://blog.jooq.org/2011/10/17/what-are-procedures-and-functions-after-all/ - -Apart from that, important improvements have been made in the -area of plain SQL tables. Also, consider a demo integration of -jOOQ with Google Cloud SQL: - -http://blog.jooq.org/2011/10/22/jooq-and-google-cloud-sql-example/ - -Features and improvements -------------------------- -#271 - Don't pre-fetch table meta data when selecting from plain - SQL tables -#489 - Add support for SELECT * (i.e. render SELECT * where - applicable) -#596 - Add support for VARIANCE() and STDDEV() OVER() window - functions -#608 - Add jOOQ version number in generated source code -#670 - Add more Javadoc to Field.xxx() functions -#692 - Add support for ResultSet type returned from HSQLDB - stored functions -#850 - Use http://www.jooq.org as URL for the @Generated - annotation -#854 - Add convenience methods Fields.isTrue(), isFalse() for - conversion of "Y", "YES", "1", "true", "on", etc into a - boolean condition -#870 - Add support for MEDIAN aggregate function -#872 - Add support for STDDEV_POP(), STDDEV_SAMP(), VAR_POP(), - VAR_SAMP() aggregate functions -#874 - Reduce the number of internal classes for dialect-specific - function aliases -#878 - Implement DataType.equals() and hashCode() - -API changes (backwards-compatible) ----------------------------------- -#851 - Change Field.{sortAsc|sortDesc}(List sortList) into - Field.{sortAsc|sortDesc}(Collection sortList) - -API changes (backwards-incompatible) ------------------------------------- -#848 - Purge deprecated API - Prior to 1.6.1 -#849 - Replace Cursor.fetchResult() by Cursor.fetch() -#852 - Review stored procedures / functions concept. Merge them - all into a single "Routine" type - -Bug fixes ---------- -#756 - Error when aliasing HSQLDB and Postgres unnested tables -#761 - Exception when TRACE logging execution with plain SQL - tables involved -#773 - Execute standalone stored functions as CallableStatement - to prevent issues with transactions -#847 - Query.getSQL() doesn't render dialect-specific SQL when - Query is constructed using the fluent API -#853 - DB2 generated convenience methods for stored functions - have unstable ordering -#857 - Derby casting of numeric types to String / VARCHAR does - not work -#858 - SQLDataType.getSQLDataType() should return itself, instead - of null -#860 - SQLite CEIL function is incorrectly simulated. CEIL(2.0) - returns 3.0 instead of 2.0 -#861 - Field.replace(String) generates bad SQL for various RDBMS. - Field.replace(String, String) works, though -#863 - Ingres integration generates illegal SQL when selecting - things like SELECT 1 WHERE 1 = 1 -#866 - Sybase ASE Field.replace(String) function incorrectly - removes the argument string -#873 - Error when selecting two times the same aggregate field -#877 - Compilation error in generated source code when a table - without a primary key has an identity column -#879 - Add Google Cloud SQL Example -#880 - Query.getSQL() does not consider SchemaMapping - -Test cases ----------- -#811 - Loader integration tests fail for SQLite -#812 - CSV Loader test leaves Postgres JDBC connection in an - inconsistent transactional state on error -#856 - Add integration tests for Field.abs() -#865 - Add integration tests for Field.ascii() -#867 - Add integration tests for Field.sum(), avg(), max(), min() -#881 - Re-design H2 stored functions to be pre-compiled, in order - to speed up integration tests - -Version 1.6.7 - September 25, 2011 -================================================================= - -This release coincides with the launch of the new website at -http://www.jooq.org. Hence, it ships with little additions to the -deliverable itself. - -Apart from new convenience methods, the main addition is a Maven -plugin for jooq-codegen contributed by Sander Plas. - -Features and improvements -------------------------- -#797 - Create Maven plugin for source code generation -#825 - Add List> Factory.fetchMany(String) to - allow for fetching several result sets from stored - procedures, such as Sybase ASE's "sp_help" -#838 - Implement MetaDataFieldProvider.toString() -#841 - Add List Result.getValues(Field, Class) -#842 - Add Query.getBindValues() method to allow for extracting - bind values in the correct order -#843 - Add Factory.fetch(ResultSet) to transform a JDBC ResultSet - into a jOOQ Result - -API changes (backwards-compatible) ----------------------------------- -#837 - Avoid final keyword on Object methods, such as .equals(), - .hashCode(), etc - -Bug fixes ---------- -#836 - Bad syntax when selecting from aliased plain SQL tables -#839 - Boolean conversion in getValueAsBoolean() should trim - String values first -#840 - Numeric conversions in getValueAsXXX() should trim String - values first -#844 - NullPointerException when selecting a column from a Result, - that does not exist - -Version 1.6.6 - September 11, 2011 -================================================================= - -Finally, support for another RDBMS has been added. Sybase's other -important product Sybase Adaptive Server Enterprise (or simply -Sybase ASE) is now officially supported by jOOQ - -Apart from this, there had been important improvements with the -recently added INSERT .. RETURNING clause, as well as some fixes -related to DECIMAL / NUMERIC data types - -Features and improvements -------------------------- -#796 - Complete missing public org.jooq.impl Javadoc -#800 - Add support for Sybase Adaptive Server Enterprise -#808 - Add support for INSERT .. RETURNING for Ingres -#809 - Add support for INSERT .. RETURNING for Sybase SQL - Anywhere using SELECT @@identity -#810 - Add support for INSERT .. RETURNING for SQLite using - last_inserted_rowid() -#813 - Add DSL support for INSERT .. RETURNING -#814 - Change TableRecord to reload its trigger-initialised main - key in Oracle and other RDBMS that don't support IDENTITY - columns -#818 - Add SQLiteFactory.rowid() -#819 - Support SQLite AUTOINCREMENT columns as IDENTITY -#820 - Add Factory.fetchOne(String) for executing plain SQL - queries that return single records -#826 - Allow for returning several records in the INSERT .. - RETURNING clause. This now works for DB2, HSQLDB, MySQL, - and Postgres -#827 - Support Sybase SQL Anywhere's TOP n START AT m clause - instead of simulating it with nested SELECT's - -API changes (previous API now deprecated) ------------------------------------------ -#817 - Deprecate Factory.lastID(Identity) - -Bug fixes ---------- -#815 - SQL Server fetching of IDENTITY value is broken -#821 - Optimise ResultQuery.fetchAny() executing fetchLazy() - internally, and only fetching one record from the cursor -#822 - Let Constant cast to more precise NUMERIC/DECIMAL types - in those RDBMS where casting is necessary -#823 - Cannot bind SQLite BigDecimal, BigInteger types - bind - them as String instead -#824 - BigInteger values cannot be bound in DB2, Derby -#828 - Document inefficient implementation for GREATEST and LEAST - in some RDBMS - -Version 1.6.5 - August 28, 2011 -================================================================= - -This release finally adds a loader for CSV data to jOOQ. You can -now load CSV data using a simple fluent API, configuring error -handling, duplicate behaviour and transaction handling, as well -as various CSV parameters. - -This release also changes the way generated keys are retrieved -after INSERT's. Instead of (potentially inconsistently) running -SELECT MAX(pk) immediately after the INSERT, Postgres' INSERT.. -RETURNING clause is used (or simulated), in a single statement. - -Features and improvements -------------------------- -#784 - Add Result.exportXML() to retrieve a DOM document similar - to that of .formatXML() -#792 - Add support for loading of CSV data into tables -#795 - Add List fetch(int, Class) and - fetch(String, Class) convenience methods -#803 - Add support for INSERT .. RETURNING or simulate it where - not available -#805 - Add T[] fetchArray(int, Class) and - fetchArray(String, Class) convenience methods -#806 - Add T fetchOne(int, Class) and - fetchOne(String, Class) convenience methods - -Bug fixes ---------- -#798 - Oracle IN (...) clause with more than 1000 arguments does - not work -#802 - Use "INSERT .. RETURNING" instead of "SELECT MAX(pk)" - to retrieve the primary key of a new record - -Version 1.6.4 - August 07, 2011 -================================================================= - -This release ships with a couple of useful concepts inspired by -other frameworks. These are: - -- selecting into custom POJO's. Results can be mapped to POJO's - by convention or using JPA @Column annotations -- selecting into custom callbacks. This is already a wide-spread - practice in Spring JdbcTemplates. -- selecting long-running queries asynchronously. This idea has - been inspired by the Avaje Ebean framework - -Apart from these changes and some bugfixes, the internal API has -been completely re-designed. The idea here is that query -rendering and variable binding are even faster (less String -objects), more extensible and more accurate. This is a pre- -requisite for many future developments with even more complex SQL -statements, such as for instance CTE's (Common Table Expressions) - -Features and improvements -------------------------- -#137 - Add support for asynchronous query execution using - FutureResult ResultQuery.fetchLater() similar to - Avaje Ebean -#198 - Add SELECT INTO functionality into POJO's using - T ResultQuery.fetchInto(Class) similar to JPA - CriteriaQuery -#728 - Add .fetchInto(RecordHandler) to ResultQuery, Result, - and Cursor to allow for callbacks similar to Spring's - JdbcTemplate/Ollin Framework -#774 - Add more TRACE logging to .fetchLazy() -#777 - CURSOR: Add function alias: UNNEST for TABLE -#781 - Add E function (Euler number) -#782 - Add T Record.getValue(..., Class) methods - for convenient type conversion -#785 - Allow for storing TableRecord with a provided Field[] - indicating the primary key -#786 - Document thread-safety facts in Factory Javadoc -#788 - Add Key.getFieldsArray() convenience method -#793 - Add support for Oracle's SYS_CONNECT_BY_PATH function - -API changes (backwards-incompatible) ------------------------------------- -#758 - Change internal QueryPart rendering and binding API to use - Configuration and Context as callback parameters. If you - use CustomField or CustomCondition, please correct your - implementations accordingly. Other parts of the API should - not be affected -#778 - Purge deprecated API, deprecation prior to jOOQ 1.5.7 -#790 - Purge deprecated generated code, deprecation prior to - jOOQ 1.5.7 - -API changes (previous API now deprecated) ------------------------------------------ -#776 - Deprecate QueryPart.getSQL(), add Query.getSQL() -#789 - Deprecate Record constructors with Configuration - parameter - -Test cases ----------- -#636 - Add integration tests for more advanced CONNECT BY - example -#772 - Add integration tests for selecting cartesian products - (several tables in FROM clause) - -Bug fixes ---------- -#730 - Sybase cannot bind null values in plain SQL -#759 - Omit the TOP 100 PERCENT clause in SQL Server ordered - top-level queries -#767 - An empty Java package is generated for PL/SQL packages - containing underscores -#771 - Some exotic literals are not properly escaped with quotes - yet, e.g. UDT identifiers, VARRAY types, etc. -#775 - Automatic re-attaching after deserialisation does not work - when used with .fetchLazy() -#787 - The UpdatableRecord's internal changed flags are not - updated after INSERTs / UPDATEs - -Version 1.6.3 - July 31, 2011 -================================================================= - -This is mainly a maintenance release with lots of bugfixes, -mostly around code generation, plain SQL tables, and data types. -Please note that generated source code may contain incompatible -changes due to #639 (see below for details)! - -Apart from that, project CURSOR is advancing and it is now -possible to unnest arrays into tables. See this article for -details about where jOOQ is heading with project CURSOR: - -http://blog.jooq.org/2011/07/24/the-power-of-ref-cursor-types/ - -Features and improvements -------------------------- -#679 - Improve H2 NVL2 support as of H2 1.3.156 -#680 - Improve H2 ROUND support as of H2 1.3.156 -#735 - Add README documentation to GitHub -#736 - Add more info regarding number of generated artefacts in - jooq-codegen logging -#750 - Add DataType.isNumeric(), .isString(), .isTemporal(), - .isBinary() -#754 - Log query as executed by JDBC PreparedStatement when - TRACE logging (without inlining variables) -#752 - CURSOR: Add support for selecting from ARRAY types -#762 - Use H2's native support of NVL, instead of COALESCE -#764 - CURSOR: Add support for selecting from ARRAY types - returned from stored functions - -API changes (backwards-incompatible) ------------------------------------- -#639 - Map DECIMAL(n, 0) and NUMBER/NUMERIC(n, 0) data types - to Byte/Short/Integer/Long/BigInteger instead of - BigDecimal in generated source code. Re-generated code - will not be compatible! - -API changes (previous API now deprecated) ------------------------------------------ -#731 - Inconsistent API with Field.lessOrEqualToXXX(). Removed - "To" from method name -#757 - Deprecate Factory.constant() methods - -Test cases ----------- -#731 - Add missing integration tests for equalAll(), equalSome() - and similar methods -#747 - Upgrade H2 to 1.3.158 - -Bug fixes ---------- -#632 - Sybase error : column @p0 not found in nested SELECT -#700 - Restore HSQLDB ARRAY support with INFORMATION_SCHEMA - change in HSQLDB 2.2.3, and some fixes in 2.2.5 -#725 - Cannot insert byte[] data with plain SQL -#733 - H2 changed JDBC type for ResultSet/CURSOR from 0 to -10, - like Oracle -#737 - Compilation errors in generated source code if table - fields contain spaces -#738 - Compilation errors in generated source code if MySQL - procedure parameter type contains two comma-separated - arguments (like DECIMAL(10,2)) -#739 - Postgres navigator methods and keys are not re-generated - in the same order -#740 - Formatting is broken on Result.format() with some special - newline characters -#743 - Make SQL Server INFORMATION_SCHEMA independent from - HSQLDB again, to prevent incompatibility issues -#744 - Ingres REAL and FLOAT4 types are generated as FLOAT/FLOAT8 - which maps to java.lang.Double, instead of java.lang.Float -#753 - Postgres error when binding array that contains null - values -#755 - NullPointerException when converting an array containing - a null value -#766 - Bad decoding of JDBC Types BIGINT (to BigInteger instead - of Long) and REAL (to BigDecimal instead of Float) when - plain SQL tables are involved - -Version 1.6.2 - July 10, 2011 -================================================================= - -This release mainly introduces three new projects. - -Project CURSOR where jOOQ finally supports various RDBMS's TABLE, -CURSOR, and REF CURSOR data types. This is especially useful when -those types are returned from stored procedures and functions. -Cursors are simply mapped to jOOQ Result types and can -thus be used like regular table results - -Project EXPORT aims at exporting data from the database in -various serialisable formats, such as XML, CSV, HTML, Text, JSON. -This project will be continued in the future, to also -deserialise from (some of) these data streams. This will allow -for easy transport of jOOQ Result types over the net. - -Project CODEGEN has finally been started. Many improvements -suggested by jOOQ users will be implemented in the next releases. -In this release, important fixes have been made to prevent -compilation errors in generated artefacts. - -Features and improvements -------------------------- -#61 - EXPORT: Add Result.formatXML() -#166 - CURSOR: Add support for ResultSet type returned from - Oracle stored procedures / functions -#411 - Allow for fetching Map (instead of Record) - and List> (instead of Result) -#549 - Add Factory.function() for plain SQL functions -#611 - Simulate RPAD and LPAD in SQL Server, Sybase -#627 - Add support for Postgres FOR UPDATE OF [table-name] clause -#628 - Add support for REPEAT (SQL Server: REPLICATE) function -#637 - Nicely format time in StopWatch logging output -#640 - Simulate Postgres FOR UPDATE OF [table-name] clause in - other dialects -#649 - CURSOR: Add Cursor.fetch(int) .fetchOne() - .fetchResult(int) .fetchResult() -#653 - Add support for MySQL encryption and compression functions -#660 - Clarify Javadoc of UpdatableRecord to explain its - behaviour when changing the main unique key -#669 - EXPORT: Add Result.formatHTML() -#672 - Add convenience method UpdatableRecord.copy() in order to - reset primary key values for a subsequent INSERT -#675 - EXPORT: Add Result.formatCSV() -#683 - Implement ResultImpl.equals() and .hashCode() -#684 - Implement AbstractStore.equals() and .hashCode() -#685 - Add Store.size() to indicate the maximum index of the - Store -#687 - EXPORT: Add result.formatJSON() -#689 - Create separate builds: jooq-core.zip and - jooq-with-dependencies.zip -#690 - CURSOR: Add support for ResultSet type returned from H2 - stored functions -#695 - CURSOR: Add support for ResultSet type returned from - Postgres stored functions -#697 - Add Factory.fetch(String) for executing plain SQL queries - that return results -#701 - Add ResultQuery.fetchArray() and .fetchOneArray to return - Object[][] and Object[] -#704 - Always add top and bottom line in Result.format() -#705 - Right-align numeric values in Result.format() -#716 - Add SUBSTRING function Field.substring(Field, Field) - taking fields as arguments -#719 - Document risk of SQL injection in plain SQL and literal - factory methods -#726 - Add LENGTH function as a synonym for CHAR_LENGTH - -API changes (backwards-compatible) ----------------------------------- -#698 - Inconsistent API with Factory.fetch(Table [,Condition]) - Let method return Result instead of List -#699 - Let Result extend List - -API changes (previous API now deprecated) ------------------------------------------ -#656 - Decrease verbosity of plain SQL methods. They will just be - called Factory.field() .condition() .table() .query() - -Test cases ----------- -#643 - Add integration test for code generation of invalid and - incomplete types in Oracle -#654 - Add integration tests for master data tables with PK types - other than NUMBER/INT -#655 - Add missing integration tests for TRIM function - -Bug fixes ---------- -#450 - Improve plain SQL integrity checks for bind variables -#610 - CODEGEN: Compilation error in generated source code for - databases with table named 'system' -#646 - An empty Java package is generated for an empty PL/SQL - package. This is unnecessary -#651 - CODEGEN: Avoid importing datatypes in generated source - code to prevent collisions -#657 - NullPointerException when creating a Factory with a null - SchemaMapping -#658 - Master data table code generation is broken for tables - with more or less than 3 columns -#662 - Add support for the missing Postgres data type "bpchar" -#663 - Add support for the missing Sybase data type "int" -#664 - Ingres INTEGER data types are not correctly generated -#665 - HSQLDB Datatype CLOB and BLOB are not supported, when - selecting from plain SQL tables -#666 - The evil bug: Ingres TRIM function only executes RTRIM -#673 - UpdatableRecord.store() doesn't work if called after - .delete() -#702 - Add support for the missing SQLite data type "NULL" -#706 - CURSOR: Ensure that Query.execute() runs in a single - transaction when Postgres refcursor is involved in the - query (this fixes a Postgres JDBC driver flaw) -#724 - NullPointerException when passing a single literal null - bind value to plain SQL methods without casting to Object -#729 - DB2, Derby, Ingres, Oracle cannot bind null values in - plain SQL - -Version 1.6.1 - June 19, 2011 -================================================================= - -In this release, the PORTABILITY project has been implemented. -Finally, the SQLDialect has been removed from most generated -artefacts (Schema, Table, Field, Sequence, etc). Also, the -constructing Factory is not referenced by its created QueryParts -anymore, unless this is really necessary (Query objects, UDT's, -ARRAY types). This leads to higher compatibility between schemata -of different databases, e.g. if users want to use an HSQLDB -development and Oracle productive database. - -Unfortunately, this means that the way stored procedures are -called had to be changed. This is an API break that could not be -avoided. The pre-1.6.1 StoredObject.execute(Connection) method -is deprecated and will be removed in the future. It has been -replaced by StoredObject.execute(Configuration) - -In addition to this project, many more window functions are now -supported, as well as the Oracle-specific CONNECT BY clause for -recursive queries. - -Features --------- -#351 - Add support for Oracle ROWID data type -#452 - PORTABILITY: Create a super-set of RDBMS data types -#453 - PORTABILITY: Don't create dialect-specific QueryParts -#455 - Add support for the Oracle CONNECT BY clause -#587 - Add optional OFFSET clause to form LIMIT .. OFFSET - constructs -#589 - Add extended FOR UDPATE [OF ...] [{WAIT n | NOWAIT | SKIP - LOCKED }] support -#591 - Add support for LEAD() OVER() and LAG() OVER() window - functions -#592 - Add support for the CUME_DIST() OVER() window function -#601 - Add Factory.literal() convenience methods -#602 - Add Factory.val() methods to decrease .constant() - verbosity -#604 - Add support for RESPECT NULLS clause in some window - functions -#605 - Add Factory.use(String) for non-generated schemata -#613 - Add PI function -#616 - Add Factory.two() literal convenience method -#630 - Add support for Oracle CONNECT BY pseudo-columns LEVEL, - CONNECT_BY_ISCYCLE, CONNECT_BY_ISLEAF - -API changes ------------ -#299 - PORTABILITY: Create a dialect-independent meta-model -#588 - Add OVER() keyword to FIRST_VALUE() and LAST_VALUE() API - -Test cases ----------- -#368 - Add integration test for use with schema mapping -#586 - Upgrade H2 to 1.3.155 -#607 - Add integration tests for CRUD / SP's / UDT's / ARRAY's - with SchemaMapping -#612 - Add integration tests for LPAD and RPAD functions -#624 - Add integration test for code generation of invalid/ - incomplete views in Oracle -#631 - PORTABILITY: Add integration tests for using Oracle- - generated schema against an HSQLDB database -#638 - Add missing integration test for DECIMAL data type - -Bugfixes --------- -#176 - Stored procedures / functions in EQUIVALENT schemata - cannot be called -#493 - Bind variable mismatch when constructing bad SQL -#594 - Confusing Javadoc in SELECT DSL API -#603 - Fix DB2 'IGNORE NULLS' clause -#619 - SUBSTRING() function is broken in DB2, Ingres, SQL Server -#623 - SQL syntax error for some MERGE queries in SQL Server and - Sybase -#633 - SchemaMapping is not applied to sequences -#634 - Sequences are not escaped in generated SQL - -Version 1.6.0 - June 05, 2011 -================================================================= - -Apart from supporting various additional standard and non- -standard JOIN constructs, there is now also full support for the -SQL standard MERGE statement and MySQL's ON DUPLICATE KEY variant -thereof. A great number of API enhancements have been added, -which improve the usability of jOOQ. The Ingres database is now -also supported. - -Features --------- -#301 - Add support for Oracle execution hints -#409 - Add support for NATURAL JOIN syntax, where RDBMS allows it -#415 - Make fluent API's underlying SelectQuery objects publicly - available -#429 - Add Ingres support -#475 - Document class-level generic types and in Javadoc -#486 - Add support for SQL MERGE clause -#494 - Allow for omitting schema name in generated SQL -#496 - Automatically update IDENTITY values in UpdatableRecord, - after storing them -#520 - Add support for JOIN ... USING syntax -#524 - Upgrade HSQLDB to 2.2 -#533 - Add ORDER BY [Map] or BY [List] functionality -#534 - Add Result.isEmpty() -#535 - Call upon ConfigurationRegistry.provideFor() before - throwing a DetachedException -#536 - Simulate CASE [value] WHEN [value] THEN [result] END - syntax in Derby -#538 - Add some logging to ConfigurationProvider -#539 - Add possibility to negate numeric values with Field.neg() -#541 - Add support for MySQL ON DUPLICATE KEY clause -#542 - Allow for Collection arguments in INSERT's DSL API -#543 - Allow for creating FUNCTION() OVER() without PARTITION BY - or ORDER BY clause -#546 - Add Factory.use(Schema) -#548 - Add new internal type FieldMap -#550 - Simulate ON DUPLICATE KEY INSERT clause in dialects other - than MySQL -#551 - Add TableMapping, similar to SchemaMapping for mapping - tables -#553 - Add Factory.plainSQLQuery -#554 - Add Factory.plainSQLField with a DataType parameter -#555 - Add UpdateXXX.set(Map) convenience methods to DSL API -#557 - Enhance INSERT DSL API to allow for adding VALUES clause - with InsertXXX.set() syntax -#570 - Add support for the RAND() function -#567 - Add support for Ingres Sequences -#572 - Add support for the ATAN2() function -#573 - Add possibility for additional select() clauses for - convenience -#575 - Add support for the FULL OUTER JOIN syntax, where RDBMS - supports it -#576 - Add support for the CROSS JOIN syntax, where RDBMS - supports it -#581 - Enhance API and allow Collection> - instead of Collection> - -API changes ------------ -#397 - Purge deprecated API - -Bugfixes --------- -#481 - Handle case where an empty record is stored -#522 - Misleading Javadoc in generated stored procedures and - function constructors -#532 - Restore Postgres INFORMATION_SCHEMA -#537 - Prevent null from being added to QueryPartList -#540 - Error when TRACE logging Limit -#544 - Aliased elements are not bound correctly when rendered - with toSQLReference() -#559 - Loosen type safety on overloaded methods to prevent - compilation errors with javac/Netbeans -#560 - HSQLDB DataType REAL is configured incorrectly -#565 - Add integration tests for current_user() function -#569 - ORA-01427 when generating foreign key relations -#571 - Field.trim() not correctly implemented for SQL Server -#583 - Accelerate integration tests: Reset schema only if - necessary - -Version 1.5.9 - May 15, 2011 -================================================================= - -This version ships with lots of new functionality. Finally, the -DSL-style API has been extended to CRUD operations (INSERT, -UPDATE, DELETE)! Also, support for the TRUNCATE TABLE statement -has been added. - -The most important new features include the support for SQL:2003 -standard window functions, which are available in most major -RDBMS. Additionally, basic function support has been widely -extended. - -Features --------- -#148 - Added support for window functions -#204 - Add support for multi-record INSERT's -#416 - Added support for retrieval of IDENTITY values -#433 - Use bind variables for LIMIT and OFFSET -#441 - Added foreign key relationship meta information to the - generated source code -#446 - Beautify ResultImpl.toString() method -#461 - Automatically cast CONCAT parameters to Field if - necessary -#463 - Added support for trigonometric functions -#471 - Added support for the sign function -#472 - Added support for GREATEST/LEAST functions -#474 - Added support for "hyperbolic" functions SINH, COSH, TANH, - and COTH -#482 - Added DSL API for INSERT statements -#483 - Added DSL API for UPDATE statements -#484 - Added DSL API for DELETE statements -#485 - Added "Registry" for client code to provide Configurations - to jOOQ Attachables -#490 - Added support for the TRUNCATE TABLE statement -#495 - Generate source code for IDENTITY columns -#501 - Added support for boolean conversion to Result, Record, - and Store -#503 - Allow for schema navigation via generated artefacts -#518 - Let stored procedures reference owner package - if applicable -#525 - Added NULLS {FIRST | LAST} clause to ORDER BY constructs -#528 - Added Factory.getDataType() convenience method -#530 - Added Factory.zero() and Factory.one() convenience methods - -API changes (jooq) ------------------- -#527 - Weakened type-safety on Field.nvl2() -#529 - Deprecated Factory.select(Object...), added .selectOne() - and .selectZero() instead - -API changes (jooq-meta) ------------------------ -#30 - Add ParameterDefinition for stored procedures, instead of - reusing ColumnDefinition -#499 - Add reference to TableDefinition in ColumnDefinition -#500 - Add AttributeDefinition for UDTDefinition, instead of - reusing ColumnDefinition - -Bug fixes ---------- -#369 - Adapt H2 relations generation to H2's correction of - information_schema.cross_references -#435 - Added integration tests for NESTED SELECTs holding LIMIT - clauses -#460 - Syntax error when using a field with a reserved name -#462 - Fixed Javadoc broken links -#473 - Don't cast when cast is unnecessary -#479 - INSERT statement should not set all fields for a table -#497 - Derby referential code generation is broken, for named - foreign keys -#498 - Oracle package content is generated in arbitrary order -#502 - Syntax error when creating an empty IN condition -#526 - Corrected Javadoc in Field.coalesce() - -Version 1.5.8 - April 29, 2011 -================================================================= - -Finally, jOOQ now supports two important new RDBMS: -SQL Server and Sybase! - -Apart from this great enhancement, there is now also full support -for the non-SQL standard LIMIT clause, even in dialects where the -LIMIT clause is not supported natively (especially Oracle, but -also DB2, SQL Server and Sybase, which have limitations). jOOQ -simulates LIMITs by rendering nested selects filtering on ROWNUM -(Oracle) or on ROW_NUMBER() (DB2, SQL Server and Sybase). - -Other interesting additions are an increasing support for native -mathematical functions. More function support will be added in -future versions. - -Features --------- -#16 - Added support for SQL Server -#21 - Uniform implementation of the LIMIT clause. Implemented - LIMIT clause simulation through analytic functions, where - LIMIT is not supported natively -#97 - Added support for Sybase -#418 - Measure time of various steps in source code generation -#420 - Added support for proprietary SQL extensions "FOR UPDATE" - and "FOR SHARE" -#431 - Added additional statistics to generation log files -#432 - Unified the various "standard" ANSI INFORMATION_SCHEMA - implementations in the jooq-meta artefact -#436 - Added support for the modulo function -#438 - Added floor and ceil functions -#439 - Added support for mathematical functions (logarithms, - exponentials, sqrt) -#447 - Enhanced Field.add() and Field.subtract() to work for date - time fields, also - - -API changes ------------ -#428 - Created new Maven artefact jooq-meta to cleanly separate - database meta-data navigation from code generation -#458 - Decreased DSL verbosity for arithmetic operations and for - ordering - -Bug fixes ---------- -#417 - Restored warning when unknown column type is encountered - in source code generation -#419 - Corrected misleading Select.fetchOne(...) Javadoc -#421 - Optimised AbstractRecord's memory consumption -#448 - Corrected some Javadoc @see links -#449 - Changed Field.concatenate() to accept Field parameters - to avoid generic varargs warnings - -Version 1.5.7 - April 17, 2011 -================================================================= - -This is the first release built with support of Maven thanks to -the help of some jOOQ users! - -The main new features in this release are the improved support -for serialisation/deserialisation of jOOQ objects through use of -the newly introduced "Attachable" interface. - -If using log4j or the newly supported slf4j logging framework -in debug/trace mode, there is the possibility to log query -building/execution time statistics. - -Apart from these new features, fixes were mainly done in the -fields of type casting, HSQLDB 2.1 upgrade support, stored -procedures with OUT, IN/OUT parameters. Please upgrade, if you -are using any of those features. - -If you extend jOOQ as a base implementation for source code -generation, be aware of the fact, that the jOOQ-codegen is -currently undergoing major changes. Expect the code generation -API to stabilise again in one of the next releases. - -Features --------- -#104 - Added maven dependency -#248 - Integrate UDT types with ARRAYs -#295 - Allow for attaching/detaching UpdatableRecords to/from - Configurations -#359 - Added statistics measurement to Query execution for debug - log level -#362 - Added deprecation configuration flag -#364 - Document unknown type in generated source code -#373 - Improve exception handling in code generation -#378 - Added support for Oracle stored functions with OUT - parameters -#382 - Added Factory.attach() methods to re-attach deserialised - Attachables -#394 - Add logging support for SLF4J -#398 - Allow to provide a DataType in Factory.constant() -#399 - Provide access to TypeUtils.convert() methods via DataType -#404 - Added trace logging for measuring the speed of various - query execution steps - -API changes ------------ -#358 - Enhanced DSL API to allow for HAVING clauses without - GROUP BY clauses -#367 - Make Store, Result, QueryPart "Attachable" -#374 - Introduce strategy pattern to code generation for future - support for advanced naming schemes -#375 - Decouple Database from Generator -#381 - Made DataType Serializable -#384 - Deprecated singleton QueryParts -#388 - Unify "internal" API using an Adapter pattern - -Bug fixes ---------- -#187 - Protect generated Record navigation methods against name - clashes -#266 - Added more thorough integration tests for dialect-specific - casting (including some fixes related to varchar types) -#360 - Added more integration tests for the DISTINCT clause -#361 - Add more checks in testInsertUpdateDelete() -#366 - Warn only once per ColumnDefinition, if a data type is - unknown -#377 - NullPointerException when generating invalid stored - function -#380 - Added integration tests to check for proper - serialisability -#386 - Fixed incompatibilities with HSQLDB 2.1.0 -#387 - Fixed unnecessary imports in some Oracle generated - Records -#389 - Fixed javac compiler warning in AbstractStoredObject -#391 - Cannot properly call stored procedures when IN/OUT - parameter is bound to NULL -#392 - Procedures with several OUT parameters may not register - OUT parameters correctly -#410 - Passing null VARRAY values to Oracle stored procedures - causes issues -#412 - limit(int) sets default offset incorrectly in some - dialects - -Version 1.5.6 - March 31, 2011 -================================================================= - -This release consists mainly of code generation bug fixes and -minor API improvements and enhancements. - -The most important improvement is ticket #90, by which lazy -fetching and iteration over data is now supported. jOOQ lets you -keep a reference to a Cursor that has an open JDBC ResultSet, to -fetch data from on-the-fly. - -A few major code generation bugs were reported where the -generated code may cause ambiguity due to an inconsistent API. -This means that you will have to re-generate your schema after -upgrading to version 1.5.6. Some of your code may not compile -anymore, after this upgrade. - -Features --------- -#90 - Added possibility for lazy fetching of data -#208 - Added convenience methods for direct invocation of - sequences' currval() and nextval() attributes -#212 - Created one factory per dialect for better separation of - dialect-specific support -#213 - Generate a factory for each schema -#251 - Opened up base implementations for Field and Condition - to allow for custom implementations by client code -#274 - Integrate H2 ARRAY types with stored procedures -#292 - Documented usage of log4j and java.util.logging -#306 - Added support for the NULLIF function -#319 - Added Field.between(Field, Field) method -#320 - Added trace logging for variable binding and SQL - generation methods -#323 - Added Field.in(Field...) method -#325 - Include release version number in delivered .jar files -#328 - Improved configuration setup documentation page -#333 - Let Result implement Serializable -#334 - Added fetchMap() convenience methods -#335 - Added more functions and aggregate functions examples to - documentation -#338 - Visually improve code generation logging -#339 - Removed skipping of unreferenced UDT's, ENUM's and ARRAY's -#342 - Improved generated referential code by using fetch() and - fetchOne() API -#356 - Let UpdatableRecord.store() and delete() return an int - to indicate whether the record was actually modified - -API changes ------------ -#233 - Allow for joining TableLike instead of Table -#337 - Added generic type > to - InsertSelectQuery -#341 - Fixed API flaw where SelectOnConditionStep.and() methods - and similar ones returned SelectConditionStep, instead of - SelectOnConditionStep - -Bugfixes --------- -#69 - Corrected referential code generation for foreign keys - that reference non-primary unique keys -#85 - Corrected referential code generation for multi-field - foreign keys -#121 - Covered more Factory.executeXXX() methods with integration - tests -#318 - Fixed NullPointerException when executing SELECT * from - aliased tables -#321 - BetweenCondition does not bind left hand side Field - correctly -#322 - InCondition does not bind left hand side Field correctly -#326 - Avoid method overloading where binding to Object - may lead to compile-time ambiguities (with javac) -#343 - Add more foreign key navigation method integration tests -#347 - Add explicit integration tests for schema artefacts - excluded from code generation -#350 - Disambiguate navigation methods if several foreign keys - reference the same entity -#352 - Disambiguate navigation methods if a table ending on S - references itself -#353 - Added integration test for compilation of generated - artefacts with javac (as opposed to the Eclipse compiler) -#355 - Error when storing an UpdatableRecord that has no changed - values - -Version 1.5.5.2 - March 15, 2011 -================================================================= - -A critical bug was reported from the 1.5 release stream where -stored functions did not render their parameters in correct order - -Features --------- -#302 - Map Oracle's NUMBER data type to java.lang.Number in - stored procedures, stored functions - -Bugfixes --------- -#317 - StoredFunctionImpl.asField() renders parameters in wrong - order - -Version 1.5.5.1 - March 13, 2011 -================================================================= - -In version 1.5.5, there was a fatal bug breaking Derby source -code generation. Only the Derby dialect is affected. Please -update immediately, if you are using jOOQ's Derby integration - -Bugfixes --------- -#315 - Generated master data records are not sorted by PK -#316 - Derby code generation fatally broken - -Version 1.5.5 - March 12, 2011 -================================================================= - -This version is released early as there are some important -bugfixes. Additional improvemetns include: - -- Improved DSL related to conditions in HAVING and JOIN clauses -- Support for Oracle-style functions, such as NVL, NVL2, COALESCE - DECODE, etc - -Features --------- -#304 - Add support for Oracle NVL function -#305 - Add support for COALESCE function -#308 - Add support for Oracle NVL2 function -#311 - Add support for Oracle DECODE function - -API changes ------------ -#223 - Enhance DSL to accept and(), or() and similar methods in - JOIN steps -#224 - Enhance DSL to accept and(), or() and similar methods in - HAVING steps - -Bugfixes --------- -#297 - Fixed Factory.concatenate() function -#298 - Added integration tests for nested selects in HAVING - clause -#300 - Added integration tests for nested selects in JOIN clause -#303 - Javadoc correction -#307 - Accelerated integration tests -#309 - Fixed JDBC variable binding issue related to Conditions - where the lhs is a function (e.g. stored function) and the - rhs is a constant -#310 - Fixed issue where fetchOne() methods throw - NullPointerException if no result record is available -#312 - Fixed issue where Field.equal(...) methods rendered - unexpected SQL when rhs null is cast to a type -#313 - Fixed Derby cast type for VARCHAR -#304 - Let the DerbyDataType default for java.lang.String be - VARCHAR, not LONG VARCHAR - -Version 1.5.4 - March 04, 2011 -================================================================= - -Feature #243 required a minor API change in the base classes of -generated source code. This means you have to re-generate all -your jOOQ artifacts in order to migrate to 1.5.4. The artifacts -themselves should be regenerated in a compatible way, such that -your client code should not be affected. If this is not the case, -please report a ticket here: - - https://github.com/jOOQ/jOOQ/issues - -Apart from the Derby RDMBS and some new data type support, there -have been many new convenience methods added all over the API. -For instance, if type-safety is not really a requirement, there -are lots of possibilities to use plain SQL directly in the DSL. -In that case, data can be accessed from Record, Results, not only -through Field, but also through field names or indexes. - -Check out the updated documentation (soon) here: - - http://www.jooq.org - -- Support for the Derby RDBMS -- Support for casting. This allows for even greater flexibility - in cases where jOOQ cannot 100% ensure type-safety -- Support for ARRAY types. Oracle, Postgres, HSQLDB and H2 ARRAY - types are now supported natively as regular bindings in - jOOQ's Field -- Support for dialect-specific data types. CHAR, VARCHAR, CLOB - are no longer treated equally as java.lang.String. Their - type heritage is also generated -- More sequence support -- Lots and lots of bug fixes - -Features --------- -#95 - Support for the Derby RDMBS -#163 - Add support for JDBC type ARRAY (with Postgres) -#209 - Add support for DB2 sequences -#210 - Add support for H2 sequences -#211 - Add support for HSQLDB sequences -#215 - Support for SQL casting using as cast type -#246 - Support for SQL casting using dialect-specific data types -#254 - Add HSQLDB support for ARRAY types -#256 - Add Oracle support for VARRAY types -#257 - Integrate ARRAY types with stored procedures -#261 - Add a global type mapping to the generated Schema object -#267 - Add DataTypeDefinition for further abstraction of data - types in code generation -#269 - Add H2 support for ARRAY types -#290 - If log4j is not on the classpath, use java.util.logging - instead, as fallback - -API Changes ------------ -#156 - Allow for results to be accessed by index, not by field -#218 - Corrected bad method signature: - Record.getValueAsLong(Field, Integer) -#219 - Extended Result and Select API's to be more similar to - that of Record -#232 - Add more convenience plain SQL support to the API -#235 - Add convenience methods to Record, Result and Select for - access of data via field name -#243 - Refactor DataType implementations in order to allow for - the use of generics -#259 - Add field type to database meta data (ColumnDefinition) -#260 - Add field type to database meta data (Field) -#262 - Add default behaviour for Record.getValue(Field) -#276 - Add Javadoc as a ZIP file to the jOOQ distribution - -Bugfixes --------- -#125 - Add more plain SQL integration tests -#191 - Add more integration tests for nested unions -#205 - Implemented workaround for handling Postgres stored - functions with UDT OUT parameters -#214 - Fixed NPE when generating a stored function with an - unknown parameter type -#216 - Fixed some cases where binding of BigInteger is not done - correctly -#220 - Syntax error when using select statement in a CASE clause -#221 - Corrected integration tests for combined update and - select statements -#222 - Added integration test for INSERT statements having - nested SELECT statements for their fields -#225 - Correctly cast array types in Postgres -#230 - Potential misuse of Blob and Clob in H2's JDBC types -#239 - Factory.fetchAny() is not implemented for SQLite -#244 - Fixed peculiar MySQL casting support where cast types do - not match any data types -#245 - Fixed NPE when reading null dates in SQLite -#249 - Added ARRAY type integration tests -#255 - Stored procedure bind variables get mixed up when any - argument is null -#263 - Correctly handle Postgres function overloading -#264 - Ambiguous funciton calls when calling overloaded functions - with null parameter -#281 - Handle compilation errors when generating stored - procedures with > 254 parameters -#283 - Fixed compilation errors in generated source code for - Oracle's UDT table type -#284 - Fixed compilation errors in generated source code for - Oracle procedures in packages, when they have no - parameters -#285 - Fixed compilation errors in generated source code for - Oracle tables with the same name in different schemata -#286 - Fixed name collisions in generated objects with the - java.lang.* package -#288 - Prevent the creation of UNION queries with bad syntax - in MySQL -#289 - Correctly alias fields within UNION queries for some - dialects, which then only require the "AS" keyword -#291 - Cannot create an aliased field called "year" in Postgres - -Version 1.5.3 - January 13, 2011 -================================================================= - -- Lots of stored procedure support was implemented -- Support for sequences was added -- The final decision to postpone support for DB2 UDT's was made -- Some code generation bugfixes - -Features --------- -#36 - Added stored procedure / stored function support for HSQLDB -#140 - Added support for Oracle sequences -#147 - Added support for H2 stored functions -#162 - Correctly integrate UDTs with stored procedures -#170 - Added support for Postgres stored functions -#186 - Added support for more Oracle PL/SQL simple data types -#193 - Simulate support for H2 "stored procedures" -#195 - Simulate support for Postgres "stored procedures" -#206 - Added support for Postgres sequences - -API changes ------------ -#180 - Improved DSL for constant values -#181 - Allow for referencing Field in function argument list -#189 - Renamed convenience methods in org.jooq.Record -#207 - Add fetchOne(Field) method to org.jooq.Select API - -Bugfixes --------- -#182 - Protected generated Record classes against clashes with inherited methods -#183 - Fixed NullPointerException, when generating master data tables with - NULL fields -#184 - Fixed IllegalArgumentException, when a data type is present in the - schema, but unavailable in code generation logic -#185 - Code generation should not fail when single elements cannot be generated -#188 - Improved integration tests for stored procedures / functions / packages -#196 - Increase RDMBS version compatibility by avoiding "SELECT *" in code - generation logic -#199 - Added integration tests for stored procedures in RDBMS that do not - support OUT parameters -#201 - Fixed issue in DB2 where stored procedures without parameters were not - generated. -#202 - Added integration tests for stored procedures / functions without - parameters - -Version 1.5.2 - December 27, 2010 -================================================================= - -- Improved support for stored procedures, also in packages -- A minor API change was inevitable to implement #173. The API change only - concerns the INTERNAL API. Deprecation marks are added and deprecated items - will be removed in 1.6.0 -- Experimental SQLite database support -- Some important bug fixes - -Features --------- -#25 - Added support for Oracle packages -#114 - Added support for Oracle UDTs -#145 - Added support for the SQLite database -#150 - Generate static convenience methods for stored procedures / functions -#151 - Generate static convenience methods for stored function fields -#152 - Generate meaningful serialVersionUID in generated classes -#173 - Added support for EQUIVALENT schemata - -API changes ------------ -#159 - Added convenience method List getValues(Field) to Result -#165 - Added convenience methods for creating EXISTS clauses -#169 - Improved DSL for WHERE clauses - -Bugfixes --------- -#68 - Prevent issues originating from overloaded stored procedure names, - generating identical Java class names -#153 - Fixed issue with generated code for DB2 stored functions -#154 - Fixed issue with generated code for DB2 stored functions -#155 - Fixed issues with database NULL not being mapped correctly to Java NULL - when selecting values that have a primitive type (int, long, etc) -#158 - Potential ClassCastException when using Field -#171 - Corrected issue related to selection of default schema in DB2 -#177 - Fixed issue related to generated code for tables or UDTs without columns - - -Version 1.5.1 - December 13, 2010 -================================================================= - -- H2 database support thanks to Espen Stromsnes -- Improved stored procedure support - -Features --------- -#96 - Added H2 database support -#101 - Added stored procedure / stored function support for Oracle -#138 - Added stored procedure support for DB2 -#146 - Added support for DB2 functions - -API changes ------------ -#143 - Added convenience methods to Record - -Bugfixes --------- -#84 - Implemented referential code generation for foreign keys that do not - match their primary keys' types -#141 - Encoding problem in generated master data classes - -Version 1.5.0 - November 22, 2010 -================================================================= - -- A big one. Major API changes / improvements -- Added lots of convenience methods -- UDT support -- Enum support -- DB2 support thanks to Espen Stromsnes -- "Light" dependency to log4j added. jOOQ will still run without it - -Features --------- -#1 - Create support for UDTs (so far only for PostgreSQL) -#15 - Added DB2 support -#60 - Added support for nested selects in INSERT and UPDATE - statements -#83 - Added log4j logging to code generation and runtime -#87 - Add support for arithmetic expressions -#105 - Added support for ENUM data types, where applicable - (MySQL and PostgreSQL so far) -#110 - Added execute and fetch convenience methods -#111 - Added missing "select distinct" support -#122 - Annotate generated classes with javax.annotation.Generated -#123 - Generate user enum fields from data values (master data) -#124 - Added PlainSQLTable -#127 - Added not() operator to Condition -#135 - Added convenience methods andNot() and orNot() in - Condition - -API changes ------------ -#89 - Removed support for DataSource. jOOQ is not a transaction - manager -#92 - Added SortField type to be used for sorting -#99 - Provide better access to functions (No more FunctionFactory) -#116 - Merge Manager functionality into Factory -#118 - Improve API of org.jooq.Field -#119 - Improve subquery condition API -#132 - Reduced much of the select query API -#134 - Better separation of SelectQuery and SimpleSelectQuery - -Bugfixes --------- -#109 - Error when executing select * if generated schema does not - match actual schema -#115 - Fix various "null" pseudo field issues -#126 - Error when selecting a single field from a union nested - select -#129 - Fixed performance issue in Oracle code generation for - very large databases - - -Version 1.4.4 - November 22, 2010 -================================================================= - -Unreleased version, fixes included in 1.5.0 - -Bugfixes --------- - -#133 - JoinCondition does not take comparison operator - -Version 1.4.3 - October 25, 2010 -================================================================= - -Some more bugfixes - -Bugfixes --------- - -#71 - Generated code does not compile, when foreign key and - primary key have a data type mismatch -#73 - In Oracle generated code, multi-field foreign keys may - generated bad relations code -#82 - Conversion of literals to camelcase fails if numbers are - involved - -Version 1.4.2 - October 22, 2010 -================================================================= - -Various bugfixes and minor improvements - -Features --------- -#66 - Add support for CASE or DECODE expression - -API changes ------------ -#77 - Functions should not extend FieldImpl, but a new - AbstractField -#78 - QueryPart pollutes declared method space of its - implementations. Hide it by indirection - -Bugfixes --------- -#64 - Code generation fails when foreign key references a unique - key that is not the primary key. Code generation for these - cases is omitted -#67 - When loading properties files, a leading / seems to be - mandatory. This is preventing users from correctly setting - up jOOQ the first time -#70 - Add support for Oracle datatype TIMESTAMP(6) -#72 - Name clashes in generated Tables -#75 - Constant does not bind its values. -#76 - Constant should not render strings all the time -#79 - Constants are not properly escaped -#80 - Position function does not bind any variables -#81 - Add cast function to Constants in HSQL - -Version 1.4.1 - October 18, 2010 -================================================================= - -Oracle patch release - -Features --------- -#63 - Generate referential functionality for Oracle - -Version 1.4.0 - October 17, 2010 -================================================================= - -Support for PostGreSQL was added. -Added lots of OR-mapping functionality. -There is a general API change due to various new features. - -Features --------- -#14 - Add PostGreSQL support -#40 - Resolve foreign keys. Allow for navigation between objects. -#42 - Add PlainSQLField -#45 - Add "dirty" flag to Record's values. This allows for - updating only relevant data. -#47 - Complete implementation for UPDATE, INSERT, DELETE - statements. Added some missing functionality. -#48 - Add more support for Date, Time, Timestamp fields. -#51 - Add a org.jooq.impl.Manager class that provides common - utility methods for CRUD operations - -API changes ------------ -#10 - Add second generic type . This is a - prerequisite for many OR-mapping features -#18 - Use org.jooq.Record in InsertQuery and UpdateQuery -#46 - Create UpdatableRecords as a prerequisite for JPA and true - OR-mapping. These records support store() and delete() - methods -#52 - Add default constructor in generated Records. -#53 - Add refresh functionality to UpdatableRecords. See also #46 -#54 - Add a state to the factory class -#56 - Reduce API, remove unnecessary Condition subinterfaces -#57 - Reduce API, remove unnecessary QueryPart interfaces - -Bugfixes --------- -#49 - NullPointerException when generating relations on schema - subset -#58 - Count function renders bad SQL in various dialects -#59 - Exception when selecting unaliased functions in queries - -Version 1.3.0 - August 24, 2010 -================================================================= - -Support for HSQLDB was added. -There is a major API change due to #44. - -Features --------- -#29 - Generate primary keys and foreign keys in Oracle code - generation -#34 - Add support for HSQLDB -#39 - Generate primary keys and foreign keys in HSQLDB code - generation -#41 - Add documentation to QueryFactory and Functions - -API changes ------------ -#23 - Add support for more advanced joins -#32 - Merge SelectQuery and ResultProviderQuery interfaces -#44 - Let Query methods return "this" - -Bugfixes --------- -#35 - Add unit tests for HSQLDB support -#37 - Syntax error in combined select queries! - The usage of combined queries in MySQL may still be a bit - awkward. Keep an eye out for further fixes -#43 - Join with aliased tables doesn't work - -Version 1.2.0 - August 21, 2010 -================================================================= - -The added Oracle support is now unit tested and more stable. -The Oracle NUMBER data type is mapped more precisely to Java -types. - -Features --------- -#12 - Model primary keys and foreign keys in generated code -#22 - Improve mapping of Oracle NUMBER data type -#26 - Add Plain SQL QueryParts -#27 - Add support for HAVING clause - -Bugfixes --------- -#24 - Add Unit tests for oracle database (and fixed bugs) -#31 - Pull up addOrderBy() methods from SelectQuery to - ResultProviderQuery - -Version 1.1.0 - August 17, 2010 -================================================================= - -The main new feature is the Oracle support. Wait for -Version 1.1.1 for that support to be stabilised, as there are no -Oracle unit tests running against an Oracle database yet. - -Features --------- - -#2 - Add support for inner / nested selects -#3 - Add more function support -#4 - Implement filtering functionality for code generation -#6 - Add Oracle Support -#9 - Create true POJO's (implementing org.jooq.Record) with - getters and setters -#17 - Make org.jooq.impl.Parameter independent of Field - -Bugfixes --------- - -#11 - Code generation does not remove files - -Version 1.0.1 - August 14, 2010 -================================================================= - -Features --------- - -#5 - Prevent code regeneration, if no changes were made -#7 - Implement ant task for code generation - -Version 1.0.0 - August 14, 2010 -================================================================================ -Initial Release \ No newline at end of file diff --git a/jOOQ-website/inc/RELEASENOTES-2.4.txt b/jOOQ-website/inc/RELEASENOTES-2.4.txt deleted file mode 100644 index a0725aaa73..0000000000 --- a/jOOQ-website/inc/RELEASENOTES-2.4.txt +++ /dev/null @@ -1,2816 +0,0 @@ -jOOQ Release notes -================== - -For an interactive overview, see also -http://github.com/jOOQ/jOOQ/issues - -For a formatted text version, see -http://www.jooq.org/notes.php - -For a text version, see -http://www.jooq.org/inc/RELEASENOTES.txt - -Version 2.4.2 - September 23, 2012 -================================================================= - -This is a minor patch release with some useful fixes for the -2.4 branch - -Bug fixes ---------- -#1774 - QueryPart.toString() does not load default settings from - classpath -#1792 - Factory.fieldByName() and tableByName() do not correctly - escape quotes -#1797 - SQL syntax errors when plain SQL contains comments with - question marks and SQL is executed as - StatementType.STATIC_STATEMENT -#1802 - Result.into(Table) doesn't work correctly, if the same - field name appears twice in Result -#1819 - MappingException in Record.into(Class), when POJO setters - have applicable names but non-applicable argument types -#1820 - Cannot fetch into non-public POJO classes. Their members - / getters / setters should be made accessible -#1829 - Factory.execute(String) may cause errors when plain SQL - returns results - -Version 2.4.1 - August 28, 2012 -================================================================= - -This is a minor patch release with some useful fixes for the 2.4 -branch - -Bug fixes ---------- -#1553 - Add some Javadoc to document the difference between using - a Factory with a Connection or with a DataSource -#1556 - Add javax.validation API to full deliverable -#1572 - Use Thread.currentThread().getContextClassLoader() to - load ExecuteListener classes as a workaround for - experienced class loading problems when using OSGi -#1584 - Code generation error with Oracle UDT static functions -#1650 - jOOR fix #16: Can't call Reflect.create(A, B, null) -#1660 - Factory.renderContext().castMode(CastMode.NEVER) - .render(query) doesn't work. CastMode is not applied -#1667 - Bad variable binding when NULLS FIRST, NULLS LAST is - simulated in SQL Server and other databases -#1673 - Result.formatXML() and Result.intoXML() do not render - namespaces correctly -#1693 - Cannot bind UDT values from other schemata to stored - procedures -#1730 - Compilation errors in SQLite generated code when flag - is set to true -#1751 - Result.intoResultSet() generates wrong ResultSetMetaData - if runtime schema mapping is applied -#1632 - Improve the performance of various DefaultRenderContext - methods, by locally caching Settings values locally - -Version 2.4.0 - July 8, 2012 -================================================================= - -This release's main new feature is jOOQ's added convenience in -Factory initialisation for those users who get their database -connectivity through JDBC DataSources. If supplied with a -DataSource, a jOOQ Factory will handle the Connection lifecycle -internally, closing the Connection when no longer needed. - -The H2 MERGE statement syntax is now supported and simulated in -other databases, for those users that prefer its more intuitive -syntax over the SQL standard. - -The code generator now also allows for generating interfaces and -DAOs per table. DAO generation was previous discussed on the user -group and seen in a competitor product called OneWebSQL. - -The jOOQ Console now supports breakpoints for even more effective -SQL development - -Features and improvements -------------------------- -#1141 - Add Result.intoResultSet() to wrap a Result in a JDBC - ResultSet -#1253 - Avoid JDBC escape syntax for date/time literals -#1280 - Generate DAO classes and interfaces for POJOs -#1404 - Document the lifecycle of an ExecuteListener in the - Javadoc -#1411 - Add support for Postgres "any" data type (with quotes!). - This seems to map well to java.lang.Object -#1418 - Support case-insensitive schema names in code generation -#1419 - Add some WARN-level logging when the source-code - generator doesn't generate any artefacts -#1423 - Add Field.likeIgnoreCase() to support Postgres' ILIKE - operator -#1424 - Add Factory(DataSource) and similar constructors -#1427 - Add Factory.batchStore(Collection>) for convenience -#1428 - Add DataType.convert(Object...) and - DataType.convert(Collection) for convenience -#1431 - Add org.jooq.Name Factory.name(String) to contruct - QueryParts that are escaped according to - Settings.getRenderNameStyle() -#1432 - Add Factory.fetch(String, QueryPart...) and - Factory.execute(String, QueryPart...) and similar methods - to support arbitrary QueryParts in plain SQL -#1434 - Add UniqueKeyDefinition.isPrimaryKey() for completeness -#1438 - Add Result Factory.fetchFromCSV(String) -#1440 - Add top-level pom.xml for jooq-parent artefact (GitHub - Issue #14) -#1446 - Converting arbitrary strings to Number / Date should - return null, instead of throwing an exception -#1449 - Generate some meaningful Javadoc into the generated - [schema-name]Factory classes -#1454 - Add line breaks to generated Javadoc where appropriate -#1463 - Add option to let generated Record / POJO objects - implement a common generated interface -#1470 - Support interface types in ResultQuery.fetchInto(Class), - Result.into(Class), and Record.into(Class) methods, - returning a proxy -#1471 - Upgrade internal jOOR dependency to jOOR 0.9.4 -#1473 - Add IdentityDefinition to jooq-meta -#1501 - Add support for conversion of String to - java.sql.{Date, Time, Timestamp}. GitHub issue #22 -#1504 - Document behaviour of fetch() and fetchOne() in case jOOQ - cannot fetch actual records -#1509 - Minor improvements in the generator source code. GitHub - pull request #23 -#1510 - Generate additional setters for foreign keys, accepting - records as arguments -#1521 - Expose Connection methods, such as commit(), rollback() - and similar transaction-related methods in Factory -#1523 - Support ROW_NUMBER() OVER() for the latest version of - Derby and H2, which support it -#1524 - Simulate ROW_NUMBER() OVER() in HSQLDB using ROWNUM() -#1528 - Let generated interfaces extend Serializable -#1532 - Clarify the lifecycle of Configuration.data in the - Javadoc -#1534 - Generate more meaningful Javadoc where "an uncommented - item" stands now -#1536 - Add documentation to the FOR UPDATE OF clause, indicating - that DB2 may have stricter requirements regarding - updatability of fields -#1541 - Add support for the H2 MERGE syntax - GitHub Issue #18 -#1542 - Simulate the H2 MERGE syntax in other dialects supporting - the SQL standard MERGE statement - GitHub Issue #18 -#1545 - Website and Documentation anchors should be links to - themselves, visually recognisable - -Features and improvements (jOOQ Console) ----------------------------------------- -#1398 - Allow for adding breakpoints in jOOQ Console - -API changes (backwards-compatible) ----------------------------------- -#1408 - Relax bounds of in Factory.truncate() to Record, - instead of TableRecord -#1429 - Change Convert.convert(List, XXX) to accept Collection - instead of List - -Bug fixes ---------- -#1020 - Improve Oracle's LIMIT .. OFFSET clause simulation. - GitHub Issue #16 -#1358 - Compilation errors in generated source code when Oracle - overloaded procedures collide with procedures that end - with numbers -#1437 - Error in Javadoc of FactoryOperations.fetchOne(). This - method may return null -#1441 - Performance issue with AbstractDataType.convert(Object). - Avoid conversions when they're obviously unneeded -#1448 - Handle String to Enum conversion (when Java Enums are - stored as Strings in the database) - GitHub issue #15 -#1459 - Generated Keys.java static class too large (static - initialiser can become bigger than 64kb) -#1460 - Table.getReferencesTo(Table) doesn't work correctly for - aliased tables -#1461 - Exception when rendering of {fn datetimeadd(...)} for - HSQLDB and Derby -#1462 - Document missing GeneratorStrategy features, such as - getJavaClassImplements() -#1465 - Custom generator strategy's printImplements() is called - with Mode == RECORD for tables -#1478 - Caching SQLDialect in AbstractDatabase heavily improves - code generation performance -#1483 - Inefficient cloning of default settings using JAXB - unmarshalling leads to non-negligible overall overhead. - Use serialisation instead (short of a useful XJC clone - plugin) -#1489 - Fix manual where it claims to throw SQLExceptions -#1490 - Compilation error when a SQL Server stored procedure has - a parameter named "value" -#1493 - Bad syntax for SELECT /*+hint*/ DISTINCT ... in Oracle -#1498 - jOOQ does not compile using JDK 7 / JDBC 4.1. GitHub - Issue #24 -#1499 - Generated members of Tables.java are not final -#1505 - Bad exception message when ON DUPLICATE KEY IGNORE cannot - be simulated -#1515 - Splitting of large NOT IN conditions is wrong. The parts - should be connected with AND, not with OR -#1522 - fetch().into(Table) doesn't initialise records correctly, - such that subsequent calls to store() will execute an - INSERT, rather than an UPDATE -#1525 - Generate missing Javadoc to getters for procedure OUT - parameters -#1529 - Factory.batchStore() logs all single statements to DEBUG - output. Find a more accurate log output -#1537 - Factory.batchStore() renders bad SQL for Postgres. The - RETURNING clause is not allowed in batch INSERTs - -Version 2.3.1 - May 11, 2012 -================================================================= -This is an important patch release fixing some regressions in the -code generator for the Postgres dialect. With 2.3.0, it was no -longer possible to generate schemata of which the database user -was not the owner. - -Bug fixes ---------- -#1334 - Fix inaccurate simulation of TRUNC(number, decimals) for - Derby -#1403 - Documentation bug: ctx.statement() can be replaced in - executeStart(). This is not documented -#1406 - Compilation errors in generated source code when Postgres - stored procedure parameter is called "NAME" -#1407 - Compilation errors in generated source code when Postgres - data-type is "any" (with quotes!) -#1409 - Postgres code generation broken when not connecting with - the owner of a schema - -Version 2.3.0 - May 6, 2012 -================================================================= - -This is a minor feature increment release, featuring many useful -API enhancements, some new functions, some new syntax support -elements, improved source code generation and a lot of -improvements on the jOOQ Console, thanks to Christopher Deckers. - -The updated jOOQ Console now allows for filtering incoming -statements directly on the server side, using regular expression -filters on statement text and other features. These improvements -are a part of a general strategy to introduce breakpoints and -more sophisticated debugging capability to the jOOQ Console. - -Features and improvements -------------------------- -#597 - Add support for Oracle KEEP (DENSE_RANK FIRST...) - aggregate function clause -#910 - Add ExecuteListener extension to allow for overriding - exception translator to handle vendor-specific error - codes -#1286 - Add "renderSchema" flag to Settings, to completely - disable rendering of schema names -#1293 - Generate setter methods for JAXB annotated configuration - properties -#1295 - Add support for MySQL's INSERT IGNORE clause -#1296 - Simulate the FOR UPDATE clause for SQL Server, CUBRID, - using JDBC's ResultSet.CONCUR_UPDATABLE -#1302 - Add Factory.inline() to allow for flagging inline-only - "bind values" -#1303 - Add connection-less Factory constructors for convenience, - when jOOQ is only used as a SQL query builder -#1304 - Add option to generate JSR-303 @NotNull and @Size - annotations to generated POJO's -#1307 - Let HSQLDB dialect render NVL2() as NVL2() instead of - CASE expression -#1312 - Allow for omitting , and generate all - available schemata in that case -#1315 - Let generated factories use their associated Schema as - the Settings' RenderMapping's defaultSchema -#1319 - Move jooq-spring's FactoryProxy to the core jooq project -#1322 - Add Factory.dateAdd() and timestampAdd() for convenience -#1327 - Add DataType.isLob() -#1328 - Add Field inline(char), inline(Character), - inline(CharSequence) for convenience -#1333 - Add support for the Oracle TRUNC function, for numeric - arithmetic -#1336 - Let Record.into(Class) and similar methods accept - "immutable" classes, i.e. setter-less classes that take - several constructor arguments -#1340 - Use Constructor.setAccessible(true), if no default - constructor is available on the target type of - Record.into(Class) -#1342 - Improve Javadoc on Factory.function(). Document arguments -#1349 - Add support for the CUBRID Click-Counter INCR() -#1352 - Allow for creating syntax-error and SQL-injection safe - qualifiers for org.jooq.Field and org.jooq.Table -#1361 - Add Factory.batchStore(TableRecord...), to allow for - batch UPDATE/INSERTs of many records -#1367 - Make configured ExecuteListeners default constructors - accessible -#1366 - Let org.jooq.Batch extend Serializable -#1378 - Upgrade internal jOOR dependency to jOOR 0.9.3 -#1379 - Upgrade internal jOOU dependency to jOOU 0.9.1 -#1390 - Add RenderContext.qualify() to indicate whether - QueryParts should render qualified versions of themselves - or not - -Features and improvements (jOOQ Console) ----------------------------------------- -#1242 - Upgrade jOOQ Console dependency on RSyntaxTextArea from - 1.5 to 2.0.2 -#1249 - Allow for filtering incoming statements in jOOQ Console -#1393 - Implement a communication protocol between Console server - types and Console client types to allow for more - sophisticated functionality - -API changes (backwards-compatible) ----------------------------------- -#1310 - Deprecate Factory.literal() in favor of Factory.inline(), - and Factory.field() -#1368 - Promote AbstractQuery.isExecutable() to the public API - -Bug fixes ---------- -#989 - INSERT and UPDATE statements always render non-qualified, - escaped field names. This may cause trouble when using - plain SQL fields -#1109 - Standalone TABLE or VARRAY types are not correctly - initialised before referencing tables load them -#1279 - NullPointerException when leaving empty -#1283 - The LIKE escape character needs escaping, too, in - contains(), startsWith(), endsWith() -#1306 - Add missing INTERVAL data types to HSQLDBDataType -#1308 - Oracle's DataTypeDefinition reports the length of a BLOB - / CLOB data type to be 4000 -#1313 - and match only table names, not - fully qualified names -#1323 - Add support for byte[] in Postgres UDTs -#1324 - Code generation error in Oracle 10g when generating - stored procedures -#1326 - Error when deserialising BLOBs from Oracle UDTs -#1329 - NullPointerException when passing null to - timestampDiff(Field, Field) -#1343 - Regression in insertInto(...).values(...). Cannot pass - Field to values() -#1344 - Initialise Result ArrayLists to their expected size, if - that size is known. -#1360 - jOOR issue 12: "Don't reset the accessible flag to false, - if setting it to true is required, to avoid race - conditions in concurrency contexts" -#1371 - Missing conversion when using unsafe Field types in - BATCH statements -#1376 - Oracle UDTs in REF CURSORs are not deserialised correctly - from procedure OUT parameters -#1377 - Oracle UDTs are not deserialised correctly when the same - UDT name is present in multiple schemata -#1394 - NullPointerException when omitting element in - code generation configuration - -Version 2.2.1 - April 12, 2012 -================================================================= - -This is a minor patch release, fixing some issues related to the -code generation of the new CUBRID integration as well as other, -minor issues. Upgrade if you're using CUBRID - -Bug fixes ---------- -#1287 - Remove oracle.sql dependency also from OSGi information - in pom.xml -#1288 - SQL syntax errors from sequences when using RenderMapping - with defaultSchema -#1289 - DefaultBindContext logs as Util.class -#1297 - Compilation error in CUBRID generated artefacts - referencing OBJECT types -#1298 - Avoid source code generation errors when generating code - for unknown, dialect-specific data types - -Version 2.2.0 - April 09, 2012 -================================================================= - -Finally, jOOQ has added support for another database, and a very -promising one, that is. http://www.cubrid.org is a surprisingly -original mixture of a relational and object-oriented database -where tables and classes are synonyms, so are records and -instances. The CUBRID database has a high level of compatibility -with MySQL and is aimed at MySQL users wanting more performance -for their web applications. For details, see the slides here: - -http://www.slideshare.net/cubrid/growing-in-the-wild-the-story-by-cubrid-database-developers - -jOOQ is proud to have become a CUBRID partner, looking forward -to further cooperation with CUBRID in the near future. - -Apart from that, jOOQ now fully supports SQL standard INTERVAL -data types. With JDBC and JPA lacking official support for this, -jOOQ aims for becoming the tool of choice for vendor-specific -date time arithmetic. True INTERVAL data type support is given in -HSQLDB, Ingres, Oracle, Postgres databases. Besides that, CUBRID -and MySQL support INTERVAL data type arguments in functions. In -other dialects, jOOQ simulates DATEADD(), TIMESTAMPADD(), -DATEDIFF(), TIMESTAMPDIFF(). - -For jOOQ's OLAP friends, there is now also support for the Oracle -LISTAGG function (LIST() in Sybase, XMLAGG() in DB2, STRING_AGG() -in Postgres, GROUP_CONCAT() in CUBRID, H2, HSQLDB, MySQL). -LISTAGG is an "ordered aggregate function", meaning that the -aggregation is done using a specific ordering. Keep an eye out -for more such function support in future versions. - -Features and improvements -------------------------- -#566 - Add support for INTERVAL data types -#585 - Add support for DATE, TIME and INTERVAL arithmetic -#1183 - Add support for DEFAULT values in Oracle stored procedure - parameters -#1243 - Let generated POJOs (and Records) extend base classes - and implement interfaces -#1252 - Avoid JDBC escape syntax for Oracle stored procedure - calls. Generate PL/SQL syntax, instead -#1255 - Let generated Tables contain a public default constructor - to be able to extend those classes - Github issue #12 -#1257 - Add CUBRID support -#1268 - Add Factory.field(String, QueryPart...) to generate - custom clauses -#1269 - Add YEAR(), MONTH(), DAY(), HOUR(), MINUTE(), SECOND() - function support as shortcuts for EXTRACT() -#1273 - Simulate GROUP_CONCAT() aggregate function using Oracle's - LISTAGG() function, where available -#1274 - Add support for the Oracle LISTAGG(...) WITHIN GROUP - (ORDER BY ..) [ OVER (..) ] aggregate / analytic function -#1275 - Simulate Sybase LIST() aggregate function using Oracle's - LISTAGG() function -#1276 - Simulate Oracle's LISTAGG() in DB2 using XMLAGG(), - SUBSTR() and CONCAT() -#1278 - DEBUG log both executed SQL and SQL with inlined bind - values - -API changes (backwards-compatible) ----------------------------------- -#1262 - Pull up OracleFactory.prior() and other CONNECT BY - related methods to Factory - -Bug fixes ---------- -#1241 - Wrong variable binding when comparing CHAR columns in - Derby and DB2 without explicit casting to VARCHAR -#1244 - Cannot override class name in GeneratorStrategy in - Mode.POJO -#1248 - Setting both false and - true leads to compilation errors -#1256 - Fixed code generation issue with H2 user defined - functions returning VARCHAR -#1263 - Pass fetchsizes <= 0 to the JDBC driver (for vendor- - specific MySQL compatibility) -#1270 - Most databases allow for multiple identical foreign keys. - This leads to compilation errors in generated source code - -Version 2.1.0 - March 18, 2012 -================================================================= - -With this version, jOOQ attempts to follow versioning rules -imposed by semantic versioning: http://semver.org/ -There will be 1 minor release per month, and a couple of patch -releases per year, depending on popular demand - -The main improvements for this release include - -- The possibility of providing jOOQ with a custom type mapping. - You can now define your own Converter types that are used by - jOOQ to map a database's SQLDataTypes to your custom types. - This is particularly useful for Java's enums. Read more about - custom converters in the manual: - http://www.jooq.org/manual/ADVANCED/CustomTypes/ - -- There are a lot of new runtime configuration options to control - the SQL style of SQL rendered by jOOQ. You can now specify - whether table/column names should be quoted / capitalised / - lower-cased, whether SQL keywords should be capitalised or not, - etc... - -- The handling of NULL has been improved in favour of using jOOQ - as a SQL builder library (e.g. along with Spring for execution) - NULL is no longer inlined, but bound as a variable. - -- jOOQ now supports simulation of the relational division - operation using an intuitive syntax. Read more about the - relational division here: - http://en.wikipedia.org/wiki/Relational_algebra#Division - -Features and improvements -------------------------- -#161 - Add runtime configuration to pretty print rendered SQL -#349 - Add SQLite relations support -#491 - Add runtime configuration for SQL keyword style (upper - case, lower case) -#521 - Add runtime configuration for SQL reference style (upper - case, lower case, as-is, quoted) -#1150 - Add code generation option to disable generation of - records -#1181 - Add support for SQL Server data types timestamp and - rowversion -#1188 - Load default Settings from the classpath at - /jooq-settings.xml, or from -Dorg.jooq.settings -#1193 - Specify main-class in jOOQ Console's manifest.mf and - include dependency in jar file -#1194 - Add ColumnDefinition.isNullable() -#1202 - Add support for the relational division operation: - A.divideBy(B).on(A.ID.equal(B.A_ID)).returning(A.X, ...) -#1207 - Add Factory.batch(Collection) for - convenience -#1208 - Render @javax.persistence.Column(nullable = false) - property, if available -#1209 - Render @javax.persistence.Column(length, precision, - scale) properties, if available -#1215 - Add org.jooq.Converter for custom type mapping -#1216 - Overload Record, Result.getValue() and .setValue() - methods to accept a Converter -#1217 - Add EnumConverter as a base type for custom enum - converters -#1218 - Add code generation options to generate - referencing a Java type and a Converter -#1224 - Add DataTypeDefinition.getLength() to jooq-meta's type - system -#1233 - Support custom JDBC properties for jooq-codegen -#1234 - Add Database.getTable(SchemaDefinition, String, boolean) - to fetch tables case-insensitively -#1239 - Add Factory.fetchLazy(String, Object...) - -API changes (backwards-compatible) ----------------------------------- -#1191 - Deprecate ConfigurationRegistry and replace by equivalent - ExecuteListener feature -#1219 - API Bug: Cannot use LIMIT .. OFFSET along with FOR UPDATE - -Bug fixes ---------- -#625 - Remove dependency from generated Routines to the - generator's SQLDialect -#1128 - NULL is inlined in INSERT statement instead of binding it - as a variable. This can cause issues when using jOOQ with - Spring -#1137 - Exclude MySQL column-level enum types when that column is - overridden by a -#1158 - Derby cannot handle inlined NULL literals in some - contexts -#1180 - Execute BatchMultiple (multi-query batch query), when - executing BatchSimple (single-query, multi-bind-value - query) with StatementType == STATIC_STATEMENT -#1189 - TableMapping regression for SQLite database -#1190 - Cannot store SQLite records when using - StatementType.STATIC_STATEMENT -#1199 - Table.getFields() returns an internal representation of a - table's field list. Make generated tables immutable! -#1200 - Internal API leak exposed through covariance in - AbstractType.getFields() -#1211 - Enforce method name disambiguation also when using custom - strategies in jooq-codegen -#1212 - Enforce identifier disambiguation also when using custom - strategies in jooq-codegen -#1221 - Incorrect ExecuteListener invocation for INSERT .. - RETURNING. executeStart() and executeEnd() are omitted -#1223 - Cache ExecuteListener classes for performance -#1225 - Bind NULL byte[] as java.sql.Types.BINARY instead of - BLOB in Postgres, to avoid errors -#1226 - Bind NULL UDTs with their associated type name in Oracle -#1232 - SQLException when Factory.fetch() does not return a - ResultSet -#1237 - Don't generate enum classes for columns in MySQL tables - that are excluded from code generation - -Version 2.0.5 - February 26, 2012 -================================================================= - -This release finally introduced basic runtime configuration -features for the jOOQ Factory. This configuration now includes: - -- Execute listener and SQL tracing support. jOOQ allows you to - hook your own listeners into jOOQ's query execution engine to - be notified of all sorts of events -- The existing SchemaMapping features. They are now part of the - runtime configuration -- StatementType settings. Specify whether a Factory should - execute java.sql.PreparedStatements (with bind variables) or - static java.sql.Statements with inlined variables. - -The runtime configuration is documented here: - -http://www.jooq.org/manual/JOOQ/Factory/ - -The listener and tracing support has been requested by -Christopher Deckers, a new jOOQ user who has had the courtesy to -contribute the new jOOQ Console, which is documented here: - -http://www.jooq.org/manual/ADVANCED/ExecuteListener/ - -Apart from that, another long-requested feature is now fully -implemented: The GeneratorStrategy, allowing for custom naming -strategies in generated source code. This will allow for -generating custom table / record class name prefixes / suffixes, -as well as overriding the default behaviour for rendering UPPER, -lower and CamelCase artefacts. See the manual for details: - -http://www.jooq.org/manual/META/Configuration/ - -Features and improvements -------------------------- -#93 - Add Field.equalIgnoreCase(), Field.notEqualIgnoreCase() -#408 - Add class prefixes, suffixes and other options to the - code generator -#492 - Add runtime configuration -#1107 - Let Field.contains() support the Postgres ARRAY @> ARRAY - operator -#1140 - Add ResultQuery.fetchResultSet() to return the underlying - JDBC result set -#1143 - Add Result.isNotEmpty() for convenience -#1145 - Add runtime configuration to specify whether jOOQ should - execute java.sql.PreparedStatement (with bind variables) - or a java.sql.Statement (with inlined parameters) -#1146 - Add Query.getSQL(boolean) to indicate that bind values - should be inlined (as a convenience for - Factory.renderInlined(QueryPart)) -#1148 - Add Cursor.resultSet() to expose the underlying ResultSet -#1149 - Allow for optional - "http://www.jooq.org/xsd/jooq-codegen-2.0.4.xsd" - namespace in jooq-codegen configuration -#1152 - Add & org.jooq.EnumType> - E MySQLFactory.enumType(Class, int) for enum reverse - lookups of MySQL-specific enums -#1159 - Support matching numbers with LIKE, e.g. ID LIKE '%33%' -#1160 - Implement Field.contains(), .startsWith(), .endsWith() - for numeric values, too -#1161 - Use reflection to remove compile-time dependency on - ojdbc for creating ARRAYs -#1162 - Integrate jOOR into jOOQ for simpler reflection -#1164 - Distinguish between Definition.getInputName(), - .getOutputName() -#1165 - Add constraint name to generated javadoc -#1167 - Trivial issue with org.jooq.Factory.exists Javadoc - - GitHub issue #10 -#1169 - Add Configuration.setData(), getData() to convey custom - data in a configuration's lifecycle -#1172 - Add runtime configuration to deactivate JooqLogger -#1177 - Add jOOQ-Console module to jOOQ -#1184 - Add DataType.isArray() - -API changes (backwards-compatible) ----------------------------------- -#1142 - Rename Result.exportXML() to Result.intoXML() to stay - more consistent -#1151 - Deprecate SchemaMapping in favour of new runtime - configuration - -Bug fixes ---------- -#978 - Schema.getTables() and similar methods return empty lists - when Schema is mapped with SchemaMapping -#1153 - Bad inlining of booleans in Sybase ASE / DB2 / Oracle - SQL Server / SQLite -#1154 - Bad inlining of byte[] in most dialects -#1155 - byte[] are erroneously converted to String when using - Record.intoArray() -#1156 - Bad inlining of DATE / TIME / TIMESTAMP data types in - Ingres (and other dialects, when the setting differs from - the default) -#1166 - Some generated Javadoc uses naming strategy or plain - output name, instead of qualified output name -#1168 - Oracle packages are generated as static, instead of - static final -#1175 - Factory.use() seems to render SQL with the Schema name - still present -#1179 - Oracle-generated ArrayRecords need a reference to - org.jooq.Schema to read TABLE of OBJECT from stored - procedures - -Test cases ----------- -#1147 - Add integration tests for executing SQL generated using - Factory.renderInlined() - -Version 2.0.4 - February 12, 2012 -================================================================= - -This release introduced many improvements to source code -generation. These improvements include: - -- Maven and standalone code generation now use the same XML - configuration, which is read by jOOQ-codegen using JAXB. This - allows for more complex configuration elements in the future -- jOOQ-codegen can now handle multi-schema databases and generate - code for tables referencing tables from other schemata. This - is integration tested against the SQL Server AdventureWorks - database -- jOOQ now allows to generate simple POJOs in addition to Records - and to annotate both POJOs and Records with JPA annotations - such as @Entity, @Table, @Id, @Column, @UniqueConstraint, etc. - -You can migrate your existing .properties configuration by running -> org.jooq.util.GenerationTool /your.properties migrate - -Besides that, there is a lot of ongoing work to improve the -integration of Oracle's TABLE and VARRAY types. - -Features and improvements -------------------------- -#8 - Add JPA annotations to generated POJOs / Records -#282 - Add support for multi-schema databases -#287 - Add support for Oracle TABLE types -#395 - Use XML configuration file instead of properties file -#1089 - Add Field.contains(), .startsWith(), .endsWith() as a - convenience for Field.like() (including escaping) -#1092 - Move master data table configuration from - generator.generate to generator.database namespace -#1093 - Add support for generator.strategy in Maven source code - generation -#1094 - Add support for generator.database.date-as-timestamp in - Maven source code generation -#1095 - Move generator.generate.unsigned-types to - generator.database namespace -#1096 - Add support for generator.generate.unsigned-types in - Maven source code generation -#1103 - Add support for SQL Server data type uniqueidentifier -#1106 - Add Factory.escape(Field, char) for use with LIKE -#1108 - Add support for multi-schema databases using Maven code - generation -#1115 - Add support for Oracle VARRAY/TABLE of OBJECT types -#1127 - Add support for POJO classes generation -#1129 - Allow for using Param in LIMIT .. OFFSET clauses -#1132 - Add RenderContext.castMode() to allow for avoiding casts - where this is not really needed -#1136 - Add generation option to enable/disable generating - navigation methods - -Bug fixes ---------- -#1099 - Derby generated artefacts are not sorted alphabetically -#1101 - Internal API leak exposed through covariance in - AbstractTable.joinXXX() methods -#1110 - VARRAY element type information is lost when unnesting - VARRAY's in Oracle -#1111 - VARRAY element type information is lost when unnesting - VARRAY's returned from functions in Oracle -#1114 - Syntax error when unnesting TABLE of OBJECT in Oracle. - The unnested table contains several columns but jOOQ only - unnests "COLUMN_VALUE" -#1117 - NullPointerException when passing an ArrayRecord - containing a null array to a stored function in Oracle -#1125 - Postgres needs casting for date time data types in - queries like SELECT ? FROM DUAL -#1131 - DB2: [Noauthorized routine named "LIKE" of type - "FUNCTION" having compatible arguments was found] when - using Field.like(concat(x, y)) -#1133 - Compilation errors in generated source code if the same - constraint name exists in several schemata -#1134 - NullPointerException in code generation when a foreign - key constraint references a table from another schema - that is not being generated -#1135 - Generated Javadoc references inputSchema instead of - outputSchema - -Test cases ----------- -#1009 - Add more integration tests for proper handling of - java.sql.Date, Time, Timestamp -#1090 - Run jOOQ tests against AdventureWorks SQL Server sample - database -#1105 - Add integration tests for multi-schema source code - generation and querying -#1122 - The 10k lines of integration test code are too heavy for - the compiler. Create test modules with fewer lines of - code, each. - -Version 2.0.3 - January 29, 2012 -================================================================= - -This release focuses on increased compatibility between various -SQL dialect integrations as far as ARRAY and JOIN support is -concerned: - -- ARRAY types are only available in H2, HSQLDB, Oracle, Postgres. - Nevertheless, they can be somewhat simulated in other dialects - using nested selects with UNION ALL. Increased compatibility - leads to a nicer API, where ARRAYs are used along with ALL/ANY - quantifiers, for instance. - -- JOIN syntaxes can be quite powerful in SQL. Apart from - simulating NATURAL JOIN, JOIN USING clauses, as well as a - synthetic "KEY JOIN" syntax, jOOQ now also supports nesting - JOIN expressions to create more complex table sources. See a - recent blog post on the subject here: - -http://blog.jooq.org/2012/01/15/lets-revise-the-sql-from-clause/ - -Features and improvements -------------------------- -#578 - Add KEY JOIN syntax to simulate joining using generated - foreign keys -#577 - Simulate NATURAL JOIN syntax, where this is unavailable -#582 - Simulate JOIN USING syntax, where this is unavailable -#671 - Allow for nesting JOIN clauses -#676 - Add Table.join() methods to create more flexible table - sources -#993 - Add Field.equalAny(T[]), .equalAny(Field) methods -#1048 - Simulate (array) syntax for dialects - that do not support arrays -#1051 - Add Factory.execute(String, Object...) as a convenience - method for Factory.query(...).execute() -#1055 - Simulate Factory.table(Object[]) and table(List) using - UNION ALL in dialects that do not support arrays -#1060 - Improve debug logging of H2 arrays. The syntax is not - ARRAY[1, 2], but (1, 2) -#1065 - Add OracleFactory.sysContext(String, String) to support - Oracle's SYS_CONTEXT function -#1069 - Add support for INSERT INTO table(field1, field2, ...) - SELECT syntax - as opposed to the existing INSERT INTO - table SELECT -#1072 - Add support for LIKE .. ESCAPE .. syntax -#1074 - Add Field.notBetween(T, T) for convenience -#1080 - Add support for JDBC's Statement.setFetchSize() in - ResultQuery.fetchLazy() -#1082 - Add some more DEBUG logging in AbstractResultQuery - -API changes (backwards-compatible) ----------------------------------- -#1059 - Change SelectFromStep.from(Collection>) to - from(Collection>) - -API changes (backwards-incompatible) ------------------------------------- -#1087 - Change the NTILE function to return Field - instead of Field - -Bug fixes ---------- -#1071 - Make Sequence Serializable -#1081 - Derby error in NULL handling when simulating unnested - arrays that contain NULL values -#1084 - Bind index mismatch in val(null).equal(null) and in - val(null).notEqual(null) -#1091 - Add missing @Support annotations on Table.crossJoin() - methods - -Test cases ----------- -#1026 - Add integration tests for NTILE window function and - document compatibility -#1073 - Add integration tests for NOT IN queries holding NULL - arguments - -Version 2.0.2 - January 8, 2012 -================================================================= - -This is a maintenance release for jOOQ 2.0. The main improvements -include - -- The whole jOOQ API is now annotated with a new org.jooq.Support - annotation to help you assess whether a certain SQL clause is - available in your database or not. This is particularly useful - when your application should support several databases at once - (e.g. MySQL, Postgres, Oracle) -- The Oracle PIVOT clause is now formally supported for advanced - statistical queries in Oracle. This clause will be simulated in - other dialects in the future. -- The DATE data type can be mapped to TIMESTAMP. This important - when you query a legacy Oracle database, where DATE columns - can also contain time information -- Several convenience methods have been added for more fluent - syntax, when using plain SQL result queries, subqueries as - tables, or when unnesting arrays in ANY() and ALL() quantifiers - -Further type mapping support is still experimental. An official -cooperation with MinuteProject for source code generation is -being analysed. With MinuteProject, many source code generation -issues could be addressed centrally, as MinuteProject specialises -in source code generation: - -http://minuteproject.wikispaces.com/ - -Features and improvements -------------------------- -#595 - Add support for Oracle's PIVOT clause -#869 - Add support for using ANY, ALL with arrays, not just with - subselects -#1007 - Formally document the API methods to indicate whether - something is supported by any given SQL dialect -#1011 - Add code generation configuration parameter to avoid - generating @Generated annotation -#1019 - Render LIMIT x OFFSET y also for MySQL, instead of - LIMIT y, x -#1022 - Add missing Sybase ASE implementation for Factory.use() -#1024 - Add Factory.resultQuery(String, Object...) to allow for - arbitrary execution modes of plain SQL queries (lazy, - later, into, array, etc) -#1025 - Add missing SQLite implementation for Factory.deg() and - Factory.rad() -#1033 - Generate table comments into generated Tables.java as - Javadoc -#1040 - Add Object[][] Result.intoArray() and - Object[] Record.intoArray() for convenience. Let - E Record.into(Class) also support array types. -#1041 - Add Table Factory.table(Select) convenience - method for more fluency -#1042 - Add support for DISTINCT keyword in SUM, AVG, MIN, MAX - aggregate functions -#1046 - Generate Ingres table and column comments in generated - source code (only Ingres 10) - -API changes (backwards-compatible) ----------------------------------- -#1050 - Deprecate usage of SOME quantifier in predicates, such as - equalSome() - -API changes (backwards-incompatible) ------------------------------------- -#1036 - Fixed API typo in - WindowsRowsStep.rowsBetweenUnboundedFollwing() -#1037 - The fluent API allows for JOIN clauses without FROM - clause - -Bug fixes ---------- -#1010 - The MERGE INTO .. WHEN NOT MATCHED THEN INSERT .. syntax - may cause type-safety issues in some databases. VALUES - should be converted before binding -#1014 - FindBugs: Latent risk of infinite recursion due to typo - in QueryPartList.retainAll(); -#1015 - FindBugs: 7 occurrences of "Bad attempt to compute - absolute value of signed 32-bit hashcode". In extreme - cases, this could lead to SQL syntax errors -#1016 - The Oracle CONNECT BY cond1 AND cond2 syntax erroneously - creates a WHERE cond2 CONNECT BY cond1 statement -#1028 - Syntax errors when using untyped param() in HSQLDB (and - other strongly typed dialects) -#1029 - Postgres can't bind NULL values in cases, where bind type - is Object.class and bind value was created with - Factory.param() -#1030 - UnsupportedOperationException when calling - Query.bind(int, Object) on a query containing plain SQL - fields -#1031 - Incorrect debug logging when plain SQL QueryParts like - field("?") bind null values -#1032 - Incorrect debug logging when plain SQL QueryParts contain - String literals, such as 'Hello? Anyobody out there?' -#1047 - Field.notEqualAny() erroneously renders <> ALL() - -Test cases ----------- -#1021 - Add explicit integration tests for - LEFT|RIGHT|FULL OUTER JOIN - -Version 2.0.1 - December 23, 2011 -================================================================= - -This is a maintenance release for jOOQ 2.0. The main improvements -include - -- Better integration for using jOOQ with Spring Data. This - includes support for named parameters, as well as allowing to - change bind values on previously constructed Query objects -- The MERGE statement has been enhanced for better integration - with Oracle. -- jOOQ is now ready to use with Scala / Groovy - -For more information about using jOOQ with Scala, see this blog -post: -http://blog.jooq.org/2011/12/11/the-ultimate-sql-dsl-jooq-in-scala/ - -There is now also experimental support for a custom type mapping. -This mapping allows to rewrite data types at code generation time -as well as to specify custom enum data types (e.g. boolean Y/N). -Not all integration tests run smoothly for custom data types, -hence, this feature is not yet fully supported. - -Features and improvements -------------------------- -#691 - Add support for Oracle CURSOR REF IN / INOUT parameters -#677 - Add type-mapping configuration, enforcing types for - columns -#947 - Add custom type mapping support (experimental) -#968 - Allow for custom enum types, configured in the code - generator (experimental) -#974 - Add Schema.getTable(String), getSequence(String), - getUDT(String) for better runtime Schema meta-navigation -#975 - Add Sequence.getName(), getSchema(), getDataType() -#980 - Add support for named parameters, to better interact with - Spring -#991 - Add Query.bind(String, Object) and bind(int, Object) to - easily modify existing bind values -#992 - Document thrown DataTypeException in Convert methods -#998 - Enhance MERGE statement for Oracle extensions: - WHEN MATCHED THEN UPDATE .. WHERE .. DELETE WHERE .. - WHEN NOT MATCHED THEN INSERT .. WHERE .. -#1000 - Add support for MySQL's INSERT INTO .. SET .. syntax in - MERGE statement's WHEN NOT MATCHED THEN INSERT clause - -API changes (backwards-compatible) ----------------------------------- -#981 - Cannot insertInto(table("my_table")), as plain SQL tables - return Table, not Table. Relax - bound on R -#988 - Change Factory.field(String) to return Field - instead of Field -#999 - Make MERGE's WHEN MATCHED .. and WHEN NOT MATCHED .. - clauses optional -#1001 - Identity.getField() should return TableField - instead of Field -#1006 - Add Factory.value(...) as a synonym for Factory.val(...) - for increased Scala / Groovy compatibility - -Bug fixes ---------- -#973 - EnumType renders name() instead of getLiteral() in - formatXXX() methods -#977 - EnumType renders name() instead of getLiteral() in - Convert.convert() method -#979 - Record.from() sets all changed flags to true. That's not - necessarily correct in the event of storing the record - back to the DB -#985 - AbstractRecord.equals() does not correctly compare - arrays. Compare them using Arrays.asList() -#986 - Postgres / DB2 / Sybase ASE foreign-key namespace is - unique-per-table. jOOQ forces all foreign keys from all - tables into the same namespace -#990 - Problems when encoding arbitrary byte[] as String(byte[]) - in inlined SQL. This can cause issues when DEBUG-level - logging is activated -#995 - Routines don't respect SchemaMapping - Github issue #8 -#1002 - TableRecord.storeUsing() doesn't update IDENTITY column - values, if the column is not part of the main unique key -#1003 - Sybase / SQL Server / MySQL / Ingres / H2 / Derby's - INSERT .. RETURNING simulation returns null if a table - has an IDENTITY column, but no primary/unique key -#1005 - The INSERT INTO .. VALUES .. syntax may cause type-safety - issues in some databases. VALUES should be converted - before binding - -Test cases ----------- -#984 - Detach IDENTITY column tests from UNIQUE KEY tests, - create a dedicated test suite instead - -Version 2.0.0 - November 25, 2011 -================================================================= -This release is a fresh start in many areas of jOOQ, adressing -issues that have been requested by users for a long time. These -release notes docment the most important changes, a detailed -upgrade guide, as well as the detailed list of improvements. - -Most important changes ----------------------- -- The API became more static. This applies to many Factory - methods, such as val(), literal(), as well as to many Field - methods that have been moved over to the Factory. For example, - when before, you wrote this using "postfix function notation": - -
    NAME.replace(" ", "_").trim()
    - - you will now write (just as in SQL): - -
    trim(replace(NAME, " ", "_"))
    - - Using static imports of Factory.*, jOOQ makes SQL look even - more like SQL. The current "postfix notation" is maintained for - backwards compatibility. -- By default, jooq-codegen will now generate a "dynamic" meta - model as opposed to the existing static one. Generated tables - covariantly override the as(String) aliasing method, leading - to a much more convenient aliasing style. When before, you - wrote: - -
    -Table parent = T.as("parent");
    -Table child  = T.as("child");
    -Condition join =
    -  parent.getField("ID").equal(child.getField("PARENT_ID"))
    -
    - - You can now write: - -
    -T parent = T.as("parent");
    -T child  = T.as("child");
    -Condition join = parent.ID.equal(child.PARENT_ID)
    -
    - - Of course, the existing notation still works - -- Exceptions are no longer checked. When previously, the DB's - SQLException was propagated to client code, there is now an - unchecked DataAccessException hierarchy, similar to that of - Spring. This will eventually give way to a standardised error - handling abstraction, in future developments. -- Window functions are now constructed from their underlying - aggregate functions just like in SQL. For example: - -
    -sum(AMOUNT)
    -sum(AMOUNT).over().partitionBy(ACCOUNT)
    -
    - - This makes for a more concise API, especially when considering - future extensions, such as Oracle's KEEP (DENSE_RANK FIRST...) - syntax. -- More type safety has been introduced regarding various places - where generic and types are involved. - This is especially true for INSERT / UPDATE / DELETE statements -- Sequences now also have a type -- Unsigned number types are now supported in those databases that - use them. Unsigned numbers are implemented in jOOU, a spin-off - open source project. For convenience, this library is - "internalised" into jOOQ, to avoid adding a dependency - -http://code.google.com/p/joou/ - -Upgrade instructions: ---------------------- -Various of the above changes are incompatible with jOOQ 1.x. In -order to upgrade, please be aware of the following pitfalls: - -- The schema needs to be re-generated. -- Much of the post-fix function notation is replaced by static - methods in the Factory. Today's org.jooq.Field API is - maintained in jOOQ 2.0, for backwards compatibility. It will - be removed, eventually, though. Expect some incompatible - changes, where window functions are involved -- Some Factory instance methods (such as val(), literal()) are - now static. They are compatible, but may cause compiler - warnings. -- The meta model is now an instance model by default. If you - prefer the static meta model, you can configure this in your - jooq-codegen configuration. -- The additional typesafety involving and types may cause - compiler warnings and errors. -- SQLException is no longer part of the API. This can cause - compiler issues, in particular when extending jOOQ -- Some utility classes have moved to org.jooq.tools - -Should these incompatibilities be too significant for your -project, you can still stay on the 1.x branch, which will be -maintained for a while. Be aware that upgrading might be more -difficult, later, though. - -Features and improvements -------------------------- -#55 - Implement improved exception handling -#117 - Improve DSL support for field and table aliasing (decrease - verbosity) -#519 - Add support for MySQL UNSIGNED numeric types -#626 - Create static function access -#661 - Add support for bitwise operators -#718 - Sequences should be mapped to appropriate type (e.g. - SMALLINT, INT, BIGINT, etc) -#734 - Add support for Oracle / SQL Server CUBE() and ROLLUP() - grouping functions -#751 - Add support for Oracle / SQL Server GROUPING SETS() - function -#799 - Add support for Oracle PL/SQL's object-oriented MEMBER - PROCEDURES and MEMBER FUNCTIONS -#804 - Add to Insert, Update, Delete -#835 - Review API typesafety for InsertSetMoreStep - set(Field, T) and similar methods -#890 - Add Factory.selectCount() convenience method -#891 - Let min() max(), etc functions return a new type - AggregateFunction. This type can then be used as an entry- - point for window functions -#892 - Add support for Oracle / SQL Server GROUPING() and - GROUPING_ID() functions to be used along with CUBE() and - ROLLUP() -#893 - Simulate ROLLUP() function for MySQL, using the WITH - ROLLUP grouping modifier -#894 - Move functions from Field to org.jooq.impl.Factory - and make them static -#895 - Add power(..., Field) -#897 - Add (experimental) Spring integration project -#898 - Replace usage of checked SQLException by an unchecked - DataAccessException, similar to that of Spring -#899 - Build jOOQ .jar files as bundles to be deployed into OSGI - environments -#900 - Purge deprecated API - Prior to 2.0 -#901 - Introduce InvalidResultException as a subtype of - DataAccessException for integrity checks in methods like - ResultQuery#fetchOne(), ResultQuery#fetchMap(), etc. -#902 - Make AggregateFunction the base type for constructing - window functions -#904 - Move SQLDialectNotSupportedException into - org.jooq.exception package -#905 - Introduce MappingException as a subtype of - DataAccessException for integrity checks in methods like - ResultQuery#fetchInto(), etc. -#907 - Add missing Field.like(Field), notLike(Field) - methods to overload the existing Field.like(T), notLike(T) -#908 - Change rpad / lpad functions to accept String instead of - char -#912 - Add R newRecord(Table, Object) as - the inverse of various into(Class) methods -#916 - Add > {Record.into(Table) | - Result.into(Table) | ResultQuery.fetchInto(Table) | - Cursor.fetchInto(Table)} -#917 - Add various Cursor.fetchOneInto() convenience methods -#918 - Add CustomTable, CustomRecord as base classes for more - convenience when used with various into(Table) methods -#919 - Allow for accessing non-public constructors of Record - subtypes -#923 - Move some utilities to org.jooq.tools -#924 - Generate a reference to every table in a new Tables.java - class for improved static access -#928 - Add DataTypeException extending DataAccessException in - case something went wrong when converting data types -#930 - Support converting date time types to java.util.Calendar. - This applies to various into(Class) methods, as well as - Result.getValue(xx, Class) -#931 - Allow for conversion between Long and date/time types, and - vice versa -#932 - Let the bound of R in TableRecord extend TableRecord, - in UpdatableRecord to extend UpdatableRecord -#933 - Add support for type Character in Record.into(Class) - methods and similar -#936 - Accept primitive types, such as int.class for type - conversion -#938 - CODEGEN: Add static/instance table field configuration -#939 - Include license.txt and readme.txt in .jar files' META-INF - directory -#953 - Make DefaultGeneratorStrategy methods non-final to allow - for overriding -#954 - Add examples for source code generation of multiple - schemata with Maven -#955 - Generate a reference to every type in a new UDTs.java - class -#957 - Add R Factory.newRecord(UDT) for constructing - attached UDTRecords -#958 - CODEGEN: Add generation-time schema mapping, allowing for - re-writing schemata in jooq-codegen -#960 - CODEGEN: Add code generation configuration parameter to - avoid using the new UByte, UShort, UInteger, ULong wrappers - for UNSIGNED number types -#961 - Use Oracle's SYS.ALL_SEQUENCES.MAX_VALUE to determine the - type of a sequence. -#969 - Add List ResultQuery.fetch(Field, - Class) convenience method - -Bug fixes ---------- -#686 - Reduce the internal API leak by preventing access to - TableFieldImpl, UDTFieldImpl, ParameterImpl -#903 - lag(Field, int, T) erroneously delegates to lead() -#906 - Add more NullPointerException safety to API -#913 - NoClassDefFoundError in JooqUtil.isJPAAvailable() -#920 - Generic type is lost in Cursor.fetchInto(RecordHandler) -#925 - SelectConditionStep should extend SelectConnectByStep, not - SelectGroupByStep -#926 - AbstractRecord.into() fails to convert java.sql.Date into - java.util.Date -#934 - Don't consider static members in reflection utilities when - used with Record.into(Class) and similar methods -#935 - Don't consider final member fields in reflection utilities - when used with Record.into(Class) and similar methods -#937 - In the event of name clash (same name for table and field) - generated code has errors -#945 - Calling UpdatableRecord.setValue() twice with the same - argument causes the changed flag to be reset to false -#948 - Always set the changed flag to true in Record.setValue() -#959 - Compilation errors in generated source code if MySQL enum - values match Java reserved words, such as 'true', 'false', - 'new', etc... -#962 - Postgres ordering of generated enum literals is unstable -#967 - Better document type conversion - -Version 1.7.0 - November 25, 2011 -================================================================= -This is a maintenance release for the 1.x branch. Some important -bug fixes are merged from version 2.0. These include: - -Bug fixes ---------- -#925 - SelectConditionStep should extend SelectConnectByStep, not - SelectGroupByStep -#926 - AbstractRecord.into() fails to convert java.sql.Date into - java.util.Date -#937 - In the event of name clash (same name for table and field) - generated code has errors -#945 - Calling UpdatableRecord.setValue() twice with the same - argument causes the changed flag to be reset to false -#948 - Always set the changed flag to true in Record.setValue() -#951 - Empty Password for jooq-codegen-maven causes NPE - -Version 1.6.9 - November 7, 2011 -================================================================= -This is a maintenance release for the 1.x branch. Developments -on this branch will stop after version 1.6.9. Only important bug -fixes are merged to this branch. Developments for release 2.0 -have started. - -The most important functionality in release 1.6.9 is the newly -added support for JDBC batch operations. You can now batch -execute several queries. - -See the official blog for more information: -http://blog.jooq.org/2011/10/25/jdbc-batch-operations-with-jooq/ - -Features and improvements -------------------------- -#621 - Add support for JDBC batch operations -#794 - Add support for ORDER BY [int value] in order to reference - a column index for sorting -#882 - Optimise Field.isTrue() and isFalse(). Take Field's data - type into consideration. -#885 - Add support for INSERT INTO .. VALUES (..) syntax, - omitting explicit field declarations -#887 - Add List Cursor.fetchInto(Class) - -Bug fixes ---------- -#748 - H2 regression in 1.3.158 regarding stored functions, which - return a ResultSet (this was fixed in H2) -#859 - Derby casting of numeric types to BOOLEAN doesn't work -#886 - Regression in date extract function when used in a - subselect -#888 - Derby casting of VARCHAR to FLOAT (and similar) doesn't - work - -Version 1.6.8 - October 22, 2011 -================================================================= -The main improvement of this release is the re-design of the -stored procedure / function API. With 12 supported RDBMS, which -all have their own idea about what is a stored procedure and what -is a stored function, it has proven to be a better design, to -unite them in one single type: org.jooq.Routine. A routine can -have a return value as well as OUT parameters. It can be embedded -in SQL and used as a field or a table. - -This means, you will need to re-generate your database schema, -when upgrading to jOOQ 1.6.8. After re-generation, you'll need to -fix your client code. These are the package changes: - -- [generated.package].procedures > [generated.package].routines -- [generated.package].functions > [generated.package].routines -- [generated.package].Procedures > [generated.package].Routines -- [generated.package].Functions > [generated.package].Routines - -Oracle generated packages are not re-located. With these -improvements, using stored procedures and functions becomes even -more reliable, especially when cursor types are involved. Read -more about the rationale behind this change: - -http://blog.jooq.org/2011/10/17/what-are-procedures-and-functions-after-all/ - -Apart from that, important improvements have been made in the -area of plain SQL tables. Also, consider a demo integration of -jOOQ with Google Cloud SQL: - -http://blog.jooq.org/2011/10/22/jooq-and-google-cloud-sql-example/ - -Features and improvements -------------------------- -#271 - Don't pre-fetch table meta data when selecting from plain - SQL tables -#489 - Add support for SELECT * (i.e. render SELECT * where - applicable) -#596 - Add support for VARIANCE() and STDDEV() OVER() window - functions -#608 - Add jOOQ version number in generated source code -#670 - Add more Javadoc to Field.xxx() functions -#692 - Add support for ResultSet type returned from HSQLDB - stored functions -#850 - Use http://www.jooq.org as URL for the @Generated - annotation -#854 - Add convenience methods Fields.isTrue(), isFalse() for - conversion of "Y", "YES", "1", "true", "on", etc into a - boolean condition -#870 - Add support for MEDIAN aggregate function -#872 - Add support for STDDEV_POP(), STDDEV_SAMP(), VAR_POP(), - VAR_SAMP() aggregate functions -#874 - Reduce the number of internal classes for dialect-specific - function aliases -#878 - Implement DataType.equals() and hashCode() - -API changes (backwards-compatible) ----------------------------------- -#851 - Change Field.{sortAsc|sortDesc}(List sortList) into - Field.{sortAsc|sortDesc}(Collection sortList) - -API changes (backwards-incompatible) ------------------------------------- -#848 - Purge deprecated API - Prior to 1.6.1 -#849 - Replace Cursor.fetchResult() by Cursor.fetch() -#852 - Review stored procedures / functions concept. Merge them - all into a single "Routine" type - -Bug fixes ---------- -#756 - Error when aliasing HSQLDB and Postgres unnested tables -#761 - Exception when TRACE logging execution with plain SQL - tables involved -#773 - Execute standalone stored functions as CallableStatement - to prevent issues with transactions -#847 - Query.getSQL() doesn't render dialect-specific SQL when - Query is constructed using the fluent API -#853 - DB2 generated convenience methods for stored functions - have unstable ordering -#857 - Derby casting of numeric types to String / VARCHAR does - not work -#858 - SQLDataType.getSQLDataType() should return itself, instead - of null -#860 - SQLite CEIL function is incorrectly simulated. CEIL(2.0) - returns 3.0 instead of 2.0 -#861 - Field.replace(String) generates bad SQL for various RDBMS. - Field.replace(String, String) works, though -#863 - Ingres integration generates illegal SQL when selecting - things like SELECT 1 WHERE 1 = 1 -#866 - Sybase ASE Field.replace(String) function incorrectly - removes the argument string -#873 - Error when selecting two times the same aggregate field -#877 - Compilation error in generated source code when a table - without a primary key has an identity column -#879 - Add Google Cloud SQL Example -#880 - Query.getSQL() does not consider SchemaMapping - -Test cases ----------- -#811 - Loader integration tests fail for SQLite -#812 - CSV Loader test leaves Postgres JDBC connection in an - inconsistent transactional state on error -#856 - Add integration tests for Field.abs() -#865 - Add integration tests for Field.ascii() -#867 - Add integration tests for Field.sum(), avg(), max(), min() -#881 - Re-design H2 stored functions to be pre-compiled, in order - to speed up integration tests - -Version 1.6.7 - September 25, 2011 -================================================================= - -This release coincides with the launch of the new website at -http://www.jooq.org. Hence, it ships with little additions to the -deliverable itself. - -Apart from new convenience methods, the main addition is a Maven -plugin for jooq-codegen contributed by Sander Plas. - -Features and improvements -------------------------- -#797 - Create Maven plugin for source code generation -#825 - Add List> Factory.fetchMany(String) to - allow for fetching several result sets from stored - procedures, such as Sybase ASE's "sp_help" -#838 - Implement MetaDataFieldProvider.toString() -#841 - Add List Result.getValues(Field, Class) -#842 - Add Query.getBindValues() method to allow for extracting - bind values in the correct order -#843 - Add Factory.fetch(ResultSet) to transform a JDBC ResultSet - into a jOOQ Result - -API changes (backwards-compatible) ----------------------------------- -#837 - Avoid final keyword on Object methods, such as .equals(), - .hashCode(), etc - -Bug fixes ---------- -#836 - Bad syntax when selecting from aliased plain SQL tables -#839 - Boolean conversion in getValueAsBoolean() should trim - String values first -#840 - Numeric conversions in getValueAsXXX() should trim String - values first -#844 - NullPointerException when selecting a column from a Result, - that does not exist - -Version 1.6.6 - September 11, 2011 -================================================================= - -Finally, support for another RDBMS has been added. Sybase's other -important product Sybase Adaptive Server Enterprise (or simply -Sybase ASE) is now officially supported by jOOQ - -Apart from this, there had been important improvements with the -recently added INSERT .. RETURNING clause, as well as some fixes -related to DECIMAL / NUMERIC data types - -Features and improvements -------------------------- -#796 - Complete missing public org.jooq.impl Javadoc -#800 - Add support for Sybase Adaptive Server Enterprise -#808 - Add support for INSERT .. RETURNING for Ingres -#809 - Add support for INSERT .. RETURNING for Sybase SQL - Anywhere using SELECT @@identity -#810 - Add support for INSERT .. RETURNING for SQLite using - last_inserted_rowid() -#813 - Add DSL support for INSERT .. RETURNING -#814 - Change TableRecord to reload its trigger-initialised main - key in Oracle and other RDBMS that don't support IDENTITY - columns -#818 - Add SQLiteFactory.rowid() -#819 - Support SQLite AUTOINCREMENT columns as IDENTITY -#820 - Add Factory.fetchOne(String) for executing plain SQL - queries that return single records -#826 - Allow for returning several records in the INSERT .. - RETURNING clause. This now works for DB2, HSQLDB, MySQL, - and Postgres -#827 - Support Sybase SQL Anywhere's TOP n START AT m clause - instead of simulating it with nested SELECT's - -API changes (previous API now deprecated) ------------------------------------------ -#817 - Deprecate Factory.lastID(Identity) - -Bug fixes ---------- -#815 - SQL Server fetching of IDENTITY value is broken -#821 - Optimise ResultQuery.fetchAny() executing fetchLazy() - internally, and only fetching one record from the cursor -#822 - Let Constant cast to more precise NUMERIC/DECIMAL types - in those RDBMS where casting is necessary -#823 - Cannot bind SQLite BigDecimal, BigInteger types - bind - them as String instead -#824 - BigInteger values cannot be bound in DB2, Derby -#828 - Document inefficient implementation for GREATEST and LEAST - in some RDBMS - -Version 1.6.5 - August 28, 2011 -================================================================= - -This release finally adds a loader for CSV data to jOOQ. You can -now load CSV data using a simple fluent API, configuring error -handling, duplicate behaviour and transaction handling, as well -as various CSV parameters. - -This release also changes the way generated keys are retrieved -after INSERT's. Instead of (potentially inconsistently) running -SELECT MAX(pk) immediately after the INSERT, Postgres' INSERT.. -RETURNING clause is used (or simulated), in a single statement. - -Features and improvements -------------------------- -#784 - Add Result.exportXML() to retrieve a DOM document similar - to that of .formatXML() -#792 - Add support for loading of CSV data into tables -#795 - Add List fetch(int, Class) and - fetch(String, Class) convenience methods -#803 - Add support for INSERT .. RETURNING or simulate it where - not available -#805 - Add T[] fetchArray(int, Class) and - fetchArray(String, Class) convenience methods -#806 - Add T fetchOne(int, Class) and - fetchOne(String, Class) convenience methods - -Bug fixes ---------- -#798 - Oracle IN (...) clause with more than 1000 arguments does - not work -#802 - Use "INSERT .. RETURNING" instead of "SELECT MAX(pk)" - to retrieve the primary key of a new record - -Version 1.6.4 - August 07, 2011 -================================================================= - -This release ships with a couple of useful concepts inspired by -other frameworks. These are: - -- selecting into custom POJO's. Results can be mapped to POJO's - by convention or using JPA @Column annotations -- selecting into custom callbacks. This is already a wide-spread - practice in Spring JdbcTemplates. -- selecting long-running queries asynchronously. This idea has - been inspired by the Avaje Ebean framework - -Apart from these changes and some bugfixes, the internal API has -been completely re-designed. The idea here is that query -rendering and variable binding are even faster (less String -objects), more extensible and more accurate. This is a pre- -requisite for many future developments with even more complex SQL -statements, such as for instance CTE's (Common Table Expressions) - -Features and improvements -------------------------- -#137 - Add support for asynchronous query execution using - FutureResult ResultQuery.fetchLater() similar to - Avaje Ebean -#198 - Add SELECT INTO functionality into POJO's using - T ResultQuery.fetchInto(Class) similar to JPA - CriteriaQuery -#728 - Add .fetchInto(RecordHandler) to ResultQuery, Result, - and Cursor to allow for callbacks similar to Spring's - JdbcTemplate/Ollin Framework -#774 - Add more TRACE logging to .fetchLazy() -#777 - CURSOR: Add function alias: UNNEST for TABLE -#781 - Add E function (Euler number) -#782 - Add T Record.getValue(..., Class) methods - for convenient type conversion -#785 - Allow for storing TableRecord with a provided Field[] - indicating the primary key -#786 - Document thread-safety facts in Factory Javadoc -#788 - Add Key.getFieldsArray() convenience method -#793 - Add support for Oracle's SYS_CONNECT_BY_PATH function - -API changes (backwards-incompatible) ------------------------------------- -#758 - Change internal QueryPart rendering and binding API to use - Configuration and Context as callback parameters. If you - use CustomField or CustomCondition, please correct your - implementations accordingly. Other parts of the API should - not be affected -#778 - Purge deprecated API, deprecation prior to jOOQ 1.5.7 -#790 - Purge deprecated generated code, deprecation prior to - jOOQ 1.5.7 - -API changes (previous API now deprecated) ------------------------------------------ -#776 - Deprecate QueryPart.getSQL(), add Query.getSQL() -#789 - Deprecate Record constructors with Configuration - parameter - -Test cases ----------- -#636 - Add integration tests for more advanced CONNECT BY - example -#772 - Add integration tests for selecting cartesian products - (several tables in FROM clause) - -Bug fixes ---------- -#730 - Sybase cannot bind null values in plain SQL -#759 - Omit the TOP 100 PERCENT clause in SQL Server ordered - top-level queries -#767 - An empty Java package is generated for PL/SQL packages - containing underscores -#771 - Some exotic literals are not properly escaped with quotes - yet, e.g. UDT identifiers, VARRAY types, etc. -#775 - Automatic re-attaching after deserialisation does not work - when used with .fetchLazy() -#787 - The UpdatableRecord's internal changed flags are not - updated after INSERTs / UPDATEs - -Version 1.6.3 - July 31, 2011 -================================================================= - -This is mainly a maintenance release with lots of bugfixes, -mostly around code generation, plain SQL tables, and data types. -Please note that generated source code may contain incompatible -changes due to #639 (see below for details)! - -Apart from that, project CURSOR is advancing and it is now -possible to unnest arrays into tables. See this article for -details about where jOOQ is heading with project CURSOR: - -http://blog.jooq.org/2011/07/24/the-power-of-ref-cursor-types/ - -Features and improvements -------------------------- -#679 - Improve H2 NVL2 support as of H2 1.3.156 -#680 - Improve H2 ROUND support as of H2 1.3.156 -#735 - Add README documentation to GitHub -#736 - Add more info regarding number of generated artefacts in - jooq-codegen logging -#750 - Add DataType.isNumeric(), .isString(), .isTemporal(), - .isBinary() -#754 - Log query as executed by JDBC PreparedStatement when - TRACE logging (without inlining variables) -#752 - CURSOR: Add support for selecting from ARRAY types -#762 - Use H2's native support of NVL, instead of COALESCE -#764 - CURSOR: Add support for selecting from ARRAY types - returned from stored functions - -API changes (backwards-incompatible) ------------------------------------- -#639 - Map DECIMAL(n, 0) and NUMBER/NUMERIC(n, 0) data types - to Byte/Short/Integer/Long/BigInteger instead of - BigDecimal in generated source code. Re-generated code - will not be compatible! - -API changes (previous API now deprecated) ------------------------------------------ -#731 - Inconsistent API with Field.lessOrEqualToXXX(). Removed - "To" from method name -#757 - Deprecate Factory.constant() methods - -Test cases ----------- -#731 - Add missing integration tests for equalAll(), equalSome() - and similar methods -#747 - Upgrade H2 to 1.3.158 - -Bug fixes ---------- -#632 - Sybase error : column @p0 not found in nested SELECT -#700 - Restore HSQLDB ARRAY support with INFORMATION_SCHEMA - change in HSQLDB 2.2.3, and some fixes in 2.2.5 -#725 - Cannot insert byte[] data with plain SQL -#733 - H2 changed JDBC type for ResultSet/CURSOR from 0 to -10, - like Oracle -#737 - Compilation errors in generated source code if table - fields contain spaces -#738 - Compilation errors in generated source code if MySQL - procedure parameter type contains two comma-separated - arguments (like DECIMAL(10,2)) -#739 - Postgres navigator methods and keys are not re-generated - in the same order -#740 - Formatting is broken on Result.format() with some special - newline characters -#743 - Make SQL Server INFORMATION_SCHEMA independent from - HSQLDB again, to prevent incompatibility issues -#744 - Ingres REAL and FLOAT4 types are generated as FLOAT/FLOAT8 - which maps to java.lang.Double, instead of java.lang.Float -#753 - Postgres error when binding array that contains null - values -#755 - NullPointerException when converting an array containing - a null value -#766 - Bad decoding of JDBC Types BIGINT (to BigInteger instead - of Long) and REAL (to BigDecimal instead of Float) when - plain SQL tables are involved - -Version 1.6.2 - July 10, 2011 -================================================================= - -This release mainly introduces three new projects. - -Project CURSOR where jOOQ finally supports various RDBMS's TABLE, -CURSOR, and REF CURSOR data types. This is especially useful when -those types are returned from stored procedures and functions. -Cursors are simply mapped to jOOQ Result types and can -thus be used like regular table results - -Project EXPORT aims at exporting data from the database in -various serialisable formats, such as XML, CSV, HTML, Text, JSON. -This project will be continued in the future, to also -deserialise from (some of) these data streams. This will allow -for easy transport of jOOQ Result types over the net. - -Project CODEGEN has finally been started. Many improvements -suggested by jOOQ users will be implemented in the next releases. -In this release, important fixes have been made to prevent -compilation errors in generated artefacts. - -Features and improvements -------------------------- -#61 - EXPORT: Add Result.formatXML() -#166 - CURSOR: Add support for ResultSet type returned from - Oracle stored procedures / functions -#411 - Allow for fetching Map (instead of Record) - and List> (instead of Result) -#549 - Add Factory.function() for plain SQL functions -#611 - Simulate RPAD and LPAD in SQL Server, Sybase -#627 - Add support for Postgres FOR UPDATE OF [table-name] clause -#628 - Add support for REPEAT (SQL Server: REPLICATE) function -#637 - Nicely format time in StopWatch logging output -#640 - Simulate Postgres FOR UPDATE OF [table-name] clause in - other dialects -#649 - CURSOR: Add Cursor.fetch(int) .fetchOne() - .fetchResult(int) .fetchResult() -#653 - Add support for MySQL encryption and compression functions -#660 - Clarify Javadoc of UpdatableRecord to explain its - behaviour when changing the main unique key -#669 - EXPORT: Add Result.formatHTML() -#672 - Add convenience method UpdatableRecord.copy() in order to - reset primary key values for a subsequent INSERT -#675 - EXPORT: Add Result.formatCSV() -#683 - Implement ResultImpl.equals() and .hashCode() -#684 - Implement AbstractStore.equals() and .hashCode() -#685 - Add Store.size() to indicate the maximum index of the - Store -#687 - EXPORT: Add result.formatJSON() -#689 - Create separate builds: jooq-core.zip and - jooq-with-dependencies.zip -#690 - CURSOR: Add support for ResultSet type returned from H2 - stored functions -#695 - CURSOR: Add support for ResultSet type returned from - Postgres stored functions -#697 - Add Factory.fetch(String) for executing plain SQL queries - that return results -#701 - Add ResultQuery.fetchArray() and .fetchOneArray to return - Object[][] and Object[] -#704 - Always add top and bottom line in Result.format() -#705 - Right-align numeric values in Result.format() -#716 - Add SUBSTRING function Field.substring(Field, Field) - taking fields as arguments -#719 - Document risk of SQL injection in plain SQL and literal - factory methods -#726 - Add LENGTH function as a synonym for CHAR_LENGTH - -API changes (backwards-compatible) ----------------------------------- -#698 - Inconsistent API with Factory.fetch(Table [,Condition]) - Let method return Result instead of List -#699 - Let Result extend List - -API changes (previous API now deprecated) ------------------------------------------ -#656 - Decrease verbosity of plain SQL methods. They will just be - called Factory.field() .condition() .table() .query() - -Test cases ----------- -#643 - Add integration test for code generation of invalid and - incomplete types in Oracle -#654 - Add integration tests for master data tables with PK types - other than NUMBER/INT -#655 - Add missing integration tests for TRIM function - -Bug fixes ---------- -#450 - Improve plain SQL integrity checks for bind variables -#610 - CODEGEN: Compilation error in generated source code for - databases with table named 'system' -#646 - An empty Java package is generated for an empty PL/SQL - package. This is unnecessary -#651 - CODEGEN: Avoid importing datatypes in generated source - code to prevent collisions -#657 - NullPointerException when creating a Factory with a null - SchemaMapping -#658 - Master data table code generation is broken for tables - with more or less than 3 columns -#662 - Add support for the missing Postgres data type "bpchar" -#663 - Add support for the missing Sybase data type "int" -#664 - Ingres INTEGER data types are not correctly generated -#665 - HSQLDB Datatype CLOB and BLOB are not supported, when - selecting from plain SQL tables -#666 - The evil bug: Ingres TRIM function only executes RTRIM -#673 - UpdatableRecord.store() doesn't work if called after - .delete() -#702 - Add support for the missing SQLite data type "NULL" -#706 - CURSOR: Ensure that Query.execute() runs in a single - transaction when Postgres refcursor is involved in the - query (this fixes a Postgres JDBC driver flaw) -#724 - NullPointerException when passing a single literal null - bind value to plain SQL methods without casting to Object -#729 - DB2, Derby, Ingres, Oracle cannot bind null values in - plain SQL - -Version 1.6.1 - June 19, 2011 -================================================================= - -In this release, the PORTABILITY project has been implemented. -Finally, the SQLDialect has been removed from most generated -artefacts (Schema, Table, Field, Sequence, etc). Also, the -constructing Factory is not referenced by its created QueryParts -anymore, unless this is really necessary (Query objects, UDT's, -ARRAY types). This leads to higher compatibility between schemata -of different databases, e.g. if users want to use an HSQLDB -development and Oracle productive database. - -Unfortunately, this means that the way stored procedures are -called had to be changed. This is an API break that could not be -avoided. The pre-1.6.1 StoredObject.execute(Connection) method -is deprecated and will be removed in the future. It has been -replaced by StoredObject.execute(Configuration) - -In addition to this project, many more window functions are now -supported, as well as the Oracle-specific CONNECT BY clause for -recursive queries. - -Features --------- -#351 - Add support for Oracle ROWID data type -#452 - PORTABILITY: Create a super-set of RDBMS data types -#453 - PORTABILITY: Don't create dialect-specific QueryParts -#455 - Add support for the Oracle CONNECT BY clause -#587 - Add optional OFFSET clause to form LIMIT .. OFFSET - constructs -#589 - Add extended FOR UDPATE [OF ...] [{WAIT n | NOWAIT | SKIP - LOCKED }] support -#591 - Add support for LEAD() OVER() and LAG() OVER() window - functions -#592 - Add support for the CUME_DIST() OVER() window function -#601 - Add Factory.literal() convenience methods -#602 - Add Factory.val() methods to decrease .constant() - verbosity -#604 - Add support for RESPECT NULLS clause in some window - functions -#605 - Add Factory.use(String) for non-generated schemata -#613 - Add PI function -#616 - Add Factory.two() literal convenience method -#630 - Add support for Oracle CONNECT BY pseudo-columns LEVEL, - CONNECT_BY_ISCYCLE, CONNECT_BY_ISLEAF - -API changes ------------ -#299 - PORTABILITY: Create a dialect-independent meta-model -#588 - Add OVER() keyword to FIRST_VALUE() and LAST_VALUE() API - -Test cases ----------- -#368 - Add integration test for use with schema mapping -#586 - Upgrade H2 to 1.3.155 -#607 - Add integration tests for CRUD / SP's / UDT's / ARRAY's - with SchemaMapping -#612 - Add integration tests for LPAD and RPAD functions -#624 - Add integration test for code generation of invalid/ - incomplete views in Oracle -#631 - PORTABILITY: Add integration tests for using Oracle- - generated schema against an HSQLDB database -#638 - Add missing integration test for DECIMAL data type - -Bugfixes --------- -#176 - Stored procedures / functions in EQUIVALENT schemata - cannot be called -#493 - Bind variable mismatch when constructing bad SQL -#594 - Confusing Javadoc in SELECT DSL API -#603 - Fix DB2 'IGNORE NULLS' clause -#619 - SUBSTRING() function is broken in DB2, Ingres, SQL Server -#623 - SQL syntax error for some MERGE queries in SQL Server and - Sybase -#633 - SchemaMapping is not applied to sequences -#634 - Sequences are not escaped in generated SQL - -Version 1.6.0 - June 05, 2011 -================================================================= - -Apart from supporting various additional standard and non- -standard JOIN constructs, there is now also full support for the -SQL standard MERGE statement and MySQL's ON DUPLICATE KEY variant -thereof. A great number of API enhancements have been added, -which improve the usability of jOOQ. The Ingres database is now -also supported. - -Features --------- -#301 - Add support for Oracle execution hints -#409 - Add support for NATURAL JOIN syntax, where RDBMS allows it -#415 - Make fluent API's underlying SelectQuery objects publicly - available -#429 - Add Ingres support -#475 - Document class-level generic types and in Javadoc -#486 - Add support for SQL MERGE clause -#494 - Allow for omitting schema name in generated SQL -#496 - Automatically update IDENTITY values in UpdatableRecord, - after storing them -#520 - Add support for JOIN ... USING syntax -#524 - Upgrade HSQLDB to 2.2 -#533 - Add ORDER BY [Map] or BY [List] functionality -#534 - Add Result.isEmpty() -#535 - Call upon ConfigurationRegistry.provideFor() before - throwing a DetachedException -#536 - Simulate CASE [value] WHEN [value] THEN [result] END - syntax in Derby -#538 - Add some logging to ConfigurationProvider -#539 - Add possibility to negate numeric values with Field.neg() -#541 - Add support for MySQL ON DUPLICATE KEY clause -#542 - Allow for Collection arguments in INSERT's DSL API -#543 - Allow for creating FUNCTION() OVER() without PARTITION BY - or ORDER BY clause -#546 - Add Factory.use(Schema) -#548 - Add new internal type FieldMap -#550 - Simulate ON DUPLICATE KEY INSERT clause in dialects other - than MySQL -#551 - Add TableMapping, similar to SchemaMapping for mapping - tables -#553 - Add Factory.plainSQLQuery -#554 - Add Factory.plainSQLField with a DataType parameter -#555 - Add UpdateXXX.set(Map) convenience methods to DSL API -#557 - Enhance INSERT DSL API to allow for adding VALUES clause - with InsertXXX.set() syntax -#570 - Add support for the RAND() function -#567 - Add support for Ingres Sequences -#572 - Add support for the ATAN2() function -#573 - Add possibility for additional select() clauses for - convenience -#575 - Add support for the FULL OUTER JOIN syntax, where RDBMS - supports it -#576 - Add support for the CROSS JOIN syntax, where RDBMS - supports it -#581 - Enhance API and allow Collection> - instead of Collection> - -API changes ------------ -#397 - Purge deprecated API - -Bugfixes --------- -#481 - Handle case where an empty record is stored -#522 - Misleading Javadoc in generated stored procedures and - function constructors -#532 - Restore Postgres INFORMATION_SCHEMA -#537 - Prevent null from being added to QueryPartList -#540 - Error when TRACE logging Limit -#544 - Aliased elements are not bound correctly when rendered - with toSQLReference() -#559 - Loosen type safety on overloaded methods to prevent - compilation errors with javac/Netbeans -#560 - HSQLDB DataType REAL is configured incorrectly -#565 - Add integration tests for current_user() function -#569 - ORA-01427 when generating foreign key relations -#571 - Field.trim() not correctly implemented for SQL Server -#583 - Accelerate integration tests: Reset schema only if - necessary - -Version 1.5.9 - May 15, 2011 -================================================================= - -This version ships with lots of new functionality. Finally, the -DSL-style API has been extended to CRUD operations (INSERT, -UPDATE, DELETE)! Also, support for the TRUNCATE TABLE statement -has been added. - -The most important new features include the support for SQL:2003 -standard window functions, which are available in most major -RDBMS. Additionally, basic function support has been widely -extended. - -Features --------- -#148 - Added support for window functions -#204 - Add support for multi-record INSERT's -#416 - Added support for retrieval of IDENTITY values -#433 - Use bind variables for LIMIT and OFFSET -#441 - Added foreign key relationship meta information to the - generated source code -#446 - Beautify ResultImpl.toString() method -#461 - Automatically cast CONCAT parameters to Field if - necessary -#463 - Added support for trigonometric functions -#471 - Added support for the sign function -#472 - Added support for GREATEST/LEAST functions -#474 - Added support for "hyperbolic" functions SINH, COSH, TANH, - and COTH -#482 - Added DSL API for INSERT statements -#483 - Added DSL API for UPDATE statements -#484 - Added DSL API for DELETE statements -#485 - Added "Registry" for client code to provide Configurations - to jOOQ Attachables -#490 - Added support for the TRUNCATE TABLE statement -#495 - Generate source code for IDENTITY columns -#501 - Added support for boolean conversion to Result, Record, - and Store -#503 - Allow for schema navigation via generated artefacts -#518 - Let stored procedures reference owner package - if applicable -#525 - Added NULLS {FIRST | LAST} clause to ORDER BY constructs -#528 - Added Factory.getDataType() convenience method -#530 - Added Factory.zero() and Factory.one() convenience methods - -API changes (jooq) ------------------- -#527 - Weakened type-safety on Field.nvl2() -#529 - Deprecated Factory.select(Object...), added .selectOne() - and .selectZero() instead - -API changes (jooq-meta) ------------------------ -#30 - Add ParameterDefinition for stored procedures, instead of - reusing ColumnDefinition -#499 - Add reference to TableDefinition in ColumnDefinition -#500 - Add AttributeDefinition for UDTDefinition, instead of - reusing ColumnDefinition - -Bug fixes ---------- -#369 - Adapt H2 relations generation to H2's correction of - information_schema.cross_references -#435 - Added integration tests for NESTED SELECTs holding LIMIT - clauses -#460 - Syntax error when using a field with a reserved name -#462 - Fixed Javadoc broken links -#473 - Don't cast when cast is unnecessary -#479 - INSERT statement should not set all fields for a table -#497 - Derby referential code generation is broken, for named - foreign keys -#498 - Oracle package content is generated in arbitrary order -#502 - Syntax error when creating an empty IN condition -#526 - Corrected Javadoc in Field.coalesce() - -Version 1.5.8 - April 29, 2011 -================================================================= - -Finally, jOOQ now supports two important new RDBMS: -SQL Server and Sybase! - -Apart from this great enhancement, there is now also full support -for the non-SQL standard LIMIT clause, even in dialects where the -LIMIT clause is not supported natively (especially Oracle, but -also DB2, SQL Server and Sybase, which have limitations). jOOQ -simulates LIMITs by rendering nested selects filtering on ROWNUM -(Oracle) or on ROW_NUMBER() (DB2, SQL Server and Sybase). - -Other interesting additions are an increasing support for native -mathematical functions. More function support will be added in -future versions. - -Features --------- -#16 - Added support for SQL Server -#21 - Uniform implementation of the LIMIT clause. Implemented - LIMIT clause simulation through analytic functions, where - LIMIT is not supported natively -#97 - Added support for Sybase -#418 - Measure time of various steps in source code generation -#420 - Added support for proprietary SQL extensions "FOR UPDATE" - and "FOR SHARE" -#431 - Added additional statistics to generation log files -#432 - Unified the various "standard" ANSI INFORMATION_SCHEMA - implementations in the jooq-meta artefact -#436 - Added support for the modulo function -#438 - Added floor and ceil functions -#439 - Added support for mathematical functions (logarithms, - exponentials, sqrt) -#447 - Enhanced Field.add() and Field.subtract() to work for date - time fields, also - - -API changes ------------ -#428 - Created new Maven artefact jooq-meta to cleanly separate - database meta-data navigation from code generation -#458 - Decreased DSL verbosity for arithmetic operations and for - ordering - -Bug fixes ---------- -#417 - Restored warning when unknown column type is encountered - in source code generation -#419 - Corrected misleading Select.fetchOne(...) Javadoc -#421 - Optimised AbstractRecord's memory consumption -#448 - Corrected some Javadoc @see links -#449 - Changed Field.concatenate() to accept Field parameters - to avoid generic varargs warnings - -Version 1.5.7 - April 17, 2011 -================================================================= - -This is the first release built with support of Maven thanks to -the help of some jOOQ users! - -The main new features in this release are the improved support -for serialisation/deserialisation of jOOQ objects through use of -the newly introduced "Attachable" interface. - -If using log4j or the newly supported slf4j logging framework -in debug/trace mode, there is the possibility to log query -building/execution time statistics. - -Apart from these new features, fixes were mainly done in the -fields of type casting, HSQLDB 2.1 upgrade support, stored -procedures with OUT, IN/OUT parameters. Please upgrade, if you -are using any of those features. - -If you extend jOOQ as a base implementation for source code -generation, be aware of the fact, that the jOOQ-codegen is -currently undergoing major changes. Expect the code generation -API to stabilise again in one of the next releases. - -Features --------- -#104 - Added maven dependency -#248 - Integrate UDT types with ARRAYs -#295 - Allow for attaching/detaching UpdatableRecords to/from - Configurations -#359 - Added statistics measurement to Query execution for debug - log level -#362 - Added deprecation configuration flag -#364 - Document unknown type in generated source code -#373 - Improve exception handling in code generation -#378 - Added support for Oracle stored functions with OUT - parameters -#382 - Added Factory.attach() methods to re-attach deserialised - Attachables -#394 - Add logging support for SLF4J -#398 - Allow to provide a DataType in Factory.constant() -#399 - Provide access to TypeUtils.convert() methods via DataType -#404 - Added trace logging for measuring the speed of various - query execution steps - -API changes ------------ -#358 - Enhanced DSL API to allow for HAVING clauses without - GROUP BY clauses -#367 - Make Store, Result, QueryPart "Attachable" -#374 - Introduce strategy pattern to code generation for future - support for advanced naming schemes -#375 - Decouple Database from Generator -#381 - Made DataType Serializable -#384 - Deprecated singleton QueryParts -#388 - Unify "internal" API using an Adapter pattern - -Bug fixes ---------- -#187 - Protect generated Record navigation methods against name - clashes -#266 - Added more thorough integration tests for dialect-specific - casting (including some fixes related to varchar types) -#360 - Added more integration tests for the DISTINCT clause -#361 - Add more checks in testInsertUpdateDelete() -#366 - Warn only once per ColumnDefinition, if a data type is - unknown -#377 - NullPointerException when generating invalid stored - function -#380 - Added integration tests to check for proper - serialisability -#386 - Fixed incompatibilities with HSQLDB 2.1.0 -#387 - Fixed unnecessary imports in some Oracle generated - Records -#389 - Fixed javac compiler warning in AbstractStoredObject -#391 - Cannot properly call stored procedures when IN/OUT - parameter is bound to NULL -#392 - Procedures with several OUT parameters may not register - OUT parameters correctly -#410 - Passing null VARRAY values to Oracle stored procedures - causes issues -#412 - limit(int) sets default offset incorrectly in some - dialects - -Version 1.5.6 - March 31, 2011 -================================================================= - -This release consists mainly of code generation bug fixes and -minor API improvements and enhancements. - -The most important improvement is ticket #90, by which lazy -fetching and iteration over data is now supported. jOOQ lets you -keep a reference to a Cursor that has an open JDBC ResultSet, to -fetch data from on-the-fly. - -A few major code generation bugs were reported where the -generated code may cause ambiguity due to an inconsistent API. -This means that you will have to re-generate your schema after -upgrading to version 1.5.6. Some of your code may not compile -anymore, after this upgrade. - -Features --------- -#90 - Added possibility for lazy fetching of data -#208 - Added convenience methods for direct invocation of - sequences' currval() and nextval() attributes -#212 - Created one factory per dialect for better separation of - dialect-specific support -#213 - Generate a factory for each schema -#251 - Opened up base implementations for Field and Condition - to allow for custom implementations by client code -#274 - Integrate H2 ARRAY types with stored procedures -#292 - Documented usage of log4j and java.util.logging -#306 - Added support for the NULLIF function -#319 - Added Field.between(Field, Field) method -#320 - Added trace logging for variable binding and SQL - generation methods -#323 - Added Field.in(Field...) method -#325 - Include release version number in delivered .jar files -#328 - Improved configuration setup documentation page -#333 - Let Result implement Serializable -#334 - Added fetchMap() convenience methods -#335 - Added more functions and aggregate functions examples to - documentation -#338 - Visually improve code generation logging -#339 - Removed skipping of unreferenced UDT's, ENUM's and ARRAY's -#342 - Improved generated referential code by using fetch() and - fetchOne() API -#356 - Let UpdatableRecord.store() and delete() return an int - to indicate whether the record was actually modified - -API changes ------------ -#233 - Allow for joining TableLike instead of Table -#337 - Added generic type > to - InsertSelectQuery -#341 - Fixed API flaw where SelectOnConditionStep.and() methods - and similar ones returned SelectConditionStep, instead of - SelectOnConditionStep - -Bugfixes --------- -#69 - Corrected referential code generation for foreign keys - that reference non-primary unique keys -#85 - Corrected referential code generation for multi-field - foreign keys -#121 - Covered more Factory.executeXXX() methods with integration - tests -#318 - Fixed NullPointerException when executing SELECT * from - aliased tables -#321 - BetweenCondition does not bind left hand side Field - correctly -#322 - InCondition does not bind left hand side Field correctly -#326 - Avoid method overloading where binding to Object - may lead to compile-time ambiguities (with javac) -#343 - Add more foreign key navigation method integration tests -#347 - Add explicit integration tests for schema artefacts - excluded from code generation -#350 - Disambiguate navigation methods if several foreign keys - reference the same entity -#352 - Disambiguate navigation methods if a table ending on S - references itself -#353 - Added integration test for compilation of generated - artefacts with javac (as opposed to the Eclipse compiler) -#355 - Error when storing an UpdatableRecord that has no changed - values - -Version 1.5.5.2 - March 15, 2011 -================================================================= - -A critical bug was reported from the 1.5 release stream where -stored functions did not render their parameters in correct order - -Features --------- -#302 - Map Oracle's NUMBER data type to java.lang.Number in - stored procedures, stored functions - -Bugfixes --------- -#317 - StoredFunctionImpl.asField() renders parameters in wrong - order - -Version 1.5.5.1 - March 13, 2011 -================================================================= - -In version 1.5.5, there was a fatal bug breaking Derby source -code generation. Only the Derby dialect is affected. Please -update immediately, if you are using jOOQ's Derby integration - -Bugfixes --------- -#315 - Generated master data records are not sorted by PK -#316 - Derby code generation fatally broken - -Version 1.5.5 - March 12, 2011 -================================================================= - -This version is released early as there are some important -bugfixes. Additional improvemetns include: - -- Improved DSL related to conditions in HAVING and JOIN clauses -- Support for Oracle-style functions, such as NVL, NVL2, COALESCE - DECODE, etc - -Features --------- -#304 - Add support for Oracle NVL function -#305 - Add support for COALESCE function -#308 - Add support for Oracle NVL2 function -#311 - Add support for Oracle DECODE function - -API changes ------------ -#223 - Enhance DSL to accept and(), or() and similar methods in - JOIN steps -#224 - Enhance DSL to accept and(), or() and similar methods in - HAVING steps - -Bugfixes --------- -#297 - Fixed Factory.concatenate() function -#298 - Added integration tests for nested selects in HAVING - clause -#300 - Added integration tests for nested selects in JOIN clause -#303 - Javadoc correction -#307 - Accelerated integration tests -#309 - Fixed JDBC variable binding issue related to Conditions - where the lhs is a function (e.g. stored function) and the - rhs is a constant -#310 - Fixed issue where fetchOne() methods throw - NullPointerException if no result record is available -#312 - Fixed issue where Field.equal(...) methods rendered - unexpected SQL when rhs null is cast to a type -#313 - Fixed Derby cast type for VARCHAR -#304 - Let the DerbyDataType default for java.lang.String be - VARCHAR, not LONG VARCHAR - -Version 1.5.4 - March 04, 2011 -================================================================= - -Feature #243 required a minor API change in the base classes of -generated source code. This means you have to re-generate all -your jOOQ artifacts in order to migrate to 1.5.4. The artifacts -themselves should be regenerated in a compatible way, such that -your client code should not be affected. If this is not the case, -please report a ticket here: - - https://sourceforge.net/apps/trac/jooq/newticket - -Apart from the Derby RDMBS and some new data type support, there -have been many new convenience methods added all over the API. -For instance, if type-safety is not really a requirement, there -are lots of possibilities to use plain SQL directly in the DSL. -In that case, data can be accessed from Record, Results, not only -through Field, but also through field names or indexes. - -Check out the updated documentation (soon) here: - - https://sourceforge.net/apps/trac/jooq/wiki/Examples - -- Support for the Derby RDBMS -- Support for casting. This allows for even greater flexibility - in cases where jOOQ cannot 100% ensure type-safety -- Support for ARRAY types. Oracle, Postgres, HSQLDB and H2 ARRAY - types are now supported natively as regular bindings in - jOOQ's Field -- Support for dialect-specific data types. CHAR, VARCHAR, CLOB - are no longer treated equally as java.lang.String. Their - type heritage is also generated -- More sequence support -- Lots and lots of bug fixes - -Features --------- -#95 - Support for the Derby RDMBS -#163 - Add support for JDBC type ARRAY (with Postgres) -#209 - Add support for DB2 sequences -#210 - Add support for H2 sequences -#211 - Add support for HSQLDB sequences -#215 - Support for SQL casting using as cast type -#246 - Support for SQL casting using dialect-specific data types -#254 - Add HSQLDB support for ARRAY types -#256 - Add Oracle support for VARRAY types -#257 - Integrate ARRAY types with stored procedures -#261 - Add a global type mapping to the generated Schema object -#267 - Add DataTypeDefinition for further abstraction of data - types in code generation -#269 - Add H2 support for ARRAY types -#290 - If log4j is not on the classpath, use java.util.logging - instead, as fallback - -API Changes ------------ -#156 - Allow for results to be accessed by index, not by field -#218 - Corrected bad method signature: - Record.getValueAsLong(Field, Integer) -#219 - Extended Result and Select API's to be more similar to - that of Record -#232 - Add more convenience plain SQL support to the API -#235 - Add convenience methods to Record, Result and Select for - access of data via field name -#243 - Refactor DataType implementations in order to allow for - the use of generics -#259 - Add field type to database meta data (ColumnDefinition) -#260 - Add field type to database meta data (Field) -#262 - Add default behaviour for Record.getValue(Field) -#276 - Add Javadoc as a ZIP file to the jOOQ distribution - -Bugfixes --------- -#125 - Add more plain SQL integration tests -#191 - Add more integration tests for nested unions -#205 - Implemented workaround for handling Postgres stored - functions with UDT OUT parameters -#214 - Fixed NPE when generating a stored function with an - unknown parameter type -#216 - Fixed some cases where binding of BigInteger is not done - correctly -#220 - Syntax error when using select statement in a CASE clause -#221 - Corrected integration tests for combined update and - select statements -#222 - Added integration test for INSERT statements having - nested SELECT statements for their fields -#225 - Correctly cast array types in Postgres -#230 - Potential misuse of Blob and Clob in H2's JDBC types -#239 - Factory.fetchAny() is not implemented for SQLite -#244 - Fixed peculiar MySQL casting support where cast types do - not match any data types -#245 - Fixed NPE when reading null dates in SQLite -#249 - Added ARRAY type integration tests -#255 - Stored procedure bind variables get mixed up when any - argument is null -#263 - Correctly handle Postgres function overloading -#264 - Ambiguous funciton calls when calling overloaded functions - with null parameter -#281 - Handle compilation errors when generating stored - procedures with > 254 parameters -#283 - Fixed compilation errors in generated source code for - Oracle's UDT table type -#284 - Fixed compilation errors in generated source code for - Oracle procedures in packages, when they have no - parameters -#285 - Fixed compilation errors in generated source code for - Oracle tables with the same name in different schemata -#286 - Fixed name collisions in generated objects with the - java.lang.* package -#288 - Prevent the creation of UNION queries with bad syntax - in MySQL -#289 - Correctly alias fields within UNION queries for some - dialects, which then only require the "AS" keyword -#291 - Cannot create an aliased field called "year" in Postgres - -Version 1.5.3 - January 13, 2011 -================================================================= - -- Lots of stored procedure support was implemented -- Support for sequences was added -- The final decision to postpone support for DB2 UDT's was made -- Some code generation bugfixes - -Features --------- -#36 - Added stored procedure / stored function support for HSQLDB -#140 - Added support for Oracle sequences -#147 - Added support for H2 stored functions -#162 - Correctly integrate UDTs with stored procedures -#170 - Added support for Postgres stored functions -#186 - Added support for more Oracle PL/SQL simple data types -#193 - Simulate support for H2 "stored procedures" -#195 - Simulate support for Postgres "stored procedures" -#206 - Added support for Postgres sequences - -API changes ------------ -#180 - Improved DSL for constant values -#181 - Allow for referencing Field in function argument list -#189 - Renamed convenience methods in org.jooq.Record -#207 - Add fetchOne(Field) method to org.jooq.Select API - -Bugfixes --------- -#182 - Protected generated Record classes against clashes with inherited methods -#183 - Fixed NullPointerException, when generating master data tables with - NULL fields -#184 - Fixed IllegalArgumentException, when a data type is present in the - schema, but unavailable in code generation logic -#185 - Code generation should not fail when single elements cannot be generated -#188 - Improved integration tests for stored procedures / functions / packages -#196 - Increase RDMBS version compatibility by avoiding "SELECT *" in code - generation logic -#199 - Added integration tests for stored procedures in RDBMS that do not - support OUT parameters -#201 - Fixed issue in DB2 where stored procedures without parameters were not - generated. -#202 - Added integration tests for stored procedures / functions without - parameters - -Version 1.5.2 - December 27, 2010 -================================================================= - -- Improved support for stored procedures, also in packages -- A minor API change was inevitable to implement #173. The API change only - concerns the INTERNAL API. Deprecation marks are added and deprecated items - will be removed in 1.6.0 -- Experimental SQLite database support -- Some important bug fixes - -Features --------- -#25 - Added support for Oracle packages -#114 - Added support for Oracle UDTs -#145 - Added support for the SQLite database -#150 - Generate static convenience methods for stored procedures / functions -#151 - Generate static convenience methods for stored function fields -#152 - Generate meaningful serialVersionUID in generated classes -#173 - Added support for EQUIVALENT schemata - -API changes ------------ -#159 - Added convenience method List getValues(Field) to Result -#165 - Added convenience methods for creating EXISTS clauses -#169 - Improved DSL for WHERE clauses - -Bugfixes --------- -#68 - Prevent issues originating from overloaded stored procedure names, - generating identical Java class names -#153 - Fixed issue with generated code for DB2 stored functions -#154 - Fixed issue with generated code for DB2 stored functions -#155 - Fixed issues with database NULL not being mapped correctly to Java NULL - when selecting values that have a primitive type (int, long, etc) -#158 - Potential ClassCastException when using Field -#171 - Corrected issue related to selection of default schema in DB2 -#177 - Fixed issue related to generated code for tables or UDTs without columns - - -Version 1.5.1 - December 13, 2010 -================================================================= - -- H2 database support thanks to Espen Stromsnes -- Improved stored procedure support - -Features --------- -#96 - Added H2 database support -#101 - Added stored procedure / stored function support for Oracle -#138 - Added stored procedure support for DB2 -#146 - Added support for DB2 functions - -API changes ------------ -#143 - Added convenience methods to Record - -Bugfixes --------- -#84 - Implemented referential code generation for foreign keys that do not - match their primary keys' types -#141 - Encoding problem in generated master data classes - -Version 1.5.0 - November 22, 2010 -================================================================= - -- A big one. Major API changes / improvements -- Added lots of convenience methods -- UDT support -- Enum support -- DB2 support thanks to Espen Stromsnes -- "Light" dependency to log4j added. jOOQ will still run without it - -Features --------- -#1 - Create support for UDTs (so far only for PostgreSQL) -#15 - Added DB2 support -#60 - Added support for nested selects in INSERT and UPDATE - statements -#83 - Added log4j logging to code generation and runtime -#87 - Add support for arithmetic expressions -#105 - Added support for ENUM data types, where applicable - (MySQL and PostgreSQL so far) -#110 - Added execute and fetch convenience methods -#111 - Added missing "select distinct" support -#122 - Annotate generated classes with javax.annotation.Generated -#123 - Generate user enum fields from data values (master data) -#124 - Added PlainSQLTable -#127 - Added not() operator to Condition -#135 - Added convenience methods andNot() and orNot() in - Condition - -API changes ------------ -#89 - Removed support for DataSource. jOOQ is not a transaction - manager -#92 - Added SortField type to be used for sorting -#99 - Provide better access to functions (No more FunctionFactory) -#116 - Merge Manager functionality into Factory -#118 - Improve API of org.jooq.Field -#119 - Improve subquery condition API -#132 - Reduced much of the select query API -#134 - Better separation of SelectQuery and SimpleSelectQuery - -Bugfixes --------- -#109 - Error when executing select * if generated schema does not - match actual schema -#115 - Fix various "null" pseudo field issues -#126 - Error when selecting a single field from a union nested - select -#129 - Fixed performance issue in Oracle code generation for - very large databases - - -Version 1.4.4 - November 22, 2010 -================================================================= - -Unreleased version, fixes included in 1.5.0 - -Bugfixes --------- - -#133 - JoinCondition does not take comparison operator - -Version 1.4.3 - October 25, 2010 -================================================================= - -Some more bugfixes - -Bugfixes --------- - -#71 - Generated code does not compile, when foreign key and - primary key have a data type mismatch -#73 - In Oracle generated code, multi-field foreign keys may - generated bad relations code -#82 - Conversion of literals to camelcase fails if numbers are - involved - -Version 1.4.2 - October 22, 2010 -================================================================= - -Various bugfixes and minor improvements - -Features --------- -#66 - Add support for CASE or DECODE expression - -API changes ------------ -#77 - Functions should not extend FieldImpl, but a new - AbstractField -#78 - QueryPart pollutes declared method space of its - implementations. Hide it by indirection - -Bugfixes --------- -#64 - Code generation fails when foreign key references a unique - key that is not the primary key. Code generation for these - cases is omitted -#67 - When loading properties files, a leading / seems to be - mandatory. This is preventing users from correctly setting - up jOOQ the first time -#70 - Add support for Oracle datatype TIMESTAMP(6) -#72 - Name clashes in generated Tables -#75 - Constant does not bind its values. -#76 - Constant should not render strings all the time -#79 - Constants are not properly escaped -#80 - Position function does not bind any variables -#81 - Add cast function to Constants in HSQL - -Version 1.4.1 - October 18, 2010 -================================================================= - -Oracle patch release - -Features --------- -#63 - Generate referential functionality for Oracle - -Version 1.4.0 - October 17, 2010 -================================================================= - -Support for PostGreSQL was added. -Added lots of OR-mapping functionality. -There is a general API change due to various new features. - -Features --------- -#14 - Add PostGreSQL support -#40 - Resolve foreign keys. Allow for navigation between objects. -#42 - Add PlainSQLField -#45 - Add "dirty" flag to Record's values. This allows for - updating only relevant data. -#47 - Complete implementation for UPDATE, INSERT, DELETE - statements. Added some missing functionality. -#48 - Add more support for Date, Time, Timestamp fields. -#51 - Add a org.jooq.impl.Manager class that provides common - utility methods for CRUD operations - -API changes ------------ -#10 - Add second generic type . This is a - prerequisite for many OR-mapping features -#18 - Use org.jooq.Record in InsertQuery and UpdateQuery -#46 - Create UpdatableRecords as a prerequisite for JPA and true - OR-mapping. These records support store() and delete() - methods -#52 - Add default constructor in generated Records. -#53 - Add refresh functionality to UpdatableRecords. See also #46 -#54 - Add a state to the factory class -#56 - Reduce API, remove unnecessary Condition subinterfaces -#57 - Reduce API, remove unnecessary QueryPart interfaces - -Bugfixes --------- -#49 - NullPointerException when generating relations on schema - subset -#58 - Count function renders bad SQL in various dialects -#59 - Exception when selecting unaliased functions in queries - -Version 1.3.0 - August 24, 2010 -================================================================= - -Support for HSQLDB was added. -There is a major API change due to #44. - -Features --------- -#29 - Generate primary keys and foreign keys in Oracle code - generation -#34 - Add support for HSQLDB -#39 - Generate primary keys and foreign keys in HSQLDB code - generation -#41 - Add documentation to QueryFactory and Functions - -API changes ------------ -#23 - Add support for more advanced joins -#32 - Merge SelectQuery and ResultProviderQuery interfaces -#44 - Let Query methods return "this" - -Bugfixes --------- -#35 - Add unit tests for HSQLDB support -#37 - Syntax error in combined select queries! - The usage of combined queries in MySQL may still be a bit - awkward. Keep an eye out for further fixes -#43 - Join with aliased tables doesn't work - -Version 1.2.0 - August 21, 2010 -================================================================= - -The added Oracle support is now unit tested and more stable. -The Oracle NUMBER data type is mapped more precisely to Java -types. - -Features --------- -#12 - Model primary keys and foreign keys in generated code -#22 - Improve mapping of Oracle NUMBER data type -#26 - Add Plain SQL QueryParts -#27 - Add support for HAVING clause - -Bugfixes --------- -#24 - Add Unit tests for oracle database (and fixed bugs) -#31 - Pull up addOrderBy() methods from SelectQuery to - ResultProviderQuery - -Version 1.1.0 - August 17, 2010 -================================================================= - -The main new feature is the Oracle support. Wait for -Version 1.1.1 for that support to be stabilised, as there are no -Oracle unit tests running against an Oracle database yet. - -Features --------- - -#2 - Add support for inner / nested selects -#3 - Add more function support -#4 - Implement filtering functionality for code generation -#6 - Add Oracle Support -#9 - Create true POJO's (implementing org.jooq.Record) with - getters and setters -#17 - Make org.jooq.impl.Parameter independent of Field - -Bugfixes --------- - -#11 - Code generation does not remove files - -Version 1.0.1 - August 14, 2010 -================================================================= - -Features --------- - -#5 - Prevent code regeneration, if no changes were made -#7 - Implement ant task for code generation - -Version 1.0.0 - August 14, 2010 -================================================================================ -Initial Release \ No newline at end of file diff --git a/jOOQ-website/inc/RELEASENOTES-2.5.txt b/jOOQ-website/inc/RELEASENOTES-2.5.txt deleted file mode 100644 index bd6cb59fb4..0000000000 --- a/jOOQ-website/inc/RELEASENOTES-2.5.txt +++ /dev/null @@ -1,2936 +0,0 @@ -jOOQ Release notes -================== - -For an interactive overview, see also -http://github.com/jOOQ/jOOQ/issues - -For a formatted text version, see -http://www.jooq.org/notes.php - -For a text version, see -http://www.jooq.org/inc/RELEASENOTES.txt - -Version 2.5.1 - September 23, 2012 -================================================================= - -This is a minor patch release with some useful fixes for the -2.5 branch - -Bug fixes ---------- -#1751 - Result.intoResultSet() generates wrong ResultSetMetaData - if runtime schema mapping is applied -#1764 - Add missing @Support({ ... FIREBIRD ... }) annotations -#1768 - NullPointerException when DAO.fetchOne() returns no - record -#1774 - QueryPart.toString() does not load default settings from - classpath -#1786 - Fix SEQUENCE support for Firebird -#1792 - Factory.fieldByName() and tableByName() do not correctly - escape quotes -#1797 - SQL syntax errors when plain SQL contains comments with - question marks and SQL is executed as - StatementType.STATIC_STATEMENT -#1802 - Result.into(Table) doesn't work correctly, if the same - field name appears twice in Result -#1819 - MappingException in Record.into(Class), when POJO setters - have applicable names but non-applicable argument types -#1820 - Cannot fetch into non-public POJO classes. Their members - / getters / setters should be made accessible -#1829 - Factory.execute(String) may cause errors when plain SQL - returns results - -Version 2.5.0 - August 26, 2012 -================================================================= - -Welcome to another great database integration in jOOQ: Firebird! -This is one of the more popular open source SQL databases out -there, with a rich feature set, including the SQL standard MERGE -statement. - -Apart from this, the main new features are: - -- Optimistic locking. jOOQ's UpdatableRecord API transparently - implements optimistic locking on its store() and delete() - methods. By default, the in-memory record is compared with the - one in the database at write time. But you can also let jOOQ - handle incremented VERSION or TIMESTAMP columns for you. -- Oracle feature increment. Many nice Oracle features are now - supported: user-defined aggregates, regular expressions, - Oracle Text, CONNECT_BY_ROOT and ORDER SIBLINGS BY clausess, - partitioned outer joins and more -- jOOQ's convenience API has been greatly enhanced. This includes - many improved fetch methods and new short forms for equal=eq, - notEqual=ne, greaterThan=gt, etc. to better align jOOQ with - JPA, XSL, QueryDSL and many other tools that abbreviate these - keywords -- Many types and methods have been deprecated to help you foresee - the upcoming changes in jOOQ 3.0 - -Please consider also the updated manual with its new, more -user-friendly structure - -Features and improvements -------------------------- -#430 - Add support for the Firebird database -#457 - Add support for Oracle user-defined AGGREGATE functions -#620 - Add support for the SQL:2008 standard LIKE_REGEX operator -#722 - Remove casting of bind values in Ingres -#727 - Simulate RPAD and LPAD in SQLite -#816 - Add support for Oracle Text functions -#1339 - Add option to generate immutable pojos -#1547 - Support "optimistic locking" in UpdatableRecord.store() - and delete() -#1552 - Generate fetchBy[ColumnName] methods in generated DAO - classes -#1553 - Add some Javadoc to document the difference between using - a Factory with a Connection or with a DataSource -#1556 - Add javax.validation API to full deliverable -#1565 - Add Factory.connectByRoot(Field) to support the Oracle - CONNECT_BY_ROOT pseudo column -#1570 - Add Factory.condition(String, QueryPart...) similar to - Factory.field(String, QueryPart...) -#1582 - Add support for Oracle's ORDER SIBLINGS BY clause, in - combination with CONNECT BY -#1586 - Add missing constructors taking DataSource to dialect- - specific factories -#1587 - Generate missing constructors taking DataSource in - schema-specific factories -#1595 - Simulate REPEAT() in SQLite -#1596 - Add support for optimistic locking using generated - information about "timestamp" or "version" columns -#1627 - Handle NULL in CSV imports/exports -#1645 - Add support for Oracle's PARTITION BY clause in OUTER - JOINs -#1657 - Reorganise the manual -#1664 - By default, activate in the code generator -#1665 - Add support for the empty GROUP BY () clause -#1675 - Add support for the SQL standard IS [NOT] DISTINCT FROM - predicate -#1680 - Overload all plain SQL DSL methods to also accept - QueryPart arguments -#1681 - Simulate empty GROUP BY () clause in Sybase ASE and - Ingres, joining a dummy table and grouping by a constant - field -#1684 - Add Setting to indicate that fetched - records shouldn't be automatically "attached" -#1685 - Improve Javadoc of Attachable.attach(). Document how - "detaching" works -#1688 - Add E Record.into(E) as a complement to - E Record.into(Class) -#1692 - Replace Factory.executeInsert(), Factory.executeUpdate() - and similar methods with more succinct variants -#1696 - Add short versions of comparison predicate methods, such - as eq, ne, gt, ge, lt, le -#1698 - Add support for the SQL standard BETWEEN SYMMETRIC - predicate -#1701 - Add Factory.not(Condition) as a synonym for - Condition.not() -#1704 - Document the behaviour of Factory.newRecord(Table, - Object) and Record.from(Object) with respect to - UpdatableRecord.store() -#1707 - Add Map> ResultQuery.fetchGroups( - Field) and Result.intoGroups(Field) -#1712 - Add > Result.sortAsc, - .sortDesc(Field) -#1713 - Add Result.sortAsc, .sortDesc(Field, - Comparator) -#1714 - Add Result.sortAsc, .sortDesc(Comparator) -#1718 - Document usage of InvalidResultException on the - ResultQuery.fetchXXX() Javadocs -#1721 - Add Map> ResultQuery.fetchGroups( - Field, Field) and Result.intoGroups(Field, - Field) -#1722 - ResultQuery.fetchArray(int) and .fetchArray(String) - should return a typed array, even if this cannot be - checked by the compiler -#1723 - Add Factory.fetchLazy(ResultSet) - -API changes (backwards-compatible) ----------------------------------- -#1544 - Remove Attachable interface from QueryPart hierarchy -#1579 - Deprecate org.jooq.Type -#1580 - Deprecate org.jooq.SchemaProvider -#1638 - Deprecate org.jooq.ArrayRecord.createArray() -#1639 - Deprecate org.jooq.Adapter -#1687 - Let Cursor.fetchInto(Table) return Result instead - of List -#1736 - Deprecate TableRecord.{store|refresh|delete}Using() - methods as being part of jOOQ's internal API -#1741 - Deprecate org.jooq.MasterDataType - -Bug fixes ---------- -#1572 - Use Thread.currentThread().getContextClassLoader() to - load ExecuteListener classes as a workaround for - experienced class loading problems when using OSGi -#1584 - Code generation error with Oracle UDT static functions -#1632 - Improve the performance of various DefaultRenderContext - methods, by locally caching Settings values -#1633 - Improve the performance of CursorImpl.CursorIterator by - setting Record values by index rather than by Field -#1635 - Improve the performance of Factory.fetch(ResultSet) by - caching data type normalisation regex in FieldTypeHelper -#1650 - jOOR Fix #16: Can't call Reflect.create(A, B, null) -#1660 - Factory.renderContext().castMode(CastMode.NEVER) - .render(query) doesn't work. CastMode is not applied -#1667 - Bad variable binding when NULLS FIRST, NULLS LAST is - simulated in SQL Server and other databases -#1673 - Result.formatXML() and Result.intoXML() do not render - namespaces correctly -#1683 - Oracle code generation regression for 10g. No such column - ALL_PROCEDURES.OBJECT_ID -#1693 - Cannot bind UDT values from other schemata to stored - procedures -#1730 - Compilation errors in SQLite generated code when flag - is set to true - -Version 2.4.0 - July 8, 2012 -================================================================= - -This release's main new feature is jOOQ's added convenience in -Factory initialisation for those users who get their database -connectivity through JDBC DataSources. If supplied with a -DataSource, a jOOQ Factory will handle the Connection lifecycle -internally, closing the Connection when no longer needed. - -The H2 MERGE statement syntax is now supported and simulated in -other databases, for those users that prefer its more intuitive -syntax over the SQL standard. - -The code generator now also allows for generating interfaces and -DAOs per table. DAO generation was previous discussed on the user -group and seen in a competitor product called OneWebSQL. - -The jOOQ Console now supports breakpoints for even more effective -SQL development - -Features and improvements -------------------------- -#1141 - Add Result.intoResultSet() to wrap a Result in a JDBC - ResultSet -#1253 - Avoid JDBC escape syntax for date/time literals -#1280 - Generate DAO classes and interfaces for POJOs -#1404 - Document the lifecycle of an ExecuteListener in the - Javadoc -#1411 - Add support for Postgres "any" data type (with quotes!). - This seems to map well to java.lang.Object -#1418 - Support case-insensitive schema names in code generation -#1419 - Add some WARN-level logging when the source-code - generator doesn't generate any artefacts -#1423 - Add Field.likeIgnoreCase() to support Postgres' ILIKE - operator -#1424 - Add Factory(DataSource) and similar constructors -#1427 - Add Factory.batchStore(Collection>) for convenience -#1428 - Add DataType.convert(Object...) and - DataType.convert(Collection) for convenience -#1431 - Add org.jooq.Name Factory.name(String) to contruct - QueryParts that are escaped according to - Settings.getRenderNameStyle() -#1432 - Add Factory.fetch(String, QueryPart...) and - Factory.execute(String, QueryPart...) and similar methods - to support arbitrary QueryParts in plain SQL -#1434 - Add UniqueKeyDefinition.isPrimaryKey() for completeness -#1438 - Add Result Factory.fetchFromCSV(String) -#1440 - Add top-level pom.xml for jooq-parent artefact (GitHub - Issue #14) -#1446 - Converting arbitrary strings to Number / Date should - return null, instead of throwing an exception -#1449 - Generate some meaningful Javadoc into the generated - [schema-name]Factory classes -#1454 - Add line breaks to generated Javadoc where appropriate -#1463 - Add option to let generated Record / POJO objects - implement a common generated interface -#1470 - Support interface types in ResultQuery.fetchInto(Class), - Result.into(Class), and Record.into(Class) methods, - returning a proxy -#1471 - Upgrade internal jOOR dependency to jOOR 0.9.4 -#1473 - Add IdentityDefinition to jooq-meta -#1501 - Add support for conversion of String to - java.sql.{Date, Time, Timestamp}. GitHub issue #22 -#1504 - Document behaviour of fetch() and fetchOne() in case jOOQ - cannot fetch actual records -#1509 - Minor improvements in the generator source code. GitHub - pull request #23 -#1510 - Generate additional setters for foreign keys, accepting - records as arguments -#1521 - Expose Connection methods, such as commit(), rollback() - and similar transaction-related methods in Factory -#1523 - Support ROW_NUMBER() OVER() for the latest version of - Derby and H2, which support it -#1524 - Simulate ROW_NUMBER() OVER() in HSQLDB using ROWNUM() -#1528 - Let generated interfaces extend Serializable -#1532 - Clarify the lifecycle of Configuration.data in the - Javadoc -#1534 - Generate more meaningful Javadoc where "an uncommented - item" stands now -#1536 - Add documentation to the FOR UPDATE OF clause, indicating - that DB2 may have stricter requirements regarding - updatability of fields -#1541 - Add support for the H2 MERGE syntax - GitHub Issue #18 -#1542 - Simulate the H2 MERGE syntax in other dialects supporting - the SQL standard MERGE statement - GitHub Issue #18 -#1545 - Website and Documentation anchors should be links to - themselves, visually recognisable - -Features and improvements (jOOQ Console) ----------------------------------------- -#1398 - Allow for adding breakpoints in jOOQ Console - -API changes (backwards-compatible) ----------------------------------- -#1408 - Relax bounds of in Factory.truncate() to Record, - instead of TableRecord -#1429 - Change Convert.convert(List, XXX) to accept Collection - instead of List - -Bug fixes ---------- -#1020 - Improve Oracle's LIMIT .. OFFSET clause simulation. - GitHub Issue #16 -#1358 - Compilation errors in generated source code when Oracle - overloaded procedures collide with procedures that end - with numbers -#1437 - Error in Javadoc of FactoryOperations.fetchOne(). This - method may return null -#1441 - Performance issue with AbstractDataType.convert(Object). - Avoid conversions when they're obviously unneeded -#1448 - Handle String to Enum conversion (when Java Enums are - stored as Strings in the database) - GitHub issue #15 -#1459 - Generated Keys.java static class too large (static - initialiser can become bigger than 64kb) -#1460 - Table.getReferencesTo(Table) doesn't work correctly for - aliased tables -#1461 - Exception when rendering of {fn datetimeadd(...)} for - HSQLDB and Derby -#1462 - Document missing GeneratorStrategy features, such as - getJavaClassImplements() -#1465 - Custom generator strategy's printImplements() is called - with Mode == RECORD for tables -#1478 - Caching SQLDialect in AbstractDatabase heavily improves - code generation performance -#1483 - Inefficient cloning of default settings using JAXB - unmarshalling leads to non-negligible overall overhead. - Use serialisation instead (short of a useful XJC clone - plugin) -#1489 - Fix manual where it claims to throw SQLExceptions -#1490 - Compilation error when a SQL Server stored procedure has - a parameter named "value" -#1493 - Bad syntax for SELECT /*+hint*/ DISTINCT ... in Oracle -#1498 - jOOQ does not compile using JDK 7 / JDBC 4.1. GitHub - Issue #24 -#1499 - Generated members of Tables.java are not final -#1505 - Bad exception message when ON DUPLICATE KEY IGNORE cannot - be simulated -#1515 - Splitting of large NOT IN conditions is wrong. The parts - should be connected with AND, not with OR -#1522 - fetch().into(Table) doesn't initialise records correctly, - such that subsequent calls to store() will execute an - INSERT, rather than an UPDATE -#1525 - Generate missing Javadoc to getters for procedure OUT - parameters -#1529 - Factory.batchStore() logs all single statements to DEBUG - output. Find a more accurate log output -#1537 - Factory.batchStore() renders bad SQL for Postgres. The - RETURNING clause is not allowed in batch INSERTs - -Version 2.3.1 - May 11, 2012 -================================================================= -This is an important patch release fixing some regressions in the -code generator for the Postgres dialect. With 2.3.0, it was no -longer possible to generate schemata of which the database user -was not the owner. - -Bug fixes ---------- -#1334 - Fix inaccurate simulation of TRUNC(number, decimals) for - Derby -#1403 - Documentation bug: ctx.statement() can be replaced in - executeStart(). This is not documented -#1406 - Compilation errors in generated source code when Postgres - stored procedure parameter is called "NAME" -#1407 - Compilation errors in generated source code when Postgres - data-type is "any" (with quotes!) -#1409 - Postgres code generation broken when not connecting with - the owner of a schema - -Version 2.3.0 - May 6, 2012 -================================================================= - -This is a minor feature increment release, featuring many useful -API enhancements, some new functions, some new syntax support -elements, improved source code generation and a lot of -improvements on the jOOQ Console, thanks to Christopher Deckers. - -The updated jOOQ Console now allows for filtering incoming -statements directly on the server side, using regular expression -filters on statement text and other features. These improvements -are a part of a general strategy to introduce breakpoints and -more sophisticated debugging capability to the jOOQ Console. - -Features and improvements -------------------------- -#597 - Add support for Oracle KEEP (DENSE_RANK FIRST...) - aggregate function clause -#910 - Add ExecuteListener extension to allow for overriding - exception translator to handle vendor-specific error - codes -#1286 - Add "renderSchema" flag to Settings, to completely - disable rendering of schema names -#1293 - Generate setter methods for JAXB annotated configuration - properties -#1295 - Add support for MySQL's INSERT IGNORE clause -#1296 - Simulate the FOR UPDATE clause for SQL Server, CUBRID, - using JDBC's ResultSet.CONCUR_UPDATABLE -#1302 - Add Factory.inline() to allow for flagging inline-only - "bind values" -#1303 - Add connection-less Factory constructors for convenience, - when jOOQ is only used as a SQL query builder -#1304 - Add option to generate JSR-303 @NotNull and @Size - annotations to generated POJO's -#1307 - Let HSQLDB dialect render NVL2() as NVL2() instead of - CASE expression -#1312 - Allow for omitting , and generate all - available schemata in that case -#1315 - Let generated factories use their associated Schema as - the Settings' RenderMapping's defaultSchema -#1319 - Move jooq-spring's FactoryProxy to the core jooq project -#1322 - Add Factory.dateAdd() and timestampAdd() for convenience -#1327 - Add DataType.isLob() -#1328 - Add Field inline(char), inline(Character), - inline(CharSequence) for convenience -#1333 - Add support for the Oracle TRUNC function, for numeric - arithmetic -#1336 - Let Record.into(Class) and similar methods accept - "immutable" classes, i.e. setter-less classes that take - several constructor arguments -#1340 - Use Constructor.setAccessible(true), if no default - constructor is available on the target type of - Record.into(Class) -#1342 - Improve Javadoc on Factory.function(). Document arguments -#1349 - Add support for the CUBRID Click-Counter INCR() -#1352 - Allow for creating syntax-error and SQL-injection safe - qualifiers for org.jooq.Field and org.jooq.Table -#1361 - Add Factory.batchStore(TableRecord...), to allow for - batch UPDATE/INSERTs of many records -#1367 - Make configured ExecuteListeners default constructors - accessible -#1366 - Let org.jooq.Batch extend Serializable -#1378 - Upgrade internal jOOR dependency to jOOR 0.9.3 -#1379 - Upgrade internal jOOU dependency to jOOU 0.9.1 -#1390 - Add RenderContext.qualify() to indicate whether - QueryParts should render qualified versions of themselves - or not - -Features and improvements (jOOQ Console) ----------------------------------------- -#1242 - Upgrade jOOQ Console dependency on RSyntaxTextArea from - 1.5 to 2.0.2 -#1249 - Allow for filtering incoming statements in jOOQ Console -#1393 - Implement a communication protocol between Console server - types and Console client types to allow for more - sophisticated functionality - -API changes (backwards-compatible) ----------------------------------- -#1310 - Deprecate Factory.literal() in favor of Factory.inline(), - and Factory.field() -#1368 - Promote AbstractQuery.isExecutable() to the public API - -Bug fixes ---------- -#989 - INSERT and UPDATE statements always render non-qualified, - escaped field names. This may cause trouble when using - plain SQL fields -#1109 - Standalone TABLE or VARRAY types are not correctly - initialised before referencing tables load them -#1279 - NullPointerException when leaving empty -#1283 - The LIKE escape character needs escaping, too, in - contains(), startsWith(), endsWith() -#1306 - Add missing INTERVAL data types to HSQLDBDataType -#1308 - Oracle's DataTypeDefinition reports the length of a BLOB - / CLOB data type to be 4000 -#1313 - and match only table names, not - fully qualified names -#1323 - Add support for byte[] in Postgres UDTs -#1324 - Code generation error in Oracle 10g when generating - stored procedures -#1326 - Error when deserialising BLOBs from Oracle UDTs -#1329 - NullPointerException when passing null to - timestampDiff(Field, Field) -#1343 - Regression in insertInto(...).values(...). Cannot pass - Field to values() -#1344 - Initialise Result ArrayLists to their expected size, if - that size is known. -#1360 - jOOR issue 12: "Don't reset the accessible flag to false, - if setting it to true is required, to avoid race - conditions in concurrency contexts" -#1371 - Missing conversion when using unsafe Field types in - BATCH statements -#1376 - Oracle UDTs in REF CURSORs are not deserialised correctly - from procedure OUT parameters -#1377 - Oracle UDTs are not deserialised correctly when the same - UDT name is present in multiple schemata -#1394 - NullPointerException when omitting element in - code generation configuration - -Version 2.2.1 - April 12, 2012 -================================================================= - -This is a minor patch release, fixing some issues related to the -code generation of the new CUBRID integration as well as other, -minor issues. Upgrade if you're using CUBRID - -Bug fixes ---------- -#1287 - Remove oracle.sql dependency also from OSGi information - in pom.xml -#1288 - SQL syntax errors from sequences when using RenderMapping - with defaultSchema -#1289 - DefaultBindContext logs as Util.class -#1297 - Compilation error in CUBRID generated artefacts - referencing OBJECT types -#1298 - Avoid source code generation errors when generating code - for unknown, dialect-specific data types - -Version 2.2.0 - April 09, 2012 -================================================================= - -Finally, jOOQ has added support for another database, and a very -promising one, that is. http://www.cubrid.org is a surprisingly -original mixture of a relational and object-oriented database -where tables and classes are synonyms, so are records and -instances. The CUBRID database has a high level of compatibility -with MySQL and is aimed at MySQL users wanting more performance -for their web applications. For details, see the slides here: - -http://www.slideshare.net/cubrid/growing-in-the-wild-the-story-by-cubrid-database-developers - -jOOQ is proud to have become a CUBRID partner, looking forward -to further cooperation with CUBRID in the near future. - -Apart from that, jOOQ now fully supports SQL standard INTERVAL -data types. With JDBC and JPA lacking official support for this, -jOOQ aims for becoming the tool of choice for vendor-specific -date time arithmetic. True INTERVAL data type support is given in -HSQLDB, Ingres, Oracle, Postgres databases. Besides that, CUBRID -and MySQL support INTERVAL data type arguments in functions. In -other dialects, jOOQ simulates DATEADD(), TIMESTAMPADD(), -DATEDIFF(), TIMESTAMPDIFF(). - -For jOOQ's OLAP friends, there is now also support for the Oracle -LISTAGG function (LIST() in Sybase, XMLAGG() in DB2, STRING_AGG() -in Postgres, GROUP_CONCAT() in CUBRID, H2, HSQLDB, MySQL). -LISTAGG is an "ordered aggregate function", meaning that the -aggregation is done using a specific ordering. Keep an eye out -for more such function support in future versions. - -Features and improvements -------------------------- -#566 - Add support for INTERVAL data types -#585 - Add support for DATE, TIME and INTERVAL arithmetic -#1183 - Add support for DEFAULT values in Oracle stored procedure - parameters -#1243 - Let generated POJOs (and Records) extend base classes - and implement interfaces -#1252 - Avoid JDBC escape syntax for Oracle stored procedure - calls. Generate PL/SQL syntax, instead -#1255 - Let generated Tables contain a public default constructor - to be able to extend those classes - Github issue #12 -#1257 - Add CUBRID support -#1268 - Add Factory.field(String, QueryPart...) to generate - custom clauses -#1269 - Add YEAR(), MONTH(), DAY(), HOUR(), MINUTE(), SECOND() - function support as shortcuts for EXTRACT() -#1273 - Simulate GROUP_CONCAT() aggregate function using Oracle's - LISTAGG() function, where available -#1274 - Add support for the Oracle LISTAGG(...) WITHIN GROUP - (ORDER BY ..) [ OVER (..) ] aggregate / analytic function -#1275 - Simulate Sybase LIST() aggregate function using Oracle's - LISTAGG() function -#1276 - Simulate Oracle's LISTAGG() in DB2 using XMLAGG(), - SUBSTR() and CONCAT() -#1278 - DEBUG log both executed SQL and SQL with inlined bind - values - -API changes (backwards-compatible) ----------------------------------- -#1262 - Pull up OracleFactory.prior() and other CONNECT BY - related methods to Factory - -Bug fixes ---------- -#1241 - Wrong variable binding when comparing CHAR columns in - Derby and DB2 without explicit casting to VARCHAR -#1244 - Cannot override class name in GeneratorStrategy in - Mode.POJO -#1248 - Setting both false and - true leads to compilation errors -#1256 - Fixed code generation issue with H2 user defined - functions returning VARCHAR -#1263 - Pass fetchsizes <= 0 to the JDBC driver (for vendor- - specific MySQL compatibility) -#1270 - Most databases allow for multiple identical foreign keys. - This leads to compilation errors in generated source code - -Version 2.1.0 - March 18, 2012 -================================================================= - -With this version, jOOQ attempts to follow versioning rules -imposed by semantic versioning: http://semver.org/ -There will be 1 minor release per month, and a couple of patch -releases per year, depending on popular demand - -The main improvements for this release include - -- The possibility of providing jOOQ with a custom type mapping. - You can now define your own Converter types that are used by - jOOQ to map a database's SQLDataTypes to your custom types. - This is particularly useful for Java's enums. Read more about - custom converters in the manual: - http://www.jooq.org/manual/ADVANCED/CustomTypes/ - -- There are a lot of new runtime configuration options to control - the SQL style of SQL rendered by jOOQ. You can now specify - whether table/column names should be quoted / capitalised / - lower-cased, whether SQL keywords should be capitalised or not, - etc... - -- The handling of NULL has been improved in favour of using jOOQ - as a SQL builder library (e.g. along with Spring for execution) - NULL is no longer inlined, but bound as a variable. - -- jOOQ now supports simulation of the relational division - operation using an intuitive syntax. Read more about the - relational division here: - http://en.wikipedia.org/wiki/Relational_algebra#Division - -Features and improvements -------------------------- -#161 - Add runtime configuration to pretty print rendered SQL -#349 - Add SQLite relations support -#491 - Add runtime configuration for SQL keyword style (upper - case, lower case) -#521 - Add runtime configuration for SQL reference style (upper - case, lower case, as-is, quoted) -#1150 - Add code generation option to disable generation of - records -#1181 - Add support for SQL Server data types timestamp and - rowversion -#1188 - Load default Settings from the classpath at - /jooq-settings.xml, or from -Dorg.jooq.settings -#1193 - Specify main-class in jOOQ Console's manifest.mf and - include dependency in jar file -#1194 - Add ColumnDefinition.isNullable() -#1202 - Add support for the relational division operation: - A.divideBy(B).on(A.ID.equal(B.A_ID)).returning(A.X, ...) -#1207 - Add Factory.batch(Collection) for - convenience -#1208 - Render @javax.persistence.Column(nullable = false) - property, if available -#1209 - Render @javax.persistence.Column(length, precision, - scale) properties, if available -#1215 - Add org.jooq.Converter for custom type mapping -#1216 - Overload Record, Result.getValue() and .setValue() - methods to accept a Converter -#1217 - Add EnumConverter as a base type for custom enum - converters -#1218 - Add code generation options to generate - referencing a Java type and a Converter -#1224 - Add DataTypeDefinition.getLength() to jooq-meta's type - system -#1233 - Support custom JDBC properties for jooq-codegen -#1234 - Add Database.getTable(SchemaDefinition, String, boolean) - to fetch tables case-insensitively -#1239 - Add Factory.fetchLazy(String, Object...) - -API changes (backwards-compatible) ----------------------------------- -#1191 - Deprecate ConfigurationRegistry and replace by equivalent - ExecuteListener feature -#1219 - API Bug: Cannot use LIMIT .. OFFSET along with FOR UPDATE - -Bug fixes ---------- -#625 - Remove dependency from generated Routines to the - generator's SQLDialect -#1128 - NULL is inlined in INSERT statement instead of binding it - as a variable. This can cause issues when using jOOQ with - Spring -#1137 - Exclude MySQL column-level enum types when that column is - overridden by a -#1158 - Derby cannot handle inlined NULL literals in some - contexts -#1180 - Execute BatchMultiple (multi-query batch query), when - executing BatchSimple (single-query, multi-bind-value - query) with StatementType == STATIC_STATEMENT -#1189 - TableMapping regression for SQLite database -#1190 - Cannot store SQLite records when using - StatementType.STATIC_STATEMENT -#1199 - Table.getFields() returns an internal representation of a - table's field list. Make generated tables immutable! -#1200 - Internal API leak exposed through covariance in - AbstractType.getFields() -#1211 - Enforce method name disambiguation also when using custom - strategies in jooq-codegen -#1212 - Enforce identifier disambiguation also when using custom - strategies in jooq-codegen -#1221 - Incorrect ExecuteListener invocation for INSERT .. - RETURNING. executeStart() and executeEnd() are omitted -#1223 - Cache ExecuteListener classes for performance -#1225 - Bind NULL byte[] as java.sql.Types.BINARY instead of - BLOB in Postgres, to avoid errors -#1226 - Bind NULL UDTs with their associated type name in Oracle -#1232 - SQLException when Factory.fetch() does not return a - ResultSet -#1237 - Don't generate enum classes for columns in MySQL tables - that are excluded from code generation - -Version 2.0.5 - February 26, 2012 -================================================================= - -This release finally introduced basic runtime configuration -features for the jOOQ Factory. This configuration now includes: - -- Execute listener and SQL tracing support. jOOQ allows you to - hook your own listeners into jOOQ's query execution engine to - be notified of all sorts of events -- The existing SchemaMapping features. They are now part of the - runtime configuration -- StatementType settings. Specify whether a Factory should - execute java.sql.PreparedStatements (with bind variables) or - static java.sql.Statements with inlined variables. - -The runtime configuration is documented here: - -http://www.jooq.org/manual/JOOQ/Factory/ - -The listener and tracing support has been requested by -Christopher Deckers, a new jOOQ user who has had the courtesy to -contribute the new jOOQ Console, which is documented here: - -http://www.jooq.org/manual/ADVANCED/ExecuteListener/ - -Apart from that, another long-requested feature is now fully -implemented: The GeneratorStrategy, allowing for custom naming -strategies in generated source code. This will allow for -generating custom table / record class name prefixes / suffixes, -as well as overriding the default behaviour for rendering UPPER, -lower and CamelCase artefacts. See the manual for details: - -http://www.jooq.org/manual/META/Configuration/ - -Features and improvements -------------------------- -#93 - Add Field.equalIgnoreCase(), Field.notEqualIgnoreCase() -#408 - Add class prefixes, suffixes and other options to the - code generator -#492 - Add runtime configuration -#1107 - Let Field.contains() support the Postgres ARRAY @> ARRAY - operator -#1140 - Add ResultQuery.fetchResultSet() to return the underlying - JDBC result set -#1143 - Add Result.isNotEmpty() for convenience -#1145 - Add runtime configuration to specify whether jOOQ should - execute java.sql.PreparedStatement (with bind variables) - or a java.sql.Statement (with inlined parameters) -#1146 - Add Query.getSQL(boolean) to indicate that bind values - should be inlined (as a convenience for - Factory.renderInlined(QueryPart)) -#1148 - Add Cursor.resultSet() to expose the underlying ResultSet -#1149 - Allow for optional - "http://www.jooq.org/xsd/jooq-codegen-2.0.4.xsd" - namespace in jooq-codegen configuration -#1152 - Add & org.jooq.EnumType> - E MySQLFactory.enumType(Class, int) for enum reverse - lookups of MySQL-specific enums -#1159 - Support matching numbers with LIKE, e.g. ID LIKE '%33%' -#1160 - Implement Field.contains(), .startsWith(), .endsWith() - for numeric values, too -#1161 - Use reflection to remove compile-time dependency on - ojdbc for creating ARRAYs -#1162 - Integrate jOOR into jOOQ for simpler reflection -#1164 - Distinguish between Definition.getInputName(), - .getOutputName() -#1165 - Add constraint name to generated javadoc -#1167 - Trivial issue with org.jooq.Factory.exists Javadoc - - GitHub issue #10 -#1169 - Add Configuration.setData(), getData() to convey custom - data in a configuration's lifecycle -#1172 - Add runtime configuration to deactivate JooqLogger -#1177 - Add jOOQ-Console module to jOOQ -#1184 - Add DataType.isArray() - -API changes (backwards-compatible) ----------------------------------- -#1142 - Rename Result.exportXML() to Result.intoXML() to stay - more consistent -#1151 - Deprecate SchemaMapping in favour of new runtime - configuration - -Bug fixes ---------- -#978 - Schema.getTables() and similar methods return empty lists - when Schema is mapped with SchemaMapping -#1153 - Bad inlining of booleans in Sybase ASE / DB2 / Oracle - SQL Server / SQLite -#1154 - Bad inlining of byte[] in most dialects -#1155 - byte[] are erroneously converted to String when using - Record.intoArray() -#1156 - Bad inlining of DATE / TIME / TIMESTAMP data types in - Ingres (and other dialects, when the setting differs from - the default) -#1166 - Some generated Javadoc uses naming strategy or plain - output name, instead of qualified output name -#1168 - Oracle packages are generated as static, instead of - static final -#1175 - Factory.use() seems to render SQL with the Schema name - still present -#1179 - Oracle-generated ArrayRecords need a reference to - org.jooq.Schema to read TABLE of OBJECT from stored - procedures - -Test cases ----------- -#1147 - Add integration tests for executing SQL generated using - Factory.renderInlined() - -Version 2.0.4 - February 12, 2012 -================================================================= - -This release introduced many improvements to source code -generation. These improvements include: - -- Maven and standalone code generation now use the same XML - configuration, which is read by jOOQ-codegen using JAXB. This - allows for more complex configuration elements in the future -- jOOQ-codegen can now handle multi-schema databases and generate - code for tables referencing tables from other schemata. This - is integration tested against the SQL Server AdventureWorks - database -- jOOQ now allows to generate simple POJOs in addition to Records - and to annotate both POJOs and Records with JPA annotations - such as @Entity, @Table, @Id, @Column, @UniqueConstraint, etc. - -You can migrate your existing .properties configuration by running -> org.jooq.util.GenerationTool /your.properties migrate - -Besides that, there is a lot of ongoing work to improve the -integration of Oracle's TABLE and VARRAY types. - -Features and improvements -------------------------- -#8 - Add JPA annotations to generated POJOs / Records -#282 - Add support for multi-schema databases -#287 - Add support for Oracle TABLE types -#395 - Use XML configuration file instead of properties file -#1089 - Add Field.contains(), .startsWith(), .endsWith() as a - convenience for Field.like() (including escaping) -#1092 - Move master data table configuration from - generator.generate to generator.database namespace -#1093 - Add support for generator.strategy in Maven source code - generation -#1094 - Add support for generator.database.date-as-timestamp in - Maven source code generation -#1095 - Move generator.generate.unsigned-types to - generator.database namespace -#1096 - Add support for generator.generate.unsigned-types in - Maven source code generation -#1103 - Add support for SQL Server data type uniqueidentifier -#1106 - Add Factory.escape(Field, char) for use with LIKE -#1108 - Add support for multi-schema databases using Maven code - generation -#1115 - Add support for Oracle VARRAY/TABLE of OBJECT types -#1127 - Add support for POJO classes generation -#1129 - Allow for using Param in LIMIT .. OFFSET clauses -#1132 - Add RenderContext.castMode() to allow for avoiding casts - where this is not really needed -#1136 - Add generation option to enable/disable generating - navigation methods - -Bug fixes ---------- -#1099 - Derby generated artefacts are not sorted alphabetically -#1101 - Internal API leak exposed through covariance in - AbstractTable.joinXXX() methods -#1110 - VARRAY element type information is lost when unnesting - VARRAY's in Oracle -#1111 - VARRAY element type information is lost when unnesting - VARRAY's returned from functions in Oracle -#1114 - Syntax error when unnesting TABLE of OBJECT in Oracle. - The unnested table contains several columns but jOOQ only - unnests "COLUMN_VALUE" -#1117 - NullPointerException when passing an ArrayRecord - containing a null array to a stored function in Oracle -#1125 - Postgres needs casting for date time data types in - queries like SELECT ? FROM DUAL -#1131 - DB2: [Noauthorized routine named "LIKE" of type - "FUNCTION" having compatible arguments was found] when - using Field.like(concat(x, y)) -#1133 - Compilation errors in generated source code if the same - constraint name exists in several schemata -#1134 - NullPointerException in code generation when a foreign - key constraint references a table from another schema - that is not being generated -#1135 - Generated Javadoc references inputSchema instead of - outputSchema - -Test cases ----------- -#1009 - Add more integration tests for proper handling of - java.sql.Date, Time, Timestamp -#1090 - Run jOOQ tests against AdventureWorks SQL Server sample - database -#1105 - Add integration tests for multi-schema source code - generation and querying -#1122 - The 10k lines of integration test code are too heavy for - the compiler. Create test modules with fewer lines of - code, each. - -Version 2.0.3 - January 29, 2012 -================================================================= - -This release focuses on increased compatibility between various -SQL dialect integrations as far as ARRAY and JOIN support is -concerned: - -- ARRAY types are only available in H2, HSQLDB, Oracle, Postgres. - Nevertheless, they can be somewhat simulated in other dialects - using nested selects with UNION ALL. Increased compatibility - leads to a nicer API, where ARRAYs are used along with ALL/ANY - quantifiers, for instance. - -- JOIN syntaxes can be quite powerful in SQL. Apart from - simulating NATURAL JOIN, JOIN USING clauses, as well as a - synthetic "KEY JOIN" syntax, jOOQ now also supports nesting - JOIN expressions to create more complex table sources. See a - recent blog post on the subject here: - -http://blog.jooq.org/2012/01/15/lets-revise-the-sql-from-clause/ - -Features and improvements -------------------------- -#578 - Add KEY JOIN syntax to simulate joining using generated - foreign keys -#577 - Simulate NATURAL JOIN syntax, where this is unavailable -#582 - Simulate JOIN USING syntax, where this is unavailable -#671 - Allow for nesting JOIN clauses -#676 - Add Table.join() methods to create more flexible table - sources -#993 - Add Field.equalAny(T[]), .equalAny(Field) methods -#1048 - Simulate (array) syntax for dialects - that do not support arrays -#1051 - Add Factory.execute(String, Object...) as a convenience - method for Factory.query(...).execute() -#1055 - Simulate Factory.table(Object[]) and table(List) using - UNION ALL in dialects that do not support arrays -#1060 - Improve debug logging of H2 arrays. The syntax is not - ARRAY[1, 2], but (1, 2) -#1065 - Add OracleFactory.sysContext(String, String) to support - Oracle's SYS_CONTEXT function -#1069 - Add support for INSERT INTO table(field1, field2, ...) - SELECT syntax - as opposed to the existing INSERT INTO - table SELECT -#1072 - Add support for LIKE .. ESCAPE .. syntax -#1074 - Add Field.notBetween(T, T) for convenience -#1080 - Add support for JDBC's Statement.setFetchSize() in - ResultQuery.fetchLazy() -#1082 - Add some more DEBUG logging in AbstractResultQuery - -API changes (backwards-compatible) ----------------------------------- -#1059 - Change SelectFromStep.from(Collection>) to - from(Collection>) - -API changes (backwards-incompatible) ------------------------------------- -#1087 - Change the NTILE function to return Field - instead of Field - -Bug fixes ---------- -#1071 - Make Sequence Serializable -#1081 - Derby error in NULL handling when simulating unnested - arrays that contain NULL values -#1084 - Bind index mismatch in val(null).equal(null) and in - val(null).notEqual(null) -#1091 - Add missing @Support annotations on Table.crossJoin() - methods - -Test cases ----------- -#1026 - Add integration tests for NTILE window function and - document compatibility -#1073 - Add integration tests for NOT IN queries holding NULL - arguments - -Version 2.0.2 - January 8, 2012 -================================================================= - -This is a maintenance release for jOOQ 2.0. The main improvements -include - -- The whole jOOQ API is now annotated with a new org.jooq.Support - annotation to help you assess whether a certain SQL clause is - available in your database or not. This is particularly useful - when your application should support several databases at once - (e.g. MySQL, Postgres, Oracle) -- The Oracle PIVOT clause is now formally supported for advanced - statistical queries in Oracle. This clause will be simulated in - other dialects in the future. -- The DATE data type can be mapped to TIMESTAMP. This important - when you query a legacy Oracle database, where DATE columns - can also contain time information -- Several convenience methods have been added for more fluent - syntax, when using plain SQL result queries, subqueries as - tables, or when unnesting arrays in ANY() and ALL() quantifiers - -Further type mapping support is still experimental. An official -cooperation with MinuteProject for source code generation is -being analysed. With MinuteProject, many source code generation -issues could be addressed centrally, as MinuteProject specialises -in source code generation: - -http://minuteproject.wikispaces.com/ - -Features and improvements -------------------------- -#595 - Add support for Oracle's PIVOT clause -#869 - Add support for using ANY, ALL with arrays, not just with - subselects -#1007 - Formally document the API methods to indicate whether - something is supported by any given SQL dialect -#1011 - Add code generation configuration parameter to avoid - generating @Generated annotation -#1019 - Render LIMIT x OFFSET y also for MySQL, instead of - LIMIT y, x -#1022 - Add missing Sybase ASE implementation for Factory.use() -#1024 - Add Factory.resultQuery(String, Object...) to allow for - arbitrary execution modes of plain SQL queries (lazy, - later, into, array, etc) -#1025 - Add missing SQLite implementation for Factory.deg() and - Factory.rad() -#1033 - Generate table comments into generated Tables.java as - Javadoc -#1040 - Add Object[][] Result.intoArray() and - Object[] Record.intoArray() for convenience. Let - E Record.into(Class) also support array types. -#1041 - Add Table Factory.table(Select) convenience - method for more fluency -#1042 - Add support for DISTINCT keyword in SUM, AVG, MIN, MAX - aggregate functions -#1046 - Generate Ingres table and column comments in generated - source code (only Ingres 10) - -API changes (backwards-compatible) ----------------------------------- -#1050 - Deprecate usage of SOME quantifier in predicates, such as - equalSome() - -API changes (backwards-incompatible) ------------------------------------- -#1036 - Fixed API typo in - WindowsRowsStep.rowsBetweenUnboundedFollwing() -#1037 - The fluent API allows for JOIN clauses without FROM - clause - -Bug fixes ---------- -#1010 - The MERGE INTO .. WHEN NOT MATCHED THEN INSERT .. syntax - may cause type-safety issues in some databases. VALUES - should be converted before binding -#1014 - FindBugs: Latent risk of infinite recursion due to typo - in QueryPartList.retainAll(); -#1015 - FindBugs: 7 occurrences of "Bad attempt to compute - absolute value of signed 32-bit hashcode". In extreme - cases, this could lead to SQL syntax errors -#1016 - The Oracle CONNECT BY cond1 AND cond2 syntax erroneously - creates a WHERE cond2 CONNECT BY cond1 statement -#1028 - Syntax errors when using untyped param() in HSQLDB (and - other strongly typed dialects) -#1029 - Postgres can't bind NULL values in cases, where bind type - is Object.class and bind value was created with - Factory.param() -#1030 - UnsupportedOperationException when calling - Query.bind(int, Object) on a query containing plain SQL - fields -#1031 - Incorrect debug logging when plain SQL QueryParts like - field("?") bind null values -#1032 - Incorrect debug logging when plain SQL QueryParts contain - String literals, such as 'Hello? Anyobody out there?' -#1047 - Field.notEqualAny() erroneously renders <> ALL() - -Test cases ----------- -#1021 - Add explicit integration tests for - LEFT|RIGHT|FULL OUTER JOIN - -Version 2.0.1 - December 23, 2011 -================================================================= - -This is a maintenance release for jOOQ 2.0. The main improvements -include - -- Better integration for using jOOQ with Spring Data. This - includes support for named parameters, as well as allowing to - change bind values on previously constructed Query objects -- The MERGE statement has been enhanced for better integration - with Oracle. -- jOOQ is now ready to use with Scala / Groovy - -For more information about using jOOQ with Scala, see this blog -post: -http://blog.jooq.org/2011/12/11/the-ultimate-sql-dsl-jooq-in-scala/ - -There is now also experimental support for a custom type mapping. -This mapping allows to rewrite data types at code generation time -as well as to specify custom enum data types (e.g. boolean Y/N). -Not all integration tests run smoothly for custom data types, -hence, this feature is not yet fully supported. - -Features and improvements -------------------------- -#691 - Add support for Oracle CURSOR REF IN / INOUT parameters -#677 - Add type-mapping configuration, enforcing types for - columns -#947 - Add custom type mapping support (experimental) -#968 - Allow for custom enum types, configured in the code - generator (experimental) -#974 - Add Schema.getTable(String), getSequence(String), - getUDT(String) for better runtime Schema meta-navigation -#975 - Add Sequence.getName(), getSchema(), getDataType() -#980 - Add support for named parameters, to better interact with - Spring -#991 - Add Query.bind(String, Object) and bind(int, Object) to - easily modify existing bind values -#992 - Document thrown DataTypeException in Convert methods -#998 - Enhance MERGE statement for Oracle extensions: - WHEN MATCHED THEN UPDATE .. WHERE .. DELETE WHERE .. - WHEN NOT MATCHED THEN INSERT .. WHERE .. -#1000 - Add support for MySQL's INSERT INTO .. SET .. syntax in - MERGE statement's WHEN NOT MATCHED THEN INSERT clause - -API changes (backwards-compatible) ----------------------------------- -#981 - Cannot insertInto(table("my_table")), as plain SQL tables - return Table, not Table. Relax - bound on R -#988 - Change Factory.field(String) to return Field - instead of Field -#999 - Make MERGE's WHEN MATCHED .. and WHEN NOT MATCHED .. - clauses optional -#1001 - Identity.getField() should return TableField - instead of Field -#1006 - Add Factory.value(...) as a synonym for Factory.val(...) - for increased Scala / Groovy compatibility - -Bug fixes ---------- -#973 - EnumType renders name() instead of getLiteral() in - formatXXX() methods -#977 - EnumType renders name() instead of getLiteral() in - Convert.convert() method -#979 - Record.from() sets all changed flags to true. That's not - necessarily correct in the event of storing the record - back to the DB -#985 - AbstractRecord.equals() does not correctly compare - arrays. Compare them using Arrays.asList() -#986 - Postgres / DB2 / Sybase ASE foreign-key namespace is - unique-per-table. jOOQ forces all foreign keys from all - tables into the same namespace -#990 - Problems when encoding arbitrary byte[] as String(byte[]) - in inlined SQL. This can cause issues when DEBUG-level - logging is activated -#995 - Routines don't respect SchemaMapping - Github issue #8 -#1002 - TableRecord.storeUsing() doesn't update IDENTITY column - values, if the column is not part of the main unique key -#1003 - Sybase / SQL Server / MySQL / Ingres / H2 / Derby's - INSERT .. RETURNING simulation returns null if a table - has an IDENTITY column, but no primary/unique key -#1005 - The INSERT INTO .. VALUES .. syntax may cause type-safety - issues in some databases. VALUES should be converted - before binding - -Test cases ----------- -#984 - Detach IDENTITY column tests from UNIQUE KEY tests, - create a dedicated test suite instead - -Version 2.0.0 - November 25, 2011 -================================================================= -This release is a fresh start in many areas of jOOQ, adressing -issues that have been requested by users for a long time. These -release notes docment the most important changes, a detailed -upgrade guide, as well as the detailed list of improvements. - -Most important changes ----------------------- -- The API became more static. This applies to many Factory - methods, such as val(), literal(), as well as to many Field - methods that have been moved over to the Factory. For example, - when before, you wrote this using "postfix function notation": - -
    NAME.replace(" ", "_").trim()
    - - you will now write (just as in SQL): - -
    trim(replace(NAME, " ", "_"))
    - - Using static imports of Factory.*, jOOQ makes SQL look even - more like SQL. The current "postfix notation" is maintained for - backwards compatibility. -- By default, jooq-codegen will now generate a "dynamic" meta - model as opposed to the existing static one. Generated tables - covariantly override the as(String) aliasing method, leading - to a much more convenient aliasing style. When before, you - wrote: - -
    -Table parent = T.as("parent");
    -Table child  = T.as("child");
    -Condition join =
    -  parent.getField("ID").equal(child.getField("PARENT_ID"))
    -
    - - You can now write: - -
    -T parent = T.as("parent");
    -T child  = T.as("child");
    -Condition join = parent.ID.equal(child.PARENT_ID)
    -
    - - Of course, the existing notation still works - -- Exceptions are no longer checked. When previously, the DB's - SQLException was propagated to client code, there is now an - unchecked DataAccessException hierarchy, similar to that of - Spring. This will eventually give way to a standardised error - handling abstraction, in future developments. -- Window functions are now constructed from their underlying - aggregate functions just like in SQL. For example: - -
    -sum(AMOUNT)
    -sum(AMOUNT).over().partitionBy(ACCOUNT)
    -
    - - This makes for a more concise API, especially when considering - future extensions, such as Oracle's KEEP (DENSE_RANK FIRST...) - syntax. -- More type safety has been introduced regarding various places - where generic and types are involved. - This is especially true for INSERT / UPDATE / DELETE statements -- Sequences now also have a type -- Unsigned number types are now supported in those databases that - use them. Unsigned numbers are implemented in jOOU, a spin-off - open source project. For convenience, this library is - "internalised" into jOOQ, to avoid adding a dependency - -http://code.google.com/p/joou/ - -Upgrade instructions: ---------------------- -Various of the above changes are incompatible with jOOQ 1.x. In -order to upgrade, please be aware of the following pitfalls: - -- The schema needs to be re-generated. -- Much of the post-fix function notation is replaced by static - methods in the Factory. Today's org.jooq.Field API is - maintained in jOOQ 2.0, for backwards compatibility. It will - be removed, eventually, though. Expect some incompatible - changes, where window functions are involved -- Some Factory instance methods (such as val(), literal()) are - now static. They are compatible, but may cause compiler - warnings. -- The meta model is now an instance model by default. If you - prefer the static meta model, you can configure this in your - jooq-codegen configuration. -- The additional typesafety involving and types may cause - compiler warnings and errors. -- SQLException is no longer part of the API. This can cause - compiler issues, in particular when extending jOOQ -- Some utility classes have moved to org.jooq.tools - -Should these incompatibilities be too significant for your -project, you can still stay on the 1.x branch, which will be -maintained for a while. Be aware that upgrading might be more -difficult, later, though. - -Features and improvements -------------------------- -#55 - Implement improved exception handling -#117 - Improve DSL support for field and table aliasing (decrease - verbosity) -#519 - Add support for MySQL UNSIGNED numeric types -#626 - Create static function access -#661 - Add support for bitwise operators -#718 - Sequences should be mapped to appropriate type (e.g. - SMALLINT, INT, BIGINT, etc) -#734 - Add support for Oracle / SQL Server CUBE() and ROLLUP() - grouping functions -#751 - Add support for Oracle / SQL Server GROUPING SETS() - function -#799 - Add support for Oracle PL/SQL's object-oriented MEMBER - PROCEDURES and MEMBER FUNCTIONS -#804 - Add to Insert, Update, Delete -#835 - Review API typesafety for InsertSetMoreStep - set(Field, T) and similar methods -#890 - Add Factory.selectCount() convenience method -#891 - Let min() max(), etc functions return a new type - AggregateFunction. This type can then be used as an entry- - point for window functions -#892 - Add support for Oracle / SQL Server GROUPING() and - GROUPING_ID() functions to be used along with CUBE() and - ROLLUP() -#893 - Simulate ROLLUP() function for MySQL, using the WITH - ROLLUP grouping modifier -#894 - Move functions from Field to org.jooq.impl.Factory - and make them static -#895 - Add power(..., Field) -#897 - Add (experimental) Spring integration project -#898 - Replace usage of checked SQLException by an unchecked - DataAccessException, similar to that of Spring -#899 - Build jOOQ .jar files as bundles to be deployed into OSGI - environments -#900 - Purge deprecated API - Prior to 2.0 -#901 - Introduce InvalidResultException as a subtype of - DataAccessException for integrity checks in methods like - ResultQuery#fetchOne(), ResultQuery#fetchMap(), etc. -#902 - Make AggregateFunction the base type for constructing - window functions -#904 - Move SQLDialectNotSupportedException into - org.jooq.exception package -#905 - Introduce MappingException as a subtype of - DataAccessException for integrity checks in methods like - ResultQuery#fetchInto(), etc. -#907 - Add missing Field.like(Field), notLike(Field) - methods to overload the existing Field.like(T), notLike(T) -#908 - Change rpad / lpad functions to accept String instead of - char -#912 - Add R newRecord(Table, Object) as - the inverse of various into(Class) methods -#916 - Add > {Record.into(Table) | - Result.into(Table) | ResultQuery.fetchInto(Table) | - Cursor.fetchInto(Table)} -#917 - Add various Cursor.fetchOneInto() convenience methods -#918 - Add CustomTable, CustomRecord as base classes for more - convenience when used with various into(Table) methods -#919 - Allow for accessing non-public constructors of Record - subtypes -#923 - Move some utilities to org.jooq.tools -#924 - Generate a reference to every table in a new Tables.java - class for improved static access -#928 - Add DataTypeException extending DataAccessException in - case something went wrong when converting data types -#930 - Support converting date time types to java.util.Calendar. - This applies to various into(Class) methods, as well as - Result.getValue(xx, Class) -#931 - Allow for conversion between Long and date/time types, and - vice versa -#932 - Let the bound of R in TableRecord extend TableRecord, - in UpdatableRecord to extend UpdatableRecord -#933 - Add support for type Character in Record.into(Class) - methods and similar -#936 - Accept primitive types, such as int.class for type - conversion -#938 - CODEGEN: Add static/instance table field configuration -#939 - Include license.txt and readme.txt in .jar files' META-INF - directory -#953 - Make DefaultGeneratorStrategy methods non-final to allow - for overriding -#954 - Add examples for source code generation of multiple - schemata with Maven -#955 - Generate a reference to every type in a new UDTs.java - class -#957 - Add R Factory.newRecord(UDT) for constructing - attached UDTRecords -#958 - CODEGEN: Add generation-time schema mapping, allowing for - re-writing schemata in jooq-codegen -#960 - CODEGEN: Add code generation configuration parameter to - avoid using the new UByte, UShort, UInteger, ULong wrappers - for UNSIGNED number types -#961 - Use Oracle's SYS.ALL_SEQUENCES.MAX_VALUE to determine the - type of a sequence. -#969 - Add List ResultQuery.fetch(Field, - Class) convenience method - -Bug fixes ---------- -#686 - Reduce the internal API leak by preventing access to - TableFieldImpl, UDTFieldImpl, ParameterImpl -#903 - lag(Field, int, T) erroneously delegates to lead() -#906 - Add more NullPointerException safety to API -#913 - NoClassDefFoundError in JooqUtil.isJPAAvailable() -#920 - Generic type is lost in Cursor.fetchInto(RecordHandler) -#925 - SelectConditionStep should extend SelectConnectByStep, not - SelectGroupByStep -#926 - AbstractRecord.into() fails to convert java.sql.Date into - java.util.Date -#934 - Don't consider static members in reflection utilities when - used with Record.into(Class) and similar methods -#935 - Don't consider final member fields in reflection utilities - when used with Record.into(Class) and similar methods -#937 - In the event of name clash (same name for table and field) - generated code has errors -#945 - Calling UpdatableRecord.setValue() twice with the same - argument causes the changed flag to be reset to false -#948 - Always set the changed flag to true in Record.setValue() -#959 - Compilation errors in generated source code if MySQL enum - values match Java reserved words, such as 'true', 'false', - 'new', etc... -#962 - Postgres ordering of generated enum literals is unstable -#967 - Better document type conversion - -Version 1.7.0 - November 25, 2011 -================================================================= -This is a maintenance release for the 1.x branch. Some important -bug fixes are merged from version 2.0. These include: - -Bug fixes ---------- -#925 - SelectConditionStep should extend SelectConnectByStep, not - SelectGroupByStep -#926 - AbstractRecord.into() fails to convert java.sql.Date into - java.util.Date -#937 - In the event of name clash (same name for table and field) - generated code has errors -#945 - Calling UpdatableRecord.setValue() twice with the same - argument causes the changed flag to be reset to false -#948 - Always set the changed flag to true in Record.setValue() -#951 - Empty Password for jooq-codegen-maven causes NPE - -Version 1.6.9 - November 7, 2011 -================================================================= -This is a maintenance release for the 1.x branch. Developments -on this branch will stop after version 1.6.9. Only important bug -fixes are merged to this branch. Developments for release 2.0 -have started. - -The most important functionality in release 1.6.9 is the newly -added support for JDBC batch operations. You can now batch -execute several queries. - -See the official blog for more information: -http://blog.jooq.org/2011/10/25/jdbc-batch-operations-with-jooq/ - -Features and improvements -------------------------- -#621 - Add support for JDBC batch operations -#794 - Add support for ORDER BY [int value] in order to reference - a column index for sorting -#882 - Optimise Field.isTrue() and isFalse(). Take Field's data - type into consideration. -#885 - Add support for INSERT INTO .. VALUES (..) syntax, - omitting explicit field declarations -#887 - Add List Cursor.fetchInto(Class) - -Bug fixes ---------- -#748 - H2 regression in 1.3.158 regarding stored functions, which - return a ResultSet (this was fixed in H2) -#859 - Derby casting of numeric types to BOOLEAN doesn't work -#886 - Regression in date extract function when used in a - subselect -#888 - Derby casting of VARCHAR to FLOAT (and similar) doesn't - work - -Version 1.6.8 - October 22, 2011 -================================================================= -The main improvement of this release is the re-design of the -stored procedure / function API. With 12 supported RDBMS, which -all have their own idea about what is a stored procedure and what -is a stored function, it has proven to be a better design, to -unite them in one single type: org.jooq.Routine. A routine can -have a return value as well as OUT parameters. It can be embedded -in SQL and used as a field or a table. - -This means, you will need to re-generate your database schema, -when upgrading to jOOQ 1.6.8. After re-generation, you'll need to -fix your client code. These are the package changes: - -- [generated.package].procedures > [generated.package].routines -- [generated.package].functions > [generated.package].routines -- [generated.package].Procedures > [generated.package].Routines -- [generated.package].Functions > [generated.package].Routines - -Oracle generated packages are not re-located. With these -improvements, using stored procedures and functions becomes even -more reliable, especially when cursor types are involved. Read -more about the rationale behind this change: - -http://blog.jooq.org/2011/10/17/what-are-procedures-and-functions-after-all/ - -Apart from that, important improvements have been made in the -area of plain SQL tables. Also, consider a demo integration of -jOOQ with Google Cloud SQL: - -http://blog.jooq.org/2011/10/22/jooq-and-google-cloud-sql-example/ - -Features and improvements -------------------------- -#271 - Don't pre-fetch table meta data when selecting from plain - SQL tables -#489 - Add support for SELECT * (i.e. render SELECT * where - applicable) -#596 - Add support for VARIANCE() and STDDEV() OVER() window - functions -#608 - Add jOOQ version number in generated source code -#670 - Add more Javadoc to Field.xxx() functions -#692 - Add support for ResultSet type returned from HSQLDB - stored functions -#850 - Use http://www.jooq.org as URL for the @Generated - annotation -#854 - Add convenience methods Fields.isTrue(), isFalse() for - conversion of "Y", "YES", "1", "true", "on", etc into a - boolean condition -#870 - Add support for MEDIAN aggregate function -#872 - Add support for STDDEV_POP(), STDDEV_SAMP(), VAR_POP(), - VAR_SAMP() aggregate functions -#874 - Reduce the number of internal classes for dialect-specific - function aliases -#878 - Implement DataType.equals() and hashCode() - -API changes (backwards-compatible) ----------------------------------- -#851 - Change Field.{sortAsc|sortDesc}(List sortList) into - Field.{sortAsc|sortDesc}(Collection sortList) - -API changes (backwards-incompatible) ------------------------------------- -#848 - Purge deprecated API - Prior to 1.6.1 -#849 - Replace Cursor.fetchResult() by Cursor.fetch() -#852 - Review stored procedures / functions concept. Merge them - all into a single "Routine" type - -Bug fixes ---------- -#756 - Error when aliasing HSQLDB and Postgres unnested tables -#761 - Exception when TRACE logging execution with plain SQL - tables involved -#773 - Execute standalone stored functions as CallableStatement - to prevent issues with transactions -#847 - Query.getSQL() doesn't render dialect-specific SQL when - Query is constructed using the fluent API -#853 - DB2 generated convenience methods for stored functions - have unstable ordering -#857 - Derby casting of numeric types to String / VARCHAR does - not work -#858 - SQLDataType.getSQLDataType() should return itself, instead - of null -#860 - SQLite CEIL function is incorrectly simulated. CEIL(2.0) - returns 3.0 instead of 2.0 -#861 - Field.replace(String) generates bad SQL for various RDBMS. - Field.replace(String, String) works, though -#863 - Ingres integration generates illegal SQL when selecting - things like SELECT 1 WHERE 1 = 1 -#866 - Sybase ASE Field.replace(String) function incorrectly - removes the argument string -#873 - Error when selecting two times the same aggregate field -#877 - Compilation error in generated source code when a table - without a primary key has an identity column -#879 - Add Google Cloud SQL Example -#880 - Query.getSQL() does not consider SchemaMapping - -Test cases ----------- -#811 - Loader integration tests fail for SQLite -#812 - CSV Loader test leaves Postgres JDBC connection in an - inconsistent transactional state on error -#856 - Add integration tests for Field.abs() -#865 - Add integration tests for Field.ascii() -#867 - Add integration tests for Field.sum(), avg(), max(), min() -#881 - Re-design H2 stored functions to be pre-compiled, in order - to speed up integration tests - -Version 1.6.7 - September 25, 2011 -================================================================= - -This release coincides with the launch of the new website at -http://www.jooq.org. Hence, it ships with little additions to the -deliverable itself. - -Apart from new convenience methods, the main addition is a Maven -plugin for jooq-codegen contributed by Sander Plas. - -Features and improvements -------------------------- -#797 - Create Maven plugin for source code generation -#825 - Add List> Factory.fetchMany(String) to - allow for fetching several result sets from stored - procedures, such as Sybase ASE's "sp_help" -#838 - Implement MetaDataFieldProvider.toString() -#841 - Add List Result.getValues(Field, Class) -#842 - Add Query.getBindValues() method to allow for extracting - bind values in the correct order -#843 - Add Factory.fetch(ResultSet) to transform a JDBC ResultSet - into a jOOQ Result - -API changes (backwards-compatible) ----------------------------------- -#837 - Avoid final keyword on Object methods, such as .equals(), - .hashCode(), etc - -Bug fixes ---------- -#836 - Bad syntax when selecting from aliased plain SQL tables -#839 - Boolean conversion in getValueAsBoolean() should trim - String values first -#840 - Numeric conversions in getValueAsXXX() should trim String - values first -#844 - NullPointerException when selecting a column from a Result, - that does not exist - -Version 1.6.6 - September 11, 2011 -================================================================= - -Finally, support for another RDBMS has been added. Sybase's other -important product Sybase Adaptive Server Enterprise (or simply -Sybase ASE) is now officially supported by jOOQ - -Apart from this, there had been important improvements with the -recently added INSERT .. RETURNING clause, as well as some fixes -related to DECIMAL / NUMERIC data types - -Features and improvements -------------------------- -#796 - Complete missing public org.jooq.impl Javadoc -#800 - Add support for Sybase Adaptive Server Enterprise -#808 - Add support for INSERT .. RETURNING for Ingres -#809 - Add support for INSERT .. RETURNING for Sybase SQL - Anywhere using SELECT @@identity -#810 - Add support for INSERT .. RETURNING for SQLite using - last_inserted_rowid() -#813 - Add DSL support for INSERT .. RETURNING -#814 - Change TableRecord to reload its trigger-initialised main - key in Oracle and other RDBMS that don't support IDENTITY - columns -#818 - Add SQLiteFactory.rowid() -#819 - Support SQLite AUTOINCREMENT columns as IDENTITY -#820 - Add Factory.fetchOne(String) for executing plain SQL - queries that return single records -#826 - Allow for returning several records in the INSERT .. - RETURNING clause. This now works for DB2, HSQLDB, MySQL, - and Postgres -#827 - Support Sybase SQL Anywhere's TOP n START AT m clause - instead of simulating it with nested SELECT's - -API changes (previous API now deprecated) ------------------------------------------ -#817 - Deprecate Factory.lastID(Identity) - -Bug fixes ---------- -#815 - SQL Server fetching of IDENTITY value is broken -#821 - Optimise ResultQuery.fetchAny() executing fetchLazy() - internally, and only fetching one record from the cursor -#822 - Let Constant cast to more precise NUMERIC/DECIMAL types - in those RDBMS where casting is necessary -#823 - Cannot bind SQLite BigDecimal, BigInteger types - bind - them as String instead -#824 - BigInteger values cannot be bound in DB2, Derby -#828 - Document inefficient implementation for GREATEST and LEAST - in some RDBMS - -Version 1.6.5 - August 28, 2011 -================================================================= - -This release finally adds a loader for CSV data to jOOQ. You can -now load CSV data using a simple fluent API, configuring error -handling, duplicate behaviour and transaction handling, as well -as various CSV parameters. - -This release also changes the way generated keys are retrieved -after INSERT's. Instead of (potentially inconsistently) running -SELECT MAX(pk) immediately after the INSERT, Postgres' INSERT.. -RETURNING clause is used (or simulated), in a single statement. - -Features and improvements -------------------------- -#784 - Add Result.exportXML() to retrieve a DOM document similar - to that of .formatXML() -#792 - Add support for loading of CSV data into tables -#795 - Add List fetch(int, Class) and - fetch(String, Class) convenience methods -#803 - Add support for INSERT .. RETURNING or simulate it where - not available -#805 - Add T[] fetchArray(int, Class) and - fetchArray(String, Class) convenience methods -#806 - Add T fetchOne(int, Class) and - fetchOne(String, Class) convenience methods - -Bug fixes ---------- -#798 - Oracle IN (...) clause with more than 1000 arguments does - not work -#802 - Use "INSERT .. RETURNING" instead of "SELECT MAX(pk)" - to retrieve the primary key of a new record - -Version 1.6.4 - August 07, 2011 -================================================================= - -This release ships with a couple of useful concepts inspired by -other frameworks. These are: - -- selecting into custom POJO's. Results can be mapped to POJO's - by convention or using JPA @Column annotations -- selecting into custom callbacks. This is already a wide-spread - practice in Spring JdbcTemplates. -- selecting long-running queries asynchronously. This idea has - been inspired by the Avaje Ebean framework - -Apart from these changes and some bugfixes, the internal API has -been completely re-designed. The idea here is that query -rendering and variable binding are even faster (less String -objects), more extensible and more accurate. This is a pre- -requisite for many future developments with even more complex SQL -statements, such as for instance CTE's (Common Table Expressions) - -Features and improvements -------------------------- -#137 - Add support for asynchronous query execution using - FutureResult ResultQuery.fetchLater() similar to - Avaje Ebean -#198 - Add SELECT INTO functionality into POJO's using - T ResultQuery.fetchInto(Class) similar to JPA - CriteriaQuery -#728 - Add .fetchInto(RecordHandler) to ResultQuery, Result, - and Cursor to allow for callbacks similar to Spring's - JdbcTemplate/Ollin Framework -#774 - Add more TRACE logging to .fetchLazy() -#777 - CURSOR: Add function alias: UNNEST for TABLE -#781 - Add E function (Euler number) -#782 - Add T Record.getValue(..., Class) methods - for convenient type conversion -#785 - Allow for storing TableRecord with a provided Field[] - indicating the primary key -#786 - Document thread-safety facts in Factory Javadoc -#788 - Add Key.getFieldsArray() convenience method -#793 - Add support for Oracle's SYS_CONNECT_BY_PATH function - -API changes (backwards-incompatible) ------------------------------------- -#758 - Change internal QueryPart rendering and binding API to use - Configuration and Context as callback parameters. If you - use CustomField or CustomCondition, please correct your - implementations accordingly. Other parts of the API should - not be affected -#778 - Purge deprecated API, deprecation prior to jOOQ 1.5.7 -#790 - Purge deprecated generated code, deprecation prior to - jOOQ 1.5.7 - -API changes (previous API now deprecated) ------------------------------------------ -#776 - Deprecate QueryPart.getSQL(), add Query.getSQL() -#789 - Deprecate Record constructors with Configuration - parameter - -Test cases ----------- -#636 - Add integration tests for more advanced CONNECT BY - example -#772 - Add integration tests for selecting cartesian products - (several tables in FROM clause) - -Bug fixes ---------- -#730 - Sybase cannot bind null values in plain SQL -#759 - Omit the TOP 100 PERCENT clause in SQL Server ordered - top-level queries -#767 - An empty Java package is generated for PL/SQL packages - containing underscores -#771 - Some exotic literals are not properly escaped with quotes - yet, e.g. UDT identifiers, VARRAY types, etc. -#775 - Automatic re-attaching after deserialisation does not work - when used with .fetchLazy() -#787 - The UpdatableRecord's internal changed flags are not - updated after INSERTs / UPDATEs - -Version 1.6.3 - July 31, 2011 -================================================================= - -This is mainly a maintenance release with lots of bugfixes, -mostly around code generation, plain SQL tables, and data types. -Please note that generated source code may contain incompatible -changes due to #639 (see below for details)! - -Apart from that, project CURSOR is advancing and it is now -possible to unnest arrays into tables. See this article for -details about where jOOQ is heading with project CURSOR: - -http://blog.jooq.org/2011/07/24/the-power-of-ref-cursor-types/ - -Features and improvements -------------------------- -#679 - Improve H2 NVL2 support as of H2 1.3.156 -#680 - Improve H2 ROUND support as of H2 1.3.156 -#735 - Add README documentation to GitHub -#736 - Add more info regarding number of generated artefacts in - jooq-codegen logging -#750 - Add DataType.isNumeric(), .isString(), .isTemporal(), - .isBinary() -#754 - Log query as executed by JDBC PreparedStatement when - TRACE logging (without inlining variables) -#752 - CURSOR: Add support for selecting from ARRAY types -#762 - Use H2's native support of NVL, instead of COALESCE -#764 - CURSOR: Add support for selecting from ARRAY types - returned from stored functions - -API changes (backwards-incompatible) ------------------------------------- -#639 - Map DECIMAL(n, 0) and NUMBER/NUMERIC(n, 0) data types - to Byte/Short/Integer/Long/BigInteger instead of - BigDecimal in generated source code. Re-generated code - will not be compatible! - -API changes (previous API now deprecated) ------------------------------------------ -#731 - Inconsistent API with Field.lessOrEqualToXXX(). Removed - "To" from method name -#757 - Deprecate Factory.constant() methods - -Test cases ----------- -#731 - Add missing integration tests for equalAll(), equalSome() - and similar methods -#747 - Upgrade H2 to 1.3.158 - -Bug fixes ---------- -#632 - Sybase error : column @p0 not found in nested SELECT -#700 - Restore HSQLDB ARRAY support with INFORMATION_SCHEMA - change in HSQLDB 2.2.3, and some fixes in 2.2.5 -#725 - Cannot insert byte[] data with plain SQL -#733 - H2 changed JDBC type for ResultSet/CURSOR from 0 to -10, - like Oracle -#737 - Compilation errors in generated source code if table - fields contain spaces -#738 - Compilation errors in generated source code if MySQL - procedure parameter type contains two comma-separated - arguments (like DECIMAL(10,2)) -#739 - Postgres navigator methods and keys are not re-generated - in the same order -#740 - Formatting is broken on Result.format() with some special - newline characters -#743 - Make SQL Server INFORMATION_SCHEMA independent from - HSQLDB again, to prevent incompatibility issues -#744 - Ingres REAL and FLOAT4 types are generated as FLOAT/FLOAT8 - which maps to java.lang.Double, instead of java.lang.Float -#753 - Postgres error when binding array that contains null - values -#755 - NullPointerException when converting an array containing - a null value -#766 - Bad decoding of JDBC Types BIGINT (to BigInteger instead - of Long) and REAL (to BigDecimal instead of Float) when - plain SQL tables are involved - -Version 1.6.2 - July 10, 2011 -================================================================= - -This release mainly introduces three new projects. - -Project CURSOR where jOOQ finally supports various RDBMS's TABLE, -CURSOR, and REF CURSOR data types. This is especially useful when -those types are returned from stored procedures and functions. -Cursors are simply mapped to jOOQ Result types and can -thus be used like regular table results - -Project EXPORT aims at exporting data from the database in -various serialisable formats, such as XML, CSV, HTML, Text, JSON. -This project will be continued in the future, to also -deserialise from (some of) these data streams. This will allow -for easy transport of jOOQ Result types over the net. - -Project CODEGEN has finally been started. Many improvements -suggested by jOOQ users will be implemented in the next releases. -In this release, important fixes have been made to prevent -compilation errors in generated artefacts. - -Features and improvements -------------------------- -#61 - EXPORT: Add Result.formatXML() -#166 - CURSOR: Add support for ResultSet type returned from - Oracle stored procedures / functions -#411 - Allow for fetching Map (instead of Record) - and List> (instead of Result) -#549 - Add Factory.function() for plain SQL functions -#611 - Simulate RPAD and LPAD in SQL Server, Sybase -#627 - Add support for Postgres FOR UPDATE OF [table-name] clause -#628 - Add support for REPEAT (SQL Server: REPLICATE) function -#637 - Nicely format time in StopWatch logging output -#640 - Simulate Postgres FOR UPDATE OF [table-name] clause in - other dialects -#649 - CURSOR: Add Cursor.fetch(int) .fetchOne() - .fetchResult(int) .fetchResult() -#653 - Add support for MySQL encryption and compression functions -#660 - Clarify Javadoc of UpdatableRecord to explain its - behaviour when changing the main unique key -#669 - EXPORT: Add Result.formatHTML() -#672 - Add convenience method UpdatableRecord.copy() in order to - reset primary key values for a subsequent INSERT -#675 - EXPORT: Add Result.formatCSV() -#683 - Implement ResultImpl.equals() and .hashCode() -#684 - Implement AbstractStore.equals() and .hashCode() -#685 - Add Store.size() to indicate the maximum index of the - Store -#687 - EXPORT: Add result.formatJSON() -#689 - Create separate builds: jooq-core.zip and - jooq-with-dependencies.zip -#690 - CURSOR: Add support for ResultSet type returned from H2 - stored functions -#695 - CURSOR: Add support for ResultSet type returned from - Postgres stored functions -#697 - Add Factory.fetch(String) for executing plain SQL queries - that return results -#701 - Add ResultQuery.fetchArray() and .fetchOneArray to return - Object[][] and Object[] -#704 - Always add top and bottom line in Result.format() -#705 - Right-align numeric values in Result.format() -#716 - Add SUBSTRING function Field.substring(Field, Field) - taking fields as arguments -#719 - Document risk of SQL injection in plain SQL and literal - factory methods -#726 - Add LENGTH function as a synonym for CHAR_LENGTH - -API changes (backwards-compatible) ----------------------------------- -#698 - Inconsistent API with Factory.fetch(Table [,Condition]) - Let method return Result instead of List -#699 - Let Result extend List - -API changes (previous API now deprecated) ------------------------------------------ -#656 - Decrease verbosity of plain SQL methods. They will just be - called Factory.field() .condition() .table() .query() - -Test cases ----------- -#643 - Add integration test for code generation of invalid and - incomplete types in Oracle -#654 - Add integration tests for master data tables with PK types - other than NUMBER/INT -#655 - Add missing integration tests for TRIM function - -Bug fixes ---------- -#450 - Improve plain SQL integrity checks for bind variables -#610 - CODEGEN: Compilation error in generated source code for - databases with table named 'system' -#646 - An empty Java package is generated for an empty PL/SQL - package. This is unnecessary -#651 - CODEGEN: Avoid importing datatypes in generated source - code to prevent collisions -#657 - NullPointerException when creating a Factory with a null - SchemaMapping -#658 - Master data table code generation is broken for tables - with more or less than 3 columns -#662 - Add support for the missing Postgres data type "bpchar" -#663 - Add support for the missing Sybase data type "int" -#664 - Ingres INTEGER data types are not correctly generated -#665 - HSQLDB Datatype CLOB and BLOB are not supported, when - selecting from plain SQL tables -#666 - The evil bug: Ingres TRIM function only executes RTRIM -#673 - UpdatableRecord.store() doesn't work if called after - .delete() -#702 - Add support for the missing SQLite data type "NULL" -#706 - CURSOR: Ensure that Query.execute() runs in a single - transaction when Postgres refcursor is involved in the - query (this fixes a Postgres JDBC driver flaw) -#724 - NullPointerException when passing a single literal null - bind value to plain SQL methods without casting to Object -#729 - DB2, Derby, Ingres, Oracle cannot bind null values in - plain SQL - -Version 1.6.1 - June 19, 2011 -================================================================= - -In this release, the PORTABILITY project has been implemented. -Finally, the SQLDialect has been removed from most generated -artefacts (Schema, Table, Field, Sequence, etc). Also, the -constructing Factory is not referenced by its created QueryParts -anymore, unless this is really necessary (Query objects, UDT's, -ARRAY types). This leads to higher compatibility between schemata -of different databases, e.g. if users want to use an HSQLDB -development and Oracle productive database. - -Unfortunately, this means that the way stored procedures are -called had to be changed. This is an API break that could not be -avoided. The pre-1.6.1 StoredObject.execute(Connection) method -is deprecated and will be removed in the future. It has been -replaced by StoredObject.execute(Configuration) - -In addition to this project, many more window functions are now -supported, as well as the Oracle-specific CONNECT BY clause for -recursive queries. - -Features --------- -#351 - Add support for Oracle ROWID data type -#452 - PORTABILITY: Create a super-set of RDBMS data types -#453 - PORTABILITY: Don't create dialect-specific QueryParts -#455 - Add support for the Oracle CONNECT BY clause -#587 - Add optional OFFSET clause to form LIMIT .. OFFSET - constructs -#589 - Add extended FOR UDPATE [OF ...] [{WAIT n | NOWAIT | SKIP - LOCKED }] support -#591 - Add support for LEAD() OVER() and LAG() OVER() window - functions -#592 - Add support for the CUME_DIST() OVER() window function -#601 - Add Factory.literal() convenience methods -#602 - Add Factory.val() methods to decrease .constant() - verbosity -#604 - Add support for RESPECT NULLS clause in some window - functions -#605 - Add Factory.use(String) for non-generated schemata -#613 - Add PI function -#616 - Add Factory.two() literal convenience method -#630 - Add support for Oracle CONNECT BY pseudo-columns LEVEL, - CONNECT_BY_ISCYCLE, CONNECT_BY_ISLEAF - -API changes ------------ -#299 - PORTABILITY: Create a dialect-independent meta-model -#588 - Add OVER() keyword to FIRST_VALUE() and LAST_VALUE() API - -Test cases ----------- -#368 - Add integration test for use with schema mapping -#586 - Upgrade H2 to 1.3.155 -#607 - Add integration tests for CRUD / SP's / UDT's / ARRAY's - with SchemaMapping -#612 - Add integration tests for LPAD and RPAD functions -#624 - Add integration test for code generation of invalid/ - incomplete views in Oracle -#631 - PORTABILITY: Add integration tests for using Oracle- - generated schema against an HSQLDB database -#638 - Add missing integration test for DECIMAL data type - -Bugfixes --------- -#176 - Stored procedures / functions in EQUIVALENT schemata - cannot be called -#493 - Bind variable mismatch when constructing bad SQL -#594 - Confusing Javadoc in SELECT DSL API -#603 - Fix DB2 'IGNORE NULLS' clause -#619 - SUBSTRING() function is broken in DB2, Ingres, SQL Server -#623 - SQL syntax error for some MERGE queries in SQL Server and - Sybase -#633 - SchemaMapping is not applied to sequences -#634 - Sequences are not escaped in generated SQL - -Version 1.6.0 - June 05, 2011 -================================================================= - -Apart from supporting various additional standard and non- -standard JOIN constructs, there is now also full support for the -SQL standard MERGE statement and MySQL's ON DUPLICATE KEY variant -thereof. A great number of API enhancements have been added, -which improve the usability of jOOQ. The Ingres database is now -also supported. - -Features --------- -#301 - Add support for Oracle execution hints -#409 - Add support for NATURAL JOIN syntax, where RDBMS allows it -#415 - Make fluent API's underlying SelectQuery objects publicly - available -#429 - Add Ingres support -#475 - Document class-level generic types and in Javadoc -#486 - Add support for SQL MERGE clause -#494 - Allow for omitting schema name in generated SQL -#496 - Automatically update IDENTITY values in UpdatableRecord, - after storing them -#520 - Add support for JOIN ... USING syntax -#524 - Upgrade HSQLDB to 2.2 -#533 - Add ORDER BY [Map] or BY [List] functionality -#534 - Add Result.isEmpty() -#535 - Call upon ConfigurationRegistry.provideFor() before - throwing a DetachedException -#536 - Simulate CASE [value] WHEN [value] THEN [result] END - syntax in Derby -#538 - Add some logging to ConfigurationProvider -#539 - Add possibility to negate numeric values with Field.neg() -#541 - Add support for MySQL ON DUPLICATE KEY clause -#542 - Allow for Collection arguments in INSERT's DSL API -#543 - Allow for creating FUNCTION() OVER() without PARTITION BY - or ORDER BY clause -#546 - Add Factory.use(Schema) -#548 - Add new internal type FieldMap -#550 - Simulate ON DUPLICATE KEY INSERT clause in dialects other - than MySQL -#551 - Add TableMapping, similar to SchemaMapping for mapping - tables -#553 - Add Factory.plainSQLQuery -#554 - Add Factory.plainSQLField with a DataType parameter -#555 - Add UpdateXXX.set(Map) convenience methods to DSL API -#557 - Enhance INSERT DSL API to allow for adding VALUES clause - with InsertXXX.set() syntax -#570 - Add support for the RAND() function -#567 - Add support for Ingres Sequences -#572 - Add support for the ATAN2() function -#573 - Add possibility for additional select() clauses for - convenience -#575 - Add support for the FULL OUTER JOIN syntax, where RDBMS - supports it -#576 - Add support for the CROSS JOIN syntax, where RDBMS - supports it -#581 - Enhance API and allow Collection> - instead of Collection> - -API changes ------------ -#397 - Purge deprecated API - -Bugfixes --------- -#481 - Handle case where an empty record is stored -#522 - Misleading Javadoc in generated stored procedures and - function constructors -#532 - Restore Postgres INFORMATION_SCHEMA -#537 - Prevent null from being added to QueryPartList -#540 - Error when TRACE logging Limit -#544 - Aliased elements are not bound correctly when rendered - with toSQLReference() -#559 - Loosen type safety on overloaded methods to prevent - compilation errors with javac/Netbeans -#560 - HSQLDB DataType REAL is configured incorrectly -#565 - Add integration tests for current_user() function -#569 - ORA-01427 when generating foreign key relations -#571 - Field.trim() not correctly implemented for SQL Server -#583 - Accelerate integration tests: Reset schema only if - necessary - -Version 1.5.9 - May 15, 2011 -================================================================= - -This version ships with lots of new functionality. Finally, the -DSL-style API has been extended to CRUD operations (INSERT, -UPDATE, DELETE)! Also, support for the TRUNCATE TABLE statement -has been added. - -The most important new features include the support for SQL:2003 -standard window functions, which are available in most major -RDBMS. Additionally, basic function support has been widely -extended. - -Features --------- -#148 - Added support for window functions -#204 - Add support for multi-record INSERT's -#416 - Added support for retrieval of IDENTITY values -#433 - Use bind variables for LIMIT and OFFSET -#441 - Added foreign key relationship meta information to the - generated source code -#446 - Beautify ResultImpl.toString() method -#461 - Automatically cast CONCAT parameters to Field if - necessary -#463 - Added support for trigonometric functions -#471 - Added support for the sign function -#472 - Added support for GREATEST/LEAST functions -#474 - Added support for "hyperbolic" functions SINH, COSH, TANH, - and COTH -#482 - Added DSL API for INSERT statements -#483 - Added DSL API for UPDATE statements -#484 - Added DSL API for DELETE statements -#485 - Added "Registry" for client code to provide Configurations - to jOOQ Attachables -#490 - Added support for the TRUNCATE TABLE statement -#495 - Generate source code for IDENTITY columns -#501 - Added support for boolean conversion to Result, Record, - and Store -#503 - Allow for schema navigation via generated artefacts -#518 - Let stored procedures reference owner package - if applicable -#525 - Added NULLS {FIRST | LAST} clause to ORDER BY constructs -#528 - Added Factory.getDataType() convenience method -#530 - Added Factory.zero() and Factory.one() convenience methods - -API changes (jooq) ------------------- -#527 - Weakened type-safety on Field.nvl2() -#529 - Deprecated Factory.select(Object...), added .selectOne() - and .selectZero() instead - -API changes (jooq-meta) ------------------------ -#30 - Add ParameterDefinition for stored procedures, instead of - reusing ColumnDefinition -#499 - Add reference to TableDefinition in ColumnDefinition -#500 - Add AttributeDefinition for UDTDefinition, instead of - reusing ColumnDefinition - -Bug fixes ---------- -#369 - Adapt H2 relations generation to H2's correction of - information_schema.cross_references -#435 - Added integration tests for NESTED SELECTs holding LIMIT - clauses -#460 - Syntax error when using a field with a reserved name -#462 - Fixed Javadoc broken links -#473 - Don't cast when cast is unnecessary -#479 - INSERT statement should not set all fields for a table -#497 - Derby referential code generation is broken, for named - foreign keys -#498 - Oracle package content is generated in arbitrary order -#502 - Syntax error when creating an empty IN condition -#526 - Corrected Javadoc in Field.coalesce() - -Version 1.5.8 - April 29, 2011 -================================================================= - -Finally, jOOQ now supports two important new RDBMS: -SQL Server and Sybase! - -Apart from this great enhancement, there is now also full support -for the non-SQL standard LIMIT clause, even in dialects where the -LIMIT clause is not supported natively (especially Oracle, but -also DB2, SQL Server and Sybase, which have limitations). jOOQ -simulates LIMITs by rendering nested selects filtering on ROWNUM -(Oracle) or on ROW_NUMBER() (DB2, SQL Server and Sybase). - -Other interesting additions are an increasing support for native -mathematical functions. More function support will be added in -future versions. - -Features --------- -#16 - Added support for SQL Server -#21 - Uniform implementation of the LIMIT clause. Implemented - LIMIT clause simulation through analytic functions, where - LIMIT is not supported natively -#97 - Added support for Sybase -#418 - Measure time of various steps in source code generation -#420 - Added support for proprietary SQL extensions "FOR UPDATE" - and "FOR SHARE" -#431 - Added additional statistics to generation log files -#432 - Unified the various "standard" ANSI INFORMATION_SCHEMA - implementations in the jooq-meta artefact -#436 - Added support for the modulo function -#438 - Added floor and ceil functions -#439 - Added support for mathematical functions (logarithms, - exponentials, sqrt) -#447 - Enhanced Field.add() and Field.subtract() to work for date - time fields, also - - -API changes ------------ -#428 - Created new Maven artefact jooq-meta to cleanly separate - database meta-data navigation from code generation -#458 - Decreased DSL verbosity for arithmetic operations and for - ordering - -Bug fixes ---------- -#417 - Restored warning when unknown column type is encountered - in source code generation -#419 - Corrected misleading Select.fetchOne(...) Javadoc -#421 - Optimised AbstractRecord's memory consumption -#448 - Corrected some Javadoc @see links -#449 - Changed Field.concatenate() to accept Field parameters - to avoid generic varargs warnings - -Version 1.5.7 - April 17, 2011 -================================================================= - -This is the first release built with support of Maven thanks to -the help of some jOOQ users! - -The main new features in this release are the improved support -for serialisation/deserialisation of jOOQ objects through use of -the newly introduced "Attachable" interface. - -If using log4j or the newly supported slf4j logging framework -in debug/trace mode, there is the possibility to log query -building/execution time statistics. - -Apart from these new features, fixes were mainly done in the -fields of type casting, HSQLDB 2.1 upgrade support, stored -procedures with OUT, IN/OUT parameters. Please upgrade, if you -are using any of those features. - -If you extend jOOQ as a base implementation for source code -generation, be aware of the fact, that the jOOQ-codegen is -currently undergoing major changes. Expect the code generation -API to stabilise again in one of the next releases. - -Features --------- -#104 - Added maven dependency -#248 - Integrate UDT types with ARRAYs -#295 - Allow for attaching/detaching UpdatableRecords to/from - Configurations -#359 - Added statistics measurement to Query execution for debug - log level -#362 - Added deprecation configuration flag -#364 - Document unknown type in generated source code -#373 - Improve exception handling in code generation -#378 - Added support for Oracle stored functions with OUT - parameters -#382 - Added Factory.attach() methods to re-attach deserialised - Attachables -#394 - Add logging support for SLF4J -#398 - Allow to provide a DataType in Factory.constant() -#399 - Provide access to TypeUtils.convert() methods via DataType -#404 - Added trace logging for measuring the speed of various - query execution steps - -API changes ------------ -#358 - Enhanced DSL API to allow for HAVING clauses without - GROUP BY clauses -#367 - Make Store, Result, QueryPart "Attachable" -#374 - Introduce strategy pattern to code generation for future - support for advanced naming schemes -#375 - Decouple Database from Generator -#381 - Made DataType Serializable -#384 - Deprecated singleton QueryParts -#388 - Unify "internal" API using an Adapter pattern - -Bug fixes ---------- -#187 - Protect generated Record navigation methods against name - clashes -#266 - Added more thorough integration tests for dialect-specific - casting (including some fixes related to varchar types) -#360 - Added more integration tests for the DISTINCT clause -#361 - Add more checks in testInsertUpdateDelete() -#366 - Warn only once per ColumnDefinition, if a data type is - unknown -#377 - NullPointerException when generating invalid stored - function -#380 - Added integration tests to check for proper - serialisability -#386 - Fixed incompatibilities with HSQLDB 2.1.0 -#387 - Fixed unnecessary imports in some Oracle generated - Records -#389 - Fixed javac compiler warning in AbstractStoredObject -#391 - Cannot properly call stored procedures when IN/OUT - parameter is bound to NULL -#392 - Procedures with several OUT parameters may not register - OUT parameters correctly -#410 - Passing null VARRAY values to Oracle stored procedures - causes issues -#412 - limit(int) sets default offset incorrectly in some - dialects - -Version 1.5.6 - March 31, 2011 -================================================================= - -This release consists mainly of code generation bug fixes and -minor API improvements and enhancements. - -The most important improvement is ticket #90, by which lazy -fetching and iteration over data is now supported. jOOQ lets you -keep a reference to a Cursor that has an open JDBC ResultSet, to -fetch data from on-the-fly. - -A few major code generation bugs were reported where the -generated code may cause ambiguity due to an inconsistent API. -This means that you will have to re-generate your schema after -upgrading to version 1.5.6. Some of your code may not compile -anymore, after this upgrade. - -Features --------- -#90 - Added possibility for lazy fetching of data -#208 - Added convenience methods for direct invocation of - sequences' currval() and nextval() attributes -#212 - Created one factory per dialect for better separation of - dialect-specific support -#213 - Generate a factory for each schema -#251 - Opened up base implementations for Field and Condition - to allow for custom implementations by client code -#274 - Integrate H2 ARRAY types with stored procedures -#292 - Documented usage of log4j and java.util.logging -#306 - Added support for the NULLIF function -#319 - Added Field.between(Field, Field) method -#320 - Added trace logging for variable binding and SQL - generation methods -#323 - Added Field.in(Field...) method -#325 - Include release version number in delivered .jar files -#328 - Improved configuration setup documentation page -#333 - Let Result implement Serializable -#334 - Added fetchMap() convenience methods -#335 - Added more functions and aggregate functions examples to - documentation -#338 - Visually improve code generation logging -#339 - Removed skipping of unreferenced UDT's, ENUM's and ARRAY's -#342 - Improved generated referential code by using fetch() and - fetchOne() API -#356 - Let UpdatableRecord.store() and delete() return an int - to indicate whether the record was actually modified - -API changes ------------ -#233 - Allow for joining TableLike instead of Table -#337 - Added generic type > to - InsertSelectQuery -#341 - Fixed API flaw where SelectOnConditionStep.and() methods - and similar ones returned SelectConditionStep, instead of - SelectOnConditionStep - -Bugfixes --------- -#69 - Corrected referential code generation for foreign keys - that reference non-primary unique keys -#85 - Corrected referential code generation for multi-field - foreign keys -#121 - Covered more Factory.executeXXX() methods with integration - tests -#318 - Fixed NullPointerException when executing SELECT * from - aliased tables -#321 - BetweenCondition does not bind left hand side Field - correctly -#322 - InCondition does not bind left hand side Field correctly -#326 - Avoid method overloading where binding to Object - may lead to compile-time ambiguities (with javac) -#343 - Add more foreign key navigation method integration tests -#347 - Add explicit integration tests for schema artefacts - excluded from code generation -#350 - Disambiguate navigation methods if several foreign keys - reference the same entity -#352 - Disambiguate navigation methods if a table ending on S - references itself -#353 - Added integration test for compilation of generated - artefacts with javac (as opposed to the Eclipse compiler) -#355 - Error when storing an UpdatableRecord that has no changed - values - -Version 1.5.5.2 - March 15, 2011 -================================================================= - -A critical bug was reported from the 1.5 release stream where -stored functions did not render their parameters in correct order - -Features --------- -#302 - Map Oracle's NUMBER data type to java.lang.Number in - stored procedures, stored functions - -Bugfixes --------- -#317 - StoredFunctionImpl.asField() renders parameters in wrong - order - -Version 1.5.5.1 - March 13, 2011 -================================================================= - -In version 1.5.5, there was a fatal bug breaking Derby source -code generation. Only the Derby dialect is affected. Please -update immediately, if you are using jOOQ's Derby integration - -Bugfixes --------- -#315 - Generated master data records are not sorted by PK -#316 - Derby code generation fatally broken - -Version 1.5.5 - March 12, 2011 -================================================================= - -This version is released early as there are some important -bugfixes. Additional improvemetns include: - -- Improved DSL related to conditions in HAVING and JOIN clauses -- Support for Oracle-style functions, such as NVL, NVL2, COALESCE - DECODE, etc - -Features --------- -#304 - Add support for Oracle NVL function -#305 - Add support for COALESCE function -#308 - Add support for Oracle NVL2 function -#311 - Add support for Oracle DECODE function - -API changes ------------ -#223 - Enhance DSL to accept and(), or() and similar methods in - JOIN steps -#224 - Enhance DSL to accept and(), or() and similar methods in - HAVING steps - -Bugfixes --------- -#297 - Fixed Factory.concatenate() function -#298 - Added integration tests for nested selects in HAVING - clause -#300 - Added integration tests for nested selects in JOIN clause -#303 - Javadoc correction -#307 - Accelerated integration tests -#309 - Fixed JDBC variable binding issue related to Conditions - where the lhs is a function (e.g. stored function) and the - rhs is a constant -#310 - Fixed issue where fetchOne() methods throw - NullPointerException if no result record is available -#312 - Fixed issue where Field.equal(...) methods rendered - unexpected SQL when rhs null is cast to a type -#313 - Fixed Derby cast type for VARCHAR -#304 - Let the DerbyDataType default for java.lang.String be - VARCHAR, not LONG VARCHAR - -Version 1.5.4 - March 04, 2011 -================================================================= - -Feature #243 required a minor API change in the base classes of -generated source code. This means you have to re-generate all -your jOOQ artifacts in order to migrate to 1.5.4. The artifacts -themselves should be regenerated in a compatible way, such that -your client code should not be affected. If this is not the case, -please report a ticket here: - - https://sourceforge.net/apps/trac/jooq/newticket - -Apart from the Derby RDMBS and some new data type support, there -have been many new convenience methods added all over the API. -For instance, if type-safety is not really a requirement, there -are lots of possibilities to use plain SQL directly in the DSL. -In that case, data can be accessed from Record, Results, not only -through Field, but also through field names or indexes. - -Check out the updated documentation (soon) here: - - https://sourceforge.net/apps/trac/jooq/wiki/Examples - -- Support for the Derby RDBMS -- Support for casting. This allows for even greater flexibility - in cases where jOOQ cannot 100% ensure type-safety -- Support for ARRAY types. Oracle, Postgres, HSQLDB and H2 ARRAY - types are now supported natively as regular bindings in - jOOQ's Field -- Support for dialect-specific data types. CHAR, VARCHAR, CLOB - are no longer treated equally as java.lang.String. Their - type heritage is also generated -- More sequence support -- Lots and lots of bug fixes - -Features --------- -#95 - Support for the Derby RDMBS -#163 - Add support for JDBC type ARRAY (with Postgres) -#209 - Add support for DB2 sequences -#210 - Add support for H2 sequences -#211 - Add support for HSQLDB sequences -#215 - Support for SQL casting using as cast type -#246 - Support for SQL casting using dialect-specific data types -#254 - Add HSQLDB support for ARRAY types -#256 - Add Oracle support for VARRAY types -#257 - Integrate ARRAY types with stored procedures -#261 - Add a global type mapping to the generated Schema object -#267 - Add DataTypeDefinition for further abstraction of data - types in code generation -#269 - Add H2 support for ARRAY types -#290 - If log4j is not on the classpath, use java.util.logging - instead, as fallback - -API Changes ------------ -#156 - Allow for results to be accessed by index, not by field -#218 - Corrected bad method signature: - Record.getValueAsLong(Field, Integer) -#219 - Extended Result and Select API's to be more similar to - that of Record -#232 - Add more convenience plain SQL support to the API -#235 - Add convenience methods to Record, Result and Select for - access of data via field name -#243 - Refactor DataType implementations in order to allow for - the use of generics -#259 - Add field type to database meta data (ColumnDefinition) -#260 - Add field type to database meta data (Field) -#262 - Add default behaviour for Record.getValue(Field) -#276 - Add Javadoc as a ZIP file to the jOOQ distribution - -Bugfixes --------- -#125 - Add more plain SQL integration tests -#191 - Add more integration tests for nested unions -#205 - Implemented workaround for handling Postgres stored - functions with UDT OUT parameters -#214 - Fixed NPE when generating a stored function with an - unknown parameter type -#216 - Fixed some cases where binding of BigInteger is not done - correctly -#220 - Syntax error when using select statement in a CASE clause -#221 - Corrected integration tests for combined update and - select statements -#222 - Added integration test for INSERT statements having - nested SELECT statements for their fields -#225 - Correctly cast array types in Postgres -#230 - Potential misuse of Blob and Clob in H2's JDBC types -#239 - Factory.fetchAny() is not implemented for SQLite -#244 - Fixed peculiar MySQL casting support where cast types do - not match any data types -#245 - Fixed NPE when reading null dates in SQLite -#249 - Added ARRAY type integration tests -#255 - Stored procedure bind variables get mixed up when any - argument is null -#263 - Correctly handle Postgres function overloading -#264 - Ambiguous funciton calls when calling overloaded functions - with null parameter -#281 - Handle compilation errors when generating stored - procedures with > 254 parameters -#283 - Fixed compilation errors in generated source code for - Oracle's UDT table type -#284 - Fixed compilation errors in generated source code for - Oracle procedures in packages, when they have no - parameters -#285 - Fixed compilation errors in generated source code for - Oracle tables with the same name in different schemata -#286 - Fixed name collisions in generated objects with the - java.lang.* package -#288 - Prevent the creation of UNION queries with bad syntax - in MySQL -#289 - Correctly alias fields within UNION queries for some - dialects, which then only require the "AS" keyword -#291 - Cannot create an aliased field called "year" in Postgres - -Version 1.5.3 - January 13, 2011 -================================================================= - -- Lots of stored procedure support was implemented -- Support for sequences was added -- The final decision to postpone support for DB2 UDT's was made -- Some code generation bugfixes - -Features --------- -#36 - Added stored procedure / stored function support for HSQLDB -#140 - Added support for Oracle sequences -#147 - Added support for H2 stored functions -#162 - Correctly integrate UDTs with stored procedures -#170 - Added support for Postgres stored functions -#186 - Added support for more Oracle PL/SQL simple data types -#193 - Simulate support for H2 "stored procedures" -#195 - Simulate support for Postgres "stored procedures" -#206 - Added support for Postgres sequences - -API changes ------------ -#180 - Improved DSL for constant values -#181 - Allow for referencing Field in function argument list -#189 - Renamed convenience methods in org.jooq.Record -#207 - Add fetchOne(Field) method to org.jooq.Select API - -Bugfixes --------- -#182 - Protected generated Record classes against clashes with inherited methods -#183 - Fixed NullPointerException, when generating master data tables with - NULL fields -#184 - Fixed IllegalArgumentException, when a data type is present in the - schema, but unavailable in code generation logic -#185 - Code generation should not fail when single elements cannot be generated -#188 - Improved integration tests for stored procedures / functions / packages -#196 - Increase RDMBS version compatibility by avoiding "SELECT *" in code - generation logic -#199 - Added integration tests for stored procedures in RDBMS that do not - support OUT parameters -#201 - Fixed issue in DB2 where stored procedures without parameters were not - generated. -#202 - Added integration tests for stored procedures / functions without - parameters - -Version 1.5.2 - December 27, 2010 -================================================================= - -- Improved support for stored procedures, also in packages -- A minor API change was inevitable to implement #173. The API change only - concerns the INTERNAL API. Deprecation marks are added and deprecated items - will be removed in 1.6.0 -- Experimental SQLite database support -- Some important bug fixes - -Features --------- -#25 - Added support for Oracle packages -#114 - Added support for Oracle UDTs -#145 - Added support for the SQLite database -#150 - Generate static convenience methods for stored procedures / functions -#151 - Generate static convenience methods for stored function fields -#152 - Generate meaningful serialVersionUID in generated classes -#173 - Added support for EQUIVALENT schemata - -API changes ------------ -#159 - Added convenience method List getValues(Field) to Result -#165 - Added convenience methods for creating EXISTS clauses -#169 - Improved DSL for WHERE clauses - -Bugfixes --------- -#68 - Prevent issues originating from overloaded stored procedure names, - generating identical Java class names -#153 - Fixed issue with generated code for DB2 stored functions -#154 - Fixed issue with generated code for DB2 stored functions -#155 - Fixed issues with database NULL not being mapped correctly to Java NULL - when selecting values that have a primitive type (int, long, etc) -#158 - Potential ClassCastException when using Field -#171 - Corrected issue related to selection of default schema in DB2 -#177 - Fixed issue related to generated code for tables or UDTs without columns - - -Version 1.5.1 - December 13, 2010 -================================================================= - -- H2 database support thanks to Espen Stromsnes -- Improved stored procedure support - -Features --------- -#96 - Added H2 database support -#101 - Added stored procedure / stored function support for Oracle -#138 - Added stored procedure support for DB2 -#146 - Added support for DB2 functions - -API changes ------------ -#143 - Added convenience methods to Record - -Bugfixes --------- -#84 - Implemented referential code generation for foreign keys that do not - match their primary keys' types -#141 - Encoding problem in generated master data classes - -Version 1.5.0 - November 22, 2010 -================================================================= - -- A big one. Major API changes / improvements -- Added lots of convenience methods -- UDT support -- Enum support -- DB2 support thanks to Espen Stromsnes -- "Light" dependency to log4j added. jOOQ will still run without it - -Features --------- -#1 - Create support for UDTs (so far only for PostgreSQL) -#15 - Added DB2 support -#60 - Added support for nested selects in INSERT and UPDATE - statements -#83 - Added log4j logging to code generation and runtime -#87 - Add support for arithmetic expressions -#105 - Added support for ENUM data types, where applicable - (MySQL and PostgreSQL so far) -#110 - Added execute and fetch convenience methods -#111 - Added missing "select distinct" support -#122 - Annotate generated classes with javax.annotation.Generated -#123 - Generate user enum fields from data values (master data) -#124 - Added PlainSQLTable -#127 - Added not() operator to Condition -#135 - Added convenience methods andNot() and orNot() in - Condition - -API changes ------------ -#89 - Removed support for DataSource. jOOQ is not a transaction - manager -#92 - Added SortField type to be used for sorting -#99 - Provide better access to functions (No more FunctionFactory) -#116 - Merge Manager functionality into Factory -#118 - Improve API of org.jooq.Field -#119 - Improve subquery condition API -#132 - Reduced much of the select query API -#134 - Better separation of SelectQuery and SimpleSelectQuery - -Bugfixes --------- -#109 - Error when executing select * if generated schema does not - match actual schema -#115 - Fix various "null" pseudo field issues -#126 - Error when selecting a single field from a union nested - select -#129 - Fixed performance issue in Oracle code generation for - very large databases - - -Version 1.4.4 - November 22, 2010 -================================================================= - -Unreleased version, fixes included in 1.5.0 - -Bugfixes --------- - -#133 - JoinCondition does not take comparison operator - -Version 1.4.3 - October 25, 2010 -================================================================= - -Some more bugfixes - -Bugfixes --------- - -#71 - Generated code does not compile, when foreign key and - primary key have a data type mismatch -#73 - In Oracle generated code, multi-field foreign keys may - generated bad relations code -#82 - Conversion of literals to camelcase fails if numbers are - involved - -Version 1.4.2 - October 22, 2010 -================================================================= - -Various bugfixes and minor improvements - -Features --------- -#66 - Add support for CASE or DECODE expression - -API changes ------------ -#77 - Functions should not extend FieldImpl, but a new - AbstractField -#78 - QueryPart pollutes declared method space of its - implementations. Hide it by indirection - -Bugfixes --------- -#64 - Code generation fails when foreign key references a unique - key that is not the primary key. Code generation for these - cases is omitted -#67 - When loading properties files, a leading / seems to be - mandatory. This is preventing users from correctly setting - up jOOQ the first time -#70 - Add support for Oracle datatype TIMESTAMP(6) -#72 - Name clashes in generated Tables -#75 - Constant does not bind its values. -#76 - Constant should not render strings all the time -#79 - Constants are not properly escaped -#80 - Position function does not bind any variables -#81 - Add cast function to Constants in HSQL - -Version 1.4.1 - October 18, 2010 -================================================================= - -Oracle patch release - -Features --------- -#63 - Generate referential functionality for Oracle - -Version 1.4.0 - October 17, 2010 -================================================================= - -Support for PostGreSQL was added. -Added lots of OR-mapping functionality. -There is a general API change due to various new features. - -Features --------- -#14 - Add PostGreSQL support -#40 - Resolve foreign keys. Allow for navigation between objects. -#42 - Add PlainSQLField -#45 - Add "dirty" flag to Record's values. This allows for - updating only relevant data. -#47 - Complete implementation for UPDATE, INSERT, DELETE - statements. Added some missing functionality. -#48 - Add more support for Date, Time, Timestamp fields. -#51 - Add a org.jooq.impl.Manager class that provides common - utility methods for CRUD operations - -API changes ------------ -#10 - Add second generic type . This is a - prerequisite for many OR-mapping features -#18 - Use org.jooq.Record in InsertQuery and UpdateQuery -#46 - Create UpdatableRecords as a prerequisite for JPA and true - OR-mapping. These records support store() and delete() - methods -#52 - Add default constructor in generated Records. -#53 - Add refresh functionality to UpdatableRecords. See also #46 -#54 - Add a state to the factory class -#56 - Reduce API, remove unnecessary Condition subinterfaces -#57 - Reduce API, remove unnecessary QueryPart interfaces - -Bugfixes --------- -#49 - NullPointerException when generating relations on schema - subset -#58 - Count function renders bad SQL in various dialects -#59 - Exception when selecting unaliased functions in queries - -Version 1.3.0 - August 24, 2010 -================================================================= - -Support for HSQLDB was added. -There is a major API change due to #44. - -Features --------- -#29 - Generate primary keys and foreign keys in Oracle code - generation -#34 - Add support for HSQLDB -#39 - Generate primary keys and foreign keys in HSQLDB code - generation -#41 - Add documentation to QueryFactory and Functions - -API changes ------------ -#23 - Add support for more advanced joins -#32 - Merge SelectQuery and ResultProviderQuery interfaces -#44 - Let Query methods return "this" - -Bugfixes --------- -#35 - Add unit tests for HSQLDB support -#37 - Syntax error in combined select queries! - The usage of combined queries in MySQL may still be a bit - awkward. Keep an eye out for further fixes -#43 - Join with aliased tables doesn't work - -Version 1.2.0 - August 21, 2010 -================================================================= - -The added Oracle support is now unit tested and more stable. -The Oracle NUMBER data type is mapped more precisely to Java -types. - -Features --------- -#12 - Model primary keys and foreign keys in generated code -#22 - Improve mapping of Oracle NUMBER data type -#26 - Add Plain SQL QueryParts -#27 - Add support for HAVING clause - -Bugfixes --------- -#24 - Add Unit tests for oracle database (and fixed bugs) -#31 - Pull up addOrderBy() methods from SelectQuery to - ResultProviderQuery - -Version 1.1.0 - August 17, 2010 -================================================================= - -The main new feature is the Oracle support. Wait for -Version 1.1.1 for that support to be stabilised, as there are no -Oracle unit tests running against an Oracle database yet. - -Features --------- - -#2 - Add support for inner / nested selects -#3 - Add more function support -#4 - Implement filtering functionality for code generation -#6 - Add Oracle Support -#9 - Create true POJO's (implementing org.jooq.Record) with - getters and setters -#17 - Make org.jooq.impl.Parameter independent of Field - -Bugfixes --------- - -#11 - Code generation does not remove files - -Version 1.0.1 - August 14, 2010 -================================================================= - -Features --------- - -#5 - Prevent code regeneration, if no changes were made -#7 - Implement ant task for code generation - -Version 1.0.0 - August 14, 2010 -================================================================================ -Initial Release \ No newline at end of file diff --git a/jOOQ-website/inc/RELEASENOTES-2.6.txt b/jOOQ-website/inc/RELEASENOTES-2.6.txt deleted file mode 100644 index dcf2f743a5..0000000000 --- a/jOOQ-website/inc/RELEASENOTES-2.6.txt +++ /dev/null @@ -1,3090 +0,0 @@ -jOOQ Release notes -================== - -For an interactive overview, see also -http://github.com/jOOQ/jOOQ/issues - -For a formatted text version, see -http://www.jooq.org/notes.php - -For a text version, see -http://www.jooq.org/inc/RELEASENOTES.txt - -Version 2.6.4 - May 25, 2013 -================================================================================ - -This is a patch release with some useful fixes for the 2.6 branch - -Bug fixes ---------- -#1883 - Derby OVERLAPS predicate doesn't work for (DATE, INTERVAL) tuples -#1982 - Change RenderNameStyle.UPPER, LOWER, AS_IS to quote literals if needed -#2271 - jOOQ Unit tests fail when not run in CET / CEST -#2294 - Compilation errors when code generator is configured with - true and false -#2298 - Suppress warnings in generated code (@SuppressWarnings("all") doesn't - work with javac) -#2312 - Annotate org.jooq.Support with java.lang.annotation.Documented to make - it part of the public API (in Javadoc) -#2314 - Outdated GenerationTool Javadoc -#2347 - Let equals() implementations succeed early on identity -#2368 - Table names should be quoted correctly to prevent problems when using - keywords as table names -#2401 - Bad package name generated when contents are not trimmed -#2469 - NullPointerException in AbstractResultQuery.fetchOneMap() - -Version 2.6.3 - February 25, 2013 -================================================================================ - -This is a minor patch release with some useful fixes for the 2.6 branch - -Bug fixes ---------- -#1886 - Query.bind() has no effect when Query.keepStatement(true) and - StatementType.STATIC_STATEMENT are combined -#2165 - Add H2 database definitions to the jOOQ-scala module -#2167 - Convert.convert("xx", boolean.class) returns null, instead of false -#2189 - Change all Javadoc

    tags to

    -#2190 - ClassCastException when using UNION with selectFrom() -#2214 - "code size too large" in generated SchemaImpl, when the number of tables - exceeds 15k -#2217 - Improve example in the "jOOQ for CRUD" section. Use only columns from - the sample database -#2223 - SQL injection is possible in org.jooq.impl.Val, if client code doesn't - correctly enforce generic typesafety, and bind variables are inlined -#2227 - Field.in(T...) doesn't convert argument values to the Field's type -#2238 - Code generation runs extremely slow for large schemas (Inefficient - DefaultRelations.getUniqueKeys() and getForeignKeys() methods) -#2239 - Code generation runs extremely slow for large schemas (Inefficient - AbstractDatabase.filterSchema() methods) -#2252 - ArrayIndexOutOfBoundsException, when rendering plain SQL that is - terminated by a comment -#2261 - RenderMapping has no effect, if not supplied to the Factory constructor -#2262 - RenderSchema has no effect, if not supplied to the Factory constructor - -Version 2.6.2 - February 5, 2013 -================================================================================ - -This is a minor patch release with some useful fixes for the 2.6 branch - -Bug fixes ---------- -#2055 - MySQL's UPDATE [t1] JOIN [t2] syntax can cause syntax errors as column - references are not fully qualified -#2057 - Cannot properly extract bind values for LIMIT .. OFFSET clause from a - SELECT statement -#2063 - jOOQ-meta loads Firebird composite unique key columns in wrong order -#2073 - The code generator's flag doesn't affect Oracle - VARRAY and TABLE types -#2082 - Oracle PIVOT expression doesn't bind any variables of a derived table - being pivoted -#2085 - java.lang.NoSuchMethodError: org.apache.log4j.Logger.isTraceEnabled()Z - when logger dependency is missing -#2098 - NullPointerException when org.jooq.impl.EnumConverter converts null -#2104 - SQLite code generation treats multi-column primary keys like multiple - single-column unique keys -#2108 - SQLite returns NULL for val(new Date(0)).add(-1) and some other date - time arithmetic expressions -#2125 - Regression in batchStore() for Postgres and jOOQ 2.6.1 -#2130 - Misleading Javadoc in Factory.selectCount() -#2139 - batchStore with composite types incorrectly reuses values from the first - record -#2146 - Improve AbstractField.equals() and AbstractTable.equals() and similar, - as these two are called very often -#2149 - Improve QueryPartList.removeNulls() as this is called very often - -Version 2.6.1 - December 27, 2012 -================================================================================ - -This is a minor patch release with some useful fixes for the 2.6 branch - -Bug fixes ---------- -#1890 - Bad Postgres array serialisation when " or \ characters are contained in - a String[] -#1937 - Inefficient implementations of AbstractDataType.equals() and hashCode() -#1938 - Improve AbstractField.hashCode() and AbstractTable.hashCode() and - similar, as these two are called very often -#1942 - Inefficient call to String.split() in StringUtils.toCamelCase() leads to - non-negligible performance ovrerhead in POJO transformation calls -#1954 - Bad SQL rendered when combining ORDER BY [ some-function ] with LIMIT - .. OFFSET in DB2, SQL Server -#1958 - Bad SQL rendered for OVER (ORDER BY [ some-function ]) for SQL Server - and Sybase -#1979 - Thread safety issue in org.jooq.impl.FieldList -#1992 - Bad reference to org.jooq.debug.[impl].DebugListener in the manual -#1993 - Bad code generated when the same table name exists in multiple schemas - in SQL Server -#1995 - Record.original() values aren't updated after a Record.store() operation -#2007 - Bad type coercion on the right hand side of a comparison predicate, when - the left hand side is Field -#2011 - Implement some micro-optimisations in DefaultRenderContext -#2045 - Bad hashCode calculation when Records contain arrays or byte[] - -Version 2.6.0 - October 26, 2012 -================================================================================ - -This release has a new main feature: the type-safe support for row value -expressions also known as tuples - up to a degree of 8. The API is formed in a -similar way as pre-existing tuple support in languages like C# or Scala. - -jOOQ's Scala integration has also been improved through the new jOOQ-Scala -module, which provides some useful implicit defs for operator overloading. -Future versions of jOOQ-Scala may experiment with Scala 2.10's Macros - -This release also ships with a lot of new deprecation to help you prepare for -the upcoming major release. - -Minor feature improvements include: - -- Lots of new fetchGroups() and intoGroups() methods, thanks to Ivan Dugic -- JDBC execution control support, such as cancel(), maxRows(), queryTimeout() -- Allowing for re-using JDBC PreparedStatement between Query executions -- Support for the SQL standard OVERLAPS predicate -- A new RecordMapper, similar to the existing RecordHandler - -Features and improvements -------------------------- -#385 - Allow for keeping open statements in a Query -#600 - Add support for Oracle / SQL Standard linear regression functions -#1058 - Add Factory.row(T1, T2, .. TN) and Factory.row( - Field, Field ... Field) to allow for creating tuples / rows -#1077 - Add support for the SQL standard OVERLAPS predicate -#1245 - Improve formatting for DECIMAL data types in Result.format(). Nicely - align the decimal point and reserve space on both sides -#1484 - Let XJC-generated artefacts implement Cloneable -#1527 - Support for converting String to java.net.URL, java.net.URI, and - java.io.File -#1674 - Export data types with Result.formatXML() and Result.formatJSON() - exports -#1679 - Add Factory.table(String, QueryPart...) -#1708 - Add Map> ResultQuery.fetchGroups(Field, Class) -#1709 - Add Map> ResultQuery.fetchGroups(Field[]) -#1710 - Add Map> - ResultQuery.fetchGroups(Field[], Class) -#1719 - Make logic from ResultQuery.fetchArray() available in Result.intoArray() -#1728 - Add support for the MySQL COUNT(DISTINCT expr, expr...) aggregate - function syntax -#1744 - Add support for the CUBRID DECR() function -#1756 - Add RecordMapper, similar to RecordHandler, mapping records to - custom types -#1762 - Add package-info.java to add Javadoc documentation to all packages -#1766 - Simulate row comparisons where they are not supported -#1773 - Add a new jOOQ-Scala project and jooq-scala artefactId, to contain jOOQ - extensions in the Scala language -#1782 - Move JAXB bindings out of XSD, in order to support more advanced - bindings -#1783 - Generate @SuppressWarnings("all") in jOOQ-generated artefacts -#1784 - Enhance the BETWEEN predicate, introducing the AND keyword -#1810 - Add Map ResultQuery.fetchMap(Field, Class) and - Result.intoMap(Field, Class) -#1816 - Add support for materialized views in Oracle's code generator -#1828 - Reduce log level for Factory deserialisation to TRACE -#1837 - Add support for @java.beans.ConstructorProperties when fetching into - immutable POJOs -#1841 - Add SortField Field.sort(SortOrder) to allow for dynamic sorting -#1842 - Add Condition Field.compare(Comparator, Field) to allow for dynamic - comparisons -#1844 - Add Table Table.join(TableLike, JoinType) to allow for - dynamic joining -#1845 - Add Factory.schemaByName(String) for plain SQL schemata -#1848 - Add Record.changed() to indicate whether a Record contains "dirty" - values -#1849 - Add Record.original() to obtain the originally fetched values from a - Record -#1854 - Add ResultQuery.maxRows(int) to limit the number of actually fetched - records -#1855 - Add Query.cancel() to support for interrupting statements prematurely -#1856 - Add Query.queryTimeout(int) to support for JDBC's - Statement.setQueryTimeout() - -API changes (backwards-compatible) ----------------------------------- -#1800 - Deprecate AliasProvider -#1807 - Result.intoArray() declares "throws MappingException", which isn't true -#1839 - Deprecate the various Result.getValuesAs[Type] and - Record.getValueAs[Type] methods -#1840 - Deprecate org.jooq.Store -#1866 - Deprecate [Schema-Name]Factory, remove reference to it from the - tutorials -#1869 - Deprecate org.jooq.NamedQueryPart -#1870 - Deprecate org.jooq.NamedTypeProviderQueryPart -#1872 - Improve jOOQ's RenderContext pretty printing behaviour -#1881 - Deprecate ConditionProvider, OrderProvider, LockProvider types - -Bug fixes ---------- -#1593 - Factory.field("{1} + {0} + {0}", val(1), val(2)) doesn't work. Cannot - re-use / re-order placeholders -#1720 - Improve performance by using Record.getValue(int) instead of - Record.getValue(Field) internally, where more than one value is - retrieved from a record -#1751 - Result.intoResultSet() generates wrong ResultSetMetaData if runtime - schema mapping is applied -#1764 - Add missing @Support({ ... FIREBIRD ... }) annotations -#1768 - NullPointerException when DAO.fetchOne() returns no record -#1774 - QueryPart.toString() does not load default settings from classpath -#1786 - Fix SEQUENCE support for Firebird -#1791 - Log a table's input/output names, and PK name when generating code -#1792 - Factory.fieldByName() and tableByName() do not correctly escape quotes -#1797 - SQL syntax errors when plain SQL contains comments with question marks - and SQL is executed as StatementType.STATIC_STATEMENT -#1802 - Result.into(Table) doesn't work correctly, if the same field name - appears twice in Result -#1806 - Let Record.toString() wrap the record in a temporary Result and call - Result.toString() instead -#1819 - MappingException in Record.into(Class), when POJO setters have - applicable names but non-applicable argument types -#1820 - Cannot fetch into non-public POJO classes. Their members / getters / - setters should be made accessible -#1829 - Factory.execute(String) may cause errors when plain SQL returns results -#1830 - Allow for passing null or empty arrays to intoMap(Field[]) and - intoGroups(Field[]) -#1850 - Record.equals() returns true as soon as both records hold a "null" value - for a given field -#1860 - Bad Results returned from plain SQL "select *" queries, if several - selected columns share the same name -#1876 - NULL constraint violation when storing a copied record - -Version 2.5.0 - August 26, 2012 -================================================================================ - -Welcome to another great database integration in jOOQ: Firebird! This is one of -the more popular open source SQL databases out there, with a rich feature set, -including the SQL standard MERGE statement. - -Apart from this, the main new features are: - -- Optimistic locking. jOOQ's UpdatableRecord API transparently implements - optimistic locking on its store() and delete() methods. By default, the - in-memory record is compared with the one in the database at write time. But - you can also let jOOQ handle incremented VERSION or TIMESTAMP columns for you. -- Oracle feature increment. Many nice Oracle features are now supported: - user-defined aggregates, regular expressions, Oracle Text, CONNECT_BY_ROOT and - ORDER SIBLINGS BY clausess, partitioned outer joins and more -- jOOQ's convenience API has been greatly enhanced. This includes many improved - fetch methods and new short forms for equal=eq, notEqual=ne, greaterThan=gt, - etc. to better align jOOQ with JPA, XSL, QueryDSL and many other tools that - abbreviate these keywords -- Many types and methods have been deprecated to help you foresee the upcoming - changes in jOOQ 3.0 - -Please consider also the updated manual with its new, more user-friendly -structure - -Features and improvements -------------------------- -#430 - Add support for the Firebird database -#457 - Add support for Oracle user-defined AGGREGATE functions -#620 - Add support for the SQL:2008 standard LIKE_REGEX operator -#722 - Remove casting of bind values in Ingres -#727 - Simulate RPAD and LPAD in SQLite -#816 - Add support for Oracle Text functions -#1339 - Add option to generate immutable pojos -#1547 - Support "optimistic locking" in UpdatableRecord.store() and delete() -#1552 - Generate fetchBy[ColumnName] methods in generated DAO classes -#1553 - Add some Javadoc to document the difference between using a Factory with - a Connection or with a DataSource -#1556 - Add javax.validation API to full deliverable -#1565 - Add Factory.connectByRoot(Field) to support the Oracle - CONNECT_BY_ROOT pseudo column -#1570 - Add Factory.condition(String, QueryPart...) similar to - Factory.field(String, QueryPart...) -#1582 - Add support for Oracle's ORDER SIBLINGS BY clause, in combination with - CONNECT BY -#1586 - Add missing constructors taking DataSource to dialect-specific factories -#1587 - Generate missing constructors taking DataSource in schema-specific - factories -#1595 - Simulate REPEAT() in SQLite -#1596 - Add support for optimistic locking using generated information about - "timestamp" or "version" columns -#1627 - Handle NULL in CSV imports/exports -#1645 - Add support for Oracle's PARTITION BY clause in OUTER JOINs -#1657 - Reorganise the manual -#1664 - By default, activate in the code generator -#1665 - Add support for the empty GROUP BY () clause -#1675 - Add support for the SQL standard IS [NOT] DISTINCT FROM predicate -#1680 - Overload all plain SQL DSL methods to also accept QueryPart arguments -#1681 - Simulate empty GROUP BY () clause in Sybase ASE and Ingres, joining a - dummy table and grouping by a constant field -#1684 - Add Setting to indicate that fetched records shouldn't - be automatically "attached" -#1685 - Improve Javadoc of Attachable.attach(). Document how "detaching" works -#1688 - Add E Record.into(E) as a complement to E Record.into(Class) -#1692 - Replace Factory.executeInsert(), Factory.executeUpdate() and similar - methods with more succinct variants -#1696 - Add short versions of comparison predicate methods, such as eq, ne, gt, - ge, lt, le -#1698 - Add support for the SQL standard BETWEEN SYMMETRIC predicate -#1701 - Add Factory.not(Condition) as a synonym for Condition.not() -#1704 - Document the behaviour of Factory.newRecord(Table, Object) and - Record.from(Object) with respect to UpdatableRecord.store() -#1707 - Add Map> ResultQuery.fetchGroups(Field) and - Result.intoGroups(Field) -#1712 - Add > Result.sortAsc .sortDesc(Field) -#1713 - Add Result.sortAsc, .sortDesc(Field, Comparator) -#1714 - Add Result.sortAsc, .sortDesc(Comparator) -#1718 - Document usage of InvalidResultException on the ResultQuery.fetchXXX() - Javadocs -#1721 - Add Map> ResultQuery.fetchGroups(Field, Field) - and Result.intoGroups(Field, Field) -#1722 - ResultQuery.fetchArray(int) and .fetchArray(String) should return a - typed array, even if this cannot be checked by the compiler -#1723 - Add Factory.fetchLazy(ResultSet) - -API changes (backwards-compatible) ----------------------------------- -#1544 - Remove Attachable interface from QueryPart hierarchy -#1579 - Deprecate org.jooq.Type -#1580 - Deprecate org.jooq.SchemaProvider -#1638 - Deprecate org.jooq.ArrayRecord.createArray() -#1639 - Deprecate org.jooq.Adapter -#1687 - Let Cursor.fetchInto(Table) return Result instead of List -#1736 - Deprecate TableRecord.{store|refresh|delete}Using() methods as being - part of jOOQ's internal API -#1741 - Deprecate org.jooq.MasterDataType - -Bug fixes ---------- -#1572 - Use Thread.currentThread().getContextClassLoader() to load - ExecuteListener classes as a workaround for experienced class loading - problems when using OSGi -#1584 - Code generation error with Oracle UDT static functions -#1632 - Improve the performance of various DefaultRenderContext methods, by - locally caching Settings values -#1633 - Improve the performance of CursorImpl.CursorIterator by setting Record - values by index rather than by Field -#1635 - Improve the performance of Factory.fetch(ResultSet) by caching data type - normalisation regex in FieldTypeHelper -#1650 - jOOR Fix #16: Can't call Reflect.create(A, B, null) -#1660 - Factory.renderContext().castMode(CastMode.NEVER).render(query) doesn't - work. CastMode is not applied -#1667 - Bad variable binding when NULLS FIRST, NULLS LAST is simulated in SQL - Server and other databases -#1673 - Result.formatXML() and Result.intoXML() do not render namespaces - correctly -#1683 - Oracle code generation regression for 10g. No such column - ALL_PROCEDURES.OBJECT_ID -#1693 - Cannot bind UDT values from other schemata to stored procedures -#1730 - Compilation errors in SQLite generated code when flag - is set to true - -Version 2.4.0 - July 8, 2012 -================================================================================ - -This release's main new feature is jOOQ's added convenience in -Factory initialisation for those users who get their database -connectivity through JDBC DataSources. If supplied with a -DataSource, a jOOQ Factory will handle the Connection lifecycle -internally, closing the Connection when no longer needed. - -The H2 MERGE statement syntax is now supported and simulated in -other databases, for those users that prefer its more intuitive -syntax over the SQL standard. - -The code generator now also allows for generating interfaces and -DAOs per table. DAO generation was previous discussed on the user -group and seen in a competitor product called OneWebSQL. - -The jOOQ Console now supports breakpoints for even more effective -SQL development - -Features and improvements -------------------------- -#1141 - Add Result.intoResultSet() to wrap a Result in a JDBC - ResultSet -#1253 - Avoid JDBC escape syntax for date/time literals -#1280 - Generate DAO classes and interfaces for POJOs -#1404 - Document the lifecycle of an ExecuteListener in the - Javadoc -#1411 - Add support for Postgres "any" data type (with quotes!). - This seems to map well to java.lang.Object -#1418 - Support case-insensitive schema names in code generation -#1419 - Add some WARN-level logging when the source-code - generator doesn't generate any artefacts -#1423 - Add Field.likeIgnoreCase() to support Postgres' ILIKE - operator -#1424 - Add Factory(DataSource) and similar constructors -#1427 - Add Factory.batchStore(Collection>) for convenience -#1428 - Add DataType.convert(Object...) and - DataType.convert(Collection) for convenience -#1431 - Add org.jooq.Name Factory.name(String) to contruct - QueryParts that are escaped according to - Settings.getRenderNameStyle() -#1432 - Add Factory.fetch(String, QueryPart...) and - Factory.execute(String, QueryPart...) and similar methods - to support arbitrary QueryParts in plain SQL -#1434 - Add UniqueKeyDefinition.isPrimaryKey() for completeness -#1438 - Add Result Factory.fetchFromCSV(String) -#1440 - Add top-level pom.xml for jooq-parent artefact (GitHub - Issue #14) -#1446 - Converting arbitrary strings to Number / Date should - return null, instead of throwing an exception -#1449 - Generate some meaningful Javadoc into the generated - [schema-name]Factory classes -#1454 - Add line breaks to generated Javadoc where appropriate -#1463 - Add option to let generated Record / POJO objects - implement a common generated interface -#1470 - Support interface types in ResultQuery.fetchInto(Class), - Result.into(Class), and Record.into(Class) methods, - returning a proxy -#1471 - Upgrade internal jOOR dependency to jOOR 0.9.4 -#1473 - Add IdentityDefinition to jooq-meta -#1501 - Add support for conversion of String to - java.sql.{Date, Time, Timestamp}. GitHub issue #22 -#1504 - Document behaviour of fetch() and fetchOne() in case jOOQ - cannot fetch actual records -#1509 - Minor improvements in the generator source code. GitHub - pull request #23 -#1510 - Generate additional setters for foreign keys, accepting - records as arguments -#1521 - Expose Connection methods, such as commit(), rollback() - and similar transaction-related methods in Factory -#1523 - Support ROW_NUMBER() OVER() for the latest version of - Derby and H2, which support it -#1524 - Simulate ROW_NUMBER() OVER() in HSQLDB using ROWNUM() -#1528 - Let generated interfaces extend Serializable -#1532 - Clarify the lifecycle of Configuration.data in the - Javadoc -#1534 - Generate more meaningful Javadoc where "an uncommented - item" stands now -#1536 - Add documentation to the FOR UPDATE OF clause, indicating - that DB2 may have stricter requirements regarding - updatability of fields -#1541 - Add support for the H2 MERGE syntax - GitHub Issue #18 -#1542 - Simulate the H2 MERGE syntax in other dialects supporting - the SQL standard MERGE statement - GitHub Issue #18 -#1545 - Website and Documentation anchors should be links to - themselves, visually recognisable - -Features and improvements (jOOQ Console) ----------------------------------------- -#1398 - Allow for adding breakpoints in jOOQ Console - -API changes (backwards-compatible) ----------------------------------- -#1408 - Relax bounds of in Factory.truncate() to Record, - instead of TableRecord -#1429 - Change Convert.convert(List, XXX) to accept Collection - instead of List - -Bug fixes ---------- -#1020 - Improve Oracle's LIMIT .. OFFSET clause simulation. - GitHub Issue #16 -#1358 - Compilation errors in generated source code when Oracle - overloaded procedures collide with procedures that end - with numbers -#1437 - Error in Javadoc of FactoryOperations.fetchOne(). This - method may return null -#1441 - Performance issue with AbstractDataType.convert(Object). - Avoid conversions when they're obviously unneeded -#1448 - Handle String to Enum conversion (when Java Enums are - stored as Strings in the database) - GitHub issue #15 -#1459 - Generated Keys.java static class too large (static - initialiser can become bigger than 64kb) -#1460 - Table.getReferencesTo(Table) doesn't work correctly for - aliased tables -#1461 - Exception when rendering of {fn datetimeadd(...)} for - HSQLDB and Derby -#1462 - Document missing GeneratorStrategy features, such as - getJavaClassImplements() -#1465 - Custom generator strategy's printImplements() is called - with Mode == RECORD for tables -#1478 - Caching SQLDialect in AbstractDatabase heavily improves - code generation performance -#1483 - Inefficient cloning of default settings using JAXB - unmarshalling leads to non-negligible overall overhead. - Use serialisation instead (short of a useful XJC clone - plugin) -#1489 - Fix manual where it claims to throw SQLExceptions -#1490 - Compilation error when a SQL Server stored procedure has - a parameter named "value" -#1493 - Bad syntax for SELECT /*+hint*/ DISTINCT ... in Oracle -#1498 - jOOQ does not compile using JDK 7 / JDBC 4.1. GitHub - Issue #24 -#1499 - Generated members of Tables.java are not final -#1505 - Bad exception message when ON DUPLICATE KEY IGNORE cannot - be simulated -#1515 - Splitting of large NOT IN conditions is wrong. The parts - should be connected with AND, not with OR -#1522 - fetch().into(Table) doesn't initialise records correctly, - such that subsequent calls to store() will execute an - INSERT, rather than an UPDATE -#1525 - Generate missing Javadoc to getters for procedure OUT - parameters -#1529 - Factory.batchStore() logs all single statements to DEBUG - output. Find a more accurate log output -#1537 - Factory.batchStore() renders bad SQL for Postgres. The - RETURNING clause is not allowed in batch INSERTs - -Version 2.3.1 - May 11, 2012 -================================================================================ -This is an important patch release fixing some regressions in the -code generator for the Postgres dialect. With 2.3.0, it was no -longer possible to generate schemata of which the database user -was not the owner. - -Bug fixes ---------- -#1334 - Fix inaccurate simulation of TRUNC(number, decimals) for - Derby -#1403 - Documentation bug: ctx.statement() can be replaced in - executeStart(). This is not documented -#1406 - Compilation errors in generated source code when Postgres - stored procedure parameter is called "NAME" -#1407 - Compilation errors in generated source code when Postgres - data-type is "any" (with quotes!) -#1409 - Postgres code generation broken when not connecting with - the owner of a schema - -Version 2.3.0 - May 6, 2012 -================================================================================ - -This is a minor feature increment release, featuring many useful -API enhancements, some new functions, some new syntax support -elements, improved source code generation and a lot of -improvements on the jOOQ Console, thanks to Christopher Deckers. - -The updated jOOQ Console now allows for filtering incoming -statements directly on the server side, using regular expression -filters on statement text and other features. These improvements -are a part of a general strategy to introduce breakpoints and -more sophisticated debugging capability to the jOOQ Console. - -Features and improvements -------------------------- -#597 - Add support for Oracle KEEP (DENSE_RANK FIRST...) - aggregate function clause -#910 - Add ExecuteListener extension to allow for overriding - exception translator to handle vendor-specific error - codes -#1286 - Add "renderSchema" flag to Settings, to completely - disable rendering of schema names -#1293 - Generate setter methods for JAXB annotated configuration - properties -#1295 - Add support for MySQL's INSERT IGNORE clause -#1296 - Simulate the FOR UPDATE clause for SQL Server, CUBRID, - using JDBC's ResultSet.CONCUR_UPDATABLE -#1302 - Add Factory.inline() to allow for flagging inline-only - "bind values" -#1303 - Add connection-less Factory constructors for convenience, - when jOOQ is only used as a SQL query builder -#1304 - Add option to generate JSR-303 @NotNull and @Size - annotations to generated POJO's -#1307 - Let HSQLDB dialect render NVL2() as NVL2() instead of - CASE expression -#1312 - Allow for omitting , and generate all - available schemata in that case -#1315 - Let generated factories use their associated Schema as - the Settings' RenderMapping's defaultSchema -#1319 - Move jooq-spring's FactoryProxy to the core jooq project -#1322 - Add Factory.dateAdd() and timestampAdd() for convenience -#1327 - Add DataType.isLob() -#1328 - Add Field inline(char), inline(Character), - inline(CharSequence) for convenience -#1333 - Add support for the Oracle TRUNC function, for numeric - arithmetic -#1336 - Let Record.into(Class) and similar methods accept - "immutable" classes, i.e. setter-less classes that take - several constructor arguments -#1340 - Use Constructor.setAccessible(true), if no default - constructor is available on the target type of - Record.into(Class) -#1342 - Improve Javadoc on Factory.function(). Document arguments -#1349 - Add support for the CUBRID Click-Counter INCR() -#1352 - Allow for creating syntax-error and SQL-injection safe - qualifiers for org.jooq.Field and org.jooq.Table -#1361 - Add Factory.batchStore(TableRecord...), to allow for - batch UPDATE/INSERTs of many records -#1367 - Make configured ExecuteListeners default constructors - accessible -#1366 - Let org.jooq.Batch extend Serializable -#1378 - Upgrade internal jOOR dependency to jOOR 0.9.3 -#1379 - Upgrade internal jOOU dependency to jOOU 0.9.1 -#1390 - Add RenderContext.qualify() to indicate whether - QueryParts should render qualified versions of themselves - or not - -Features and improvements (jOOQ Console) ----------------------------------------- -#1242 - Upgrade jOOQ Console dependency on RSyntaxTextArea from - 1.5 to 2.0.2 -#1249 - Allow for filtering incoming statements in jOOQ Console -#1393 - Implement a communication protocol between Console server - types and Console client types to allow for more - sophisticated functionality - -API changes (backwards-compatible) ----------------------------------- -#1310 - Deprecate Factory.literal() in favor of Factory.inline(), - and Factory.field() -#1368 - Promote AbstractQuery.isExecutable() to the public API - -Bug fixes ---------- -#989 - INSERT and UPDATE statements always render non-qualified, - escaped field names. This may cause trouble when using - plain SQL fields -#1109 - Standalone TABLE or VARRAY types are not correctly - initialised before referencing tables load them -#1279 - NullPointerException when leaving empty -#1283 - The LIKE escape character needs escaping, too, in - contains(), startsWith(), endsWith() -#1306 - Add missing INTERVAL data types to HSQLDBDataType -#1308 - Oracle's DataTypeDefinition reports the length of a BLOB - / CLOB data type to be 4000 -#1313 - and match only table names, not - fully qualified names -#1323 - Add support for byte[] in Postgres UDTs -#1324 - Code generation error in Oracle 10g when generating - stored procedures -#1326 - Error when deserialising BLOBs from Oracle UDTs -#1329 - NullPointerException when passing null to - timestampDiff(Field, Field) -#1343 - Regression in insertInto(...).values(...). Cannot pass - Field to values() -#1344 - Initialise Result ArrayLists to their expected size, if - that size is known. -#1360 - jOOR issue 12: "Don't reset the accessible flag to false, - if setting it to true is required, to avoid race - conditions in concurrency contexts" -#1371 - Missing conversion when using unsafe Field types in - BATCH statements -#1376 - Oracle UDTs in REF CURSORs are not deserialised correctly - from procedure OUT parameters -#1377 - Oracle UDTs are not deserialised correctly when the same - UDT name is present in multiple schemata -#1394 - NullPointerException when omitting element in - code generation configuration - -Version 2.2.1 - April 12, 2012 -================================================================================ - -This is a minor patch release, fixing some issues related to the -code generation of the new CUBRID integration as well as other, -minor issues. Upgrade if you're using CUBRID - -Bug fixes ---------- -#1287 - Remove oracle.sql dependency also from OSGi information - in pom.xml -#1288 - SQL syntax errors from sequences when using RenderMapping - with defaultSchema -#1289 - DefaultBindContext logs as Util.class -#1297 - Compilation error in CUBRID generated artefacts - referencing OBJECT types -#1298 - Avoid source code generation errors when generating code - for unknown, dialect-specific data types - -Version 2.2.0 - April 09, 2012 -================================================================================ - -Finally, jOOQ has added support for another database, and a very -promising one, that is. http://www.cubrid.org is a surprisingly -original mixture of a relational and object-oriented database -where tables and classes are synonyms, so are records and -instances. The CUBRID database has a high level of compatibility -with MySQL and is aimed at MySQL users wanting more performance -for their web applications. For details, see the slides here: - -http://www.slideshare.net/cubrid/growing-in-the-wild-the-story-by-cubrid-database-developers - -jOOQ is proud to have become a CUBRID partner, looking forward -to further cooperation with CUBRID in the near future. - -Apart from that, jOOQ now fully supports SQL standard INTERVAL -data types. With JDBC and JPA lacking official support for this, -jOOQ aims for becoming the tool of choice for vendor-specific -date time arithmetic. True INTERVAL data type support is given in -HSQLDB, Ingres, Oracle, Postgres databases. Besides that, CUBRID -and MySQL support INTERVAL data type arguments in functions. In -other dialects, jOOQ simulates DATEADD(), TIMESTAMPADD(), -DATEDIFF(), TIMESTAMPDIFF(). - -For jOOQ's OLAP friends, there is now also support for the Oracle -LISTAGG function (LIST() in Sybase, XMLAGG() in DB2, STRING_AGG() -in Postgres, GROUP_CONCAT() in CUBRID, H2, HSQLDB, MySQL). -LISTAGG is an "ordered aggregate function", meaning that the -aggregation is done using a specific ordering. Keep an eye out -for more such function support in future versions. - -Features and improvements -------------------------- -#566 - Add support for INTERVAL data types -#585 - Add support for DATE, TIME and INTERVAL arithmetic -#1183 - Add support for DEFAULT values in Oracle stored procedure - parameters -#1243 - Let generated POJOs (and Records) extend base classes - and implement interfaces -#1252 - Avoid JDBC escape syntax for Oracle stored procedure - calls. Generate PL/SQL syntax, instead -#1255 - Let generated Tables contain a public default constructor - to be able to extend those classes - Github issue #12 -#1257 - Add CUBRID support -#1268 - Add Factory.field(String, QueryPart...) to generate - custom clauses -#1269 - Add YEAR(), MONTH(), DAY(), HOUR(), MINUTE(), SECOND() - function support as shortcuts for EXTRACT() -#1273 - Simulate GROUP_CONCAT() aggregate function using Oracle's - LISTAGG() function, where available -#1274 - Add support for the Oracle LISTAGG(...) WITHIN GROUP - (ORDER BY ..) [ OVER (..) ] aggregate / analytic function -#1275 - Simulate Sybase LIST() aggregate function using Oracle's - LISTAGG() function -#1276 - Simulate Oracle's LISTAGG() in DB2 using XMLAGG(), - SUBSTR() and CONCAT() -#1278 - DEBUG log both executed SQL and SQL with inlined bind - values - -API changes (backwards-compatible) ----------------------------------- -#1262 - Pull up OracleFactory.prior() and other CONNECT BY - related methods to Factory - -Bug fixes ---------- -#1241 - Wrong variable binding when comparing CHAR columns in - Derby and DB2 without explicit casting to VARCHAR -#1244 - Cannot override class name in GeneratorStrategy in - Mode.POJO -#1248 - Setting both false and - true leads to compilation errors -#1256 - Fixed code generation issue with H2 user defined - functions returning VARCHAR -#1263 - Pass fetchsizes <= 0 to the JDBC driver (for vendor- - specific MySQL compatibility) -#1270 - Most databases allow for multiple identical foreign keys. - This leads to compilation errors in generated source code - -Version 2.1.0 - March 18, 2012 -================================================================================ - -With this version, jOOQ attempts to follow versioning rules -imposed by semantic versioning: http://semver.org/ -There will be 1 minor release per month, and a couple of patch -releases per year, depending on popular demand - -The main improvements for this release include - -- The possibility of providing jOOQ with a custom type mapping. - You can now define your own Converter types that are used by - jOOQ to map a database's SQLDataTypes to your custom types. - This is particularly useful for Java's enums. Read more about - custom converters in the manual: - http://www.jooq.org/manual/ADVANCED/CustomTypes/ - -- There are a lot of new runtime configuration options to control - the SQL style of SQL rendered by jOOQ. You can now specify - whether table/column names should be quoted / capitalised / - lower-cased, whether SQL keywords should be capitalised or not, - etc... - -- The handling of NULL has been improved in favour of using jOOQ - as a SQL builder library (e.g. along with Spring for execution) - NULL is no longer inlined, but bound as a variable. - -- jOOQ now supports simulation of the relational division - operation using an intuitive syntax. Read more about the - relational division here: - http://en.wikipedia.org/wiki/Relational_algebra#Division - -Features and improvements -------------------------- -#161 - Add runtime configuration to pretty print rendered SQL -#349 - Add SQLite relations support -#491 - Add runtime configuration for SQL keyword style (upper - case, lower case) -#521 - Add runtime configuration for SQL reference style (upper - case, lower case, as-is, quoted) -#1150 - Add code generation option to disable generation of - records -#1181 - Add support for SQL Server data types timestamp and - rowversion -#1188 - Load default Settings from the classpath at - /jooq-settings.xml, or from -Dorg.jooq.settings -#1193 - Specify main-class in jOOQ Console's manifest.mf and - include dependency in jar file -#1194 - Add ColumnDefinition.isNullable() -#1202 - Add support for the relational division operation: - A.divideBy(B).on(A.ID.equal(B.A_ID)).returning(A.X, ...) -#1207 - Add Factory.batch(Collection) for - convenience -#1208 - Render @javax.persistence.Column(nullable = false) - property, if available -#1209 - Render @javax.persistence.Column(length, precision, - scale) properties, if available -#1215 - Add org.jooq.Converter for custom type mapping -#1216 - Overload Record, Result.getValue() and .setValue() - methods to accept a Converter -#1217 - Add EnumConverter as a base type for custom enum - converters -#1218 - Add code generation options to generate - referencing a Java type and a Converter -#1224 - Add DataTypeDefinition.getLength() to jooq-meta's type - system -#1233 - Support custom JDBC properties for jooq-codegen -#1234 - Add Database.getTable(SchemaDefinition, String, boolean) - to fetch tables case-insensitively -#1239 - Add Factory.fetchLazy(String, Object...) - -API changes (backwards-compatible) ----------------------------------- -#1191 - Deprecate ConfigurationRegistry and replace by equivalent - ExecuteListener feature -#1219 - API Bug: Cannot use LIMIT .. OFFSET along with FOR UPDATE - -Bug fixes ---------- -#625 - Remove dependency from generated Routines to the - generator's SQLDialect -#1128 - NULL is inlined in INSERT statement instead of binding it - as a variable. This can cause issues when using jOOQ with - Spring -#1137 - Exclude MySQL column-level enum types when that column is - overridden by a -#1158 - Derby cannot handle inlined NULL literals in some - contexts -#1180 - Execute BatchMultiple (multi-query batch query), when - executing BatchSimple (single-query, multi-bind-value - query) with StatementType == STATIC_STATEMENT -#1189 - TableMapping regression for SQLite database -#1190 - Cannot store SQLite records when using - StatementType.STATIC_STATEMENT -#1199 - Table.getFields() returns an internal representation of a - table's field list. Make generated tables immutable! -#1200 - Internal API leak exposed through covariance in - AbstractType.getFields() -#1211 - Enforce method name disambiguation also when using custom - strategies in jooq-codegen -#1212 - Enforce identifier disambiguation also when using custom - strategies in jooq-codegen -#1221 - Incorrect ExecuteListener invocation for INSERT .. - RETURNING. executeStart() and executeEnd() are omitted -#1223 - Cache ExecuteListener classes for performance -#1225 - Bind NULL byte[] as java.sql.Types.BINARY instead of - BLOB in Postgres, to avoid errors -#1226 - Bind NULL UDTs with their associated type name in Oracle -#1232 - SQLException when Factory.fetch() does not return a - ResultSet -#1237 - Don't generate enum classes for columns in MySQL tables - that are excluded from code generation - -Version 2.0.5 - February 26, 2012 -================================================================================ - -This release finally introduced basic runtime configuration -features for the jOOQ Factory. This configuration now includes: - -- Execute listener and SQL tracing support. jOOQ allows you to - hook your own listeners into jOOQ's query execution engine to - be notified of all sorts of events -- The existing SchemaMapping features. They are now part of the - runtime configuration -- StatementType settings. Specify whether a Factory should - execute java.sql.PreparedStatements (with bind variables) or - static java.sql.Statements with inlined variables. - -The runtime configuration is documented here: - -http://www.jooq.org/manual/JOOQ/Factory/ - -The listener and tracing support has been requested by -Christopher Deckers, a new jOOQ user who has had the courtesy to -contribute the new jOOQ Console, which is documented here: - -http://www.jooq.org/manual/ADVANCED/ExecuteListener/ - -Apart from that, another long-requested feature is now fully -implemented: The GeneratorStrategy, allowing for custom naming -strategies in generated source code. This will allow for -generating custom table / record class name prefixes / suffixes, -as well as overriding the default behaviour for rendering UPPER, -lower and CamelCase artefacts. See the manual for details: - -http://www.jooq.org/manual/META/Configuration/ - -Features and improvements -------------------------- -#93 - Add Field.equalIgnoreCase(), Field.notEqualIgnoreCase() -#408 - Add class prefixes, suffixes and other options to the - code generator -#492 - Add runtime configuration -#1107 - Let Field.contains() support the Postgres ARRAY @> ARRAY - operator -#1140 - Add ResultQuery.fetchResultSet() to return the underlying - JDBC result set -#1143 - Add Result.isNotEmpty() for convenience -#1145 - Add runtime configuration to specify whether jOOQ should - execute java.sql.PreparedStatement (with bind variables) - or a java.sql.Statement (with inlined parameters) -#1146 - Add Query.getSQL(boolean) to indicate that bind values - should be inlined (as a convenience for - Factory.renderInlined(QueryPart)) -#1148 - Add Cursor.resultSet() to expose the underlying ResultSet -#1149 - Allow for optional - "http://www.jooq.org/xsd/jooq-codegen-2.0.4.xsd" - namespace in jooq-codegen configuration -#1152 - Add & org.jooq.EnumType> - E MySQLFactory.enumType(Class, int) for enum reverse - lookups of MySQL-specific enums -#1159 - Support matching numbers with LIKE, e.g. ID LIKE '%33%' -#1160 - Implement Field.contains(), .startsWith(), .endsWith() - for numeric values, too -#1161 - Use reflection to remove compile-time dependency on - ojdbc for creating ARRAYs -#1162 - Integrate jOOR into jOOQ for simpler reflection -#1164 - Distinguish between Definition.getInputName(), - .getOutputName() -#1165 - Add constraint name to generated javadoc -#1167 - Trivial issue with org.jooq.Factory.exists Javadoc - - GitHub issue #10 -#1169 - Add Configuration.setData(), getData() to convey custom - data in a configuration's lifecycle -#1172 - Add runtime configuration to deactivate JooqLogger -#1177 - Add jOOQ-Console module to jOOQ -#1184 - Add DataType.isArray() - -API changes (backwards-compatible) ----------------------------------- -#1142 - Rename Result.exportXML() to Result.intoXML() to stay - more consistent -#1151 - Deprecate SchemaMapping in favour of new runtime - configuration - -Bug fixes ---------- -#978 - Schema.getTables() and similar methods return empty lists - when Schema is mapped with SchemaMapping -#1153 - Bad inlining of booleans in Sybase ASE / DB2 / Oracle - SQL Server / SQLite -#1154 - Bad inlining of byte[] in most dialects -#1155 - byte[] are erroneously converted to String when using - Record.intoArray() -#1156 - Bad inlining of DATE / TIME / TIMESTAMP data types in - Ingres (and other dialects, when the setting differs from - the default) -#1166 - Some generated Javadoc uses naming strategy or plain - output name, instead of qualified output name -#1168 - Oracle packages are generated as static, instead of - static final -#1175 - Factory.use() seems to render SQL with the Schema name - still present -#1179 - Oracle-generated ArrayRecords need a reference to - org.jooq.Schema to read TABLE of OBJECT from stored - procedures - -Test cases ----------- -#1147 - Add integration tests for executing SQL generated using - Factory.renderInlined() - -Version 2.0.4 - February 12, 2012 -================================================================================ - -This release introduced many improvements to source code -generation. These improvements include: - -- Maven and standalone code generation now use the same XML - configuration, which is read by jOOQ-codegen using JAXB. This - allows for more complex configuration elements in the future -- jOOQ-codegen can now handle multi-schema databases and generate - code for tables referencing tables from other schemata. This - is integration tested against the SQL Server AdventureWorks - database -- jOOQ now allows to generate simple POJOs in addition to Records - and to annotate both POJOs and Records with JPA annotations - such as @Entity, @Table, @Id, @Column, @UniqueConstraint, etc. - -You can migrate your existing .properties configuration by running -> org.jooq.util.GenerationTool /your.properties migrate - -Besides that, there is a lot of ongoing work to improve the -integration of Oracle's TABLE and VARRAY types. - -Features and improvements -------------------------- -#8 - Add JPA annotations to generated POJOs / Records -#282 - Add support for multi-schema databases -#287 - Add support for Oracle TABLE types -#395 - Use XML configuration file instead of properties file -#1089 - Add Field.contains(), .startsWith(), .endsWith() as a - convenience for Field.like() (including escaping) -#1092 - Move master data table configuration from - generator.generate to generator.database namespace -#1093 - Add support for generator.strategy in Maven source code - generation -#1094 - Add support for generator.database.date-as-timestamp in - Maven source code generation -#1095 - Move generator.generate.unsigned-types to - generator.database namespace -#1096 - Add support for generator.generate.unsigned-types in - Maven source code generation -#1103 - Add support for SQL Server data type uniqueidentifier -#1106 - Add Factory.escape(Field, char) for use with LIKE -#1108 - Add support for multi-schema databases using Maven code - generation -#1115 - Add support for Oracle VARRAY/TABLE of OBJECT types -#1127 - Add support for POJO classes generation -#1129 - Allow for using Param in LIMIT .. OFFSET clauses -#1132 - Add RenderContext.castMode() to allow for avoiding casts - where this is not really needed -#1136 - Add generation option to enable/disable generating - navigation methods - -Bug fixes ---------- -#1099 - Derby generated artefacts are not sorted alphabetically -#1101 - Internal API leak exposed through covariance in - AbstractTable.joinXXX() methods -#1110 - VARRAY element type information is lost when unnesting - VARRAY's in Oracle -#1111 - VARRAY element type information is lost when unnesting - VARRAY's returned from functions in Oracle -#1114 - Syntax error when unnesting TABLE of OBJECT in Oracle. - The unnested table contains several columns but jOOQ only - unnests "COLUMN_VALUE" -#1117 - NullPointerException when passing an ArrayRecord - containing a null array to a stored function in Oracle -#1125 - Postgres needs casting for date time data types in - queries like SELECT ? FROM DUAL -#1131 - DB2: [Noauthorized routine named "LIKE" of type - "FUNCTION" having compatible arguments was found] when - using Field.like(concat(x, y)) -#1133 - Compilation errors in generated source code if the same - constraint name exists in several schemata -#1134 - NullPointerException in code generation when a foreign - key constraint references a table from another schema - that is not being generated -#1135 - Generated Javadoc references inputSchema instead of - outputSchema - -Test cases ----------- -#1009 - Add more integration tests for proper handling of - java.sql.Date, Time, Timestamp -#1090 - Run jOOQ tests against AdventureWorks SQL Server sample - database -#1105 - Add integration tests for multi-schema source code - generation and querying -#1122 - The 10k lines of integration test code are too heavy for - the compiler. Create test modules with fewer lines of - code, each. - -Version 2.0.3 - January 29, 2012 -================================================================================ - -This release focuses on increased compatibility between various -SQL dialect integrations as far as ARRAY and JOIN support is -concerned: - -- ARRAY types are only available in H2, HSQLDB, Oracle, Postgres. - Nevertheless, they can be somewhat simulated in other dialects - using nested selects with UNION ALL. Increased compatibility - leads to a nicer API, where ARRAYs are used along with ALL/ANY - quantifiers, for instance. - -- JOIN syntaxes can be quite powerful in SQL. Apart from - simulating NATURAL JOIN, JOIN USING clauses, as well as a - synthetic "KEY JOIN" syntax, jOOQ now also supports nesting - JOIN expressions to create more complex table sources. See a - recent blog post on the subject here: - -http://blog.jooq.org/2012/01/15/lets-revise-the-sql-from-clause/ - -Features and improvements -------------------------- -#578 - Add KEY JOIN syntax to simulate joining using generated - foreign keys -#577 - Simulate NATURAL JOIN syntax, where this is unavailable -#582 - Simulate JOIN USING syntax, where this is unavailable -#671 - Allow for nesting JOIN clauses -#676 - Add Table.join() methods to create more flexible table - sources -#993 - Add Field.equalAny(T[]), .equalAny(Field) methods -#1048 - Simulate (array) syntax for dialects - that do not support arrays -#1051 - Add Factory.execute(String, Object...) as a convenience - method for Factory.query(...).execute() -#1055 - Simulate Factory.table(Object[]) and table(List) using - UNION ALL in dialects that do not support arrays -#1060 - Improve debug logging of H2 arrays. The syntax is not - ARRAY[1, 2], but (1, 2) -#1065 - Add OracleFactory.sysContext(String, String) to support - Oracle's SYS_CONTEXT function -#1069 - Add support for INSERT INTO table(field1, field2, ...) - SELECT syntax - as opposed to the existing INSERT INTO - table SELECT -#1072 - Add support for LIKE .. ESCAPE .. syntax -#1074 - Add Field.notBetween(T, T) for convenience -#1080 - Add support for JDBC's Statement.setFetchSize() in - ResultQuery.fetchLazy() -#1082 - Add some more DEBUG logging in AbstractResultQuery - -API changes (backwards-compatible) ----------------------------------- -#1059 - Change SelectFromStep.from(Collection>) to - from(Collection>) - -API changes (backwards-incompatible) ------------------------------------- -#1087 - Change the NTILE function to return Field - instead of Field - -Bug fixes ---------- -#1071 - Make Sequence Serializable -#1081 - Derby error in NULL handling when simulating unnested - arrays that contain NULL values -#1084 - Bind index mismatch in val(null).equal(null) and in - val(null).notEqual(null) -#1091 - Add missing @Support annotations on Table.crossJoin() - methods - -Test cases ----------- -#1026 - Add integration tests for NTILE window function and - document compatibility -#1073 - Add integration tests for NOT IN queries holding NULL - arguments - -Version 2.0.2 - January 8, 2012 -================================================================================ - -This is a maintenance release for jOOQ 2.0. The main improvements -include - -- The whole jOOQ API is now annotated with a new org.jooq.Support - annotation to help you assess whether a certain SQL clause is - available in your database or not. This is particularly useful - when your application should support several databases at once - (e.g. MySQL, Postgres, Oracle) -- The Oracle PIVOT clause is now formally supported for advanced - statistical queries in Oracle. This clause will be simulated in - other dialects in the future. -- The DATE data type can be mapped to TIMESTAMP. This important - when you query a legacy Oracle database, where DATE columns - can also contain time information -- Several convenience methods have been added for more fluent - syntax, when using plain SQL result queries, subqueries as - tables, or when unnesting arrays in ANY() and ALL() quantifiers - -Further type mapping support is still experimental. An official -cooperation with MinuteProject for source code generation is -being analysed. With MinuteProject, many source code generation -issues could be addressed centrally, as MinuteProject specialises -in source code generation: - -http://minuteproject.wikispaces.com/ - -Features and improvements -------------------------- -#595 - Add support for Oracle's PIVOT clause -#869 - Add support for using ANY, ALL with arrays, not just with - subselects -#1007 - Formally document the API methods to indicate whether - something is supported by any given SQL dialect -#1011 - Add code generation configuration parameter to avoid - generating @Generated annotation -#1019 - Render LIMIT x OFFSET y also for MySQL, instead of - LIMIT y, x -#1022 - Add missing Sybase ASE implementation for Factory.use() -#1024 - Add Factory.resultQuery(String, Object...) to allow for - arbitrary execution modes of plain SQL queries (lazy, - later, into, array, etc) -#1025 - Add missing SQLite implementation for Factory.deg() and - Factory.rad() -#1033 - Generate table comments into generated Tables.java as - Javadoc -#1040 - Add Object[][] Result.intoArray() and - Object[] Record.intoArray() for convenience. Let - E Record.into(Class) also support array types. -#1041 - Add Table Factory.table(Select) convenience - method for more fluency -#1042 - Add support for DISTINCT keyword in SUM, AVG, MIN, MAX - aggregate functions -#1046 - Generate Ingres table and column comments in generated - source code (only Ingres 10) - -API changes (backwards-compatible) ----------------------------------- -#1050 - Deprecate usage of SOME quantifier in predicates, such as - equalSome() - -API changes (backwards-incompatible) ------------------------------------- -#1036 - Fixed API typo in - WindowsRowsStep.rowsBetweenUnboundedFollwing() -#1037 - The fluent API allows for JOIN clauses without FROM - clause - -Bug fixes ---------- -#1010 - The MERGE INTO .. WHEN NOT MATCHED THEN INSERT .. syntax - may cause type-safety issues in some databases. VALUES - should be converted before binding -#1014 - FindBugs: Latent risk of infinite recursion due to typo - in QueryPartList.retainAll(); -#1015 - FindBugs: 7 occurrences of "Bad attempt to compute - absolute value of signed 32-bit hashcode". In extreme - cases, this could lead to SQL syntax errors -#1016 - The Oracle CONNECT BY cond1 AND cond2 syntax erroneously - creates a WHERE cond2 CONNECT BY cond1 statement -#1028 - Syntax errors when using untyped param() in HSQLDB (and - other strongly typed dialects) -#1029 - Postgres can't bind NULL values in cases, where bind type - is Object.class and bind value was created with - Factory.param() -#1030 - UnsupportedOperationException when calling - Query.bind(int, Object) on a query containing plain SQL - fields -#1031 - Incorrect debug logging when plain SQL QueryParts like - field("?") bind null values -#1032 - Incorrect debug logging when plain SQL QueryParts contain - String literals, such as 'Hello? Anyobody out there?' -#1047 - Field.notEqualAny() erroneously renders <> ALL() - -Test cases ----------- -#1021 - Add explicit integration tests for - LEFT|RIGHT|FULL OUTER JOIN - -Version 2.0.1 - December 23, 2011 -================================================================================ - -This is a maintenance release for jOOQ 2.0. The main improvements -include - -- Better integration for using jOOQ with Spring Data. This - includes support for named parameters, as well as allowing to - change bind values on previously constructed Query objects -- The MERGE statement has been enhanced for better integration - with Oracle. -- jOOQ is now ready to use with Scala / Groovy - -For more information about using jOOQ with Scala, see this blog -post: -http://blog.jooq.org/2011/12/11/the-ultimate-sql-dsl-jooq-in-scala/ - -There is now also experimental support for a custom type mapping. -This mapping allows to rewrite data types at code generation time -as well as to specify custom enum data types (e.g. boolean Y/N). -Not all integration tests run smoothly for custom data types, -hence, this feature is not yet fully supported. - -Features and improvements -------------------------- -#691 - Add support for Oracle CURSOR REF IN / INOUT parameters -#677 - Add type-mapping configuration, enforcing types for - columns -#947 - Add custom type mapping support (experimental) -#968 - Allow for custom enum types, configured in the code - generator (experimental) -#974 - Add Schema.getTable(String), getSequence(String), - getUDT(String) for better runtime Schema meta-navigation -#975 - Add Sequence.getName(), getSchema(), getDataType() -#980 - Add support for named parameters, to better interact with - Spring -#991 - Add Query.bind(String, Object) and bind(int, Object) to - easily modify existing bind values -#992 - Document thrown DataTypeException in Convert methods -#998 - Enhance MERGE statement for Oracle extensions: - WHEN MATCHED THEN UPDATE .. WHERE .. DELETE WHERE .. - WHEN NOT MATCHED THEN INSERT .. WHERE .. -#1000 - Add support for MySQL's INSERT INTO .. SET .. syntax in - MERGE statement's WHEN NOT MATCHED THEN INSERT clause - -API changes (backwards-compatible) ----------------------------------- -#981 - Cannot insertInto(table("my_table")), as plain SQL tables - return Table, not Table. Relax - bound on R -#988 - Change Factory.field(String) to return Field - instead of Field -#999 - Make MERGE's WHEN MATCHED .. and WHEN NOT MATCHED .. - clauses optional -#1001 - Identity.getField() should return TableField - instead of Field -#1006 - Add Factory.value(...) as a synonym for Factory.val(...) - for increased Scala / Groovy compatibility - -Bug fixes ---------- -#973 - EnumType renders name() instead of getLiteral() in - formatXXX() methods -#977 - EnumType renders name() instead of getLiteral() in - Convert.convert() method -#979 - Record.from() sets all changed flags to true. That's not - necessarily correct in the event of storing the record - back to the DB -#985 - AbstractRecord.equals() does not correctly compare - arrays. Compare them using Arrays.asList() -#986 - Postgres / DB2 / Sybase ASE foreign-key namespace is - unique-per-table. jOOQ forces all foreign keys from all - tables into the same namespace -#990 - Problems when encoding arbitrary byte[] as String(byte[]) - in inlined SQL. This can cause issues when DEBUG-level - logging is activated -#995 - Routines don't respect SchemaMapping - Github issue #8 -#1002 - TableRecord.storeUsing() doesn't update IDENTITY column - values, if the column is not part of the main unique key -#1003 - Sybase / SQL Server / MySQL / Ingres / H2 / Derby's - INSERT .. RETURNING simulation returns null if a table - has an IDENTITY column, but no primary/unique key -#1005 - The INSERT INTO .. VALUES .. syntax may cause type-safety - issues in some databases. VALUES should be converted - before binding - -Test cases ----------- -#984 - Detach IDENTITY column tests from UNIQUE KEY tests, - create a dedicated test suite instead - -Version 2.0.0 - November 25, 2011 -================================================================================ -This release is a fresh start in many areas of jOOQ, adressing -issues that have been requested by users for a long time. These -release notes docment the most important changes, a detailed -upgrade guide, as well as the detailed list of improvements. - -Most important changes ----------------------- -- The API became more static. This applies to many Factory - methods, such as val(), literal(), as well as to many Field - methods that have been moved over to the Factory. For example, - when before, you wrote this using "postfix function notation": - -
    NAME.replace(" ", "_").trim()
    - - you will now write (just as in SQL): - -
    trim(replace(NAME, " ", "_"))
    - - Using static imports of Factory.*, jOOQ makes SQL look even - more like SQL. The current "postfix notation" is maintained for - backwards compatibility. -- By default, jooq-codegen will now generate a "dynamic" meta - model as opposed to the existing static one. Generated tables - covariantly override the as(String) aliasing method, leading - to a much more convenient aliasing style. When before, you - wrote: - -
    -Table parent = T.as("parent");
    -Table child  = T.as("child");
    -Condition join =
    -  parent.getField("ID").equal(child.getField("PARENT_ID"))
    -
    - - You can now write: - -
    -T parent = T.as("parent");
    -T child  = T.as("child");
    -Condition join = parent.ID.equal(child.PARENT_ID)
    -
    - - Of course, the existing notation still works - -- Exceptions are no longer checked. When previously, the DB's - SQLException was propagated to client code, there is now an - unchecked DataAccessException hierarchy, similar to that of - Spring. This will eventually give way to a standardised error - handling abstraction, in future developments. -- Window functions are now constructed from their underlying - aggregate functions just like in SQL. For example: - -
    -sum(AMOUNT)
    -sum(AMOUNT).over().partitionBy(ACCOUNT)
    -
    - - This makes for a more concise API, especially when considering - future extensions, such as Oracle's KEEP (DENSE_RANK FIRST...) - syntax. -- More type safety has been introduced regarding various places - where generic and types are involved. - This is especially true for INSERT / UPDATE / DELETE statements -- Sequences now also have a type -- Unsigned number types are now supported in those databases that - use them. Unsigned numbers are implemented in jOOU, a spin-off - open source project. For convenience, this library is - "internalised" into jOOQ, to avoid adding a dependency - -http://code.google.com/p/joou/ - -Upgrade instructions: ---------------------- -Various of the above changes are incompatible with jOOQ 1.x. In -order to upgrade, please be aware of the following pitfalls: - -- The schema needs to be re-generated. -- Much of the post-fix function notation is replaced by static - methods in the Factory. Today's org.jooq.Field API is - maintained in jOOQ 2.0, for backwards compatibility. It will - be removed, eventually, though. Expect some incompatible - changes, where window functions are involved -- Some Factory instance methods (such as val(), literal()) are - now static. They are compatible, but may cause compiler - warnings. -- The meta model is now an instance model by default. If you - prefer the static meta model, you can configure this in your - jooq-codegen configuration. -- The additional typesafety involving and types may cause - compiler warnings and errors. -- SQLException is no longer part of the API. This can cause - compiler issues, in particular when extending jOOQ -- Some utility classes have moved to org.jooq.tools - -Should these incompatibilities be too significant for your -project, you can still stay on the 1.x branch, which will be -maintained for a while. Be aware that upgrading might be more -difficult, later, though. - -Features and improvements -------------------------- -#55 - Implement improved exception handling -#117 - Improve DSL support for field and table aliasing (decrease - verbosity) -#519 - Add support for MySQL UNSIGNED numeric types -#626 - Create static function access -#661 - Add support for bitwise operators -#718 - Sequences should be mapped to appropriate type (e.g. - SMALLINT, INT, BIGINT, etc) -#734 - Add support for Oracle / SQL Server CUBE() and ROLLUP() - grouping functions -#751 - Add support for Oracle / SQL Server GROUPING SETS() - function -#799 - Add support for Oracle PL/SQL's object-oriented MEMBER - PROCEDURES and MEMBER FUNCTIONS -#804 - Add to Insert, Update, Delete -#835 - Review API typesafety for InsertSetMoreStep - set(Field, T) and similar methods -#890 - Add Factory.selectCount() convenience method -#891 - Let min() max(), etc functions return a new type - AggregateFunction. This type can then be used as an entry- - point for window functions -#892 - Add support for Oracle / SQL Server GROUPING() and - GROUPING_ID() functions to be used along with CUBE() and - ROLLUP() -#893 - Simulate ROLLUP() function for MySQL, using the WITH - ROLLUP grouping modifier -#894 - Move functions from Field to org.jooq.impl.Factory - and make them static -#895 - Add power(..., Field) -#897 - Add (experimental) Spring integration project -#898 - Replace usage of checked SQLException by an unchecked - DataAccessException, similar to that of Spring -#899 - Build jOOQ .jar files as bundles to be deployed into OSGI - environments -#900 - Purge deprecated API - Prior to 2.0 -#901 - Introduce InvalidResultException as a subtype of - DataAccessException for integrity checks in methods like - ResultQuery#fetchOne(), ResultQuery#fetchMap(), etc. -#902 - Make AggregateFunction the base type for constructing - window functions -#904 - Move SQLDialectNotSupportedException into - org.jooq.exception package -#905 - Introduce MappingException as a subtype of - DataAccessException for integrity checks in methods like - ResultQuery#fetchInto(), etc. -#907 - Add missing Field.like(Field), notLike(Field) - methods to overload the existing Field.like(T), notLike(T) -#908 - Change rpad / lpad functions to accept String instead of - char -#912 - Add R newRecord(Table, Object) as - the inverse of various into(Class) methods -#916 - Add > {Record.into(Table) | - Result.into(Table) | ResultQuery.fetchInto(Table) | - Cursor.fetchInto(Table)} -#917 - Add various Cursor.fetchOneInto() convenience methods -#918 - Add CustomTable, CustomRecord as base classes for more - convenience when used with various into(Table) methods -#919 - Allow for accessing non-public constructors of Record - subtypes -#923 - Move some utilities to org.jooq.tools -#924 - Generate a reference to every table in a new Tables.java - class for improved static access -#928 - Add DataTypeException extending DataAccessException in - case something went wrong when converting data types -#930 - Support converting date time types to java.util.Calendar. - This applies to various into(Class) methods, as well as - Result.getValue(xx, Class) -#931 - Allow for conversion between Long and date/time types, and - vice versa -#932 - Let the bound of R in TableRecord extend TableRecord, - in UpdatableRecord to extend UpdatableRecord -#933 - Add support for type Character in Record.into(Class) - methods and similar -#936 - Accept primitive types, such as int.class for type - conversion -#938 - CODEGEN: Add static/instance table field configuration -#939 - Include license.txt and readme.txt in .jar files' META-INF - directory -#953 - Make DefaultGeneratorStrategy methods non-final to allow - for overriding -#954 - Add examples for source code generation of multiple - schemata with Maven -#955 - Generate a reference to every type in a new UDTs.java - class -#957 - Add R Factory.newRecord(UDT) for constructing - attached UDTRecords -#958 - CODEGEN: Add generation-time schema mapping, allowing for - re-writing schemata in jooq-codegen -#960 - CODEGEN: Add code generation configuration parameter to - avoid using the new UByte, UShort, UInteger, ULong wrappers - for UNSIGNED number types -#961 - Use Oracle's SYS.ALL_SEQUENCES.MAX_VALUE to determine the - type of a sequence. -#969 - Add List ResultQuery.fetch(Field, - Class) convenience method - -Bug fixes ---------- -#686 - Reduce the internal API leak by preventing access to - TableFieldImpl, UDTFieldImpl, ParameterImpl -#903 - lag(Field, int, T) erroneously delegates to lead() -#906 - Add more NullPointerException safety to API -#913 - NoClassDefFoundError in JooqUtil.isJPAAvailable() -#920 - Generic type is lost in Cursor.fetchInto(RecordHandler) -#925 - SelectConditionStep should extend SelectConnectByStep, not - SelectGroupByStep -#926 - AbstractRecord.into() fails to convert java.sql.Date into - java.util.Date -#934 - Don't consider static members in reflection utilities when - used with Record.into(Class) and similar methods -#935 - Don't consider final member fields in reflection utilities - when used with Record.into(Class) and similar methods -#937 - In the event of name clash (same name for table and field) - generated code has errors -#945 - Calling UpdatableRecord.setValue() twice with the same - argument causes the changed flag to be reset to false -#948 - Always set the changed flag to true in Record.setValue() -#959 - Compilation errors in generated source code if MySQL enum - values match Java reserved words, such as 'true', 'false', - 'new', etc... -#962 - Postgres ordering of generated enum literals is unstable -#967 - Better document type conversion - -Version 1.7.0 - November 25, 2011 -================================================================================ -This is a maintenance release for the 1.x branch. Some important -bug fixes are merged from version 2.0. These include: - -Bug fixes ---------- -#925 - SelectConditionStep should extend SelectConnectByStep, not - SelectGroupByStep -#926 - AbstractRecord.into() fails to convert java.sql.Date into - java.util.Date -#937 - In the event of name clash (same name for table and field) - generated code has errors -#945 - Calling UpdatableRecord.setValue() twice with the same - argument causes the changed flag to be reset to false -#948 - Always set the changed flag to true in Record.setValue() -#951 - Empty Password for jooq-codegen-maven causes NPE - -Version 1.6.9 - November 7, 2011 -================================================================================ -This is a maintenance release for the 1.x branch. Developments -on this branch will stop after version 1.6.9. Only important bug -fixes are merged to this branch. Developments for release 2.0 -have started. - -The most important functionality in release 1.6.9 is the newly -added support for JDBC batch operations. You can now batch -execute several queries. - -See the official blog for more information: -http://blog.jooq.org/2011/10/25/jdbc-batch-operations-with-jooq/ - -Features and improvements -------------------------- -#621 - Add support for JDBC batch operations -#794 - Add support for ORDER BY [int value] in order to reference - a column index for sorting -#882 - Optimise Field.isTrue() and isFalse(). Take Field's data - type into consideration. -#885 - Add support for INSERT INTO .. VALUES (..) syntax, - omitting explicit field declarations -#887 - Add List Cursor.fetchInto(Class) - -Bug fixes ---------- -#748 - H2 regression in 1.3.158 regarding stored functions, which - return a ResultSet (this was fixed in H2) -#859 - Derby casting of numeric types to BOOLEAN doesn't work -#886 - Regression in date extract function when used in a - subselect -#888 - Derby casting of VARCHAR to FLOAT (and similar) doesn't - work - -Version 1.6.8 - October 22, 2011 -================================================================================ -The main improvement of this release is the re-design of the -stored procedure / function API. With 12 supported RDBMS, which -all have their own idea about what is a stored procedure and what -is a stored function, it has proven to be a better design, to -unite them in one single type: org.jooq.Routine. A routine can -have a return value as well as OUT parameters. It can be embedded -in SQL and used as a field or a table. - -This means, you will need to re-generate your database schema, -when upgrading to jOOQ 1.6.8. After re-generation, you'll need to -fix your client code. These are the package changes: - -- [generated.package].procedures > [generated.package].routines -- [generated.package].functions > [generated.package].routines -- [generated.package].Procedures > [generated.package].Routines -- [generated.package].Functions > [generated.package].Routines - -Oracle generated packages are not re-located. With these -improvements, using stored procedures and functions becomes even -more reliable, especially when cursor types are involved. Read -more about the rationale behind this change: - -http://blog.jooq.org/2011/10/17/what-are-procedures-and-functions-after-all/ - -Apart from that, important improvements have been made in the -area of plain SQL tables. Also, consider a demo integration of -jOOQ with Google Cloud SQL: - -http://blog.jooq.org/2011/10/22/jooq-and-google-cloud-sql-example/ - -Features and improvements -------------------------- -#271 - Don't pre-fetch table meta data when selecting from plain - SQL tables -#489 - Add support for SELECT * (i.e. render SELECT * where - applicable) -#596 - Add support for VARIANCE() and STDDEV() OVER() window - functions -#608 - Add jOOQ version number in generated source code -#670 - Add more Javadoc to Field.xxx() functions -#692 - Add support for ResultSet type returned from HSQLDB - stored functions -#850 - Use http://www.jooq.org as URL for the @Generated - annotation -#854 - Add convenience methods Fields.isTrue(), isFalse() for - conversion of "Y", "YES", "1", "true", "on", etc into a - boolean condition -#870 - Add support for MEDIAN aggregate function -#872 - Add support for STDDEV_POP(), STDDEV_SAMP(), VAR_POP(), - VAR_SAMP() aggregate functions -#874 - Reduce the number of internal classes for dialect-specific - function aliases -#878 - Implement DataType.equals() and hashCode() - -API changes (backwards-compatible) ----------------------------------- -#851 - Change Field.{sortAsc|sortDesc}(List sortList) into - Field.{sortAsc|sortDesc}(Collection sortList) - -API changes (backwards-incompatible) ------------------------------------- -#848 - Purge deprecated API - Prior to 1.6.1 -#849 - Replace Cursor.fetchResult() by Cursor.fetch() -#852 - Review stored procedures / functions concept. Merge them - all into a single "Routine" type - -Bug fixes ---------- -#756 - Error when aliasing HSQLDB and Postgres unnested tables -#761 - Exception when TRACE logging execution with plain SQL - tables involved -#773 - Execute standalone stored functions as CallableStatement - to prevent issues with transactions -#847 - Query.getSQL() doesn't render dialect-specific SQL when - Query is constructed using the fluent API -#853 - DB2 generated convenience methods for stored functions - have unstable ordering -#857 - Derby casting of numeric types to String / VARCHAR does - not work -#858 - SQLDataType.getSQLDataType() should return itself, instead - of null -#860 - SQLite CEIL function is incorrectly simulated. CEIL(2.0) - returns 3.0 instead of 2.0 -#861 - Field.replace(String) generates bad SQL for various RDBMS. - Field.replace(String, String) works, though -#863 - Ingres integration generates illegal SQL when selecting - things like SELECT 1 WHERE 1 = 1 -#866 - Sybase ASE Field.replace(String) function incorrectly - removes the argument string -#873 - Error when selecting two times the same aggregate field -#877 - Compilation error in generated source code when a table - without a primary key has an identity column -#879 - Add Google Cloud SQL Example -#880 - Query.getSQL() does not consider SchemaMapping - -Test cases ----------- -#811 - Loader integration tests fail for SQLite -#812 - CSV Loader test leaves Postgres JDBC connection in an - inconsistent transactional state on error -#856 - Add integration tests for Field.abs() -#865 - Add integration tests for Field.ascii() -#867 - Add integration tests for Field.sum(), avg(), max(), min() -#881 - Re-design H2 stored functions to be pre-compiled, in order - to speed up integration tests - -Version 1.6.7 - September 25, 2011 -================================================================================ - -This release coincides with the launch of the new website at -http://www.jooq.org. Hence, it ships with little additions to the -deliverable itself. - -Apart from new convenience methods, the main addition is a Maven -plugin for jooq-codegen contributed by Sander Plas. - -Features and improvements -------------------------- -#797 - Create Maven plugin for source code generation -#825 - Add List> Factory.fetchMany(String) to - allow for fetching several result sets from stored - procedures, such as Sybase ASE's "sp_help" -#838 - Implement MetaDataFieldProvider.toString() -#841 - Add List Result.getValues(Field, Class) -#842 - Add Query.getBindValues() method to allow for extracting - bind values in the correct order -#843 - Add Factory.fetch(ResultSet) to transform a JDBC ResultSet - into a jOOQ Result - -API changes (backwards-compatible) ----------------------------------- -#837 - Avoid final keyword on Object methods, such as .equals(), - .hashCode(), etc - -Bug fixes ---------- -#836 - Bad syntax when selecting from aliased plain SQL tables -#839 - Boolean conversion in getValueAsBoolean() should trim - String values first -#840 - Numeric conversions in getValueAsXXX() should trim String - values first -#844 - NullPointerException when selecting a column from a Result, - that does not exist - -Version 1.6.6 - September 11, 2011 -================================================================================ - -Finally, support for another RDBMS has been added. Sybase's other -important product Sybase Adaptive Server Enterprise (or simply -Sybase ASE) is now officially supported by jOOQ - -Apart from this, there had been important improvements with the -recently added INSERT .. RETURNING clause, as well as some fixes -related to DECIMAL / NUMERIC data types - -Features and improvements -------------------------- -#796 - Complete missing public org.jooq.impl Javadoc -#800 - Add support for Sybase Adaptive Server Enterprise -#808 - Add support for INSERT .. RETURNING for Ingres -#809 - Add support for INSERT .. RETURNING for Sybase SQL - Anywhere using SELECT @@identity -#810 - Add support for INSERT .. RETURNING for SQLite using - last_inserted_rowid() -#813 - Add DSL support for INSERT .. RETURNING -#814 - Change TableRecord to reload its trigger-initialised main - key in Oracle and other RDBMS that don't support IDENTITY - columns -#818 - Add SQLiteFactory.rowid() -#819 - Support SQLite AUTOINCREMENT columns as IDENTITY -#820 - Add Factory.fetchOne(String) for executing plain SQL - queries that return single records -#826 - Allow for returning several records in the INSERT .. - RETURNING clause. This now works for DB2, HSQLDB, MySQL, - and Postgres -#827 - Support Sybase SQL Anywhere's TOP n START AT m clause - instead of simulating it with nested SELECT's - -API changes (previous API now deprecated) ------------------------------------------ -#817 - Deprecate Factory.lastID(Identity) - -Bug fixes ---------- -#815 - SQL Server fetching of IDENTITY value is broken -#821 - Optimise ResultQuery.fetchAny() executing fetchLazy() - internally, and only fetching one record from the cursor -#822 - Let Constant cast to more precise NUMERIC/DECIMAL types - in those RDBMS where casting is necessary -#823 - Cannot bind SQLite BigDecimal, BigInteger types - bind - them as String instead -#824 - BigInteger values cannot be bound in DB2, Derby -#828 - Document inefficient implementation for GREATEST and LEAST - in some RDBMS - -Version 1.6.5 - August 28, 2011 -================================================================================ - -This release finally adds a loader for CSV data to jOOQ. You can -now load CSV data using a simple fluent API, configuring error -handling, duplicate behaviour and transaction handling, as well -as various CSV parameters. - -This release also changes the way generated keys are retrieved -after INSERT's. Instead of (potentially inconsistently) running -SELECT MAX(pk) immediately after the INSERT, Postgres' INSERT.. -RETURNING clause is used (or simulated), in a single statement. - -Features and improvements -------------------------- -#784 - Add Result.exportXML() to retrieve a DOM document similar - to that of .formatXML() -#792 - Add support for loading of CSV data into tables -#795 - Add List fetch(int, Class) and - fetch(String, Class) convenience methods -#803 - Add support for INSERT .. RETURNING or simulate it where - not available -#805 - Add T[] fetchArray(int, Class) and - fetchArray(String, Class) convenience methods -#806 - Add T fetchOne(int, Class) and - fetchOne(String, Class) convenience methods - -Bug fixes ---------- -#798 - Oracle IN (...) clause with more than 1000 arguments does - not work -#802 - Use "INSERT .. RETURNING" instead of "SELECT MAX(pk)" - to retrieve the primary key of a new record - -Version 1.6.4 - August 07, 2011 -================================================================================ - -This release ships with a couple of useful concepts inspired by -other frameworks. These are: - -- selecting into custom POJO's. Results can be mapped to POJO's - by convention or using JPA @Column annotations -- selecting into custom callbacks. This is already a wide-spread - practice in Spring JdbcTemplates. -- selecting long-running queries asynchronously. This idea has - been inspired by the Avaje Ebean framework - -Apart from these changes and some bugfixes, the internal API has -been completely re-designed. The idea here is that query -rendering and variable binding are even faster (less String -objects), more extensible and more accurate. This is a pre- -requisite for many future developments with even more complex SQL -statements, such as for instance CTE's (Common Table Expressions) - -Features and improvements -------------------------- -#137 - Add support for asynchronous query execution using - FutureResult ResultQuery.fetchLater() similar to - Avaje Ebean -#198 - Add SELECT INTO functionality into POJO's using - T ResultQuery.fetchInto(Class) similar to JPA - CriteriaQuery -#728 - Add .fetchInto(RecordHandler) to ResultQuery, Result, - and Cursor to allow for callbacks similar to Spring's - JdbcTemplate/Ollin Framework -#774 - Add more TRACE logging to .fetchLazy() -#777 - CURSOR: Add function alias: UNNEST for TABLE -#781 - Add E function (Euler number) -#782 - Add T Record.getValue(..., Class) methods - for convenient type conversion -#785 - Allow for storing TableRecord with a provided Field[] - indicating the primary key -#786 - Document thread-safety facts in Factory Javadoc -#788 - Add Key.getFieldsArray() convenience method -#793 - Add support for Oracle's SYS_CONNECT_BY_PATH function - -API changes (backwards-incompatible) ------------------------------------- -#758 - Change internal QueryPart rendering and binding API to use - Configuration and Context as callback parameters. If you - use CustomField or CustomCondition, please correct your - implementations accordingly. Other parts of the API should - not be affected -#778 - Purge deprecated API, deprecation prior to jOOQ 1.5.7 -#790 - Purge deprecated generated code, deprecation prior to - jOOQ 1.5.7 - -API changes (previous API now deprecated) ------------------------------------------ -#776 - Deprecate QueryPart.getSQL(), add Query.getSQL() -#789 - Deprecate Record constructors with Configuration - parameter - -Test cases ----------- -#636 - Add integration tests for more advanced CONNECT BY - example -#772 - Add integration tests for selecting cartesian products - (several tables in FROM clause) - -Bug fixes ---------- -#730 - Sybase cannot bind null values in plain SQL -#759 - Omit the TOP 100 PERCENT clause in SQL Server ordered - top-level queries -#767 - An empty Java package is generated for PL/SQL packages - containing underscores -#771 - Some exotic literals are not properly escaped with quotes - yet, e.g. UDT identifiers, VARRAY types, etc. -#775 - Automatic re-attaching after deserialisation does not work - when used with .fetchLazy() -#787 - The UpdatableRecord's internal changed flags are not - updated after INSERTs / UPDATEs - -Version 1.6.3 - July 31, 2011 -================================================================================ - -This is mainly a maintenance release with lots of bugfixes, -mostly around code generation, plain SQL tables, and data types. -Please note that generated source code may contain incompatible -changes due to #639 (see below for details)! - -Apart from that, project CURSOR is advancing and it is now -possible to unnest arrays into tables. See this article for -details about where jOOQ is heading with project CURSOR: - -http://blog.jooq.org/2011/07/24/the-power-of-ref-cursor-types/ - -Features and improvements -------------------------- -#679 - Improve H2 NVL2 support as of H2 1.3.156 -#680 - Improve H2 ROUND support as of H2 1.3.156 -#735 - Add README documentation to GitHub -#736 - Add more info regarding number of generated artefacts in - jooq-codegen logging -#750 - Add DataType.isNumeric(), .isString(), .isTemporal(), - .isBinary() -#754 - Log query as executed by JDBC PreparedStatement when - TRACE logging (without inlining variables) -#752 - CURSOR: Add support for selecting from ARRAY types -#762 - Use H2's native support of NVL, instead of COALESCE -#764 - CURSOR: Add support for selecting from ARRAY types - returned from stored functions - -API changes (backwards-incompatible) ------------------------------------- -#639 - Map DECIMAL(n, 0) and NUMBER/NUMERIC(n, 0) data types - to Byte/Short/Integer/Long/BigInteger instead of - BigDecimal in generated source code. Re-generated code - will not be compatible! - -API changes (previous API now deprecated) ------------------------------------------ -#731 - Inconsistent API with Field.lessOrEqualToXXX(). Removed - "To" from method name -#757 - Deprecate Factory.constant() methods - -Test cases ----------- -#731 - Add missing integration tests for equalAll(), equalSome() - and similar methods -#747 - Upgrade H2 to 1.3.158 - -Bug fixes ---------- -#632 - Sybase error : column @p0 not found in nested SELECT -#700 - Restore HSQLDB ARRAY support with INFORMATION_SCHEMA - change in HSQLDB 2.2.3, and some fixes in 2.2.5 -#725 - Cannot insert byte[] data with plain SQL -#733 - H2 changed JDBC type for ResultSet/CURSOR from 0 to -10, - like Oracle -#737 - Compilation errors in generated source code if table - fields contain spaces -#738 - Compilation errors in generated source code if MySQL - procedure parameter type contains two comma-separated - arguments (like DECIMAL(10,2)) -#739 - Postgres navigator methods and keys are not re-generated - in the same order -#740 - Formatting is broken on Result.format() with some special - newline characters -#743 - Make SQL Server INFORMATION_SCHEMA independent from - HSQLDB again, to prevent incompatibility issues -#744 - Ingres REAL and FLOAT4 types are generated as FLOAT/FLOAT8 - which maps to java.lang.Double, instead of java.lang.Float -#753 - Postgres error when binding array that contains null - values -#755 - NullPointerException when converting an array containing - a null value -#766 - Bad decoding of JDBC Types BIGINT (to BigInteger instead - of Long) and REAL (to BigDecimal instead of Float) when - plain SQL tables are involved - -Version 1.6.2 - July 10, 2011 -================================================================================ - -This release mainly introduces three new projects. - -Project CURSOR where jOOQ finally supports various RDBMS's TABLE, -CURSOR, and REF CURSOR data types. This is especially useful when -those types are returned from stored procedures and functions. -Cursors are simply mapped to jOOQ Result types and can -thus be used like regular table results - -Project EXPORT aims at exporting data from the database in -various serialisable formats, such as XML, CSV, HTML, Text, JSON. -This project will be continued in the future, to also -deserialise from (some of) these data streams. This will allow -for easy transport of jOOQ Result types over the net. - -Project CODEGEN has finally been started. Many improvements -suggested by jOOQ users will be implemented in the next releases. -In this release, important fixes have been made to prevent -compilation errors in generated artefacts. - -Features and improvements -------------------------- -#61 - EXPORT: Add Result.formatXML() -#166 - CURSOR: Add support for ResultSet type returned from - Oracle stored procedures / functions -#411 - Allow for fetching Map (instead of Record) - and List> (instead of Result) -#549 - Add Factory.function() for plain SQL functions -#611 - Simulate RPAD and LPAD in SQL Server, Sybase -#627 - Add support for Postgres FOR UPDATE OF [table-name] clause -#628 - Add support for REPEAT (SQL Server: REPLICATE) function -#637 - Nicely format time in StopWatch logging output -#640 - Simulate Postgres FOR UPDATE OF [table-name] clause in - other dialects -#649 - CURSOR: Add Cursor.fetch(int) .fetchOne() - .fetchResult(int) .fetchResult() -#653 - Add support for MySQL encryption and compression functions -#660 - Clarify Javadoc of UpdatableRecord to explain its - behaviour when changing the main unique key -#669 - EXPORT: Add Result.formatHTML() -#672 - Add convenience method UpdatableRecord.copy() in order to - reset primary key values for a subsequent INSERT -#675 - EXPORT: Add Result.formatCSV() -#683 - Implement ResultImpl.equals() and .hashCode() -#684 - Implement AbstractStore.equals() and .hashCode() -#685 - Add Store.size() to indicate the maximum index of the - Store -#687 - EXPORT: Add result.formatJSON() -#689 - Create separate builds: jooq-core.zip and - jooq-with-dependencies.zip -#690 - CURSOR: Add support for ResultSet type returned from H2 - stored functions -#695 - CURSOR: Add support for ResultSet type returned from - Postgres stored functions -#697 - Add Factory.fetch(String) for executing plain SQL queries - that return results -#701 - Add ResultQuery.fetchArray() and .fetchOneArray to return - Object[][] and Object[] -#704 - Always add top and bottom line in Result.format() -#705 - Right-align numeric values in Result.format() -#716 - Add SUBSTRING function Field.substring(Field, Field) - taking fields as arguments -#719 - Document risk of SQL injection in plain SQL and literal - factory methods -#726 - Add LENGTH function as a synonym for CHAR_LENGTH - -API changes (backwards-compatible) ----------------------------------- -#698 - Inconsistent API with Factory.fetch(Table [,Condition]) - Let method return Result instead of List -#699 - Let Result extend List - -API changes (previous API now deprecated) ------------------------------------------ -#656 - Decrease verbosity of plain SQL methods. They will just be - called Factory.field() .condition() .table() .query() - -Test cases ----------- -#643 - Add integration test for code generation of invalid and - incomplete types in Oracle -#654 - Add integration tests for master data tables with PK types - other than NUMBER/INT -#655 - Add missing integration tests for TRIM function - -Bug fixes ---------- -#450 - Improve plain SQL integrity checks for bind variables -#610 - CODEGEN: Compilation error in generated source code for - databases with table named 'system' -#646 - An empty Java package is generated for an empty PL/SQL - package. This is unnecessary -#651 - CODEGEN: Avoid importing datatypes in generated source - code to prevent collisions -#657 - NullPointerException when creating a Factory with a null - SchemaMapping -#658 - Master data table code generation is broken for tables - with more or less than 3 columns -#662 - Add support for the missing Postgres data type "bpchar" -#663 - Add support for the missing Sybase data type "int" -#664 - Ingres INTEGER data types are not correctly generated -#665 - HSQLDB Datatype CLOB and BLOB are not supported, when - selecting from plain SQL tables -#666 - The evil bug: Ingres TRIM function only executes RTRIM -#673 - UpdatableRecord.store() doesn't work if called after - .delete() -#702 - Add support for the missing SQLite data type "NULL" -#706 - CURSOR: Ensure that Query.execute() runs in a single - transaction when Postgres refcursor is involved in the - query (this fixes a Postgres JDBC driver flaw) -#724 - NullPointerException when passing a single literal null - bind value to plain SQL methods without casting to Object -#729 - DB2, Derby, Ingres, Oracle cannot bind null values in - plain SQL - -Version 1.6.1 - June 19, 2011 -================================================================================ - -In this release, the PORTABILITY project has been implemented. -Finally, the SQLDialect has been removed from most generated -artefacts (Schema, Table, Field, Sequence, etc). Also, the -constructing Factory is not referenced by its created QueryParts -anymore, unless this is really necessary (Query objects, UDT's, -ARRAY types). This leads to higher compatibility between schemata -of different databases, e.g. if users want to use an HSQLDB -development and Oracle productive database. - -Unfortunately, this means that the way stored procedures are -called had to be changed. This is an API break that could not be -avoided. The pre-1.6.1 StoredObject.execute(Connection) method -is deprecated and will be removed in the future. It has been -replaced by StoredObject.execute(Configuration) - -In addition to this project, many more window functions are now -supported, as well as the Oracle-specific CONNECT BY clause for -recursive queries. - -Features --------- -#351 - Add support for Oracle ROWID data type -#452 - PORTABILITY: Create a super-set of RDBMS data types -#453 - PORTABILITY: Don't create dialect-specific QueryParts -#455 - Add support for the Oracle CONNECT BY clause -#587 - Add optional OFFSET clause to form LIMIT .. OFFSET - constructs -#589 - Add extended FOR UDPATE [OF ...] [{WAIT n | NOWAIT | SKIP - LOCKED }] support -#591 - Add support for LEAD() OVER() and LAG() OVER() window - functions -#592 - Add support for the CUME_DIST() OVER() window function -#601 - Add Factory.literal() convenience methods -#602 - Add Factory.val() methods to decrease .constant() - verbosity -#604 - Add support for RESPECT NULLS clause in some window - functions -#605 - Add Factory.use(String) for non-generated schemata -#613 - Add PI function -#616 - Add Factory.two() literal convenience method -#630 - Add support for Oracle CONNECT BY pseudo-columns LEVEL, - CONNECT_BY_ISCYCLE, CONNECT_BY_ISLEAF - -API changes ------------ -#299 - PORTABILITY: Create a dialect-independent meta-model -#588 - Add OVER() keyword to FIRST_VALUE() and LAST_VALUE() API - -Test cases ----------- -#368 - Add integration test for use with schema mapping -#586 - Upgrade H2 to 1.3.155 -#607 - Add integration tests for CRUD / SP's / UDT's / ARRAY's - with SchemaMapping -#612 - Add integration tests for LPAD and RPAD functions -#624 - Add integration test for code generation of invalid/ - incomplete views in Oracle -#631 - PORTABILITY: Add integration tests for using Oracle- - generated schema against an HSQLDB database -#638 - Add missing integration test for DECIMAL data type - -Bugfixes --------- -#176 - Stored procedures / functions in EQUIVALENT schemata - cannot be called -#493 - Bind variable mismatch when constructing bad SQL -#594 - Confusing Javadoc in SELECT DSL API -#603 - Fix DB2 'IGNORE NULLS' clause -#619 - SUBSTRING() function is broken in DB2, Ingres, SQL Server -#623 - SQL syntax error for some MERGE queries in SQL Server and - Sybase -#633 - SchemaMapping is not applied to sequences -#634 - Sequences are not escaped in generated SQL - -Version 1.6.0 - June 05, 2011 -================================================================================ - -Apart from supporting various additional standard and non- -standard JOIN constructs, there is now also full support for the -SQL standard MERGE statement and MySQL's ON DUPLICATE KEY variant -thereof. A great number of API enhancements have been added, -which improve the usability of jOOQ. The Ingres database is now -also supported. - -Features --------- -#301 - Add support for Oracle execution hints -#409 - Add support for NATURAL JOIN syntax, where RDBMS allows it -#415 - Make fluent API's underlying SelectQuery objects publicly - available -#429 - Add Ingres support -#475 - Document class-level generic types and in Javadoc -#486 - Add support for SQL MERGE clause -#494 - Allow for omitting schema name in generated SQL -#496 - Automatically update IDENTITY values in UpdatableRecord, - after storing them -#520 - Add support for JOIN ... USING syntax -#524 - Upgrade HSQLDB to 2.2 -#533 - Add ORDER BY [Map] or BY [List] functionality -#534 - Add Result.isEmpty() -#535 - Call upon ConfigurationRegistry.provideFor() before - throwing a DetachedException -#536 - Simulate CASE [value] WHEN [value] THEN [result] END - syntax in Derby -#538 - Add some logging to ConfigurationProvider -#539 - Add possibility to negate numeric values with Field.neg() -#541 - Add support for MySQL ON DUPLICATE KEY clause -#542 - Allow for Collection arguments in INSERT's DSL API -#543 - Allow for creating FUNCTION() OVER() without PARTITION BY - or ORDER BY clause -#546 - Add Factory.use(Schema) -#548 - Add new internal type FieldMap -#550 - Simulate ON DUPLICATE KEY INSERT clause in dialects other - than MySQL -#551 - Add TableMapping, similar to SchemaMapping for mapping - tables -#553 - Add Factory.plainSQLQuery -#554 - Add Factory.plainSQLField with a DataType parameter -#555 - Add UpdateXXX.set(Map) convenience methods to DSL API -#557 - Enhance INSERT DSL API to allow for adding VALUES clause - with InsertXXX.set() syntax -#570 - Add support for the RAND() function -#567 - Add support for Ingres Sequences -#572 - Add support for the ATAN2() function -#573 - Add possibility for additional select() clauses for - convenience -#575 - Add support for the FULL OUTER JOIN syntax, where RDBMS - supports it -#576 - Add support for the CROSS JOIN syntax, where RDBMS - supports it -#581 - Enhance API and allow Collection> - instead of Collection> - -API changes ------------ -#397 - Purge deprecated API - -Bugfixes --------- -#481 - Handle case where an empty record is stored -#522 - Misleading Javadoc in generated stored procedures and - function constructors -#532 - Restore Postgres INFORMATION_SCHEMA -#537 - Prevent null from being added to QueryPartList -#540 - Error when TRACE logging Limit -#544 - Aliased elements are not bound correctly when rendered - with toSQLReference() -#559 - Loosen type safety on overloaded methods to prevent - compilation errors with javac/Netbeans -#560 - HSQLDB DataType REAL is configured incorrectly -#565 - Add integration tests for current_user() function -#569 - ORA-01427 when generating foreign key relations -#571 - Field.trim() not correctly implemented for SQL Server -#583 - Accelerate integration tests: Reset schema only if - necessary - -Version 1.5.9 - May 15, 2011 -================================================================================ - -This version ships with lots of new functionality. Finally, the -DSL-style API has been extended to CRUD operations (INSERT, -UPDATE, DELETE)! Also, support for the TRUNCATE TABLE statement -has been added. - -The most important new features include the support for SQL:2003 -standard window functions, which are available in most major -RDBMS. Additionally, basic function support has been widely -extended. - -Features --------- -#148 - Added support for window functions -#204 - Add support for multi-record INSERT's -#416 - Added support for retrieval of IDENTITY values -#433 - Use bind variables for LIMIT and OFFSET -#441 - Added foreign key relationship meta information to the - generated source code -#446 - Beautify ResultImpl.toString() method -#461 - Automatically cast CONCAT parameters to Field if - necessary -#463 - Added support for trigonometric functions -#471 - Added support for the sign function -#472 - Added support for GREATEST/LEAST functions -#474 - Added support for "hyperbolic" functions SINH, COSH, TANH, - and COTH -#482 - Added DSL API for INSERT statements -#483 - Added DSL API for UPDATE statements -#484 - Added DSL API for DELETE statements -#485 - Added "Registry" for client code to provide Configurations - to jOOQ Attachables -#490 - Added support for the TRUNCATE TABLE statement -#495 - Generate source code for IDENTITY columns -#501 - Added support for boolean conversion to Result, Record, - and Store -#503 - Allow for schema navigation via generated artefacts -#518 - Let stored procedures reference owner package - if applicable -#525 - Added NULLS {FIRST | LAST} clause to ORDER BY constructs -#528 - Added Factory.getDataType() convenience method -#530 - Added Factory.zero() and Factory.one() convenience methods - -API changes (jooq) ------------------- -#527 - Weakened type-safety on Field.nvl2() -#529 - Deprecated Factory.select(Object...), added .selectOne() - and .selectZero() instead - -API changes (jooq-meta) ------------------------ -#30 - Add ParameterDefinition for stored procedures, instead of - reusing ColumnDefinition -#499 - Add reference to TableDefinition in ColumnDefinition -#500 - Add AttributeDefinition for UDTDefinition, instead of - reusing ColumnDefinition - -Bug fixes ---------- -#369 - Adapt H2 relations generation to H2's correction of - information_schema.cross_references -#435 - Added integration tests for NESTED SELECTs holding LIMIT - clauses -#460 - Syntax error when using a field with a reserved name -#462 - Fixed Javadoc broken links -#473 - Don't cast when cast is unnecessary -#479 - INSERT statement should not set all fields for a table -#497 - Derby referential code generation is broken, for named - foreign keys -#498 - Oracle package content is generated in arbitrary order -#502 - Syntax error when creating an empty IN condition -#526 - Corrected Javadoc in Field.coalesce() - -Version 1.5.8 - April 29, 2011 -================================================================================ - -Finally, jOOQ now supports two important new RDBMS: -SQL Server and Sybase! - -Apart from this great enhancement, there is now also full support -for the non-SQL standard LIMIT clause, even in dialects where the -LIMIT clause is not supported natively (especially Oracle, but -also DB2, SQL Server and Sybase, which have limitations). jOOQ -simulates LIMITs by rendering nested selects filtering on ROWNUM -(Oracle) or on ROW_NUMBER() (DB2, SQL Server and Sybase). - -Other interesting additions are an increasing support for native -mathematical functions. More function support will be added in -future versions. - -Features --------- -#16 - Added support for SQL Server -#21 - Uniform implementation of the LIMIT clause. Implemented - LIMIT clause simulation through analytic functions, where - LIMIT is not supported natively -#97 - Added support for Sybase -#418 - Measure time of various steps in source code generation -#420 - Added support for proprietary SQL extensions "FOR UPDATE" - and "FOR SHARE" -#431 - Added additional statistics to generation log files -#432 - Unified the various "standard" ANSI INFORMATION_SCHEMA - implementations in the jooq-meta artefact -#436 - Added support for the modulo function -#438 - Added floor and ceil functions -#439 - Added support for mathematical functions (logarithms, - exponentials, sqrt) -#447 - Enhanced Field.add() and Field.subtract() to work for date - time fields, also - - -API changes ------------ -#428 - Created new Maven artefact jooq-meta to cleanly separate - database meta-data navigation from code generation -#458 - Decreased DSL verbosity for arithmetic operations and for - ordering - -Bug fixes ---------- -#417 - Restored warning when unknown column type is encountered - in source code generation -#419 - Corrected misleading Select.fetchOne(...) Javadoc -#421 - Optimised AbstractRecord's memory consumption -#448 - Corrected some Javadoc @see links -#449 - Changed Field.concatenate() to accept Field parameters - to avoid generic varargs warnings - -Version 1.5.7 - April 17, 2011 -================================================================================ - -This is the first release built with support of Maven thanks to -the help of some jOOQ users! - -The main new features in this release are the improved support -for serialisation/deserialisation of jOOQ objects through use of -the newly introduced "Attachable" interface. - -If using log4j or the newly supported slf4j logging framework -in debug/trace mode, there is the possibility to log query -building/execution time statistics. - -Apart from these new features, fixes were mainly done in the -fields of type casting, HSQLDB 2.1 upgrade support, stored -procedures with OUT, IN/OUT parameters. Please upgrade, if you -are using any of those features. - -If you extend jOOQ as a base implementation for source code -generation, be aware of the fact, that the jOOQ-codegen is -currently undergoing major changes. Expect the code generation -API to stabilise again in one of the next releases. - -Features --------- -#104 - Added maven dependency -#248 - Integrate UDT types with ARRAYs -#295 - Allow for attaching/detaching UpdatableRecords to/from - Configurations -#359 - Added statistics measurement to Query execution for debug - log level -#362 - Added deprecation configuration flag -#364 - Document unknown type in generated source code -#373 - Improve exception handling in code generation -#378 - Added support for Oracle stored functions with OUT - parameters -#382 - Added Factory.attach() methods to re-attach deserialised - Attachables -#394 - Add logging support for SLF4J -#398 - Allow to provide a DataType in Factory.constant() -#399 - Provide access to TypeUtils.convert() methods via DataType -#404 - Added trace logging for measuring the speed of various - query execution steps - -API changes ------------ -#358 - Enhanced DSL API to allow for HAVING clauses without - GROUP BY clauses -#367 - Make Store, Result, QueryPart "Attachable" -#374 - Introduce strategy pattern to code generation for future - support for advanced naming schemes -#375 - Decouple Database from Generator -#381 - Made DataType Serializable -#384 - Deprecated singleton QueryParts -#388 - Unify "internal" API using an Adapter pattern - -Bug fixes ---------- -#187 - Protect generated Record navigation methods against name - clashes -#266 - Added more thorough integration tests for dialect-specific - casting (including some fixes related to varchar types) -#360 - Added more integration tests for the DISTINCT clause -#361 - Add more checks in testInsertUpdateDelete() -#366 - Warn only once per ColumnDefinition, if a data type is - unknown -#377 - NullPointerException when generating invalid stored - function -#380 - Added integration tests to check for proper - serialisability -#386 - Fixed incompatibilities with HSQLDB 2.1.0 -#387 - Fixed unnecessary imports in some Oracle generated - Records -#389 - Fixed javac compiler warning in AbstractStoredObject -#391 - Cannot properly call stored procedures when IN/OUT - parameter is bound to NULL -#392 - Procedures with several OUT parameters may not register - OUT parameters correctly -#410 - Passing null VARRAY values to Oracle stored procedures - causes issues -#412 - limit(int) sets default offset incorrectly in some - dialects - -Version 1.5.6 - March 31, 2011 -================================================================================ - -This release consists mainly of code generation bug fixes and -minor API improvements and enhancements. - -The most important improvement is ticket #90, by which lazy -fetching and iteration over data is now supported. jOOQ lets you -keep a reference to a Cursor that has an open JDBC ResultSet, to -fetch data from on-the-fly. - -A few major code generation bugs were reported where the -generated code may cause ambiguity due to an inconsistent API. -This means that you will have to re-generate your schema after -upgrading to version 1.5.6. Some of your code may not compile -anymore, after this upgrade. - -Features --------- -#90 - Added possibility for lazy fetching of data -#208 - Added convenience methods for direct invocation of - sequences' currval() and nextval() attributes -#212 - Created one factory per dialect for better separation of - dialect-specific support -#213 - Generate a factory for each schema -#251 - Opened up base implementations for Field and Condition - to allow for custom implementations by client code -#274 - Integrate H2 ARRAY types with stored procedures -#292 - Documented usage of log4j and java.util.logging -#306 - Added support for the NULLIF function -#319 - Added Field.between(Field, Field) method -#320 - Added trace logging for variable binding and SQL - generation methods -#323 - Added Field.in(Field...) method -#325 - Include release version number in delivered .jar files -#328 - Improved configuration setup documentation page -#333 - Let Result implement Serializable -#334 - Added fetchMap() convenience methods -#335 - Added more functions and aggregate functions examples to - documentation -#338 - Visually improve code generation logging -#339 - Removed skipping of unreferenced UDT's, ENUM's and ARRAY's -#342 - Improved generated referential code by using fetch() and - fetchOne() API -#356 - Let UpdatableRecord.store() and delete() return an int - to indicate whether the record was actually modified - -API changes ------------ -#233 - Allow for joining TableLike instead of Table -#337 - Added generic type > to - InsertSelectQuery -#341 - Fixed API flaw where SelectOnConditionStep.and() methods - and similar ones returned SelectConditionStep, instead of - SelectOnConditionStep - -Bugfixes --------- -#69 - Corrected referential code generation for foreign keys - that reference non-primary unique keys -#85 - Corrected referential code generation for multi-field - foreign keys -#121 - Covered more Factory.executeXXX() methods with integration - tests -#318 - Fixed NullPointerException when executing SELECT * from - aliased tables -#321 - BetweenCondition does not bind left hand side Field - correctly -#322 - InCondition does not bind left hand side Field correctly -#326 - Avoid method overloading where binding to Object - may lead to compile-time ambiguities (with javac) -#343 - Add more foreign key navigation method integration tests -#347 - Add explicit integration tests for schema artefacts - excluded from code generation -#350 - Disambiguate navigation methods if several foreign keys - reference the same entity -#352 - Disambiguate navigation methods if a table ending on S - references itself -#353 - Added integration test for compilation of generated - artefacts with javac (as opposed to the Eclipse compiler) -#355 - Error when storing an UpdatableRecord that has no changed - values - -Version 1.5.5.2 - March 15, 2011 -================================================================================ - -A critical bug was reported from the 1.5 release stream where -stored functions did not render their parameters in correct order - -Features --------- -#302 - Map Oracle's NUMBER data type to java.lang.Number in - stored procedures, stored functions - -Bugfixes --------- -#317 - StoredFunctionImpl.asField() renders parameters in wrong - order - -Version 1.5.5.1 - March 13, 2011 -================================================================================ - -In version 1.5.5, there was a fatal bug breaking Derby source code generation. -Only the Derby dialect is affected. Please update immediately, if you are using -jOOQ's Derby integration - -Bugfixes --------- -#315 - Generated master data records are not sorted by PK -#316 - Derby code generation fatally broken - -Version 1.5.5 - March 12, 2011 -================================================================================ - -This version is released early as there are some important bugfixes. Additional -improvements include: - -- Improved DSL related to conditions in HAVING and JOIN clauses -- Support for Oracle-style functions, such as NVL, NVL2, COALESCE - DECODE, etc - -Features --------- -#304 - Add support for Oracle NVL function -#305 - Add support for COALESCE function -#308 - Add support for Oracle NVL2 function -#311 - Add support for Oracle DECODE function - -API changes ------------ -#223 - Enhance DSL to accept and(), or() and similar methods in JOIN steps -#224 - Enhance DSL to accept and(), or() and similar methods in HAVING steps - -Bugfixes --------- -#297 - Fixed Factory.concatenate() function -#298 - Added integration tests for nested selects in HAVING clause -#300 - Added integration tests for nested selects in JOIN clause -#303 - Javadoc correction -#307 - Accelerated integration tests -#309 - Fixed JDBC variable binding issue related to Conditions where the lhs is - a function (e.g. stored function) and the rhs is a constant -#310 - Fixed issue where fetchOne() methods throw NullPointerException if no - result record is available -#312 - Fixed issue where Field.equal(...) methods rendered unexpected SQL when - rhs null is cast to a type -#313 - Fixed Derby cast type for VARCHAR -#304 - Let the DerbyDataType default for java.lang.String be VARCHAR, not LONG - VARCHAR - -Version 1.5.4 - March 04, 2011 -================================================================================ - -Feature #243 required a minor API change in the base classes of generated source -code. This means you have to re-generate all your jOOQ artifacts in order to -migrate to 1.5.4. The artifacts themselves should be regenerated in a compatible -way, such that your client code should not be affected. If this is not the case, -please report a ticket here: - - https://sourceforge.net/apps/trac/jooq/newticket - -Apart from the Derby RDMBS and some new data type support, there have been many -new convenience methods added all over the API. For instance, if type-safety is -not really a requirement, there are lots of possibilities to use plain SQL -directly in the DSL. In that case, data can be accessed from Record, Results, -not only through Field, but also through field names or indexes. - -Check out the updated documentation (soon) here: - - https://sourceforge.net/apps/trac/jooq/wiki/Examples - -- Support for the Derby RDBMS -- Support for casting. This allows for even greater flexibility - in cases where jOOQ cannot 100% ensure type-safety -- Support for ARRAY types. Oracle, Postgres, HSQLDB and H2 ARRAY - types are now supported natively as regular bindings in - jOOQ's Field -- Support for dialect-specific data types. CHAR, VARCHAR, CLOB - are no longer treated equally as java.lang.String. Their - type heritage is also generated -- More sequence support -- Lots and lots of bug fixes - -Features --------- -#95 - Support for the Derby RDMBS -#163 - Add support for JDBC type ARRAY (with Postgres) -#209 - Add support for DB2 sequences -#210 - Add support for H2 sequences -#211 - Add support for HSQLDB sequences -#215 - Support for SQL casting using as cast type -#246 - Support for SQL casting using dialect-specific data types -#254 - Add HSQLDB support for ARRAY types -#256 - Add Oracle support for VARRAY types -#257 - Integrate ARRAY types with stored procedures -#261 - Add a global type mapping to the generated Schema object -#267 - Add DataTypeDefinition for further abstraction of data types in code - generation -#269 - Add H2 support for ARRAY types -#290 - If log4j is not on the classpath, use java.util.logging instead, as - fallback - -API Changes ------------ -#156 - Allow for results to be accessed by index, not by field -#218 - Corrected bad method signature: Record.getValueAsLong(Field, Integer) -#219 - Extended Result and Select API's to be more similar to that of Record -#232 - Add more convenience plain SQL support to the API -#235 - Add convenience methods to Record, Result and Select for access of data - via field name -#243 - Refactor DataType implementations in order to allow for the use of - generics -#259 - Add field type to database meta data (ColumnDefinition) -#260 - Add field type to database meta data (Field) -#262 - Add default behaviour for Record.getValue(Field) -#276 - Add Javadoc as a ZIP file to the jOOQ distribution - -Bugfixes --------- -#125 - Add more plain SQL integration tests -#191 - Add more integration tests for nested unions -#205 - Implemented workaround for handling Postgres stored functions with UDT - OUT parameters -#214 - Fixed NPE when generating a stored function with an unknown parameter - type -#216 - Fixed some cases where binding of BigInteger is not done correctly -#220 - Syntax error when using select statement in a CASE clause -#221 - Corrected integration tests for combined update and select statements -#222 - Added integration test for INSERT statements having nested SELECT - statements for their fields -#225 - Correctly cast array types in Postgres -#230 - Potential misuse of Blob and Clob in H2's JDBC types -#239 - Factory.fetchAny() is not implemented for SQLite -#244 - Fixed peculiar MySQL casting support where cast types do not match any - data types -#245 - Fixed NPE when reading null dates in SQLite -#249 - Added ARRAY type integration tests -#255 - Stored procedure bind variables get mixed up when any argument is null -#263 - Correctly handle Postgres function overloading -#264 - Ambiguous funciton calls when calling overloaded functions with null - parameter -#281 - Handle compilation errors when generating stored procedures with > 254 - parameters -#283 - Fixed compilation errors in generated source code for Oracle's UDT table - type -#284 - Fixed compilation errors in generated source code for Oracle procedures - in packages, when they have no parameters -#285 - Fixed compilation errors in generated source code for Oracle tables with - the same name in different schemata -#286 - Fixed name collisions in generated objects with the java.lang.* package -#288 - Prevent the creation of UNION queries with bad syntax in MySQL -#289 - Correctly alias fields within UNION queries for some dialects, which then - only require the "AS" keyword -#291 - Cannot create an aliased field called "year" in Postgres - -Version 1.5.3 - January 13, 2011 -================================================================================ - -- Lots of stored procedure support was implemented -- Support for sequences was added -- The final decision to postpone support for DB2 UDT's was made -- Some code generation bugfixes - -Features --------- -#36 - Added stored procedure / stored function support for HSQLDB -#140 - Added support for Oracle sequences -#147 - Added support for H2 stored functions -#162 - Correctly integrate UDTs with stored procedures -#170 - Added support for Postgres stored functions -#186 - Added support for more Oracle PL/SQL simple data types -#193 - Simulate support for H2 "stored procedures" -#195 - Simulate support for Postgres "stored procedures" -#206 - Added support for Postgres sequences - -API changes ------------ -#180 - Improved DSL for constant values -#181 - Allow for referencing Field in function argument list -#189 - Renamed convenience methods in org.jooq.Record -#207 - Add fetchOne(Field) method to org.jooq.Select API - -Bugfixes --------- -#182 - Protected generated Record classes against clashes with inherited methods -#183 - Fixed NullPointerException, when generating master data tables with - NULL fields -#184 - Fixed IllegalArgumentException, when a data type is present in the - schema, but unavailable in code generation logic -#185 - Code generation should not fail when single elements cannot be generated -#188 - Improved integration tests for stored procedures / functions / packages -#196 - Increase RDMBS version compatibility by avoiding "SELECT *" in code - generation logic -#199 - Added integration tests for stored procedures in RDBMS that do not - support OUT parameters -#201 - Fixed issue in DB2 where stored procedures without parameters were not - generated. -#202 - Added integration tests for stored procedures / functions without - parameters - -Version 1.5.2 - December 27, 2010 -================================================================================ - -- Improved support for stored procedures, also in packages -- A minor API change was inevitable to implement #173. The API change only - concerns the INTERNAL API. Deprecation marks are added and deprecated items - will be removed in 1.6.0 -- Experimental SQLite database support -- Some important bug fixes - -Features --------- -#25 - Added support for Oracle packages -#114 - Added support for Oracle UDTs -#145 - Added support for the SQLite database -#150 - Generate static convenience methods for stored procedures / functions -#151 - Generate static convenience methods for stored function fields -#152 - Generate meaningful serialVersionUID in generated classes -#173 - Added support for EQUIVALENT schemata - -API changes ------------ -#159 - Added convenience method List getValues(Field) to Result -#165 - Added convenience methods for creating EXISTS clauses -#169 - Improved DSL for WHERE clauses - -Bugfixes --------- -#68 - Prevent issues originating from overloaded stored procedure names, - generating identical Java class names -#153 - Fixed issue with generated code for DB2 stored functions -#154 - Fixed issue with generated code for DB2 stored functions -#155 - Fixed issues with database NULL not being mapped correctly to Java NULL - when selecting values that have a primitive type (int, long, etc) -#158 - Potential ClassCastException when using Field -#171 - Corrected issue related to selection of default schema in DB2 -#177 - Fixed issue related to generated code for tables or UDTs without columns - - -Version 1.5.1 - December 13, 2010 -================================================================================ - -- H2 database support thanks to Espen Stromsnes -- Improved stored procedure support - -Features --------- -#96 - Added H2 database support -#101 - Added stored procedure / stored function support for Oracle -#138 - Added stored procedure support for DB2 -#146 - Added support for DB2 functions - -API changes ------------ -#143 - Added convenience methods to Record - -Bugfixes --------- -#84 - Implemented referential code generation for foreign keys that do not - match their primary keys' types -#141 - Encoding problem in generated master data classes - -Version 1.5.0 - November 22, 2010 -================================================================================ - -- A big one. Major API changes / improvements -- Added lots of convenience methods -- UDT support -- Enum support -- DB2 support thanks to Espen Stromsnes -- "Light" dependency to log4j added. jOOQ will still run without it - -Features --------- -#1 - Create support for UDTs (so far only for PostgreSQL) -#15 - Added DB2 support -#60 - Added support for nested selects in INSERT and UPDATE statements -#83 - Added log4j logging to code generation and runtime -#87 - Add support for arithmetic expressions -#105 - Added support for ENUM data types, where applicable (MySQL and PostgreSQL - so far) -#110 - Added execute and fetch convenience methods -#111 - Added missing "select distinct" support -#122 - Annotate generated classes with javax.annotation.Generated -#123 - Generate user enum fields from data values (master data) -#124 - Added PlainSQLTable -#127 - Added not() operator to Condition -#135 - Added convenience methods andNot() and orNot() in Condition - -API changes ------------ -#89 - Removed support for DataSource. jOOQ is not a transaction manager -#92 - Added SortField type to be used for sorting -#99 - Provide better access to functions (No more FunctionFactory) -#116 - Merge Manager functionality into Factory -#118 - Improve API of org.jooq.Field -#119 - Improve subquery condition API -#132 - Reduced much of the select query API -#134 - Better separation of SelectQuery and SimpleSelectQuery - -Bugfixes --------- -#109 - Error when executing select * if generated schema does not match actual - schema -#115 - Fix various "null" pseudo field issues -#126 - Error when selecting a single field from a union nested select -#129 - Fixed performance issue in Oracle code generation for very large - databases - - -Version 1.4.4 - November 22, 2010 -================================================================================ - -Unreleased version, fixes included in 1.5.0 - -Bugfixes --------- - -#133 - JoinCondition does not take comparison operator - -Version 1.4.3 - October 25, 2010 -================================================================================ - -Some more bugfixes - -Bugfixes --------- - -#71 - Generated code does not compile, when foreign key and primary key have a - data type mismatch -#73 - In Oracle generated code, multi-field foreign keys may generated bad - relations code -#82 - Conversion of literals to camelcase fails if numbers are involved - -Version 1.4.2 - October 22, 2010 -================================================================================ - -Various bugfixes and minor improvements - -Features --------- -#66 - Add support for CASE or DECODE expression - -API changes ------------ -#77 - Functions should not extend FieldImpl, but a new AbstractField -#78 - QueryPart pollutes declared method space of its implementations. Hide it - by indirection - -Bugfixes --------- -#64 - Code generation fails when foreign key references a unique key that is not - the primary key. Code generation for these cases is omitted -#67 - When loading properties files, a leading / seems to be mandatory. This is - preventing users from correctly setting up jOOQ the first time -#70 - Add support for Oracle datatype TIMESTAMP(6) -#72 - Name clashes in generated Tables -#75 - Constant does not bind its values. -#76 - Constant should not render strings all the time -#79 - Constants are not properly escaped -#80 - Position function does not bind any variables -#81 - Add cast function to Constants in HSQL - -Version 1.4.1 - October 18, 2010 -================================================================================ - -Oracle patch release - -Features --------- -#63 - Generate referential functionality for Oracle - -Version 1.4.0 - October 17, 2010 -================================================================================ - -Support for PostGreSQL was added. -Added lots of OR-mapping functionality. -There is a general API change due to various new features. - -Features --------- -#14 - Add PostGreSQL support -#40 - Resolve foreign keys. Allow for navigation between objects. -#42 - Add PlainSQLField -#45 - Add "dirty" flag to Record's values. This allows for updating only - relevant data. -#47 - Complete implementation for UPDATE, INSERT, DELETE statements. Added some - missing functionality. -#48 - Add more support for Date, Time, Timestamp fields. -#51 - Add a org.jooq.impl.Manager class that provides common utility methods for - CRUD operations - -API changes ------------ -#10 - Add second generic type . This is a prerequisite for - many OR-mapping features -#18 - Use org.jooq.Record in InsertQuery and UpdateQuery -#46 - Create UpdatableRecords as a prerequisite for JPA and true OR-mapping. - These records support store() and delete() methods -#52 - Add default constructor in generated Records. -#53 - Add refresh functionality to UpdatableRecords. See also #46 -#54 - Add a state to the factory class -#56 - Reduce API, remove unnecessary Condition subinterfaces -#57 - Reduce API, remove unnecessary QueryPart interfaces - -Bugfixes --------- -#49 - NullPointerException when generating relations on schema subset -#58 - Count function renders bad SQL in various dialects -#59 - Exception when selecting unaliased functions in queries - -Version 1.3.0 - August 24, 2010 -================================================================================ - -Support for HSQLDB was added. -There is a major API change due to #44. - -Features --------- -#29 - Generate primary keys and foreign keys in Oracle code generation -#34 - Add support for HSQLDB -#39 - Generate primary keys and foreign keys in HSQLDB code generation -#41 - Add documentation to QueryFactory and Functions - -API changes ------------ -#23 - Add support for more advanced joins -#32 - Merge SelectQuery and ResultProviderQuery interfaces -#44 - Let Query methods return "this" - -Bugfixes --------- -#35 - Add unit tests for HSQLDB support -#37 - Syntax error in combined select queries! The usage of combined queries in - MySQL may still be a bit awkward. Keep an eye out for further fixes -#43 - Join with aliased tables doesn't work - -Version 1.2.0 - August 21, 2010 -================================================================================ - -The added Oracle support is now unit tested and more stable. The Oracle NUMBER -data type is mapped more precisely to Java types. - -Features --------- -#12 - Model primary keys and foreign keys in generated code -#22 - Improve mapping of Oracle NUMBER data type -#26 - Add Plain SQL QueryParts -#27 - Add support for HAVING clause - -Bugfixes --------- -#24 - Add Unit tests for oracle database (and fixed bugs) -#31 - Pull up addOrderBy() methods from SelectQuery to ResultProviderQuery - -Version 1.1.0 - August 17, 2010 -================================================================================ - -The main new feature is the Oracle support. Wait for Version 1.1.1 for that -support to be stabilised, as there are no Oracle unit tests running against an -Oracle database yet. - -Features --------- - -#2 - Add support for inner / nested selects -#3 - Add more function support -#4 - Implement filtering functionality for code generation -#6 - Add Oracle Support -#9 - Create true POJO's (implementing org.jooq.Record) with getters and setters -#17 - Make org.jooq.impl.Parameter independent of Field - -Bugfixes --------- - -#11 - Code generation does not remove files - -Version 1.0.1 - August 14, 2010 -================================================================================ - -Features --------- - -#5 - Prevent code regeneration, if no changes were made -#7 - Implement ant task for code generation - -Version 1.0.0 - August 14, 2010 -================================================================================ -Initial Release \ No newline at end of file diff --git a/jOOQ-website/inc/RELEASENOTES-3.0.txt b/jOOQ-website/inc/RELEASENOTES-3.0.txt deleted file mode 100644 index 9ccdb2c848..0000000000 --- a/jOOQ-website/inc/RELEASENOTES-3.0.txt +++ /dev/null @@ -1,3562 +0,0 @@ -jOOQ Release notes -================== - -For an interactive overview, see also -http://github.com/jOOQ/jOOQ/issues - -For a formatted text version, see -http://www.jooq.org/notes.php - -For a text version, see -http://www.jooq.org/inc/RELEASENOTES.txt - -Version 3.0.1 - May 25, 2013 -================================================================================ - -This is a patch release with some useful fixes for the 3.0 branch - -Bug fixes ---------- -#2323 - NullPointerException when calling Schema.getTables() on a meta schema - with SQLite -#2401 - Bad package name generated when contents are not trimmed -#2413 - Suppress warnings in generated code (@SuppressWarnings("all") doesn't - suppress "rawtypes" warnings with javac) -#2418 - RenderContext.data() is not passed on to QueryParts when being rendered -#2424 - Integration-test jOOQ with the SQLite xerial driver -#2432 - Manual refers to a package-private DefaultConfiguration constructor -#2445 - JDBCDatabase doesn't recognise Oracle's VARCHAR2 data type (and other - vendor-specific data types) -#2447 - Tables collected through DSLContext.meta() return duplicate columns if - multi-schema environments contain identical tables -#2448 - DSLContext.meta() returns Table objects for Oracle SYNONYMS, without - providing columns -#2449 - JDBCDatabase doesn't use DataType.length(), precision(), and scale() -#2450 - Cannot set precision on TINYINT, SMALLINT, INT, BIGINT data types -#2464 - Bad SQL rendered from DELETE statements with aliased tables -#2469 - NullPointerException in AbstractResultQuery.fetchOneMap() -#2477 - MySQL's unsigned types cannot be used in other dialects -#2478 - IngresDatabase erroneously joins IIINDEXES to get constraint columns, - rather than using IIKEYS - -Version 3.0.0 - April 28, 2013 -================================================================================ - -This major release is a great move towards better integration of SQL as a -language in Java. Unlike any other database abstraction framework, jOOQ now -formally supports the notion of "row value expressions". The jOOQ API uses -Xtend-generated API types from Row1 .. Row22, as well as Record1 .. Record22 to -bring you even more compile-time typesafety on a record-level. - -In SQL, you can typesafely write - -
    -  SELECT * FROM t WHERE (t.a, t.b) = (1, 2)
    -  SELECT * FROM t WHERE (t.a, t.b) OVERLAPS (date1, date2)
    -  SELECT * FROM t WHERE (t.a, t.b) IN (SELECT x, y FROM t2)
    -  UPDATE t SET (a, b) = (SELECT x, y FROM t2 WHERE ...)
    -  INSERT INTO t (a, b) VALUES (1, 2)
    -
    - -In jOOQ, you can now (also typesafely!) write - -
    -  select().from(t).where(row(t.a, t.b).eq(1, 2));
    -  // Type-check here: ----------------->  ^^^^
    -  select().from(t).where(row(t.a, t.b).overlaps(date1, date2));
    -  // Type-check here: ------------------------> ^^^^^^^^^^^^
    -  select().from(t).where(row(t.a, t.b).in(select(t2.x, t2.y).from(t2)));
    -  // Type-check here: -------------------------> ^^^^^^^^^^
    -  update(t).set(row(t.a, t.b), select(t2.x, t2.y).where(...));
    -  // Type-check here: --------------> ^^^^^^^^^^
    -  insertInto(t, t.a, t.b).values(1, 2);
    -  // Type-check here: ---------> ^^^^
    -
    - -This also applies for existing API, which doesn't involve row value expressions: - -
    -  select().from(t).where(t.a.eq(select(t2.x).from(t2));
    -  // Type-check here: ---------------> ^^^^
    -  select().from(t).where(t.a.eq(any(select(t2.x).from(t2)));
    -  // Type-check here: -------------------> ^^^^
    -  select().from(t).where(t.a.in(select(t2.x).from(t2));
    -  // Type-check here: ---------------> ^^^^
    -
    - -And for UNIONs - -
    -  select(t1.a, t1.b).from(t1).union(select(t2.a, t2.b).from(t2));
    -  // Type-check here: -------------------> ^^^^^^^^^^
    -
    - -These type-checks are preformed by your Java compiler, considering the generic -type information of your SQL statement's Record data types. These include: - -- Record1 -- Record2 -- Record3 -- ... -- Record22 - -The highest degree of typesafety was chosen to be 22, to match Scala's Tuple22, -Product22 and Function22 types. Higher degree records are still supported by -jOOQ, just without the additional typesafety. - -This Record typesafety is applied to - -- SELECT statements -- INSERT and MERGE statements: the VALUES() clause -- UPDATE statements: SET A = (SELECT...) -- UPDATE statements with row value expressions: SET (A, B) = (SELECT...) -- Quantified comparison predicates: ANY(SELECT...) and ALL(SELECT...) -- Comparison predicates: = (SELECT...) -- IN predicates: IN (SELECT...) -- BETWEEN predicates: BETWEEN (SELECT...) AND (SELECT...) -- Generated records -- The new VALUES() constructor -- Scala integration for conversion of jOOQ Record[N] to Scala's Tuple[N] - -Apart from this major improvement, there had been many minor changes throughout -the jOOQ API. Here are some important ones: - -- Factory has been split into DSL (static QueryPart construction) and - DSLContext (Query execution, "attached" QueryPart construction). This greatly - improves the overall DSL experience while allowing for more fine-grained - Executor lifecycle control. -- A ConnectionProvider has been introduced as an abstraction of the JDBC - Connection lifecycle. The standalone Connection and pooled DataSource modes - are still supported, but you can now inject your own ConnectionProvider for - more control. -- A lot of performance improvements have been implemented within the jOOQ API - removing most of the overhead caused by jOOQ when fetching data from JDBC -- A JDBC Mock API has been added to help you create simple unit tests for your - application built on top of jOOQ. -- A VALUES() constructor is now supported, and derived column lists to alias - tables and columns in one go. -- The data type API has been greatly simplified. This allowed for the - introduction of runtime precision, scale, and length information. -- CRUD has been improved through many more CRUD batch operations, explicit - INSERT and UPDATE (in addition to store()), and explicit handling of jOOQ's - internal changed flags. - -As this is a major release, some backwards-incompatibilities were inevitable. -For those users among you, migrating from jOOQ 2.x to 3.0, here are a couple of -useful hints: -http://www.jooq.org/doc/3.0/manual/reference/migrating-to-3.0/ - -Note, that for technical reasons, jOOQ 3.0.0 could not yet be integration -tested with DB2, Ingres, and Sybase ASE. Consider using jOOQ 2.6, instead - -Note, that further code generation and model API improvements were postponed to -a later release - -Note, previous release candidates contained more features, improvements and bug -fixes. See their respective sections for details. - -Features and improvements -------------------------- -#2410 - Add some more API usage examples to the section about ResultSet fetching -#2415 - Add Constants.MINOR_VERSION and Constants.FULL_VERSION for internal and - external reuse - -Bug fixes ---------- -#1998 - Wrong screenshots in the manual's section about code generation. - jooq-meta.jar is missing -#2407 - Fix bad references to pre-3.0 Factory in Javadoc - -Version 3.0.0 (RC3) - April 12, 2013 -================================================================================ - -This major release is a great move towards better integration of SQL as a -language in Java. Unlike any other database abstraction framework, jOOQ now -formally supports the notion of "row value expressions". The jOOQ API uses -Xtend-generated API types from Row1 .. Row22, as well as Record1 .. Record22 to -bring you even more compile-time typesafety on a record-level. - -See release 3.0.0 for more information. - -Features and improvements -------------------------- -#2195 - Remove the standalone tutorial, link to the manual -#2321 - Implement various Key.toString() methods -#2329 - Add Javadoc to Configuration.executeListenerProviders() -#2331 - Add hint to the manual about mvn eclipse:clean and eclipse:eclipse when - building jOOQ -#2363 - Change the readme file to use Markdown -#2366 - Add org.jooq.util.example package to jOOQ-codegen with some example - GeneratorStrategies -#2372 - Add aliases for arithmetic operators to be able to use Groovy default - operator overloading -#2389 - Make org.jooq.impl.DefaultConfiguration public -#2392 - Add Configuration.set() methods. They should allow for modifying a - Configuration -#2396 - Add DSL.function(Name, Class, Field...) and - DSL.function(Name, DataType, Field...) to allow for custom, - fully-qualified function references - -API changes (backwards-compatible) ----------------------------------- -#2378 - Allow for overriding getIdentity() and getReferences() in CustomTable - -API changes (backwards-incompatible) ------------------------------------- -#2328 - Remove UpdatableTable marker interface, pulling up methods to Table -#2342 - Change Configuration.data() to return Map -#2343 - Decouple lifecycle of Configuration and ExecuteContext -#2350 - Do not statically reference a Connection from GenerationTool -#2353 - Decouple org.jooq.Context from Configuration. Choose composition over - inheritance -#2362 - Decouple org.jooq.DSLContext from Configuration. Choose composition over - inheritance -#2379 - Replace 3.0-RC1 Executor type by a contextual DSL type constructed from - DSL.using() -#2380 - Rename org.jooq.impl.Factory to org.jooq.impl.DSL -#2382 - Let DAO reference a Configuration instead of a DSLContext -#2388 - Replace Configuration's List with - ExecuteListenerProvider[] to simplify correct and thread-safe client - implementations -#2390 - Change Configuration API to reflect jOOQ-style getter / setter naming -#2391 - Rename dialect-specific Factories [Dialect]Factory to [Dialect]DSL -#2399 - Remove support for the USE statement - -Behaviour changes (backwards-incompatible) ------------------------------------------- -#2351 - Relax ConnectionProvider contract, allowing acquire() to return new - Connections even before release() is called - -Bug fixes ---------- -#1868 - Cursor.close() doesn't terminate the ExecuteListener life cycle -#2325 - "HsqlException: incompatible data type in conversion" when binding a - UUID[] to an HSQLDB prepared statement -#2327 - Compilation error in generated tables, when a table contains a UNIQUE - key but no PRIMARY key -#2332 - Documentation example regarding DSL.concat() does not compile -#2336 - jOOQ 3.0 regression: NoClassDefFoundError caused by missing log4j - dependency -#2338 - Tutorial example unclear: There are three artefacts in Maven, not one -#2346 - org.jooq.Meta's generated Schema and other objects are Serializable, but - their enclosed Meta instance is not -#2347 - Let equals() implementations succeed early on identity -#2354 - Single page manual display errors on Firefox -#2361 - Inaccurate Configuration Javadoc explaining wrong ExecuteListener - lifecycle -#2367 - SQLite identifiers that collide with keywords should be quoted -#2381 - Do not add TableFieldImpl to table in constructor of TableFieldImpl -#2385 - fetchOne() and fetchLazy() don't terminate the ExecuteListener life - cycle when an exception occurs -#2393 - Fully qualified name not used for user-defined aggregate function - -Version 3.0.0 (RC2) - March 8, 2013 -================================================================================ - -This major release is a great move towards better integration of SQL as a -language in Java. Unlike any other database abstraction framework, jOOQ now -formally supports the notion of "row value expressions". The jOOQ API uses -Xtend-generated API types from Row1 .. Row22, as well as Record1 .. Record22 to -bring you even more compile-time typesafety on a record-level. - -See subsequent release candidates or release 3.0.0 for more information. - -Features and improvements -------------------------- -#2200 - Add Executor.fetchCount(Select) and Select.fetchCount() to replace - the projection by a COUNT(*) query -#2244 - Add section to the manual indicating that the jOOQ generator can only - handle schemas of a certain size -#2255 - Add code generation option to avoid the generation of "global object - references" -#2257 - Add List Database.getIdentities(SchemaDefinition) - for convenience to jooq-meta -#2258 - Restore private and deprecated versions of the Factory constructors, - adding some Javadoc about the changes between jOOQ 2.x and 3.0 -#2270 - Add section to the manual indicating how to build jOOQ with Maven -#2272 - Add a paragraph to the manual's preface, explaining "why not just use - SQL"? -#2281 - Add Result Executor.fetchFromStringData(List) in order - to reuse logic from fetchFromCSV -#2285 - Add more verbosity to the code generator, when configured badly -#2290 - Add Database.getUniqueKeys() and getForeignKeys to jOOQ-meta -#2297 - Add section to the manual indicating how the various generator flags - depend on each other -#2308 - Do not generate "final" Tables.java, UniqueKeys.java, etc. - -Bug fixes ---------- -#2212 - "code size too large" in generated SchemaImpl, when the number of tables - exceeds 15k -#2238 - Code generation runs extremely slow for large schemas (Inefficient - DefaultRelations.getUniqueKeys() and getForeignKeys() methods) -#2239 - Code generation runs extremely slow for large schemas (Inefficient - AbstractDatabase.filterSchema() methods) -#2252 - ArrayIndexOutOfBoundsException, when rendering plain SQL that is - terminated by a comment -#2259 - RenderMapping has no effect, if not supplied to the Executor constructor -#2262 - RenderSchema has no effect, if not supplied to the Executor constructor -#2267 - SQLDialectNotSupportedException: Type class org.postgis.PGgeometry is - not supported in dialect null, when binding PG* objects -#2271 - jOOQ Unit tests fail when not run in CET / CEST -#2273 - Tutorial bug, referencing wrong Maven dependency. jOOQ 3.0.0 is not yet - released, only RC1 -#2276 - Wrong MockDataProvider manual example -#2278 - Postgres (UUID and other) ARRAY types aren't correctly inlined as string - literals -#2279 - UUIDs aren't correctly deserialised from Postgres UDTs -#2280 - Improve supported formats for MockFileDatabase -#2283 - Class loading issues in GenerationTool when called by Gradle -#2294 - Compilation errors when code generator is configured with - true and false -#2298 - Suppress warnings in generated code (@SuppressWarnings("all") doesn't - work with javac) -#2312 - Annotate org.jooq.Support with java.lang.annotation.Documented to make - it part of the public API (in Javadoc) -#2314 - Outdated GenerationTool Javadoc - -Version 3.0.0 (RC1) - February 16, 2013 -================================================================================ - -This major release is a great move towards better integration of SQL as a -language in Java. Unlike any other database abstraction framework, jOOQ now -formally supports the notion of "row value expressions". The jOOQ API uses -Xtend-generated API types from Row1 .. Row22, as well as Record1 .. Record22 to -bring you even more compile-time typesafety on a record-level. - -See subsequent release candidates or release 3.0.0 for more information. - -Features and improvements -------------------------- -#456 - Add runtime support for PRECISION, SCALE, and LENGTH attributes -#834 - Add support for the Firebird / Postgres UPDATE .. RETURNING clause -#915 - Add Table> - Factory.values(Row[N]...), to create ad-hoc tables - from data -#1038 - Introduce new type GroupField for cube(), rollup() and groupingSets() - functions. Accept only GroupField... in groupBy() clauses -#1097 - Add org.jooq.Catalog, a type modelling an entity combining several - org.jooq.Schema -#1144 - Overload Executor.fetch[One|Lazy](ResultSet, X...) with X being - Field, DataType, Class -#1178 - Allow for treating Condition as Field -#1583 - Add support for row value expressions in UPDATE statements: UPDATE .. - SET (A, B, C) = (SELECT X, Y, Z) -#1624 - Add support for java.util.UUID as a type -#1663 - Document RenderContext and make it part of the public API -#1686 - Add UpdatableRecord.insert() and update() -#1689 - Generate E into(E) and R from(E) methods to generated records -#1690 - Add UpdatableRecord.key() returning a Record holding PK values -#1695 - Add Factory.all() and Factory.any() to create quantified expressions -#1703 - Add Executor.batchDelete(UpdatableRecord...) to mass-delete a set of - UpdatableRecords -#1801 - Add Table.as(String, String...) to allow for creating a table aliases - (correlation names) with derived column lists -#1874 - Add Record1, Record2, ... Record[N] similar to Row1, Row2, ... Row[N] to - support record type-safety -#1897 - Add a section to the manual about the migration to jOOQ 3.0 -#1899 - Make some JDBC-related utility methods publicly available in - org.jooq.tools.jdbc.JDBCUtils -#1902 - Duplicate SELECT API between Executor and Factory -#1904 - Add Executor.fetch(ResultQuery), Executor.execute(Query), and similar - methods -#1905 - Add Row[N].equal(Select) and similar methods -#1906 - Use Xtend to generate Row[N], Record[N] and other [N]-related API code - artefacts -#1914 - Document the fact that SELECT * is performed by leaving the SELECT list - empty -#1917 - Add support for CUBRID 9.0's window functions and MERGE statement -#1918 - Let generated Records implement Record[N] if applicable -#1919 - Support higher degrees of Row[N] and Record[N] types. Match Scala's max - degree of 22 -#1920 - Add more implicit defs in order to treat Record[N] as Scala's Tuple[N] -#1923 - Add Record.intoResultSet() to create a single-record JDBC ResultSet from - a Record -#1924 - Add support for CUBRID 9.0's ENUM data type -#1932 - Generate Javadocs for Table constructors -#1934 - Improve generated Record Javadoc -#1951 - Add support for the SQL Server WITH (...) table hints -#1966 - Add Row[N].equal(Record[N]) and similar convenience methods -#1967 - Document using MySQL's SQL_CALC_FOUND_ROWS as an Oracle hint -#1968 - Add org.jooq.Meta returned from Executor.meta() to return a wrapped JDBC - DatabaseMetaData object -#1972 - Move MySQLFactory.md5() to Factory and simulate it for Oracle -#1973 - Add Executor.fetchOne(ResultSet) -#1975 - Add Result.sort{Asc|Desc}(int) and (String) to order by field index / - name -#1981 - Add support for DB2 CGTT and MQT -#1983 - Improve the Javadoc on Table.as() and Field.as() to hint at - case-sensitivity and RenderNameStyle -#1984 - Add ResultQuery.fetchOneInto() -#1986 - Add Record.fromMap() as the inverse operation of Record.intoMap() -#1987 - Allow for reading data from arrays, Maps through Record.from() -#1988 - Add Record.fromArray() as the inverse operation of Record.intoArray() -#1989 - Add Record.changed(Field), changed(int), changed(String) to check - whether a single field's value has changed -#1990 - Add T Record.original(Field), original(int), original(String) to - get a Field's original value -#1991 - Reflect changed flag in Result.toString() (and thus also - Record.toString()) -#1999 - Add Record.changed(boolean) changed(Field, boolean) - changed(int, boolean) changed(String, boolean) as setters for the - changed flag -#2000 - Add Record.reset(), reset(Field), reset(int), reset(String) to - restore original values in a record -#2008 - Add elementFormDefault="qualified" to XSD specifications to allow for - XML validation of jOOQ configuration files -#2020 - Let org.jooq.ExecuteListener extend java.util.EventListener -#2021 - Add UpdatableRecord.refresh(Field...) to allow for refreshing a - subset of the Record's values -#2027 - Document semantic versioning rules as understood by jOOQ -#2028 - Add Batch.size() to indicate the number of queries that will be executed - by a batch operation -#2030 - Add reusable wrapper types for JDBC Connection, Statement, ResultSet, - etc. -#2044 - Add various TableRecord.fetchParent(...), fetchChild(...) and - fetchChildren(...) methods to follow foreign key relationships -#2049 - Add gt() / ge() / lt() / le() to Row[N] types -#2052 - Add [not]Between[Symmetric]() to Row[N] types -#2053 - Add is[Not]Null() to Row[N] types -#2066 - Add Executor.extractBindValues(QueryPart), extractParams(QueryPart) to - extract bind values in the context of an Executor (i.e. Configuration) -#2072 - Let UDTRecordImpl and ArrayRecordImpl.toString() return a valid - constructor expression -#2078 - Add Postgres to @Support annotation of SelectForUpdateWaitStep.wait() -#2079 - Support generation of bean validation annotations on records and - interfaces -#2089 - Generate an "empty" DefaultSchema for those databases that do not have - any schema (CUBRID, Firebird, SQLite) -#2094 - Add unit tests for org.jooq.tools.Convert -#2107 - Let Record implement Comparable -#2111 - Improve org.jooq.Record Javadoc, to explain the various Record subtypes -#2112 - Add Row.types() and Row.dataTypes() as a convenience -#2113 - Document Record.hashCode() and equals() through Javadoc -#2133 - Allow for mapping to "" (empty) in order to avoid the - generation of a schema -#2156 - Add Row.type(int), type(String), dataType(int), dataType(String) for - convenience -#2158 - Add Executor.fetchLazy(Table) and fetchLazy(Table, Condition) for - convenience -#2159 - Let ExecuteListener extend Serializable -#2160 - Add Executor.batchUpdate(UpdatableRecord...) to mass-update a set of - UpdatableRecords -#2161 - Add Executor.batchInsert(UpdatableRecord...) to mass-insert a set of - UpdatableRecords -#2162 - Add some more Javadoc to JooqLogger -#2170 - Add 0.0 and 1.0 to Convert.FALSE_VALUES and Convert.TRUE_VALUES -#2171 - Allow for converting booleans to numbers through org.jooq.tools.Convert: - TRUE => 1, FALSE => 0 -#2172 - Add set(Field, Select>) methods to UPDATE, - MERGE and INSERT statements -#2176 - Add hint in code generation, when an unsupported, old database version - is being used (e.g. MS SQL Server 2000) -#2177 - Add ResultQuery.intern() and Result.intern() for string interning in - result sets -#2179 - Add Javadoc to QueryPart.hashCode() and equals() -#2199 - Allow for INSERT and UPDATE of pre-existing records through - SET [ Record ] clauses -#2202 - Add Mock JDBC objects for unit testing with jOOQ -#2203 - Add Executor.map(Schema) and Executor.map(Table) as a convenience to - apply runtime schema mapping -#2204 - Add BatchBindStep.bind(Object[][]) to bind lots of bind values at a time -#2205 - Add Result Executor.newResult(Table) to generate custom - results - -API changes (backwards-compatible) ----------------------------------- -#1309 - Let Factory.val() return Param instead of Field -#2031 - Change union(Select) and similar methods to - union(Select) -#2157 - Change the bounds of various > H - fetchInto(H handler) methods to RecordHandler -#2197 - Relax bounds on Factory.groupingSets(Collection>...) to - Collection>... -#2206 - Relax bounds of R on Executor.newRecord() from TableRecord to Record - -API changes (backwards-incompatible) ------------------------------------- -#1118 - Remove support for the code generation ant task -#1254 - Move org.jooq.tools.unsigned contents to org.jooq.types (along with the - INTERVAL types) -#1374 - Relax usage of generic . Replace by where data types - are involved. -#1533 - Extract Executor API from Factory. Let Factory contain only static - QueryPart factory methods -#1549 - Externalise connection lifecycle through new ConnectionProvider -#1649 - Remove support for code generation from pre-jOOQ 2.0 .properties file -#1740 - Remove support for generated master data enums -#1875 - Add generic type to SelectXXXStep DSL type hierarchy - for increased tuple type-safety -#1887 - Remove all deprecated code -#1894 - Remove constructors from dialect-specific factories -#1907 - Remove FactoryOperations, push its API down to org.jooq.impl.Executor -#1921 - Add InsertValuesStep[N] - Executor.insertInto(Table, Field, Field, ..., Field) -#1926 - Add MergeXXXStep - Executor.mergeInto(Table, Field, Field, ..., Field) -#1977 - Remove the confusing concept of having a "main key" as opposed to a - "primary key" -#2042 - Remove generated setters, setting foreign key values from records -#2043 - Remove generated navigation methods -#2060 - Remove redundant SimpleSelectXXX API -#2117 - Remove the FieldProvider marker interface. Simplify the FieldProvider - API -#2119 - Rename Row.getDegree() to Row.size() - -Behaviour changes (backwards-incompatible) ------------------------------------------- -#1235 - SQLite BIGINT data type erroneously maps to java.math.BigInteger -#1578 - Change configuration of ExecuteListeners in Configuration. Listeners - instances should be provided, not classes -#2076 - Stop "supporting" comma-separated regular expressions in the code - generator configuration -#2088 - Do not treat CUBRID "owner" as schema in generated code - -Bug fixes ---------- -#1170 - Improve performance on jOOQ's reflection usage -#1626 - Explicitly implement hashCode() and equals() in some additional - QueryParts -#1886 - Query.bind() has no effect when Query.keepStatement(true) and - StatementType.STATIC_STATEMENT are combined -#1890 - Bad Postgres array serialisation when " or \ characters are contained in - a String[] -#1938 - Improve AbstractField.hashCode() and AbstractTable.hashCode() and - similar, as these two are called very often -#1942 - Inefficient call to String.split() in StringUtils.toCamelCase() leads to - non-negligible performance overhead in POJO transformation calls -#1937 - Inefficient implementations of AbstractDataType.equals() and hashCode() -#1954 - Bad SQL rendered when combining ORDER BY [ some-function ] with LIMIT .. - OFFSET in DB2, SQL Server -#1958 - Bad SQL rendered for OVER (ORDER BY [ some-function ]) for SQL Server - and Sybase -#1974 - Optimise various Executor.fetchOne() methods, which consume the whole - ResultSet before throwing an InvalidResultException -#1979 - Thread safety issue in org.jooq.impl.FieldList -#1982 - Change RenderNameStyle.UPPER, LOWER, AS_IS to quote literals if needed -#1992 - Bad reference to org.jooq.debug.[impl].DebugListener in the manual -#1993 - Bad code generated when the same table name exists in multiple schemas - in SQL Server -#1995 - Record.original() values aren't updated after a Record.store() operation -#1997 - Review the manual's tutorial for integrity -#2001 - Named Params are treated as null literals on right sides of comparisons -#2007 - Bad type coercion on the right hand side of a comparison predicate, when - the left hand side is Field -#2011 - Implement some micro-optimisations in DefaultRenderContext -#2025 - Correctly handle multiple foreign keys defined on the same column -#2045 - Bad hashCode calculation when Records contain arrays or byte[] -#2055 - MySQL's UPDATE [t1] JOIN [t2] syntax can cause syntax errors as column - references are not fully qualified -#2057 - Cannot properly extract bind values for LIMIT .. OFFSET clause from a - SELECT statement -#2063 - jOOQ-meta loads Firebird composite unique key columns in wrong order -#2073 - The code generator's flag doesn't affect Oracle - VARRAY and TABLE types -#2082 - Oracle PIVOT expression doesn't bind any variables of a derived table - being pivoted -#2085 - java.lang.NoSuchMethodError: org.apache.log4j.Logger.isTraceEnabled()Z - when logger dependency is missing -#2086 - SQL syntax error when aliasing outcome of a relational division -#2091 - CUBRID doesn't really have a NVARCHAR data type -#2098 - NullPointerException when org.jooq.impl.EnumConverter converts null -#2104 - SQLite code generation treats multi-column primary keys like multiple - single-column unique keys -#2108 - SQLite returns NULL for val(new Date(0)).add(-1) and some other date - time arithmetic expressions -#2128 - Misleading Javadoc in Factory / Executor.selectCount() -#2137 - Failure to assign a value to a record pojo for a column with a - composite type when using select into. -#2139 - batchStore with Postgres composite types incorrectly reuses values from - the first record. -#2140 - No table java mapping generated using maven plugin - missing inputSchema - in postgres -#2143 - UnsupportedOperationException when binding UDTRecord in batchStore() for - Oracle -#2144 - Improve AbstractField.equals() and AbstractTable.equals() and similar, - as these two are called very often -#2145 - Improve QueryPartList.removeNulls() as this is called very often -#2154 - Generated Records should access values by index, not by field, for - performance reasons -#2165 - Add H2 database definitions to the jOOQ-scala module (to prevent - compilation errors) -#2167 - Convert.convert("xx", boolean.class) returns null, instead of false -#2178 - Improve FieldList. Avoid creating excessive array lists, where simple - (immutable) Field[] are sufficient -#2180 - Optimise DAOImpl by using the new ReflectionMapper instead of calling - Record.into() all the time -#2187 - Change all Javadoc

    tags to

    (To fix Java 7 standard Javadoc - style layout issues) -#2210 - Executor.fetchFromCSV() shouldn't mark resulting records as "changed" -#2215 - Improve example in the "jOOQ for CRUD" section. Use only columns from - the sample database -#2223 - SQL injection is possible in org.jooq.impl.Val, if client code doesn't - correctly enforce generic typesafety, and bind variables are inlined -#2227 - Field.in(T...) doesn't convert argument values to the Field's type - -Version 2.6.0 - October 26, 2012 -================================================================================ - -This release has a new main feature: the type-safe support for row value -expressions also known as tuples - up to a degree of 8. The API is formed in a -similar way as pre-existing tuple support in languages like C# or Scala. - -jOOQ's Scala integration has also been improved through the new jOOQ-Scala -module, which provides some useful implicit defs for operator overloading. -Future versions of jOOQ-Scala may experiment with Scala 2.10's Macros - -This release also ships with a lot of new deprecation to help you prepare for -the upcoming major release. - -Minor feature improvements include: - -- Lots of new fetchGroups() and intoGroups() methods, thanks to Ivan Dugic -- JDBC execution control support, such as cancel(), maxRows(), queryTimeout() -- Allowing for re-using JDBC PreparedStatement between Query executions -- Support for the SQL standard OVERLAPS predicate -- A new RecordMapper, similar to the existing RecordHandler - -Features and improvements -------------------------- -#385 - Allow for keeping open statements in a Query -#600 - Add support for Oracle / SQL Standard linear regression functions -#1058 - Add Factory.row(T1, T2, .. TN) and Factory.row( - Field, Field ... Field) to allow for creating tuples / rows -#1077 - Add support for the SQL standard OVERLAPS predicate -#1245 - Improve formatting for DECIMAL data types in Result.format(). Nicely - align the decimal point and reserve space on both sides -#1484 - Let XJC-generated artefacts implement Cloneable -#1527 - Support for converting String to java.net.URL, java.net.URI, and - java.io.File -#1674 - Export data types with Result.formatXML() and Result.formatJSON() - exports -#1679 - Add Factory.table(String, QueryPart...) -#1708 - Add Map> ResultQuery.fetchGroups(Field, Class) -#1709 - Add Map> ResultQuery.fetchGroups(Field[]) -#1710 - Add Map> - ResultQuery.fetchGroups(Field[], Class) -#1719 - Make logic from ResultQuery.fetchArray() available in Result.intoArray() -#1728 - Add support for the MySQL COUNT(DISTINCT expr, expr...) aggregate - function syntax -#1744 - Add support for the CUBRID DECR() function -#1756 - Add RecordMapper, similar to RecordHandler, mapping records to - custom types -#1762 - Add package-info.java to add Javadoc documentation to all packages -#1766 - Simulate row comparisons where they are not supported -#1773 - Add a new jOOQ-Scala project and jooq-scala artefactId, to contain jOOQ - extensions in the Scala language -#1782 - Move JAXB bindings out of XSD, in order to support more advanced - bindings -#1783 - Generate @SuppressWarnings("all") in jOOQ-generated artefacts -#1784 - Enhance the BETWEEN predicate, introducing the AND keyword -#1810 - Add Map ResultQuery.fetchMap(Field, Class) and - Result.intoMap(Field, Class) -#1816 - Add support for materialized views in Oracle's code generator -#1828 - Reduce log level for Factory deserialisation to TRACE -#1837 - Add support for @java.beans.ConstructorProperties when fetching into - immutable POJOs -#1841 - Add SortField Field.sort(SortOrder) to allow for dynamic sorting -#1842 - Add Condition Field.compare(Comparator, Field) to allow for dynamic - comparisons -#1844 - Add Table Table.join(TableLike, JoinType) to allow for - dynamic joining -#1845 - Add Factory.schemaByName(String) for plain SQL schemata -#1848 - Add Record.changed() to indicate whether a Record contains "dirty" - values -#1849 - Add Record.original() to obtain the originally fetched values from a - Record -#1854 - Add ResultQuery.maxRows(int) to limit the number of actually fetched - records -#1855 - Add Query.cancel() to support for interrupting statements prematurely -#1856 - Add Query.queryTimeout(int) to support for JDBC's - Statement.setQueryTimeout() - -API changes (backwards-compatible) ----------------------------------- -#1800 - Deprecate AliasProvider -#1807 - Result.intoArray() declares "throws MappingException", which isn't true -#1839 - Deprecate the various Result.getValuesAs[Type] and - Record.getValueAs[Type] methods -#1840 - Deprecate org.jooq.Store -#1866 - Deprecate [Schema-Name]Factory, remove reference to it from the - tutorials -#1869 - Deprecate org.jooq.NamedQueryPart -#1870 - Deprecate org.jooq.NamedTypeProviderQueryPart -#1872 - Improve jOOQ's RenderContext pretty printing behaviour -#1881 - Deprecate ConditionProvider, OrderProvider, LockProvider types - -Bug fixes ---------- -#1593 - Factory.field("{1} + {0} + {0}", val(1), val(2)) doesn't work. Cannot - re-use / re-order placeholders -#1720 - Improve performance by using Record.getValue(int) instead of - Record.getValue(Field) internally, where more than one value is - retrieved from a record -#1751 - Result.intoResultSet() generates wrong ResultSetMetaData if runtime - schema mapping is applied -#1764 - Add missing @Support({ ... FIREBIRD ... }) annotations -#1768 - NullPointerException when DAO.fetchOne() returns no record -#1774 - QueryPart.toString() does not load default settings from classpath -#1786 - Fix SEQUENCE support for Firebird -#1791 - Log a table's input/output names, and PK name when generating code -#1792 - Factory.fieldByName() and tableByName() do not correctly escape quotes -#1797 - SQL syntax errors when plain SQL contains comments with question marks - and SQL is executed as StatementType.STATIC_STATEMENT -#1802 - Result.into(Table) doesn't work correctly, if the same field name - appears twice in Result -#1806 - Let Record.toString() wrap the record in a temporary Result and call - Result.toString() instead -#1819 - MappingException in Record.into(Class), when POJO setters have - applicable names but non-applicable argument types -#1820 - Cannot fetch into non-public POJO classes. Their members / getters / - setters should be made accessible -#1829 - Factory.execute(String) may cause errors when plain SQL returns results -#1830 - Allow for passing null or empty arrays to intoMap(Field[]) and - intoGroups(Field[]) -#1850 - Record.equals() returns true as soon as both records hold a "null" value - for a given field -#1860 - Bad Results returned from plain SQL "select *" queries, if several - selected columns share the same name -#1876 - NULL constraint violation when storing a copied record - -Version 2.5.0 - August 26, 2012 -================================================================================ - -Welcome to another great database integration in jOOQ: Firebird! This is one of -the more popular open source SQL databases out there, with a rich feature set, -including the SQL standard MERGE statement. - -Apart from this, the main new features are: - -- Optimistic locking. jOOQ's UpdatableRecord API transparently implements - optimistic locking on its store() and delete() methods. By default, the - in-memory record is compared with the one in the database at write time. But - you can also let jOOQ handle incremented VERSION or TIMESTAMP columns for you. -- Oracle feature increment. Many nice Oracle features are now supported: - user-defined aggregates, regular expressions, Oracle Text, CONNECT_BY_ROOT and - ORDER SIBLINGS BY clausess, partitioned outer joins and more -- jOOQ's convenience API has been greatly enhanced. This includes many improved - fetch methods and new short forms for equal=eq, notEqual=ne, greaterThan=gt, - etc. to better align jOOQ with JPA, XSL, QueryDSL and many other tools that - abbreviate these keywords -- Many types and methods have been deprecated to help you foresee the upcoming - changes in jOOQ 3.0 - -Please consider also the updated manual with its new, more user-friendly -structure - -Features and improvements -------------------------- -#430 - Add support for the Firebird database -#457 - Add support for Oracle user-defined AGGREGATE functions -#620 - Add support for the SQL:2008 standard LIKE_REGEX operator -#722 - Remove casting of bind values in Ingres -#727 - Simulate RPAD and LPAD in SQLite -#816 - Add support for Oracle Text functions -#1339 - Add option to generate immutable pojos -#1547 - Support "optimistic locking" in UpdatableRecord.store() and delete() -#1552 - Generate fetchBy[ColumnName] methods in generated DAO classes -#1553 - Add some Javadoc to document the difference between using a Factory with - a Connection or with a DataSource -#1556 - Add javax.validation API to full deliverable -#1565 - Add Factory.connectByRoot(Field) to support the Oracle - CONNECT_BY_ROOT pseudo column -#1570 - Add Factory.condition(String, QueryPart...) similar to - Factory.field(String, QueryPart...) -#1582 - Add support for Oracle's ORDER SIBLINGS BY clause, in combination with - CONNECT BY -#1586 - Add missing constructors taking DataSource to dialect-specific factories -#1587 - Generate missing constructors taking DataSource in schema-specific - factories -#1595 - Simulate REPEAT() in SQLite -#1596 - Add support for optimistic locking using generated information about - "timestamp" or "version" columns -#1627 - Handle NULL in CSV imports/exports -#1645 - Add support for Oracle's PARTITION BY clause in OUTER JOINs -#1657 - Reorganise the manual -#1664 - By default, activate in the code generator -#1665 - Add support for the empty GROUP BY () clause -#1675 - Add support for the SQL standard IS [NOT] DISTINCT FROM predicate -#1680 - Overload all plain SQL DSL methods to also accept QueryPart arguments -#1681 - Simulate empty GROUP BY () clause in Sybase ASE and Ingres, joining a - dummy table and grouping by a constant field -#1684 - Add Setting to indicate that fetched records shouldn't - be automatically "attached" -#1685 - Improve Javadoc of Attachable.attach(). Document how "detaching" works -#1688 - Add E Record.into(E) as a complement to E Record.into(Class) -#1692 - Replace Factory.executeInsert(), Factory.executeUpdate() and similar - methods with more succinct variants -#1696 - Add short versions of comparison predicate methods, such as eq, ne, gt, - ge, lt, le -#1698 - Add support for the SQL standard BETWEEN SYMMETRIC predicate -#1701 - Add Factory.not(Condition) as a synonym for Condition.not() -#1704 - Document the behaviour of Factory.newRecord(Table, Object) and - Record.from(Object) with respect to UpdatableRecord.store() -#1707 - Add Map> ResultQuery.fetchGroups(Field) and - Result.intoGroups(Field) -#1712 - Add > Result.sortAsc .sortDesc(Field) -#1713 - Add Result.sortAsc, .sortDesc(Field, Comparator) -#1714 - Add Result.sortAsc, .sortDesc(Comparator) -#1718 - Document usage of InvalidResultException on the ResultQuery.fetchXXX() - Javadocs -#1721 - Add Map> ResultQuery.fetchGroups(Field, Field) - and Result.intoGroups(Field, Field) -#1722 - ResultQuery.fetchArray(int) and .fetchArray(String) should return a - typed array, even if this cannot be checked by the compiler -#1723 - Add Factory.fetchLazy(ResultSet) - -API changes (backwards-compatible) ----------------------------------- -#1544 - Remove Attachable interface from QueryPart hierarchy -#1579 - Deprecate org.jooq.Type -#1580 - Deprecate org.jooq.SchemaProvider -#1638 - Deprecate org.jooq.ArrayRecord.createArray() -#1639 - Deprecate org.jooq.Adapter -#1687 - Let Cursor.fetchInto(Table) return Result instead of List -#1736 - Deprecate TableRecord.{store|refresh|delete}Using() methods as being - part of jOOQ's internal API -#1741 - Deprecate org.jooq.MasterDataType - -Bug fixes ---------- -#1572 - Use Thread.currentThread().getContextClassLoader() to load - ExecuteListener classes as a workaround for experienced class loading - problems when using OSGi -#1584 - Code generation error with Oracle UDT static functions -#1632 - Improve the performance of various DefaultRenderContext methods, by - locally caching Settings values -#1633 - Improve the performance of CursorImpl.CursorIterator by setting Record - values by index rather than by Field -#1635 - Improve the performance of Factory.fetch(ResultSet) by caching data type - normalisation regex in FieldTypeHelper -#1650 - jOOR Fix #16: Can't call Reflect.create(A, B, null) -#1660 - Factory.renderContext().castMode(CastMode.NEVER).render(query) doesn't - work. CastMode is not applied -#1667 - Bad variable binding when NULLS FIRST, NULLS LAST is simulated in SQL - Server and other databases -#1673 - Result.formatXML() and Result.intoXML() do not render namespaces - correctly -#1683 - Oracle code generation regression for 10g. No such column - ALL_PROCEDURES.OBJECT_ID -#1693 - Cannot bind UDT values from other schemata to stored procedures -#1730 - Compilation errors in SQLite generated code when flag - is set to true - -Version 2.4.0 - July 8, 2012 -================================================================================ - -This release's main new feature is jOOQ's added convenience in -Factory initialisation for those users who get their database -connectivity through JDBC DataSources. If supplied with a -DataSource, a jOOQ Factory will handle the Connection lifecycle -internally, closing the Connection when no longer needed. - -The H2 MERGE statement syntax is now supported and simulated in -other databases, for those users that prefer its more intuitive -syntax over the SQL standard. - -The code generator now also allows for generating interfaces and -DAOs per table. DAO generation was previous discussed on the user -group and seen in a competitor product called OneWebSQL. - -The jOOQ Console now supports breakpoints for even more effective -SQL development - -Features and improvements -------------------------- -#1141 - Add Result.intoResultSet() to wrap a Result in a JDBC - ResultSet -#1253 - Avoid JDBC escape syntax for date/time literals -#1280 - Generate DAO classes and interfaces for POJOs -#1404 - Document the lifecycle of an ExecuteListener in the - Javadoc -#1411 - Add support for Postgres "any" data type (with quotes!). - This seems to map well to java.lang.Object -#1418 - Support case-insensitive schema names in code generation -#1419 - Add some WARN-level logging when the source-code - generator doesn't generate any artefacts -#1423 - Add Field.likeIgnoreCase() to support Postgres' ILIKE - operator -#1424 - Add Factory(DataSource) and similar constructors -#1427 - Add Factory.batchStore(Collection>) for convenience -#1428 - Add DataType.convert(Object...) and - DataType.convert(Collection) for convenience -#1431 - Add org.jooq.Name Factory.name(String) to contruct - QueryParts that are escaped according to - Settings.getRenderNameStyle() -#1432 - Add Factory.fetch(String, QueryPart...) and - Factory.execute(String, QueryPart...) and similar methods - to support arbitrary QueryParts in plain SQL -#1434 - Add UniqueKeyDefinition.isPrimaryKey() for completeness -#1438 - Add Result Factory.fetchFromCSV(String) -#1440 - Add top-level pom.xml for jooq-parent artefact (GitHub - Issue #14) -#1446 - Converting arbitrary strings to Number / Date should - return null, instead of throwing an exception -#1449 - Generate some meaningful Javadoc into the generated - [schema-name]Factory classes -#1454 - Add line breaks to generated Javadoc where appropriate -#1463 - Add option to let generated Record / POJO objects - implement a common generated interface -#1470 - Support interface types in ResultQuery.fetchInto(Class), - Result.into(Class), and Record.into(Class) methods, - returning a proxy -#1471 - Upgrade internal jOOR dependency to jOOR 0.9.4 -#1473 - Add IdentityDefinition to jooq-meta -#1501 - Add support for conversion of String to - java.sql.{Date, Time, Timestamp}. GitHub issue #22 -#1504 - Document behaviour of fetch() and fetchOne() in case jOOQ - cannot fetch actual records -#1509 - Minor improvements in the generator source code. GitHub - pull request #23 -#1510 - Generate additional setters for foreign keys, accepting - records as arguments -#1521 - Expose Connection methods, such as commit(), rollback() - and similar transaction-related methods in Factory -#1523 - Support ROW_NUMBER() OVER() for the latest version of - Derby and H2, which support it -#1524 - Simulate ROW_NUMBER() OVER() in HSQLDB using ROWNUM() -#1528 - Let generated interfaces extend Serializable -#1532 - Clarify the lifecycle of Configuration.data in the - Javadoc -#1534 - Generate more meaningful Javadoc where "an uncommented - item" stands now -#1536 - Add documentation to the FOR UPDATE OF clause, indicating - that DB2 may have stricter requirements regarding - updatability of fields -#1541 - Add support for the H2 MERGE syntax - GitHub Issue #18 -#1542 - Simulate the H2 MERGE syntax in other dialects supporting - the SQL standard MERGE statement - GitHub Issue #18 -#1545 - Website and Documentation anchors should be links to - themselves, visually recognisable - -Features and improvements (jOOQ Console) ----------------------------------------- -#1398 - Allow for adding breakpoints in jOOQ Console - -API changes (backwards-compatible) ----------------------------------- -#1408 - Relax bounds of in Factory.truncate() to Record, - instead of TableRecord -#1429 - Change Convert.convert(List, XXX) to accept Collection - instead of List - -Bug fixes ---------- -#1020 - Improve Oracle's LIMIT .. OFFSET clause simulation. - GitHub Issue #16 -#1358 - Compilation errors in generated source code when Oracle - overloaded procedures collide with procedures that end - with numbers -#1437 - Error in Javadoc of FactoryOperations.fetchOne(). This - method may return null -#1441 - Performance issue with AbstractDataType.convert(Object). - Avoid conversions when they're obviously unneeded -#1448 - Handle String to Enum conversion (when Java Enums are - stored as Strings in the database) - GitHub issue #15 -#1459 - Generated Keys.java static class too large (static - initialiser can become bigger than 64kb) -#1460 - Table.getReferencesTo(Table) doesn't work correctly for - aliased tables -#1461 - Exception when rendering of {fn datetimeadd(...)} for - HSQLDB and Derby -#1462 - Document missing GeneratorStrategy features, such as - getJavaClassImplements() -#1465 - Custom generator strategy's printImplements() is called - with Mode == RECORD for tables -#1478 - Caching SQLDialect in AbstractDatabase heavily improves - code generation performance -#1483 - Inefficient cloning of default settings using JAXB - unmarshalling leads to non-negligible overall overhead. - Use serialisation instead (short of a useful XJC clone - plugin) -#1489 - Fix manual where it claims to throw SQLExceptions -#1490 - Compilation error when a SQL Server stored procedure has - a parameter named "value" -#1493 - Bad syntax for SELECT /*+hint*/ DISTINCT ... in Oracle -#1498 - jOOQ does not compile using JDK 7 / JDBC 4.1. GitHub - Issue #24 -#1499 - Generated members of Tables.java are not final -#1505 - Bad exception message when ON DUPLICATE KEY IGNORE cannot - be simulated -#1515 - Splitting of large NOT IN conditions is wrong. The parts - should be connected with AND, not with OR -#1522 - fetch().into(Table) doesn't initialise records correctly, - such that subsequent calls to store() will execute an - INSERT, rather than an UPDATE -#1525 - Generate missing Javadoc to getters for procedure OUT - parameters -#1529 - Factory.batchStore() logs all single statements to DEBUG - output. Find a more accurate log output -#1537 - Factory.batchStore() renders bad SQL for Postgres. The - RETURNING clause is not allowed in batch INSERTs - -Version 2.3.1 - May 11, 2012 -================================================================================ -This is an important patch release fixing some regressions in the -code generator for the Postgres dialect. With 2.3.0, it was no -longer possible to generate schemata of which the database user -was not the owner. - -Bug fixes ---------- -#1334 - Fix inaccurate simulation of TRUNC(number, decimals) for - Derby -#1403 - Documentation bug: ctx.statement() can be replaced in - executeStart(). This is not documented -#1406 - Compilation errors in generated source code when Postgres - stored procedure parameter is called "NAME" -#1407 - Compilation errors in generated source code when Postgres - data-type is "any" (with quotes!) -#1409 - Postgres code generation broken when not connecting with - the owner of a schema - -Version 2.3.0 - May 6, 2012 -================================================================================ - -This is a minor feature increment release, featuring many useful -API enhancements, some new functions, some new syntax support -elements, improved source code generation and a lot of -improvements on the jOOQ Console, thanks to Christopher Deckers. - -The updated jOOQ Console now allows for filtering incoming -statements directly on the server side, using regular expression -filters on statement text and other features. These improvements -are a part of a general strategy to introduce breakpoints and -more sophisticated debugging capability to the jOOQ Console. - -Features and improvements -------------------------- -#597 - Add support for Oracle KEEP (DENSE_RANK FIRST...) - aggregate function clause -#910 - Add ExecuteListener extension to allow for overriding - exception translator to handle vendor-specific error - codes -#1286 - Add "renderSchema" flag to Settings, to completely - disable rendering of schema names -#1293 - Generate setter methods for JAXB annotated configuration - properties -#1295 - Add support for MySQL's INSERT IGNORE clause -#1296 - Simulate the FOR UPDATE clause for SQL Server, CUBRID, - using JDBC's ResultSet.CONCUR_UPDATABLE -#1302 - Add Factory.inline() to allow for flagging inline-only - "bind values" -#1303 - Add connection-less Factory constructors for convenience, - when jOOQ is only used as a SQL query builder -#1304 - Add option to generate JSR-303 @NotNull and @Size - annotations to generated POJO's -#1307 - Let HSQLDB dialect render NVL2() as NVL2() instead of - CASE expression -#1312 - Allow for omitting , and generate all - available schemata in that case -#1315 - Let generated factories use their associated Schema as - the Settings' RenderMapping's defaultSchema -#1319 - Move jooq-spring's FactoryProxy to the core jooq project -#1322 - Add Factory.dateAdd() and timestampAdd() for convenience -#1327 - Add DataType.isLob() -#1328 - Add Field inline(char), inline(Character), - inline(CharSequence) for convenience -#1333 - Add support for the Oracle TRUNC function, for numeric - arithmetic -#1336 - Let Record.into(Class) and similar methods accept - "immutable" classes, i.e. setter-less classes that take - several constructor arguments -#1340 - Use Constructor.setAccessible(true), if no default - constructor is available on the target type of - Record.into(Class) -#1342 - Improve Javadoc on Factory.function(). Document arguments -#1349 - Add support for the CUBRID Click-Counter INCR() -#1352 - Allow for creating syntax-error and SQL-injection safe - qualifiers for org.jooq.Field and org.jooq.Table -#1361 - Add Factory.batchStore(TableRecord...), to allow for - batch UPDATE/INSERTs of many records -#1367 - Make configured ExecuteListeners default constructors - accessible -#1366 - Let org.jooq.Batch extend Serializable -#1378 - Upgrade internal jOOR dependency to jOOR 0.9.3 -#1379 - Upgrade internal jOOU dependency to jOOU 0.9.1 -#1390 - Add RenderContext.qualify() to indicate whether - QueryParts should render qualified versions of themselves - or not - -Features and improvements (jOOQ Console) ----------------------------------------- -#1242 - Upgrade jOOQ Console dependency on RSyntaxTextArea from - 1.5 to 2.0.2 -#1249 - Allow for filtering incoming statements in jOOQ Console -#1393 - Implement a communication protocol between Console server - types and Console client types to allow for more - sophisticated functionality - -API changes (backwards-compatible) ----------------------------------- -#1310 - Deprecate Factory.literal() in favor of Factory.inline(), - and Factory.field() -#1368 - Promote AbstractQuery.isExecutable() to the public API - -Bug fixes ---------- -#989 - INSERT and UPDATE statements always render non-qualified, - escaped field names. This may cause trouble when using - plain SQL fields -#1109 - Standalone TABLE or VARRAY types are not correctly - initialised before referencing tables load them -#1279 - NullPointerException when leaving empty -#1283 - The LIKE escape character needs escaping, too, in - contains(), startsWith(), endsWith() -#1306 - Add missing INTERVAL data types to HSQLDBDataType -#1308 - Oracle's DataTypeDefinition reports the length of a BLOB - / CLOB data type to be 4000 -#1313 - and match only table names, not - fully qualified names -#1323 - Add support for byte[] in Postgres UDTs -#1324 - Code generation error in Oracle 10g when generating - stored procedures -#1326 - Error when deserialising BLOBs from Oracle UDTs -#1329 - NullPointerException when passing null to - timestampDiff(Field, Field) -#1343 - Regression in insertInto(...).values(...). Cannot pass - Field to values() -#1344 - Initialise Result ArrayLists to their expected size, if - that size is known. -#1360 - jOOR issue 12: "Don't reset the accessible flag to false, - if setting it to true is required, to avoid race - conditions in concurrency contexts" -#1371 - Missing conversion when using unsafe Field types in - BATCH statements -#1376 - Oracle UDTs in REF CURSORs are not deserialised correctly - from procedure OUT parameters -#1377 - Oracle UDTs are not deserialised correctly when the same - UDT name is present in multiple schemata -#1394 - NullPointerException when omitting element in - code generation configuration - -Version 2.2.1 - April 12, 2012 -================================================================================ - -This is a minor patch release, fixing some issues related to the -code generation of the new CUBRID integration as well as other, -minor issues. Upgrade if you're using CUBRID - -Bug fixes ---------- -#1287 - Remove oracle.sql dependency also from OSGi information - in pom.xml -#1288 - SQL syntax errors from sequences when using RenderMapping - with defaultSchema -#1289 - DefaultBindContext logs as Util.class -#1297 - Compilation error in CUBRID generated artefacts - referencing OBJECT types -#1298 - Avoid source code generation errors when generating code - for unknown, dialect-specific data types - -Version 2.2.0 - April 09, 2012 -================================================================================ - -Finally, jOOQ has added support for another database, and a very -promising one, that is. http://www.cubrid.org is a surprisingly -original mixture of a relational and object-oriented database -where tables and classes are synonyms, so are records and -instances. The CUBRID database has a high level of compatibility -with MySQL and is aimed at MySQL users wanting more performance -for their web applications. For details, see the slides here: - -http://www.slideshare.net/cubrid/growing-in-the-wild-the-story-by-cubrid-database-developers - -jOOQ is proud to have become a CUBRID partner, looking forward -to further cooperation with CUBRID in the near future. - -Apart from that, jOOQ now fully supports SQL standard INTERVAL -data types. With JDBC and JPA lacking official support for this, -jOOQ aims for becoming the tool of choice for vendor-specific -date time arithmetic. True INTERVAL data type support is given in -HSQLDB, Ingres, Oracle, Postgres databases. Besides that, CUBRID -and MySQL support INTERVAL data type arguments in functions. In -other dialects, jOOQ simulates DATEADD(), TIMESTAMPADD(), -DATEDIFF(), TIMESTAMPDIFF(). - -For jOOQ's OLAP friends, there is now also support for the Oracle -LISTAGG function (LIST() in Sybase, XMLAGG() in DB2, STRING_AGG() -in Postgres, GROUP_CONCAT() in CUBRID, H2, HSQLDB, MySQL). -LISTAGG is an "ordered aggregate function", meaning that the -aggregation is done using a specific ordering. Keep an eye out -for more such function support in future versions. - -Features and improvements -------------------------- -#566 - Add support for INTERVAL data types -#585 - Add support for DATE, TIME and INTERVAL arithmetic -#1183 - Add support for DEFAULT values in Oracle stored procedure - parameters -#1243 - Let generated POJOs (and Records) extend base classes - and implement interfaces -#1252 - Avoid JDBC escape syntax for Oracle stored procedure - calls. Generate PL/SQL syntax, instead -#1255 - Let generated Tables contain a public default constructor - to be able to extend those classes - Github issue #12 -#1257 - Add CUBRID support -#1268 - Add Factory.field(String, QueryPart...) to generate - custom clauses -#1269 - Add YEAR(), MONTH(), DAY(), HOUR(), MINUTE(), SECOND() - function support as shortcuts for EXTRACT() -#1273 - Simulate GROUP_CONCAT() aggregate function using Oracle's - LISTAGG() function, where available -#1274 - Add support for the Oracle LISTAGG(...) WITHIN GROUP - (ORDER BY ..) [ OVER (..) ] aggregate / analytic function -#1275 - Simulate Sybase LIST() aggregate function using Oracle's - LISTAGG() function -#1276 - Simulate Oracle's LISTAGG() in DB2 using XMLAGG(), - SUBSTR() and CONCAT() -#1278 - DEBUG log both executed SQL and SQL with inlined bind - values - -API changes (backwards-compatible) ----------------------------------- -#1262 - Pull up OracleFactory.prior() and other CONNECT BY - related methods to Factory - -Bug fixes ---------- -#1241 - Wrong variable binding when comparing CHAR columns in - Derby and DB2 without explicit casting to VARCHAR -#1244 - Cannot override class name in GeneratorStrategy in - Mode.POJO -#1248 - Setting both false and - true leads to compilation errors -#1256 - Fixed code generation issue with H2 user defined - functions returning VARCHAR -#1263 - Pass fetchsizes <= 0 to the JDBC driver (for vendor- - specific MySQL compatibility) -#1270 - Most databases allow for multiple identical foreign keys. - This leads to compilation errors in generated source code - -Version 2.1.0 - March 18, 2012 -================================================================================ - -With this version, jOOQ attempts to follow versioning rules -imposed by semantic versioning: http://semver.org/ -There will be 1 minor release per month, and a couple of patch -releases per year, depending on popular demand - -The main improvements for this release include - -- The possibility of providing jOOQ with a custom type mapping. - You can now define your own Converter types that are used by - jOOQ to map a database's SQLDataTypes to your custom types. - This is particularly useful for Java's enums. Read more about - custom converters in the manual: - http://www.jooq.org/manual/ADVANCED/CustomTypes/ - -- There are a lot of new runtime configuration options to control - the SQL style of SQL rendered by jOOQ. You can now specify - whether table/column names should be quoted / capitalised / - lower-cased, whether SQL keywords should be capitalised or not, - etc... - -- The handling of NULL has been improved in favour of using jOOQ - as a SQL builder library (e.g. along with Spring for execution) - NULL is no longer inlined, but bound as a variable. - -- jOOQ now supports simulation of the relational division - operation using an intuitive syntax. Read more about the - relational division here: - http://en.wikipedia.org/wiki/Relational_algebra#Division - -Features and improvements -------------------------- -#161 - Add runtime configuration to pretty print rendered SQL -#349 - Add SQLite relations support -#491 - Add runtime configuration for SQL keyword style (upper - case, lower case) -#521 - Add runtime configuration for SQL reference style (upper - case, lower case, as-is, quoted) -#1150 - Add code generation option to disable generation of - records -#1181 - Add support for SQL Server data types timestamp and - rowversion -#1188 - Load default Settings from the classpath at - /jooq-settings.xml, or from -Dorg.jooq.settings -#1193 - Specify main-class in jOOQ Console's manifest.mf and - include dependency in jar file -#1194 - Add ColumnDefinition.isNullable() -#1202 - Add support for the relational division operation: - A.divideBy(B).on(A.ID.equal(B.A_ID)).returning(A.X, ...) -#1207 - Add Factory.batch(Collection) for - convenience -#1208 - Render @javax.persistence.Column(nullable = false) - property, if available -#1209 - Render @javax.persistence.Column(length, precision, - scale) properties, if available -#1215 - Add org.jooq.Converter for custom type mapping -#1216 - Overload Record, Result.getValue() and .setValue() - methods to accept a Converter -#1217 - Add EnumConverter as a base type for custom enum - converters -#1218 - Add code generation options to generate - referencing a Java type and a Converter -#1224 - Add DataTypeDefinition.getLength() to jooq-meta's type - system -#1233 - Support custom JDBC properties for jooq-codegen -#1234 - Add Database.getTable(SchemaDefinition, String, boolean) - to fetch tables case-insensitively -#1239 - Add Factory.fetchLazy(String, Object...) - -API changes (backwards-compatible) ----------------------------------- -#1191 - Deprecate ConfigurationRegistry and replace by equivalent - ExecuteListener feature -#1219 - API Bug: Cannot use LIMIT .. OFFSET along with FOR UPDATE - -Bug fixes ---------- -#625 - Remove dependency from generated Routines to the - generator's SQLDialect -#1128 - NULL is inlined in INSERT statement instead of binding it - as a variable. This can cause issues when using jOOQ with - Spring -#1137 - Exclude MySQL column-level enum types when that column is - overridden by a -#1158 - Derby cannot handle inlined NULL literals in some - contexts -#1180 - Execute BatchMultiple (multi-query batch query), when - executing BatchSimple (single-query, multi-bind-value - query) with StatementType == STATIC_STATEMENT -#1189 - TableMapping regression for SQLite database -#1190 - Cannot store SQLite records when using - StatementType.STATIC_STATEMENT -#1199 - Table.getFields() returns an internal representation of a - table's field list. Make generated tables immutable! -#1200 - Internal API leak exposed through covariance in - AbstractType.getFields() -#1211 - Enforce method name disambiguation also when using custom - strategies in jooq-codegen -#1212 - Enforce identifier disambiguation also when using custom - strategies in jooq-codegen -#1221 - Incorrect ExecuteListener invocation for INSERT .. - RETURNING. executeStart() and executeEnd() are omitted -#1223 - Cache ExecuteListener classes for performance -#1225 - Bind NULL byte[] as java.sql.Types.BINARY instead of - BLOB in Postgres, to avoid errors -#1226 - Bind NULL UDTs with their associated type name in Oracle -#1232 - SQLException when Factory.fetch() does not return a - ResultSet -#1237 - Don't generate enum classes for columns in MySQL tables - that are excluded from code generation - -Version 2.0.5 - February 26, 2012 -================================================================================ - -This release finally introduced basic runtime configuration -features for the jOOQ Factory. This configuration now includes: - -- Execute listener and SQL tracing support. jOOQ allows you to - hook your own listeners into jOOQ's query execution engine to - be notified of all sorts of events -- The existing SchemaMapping features. They are now part of the - runtime configuration -- StatementType settings. Specify whether a Factory should - execute java.sql.PreparedStatements (with bind variables) or - static java.sql.Statements with inlined variables. - -The runtime configuration is documented here: - -http://www.jooq.org/manual/JOOQ/Factory/ - -The listener and tracing support has been requested by -Christopher Deckers, a new jOOQ user who has had the courtesy to -contribute the new jOOQ Console, which is documented here: - -http://www.jooq.org/manual/ADVANCED/ExecuteListener/ - -Apart from that, another long-requested feature is now fully -implemented: The GeneratorStrategy, allowing for custom naming -strategies in generated source code. This will allow for -generating custom table / record class name prefixes / suffixes, -as well as overriding the default behaviour for rendering UPPER, -lower and CamelCase artefacts. See the manual for details: - -http://www.jooq.org/manual/META/Configuration/ - -Features and improvements -------------------------- -#93 - Add Field.equalIgnoreCase(), Field.notEqualIgnoreCase() -#408 - Add class prefixes, suffixes and other options to the - code generator -#492 - Add runtime configuration -#1107 - Let Field.contains() support the Postgres ARRAY @> ARRAY - operator -#1140 - Add ResultQuery.fetchResultSet() to return the underlying - JDBC result set -#1143 - Add Result.isNotEmpty() for convenience -#1145 - Add runtime configuration to specify whether jOOQ should - execute java.sql.PreparedStatement (with bind variables) - or a java.sql.Statement (with inlined parameters) -#1146 - Add Query.getSQL(boolean) to indicate that bind values - should be inlined (as a convenience for - Factory.renderInlined(QueryPart)) -#1148 - Add Cursor.resultSet() to expose the underlying ResultSet -#1149 - Allow for optional - "http://www.jooq.org/xsd/jooq-codegen-2.0.4.xsd" - namespace in jooq-codegen configuration -#1152 - Add & org.jooq.EnumType> - E MySQLFactory.enumType(Class, int) for enum reverse - lookups of MySQL-specific enums -#1159 - Support matching numbers with LIKE, e.g. ID LIKE '%33%' -#1160 - Implement Field.contains(), .startsWith(), .endsWith() - for numeric values, too -#1161 - Use reflection to remove compile-time dependency on - ojdbc for creating ARRAYs -#1162 - Integrate jOOR into jOOQ for simpler reflection -#1164 - Distinguish between Definition.getInputName(), - .getOutputName() -#1165 - Add constraint name to generated javadoc -#1167 - Trivial issue with org.jooq.Factory.exists Javadoc - - GitHub issue #10 -#1169 - Add Configuration.setData(), getData() to convey custom - data in a configuration's lifecycle -#1172 - Add runtime configuration to deactivate JooqLogger -#1177 - Add jOOQ-Console module to jOOQ -#1184 - Add DataType.isArray() - -API changes (backwards-compatible) ----------------------------------- -#1142 - Rename Result.exportXML() to Result.intoXML() to stay - more consistent -#1151 - Deprecate SchemaMapping in favour of new runtime - configuration - -Bug fixes ---------- -#978 - Schema.getTables() and similar methods return empty lists - when Schema is mapped with SchemaMapping -#1153 - Bad inlining of booleans in Sybase ASE / DB2 / Oracle - SQL Server / SQLite -#1154 - Bad inlining of byte[] in most dialects -#1155 - byte[] are erroneously converted to String when using - Record.intoArray() -#1156 - Bad inlining of DATE / TIME / TIMESTAMP data types in - Ingres (and other dialects, when the setting differs from - the default) -#1166 - Some generated Javadoc uses naming strategy or plain - output name, instead of qualified output name -#1168 - Oracle packages are generated as static, instead of - static final -#1175 - Factory.use() seems to render SQL with the Schema name - still present -#1179 - Oracle-generated ArrayRecords need a reference to - org.jooq.Schema to read TABLE of OBJECT from stored - procedures - -Test cases ----------- -#1147 - Add integration tests for executing SQL generated using - Factory.renderInlined() - -Version 2.0.4 - February 12, 2012 -================================================================================ - -This release introduced many improvements to source code -generation. These improvements include: - -- Maven and standalone code generation now use the same XML - configuration, which is read by jOOQ-codegen using JAXB. This - allows for more complex configuration elements in the future -- jOOQ-codegen can now handle multi-schema databases and generate - code for tables referencing tables from other schemata. This - is integration tested against the SQL Server AdventureWorks - database -- jOOQ now allows to generate simple POJOs in addition to Records - and to annotate both POJOs and Records with JPA annotations - such as @Entity, @Table, @Id, @Column, @UniqueConstraint, etc. - -You can migrate your existing .properties configuration by running -> org.jooq.util.GenerationTool /your.properties migrate - -Besides that, there is a lot of ongoing work to improve the -integration of Oracle's TABLE and VARRAY types. - -Features and improvements -------------------------- -#8 - Add JPA annotations to generated POJOs / Records -#282 - Add support for multi-schema databases -#287 - Add support for Oracle TABLE types -#395 - Use XML configuration file instead of properties file -#1089 - Add Field.contains(), .startsWith(), .endsWith() as a - convenience for Field.like() (including escaping) -#1092 - Move master data table configuration from - generator.generate to generator.database namespace -#1093 - Add support for generator.strategy in Maven source code - generation -#1094 - Add support for generator.database.date-as-timestamp in - Maven source code generation -#1095 - Move generator.generate.unsigned-types to - generator.database namespace -#1096 - Add support for generator.generate.unsigned-types in - Maven source code generation -#1103 - Add support for SQL Server data type uniqueidentifier -#1106 - Add Factory.escape(Field, char) for use with LIKE -#1108 - Add support for multi-schema databases using Maven code - generation -#1115 - Add support for Oracle VARRAY/TABLE of OBJECT types -#1127 - Add support for POJO classes generation -#1129 - Allow for using Param in LIMIT .. OFFSET clauses -#1132 - Add RenderContext.castMode() to allow for avoiding casts - where this is not really needed -#1136 - Add generation option to enable/disable generating - navigation methods - -Bug fixes ---------- -#1099 - Derby generated artefacts are not sorted alphabetically -#1101 - Internal API leak exposed through covariance in - AbstractTable.joinXXX() methods -#1110 - VARRAY element type information is lost when unnesting - VARRAY's in Oracle -#1111 - VARRAY element type information is lost when unnesting - VARRAY's returned from functions in Oracle -#1114 - Syntax error when unnesting TABLE of OBJECT in Oracle. - The unnested table contains several columns but jOOQ only - unnests "COLUMN_VALUE" -#1117 - NullPointerException when passing an ArrayRecord - containing a null array to a stored function in Oracle -#1125 - Postgres needs casting for date time data types in - queries like SELECT ? FROM DUAL -#1131 - DB2: [Noauthorized routine named "LIKE" of type - "FUNCTION" having compatible arguments was found] when - using Field.like(concat(x, y)) -#1133 - Compilation errors in generated source code if the same - constraint name exists in several schemata -#1134 - NullPointerException in code generation when a foreign - key constraint references a table from another schema - that is not being generated -#1135 - Generated Javadoc references inputSchema instead of - outputSchema - -Test cases ----------- -#1009 - Add more integration tests for proper handling of - java.sql.Date, Time, Timestamp -#1090 - Run jOOQ tests against AdventureWorks SQL Server sample - database -#1105 - Add integration tests for multi-schema source code - generation and querying -#1122 - The 10k lines of integration test code are too heavy for - the compiler. Create test modules with fewer lines of - code, each. - -Version 2.0.3 - January 29, 2012 -================================================================================ - -This release focuses on increased compatibility between various -SQL dialect integrations as far as ARRAY and JOIN support is -concerned: - -- ARRAY types are only available in H2, HSQLDB, Oracle, Postgres. - Nevertheless, they can be somewhat simulated in other dialects - using nested selects with UNION ALL. Increased compatibility - leads to a nicer API, where ARRAYs are used along with ALL/ANY - quantifiers, for instance. - -- JOIN syntaxes can be quite powerful in SQL. Apart from - simulating NATURAL JOIN, JOIN USING clauses, as well as a - synthetic "KEY JOIN" syntax, jOOQ now also supports nesting - JOIN expressions to create more complex table sources. See a - recent blog post on the subject here: - -http://blog.jooq.org/2012/01/15/lets-revise-the-sql-from-clause/ - -Features and improvements -------------------------- -#578 - Add KEY JOIN syntax to simulate joining using generated - foreign keys -#577 - Simulate NATURAL JOIN syntax, where this is unavailable -#582 - Simulate JOIN USING syntax, where this is unavailable -#671 - Allow for nesting JOIN clauses -#676 - Add Table.join() methods to create more flexible table - sources -#993 - Add Field.equalAny(T[]), .equalAny(Field) methods -#1048 - Simulate (array) syntax for dialects - that do not support arrays -#1051 - Add Factory.execute(String, Object...) as a convenience - method for Factory.query(...).execute() -#1055 - Simulate Factory.table(Object[]) and table(List) using - UNION ALL in dialects that do not support arrays -#1060 - Improve debug logging of H2 arrays. The syntax is not - ARRAY[1, 2], but (1, 2) -#1065 - Add OracleFactory.sysContext(String, String) to support - Oracle's SYS_CONTEXT function -#1069 - Add support for INSERT INTO table(field1, field2, ...) - SELECT syntax - as opposed to the existing INSERT INTO - table SELECT -#1072 - Add support for LIKE .. ESCAPE .. syntax -#1074 - Add Field.notBetween(T, T) for convenience -#1080 - Add support for JDBC's Statement.setFetchSize() in - ResultQuery.fetchLazy() -#1082 - Add some more DEBUG logging in AbstractResultQuery - -API changes (backwards-compatible) ----------------------------------- -#1059 - Change SelectFromStep.from(Collection>) to - from(Collection>) - -API changes (backwards-incompatible) ------------------------------------- -#1087 - Change the NTILE function to return Field - instead of Field - -Bug fixes ---------- -#1071 - Make Sequence Serializable -#1081 - Derby error in NULL handling when simulating unnested - arrays that contain NULL values -#1084 - Bind index mismatch in val(null).equal(null) and in - val(null).notEqual(null) -#1091 - Add missing @Support annotations on Table.crossJoin() - methods - -Test cases ----------- -#1026 - Add integration tests for NTILE window function and - document compatibility -#1073 - Add integration tests for NOT IN queries holding NULL - arguments - -Version 2.0.2 - January 8, 2012 -================================================================================ - -This is a maintenance release for jOOQ 2.0. The main improvements -include - -- The whole jOOQ API is now annotated with a new org.jooq.Support - annotation to help you assess whether a certain SQL clause is - available in your database or not. This is particularly useful - when your application should support several databases at once - (e.g. MySQL, Postgres, Oracle) -- The Oracle PIVOT clause is now formally supported for advanced - statistical queries in Oracle. This clause will be simulated in - other dialects in the future. -- The DATE data type can be mapped to TIMESTAMP. This important - when you query a legacy Oracle database, where DATE columns - can also contain time information -- Several convenience methods have been added for more fluent - syntax, when using plain SQL result queries, subqueries as - tables, or when unnesting arrays in ANY() and ALL() quantifiers - -Further type mapping support is still experimental. An official -cooperation with MinuteProject for source code generation is -being analysed. With MinuteProject, many source code generation -issues could be addressed centrally, as MinuteProject specialises -in source code generation: - -http://minuteproject.wikispaces.com/ - -Features and improvements -------------------------- -#595 - Add support for Oracle's PIVOT clause -#869 - Add support for using ANY, ALL with arrays, not just with - subselects -#1007 - Formally document the API methods to indicate whether - something is supported by any given SQL dialect -#1011 - Add code generation configuration parameter to avoid - generating @Generated annotation -#1019 - Render LIMIT x OFFSET y also for MySQL, instead of - LIMIT y, x -#1022 - Add missing Sybase ASE implementation for Factory.use() -#1024 - Add Factory.resultQuery(String, Object...) to allow for - arbitrary execution modes of plain SQL queries (lazy, - later, into, array, etc) -#1025 - Add missing SQLite implementation for Factory.deg() and - Factory.rad() -#1033 - Generate table comments into generated Tables.java as - Javadoc -#1040 - Add Object[][] Result.intoArray() and - Object[] Record.intoArray() for convenience. Let - E Record.into(Class) also support array types. -#1041 - Add Table Factory.table(Select) convenience - method for more fluency -#1042 - Add support for DISTINCT keyword in SUM, AVG, MIN, MAX - aggregate functions -#1046 - Generate Ingres table and column comments in generated - source code (only Ingres 10) - -API changes (backwards-compatible) ----------------------------------- -#1050 - Deprecate usage of SOME quantifier in predicates, such as - equalSome() - -API changes (backwards-incompatible) ------------------------------------- -#1036 - Fixed API typo in - WindowsRowsStep.rowsBetweenUnboundedFollwing() -#1037 - The fluent API allows for JOIN clauses without FROM - clause - -Bug fixes ---------- -#1010 - The MERGE INTO .. WHEN NOT MATCHED THEN INSERT .. syntax - may cause type-safety issues in some databases. VALUES - should be converted before binding -#1014 - FindBugs: Latent risk of infinite recursion due to typo - in QueryPartList.retainAll(); -#1015 - FindBugs: 7 occurrences of "Bad attempt to compute - absolute value of signed 32-bit hashcode". In extreme - cases, this could lead to SQL syntax errors -#1016 - The Oracle CONNECT BY cond1 AND cond2 syntax erroneously - creates a WHERE cond2 CONNECT BY cond1 statement -#1028 - Syntax errors when using untyped param() in HSQLDB (and - other strongly typed dialects) -#1029 - Postgres can't bind NULL values in cases, where bind type - is Object.class and bind value was created with - Factory.param() -#1030 - UnsupportedOperationException when calling - Query.bind(int, Object) on a query containing plain SQL - fields -#1031 - Incorrect debug logging when plain SQL QueryParts like - field("?") bind null values -#1032 - Incorrect debug logging when plain SQL QueryParts contain - String literals, such as 'Hello? Anyobody out there?' -#1047 - Field.notEqualAny() erroneously renders <> ALL() - -Test cases ----------- -#1021 - Add explicit integration tests for - LEFT|RIGHT|FULL OUTER JOIN - -Version 2.0.1 - December 23, 2011 -================================================================================ - -This is a maintenance release for jOOQ 2.0. The main improvements -include - -- Better integration for using jOOQ with Spring Data. This - includes support for named parameters, as well as allowing to - change bind values on previously constructed Query objects -- The MERGE statement has been enhanced for better integration - with Oracle. -- jOOQ is now ready to use with Scala / Groovy - -For more information about using jOOQ with Scala, see this blog -post: -http://blog.jooq.org/2011/12/11/the-ultimate-sql-dsl-jooq-in-scala/ - -There is now also experimental support for a custom type mapping. -This mapping allows to rewrite data types at code generation time -as well as to specify custom enum data types (e.g. boolean Y/N). -Not all integration tests run smoothly for custom data types, -hence, this feature is not yet fully supported. - -Features and improvements -------------------------- -#691 - Add support for Oracle CURSOR REF IN / INOUT parameters -#677 - Add type-mapping configuration, enforcing types for - columns -#947 - Add custom type mapping support (experimental) -#968 - Allow for custom enum types, configured in the code - generator (experimental) -#974 - Add Schema.getTable(String), getSequence(String), - getUDT(String) for better runtime Schema meta-navigation -#975 - Add Sequence.getName(), getSchema(), getDataType() -#980 - Add support for named parameters, to better interact with - Spring -#991 - Add Query.bind(String, Object) and bind(int, Object) to - easily modify existing bind values -#992 - Document thrown DataTypeException in Convert methods -#998 - Enhance MERGE statement for Oracle extensions: - WHEN MATCHED THEN UPDATE .. WHERE .. DELETE WHERE .. - WHEN NOT MATCHED THEN INSERT .. WHERE .. -#1000 - Add support for MySQL's INSERT INTO .. SET .. syntax in - MERGE statement's WHEN NOT MATCHED THEN INSERT clause - -API changes (backwards-compatible) ----------------------------------- -#981 - Cannot insertInto(table("my_table")), as plain SQL tables - return Table, not Table. Relax - bound on R -#988 - Change Factory.field(String) to return Field - instead of Field -#999 - Make MERGE's WHEN MATCHED .. and WHEN NOT MATCHED .. - clauses optional -#1001 - Identity.getField() should return TableField - instead of Field -#1006 - Add Factory.value(...) as a synonym for Factory.val(...) - for increased Scala / Groovy compatibility - -Bug fixes ---------- -#973 - EnumType renders name() instead of getLiteral() in - formatXXX() methods -#977 - EnumType renders name() instead of getLiteral() in - Convert.convert() method -#979 - Record.from() sets all changed flags to true. That's not - necessarily correct in the event of storing the record - back to the DB -#985 - AbstractRecord.equals() does not correctly compare - arrays. Compare them using Arrays.asList() -#986 - Postgres / DB2 / Sybase ASE foreign-key namespace is - unique-per-table. jOOQ forces all foreign keys from all - tables into the same namespace -#990 - Problems when encoding arbitrary byte[] as String(byte[]) - in inlined SQL. This can cause issues when DEBUG-level - logging is activated -#995 - Routines don't respect SchemaMapping - Github issue #8 -#1002 - TableRecord.storeUsing() doesn't update IDENTITY column - values, if the column is not part of the main unique key -#1003 - Sybase / SQL Server / MySQL / Ingres / H2 / Derby's - INSERT .. RETURNING simulation returns null if a table - has an IDENTITY column, but no primary/unique key -#1005 - The INSERT INTO .. VALUES .. syntax may cause type-safety - issues in some databases. VALUES should be converted - before binding - -Test cases ----------- -#984 - Detach IDENTITY column tests from UNIQUE KEY tests, - create a dedicated test suite instead - -Version 2.0.0 - November 25, 2011 -================================================================================ -This release is a fresh start in many areas of jOOQ, adressing -issues that have been requested by users for a long time. These -release notes docment the most important changes, a detailed -upgrade guide, as well as the detailed list of improvements. - -Most important changes ----------------------- -- The API became more static. This applies to many Factory - methods, such as val(), literal(), as well as to many Field - methods that have been moved over to the Factory. For example, - when before, you wrote this using "postfix function notation": - -
    NAME.replace(" ", "_").trim()
    - - you will now write (just as in SQL): - -
    trim(replace(NAME, " ", "_"))
    - - Using static imports of Factory.*, jOOQ makes SQL look even - more like SQL. The current "postfix notation" is maintained for - backwards compatibility. -- By default, jooq-codegen will now generate a "dynamic" meta - model as opposed to the existing static one. Generated tables - covariantly override the as(String) aliasing method, leading - to a much more convenient aliasing style. When before, you - wrote: - -
    -Table parent = T.as("parent");
    -Table child  = T.as("child");
    -Condition join =
    -  parent.getField("ID").equal(child.getField("PARENT_ID"))
    -
    - - You can now write: - -
    -T parent = T.as("parent");
    -T child  = T.as("child");
    -Condition join = parent.ID.equal(child.PARENT_ID)
    -
    - - Of course, the existing notation still works - -- Exceptions are no longer checked. When previously, the DB's - SQLException was propagated to client code, there is now an - unchecked DataAccessException hierarchy, similar to that of - Spring. This will eventually give way to a standardised error - handling abstraction, in future developments. -- Window functions are now constructed from their underlying - aggregate functions just like in SQL. For example: - -
    -sum(AMOUNT)
    -sum(AMOUNT).over().partitionBy(ACCOUNT)
    -
    - - This makes for a more concise API, especially when considering - future extensions, such as Oracle's KEEP (DENSE_RANK FIRST...) - syntax. -- More type safety has been introduced regarding various places - where generic and types are involved. - This is especially true for INSERT / UPDATE / DELETE statements -- Sequences now also have a type -- Unsigned number types are now supported in those databases that - use them. Unsigned numbers are implemented in jOOU, a spin-off - open source project. For convenience, this library is - "internalised" into jOOQ, to avoid adding a dependency - -http://code.google.com/p/joou/ - -Upgrade instructions: ---------------------- -Various of the above changes are incompatible with jOOQ 1.x. In -order to upgrade, please be aware of the following pitfalls: - -- The schema needs to be re-generated. -- Much of the post-fix function notation is replaced by static - methods in the Factory. Today's org.jooq.Field API is - maintained in jOOQ 2.0, for backwards compatibility. It will - be removed, eventually, though. Expect some incompatible - changes, where window functions are involved -- Some Factory instance methods (such as val(), literal()) are - now static. They are compatible, but may cause compiler - warnings. -- The meta model is now an instance model by default. If you - prefer the static meta model, you can configure this in your - jooq-codegen configuration. -- The additional typesafety involving and types may cause - compiler warnings and errors. -- SQLException is no longer part of the API. This can cause - compiler issues, in particular when extending jOOQ -- Some utility classes have moved to org.jooq.tools - -Should these incompatibilities be too significant for your -project, you can still stay on the 1.x branch, which will be -maintained for a while. Be aware that upgrading might be more -difficult, later, though. - -Features and improvements -------------------------- -#55 - Implement improved exception handling -#117 - Improve DSL support for field and table aliasing (decrease - verbosity) -#519 - Add support for MySQL UNSIGNED numeric types -#626 - Create static function access -#661 - Add support for bitwise operators -#718 - Sequences should be mapped to appropriate type (e.g. - SMALLINT, INT, BIGINT, etc) -#734 - Add support for Oracle / SQL Server CUBE() and ROLLUP() - grouping functions -#751 - Add support for Oracle / SQL Server GROUPING SETS() - function -#799 - Add support for Oracle PL/SQL's object-oriented MEMBER - PROCEDURES and MEMBER FUNCTIONS -#804 - Add to Insert, Update, Delete -#835 - Review API typesafety for InsertSetMoreStep - set(Field, T) and similar methods -#890 - Add Factory.selectCount() convenience method -#891 - Let min() max(), etc functions return a new type - AggregateFunction. This type can then be used as an entry- - point for window functions -#892 - Add support for Oracle / SQL Server GROUPING() and - GROUPING_ID() functions to be used along with CUBE() and - ROLLUP() -#893 - Simulate ROLLUP() function for MySQL, using the WITH - ROLLUP grouping modifier -#894 - Move functions from Field to org.jooq.impl.Factory - and make them static -#895 - Add power(..., Field) -#897 - Add (experimental) Spring integration project -#898 - Replace usage of checked SQLException by an unchecked - DataAccessException, similar to that of Spring -#899 - Build jOOQ .jar files as bundles to be deployed into OSGI - environments -#900 - Purge deprecated API - Prior to 2.0 -#901 - Introduce InvalidResultException as a subtype of - DataAccessException for integrity checks in methods like - ResultQuery#fetchOne(), ResultQuery#fetchMap(), etc. -#902 - Make AggregateFunction the base type for constructing - window functions -#904 - Move SQLDialectNotSupportedException into - org.jooq.exception package -#905 - Introduce MappingException as a subtype of - DataAccessException for integrity checks in methods like - ResultQuery#fetchInto(), etc. -#907 - Add missing Field.like(Field), notLike(Field) - methods to overload the existing Field.like(T), notLike(T) -#908 - Change rpad / lpad functions to accept String instead of - char -#912 - Add R newRecord(Table, Object) as - the inverse of various into(Class) methods -#916 - Add > {Record.into(Table) | - Result.into(Table) | ResultQuery.fetchInto(Table) | - Cursor.fetchInto(Table)} -#917 - Add various Cursor.fetchOneInto() convenience methods -#918 - Add CustomTable, CustomRecord as base classes for more - convenience when used with various into(Table) methods -#919 - Allow for accessing non-public constructors of Record - subtypes -#923 - Move some utilities to org.jooq.tools -#924 - Generate a reference to every table in a new Tables.java - class for improved static access -#928 - Add DataTypeException extending DataAccessException in - case something went wrong when converting data types -#930 - Support converting date time types to java.util.Calendar. - This applies to various into(Class) methods, as well as - Result.getValue(xx, Class) -#931 - Allow for conversion between Long and date/time types, and - vice versa -#932 - Let the bound of R in TableRecord extend TableRecord, - in UpdatableRecord to extend UpdatableRecord -#933 - Add support for type Character in Record.into(Class) - methods and similar -#936 - Accept primitive types, such as int.class for type - conversion -#938 - CODEGEN: Add static/instance table field configuration -#939 - Include license.txt and readme.txt in .jar files' META-INF - directory -#953 - Make DefaultGeneratorStrategy methods non-final to allow - for overriding -#954 - Add examples for source code generation of multiple - schemata with Maven -#955 - Generate a reference to every type in a new UDTs.java - class -#957 - Add R Factory.newRecord(UDT) for constructing - attached UDTRecords -#958 - CODEGEN: Add generation-time schema mapping, allowing for - re-writing schemata in jooq-codegen -#960 - CODEGEN: Add code generation configuration parameter to - avoid using the new UByte, UShort, UInteger, ULong wrappers - for UNSIGNED number types -#961 - Use Oracle's SYS.ALL_SEQUENCES.MAX_VALUE to determine the - type of a sequence. -#969 - Add List ResultQuery.fetch(Field, - Class) convenience method - -Bug fixes ---------- -#686 - Reduce the internal API leak by preventing access to - TableFieldImpl, UDTFieldImpl, ParameterImpl -#903 - lag(Field, int, T) erroneously delegates to lead() -#906 - Add more NullPointerException safety to API -#913 - NoClassDefFoundError in JooqUtil.isJPAAvailable() -#920 - Generic type is lost in Cursor.fetchInto(RecordHandler) -#925 - SelectConditionStep should extend SelectConnectByStep, not - SelectGroupByStep -#926 - AbstractRecord.into() fails to convert java.sql.Date into - java.util.Date -#934 - Don't consider static members in reflection utilities when - used with Record.into(Class) and similar methods -#935 - Don't consider final member fields in reflection utilities - when used with Record.into(Class) and similar methods -#937 - In the event of name clash (same name for table and field) - generated code has errors -#945 - Calling UpdatableRecord.setValue() twice with the same - argument causes the changed flag to be reset to false -#948 - Always set the changed flag to true in Record.setValue() -#959 - Compilation errors in generated source code if MySQL enum - values match Java reserved words, such as 'true', 'false', - 'new', etc... -#962 - Postgres ordering of generated enum literals is unstable -#967 - Better document type conversion - -Version 1.7.0 - November 25, 2011 -================================================================================ -This is a maintenance release for the 1.x branch. Some important -bug fixes are merged from version 2.0. These include: - -Bug fixes ---------- -#925 - SelectConditionStep should extend SelectConnectByStep, not - SelectGroupByStep -#926 - AbstractRecord.into() fails to convert java.sql.Date into - java.util.Date -#937 - In the event of name clash (same name for table and field) - generated code has errors -#945 - Calling UpdatableRecord.setValue() twice with the same - argument causes the changed flag to be reset to false -#948 - Always set the changed flag to true in Record.setValue() -#951 - Empty Password for jooq-codegen-maven causes NPE - -Version 1.6.9 - November 7, 2011 -================================================================================ -This is a maintenance release for the 1.x branch. Developments -on this branch will stop after version 1.6.9. Only important bug -fixes are merged to this branch. Developments for release 2.0 -have started. - -The most important functionality in release 1.6.9 is the newly -added support for JDBC batch operations. You can now batch -execute several queries. - -See the official blog for more information: -http://blog.jooq.org/2011/10/25/jdbc-batch-operations-with-jooq/ - -Features and improvements -------------------------- -#621 - Add support for JDBC batch operations -#794 - Add support for ORDER BY [int value] in order to reference - a column index for sorting -#882 - Optimise Field.isTrue() and isFalse(). Take Field's data - type into consideration. -#885 - Add support for INSERT INTO .. VALUES (..) syntax, - omitting explicit field declarations -#887 - Add List Cursor.fetchInto(Class) - -Bug fixes ---------- -#748 - H2 regression in 1.3.158 regarding stored functions, which - return a ResultSet (this was fixed in H2) -#859 - Derby casting of numeric types to BOOLEAN doesn't work -#886 - Regression in date extract function when used in a - subselect -#888 - Derby casting of VARCHAR to FLOAT (and similar) doesn't - work - -Version 1.6.8 - October 22, 2011 -================================================================================ -The main improvement of this release is the re-design of the -stored procedure / function API. With 12 supported RDBMS, which -all have their own idea about what is a stored procedure and what -is a stored function, it has proven to be a better design, to -unite them in one single type: org.jooq.Routine. A routine can -have a return value as well as OUT parameters. It can be embedded -in SQL and used as a field or a table. - -This means, you will need to re-generate your database schema, -when upgrading to jOOQ 1.6.8. After re-generation, you'll need to -fix your client code. These are the package changes: - -- [generated.package].procedures > [generated.package].routines -- [generated.package].functions > [generated.package].routines -- [generated.package].Procedures > [generated.package].Routines -- [generated.package].Functions > [generated.package].Routines - -Oracle generated packages are not re-located. With these -improvements, using stored procedures and functions becomes even -more reliable, especially when cursor types are involved. Read -more about the rationale behind this change: - -http://blog.jooq.org/2011/10/17/what-are-procedures-and-functions-after-all/ - -Apart from that, important improvements have been made in the -area of plain SQL tables. Also, consider a demo integration of -jOOQ with Google Cloud SQL: - -http://blog.jooq.org/2011/10/22/jooq-and-google-cloud-sql-example/ - -Features and improvements -------------------------- -#271 - Don't pre-fetch table meta data when selecting from plain - SQL tables -#489 - Add support for SELECT * (i.e. render SELECT * where - applicable) -#596 - Add support for VARIANCE() and STDDEV() OVER() window - functions -#608 - Add jOOQ version number in generated source code -#670 - Add more Javadoc to Field.xxx() functions -#692 - Add support for ResultSet type returned from HSQLDB - stored functions -#850 - Use http://www.jooq.org as URL for the @Generated - annotation -#854 - Add convenience methods Fields.isTrue(), isFalse() for - conversion of "Y", "YES", "1", "true", "on", etc into a - boolean condition -#870 - Add support for MEDIAN aggregate function -#872 - Add support for STDDEV_POP(), STDDEV_SAMP(), VAR_POP(), - VAR_SAMP() aggregate functions -#874 - Reduce the number of internal classes for dialect-specific - function aliases -#878 - Implement DataType.equals() and hashCode() - -API changes (backwards-compatible) ----------------------------------- -#851 - Change Field.{sortAsc|sortDesc}(List sortList) into - Field.{sortAsc|sortDesc}(Collection sortList) - -API changes (backwards-incompatible) ------------------------------------- -#848 - Purge deprecated API - Prior to 1.6.1 -#849 - Replace Cursor.fetchResult() by Cursor.fetch() -#852 - Review stored procedures / functions concept. Merge them - all into a single "Routine" type - -Bug fixes ---------- -#756 - Error when aliasing HSQLDB and Postgres unnested tables -#761 - Exception when TRACE logging execution with plain SQL - tables involved -#773 - Execute standalone stored functions as CallableStatement - to prevent issues with transactions -#847 - Query.getSQL() doesn't render dialect-specific SQL when - Query is constructed using the fluent API -#853 - DB2 generated convenience methods for stored functions - have unstable ordering -#857 - Derby casting of numeric types to String / VARCHAR does - not work -#858 - SQLDataType.getSQLDataType() should return itself, instead - of null -#860 - SQLite CEIL function is incorrectly simulated. CEIL(2.0) - returns 3.0 instead of 2.0 -#861 - Field.replace(String) generates bad SQL for various RDBMS. - Field.replace(String, String) works, though -#863 - Ingres integration generates illegal SQL when selecting - things like SELECT 1 WHERE 1 = 1 -#866 - Sybase ASE Field.replace(String) function incorrectly - removes the argument string -#873 - Error when selecting two times the same aggregate field -#877 - Compilation error in generated source code when a table - without a primary key has an identity column -#879 - Add Google Cloud SQL Example -#880 - Query.getSQL() does not consider SchemaMapping - -Test cases ----------- -#811 - Loader integration tests fail for SQLite -#812 - CSV Loader test leaves Postgres JDBC connection in an - inconsistent transactional state on error -#856 - Add integration tests for Field.abs() -#865 - Add integration tests for Field.ascii() -#867 - Add integration tests for Field.sum(), avg(), max(), min() -#881 - Re-design H2 stored functions to be pre-compiled, in order - to speed up integration tests - -Version 1.6.7 - September 25, 2011 -================================================================================ - -This release coincides with the launch of the new website at -http://www.jooq.org. Hence, it ships with little additions to the -deliverable itself. - -Apart from new convenience methods, the main addition is a Maven -plugin for jooq-codegen contributed by Sander Plas. - -Features and improvements -------------------------- -#797 - Create Maven plugin for source code generation -#825 - Add List> Factory.fetchMany(String) to - allow for fetching several result sets from stored - procedures, such as Sybase ASE's "sp_help" -#838 - Implement MetaDataFieldProvider.toString() -#841 - Add List Result.getValues(Field, Class) -#842 - Add Query.getBindValues() method to allow for extracting - bind values in the correct order -#843 - Add Factory.fetch(ResultSet) to transform a JDBC ResultSet - into a jOOQ Result - -API changes (backwards-compatible) ----------------------------------- -#837 - Avoid final keyword on Object methods, such as .equals(), - .hashCode(), etc - -Bug fixes ---------- -#836 - Bad syntax when selecting from aliased plain SQL tables -#839 - Boolean conversion in getValueAsBoolean() should trim - String values first -#840 - Numeric conversions in getValueAsXXX() should trim String - values first -#844 - NullPointerException when selecting a column from a Result, - that does not exist - -Version 1.6.6 - September 11, 2011 -================================================================================ - -Finally, support for another RDBMS has been added. Sybase's other -important product Sybase Adaptive Server Enterprise (or simply -Sybase ASE) is now officially supported by jOOQ - -Apart from this, there had been important improvements with the -recently added INSERT .. RETURNING clause, as well as some fixes -related to DECIMAL / NUMERIC data types - -Features and improvements -------------------------- -#796 - Complete missing public org.jooq.impl Javadoc -#800 - Add support for Sybase Adaptive Server Enterprise -#808 - Add support for INSERT .. RETURNING for Ingres -#809 - Add support for INSERT .. RETURNING for Sybase SQL - Anywhere using SELECT @@identity -#810 - Add support for INSERT .. RETURNING for SQLite using - last_inserted_rowid() -#813 - Add DSL support for INSERT .. RETURNING -#814 - Change TableRecord to reload its trigger-initialised main - key in Oracle and other RDBMS that don't support IDENTITY - columns -#818 - Add SQLiteFactory.rowid() -#819 - Support SQLite AUTOINCREMENT columns as IDENTITY -#820 - Add Factory.fetchOne(String) for executing plain SQL - queries that return single records -#826 - Allow for returning several records in the INSERT .. - RETURNING clause. This now works for DB2, HSQLDB, MySQL, - and Postgres -#827 - Support Sybase SQL Anywhere's TOP n START AT m clause - instead of simulating it with nested SELECT's - -API changes (previous API now deprecated) ------------------------------------------ -#817 - Deprecate Factory.lastID(Identity) - -Bug fixes ---------- -#815 - SQL Server fetching of IDENTITY value is broken -#821 - Optimise ResultQuery.fetchAny() executing fetchLazy() - internally, and only fetching one record from the cursor -#822 - Let Constant cast to more precise NUMERIC/DECIMAL types - in those RDBMS where casting is necessary -#823 - Cannot bind SQLite BigDecimal, BigInteger types - bind - them as String instead -#824 - BigInteger values cannot be bound in DB2, Derby -#828 - Document inefficient implementation for GREATEST and LEAST - in some RDBMS - -Version 1.6.5 - August 28, 2011 -================================================================================ - -This release finally adds a loader for CSV data to jOOQ. You can -now load CSV data using a simple fluent API, configuring error -handling, duplicate behaviour and transaction handling, as well -as various CSV parameters. - -This release also changes the way generated keys are retrieved -after INSERT's. Instead of (potentially inconsistently) running -SELECT MAX(pk) immediately after the INSERT, Postgres' INSERT.. -RETURNING clause is used (or simulated), in a single statement. - -Features and improvements -------------------------- -#784 - Add Result.exportXML() to retrieve a DOM document similar - to that of .formatXML() -#792 - Add support for loading of CSV data into tables -#795 - Add List fetch(int, Class) and - fetch(String, Class) convenience methods -#803 - Add support for INSERT .. RETURNING or simulate it where - not available -#805 - Add T[] fetchArray(int, Class) and - fetchArray(String, Class) convenience methods -#806 - Add T fetchOne(int, Class) and - fetchOne(String, Class) convenience methods - -Bug fixes ---------- -#798 - Oracle IN (...) clause with more than 1000 arguments does - not work -#802 - Use "INSERT .. RETURNING" instead of "SELECT MAX(pk)" - to retrieve the primary key of a new record - -Version 1.6.4 - August 07, 2011 -================================================================================ - -This release ships with a couple of useful concepts inspired by -other frameworks. These are: - -- selecting into custom POJO's. Results can be mapped to POJO's - by convention or using JPA @Column annotations -- selecting into custom callbacks. This is already a wide-spread - practice in Spring JdbcTemplates. -- selecting long-running queries asynchronously. This idea has - been inspired by the Avaje Ebean framework - -Apart from these changes and some bugfixes, the internal API has -been completely re-designed. The idea here is that query -rendering and variable binding are even faster (less String -objects), more extensible and more accurate. This is a pre- -requisite for many future developments with even more complex SQL -statements, such as for instance CTE's (Common Table Expressions) - -Features and improvements -------------------------- -#137 - Add support for asynchronous query execution using - FutureResult ResultQuery.fetchLater() similar to - Avaje Ebean -#198 - Add SELECT INTO functionality into POJO's using - T ResultQuery.fetchInto(Class) similar to JPA - CriteriaQuery -#728 - Add .fetchInto(RecordHandler) to ResultQuery, Result, - and Cursor to allow for callbacks similar to Spring's - JdbcTemplate/Ollin Framework -#774 - Add more TRACE logging to .fetchLazy() -#777 - CURSOR: Add function alias: UNNEST for TABLE -#781 - Add E function (Euler number) -#782 - Add T Record.getValue(..., Class) methods - for convenient type conversion -#785 - Allow for storing TableRecord with a provided Field[] - indicating the primary key -#786 - Document thread-safety facts in Factory Javadoc -#788 - Add Key.getFieldsArray() convenience method -#793 - Add support for Oracle's SYS_CONNECT_BY_PATH function - -API changes (backwards-incompatible) ------------------------------------- -#758 - Change internal QueryPart rendering and binding API to use - Configuration and Context as callback parameters. If you - use CustomField or CustomCondition, please correct your - implementations accordingly. Other parts of the API should - not be affected -#778 - Purge deprecated API, deprecation prior to jOOQ 1.5.7 -#790 - Purge deprecated generated code, deprecation prior to - jOOQ 1.5.7 - -API changes (previous API now deprecated) ------------------------------------------ -#776 - Deprecate QueryPart.getSQL(), add Query.getSQL() -#789 - Deprecate Record constructors with Configuration - parameter - -Test cases ----------- -#636 - Add integration tests for more advanced CONNECT BY - example -#772 - Add integration tests for selecting cartesian products - (several tables in FROM clause) - -Bug fixes ---------- -#730 - Sybase cannot bind null values in plain SQL -#759 - Omit the TOP 100 PERCENT clause in SQL Server ordered - top-level queries -#767 - An empty Java package is generated for PL/SQL packages - containing underscores -#771 - Some exotic literals are not properly escaped with quotes - yet, e.g. UDT identifiers, VARRAY types, etc. -#775 - Automatic re-attaching after deserialisation does not work - when used with .fetchLazy() -#787 - The UpdatableRecord's internal changed flags are not - updated after INSERTs / UPDATEs - -Version 1.6.3 - July 31, 2011 -================================================================================ - -This is mainly a maintenance release with lots of bugfixes, -mostly around code generation, plain SQL tables, and data types. -Please note that generated source code may contain incompatible -changes due to #639 (see below for details)! - -Apart from that, project CURSOR is advancing and it is now -possible to unnest arrays into tables. See this article for -details about where jOOQ is heading with project CURSOR: - -http://blog.jooq.org/2011/07/24/the-power-of-ref-cursor-types/ - -Features and improvements -------------------------- -#679 - Improve H2 NVL2 support as of H2 1.3.156 -#680 - Improve H2 ROUND support as of H2 1.3.156 -#735 - Add README documentation to GitHub -#736 - Add more info regarding number of generated artefacts in - jooq-codegen logging -#750 - Add DataType.isNumeric(), .isString(), .isTemporal(), - .isBinary() -#754 - Log query as executed by JDBC PreparedStatement when - TRACE logging (without inlining variables) -#752 - CURSOR: Add support for selecting from ARRAY types -#762 - Use H2's native support of NVL, instead of COALESCE -#764 - CURSOR: Add support for selecting from ARRAY types - returned from stored functions - -API changes (backwards-incompatible) ------------------------------------- -#639 - Map DECIMAL(n, 0) and NUMBER/NUMERIC(n, 0) data types - to Byte/Short/Integer/Long/BigInteger instead of - BigDecimal in generated source code. Re-generated code - will not be compatible! - -API changes (previous API now deprecated) ------------------------------------------ -#731 - Inconsistent API with Field.lessOrEqualToXXX(). Removed - "To" from method name -#757 - Deprecate Factory.constant() methods - -Test cases ----------- -#731 - Add missing integration tests for equalAll(), equalSome() - and similar methods -#747 - Upgrade H2 to 1.3.158 - -Bug fixes ---------- -#632 - Sybase error : column @p0 not found in nested SELECT -#700 - Restore HSQLDB ARRAY support with INFORMATION_SCHEMA - change in HSQLDB 2.2.3, and some fixes in 2.2.5 -#725 - Cannot insert byte[] data with plain SQL -#733 - H2 changed JDBC type for ResultSet/CURSOR from 0 to -10, - like Oracle -#737 - Compilation errors in generated source code if table - fields contain spaces -#738 - Compilation errors in generated source code if MySQL - procedure parameter type contains two comma-separated - arguments (like DECIMAL(10,2)) -#739 - Postgres navigator methods and keys are not re-generated - in the same order -#740 - Formatting is broken on Result.format() with some special - newline characters -#743 - Make SQL Server INFORMATION_SCHEMA independent from - HSQLDB again, to prevent incompatibility issues -#744 - Ingres REAL and FLOAT4 types are generated as FLOAT/FLOAT8 - which maps to java.lang.Double, instead of java.lang.Float -#753 - Postgres error when binding array that contains null - values -#755 - NullPointerException when converting an array containing - a null value -#766 - Bad decoding of JDBC Types BIGINT (to BigInteger instead - of Long) and REAL (to BigDecimal instead of Float) when - plain SQL tables are involved - -Version 1.6.2 - July 10, 2011 -================================================================================ - -This release mainly introduces three new projects. - -Project CURSOR where jOOQ finally supports various RDBMS's TABLE, -CURSOR, and REF CURSOR data types. This is especially useful when -those types are returned from stored procedures and functions. -Cursors are simply mapped to jOOQ Result types and can -thus be used like regular table results - -Project EXPORT aims at exporting data from the database in -various serialisable formats, such as XML, CSV, HTML, Text, JSON. -This project will be continued in the future, to also -deserialise from (some of) these data streams. This will allow -for easy transport of jOOQ Result types over the net. - -Project CODEGEN has finally been started. Many improvements -suggested by jOOQ users will be implemented in the next releases. -In this release, important fixes have been made to prevent -compilation errors in generated artefacts. - -Features and improvements -------------------------- -#61 - EXPORT: Add Result.formatXML() -#166 - CURSOR: Add support for ResultSet type returned from - Oracle stored procedures / functions -#411 - Allow for fetching Map (instead of Record) - and List> (instead of Result) -#549 - Add Factory.function() for plain SQL functions -#611 - Simulate RPAD and LPAD in SQL Server, Sybase -#627 - Add support for Postgres FOR UPDATE OF [table-name] clause -#628 - Add support for REPEAT (SQL Server: REPLICATE) function -#637 - Nicely format time in StopWatch logging output -#640 - Simulate Postgres FOR UPDATE OF [table-name] clause in - other dialects -#649 - CURSOR: Add Cursor.fetch(int) .fetchOne() - .fetchResult(int) .fetchResult() -#653 - Add support for MySQL encryption and compression functions -#660 - Clarify Javadoc of UpdatableRecord to explain its - behaviour when changing the main unique key -#669 - EXPORT: Add Result.formatHTML() -#672 - Add convenience method UpdatableRecord.copy() in order to - reset primary key values for a subsequent INSERT -#675 - EXPORT: Add Result.formatCSV() -#683 - Implement ResultImpl.equals() and .hashCode() -#684 - Implement AbstractStore.equals() and .hashCode() -#685 - Add Store.size() to indicate the maximum index of the - Store -#687 - EXPORT: Add result.formatJSON() -#689 - Create separate builds: jooq-core.zip and - jooq-with-dependencies.zip -#690 - CURSOR: Add support for ResultSet type returned from H2 - stored functions -#695 - CURSOR: Add support for ResultSet type returned from - Postgres stored functions -#697 - Add Factory.fetch(String) for executing plain SQL queries - that return results -#701 - Add ResultQuery.fetchArray() and .fetchOneArray to return - Object[][] and Object[] -#704 - Always add top and bottom line in Result.format() -#705 - Right-align numeric values in Result.format() -#716 - Add SUBSTRING function Field.substring(Field, Field) - taking fields as arguments -#719 - Document risk of SQL injection in plain SQL and literal - factory methods -#726 - Add LENGTH function as a synonym for CHAR_LENGTH - -API changes (backwards-compatible) ----------------------------------- -#698 - Inconsistent API with Factory.fetch(Table [,Condition]) - Let method return Result instead of List -#699 - Let Result extend List - -API changes (previous API now deprecated) ------------------------------------------ -#656 - Decrease verbosity of plain SQL methods. They will just be - called Factory.field() .condition() .table() .query() - -Test cases ----------- -#643 - Add integration test for code generation of invalid and - incomplete types in Oracle -#654 - Add integration tests for master data tables with PK types - other than NUMBER/INT -#655 - Add missing integration tests for TRIM function - -Bug fixes ---------- -#450 - Improve plain SQL integrity checks for bind variables -#610 - CODEGEN: Compilation error in generated source code for - databases with table named 'system' -#646 - An empty Java package is generated for an empty PL/SQL - package. This is unnecessary -#651 - CODEGEN: Avoid importing datatypes in generated source - code to prevent collisions -#657 - NullPointerException when creating a Factory with a null - SchemaMapping -#658 - Master data table code generation is broken for tables - with more or less than 3 columns -#662 - Add support for the missing Postgres data type "bpchar" -#663 - Add support for the missing Sybase data type "int" -#664 - Ingres INTEGER data types are not correctly generated -#665 - HSQLDB Datatype CLOB and BLOB are not supported, when - selecting from plain SQL tables -#666 - The evil bug: Ingres TRIM function only executes RTRIM -#673 - UpdatableRecord.store() doesn't work if called after - .delete() -#702 - Add support for the missing SQLite data type "NULL" -#706 - CURSOR: Ensure that Query.execute() runs in a single - transaction when Postgres refcursor is involved in the - query (this fixes a Postgres JDBC driver flaw) -#724 - NullPointerException when passing a single literal null - bind value to plain SQL methods without casting to Object -#729 - DB2, Derby, Ingres, Oracle cannot bind null values in - plain SQL - -Version 1.6.1 - June 19, 2011 -================================================================================ - -In this release, the PORTABILITY project has been implemented. -Finally, the SQLDialect has been removed from most generated -artefacts (Schema, Table, Field, Sequence, etc). Also, the -constructing Factory is not referenced by its created QueryParts -anymore, unless this is really necessary (Query objects, UDT's, -ARRAY types). This leads to higher compatibility between schemata -of different databases, e.g. if users want to use an HSQLDB -development and Oracle productive database. - -Unfortunately, this means that the way stored procedures are -called had to be changed. This is an API break that could not be -avoided. The pre-1.6.1 StoredObject.execute(Connection) method -is deprecated and will be removed in the future. It has been -replaced by StoredObject.execute(Configuration) - -In addition to this project, many more window functions are now -supported, as well as the Oracle-specific CONNECT BY clause for -recursive queries. - -Features --------- -#351 - Add support for Oracle ROWID data type -#452 - PORTABILITY: Create a super-set of RDBMS data types -#453 - PORTABILITY: Don't create dialect-specific QueryParts -#455 - Add support for the Oracle CONNECT BY clause -#587 - Add optional OFFSET clause to form LIMIT .. OFFSET - constructs -#589 - Add extended FOR UDPATE [OF ...] [{WAIT n | NOWAIT | SKIP - LOCKED }] support -#591 - Add support for LEAD() OVER() and LAG() OVER() window - functions -#592 - Add support for the CUME_DIST() OVER() window function -#601 - Add Factory.literal() convenience methods -#602 - Add Factory.val() methods to decrease .constant() - verbosity -#604 - Add support for RESPECT NULLS clause in some window - functions -#605 - Add Factory.use(String) for non-generated schemata -#613 - Add PI function -#616 - Add Factory.two() literal convenience method -#630 - Add support for Oracle CONNECT BY pseudo-columns LEVEL, - CONNECT_BY_ISCYCLE, CONNECT_BY_ISLEAF - -API changes ------------ -#299 - PORTABILITY: Create a dialect-independent meta-model -#588 - Add OVER() keyword to FIRST_VALUE() and LAST_VALUE() API - -Test cases ----------- -#368 - Add integration test for use with schema mapping -#586 - Upgrade H2 to 1.3.155 -#607 - Add integration tests for CRUD / SP's / UDT's / ARRAY's - with SchemaMapping -#612 - Add integration tests for LPAD and RPAD functions -#624 - Add integration test for code generation of invalid/ - incomplete views in Oracle -#631 - PORTABILITY: Add integration tests for using Oracle- - generated schema against an HSQLDB database -#638 - Add missing integration test for DECIMAL data type - -Bugfixes --------- -#176 - Stored procedures / functions in EQUIVALENT schemata - cannot be called -#493 - Bind variable mismatch when constructing bad SQL -#594 - Confusing Javadoc in SELECT DSL API -#603 - Fix DB2 'IGNORE NULLS' clause -#619 - SUBSTRING() function is broken in DB2, Ingres, SQL Server -#623 - SQL syntax error for some MERGE queries in SQL Server and - Sybase -#633 - SchemaMapping is not applied to sequences -#634 - Sequences are not escaped in generated SQL - -Version 1.6.0 - June 05, 2011 -================================================================================ - -Apart from supporting various additional standard and non- -standard JOIN constructs, there is now also full support for the -SQL standard MERGE statement and MySQL's ON DUPLICATE KEY variant -thereof. A great number of API enhancements have been added, -which improve the usability of jOOQ. The Ingres database is now -also supported. - -Features --------- -#301 - Add support for Oracle execution hints -#409 - Add support for NATURAL JOIN syntax, where RDBMS allows it -#415 - Make fluent API's underlying SelectQuery objects publicly - available -#429 - Add Ingres support -#475 - Document class-level generic types and in Javadoc -#486 - Add support for SQL MERGE clause -#494 - Allow for omitting schema name in generated SQL -#496 - Automatically update IDENTITY values in UpdatableRecord, - after storing them -#520 - Add support for JOIN ... USING syntax -#524 - Upgrade HSQLDB to 2.2 -#533 - Add ORDER BY [Map] or BY [List] functionality -#534 - Add Result.isEmpty() -#535 - Call upon ConfigurationRegistry.provideFor() before - throwing a DetachedException -#536 - Simulate CASE [value] WHEN [value] THEN [result] END - syntax in Derby -#538 - Add some logging to ConfigurationProvider -#539 - Add possibility to negate numeric values with Field.neg() -#541 - Add support for MySQL ON DUPLICATE KEY clause -#542 - Allow for Collection arguments in INSERT's DSL API -#543 - Allow for creating FUNCTION() OVER() without PARTITION BY - or ORDER BY clause -#546 - Add Factory.use(Schema) -#548 - Add new internal type FieldMap -#550 - Simulate ON DUPLICATE KEY INSERT clause in dialects other - than MySQL -#551 - Add TableMapping, similar to SchemaMapping for mapping - tables -#553 - Add Factory.plainSQLQuery -#554 - Add Factory.plainSQLField with a DataType parameter -#555 - Add UpdateXXX.set(Map) convenience methods to DSL API -#557 - Enhance INSERT DSL API to allow for adding VALUES clause - with InsertXXX.set() syntax -#570 - Add support for the RAND() function -#567 - Add support for Ingres Sequences -#572 - Add support for the ATAN2() function -#573 - Add possibility for additional select() clauses for - convenience -#575 - Add support for the FULL OUTER JOIN syntax, where RDBMS - supports it -#576 - Add support for the CROSS JOIN syntax, where RDBMS - supports it -#581 - Enhance API and allow Collection> - instead of Collection> - -API changes ------------ -#397 - Purge deprecated API - -Bugfixes --------- -#481 - Handle case where an empty record is stored -#522 - Misleading Javadoc in generated stored procedures and - function constructors -#532 - Restore Postgres INFORMATION_SCHEMA -#537 - Prevent null from being added to QueryPartList -#540 - Error when TRACE logging Limit -#544 - Aliased elements are not bound correctly when rendered - with toSQLReference() -#559 - Loosen type safety on overloaded methods to prevent - compilation errors with javac/Netbeans -#560 - HSQLDB DataType REAL is configured incorrectly -#565 - Add integration tests for current_user() function -#569 - ORA-01427 when generating foreign key relations -#571 - Field.trim() not correctly implemented for SQL Server -#583 - Accelerate integration tests: Reset schema only if - necessary - -Version 1.5.9 - May 15, 2011 -================================================================================ - -This version ships with lots of new functionality. Finally, the -DSL-style API has been extended to CRUD operations (INSERT, -UPDATE, DELETE)! Also, support for the TRUNCATE TABLE statement -has been added. - -The most important new features include the support for SQL:2003 -standard window functions, which are available in most major -RDBMS. Additionally, basic function support has been widely -extended. - -Features --------- -#148 - Added support for window functions -#204 - Add support for multi-record INSERT's -#416 - Added support for retrieval of IDENTITY values -#433 - Use bind variables for LIMIT and OFFSET -#441 - Added foreign key relationship meta information to the - generated source code -#446 - Beautify ResultImpl.toString() method -#461 - Automatically cast CONCAT parameters to Field if - necessary -#463 - Added support for trigonometric functions -#471 - Added support for the sign function -#472 - Added support for GREATEST/LEAST functions -#474 - Added support for "hyperbolic" functions SINH, COSH, TANH, - and COTH -#482 - Added DSL API for INSERT statements -#483 - Added DSL API for UPDATE statements -#484 - Added DSL API for DELETE statements -#485 - Added "Registry" for client code to provide Configurations - to jOOQ Attachables -#490 - Added support for the TRUNCATE TABLE statement -#495 - Generate source code for IDENTITY columns -#501 - Added support for boolean conversion to Result, Record, - and Store -#503 - Allow for schema navigation via generated artefacts -#518 - Let stored procedures reference owner package - if applicable -#525 - Added NULLS {FIRST | LAST} clause to ORDER BY constructs -#528 - Added Factory.getDataType() convenience method -#530 - Added Factory.zero() and Factory.one() convenience methods - -API changes (jooq) ------------------- -#527 - Weakened type-safety on Field.nvl2() -#529 - Deprecated Factory.select(Object...), added .selectOne() - and .selectZero() instead - -API changes (jooq-meta) ------------------------ -#30 - Add ParameterDefinition for stored procedures, instead of - reusing ColumnDefinition -#499 - Add reference to TableDefinition in ColumnDefinition -#500 - Add AttributeDefinition for UDTDefinition, instead of - reusing ColumnDefinition - -Bug fixes ---------- -#369 - Adapt H2 relations generation to H2's correction of - information_schema.cross_references -#435 - Added integration tests for NESTED SELECTs holding LIMIT - clauses -#460 - Syntax error when using a field with a reserved name -#462 - Fixed Javadoc broken links -#473 - Don't cast when cast is unnecessary -#479 - INSERT statement should not set all fields for a table -#497 - Derby referential code generation is broken, for named - foreign keys -#498 - Oracle package content is generated in arbitrary order -#502 - Syntax error when creating an empty IN condition -#526 - Corrected Javadoc in Field.coalesce() - -Version 1.5.8 - April 29, 2011 -================================================================================ - -Finally, jOOQ now supports two important new RDBMS: -SQL Server and Sybase! - -Apart from this great enhancement, there is now also full support -for the non-SQL standard LIMIT clause, even in dialects where the -LIMIT clause is not supported natively (especially Oracle, but -also DB2, SQL Server and Sybase, which have limitations). jOOQ -simulates LIMITs by rendering nested selects filtering on ROWNUM -(Oracle) or on ROW_NUMBER() (DB2, SQL Server and Sybase). - -Other interesting additions are an increasing support for native -mathematical functions. More function support will be added in -future versions. - -Features --------- -#16 - Added support for SQL Server -#21 - Uniform implementation of the LIMIT clause. Implemented - LIMIT clause simulation through analytic functions, where - LIMIT is not supported natively -#97 - Added support for Sybase -#418 - Measure time of various steps in source code generation -#420 - Added support for proprietary SQL extensions "FOR UPDATE" - and "FOR SHARE" -#431 - Added additional statistics to generation log files -#432 - Unified the various "standard" ANSI INFORMATION_SCHEMA - implementations in the jooq-meta artefact -#436 - Added support for the modulo function -#438 - Added floor and ceil functions -#439 - Added support for mathematical functions (logarithms, - exponentials, sqrt) -#447 - Enhanced Field.add() and Field.subtract() to work for date - time fields, also - - -API changes ------------ -#428 - Created new Maven artefact jooq-meta to cleanly separate - database meta-data navigation from code generation -#458 - Decreased DSL verbosity for arithmetic operations and for - ordering - -Bug fixes ---------- -#417 - Restored warning when unknown column type is encountered - in source code generation -#419 - Corrected misleading Select.fetchOne(...) Javadoc -#421 - Optimised AbstractRecord's memory consumption -#448 - Corrected some Javadoc @see links -#449 - Changed Field.concatenate() to accept Field parameters - to avoid generic varargs warnings - -Version 1.5.7 - April 17, 2011 -================================================================================ - -This is the first release built with support of Maven thanks to -the help of some jOOQ users! - -The main new features in this release are the improved support -for serialisation/deserialisation of jOOQ objects through use of -the newly introduced "Attachable" interface. - -If using log4j or the newly supported slf4j logging framework -in debug/trace mode, there is the possibility to log query -building/execution time statistics. - -Apart from these new features, fixes were mainly done in the -fields of type casting, HSQLDB 2.1 upgrade support, stored -procedures with OUT, IN/OUT parameters. Please upgrade, if you -are using any of those features. - -If you extend jOOQ as a base implementation for source code -generation, be aware of the fact, that the jOOQ-codegen is -currently undergoing major changes. Expect the code generation -API to stabilise again in one of the next releases. - -Features --------- -#104 - Added maven dependency -#248 - Integrate UDT types with ARRAYs -#295 - Allow for attaching/detaching UpdatableRecords to/from - Configurations -#359 - Added statistics measurement to Query execution for debug - log level -#362 - Added deprecation configuration flag -#364 - Document unknown type in generated source code -#373 - Improve exception handling in code generation -#378 - Added support for Oracle stored functions with OUT - parameters -#382 - Added Factory.attach() methods to re-attach deserialised - Attachables -#394 - Add logging support for SLF4J -#398 - Allow to provide a DataType in Factory.constant() -#399 - Provide access to TypeUtils.convert() methods via DataType -#404 - Added trace logging for measuring the speed of various - query execution steps - -API changes ------------ -#358 - Enhanced DSL API to allow for HAVING clauses without - GROUP BY clauses -#367 - Make Store, Result, QueryPart "Attachable" -#374 - Introduce strategy pattern to code generation for future - support for advanced naming schemes -#375 - Decouple Database from Generator -#381 - Made DataType Serializable -#384 - Deprecated singleton QueryParts -#388 - Unify "internal" API using an Adapter pattern - -Bug fixes ---------- -#187 - Protect generated Record navigation methods against name - clashes -#266 - Added more thorough integration tests for dialect-specific - casting (including some fixes related to varchar types) -#360 - Added more integration tests for the DISTINCT clause -#361 - Add more checks in testInsertUpdateDelete() -#366 - Warn only once per ColumnDefinition, if a data type is - unknown -#377 - NullPointerException when generating invalid stored - function -#380 - Added integration tests to check for proper - serialisability -#386 - Fixed incompatibilities with HSQLDB 2.1.0 -#387 - Fixed unnecessary imports in some Oracle generated - Records -#389 - Fixed javac compiler warning in AbstractStoredObject -#391 - Cannot properly call stored procedures when IN/OUT - parameter is bound to NULL -#392 - Procedures with several OUT parameters may not register - OUT parameters correctly -#410 - Passing null VARRAY values to Oracle stored procedures - causes issues -#412 - limit(int) sets default offset incorrectly in some - dialects - -Version 1.5.6 - March 31, 2011 -================================================================================ - -This release consists mainly of code generation bug fixes and -minor API improvements and enhancements. - -The most important improvement is ticket #90, by which lazy -fetching and iteration over data is now supported. jOOQ lets you -keep a reference to a Cursor that has an open JDBC ResultSet, to -fetch data from on-the-fly. - -A few major code generation bugs were reported where the -generated code may cause ambiguity due to an inconsistent API. -This means that you will have to re-generate your schema after -upgrading to version 1.5.6. Some of your code may not compile -anymore, after this upgrade. - -Features --------- -#90 - Added possibility for lazy fetching of data -#208 - Added convenience methods for direct invocation of - sequences' currval() and nextval() attributes -#212 - Created one factory per dialect for better separation of - dialect-specific support -#213 - Generate a factory for each schema -#251 - Opened up base implementations for Field and Condition - to allow for custom implementations by client code -#274 - Integrate H2 ARRAY types with stored procedures -#292 - Documented usage of log4j and java.util.logging -#306 - Added support for the NULLIF function -#319 - Added Field.between(Field, Field) method -#320 - Added trace logging for variable binding and SQL - generation methods -#323 - Added Field.in(Field...) method -#325 - Include release version number in delivered .jar files -#328 - Improved configuration setup documentation page -#333 - Let Result implement Serializable -#334 - Added fetchMap() convenience methods -#335 - Added more functions and aggregate functions examples to - documentation -#338 - Visually improve code generation logging -#339 - Removed skipping of unreferenced UDT's, ENUM's and ARRAY's -#342 - Improved generated referential code by using fetch() and - fetchOne() API -#356 - Let UpdatableRecord.store() and delete() return an int - to indicate whether the record was actually modified - -API changes ------------ -#233 - Allow for joining TableLike instead of Table -#337 - Added generic type > to - InsertSelectQuery -#341 - Fixed API flaw where SelectOnConditionStep.and() methods - and similar ones returned SelectConditionStep, instead of - SelectOnConditionStep - -Bugfixes --------- -#69 - Corrected referential code generation for foreign keys - that reference non-primary unique keys -#85 - Corrected referential code generation for multi-field - foreign keys -#121 - Covered more Factory.executeXXX() methods with integration - tests -#318 - Fixed NullPointerException when executing SELECT * from - aliased tables -#321 - BetweenCondition does not bind left hand side Field - correctly -#322 - InCondition does not bind left hand side Field correctly -#326 - Avoid method overloading where binding to Object - may lead to compile-time ambiguities (with javac) -#343 - Add more foreign key navigation method integration tests -#347 - Add explicit integration tests for schema artefacts - excluded from code generation -#350 - Disambiguate navigation methods if several foreign keys - reference the same entity -#352 - Disambiguate navigation methods if a table ending on S - references itself -#353 - Added integration test for compilation of generated - artefacts with javac (as opposed to the Eclipse compiler) -#355 - Error when storing an UpdatableRecord that has no changed - values - -Version 1.5.5.2 - March 15, 2011 -================================================================================ - -A critical bug was reported from the 1.5 release stream where -stored functions did not render their parameters in correct order - -Features --------- -#302 - Map Oracle's NUMBER data type to java.lang.Number in - stored procedures, stored functions - -Bugfixes --------- -#317 - StoredFunctionImpl.asField() renders parameters in wrong - order - -Version 1.5.5.1 - March 13, 2011 -================================================================================ - -In version 1.5.5, there was a fatal bug breaking Derby source code generation. -Only the Derby dialect is affected. Please update immediately, if you are using -jOOQ's Derby integration - -Bugfixes --------- -#315 - Generated master data records are not sorted by PK -#316 - Derby code generation fatally broken - -Version 1.5.5 - March 12, 2011 -================================================================================ - -This version is released early as there are some important bugfixes. Additional -improvements include: - -- Improved DSL related to conditions in HAVING and JOIN clauses -- Support for Oracle-style functions, such as NVL, NVL2, COALESCE - DECODE, etc - -Features --------- -#304 - Add support for Oracle NVL function -#305 - Add support for COALESCE function -#308 - Add support for Oracle NVL2 function -#311 - Add support for Oracle DECODE function - -API changes ------------ -#223 - Enhance DSL to accept and(), or() and similar methods in JOIN steps -#224 - Enhance DSL to accept and(), or() and similar methods in HAVING steps - -Bugfixes --------- -#297 - Fixed Factory.concatenate() function -#298 - Added integration tests for nested selects in HAVING clause -#300 - Added integration tests for nested selects in JOIN clause -#303 - Javadoc correction -#307 - Accelerated integration tests -#309 - Fixed JDBC variable binding issue related to Conditions where the lhs is - a function (e.g. stored function) and the rhs is a constant -#310 - Fixed issue where fetchOne() methods throw NullPointerException if no - result record is available -#312 - Fixed issue where Field.equal(...) methods rendered unexpected SQL when - rhs null is cast to a type -#313 - Fixed Derby cast type for VARCHAR -#304 - Let the DerbyDataType default for java.lang.String be VARCHAR, not LONG - VARCHAR - -Version 1.5.4 - March 04, 2011 -================================================================================ - -Feature #243 required a minor API change in the base classes of generated source -code. This means you have to re-generate all your jOOQ artifacts in order to -migrate to 1.5.4. The artifacts themselves should be regenerated in a compatible -way, such that your client code should not be affected. If this is not the case, -please report a ticket here: - - https://sourceforge.net/apps/trac/jooq/newticket - -Apart from the Derby RDMBS and some new data type support, there have been many -new convenience methods added all over the API. For instance, if type-safety is -not really a requirement, there are lots of possibilities to use plain SQL -directly in the DSL. In that case, data can be accessed from Record, Results, -not only through Field, but also through field names or indexes. - -Check out the updated documentation (soon) here: - - https://sourceforge.net/apps/trac/jooq/wiki/Examples - -- Support for the Derby RDBMS -- Support for casting. This allows for even greater flexibility - in cases where jOOQ cannot 100% ensure type-safety -- Support for ARRAY types. Oracle, Postgres, HSQLDB and H2 ARRAY - types are now supported natively as regular bindings in - jOOQ's Field -- Support for dialect-specific data types. CHAR, VARCHAR, CLOB - are no longer treated equally as java.lang.String. Their - type heritage is also generated -- More sequence support -- Lots and lots of bug fixes - -Features --------- -#95 - Support for the Derby RDMBS -#163 - Add support for JDBC type ARRAY (with Postgres) -#209 - Add support for DB2 sequences -#210 - Add support for H2 sequences -#211 - Add support for HSQLDB sequences -#215 - Support for SQL casting using as cast type -#246 - Support for SQL casting using dialect-specific data types -#254 - Add HSQLDB support for ARRAY types -#256 - Add Oracle support for VARRAY types -#257 - Integrate ARRAY types with stored procedures -#261 - Add a global type mapping to the generated Schema object -#267 - Add DataTypeDefinition for further abstraction of data types in code - generation -#269 - Add H2 support for ARRAY types -#290 - If log4j is not on the classpath, use java.util.logging instead, as - fallback - -API Changes ------------ -#156 - Allow for results to be accessed by index, not by field -#218 - Corrected bad method signature: Record.getValueAsLong(Field, Integer) -#219 - Extended Result and Select API's to be more similar to that of Record -#232 - Add more convenience plain SQL support to the API -#235 - Add convenience methods to Record, Result and Select for access of data - via field name -#243 - Refactor DataType implementations in order to allow for the use of - generics -#259 - Add field type to database meta data (ColumnDefinition) -#260 - Add field type to database meta data (Field) -#262 - Add default behaviour for Record.getValue(Field) -#276 - Add Javadoc as a ZIP file to the jOOQ distribution - -Bugfixes --------- -#125 - Add more plain SQL integration tests -#191 - Add more integration tests for nested unions -#205 - Implemented workaround for handling Postgres stored functions with UDT - OUT parameters -#214 - Fixed NPE when generating a stored function with an unknown parameter - type -#216 - Fixed some cases where binding of BigInteger is not done correctly -#220 - Syntax error when using select statement in a CASE clause -#221 - Corrected integration tests for combined update and select statements -#222 - Added integration test for INSERT statements having nested SELECT - statements for their fields -#225 - Correctly cast array types in Postgres -#230 - Potential misuse of Blob and Clob in H2's JDBC types -#239 - Factory.fetchAny() is not implemented for SQLite -#244 - Fixed peculiar MySQL casting support where cast types do not match any - data types -#245 - Fixed NPE when reading null dates in SQLite -#249 - Added ARRAY type integration tests -#255 - Stored procedure bind variables get mixed up when any argument is null -#263 - Correctly handle Postgres function overloading -#264 - Ambiguous funciton calls when calling overloaded functions with null - parameter -#281 - Handle compilation errors when generating stored procedures with > 254 - parameters -#283 - Fixed compilation errors in generated source code for Oracle's UDT table - type -#284 - Fixed compilation errors in generated source code for Oracle procedures - in packages, when they have no parameters -#285 - Fixed compilation errors in generated source code for Oracle tables with - the same name in different schemata -#286 - Fixed name collisions in generated objects with the java.lang.* package -#288 - Prevent the creation of UNION queries with bad syntax in MySQL -#289 - Correctly alias fields within UNION queries for some dialects, which then - only require the "AS" keyword -#291 - Cannot create an aliased field called "year" in Postgres - -Version 1.5.3 - January 13, 2011 -================================================================================ - -- Lots of stored procedure support was implemented -- Support for sequences was added -- The final decision to postpone support for DB2 UDT's was made -- Some code generation bugfixes - -Features --------- -#36 - Added stored procedure / stored function support for HSQLDB -#140 - Added support for Oracle sequences -#147 - Added support for H2 stored functions -#162 - Correctly integrate UDTs with stored procedures -#170 - Added support for Postgres stored functions -#186 - Added support for more Oracle PL/SQL simple data types -#193 - Simulate support for H2 "stored procedures" -#195 - Simulate support for Postgres "stored procedures" -#206 - Added support for Postgres sequences - -API changes ------------ -#180 - Improved DSL for constant values -#181 - Allow for referencing Field in function argument list -#189 - Renamed convenience methods in org.jooq.Record -#207 - Add fetchOne(Field) method to org.jooq.Select API - -Bugfixes --------- -#182 - Protected generated Record classes against clashes with inherited methods -#183 - Fixed NullPointerException, when generating master data tables with - NULL fields -#184 - Fixed IllegalArgumentException, when a data type is present in the - schema, but unavailable in code generation logic -#185 - Code generation should not fail when single elements cannot be generated -#188 - Improved integration tests for stored procedures / functions / packages -#196 - Increase RDMBS version compatibility by avoiding "SELECT *" in code - generation logic -#199 - Added integration tests for stored procedures in RDBMS that do not - support OUT parameters -#201 - Fixed issue in DB2 where stored procedures without parameters were not - generated. -#202 - Added integration tests for stored procedures / functions without - parameters - -Version 1.5.2 - December 27, 2010 -================================================================================ - -- Improved support for stored procedures, also in packages -- A minor API change was inevitable to implement #173. The API change only - concerns the INTERNAL API. Deprecation marks are added and deprecated items - will be removed in 1.6.0 -- Experimental SQLite database support -- Some important bug fixes - -Features --------- -#25 - Added support for Oracle packages -#114 - Added support for Oracle UDTs -#145 - Added support for the SQLite database -#150 - Generate static convenience methods for stored procedures / functions -#151 - Generate static convenience methods for stored function fields -#152 - Generate meaningful serialVersionUID in generated classes -#173 - Added support for EQUIVALENT schemata - -API changes ------------ -#159 - Added convenience method List getValues(Field) to Result -#165 - Added convenience methods for creating EXISTS clauses -#169 - Improved DSL for WHERE clauses - -Bugfixes --------- -#68 - Prevent issues originating from overloaded stored procedure names, - generating identical Java class names -#153 - Fixed issue with generated code for DB2 stored functions -#154 - Fixed issue with generated code for DB2 stored functions -#155 - Fixed issues with database NULL not being mapped correctly to Java NULL - when selecting values that have a primitive type (int, long, etc) -#158 - Potential ClassCastException when using Field -#171 - Corrected issue related to selection of default schema in DB2 -#177 - Fixed issue related to generated code for tables or UDTs without columns - - -Version 1.5.1 - December 13, 2010 -================================================================================ - -- H2 database support thanks to Espen Stromsnes -- Improved stored procedure support - -Features --------- -#96 - Added H2 database support -#101 - Added stored procedure / stored function support for Oracle -#138 - Added stored procedure support for DB2 -#146 - Added support for DB2 functions - -API changes ------------ -#143 - Added convenience methods to Record - -Bugfixes --------- -#84 - Implemented referential code generation for foreign keys that do not - match their primary keys' types -#141 - Encoding problem in generated master data classes - -Version 1.5.0 - November 22, 2010 -================================================================================ - -- A big one. Major API changes / improvements -- Added lots of convenience methods -- UDT support -- Enum support -- DB2 support thanks to Espen Stromsnes -- "Light" dependency to log4j added. jOOQ will still run without it - -Features --------- -#1 - Create support for UDTs (so far only for PostgreSQL) -#15 - Added DB2 support -#60 - Added support for nested selects in INSERT and UPDATE statements -#83 - Added log4j logging to code generation and runtime -#87 - Add support for arithmetic expressions -#105 - Added support for ENUM data types, where applicable (MySQL and PostgreSQL - so far) -#110 - Added execute and fetch convenience methods -#111 - Added missing "select distinct" support -#122 - Annotate generated classes with javax.annotation.Generated -#123 - Generate user enum fields from data values (master data) -#124 - Added PlainSQLTable -#127 - Added not() operator to Condition -#135 - Added convenience methods andNot() and orNot() in Condition - -API changes ------------ -#89 - Removed support for DataSource. jOOQ is not a transaction manager -#92 - Added SortField type to be used for sorting -#99 - Provide better access to functions (No more FunctionFactory) -#116 - Merge Manager functionality into Factory -#118 - Improve API of org.jooq.Field -#119 - Improve subquery condition API -#132 - Reduced much of the select query API -#134 - Better separation of SelectQuery and SimpleSelectQuery - -Bugfixes --------- -#109 - Error when executing select * if generated schema does not match actual - schema -#115 - Fix various "null" pseudo field issues -#126 - Error when selecting a single field from a union nested select -#129 - Fixed performance issue in Oracle code generation for very large - databases - - -Version 1.4.4 - November 22, 2010 -================================================================================ - -Unreleased version, fixes included in 1.5.0 - -Bugfixes --------- - -#133 - JoinCondition does not take comparison operator - -Version 1.4.3 - October 25, 2010 -================================================================================ - -Some more bugfixes - -Bugfixes --------- - -#71 - Generated code does not compile, when foreign key and primary key have a - data type mismatch -#73 - In Oracle generated code, multi-field foreign keys may generated bad - relations code -#82 - Conversion of literals to camelcase fails if numbers are involved - -Version 1.4.2 - October 22, 2010 -================================================================================ - -Various bugfixes and minor improvements - -Features --------- -#66 - Add support for CASE or DECODE expression - -API changes ------------ -#77 - Functions should not extend FieldImpl, but a new AbstractField -#78 - QueryPart pollutes declared method space of its implementations. Hide it - by indirection - -Bugfixes --------- -#64 - Code generation fails when foreign key references a unique key that is not - the primary key. Code generation for these cases is omitted -#67 - When loading properties files, a leading / seems to be mandatory. This is - preventing users from correctly setting up jOOQ the first time -#70 - Add support for Oracle datatype TIMESTAMP(6) -#72 - Name clashes in generated Tables -#75 - Constant does not bind its values. -#76 - Constant should not render strings all the time -#79 - Constants are not properly escaped -#80 - Position function does not bind any variables -#81 - Add cast function to Constants in HSQL - -Version 1.4.1 - October 18, 2010 -================================================================================ - -Oracle patch release - -Features --------- -#63 - Generate referential functionality for Oracle - -Version 1.4.0 - October 17, 2010 -================================================================================ - -Support for PostGreSQL was added. -Added lots of OR-mapping functionality. -There is a general API change due to various new features. - -Features --------- -#14 - Add PostGreSQL support -#40 - Resolve foreign keys. Allow for navigation between objects. -#42 - Add PlainSQLField -#45 - Add "dirty" flag to Record's values. This allows for updating only - relevant data. -#47 - Complete implementation for UPDATE, INSERT, DELETE statements. Added some - missing functionality. -#48 - Add more support for Date, Time, Timestamp fields. -#51 - Add a org.jooq.impl.Manager class that provides common utility methods for - CRUD operations - -API changes ------------ -#10 - Add second generic type . This is a prerequisite for - many OR-mapping features -#18 - Use org.jooq.Record in InsertQuery and UpdateQuery -#46 - Create UpdatableRecords as a prerequisite for JPA and true OR-mapping. - These records support store() and delete() methods -#52 - Add default constructor in generated Records. -#53 - Add refresh functionality to UpdatableRecords. See also #46 -#54 - Add a state to the factory class -#56 - Reduce API, remove unnecessary Condition subinterfaces -#57 - Reduce API, remove unnecessary QueryPart interfaces - -Bugfixes --------- -#49 - NullPointerException when generating relations on schema subset -#58 - Count function renders bad SQL in various dialects -#59 - Exception when selecting unaliased functions in queries - -Version 1.3.0 - August 24, 2010 -================================================================================ - -Support for HSQLDB was added. -There is a major API change due to #44. - -Features --------- -#29 - Generate primary keys and foreign keys in Oracle code generation -#34 - Add support for HSQLDB -#39 - Generate primary keys and foreign keys in HSQLDB code generation -#41 - Add documentation to QueryFactory and Functions - -API changes ------------ -#23 - Add support for more advanced joins -#32 - Merge SelectQuery and ResultProviderQuery interfaces -#44 - Let Query methods return "this" - -Bugfixes --------- -#35 - Add unit tests for HSQLDB support -#37 - Syntax error in combined select queries! The usage of combined queries in - MySQL may still be a bit awkward. Keep an eye out for further fixes -#43 - Join with aliased tables doesn't work - -Version 1.2.0 - August 21, 2010 -================================================================================ - -The added Oracle support is now unit tested and more stable. The Oracle NUMBER -data type is mapped more precisely to Java types. - -Features --------- -#12 - Model primary keys and foreign keys in generated code -#22 - Improve mapping of Oracle NUMBER data type -#26 - Add Plain SQL QueryParts -#27 - Add support for HAVING clause - -Bugfixes --------- -#24 - Add Unit tests for oracle database (and fixed bugs) -#31 - Pull up addOrderBy() methods from SelectQuery to ResultProviderQuery - -Version 1.1.0 - August 17, 2010 -================================================================================ - -The main new feature is the Oracle support. Wait for Version 1.1.1 for that -support to be stabilised, as there are no Oracle unit tests running against an -Oracle database yet. - -Features --------- - -#2 - Add support for inner / nested selects -#3 - Add more function support -#4 - Implement filtering functionality for code generation -#6 - Add Oracle Support -#9 - Create true POJO's (implementing org.jooq.Record) with getters and setters -#17 - Make org.jooq.impl.Parameter independent of Field - -Bugfixes --------- - -#11 - Code generation does not remove files - -Version 1.0.1 - August 14, 2010 -================================================================================ - -Features --------- - -#5 - Prevent code regeneration, if no changes were made -#7 - Implement ant task for code generation - -Version 1.0.0 - August 14, 2010 -================================================================================ -Initial Release \ No newline at end of file diff --git a/jOOQ-website/inc/RELEASENOTES-3.1.txt b/jOOQ-website/inc/RELEASENOTES-3.1.txt deleted file mode 100644 index ce8cd8e8ff..0000000000 --- a/jOOQ-website/inc/RELEASENOTES-3.1.txt +++ /dev/null @@ -1,3691 +0,0 @@ -jOOQ Release notes -================== - -For an interactive overview, see also -http://github.com/jOOQ/jOOQ/issues - -For a formatted text version, see -http://www.jooq.org/notes.php - -For a text version, see -http://www.jooq.org/inc/RELEASENOTES.txt - -Version 3.1.0 - June 30, 2013 -================================================================================ - -With this release, MariaDB is now finally officially supported by jOOQ! MariaDB -is a MySQL fork, which currently has a very similar feature set as its parent. -As such forks tend to evolve into different directions very quickly, it makes -sense to add formal support in jOOQ. - -SQL Server 2012 is another SQL dialect that is now officially supported in jOOQ, -allowing to make use of the newly supported ROWS UNBOUNDED PRECEDING and similar -windowing clauses, as well as the long awaited OFFSET .. FETCH clause. From now -on, jOOQ SQLDialect.family() allows to define a super-set of SQL dialects by the -same vendors with only subtle differences. - -POJO mapping is taken to the next level. jOOQ opened up its internal -DefaultRecordMapper providing useful Record to POJO mapping algorithms. But your -custom domain model might be more complex. Instead of creating the next -impedance mismatch, trying to foresee your own mapping algorithm needs, jOOQ -allows you to inject a RecordMapperProvider into your Configuration, allowing to -override record mapping with arbitrary behaviour. - -This minor release is also a strong step forward towards a more unified SQL -experience, where row value expression IN predicates and comparison predicates -are simulated with an equivalent EXISTS predicate. See this blog post for more -details: -http://blog.jooq.org/2013/05/03/sql-query-transformation-fun-predicates-with-row-value-expressions - -Note, that for technical reasons, jOOQ 3.0.0 could not yet be integration -tested with DB2, Ingres, and Sybase ASE. Consider using jOOQ 2.6, instead - -Features and improvements -------------------------- -#552 - Add SQLDialect.family() to group several SQLDialect versions of the same - RDBMS -#742 - Improve MySQL Stored Procedure support using MySQL 5.5's - INFORMATION_SCHEMA.PARAMETERS dictionary table -#833 - Add integration tests for both jconn3 and jTDS JDBC drivers for Sybase - and SQL Server -#963 - Map SQL Server TINYINT to UByte -#965 - Add support for Sybase SQL Anywhere unsigned number types -#1373 - Add Field DSL.coerce(Field, DataType) and similar methods, - to coerce a field to a given data type (as opposed to casting it) -#1836 - Document using jOOQ with Spring for transaction support -#1885 - Add test to count opening and closing of Statements and ResultSets by - jOOQ -#2022 - Add support for SQL Server 2012 windowing clauses in window functions -#2058 - Add support for the MariaDB database -#2095 - Document 's feature of forcing a column onto a SQL type -#2235 - Add Result DSLContext.fetchFromTXT() to allow for loading results - that were exported using Result.format() -#2236 - Add DSLContext.batch(String...) and batch(String, Object[]...) to easily - create batch statements from SQL strings -#2291 - Add DSLContext.fetchAny(Table, Condition) method and others -#2299 - Allow for setting ResultSet flags (e.g. - ResultSet.TYPE_SCROLL_INSENSITIVE through - ResultQuery.resultSetConcurrency(), resultSetType(), - resultSetHoldability() -#2310 - Add DSL.using(Connection) and DSL.using(Connection, Settings) which - auto-detect the SQLDialect from the jdbc url -#2311 - Add Configuration.recordMapperProvider() to override jOOQ's internal - default ReflectionMapper -#2339 - Support CUBRID 9.1's new features -#2344 - Add a new ControlFlowSignal that is used to explicitly jump out of a - control flow -#2355 - Add support for Postgres / HSQLDB's TRUNCATE [...] RESTART / CONTINUE - IDENTITY -#2357 - Add support for Postgres' TRUNCATE [...] CASCADE statement -#2395 - Simulate row value expression IN predicate using EXISTS -#2414 - Add Setting to influence parameter rendering (indexed, named, inlined) -#2416 - Add Result.intoXML(org.xml.sax.ContentHandler) to generate a SAX event - stream from a jOOQ result -#2423 - Add support for SQL Server 2012 native OFFSET .. FETCH clause -#2424 - Integration-test jOOQ with the SQLite xerial driver -#2426 - Add DSLContext.batch(Query, Object[]...) as a convenience for calling - batch(Query).bind(Object...).bind(Object...) -#2427 - Add more Javadoc to ResultQuery.fetchResultSet() explaining that - underlying PreparedStatements are closed with ResultSet.close() -#2428 - Simulate row value expression comparison predicates using EXISTS -#2430 - Add CustomQueryPart for use with plain SQL and other places -#2434 - Add Field.compare(Comparator, Select) and Field.compare(Comparator, - QuantifiedSelect) to allow for more dynamic SQL -#2437 - Add RenderContext.paramType() and deprecate RenderContext.inline() and - .namedParams() -#2440 - Expose the DataSource contained in the DataSourceConnectionProvider -#2441 - Add DSL.cast(Field, XXX) for increased API consistency -#2446 - Add JDBCUtils.dialect(Connection) to "guess" the jOOQ SQLDialect from a - JDBC Connection -#2466 - Add a public DefaultDSLContext implementation that can be used by users - to override the default behaviour -#2485 - Allow for treating Field as Condition -#2496 - Add support for SQL Server 2012 sequences -#2499 - Add JDBCUtils.safeClose(Connection) -#2509 - Expose CHECK constraints in jOOQ-meta -#2519 - Add Record.from(Object, Field...) from(Object, String...), - from(Object, int...) to copy only a select set of values from a POJO, - Array, Map -#2521 - Add {Row|Record}.fields(Field...), {Row|Record}.fields(String...), - {Row|Record}.fields(int...) to extract Field[] from a row or record -#2527 - Add org.jooq.tools.jdbc.DefaultResultSet to provide a default ResultSet - delegation implementation -#2531 - Add integration tests mapping binary(16) to java.util.UUID -#2532 - Let batch executions debug-log executed queries -#2535 - Convert.convert(Object, Class) should support simple casting -#2547 - Document some SQL language to jOOQ DSL API mapping rules in the manual -#2566 - Upgrade integration test jTDS version to 1.3.1 -#2571 - Add a new RecordType type to make up for the missing - recursive type definition on Record - -API changes (backwards-incompatible) ------------------------------------- -#2468 - API bug: MergeNotMatchedSetStep.set(Field, Select) returns - MergeMatchedSetMoreStep instead of MergeNotMatchedSetMoreStep - -Bug fixes ---------- -#1520 - Handle Ingres', SQLite, SQL Server's, Sybase ASE's limitations of 1024, - 999, 2100 or 2000 maximum bind values per query -#2135 - Postgres ENUM data type isn't supported correctly, if the ENUM needs - full qualification -#2323 - NullPointerException when calling Schema.getTables() on a meta schema - with SQLite -#2401 - Bad package name generated when contents are not trimmed -#2404 - Cannot combine with if both match -#2412 - jOOQ Meta does not recognise non-uppercase IN, OUT, INOUT keywords in - MySQL stored procedures -#2413 - Suppress warnings in generated code (@SuppressWarnings("all") doesn't - suppress "rawtypes" warnings with javac) -#2418 - RenderContext.data() is not passed on to QueryParts when being rendered -#2422 - Upgrade RSyntaxTextArea to 2.0.7 -#2432 - Manual refers to a package-private DefaultConfiguration constructor -#2443 - AbstractStoreQuery.execute() doesn't correctly operate on the - Configuration's ConnectionProvider in SQLite IDENTITY fetching queries -#2445 - JDBCDatabase doesn't recognise Oracle's VARCHAR2 data type (and other - vendor-specific data types) -#2447 - Tables collected through DSLContext.meta() return duplicate columns if - multi-schema environments contain identical tables -#2449 - JDBCDatabase doesn't use DataType.length(), precision(), and scale() -#2450 - Cannot set precision on TINYINT, SMALLINT, INT, BIGINT data types -#2461 - Generator Encoding Error for Database-Objects with Unicode-Names -#2464 - Bad SQL rendered from DELETE statements with aliased tables -#2469 - NullPointerException in AbstractResultQuery.fetchOneMap() -#2477 - MySQL's unsigned types cannot be used in other dialects -#2478 - IngresDatabase erroneously joins IIINDEXES to get constraint columns, - rather than using IIKEYS -#2494 - Possible null pointer passed to ConnectionProvider.release() -#2502 - Code generation fails to generate valid java for stored procedures that - accept parameters named configuration. -#2506 - SQLDialectNotSupportedException on DSL.inline(T, Class), when jOOQ's - internals are not (yet) properly initialised -#2515 - Compilation errors when generating code for artefacts that differ only - by a trailing underscore(s): A and A_ and A__ -#2523 - Statement.close() may be called upon previously closed statements -#2528 - Combining renderFormatted with inlined bind variables will change bind$ - values when they contain newlines -#2562 - Bad SQLDialect reference in Oracle and MySQL package-info.java -#2569 - Error when rendering SQL Server procedures with Settings.renderSchema - == false - -Version 3.0.0 - April 28, 2013 -================================================================================ - -This major release is a great move towards better integration of SQL as a -language in Java. Unlike any other database abstraction framework, jOOQ now -formally supports the notion of "row value expressions". The jOOQ API uses -Xtend-generated API types from Row1 .. Row22, as well as Record1 .. Record22 to -bring you even more compile-time typesafety on a record-level. - -In SQL, you can typesafely write - -
    -  SELECT * FROM t WHERE (t.a, t.b) = (1, 2)
    -  SELECT * FROM t WHERE (t.a, t.b) OVERLAPS (date1, date2)
    -  SELECT * FROM t WHERE (t.a, t.b) IN (SELECT x, y FROM t2)
    -  UPDATE t SET (a, b) = (SELECT x, y FROM t2 WHERE ...)
    -  INSERT INTO t (a, b) VALUES (1, 2)
    -
    - -In jOOQ, you can now (also typesafely!) write - -
    -  select().from(t).where(row(t.a, t.b).eq(1, 2));
    -  // Type-check here: ----------------->  ^^^^
    -  select().from(t).where(row(t.a, t.b).overlaps(date1, date2));
    -  // Type-check here: ------------------------> ^^^^^^^^^^^^
    -  select().from(t).where(row(t.a, t.b).in(select(t2.x, t2.y).from(t2)));
    -  // Type-check here: -------------------------> ^^^^^^^^^^
    -  update(t).set(row(t.a, t.b), select(t2.x, t2.y).where(...));
    -  // Type-check here: --------------> ^^^^^^^^^^
    -  insertInto(t, t.a, t.b).values(1, 2);
    -  // Type-check here: ---------> ^^^^
    -
    - -This also applies for existing API, which doesn't involve row value expressions: - -
    -  select().from(t).where(t.a.eq(select(t2.x).from(t2));
    -  // Type-check here: ---------------> ^^^^
    -  select().from(t).where(t.a.eq(any(select(t2.x).from(t2)));
    -  // Type-check here: -------------------> ^^^^
    -  select().from(t).where(t.a.in(select(t2.x).from(t2));
    -  // Type-check here: ---------------> ^^^^
    -
    - -And for UNIONs - -
    -  select(t1.a, t1.b).from(t1).union(select(t2.a, t2.b).from(t2));
    -  // Type-check here: -------------------> ^^^^^^^^^^
    -
    - -These type-checks are preformed by your Java compiler, considering the generic -type information of your SQL statement's Record data types. These include: - -- Record1 -- Record2 -- Record3 -- ... -- Record22 - -The highest degree of typesafety was chosen to be 22, to match Scala's Tuple22, -Product22 and Function22 types. Higher degree records are still supported by -jOOQ, just without the additional typesafety. - -This Record typesafety is applied to - -- SELECT statements -- INSERT and MERGE statements: the VALUES() clause -- UPDATE statements: SET A = (SELECT...) -- UPDATE statements with row value expressions: SET (A, B) = (SELECT...) -- Quantified comparison predicates: ANY(SELECT...) and ALL(SELECT...) -- Comparison predicates: = (SELECT...) -- IN predicates: IN (SELECT...) -- BETWEEN predicates: BETWEEN (SELECT...) AND (SELECT...) -- Generated records -- The new VALUES() constructor -- Scala integration for conversion of jOOQ Record[N] to Scala's Tuple[N] - -Apart from this major improvement, there had been many minor changes throughout -the jOOQ API. Here are some important ones: - -- Factory has been split into DSL (static QueryPart construction) and - DSLContext (Query execution, "attached" QueryPart construction). This greatly - improves the overall DSL experience while allowing for more fine-grained - Executor lifecycle control. -- A ConnectionProvider has been introduced as an abstraction of the JDBC - Connection lifecycle. The standalone Connection and pooled DataSource modes - are still supported, but you can now inject your own ConnectionProvider for - more control. -- A lot of performance improvements have been implemented within the jOOQ API - removing most of the overhead caused by jOOQ when fetching data from JDBC -- A JDBC Mock API has been added to help you create simple unit tests for your - application built on top of jOOQ. -- A VALUES() constructor is now supported, and derived column lists to alias - tables and columns in one go. -- The data type API has been greatly simplified. This allowed for the - introduction of runtime precision, scale, and length information. -- CRUD has been improved through many more CRUD batch operations, explicit - INSERT and UPDATE (in addition to store()), and explicit handling of jOOQ's - internal changed flags. - -As this is a major release, some backwards-incompatibilities were inevitable. -For those users among you, migrating from jOOQ 2.x to 3.0, here are a couple of -useful hints: -http://www.jooq.org/doc/3.0/manual/reference/migrating-to-3.0/ - -Note, that for technical reasons, jOOQ 3.0.0 could not yet be integration -tested with DB2, Ingres, and Sybase ASE. Consider using jOOQ 2.6, instead - -Note, that further code generation and model API improvements were postponed to -a later release - -Note, previous release candidates contained more features, improvements and bug -fixes. See their respective sections for details. - -Features and improvements -------------------------- -#2410 - Add some more API usage examples to the section about ResultSet fetching -#2415 - Add Constants.MINOR_VERSION and Constants.FULL_VERSION for internal and - external reuse - -Bug fixes ---------- -#1998 - Wrong screenshots in the manual's section about code generation. - jooq-meta.jar is missing -#2407 - Fix bad references to pre-3.0 Factory in Javadoc - -Version 3.0.0 (RC3) - April 12, 2013 -================================================================================ - -This major release is a great move towards better integration of SQL as a -language in Java. Unlike any other database abstraction framework, jOOQ now -formally supports the notion of "row value expressions". The jOOQ API uses -Xtend-generated API types from Row1 .. Row22, as well as Record1 .. Record22 to -bring you even more compile-time typesafety on a record-level. - -See release 3.0.0 for more information. - -Features and improvements -------------------------- -#2195 - Remove the standalone tutorial, link to the manual -#2321 - Implement various Key.toString() methods -#2329 - Add Javadoc to Configuration.executeListenerProviders() -#2331 - Add hint to the manual about mvn eclipse:clean and eclipse:eclipse when - building jOOQ -#2363 - Change the readme file to use Markdown -#2366 - Add org.jooq.util.example package to jOOQ-codegen with some example - GeneratorStrategies -#2372 - Add aliases for arithmetic operators to be able to use Groovy default - operator overloading -#2389 - Make org.jooq.impl.DefaultConfiguration public -#2392 - Add Configuration.set() methods. They should allow for modifying a - Configuration -#2396 - Add DSL.function(Name, Class, Field...) and - DSL.function(Name, DataType, Field...) to allow for custom, - fully-qualified function references - -API changes (backwards-compatible) ----------------------------------- -#2378 - Allow for overriding getIdentity() and getReferences() in CustomTable - -API changes (backwards-incompatible) ------------------------------------- -#2328 - Remove UpdatableTable marker interface, pulling up methods to Table -#2342 - Change Configuration.data() to return Map -#2343 - Decouple lifecycle of Configuration and ExecuteContext -#2350 - Do not statically reference a Connection from GenerationTool -#2353 - Decouple org.jooq.Context from Configuration. Choose composition over - inheritance -#2362 - Decouple org.jooq.DSLContext from Configuration. Choose composition over - inheritance -#2379 - Replace 3.0-RC1 Executor type by a contextual DSL type constructed from - DSL.using() -#2380 - Rename org.jooq.impl.Factory to org.jooq.impl.DSL -#2382 - Let DAO reference a Configuration instead of a DSLContext -#2388 - Replace Configuration's List with - ExecuteListenerProvider[] to simplify correct and thread-safe client - implementations -#2390 - Change Configuration API to reflect jOOQ-style getter / setter naming -#2391 - Rename dialect-specific Factories [Dialect]Factory to [Dialect]DSL -#2399 - Remove support for the USE statement - -Behaviour changes (backwards-incompatible) ------------------------------------------- -#2351 - Relax ConnectionProvider contract, allowing acquire() to return new - Connections even before release() is called - -Bug fixes ---------- -#1868 - Cursor.close() doesn't terminate the ExecuteListener life cycle -#2325 - "HsqlException: incompatible data type in conversion" when binding a - UUID[] to an HSQLDB prepared statement -#2327 - Compilation error in generated tables, when a table contains a UNIQUE - key but no PRIMARY key -#2332 - Documentation example regarding DSL.concat() does not compile -#2336 - jOOQ 3.0 regression: NoClassDefFoundError caused by missing log4j - dependency -#2338 - Tutorial example unclear: There are three artefacts in Maven, not one -#2346 - org.jooq.Meta's generated Schema and other objects are Serializable, but - their enclosed Meta instance is not -#2347 - Let equals() implementations succeed early on identity -#2354 - Single page manual display errors on Firefox -#2361 - Inaccurate Configuration Javadoc explaining wrong ExecuteListener - lifecycle -#2367 - SQLite identifiers that collide with keywords should be quoted -#2381 - Do not add TableFieldImpl to table in constructor of TableFieldImpl -#2385 - fetchOne() and fetchLazy() don't terminate the ExecuteListener life - cycle when an exception occurs -#2393 - Fully qualified name not used for user-defined aggregate function - -Version 3.0.0 (RC2) - March 8, 2013 -================================================================================ - -This major release is a great move towards better integration of SQL as a -language in Java. Unlike any other database abstraction framework, jOOQ now -formally supports the notion of "row value expressions". The jOOQ API uses -Xtend-generated API types from Row1 .. Row22, as well as Record1 .. Record22 to -bring you even more compile-time typesafety on a record-level. - -See subsequent release candidates or release 3.0.0 for more information. - -Features and improvements -------------------------- -#2200 - Add Executor.fetchCount(Select) and Select.fetchCount() to replace - the projection by a COUNT(*) query -#2244 - Add section to the manual indicating that the jOOQ generator can only - handle schemas of a certain size -#2255 - Add code generation option to avoid the generation of "global object - references" -#2257 - Add List Database.getIdentities(SchemaDefinition) - for convenience to jooq-meta -#2258 - Restore private and deprecated versions of the Factory constructors, - adding some Javadoc about the changes between jOOQ 2.x and 3.0 -#2270 - Add section to the manual indicating how to build jOOQ with Maven -#2272 - Add a paragraph to the manual's preface, explaining "why not just use - SQL"? -#2281 - Add Result Executor.fetchFromStringData(List) in order - to reuse logic from fetchFromCSV -#2285 - Add more verbosity to the code generator, when configured badly -#2290 - Add Database.getUniqueKeys() and getForeignKeys to jOOQ-meta -#2297 - Add section to the manual indicating how the various generator flags - depend on each other -#2308 - Do not generate "final" Tables.java, UniqueKeys.java, etc. - -Bug fixes ---------- -#2212 - "code size too large" in generated SchemaImpl, when the number of tables - exceeds 15k -#2238 - Code generation runs extremely slow for large schemas (Inefficient - DefaultRelations.getUniqueKeys() and getForeignKeys() methods) -#2239 - Code generation runs extremely slow for large schemas (Inefficient - AbstractDatabase.filterSchema() methods) -#2252 - ArrayIndexOutOfBoundsException, when rendering plain SQL that is - terminated by a comment -#2259 - RenderMapping has no effect, if not supplied to the Executor constructor -#2262 - RenderSchema has no effect, if not supplied to the Executor constructor -#2267 - SQLDialectNotSupportedException: Type class org.postgis.PGgeometry is - not supported in dialect null, when binding PG* objects -#2271 - jOOQ Unit tests fail when not run in CET / CEST -#2273 - Tutorial bug, referencing wrong Maven dependency. jOOQ 3.0.0 is not yet - released, only RC1 -#2276 - Wrong MockDataProvider manual example -#2278 - Postgres (UUID and other) ARRAY types aren't correctly inlined as string - literals -#2279 - UUIDs aren't correctly deserialised from Postgres UDTs -#2280 - Improve supported formats for MockFileDatabase -#2283 - Class loading issues in GenerationTool when called by Gradle -#2294 - Compilation errors when code generator is configured with - true and false -#2298 - Suppress warnings in generated code (@SuppressWarnings("all") doesn't - work with javac) -#2312 - Annotate org.jooq.Support with java.lang.annotation.Documented to make - it part of the public API (in Javadoc) -#2314 - Outdated GenerationTool Javadoc - -Version 3.0.0 (RC1) - February 16, 2013 -================================================================================ - -This major release is a great move towards better integration of SQL as a -language in Java. Unlike any other database abstraction framework, jOOQ now -formally supports the notion of "row value expressions". The jOOQ API uses -Xtend-generated API types from Row1 .. Row22, as well as Record1 .. Record22 to -bring you even more compile-time typesafety on a record-level. - -See subsequent release candidates or release 3.0.0 for more information. - -Features and improvements -------------------------- -#456 - Add runtime support for PRECISION, SCALE, and LENGTH attributes -#834 - Add support for the Firebird / Postgres UPDATE .. RETURNING clause -#915 - Add Table> - Factory.values(Row[N]...), to create ad-hoc tables - from data -#1038 - Introduce new type GroupField for cube(), rollup() and groupingSets() - functions. Accept only GroupField... in groupBy() clauses -#1097 - Add org.jooq.Catalog, a type modelling an entity combining several - org.jooq.Schema -#1144 - Overload Executor.fetch[One|Lazy](ResultSet, X...) with X being - Field, DataType, Class -#1178 - Allow for treating Condition as Field -#1583 - Add support for row value expressions in UPDATE statements: UPDATE .. - SET (A, B, C) = (SELECT X, Y, Z) -#1624 - Add support for java.util.UUID as a type -#1663 - Document RenderContext and make it part of the public API -#1686 - Add UpdatableRecord.insert() and update() -#1689 - Generate E into(E) and R from(E) methods to generated records -#1690 - Add UpdatableRecord.key() returning a Record holding PK values -#1695 - Add Factory.all() and Factory.any() to create quantified expressions -#1703 - Add Executor.batchDelete(UpdatableRecord...) to mass-delete a set of - UpdatableRecords -#1801 - Add Table.as(String, String...) to allow for creating a table aliases - (correlation names) with derived column lists -#1874 - Add Record1, Record2, ... Record[N] similar to Row1, Row2, ... Row[N] to - support record type-safety -#1897 - Add a section to the manual about the migration to jOOQ 3.0 -#1899 - Make some JDBC-related utility methods publicly available in - org.jooq.tools.jdbc.JDBCUtils -#1902 - Duplicate SELECT API between Executor and Factory -#1904 - Add Executor.fetch(ResultQuery), Executor.execute(Query), and similar - methods -#1905 - Add Row[N].equal(Select) and similar methods -#1906 - Use Xtend to generate Row[N], Record[N] and other [N]-related API code - artefacts -#1914 - Document the fact that SELECT * is performed by leaving the SELECT list - empty -#1917 - Add support for CUBRID 9.0's window functions and MERGE statement -#1918 - Let generated Records implement Record[N] if applicable -#1919 - Support higher degrees of Row[N] and Record[N] types. Match Scala's max - degree of 22 -#1920 - Add more implicit defs in order to treat Record[N] as Scala's Tuple[N] -#1923 - Add Record.intoResultSet() to create a single-record JDBC ResultSet from - a Record -#1924 - Add support for CUBRID 9.0's ENUM data type -#1932 - Generate Javadocs for Table constructors -#1934 - Improve generated Record Javadoc -#1951 - Add support for the SQL Server WITH (...) table hints -#1966 - Add Row[N].equal(Record[N]) and similar convenience methods -#1967 - Document using MySQL's SQL_CALC_FOUND_ROWS as an Oracle hint -#1968 - Add org.jooq.Meta returned from Executor.meta() to return a wrapped JDBC - DatabaseMetaData object -#1972 - Move MySQLFactory.md5() to Factory and simulate it for Oracle -#1973 - Add Executor.fetchOne(ResultSet) -#1975 - Add Result.sort{Asc|Desc}(int) and (String) to order by field index / - name -#1981 - Add support for DB2 CGTT and MQT -#1983 - Improve the Javadoc on Table.as() and Field.as() to hint at - case-sensitivity and RenderNameStyle -#1984 - Add ResultQuery.fetchOneInto() -#1986 - Add Record.fromMap() as the inverse operation of Record.intoMap() -#1987 - Allow for reading data from arrays, Maps through Record.from() -#1988 - Add Record.fromArray() as the inverse operation of Record.intoArray() -#1989 - Add Record.changed(Field), changed(int), changed(String) to check - whether a single field's value has changed -#1990 - Add T Record.original(Field), original(int), original(String) to - get a Field's original value -#1991 - Reflect changed flag in Result.toString() (and thus also - Record.toString()) -#1999 - Add Record.changed(boolean) changed(Field, boolean) - changed(int, boolean) changed(String, boolean) as setters for the - changed flag -#2000 - Add Record.reset(), reset(Field), reset(int), reset(String) to - restore original values in a record -#2008 - Add elementFormDefault="qualified" to XSD specifications to allow for - XML validation of jOOQ configuration files -#2020 - Let org.jooq.ExecuteListener extend java.util.EventListener -#2021 - Add UpdatableRecord.refresh(Field...) to allow for refreshing a - subset of the Record's values -#2027 - Document semantic versioning rules as understood by jOOQ -#2028 - Add Batch.size() to indicate the number of queries that will be executed - by a batch operation -#2030 - Add reusable wrapper types for JDBC Connection, Statement, ResultSet, - etc. -#2044 - Add various TableRecord.fetchParent(...), fetchChild(...) and - fetchChildren(...) methods to follow foreign key relationships -#2049 - Add gt() / ge() / lt() / le() to Row[N] types -#2052 - Add [not]Between[Symmetric]() to Row[N] types -#2053 - Add is[Not]Null() to Row[N] types -#2066 - Add Executor.extractBindValues(QueryPart), extractParams(QueryPart) to - extract bind values in the context of an Executor (i.e. Configuration) -#2072 - Let UDTRecordImpl and ArrayRecordImpl.toString() return a valid - constructor expression -#2078 - Add Postgres to @Support annotation of SelectForUpdateWaitStep.wait() -#2079 - Support generation of bean validation annotations on records and - interfaces -#2089 - Generate an "empty" DefaultSchema for those databases that do not have - any schema (CUBRID, Firebird, SQLite) -#2094 - Add unit tests for org.jooq.tools.Convert -#2107 - Let Record implement Comparable -#2111 - Improve org.jooq.Record Javadoc, to explain the various Record subtypes -#2112 - Add Row.types() and Row.dataTypes() as a convenience -#2113 - Document Record.hashCode() and equals() through Javadoc -#2133 - Allow for mapping to "" (empty) in order to avoid the - generation of a schema -#2156 - Add Row.type(int), type(String), dataType(int), dataType(String) for - convenience -#2158 - Add Executor.fetchLazy(Table) and fetchLazy(Table, Condition) for - convenience -#2159 - Let ExecuteListener extend Serializable -#2160 - Add Executor.batchUpdate(UpdatableRecord...) to mass-update a set of - UpdatableRecords -#2161 - Add Executor.batchInsert(UpdatableRecord...) to mass-insert a set of - UpdatableRecords -#2162 - Add some more Javadoc to JooqLogger -#2170 - Add 0.0 and 1.0 to Convert.FALSE_VALUES and Convert.TRUE_VALUES -#2171 - Allow for converting booleans to numbers through org.jooq.tools.Convert: - TRUE => 1, FALSE => 0 -#2172 - Add set(Field, Select>) methods to UPDATE, - MERGE and INSERT statements -#2176 - Add hint in code generation, when an unsupported, old database version - is being used (e.g. MS SQL Server 2000) -#2177 - Add ResultQuery.intern() and Result.intern() for string interning in - result sets -#2179 - Add Javadoc to QueryPart.hashCode() and equals() -#2199 - Allow for INSERT and UPDATE of pre-existing records through - SET [ Record ] clauses -#2202 - Add Mock JDBC objects for unit testing with jOOQ -#2203 - Add Executor.map(Schema) and Executor.map(Table) as a convenience to - apply runtime schema mapping -#2204 - Add BatchBindStep.bind(Object[][]) to bind lots of bind values at a time -#2205 - Add Result Executor.newResult(Table) to generate custom - results - -API changes (backwards-compatible) ----------------------------------- -#1309 - Let Factory.val() return Param instead of Field -#2031 - Change union(Select) and similar methods to - union(Select) -#2157 - Change the bounds of various > H - fetchInto(H handler) methods to RecordHandler -#2197 - Relax bounds on Factory.groupingSets(Collection>...) to - Collection>... -#2206 - Relax bounds of R on Executor.newRecord() from TableRecord to Record - -API changes (backwards-incompatible) ------------------------------------- -#1118 - Remove support for the code generation ant task -#1254 - Move org.jooq.tools.unsigned contents to org.jooq.types (along with the - INTERVAL types) -#1374 - Relax usage of generic . Replace by where data types - are involved. -#1533 - Extract Executor API from Factory. Let Factory contain only static - QueryPart factory methods -#1549 - Externalise connection lifecycle through new ConnectionProvider -#1649 - Remove support for code generation from pre-jOOQ 2.0 .properties file -#1740 - Remove support for generated master data enums -#1875 - Add generic type to SelectXXXStep DSL type hierarchy - for increased tuple type-safety -#1887 - Remove all deprecated code -#1894 - Remove constructors from dialect-specific factories -#1907 - Remove FactoryOperations, push its API down to org.jooq.impl.Executor -#1921 - Add InsertValuesStep[N] - Executor.insertInto(Table, Field, Field, ..., Field) -#1926 - Add MergeXXXStep - Executor.mergeInto(Table, Field, Field, ..., Field) -#1977 - Remove the confusing concept of having a "main key" as opposed to a - "primary key" -#2042 - Remove generated setters, setting foreign key values from records -#2043 - Remove generated navigation methods -#2060 - Remove redundant SimpleSelectXXX API -#2117 - Remove the FieldProvider marker interface. Simplify the FieldProvider - API -#2119 - Rename Row.getDegree() to Row.size() - -Behaviour changes (backwards-incompatible) ------------------------------------------- -#1235 - SQLite BIGINT data type erroneously maps to java.math.BigInteger -#1578 - Change configuration of ExecuteListeners in Configuration. Listeners - instances should be provided, not classes -#2076 - Stop "supporting" comma-separated regular expressions in the code - generator configuration -#2088 - Do not treat CUBRID "owner" as schema in generated code - -Bug fixes ---------- -#1170 - Improve performance on jOOQ's reflection usage -#1626 - Explicitly implement hashCode() and equals() in some additional - QueryParts -#1886 - Query.bind() has no effect when Query.keepStatement(true) and - StatementType.STATIC_STATEMENT are combined -#1890 - Bad Postgres array serialisation when " or \ characters are contained in - a String[] -#1938 - Improve AbstractField.hashCode() and AbstractTable.hashCode() and - similar, as these two are called very often -#1942 - Inefficient call to String.split() in StringUtils.toCamelCase() leads to - non-negligible performance overhead in POJO transformation calls -#1937 - Inefficient implementations of AbstractDataType.equals() and hashCode() -#1954 - Bad SQL rendered when combining ORDER BY [ some-function ] with LIMIT .. - OFFSET in DB2, SQL Server -#1958 - Bad SQL rendered for OVER (ORDER BY [ some-function ]) for SQL Server - and Sybase -#1974 - Optimise various Executor.fetchOne() methods, which consume the whole - ResultSet before throwing an InvalidResultException -#1979 - Thread safety issue in org.jooq.impl.FieldList -#1982 - Change RenderNameStyle.UPPER, LOWER, AS_IS to quote literals if needed -#1992 - Bad reference to org.jooq.debug.[impl].DebugListener in the manual -#1993 - Bad code generated when the same table name exists in multiple schemas - in SQL Server -#1995 - Record.original() values aren't updated after a Record.store() operation -#1997 - Review the manual's tutorial for integrity -#2001 - Named Params are treated as null literals on right sides of comparisons -#2007 - Bad type coercion on the right hand side of a comparison predicate, when - the left hand side is Field -#2011 - Implement some micro-optimisations in DefaultRenderContext -#2025 - Correctly handle multiple foreign keys defined on the same column -#2045 - Bad hashCode calculation when Records contain arrays or byte[] -#2055 - MySQL's UPDATE [t1] JOIN [t2] syntax can cause syntax errors as column - references are not fully qualified -#2057 - Cannot properly extract bind values for LIMIT .. OFFSET clause from a - SELECT statement -#2063 - jOOQ-meta loads Firebird composite unique key columns in wrong order -#2073 - The code generator's flag doesn't affect Oracle - VARRAY and TABLE types -#2082 - Oracle PIVOT expression doesn't bind any variables of a derived table - being pivoted -#2085 - java.lang.NoSuchMethodError: org.apache.log4j.Logger.isTraceEnabled()Z - when logger dependency is missing -#2086 - SQL syntax error when aliasing outcome of a relational division -#2091 - CUBRID doesn't really have a NVARCHAR data type -#2098 - NullPointerException when org.jooq.impl.EnumConverter converts null -#2104 - SQLite code generation treats multi-column primary keys like multiple - single-column unique keys -#2108 - SQLite returns NULL for val(new Date(0)).add(-1) and some other date - time arithmetic expressions -#2128 - Misleading Javadoc in Factory / Executor.selectCount() -#2137 - Failure to assign a value to a record pojo for a column with a - composite type when using select into. -#2139 - batchStore with Postgres composite types incorrectly reuses values from - the first record. -#2140 - No table java mapping generated using maven plugin - missing inputSchema - in postgres -#2143 - UnsupportedOperationException when binding UDTRecord in batchStore() for - Oracle -#2144 - Improve AbstractField.equals() and AbstractTable.equals() and similar, - as these two are called very often -#2145 - Improve QueryPartList.removeNulls() as this is called very often -#2154 - Generated Records should access values by index, not by field, for - performance reasons -#2165 - Add H2 database definitions to the jOOQ-scala module (to prevent - compilation errors) -#2167 - Convert.convert("xx", boolean.class) returns null, instead of false -#2178 - Improve FieldList. Avoid creating excessive array lists, where simple - (immutable) Field[] are sufficient -#2180 - Optimise DAOImpl by using the new ReflectionMapper instead of calling - Record.into() all the time -#2187 - Change all Javadoc

    tags to

    (To fix Java 7 standard Javadoc - style layout issues) -#2210 - Executor.fetchFromCSV() shouldn't mark resulting records as "changed" -#2215 - Improve example in the "jOOQ for CRUD" section. Use only columns from - the sample database -#2223 - SQL injection is possible in org.jooq.impl.Val, if client code doesn't - correctly enforce generic typesafety, and bind variables are inlined -#2227 - Field.in(T...) doesn't convert argument values to the Field's type - -Version 2.6.0 - October 26, 2012 -================================================================================ - -This release has a new main feature: the type-safe support for row value -expressions also known as tuples - up to a degree of 8. The API is formed in a -similar way as pre-existing tuple support in languages like C# or Scala. - -jOOQ's Scala integration has also been improved through the new jOOQ-Scala -module, which provides some useful implicit defs for operator overloading. -Future versions of jOOQ-Scala may experiment with Scala 2.10's Macros - -This release also ships with a lot of new deprecation to help you prepare for -the upcoming major release. - -Minor feature improvements include: - -- Lots of new fetchGroups() and intoGroups() methods, thanks to Ivan Dugic -- JDBC execution control support, such as cancel(), maxRows(), queryTimeout() -- Allowing for re-using JDBC PreparedStatement between Query executions -- Support for the SQL standard OVERLAPS predicate -- A new RecordMapper, similar to the existing RecordHandler - -Features and improvements -------------------------- -#385 - Allow for keeping open statements in a Query -#600 - Add support for Oracle / SQL Standard linear regression functions -#1058 - Add Factory.row(T1, T2, .. TN) and Factory.row( - Field, Field ... Field) to allow for creating tuples / rows -#1077 - Add support for the SQL standard OVERLAPS predicate -#1245 - Improve formatting for DECIMAL data types in Result.format(). Nicely - align the decimal point and reserve space on both sides -#1484 - Let XJC-generated artefacts implement Cloneable -#1527 - Support for converting String to java.net.URL, java.net.URI, and - java.io.File -#1674 - Export data types with Result.formatXML() and Result.formatJSON() - exports -#1679 - Add Factory.table(String, QueryPart...) -#1708 - Add Map> ResultQuery.fetchGroups(Field, Class) -#1709 - Add Map> ResultQuery.fetchGroups(Field[]) -#1710 - Add Map> - ResultQuery.fetchGroups(Field[], Class) -#1719 - Make logic from ResultQuery.fetchArray() available in Result.intoArray() -#1728 - Add support for the MySQL COUNT(DISTINCT expr, expr...) aggregate - function syntax -#1744 - Add support for the CUBRID DECR() function -#1756 - Add RecordMapper, similar to RecordHandler, mapping records to - custom types -#1762 - Add package-info.java to add Javadoc documentation to all packages -#1766 - Simulate row comparisons where they are not supported -#1773 - Add a new jOOQ-Scala project and jooq-scala artefactId, to contain jOOQ - extensions in the Scala language -#1782 - Move JAXB bindings out of XSD, in order to support more advanced - bindings -#1783 - Generate @SuppressWarnings("all") in jOOQ-generated artefacts -#1784 - Enhance the BETWEEN predicate, introducing the AND keyword -#1810 - Add Map ResultQuery.fetchMap(Field, Class) and - Result.intoMap(Field, Class) -#1816 - Add support for materialized views in Oracle's code generator -#1828 - Reduce log level for Factory deserialisation to TRACE -#1837 - Add support for @java.beans.ConstructorProperties when fetching into - immutable POJOs -#1841 - Add SortField Field.sort(SortOrder) to allow for dynamic sorting -#1842 - Add Condition Field.compare(Comparator, Field) to allow for dynamic - comparisons -#1844 - Add Table Table.join(TableLike, JoinType) to allow for - dynamic joining -#1845 - Add Factory.schemaByName(String) for plain SQL schemata -#1848 - Add Record.changed() to indicate whether a Record contains "dirty" - values -#1849 - Add Record.original() to obtain the originally fetched values from a - Record -#1854 - Add ResultQuery.maxRows(int) to limit the number of actually fetched - records -#1855 - Add Query.cancel() to support for interrupting statements prematurely -#1856 - Add Query.queryTimeout(int) to support for JDBC's - Statement.setQueryTimeout() - -API changes (backwards-compatible) ----------------------------------- -#1800 - Deprecate AliasProvider -#1807 - Result.intoArray() declares "throws MappingException", which isn't true -#1839 - Deprecate the various Result.getValuesAs[Type] and - Record.getValueAs[Type] methods -#1840 - Deprecate org.jooq.Store -#1866 - Deprecate [Schema-Name]Factory, remove reference to it from the - tutorials -#1869 - Deprecate org.jooq.NamedQueryPart -#1870 - Deprecate org.jooq.NamedTypeProviderQueryPart -#1872 - Improve jOOQ's RenderContext pretty printing behaviour -#1881 - Deprecate ConditionProvider, OrderProvider, LockProvider types - -Bug fixes ---------- -#1593 - Factory.field("{1} + {0} + {0}", val(1), val(2)) doesn't work. Cannot - re-use / re-order placeholders -#1720 - Improve performance by using Record.getValue(int) instead of - Record.getValue(Field) internally, where more than one value is - retrieved from a record -#1751 - Result.intoResultSet() generates wrong ResultSetMetaData if runtime - schema mapping is applied -#1764 - Add missing @Support({ ... FIREBIRD ... }) annotations -#1768 - NullPointerException when DAO.fetchOne() returns no record -#1774 - QueryPart.toString() does not load default settings from classpath -#1786 - Fix SEQUENCE support for Firebird -#1791 - Log a table's input/output names, and PK name when generating code -#1792 - Factory.fieldByName() and tableByName() do not correctly escape quotes -#1797 - SQL syntax errors when plain SQL contains comments with question marks - and SQL is executed as StatementType.STATIC_STATEMENT -#1802 - Result.into(Table) doesn't work correctly, if the same field name - appears twice in Result -#1806 - Let Record.toString() wrap the record in a temporary Result and call - Result.toString() instead -#1819 - MappingException in Record.into(Class), when POJO setters have - applicable names but non-applicable argument types -#1820 - Cannot fetch into non-public POJO classes. Their members / getters / - setters should be made accessible -#1829 - Factory.execute(String) may cause errors when plain SQL returns results -#1830 - Allow for passing null or empty arrays to intoMap(Field[]) and - intoGroups(Field[]) -#1850 - Record.equals() returns true as soon as both records hold a "null" value - for a given field -#1860 - Bad Results returned from plain SQL "select *" queries, if several - selected columns share the same name -#1876 - NULL constraint violation when storing a copied record - -Version 2.5.0 - August 26, 2012 -================================================================================ - -Welcome to another great database integration in jOOQ: Firebird! This is one of -the more popular open source SQL databases out there, with a rich feature set, -including the SQL standard MERGE statement. - -Apart from this, the main new features are: - -- Optimistic locking. jOOQ's UpdatableRecord API transparently implements - optimistic locking on its store() and delete() methods. By default, the - in-memory record is compared with the one in the database at write time. But - you can also let jOOQ handle incremented VERSION or TIMESTAMP columns for you. -- Oracle feature increment. Many nice Oracle features are now supported: - user-defined aggregates, regular expressions, Oracle Text, CONNECT_BY_ROOT and - ORDER SIBLINGS BY clausess, partitioned outer joins and more -- jOOQ's convenience API has been greatly enhanced. This includes many improved - fetch methods and new short forms for equal=eq, notEqual=ne, greaterThan=gt, - etc. to better align jOOQ with JPA, XSL, QueryDSL and many other tools that - abbreviate these keywords -- Many types and methods have been deprecated to help you foresee the upcoming - changes in jOOQ 3.0 - -Please consider also the updated manual with its new, more user-friendly -structure - -Features and improvements -------------------------- -#430 - Add support for the Firebird database -#457 - Add support for Oracle user-defined AGGREGATE functions -#620 - Add support for the SQL:2008 standard LIKE_REGEX operator -#722 - Remove casting of bind values in Ingres -#727 - Simulate RPAD and LPAD in SQLite -#816 - Add support for Oracle Text functions -#1339 - Add option to generate immutable pojos -#1547 - Support "optimistic locking" in UpdatableRecord.store() and delete() -#1552 - Generate fetchBy[ColumnName] methods in generated DAO classes -#1553 - Add some Javadoc to document the difference between using a Factory with - a Connection or with a DataSource -#1556 - Add javax.validation API to full deliverable -#1565 - Add Factory.connectByRoot(Field) to support the Oracle - CONNECT_BY_ROOT pseudo column -#1570 - Add Factory.condition(String, QueryPart...) similar to - Factory.field(String, QueryPart...) -#1582 - Add support for Oracle's ORDER SIBLINGS BY clause, in combination with - CONNECT BY -#1586 - Add missing constructors taking DataSource to dialect-specific factories -#1587 - Generate missing constructors taking DataSource in schema-specific - factories -#1595 - Simulate REPEAT() in SQLite -#1596 - Add support for optimistic locking using generated information about - "timestamp" or "version" columns -#1627 - Handle NULL in CSV imports/exports -#1645 - Add support for Oracle's PARTITION BY clause in OUTER JOINs -#1657 - Reorganise the manual -#1664 - By default, activate in the code generator -#1665 - Add support for the empty GROUP BY () clause -#1675 - Add support for the SQL standard IS [NOT] DISTINCT FROM predicate -#1680 - Overload all plain SQL DSL methods to also accept QueryPart arguments -#1681 - Simulate empty GROUP BY () clause in Sybase ASE and Ingres, joining a - dummy table and grouping by a constant field -#1684 - Add Setting to indicate that fetched records shouldn't - be automatically "attached" -#1685 - Improve Javadoc of Attachable.attach(). Document how "detaching" works -#1688 - Add E Record.into(E) as a complement to E Record.into(Class) -#1692 - Replace Factory.executeInsert(), Factory.executeUpdate() and similar - methods with more succinct variants -#1696 - Add short versions of comparison predicate methods, such as eq, ne, gt, - ge, lt, le -#1698 - Add support for the SQL standard BETWEEN SYMMETRIC predicate -#1701 - Add Factory.not(Condition) as a synonym for Condition.not() -#1704 - Document the behaviour of Factory.newRecord(Table, Object) and - Record.from(Object) with respect to UpdatableRecord.store() -#1707 - Add Map> ResultQuery.fetchGroups(Field) and - Result.intoGroups(Field) -#1712 - Add > Result.sortAsc .sortDesc(Field) -#1713 - Add Result.sortAsc, .sortDesc(Field, Comparator) -#1714 - Add Result.sortAsc, .sortDesc(Comparator) -#1718 - Document usage of InvalidResultException on the ResultQuery.fetchXXX() - Javadocs -#1721 - Add Map> ResultQuery.fetchGroups(Field, Field) - and Result.intoGroups(Field, Field) -#1722 - ResultQuery.fetchArray(int) and .fetchArray(String) should return a - typed array, even if this cannot be checked by the compiler -#1723 - Add Factory.fetchLazy(ResultSet) - -API changes (backwards-compatible) ----------------------------------- -#1544 - Remove Attachable interface from QueryPart hierarchy -#1579 - Deprecate org.jooq.Type -#1580 - Deprecate org.jooq.SchemaProvider -#1638 - Deprecate org.jooq.ArrayRecord.createArray() -#1639 - Deprecate org.jooq.Adapter -#1687 - Let Cursor.fetchInto(Table) return Result instead of List -#1736 - Deprecate TableRecord.{store|refresh|delete}Using() methods as being - part of jOOQ's internal API -#1741 - Deprecate org.jooq.MasterDataType - -Bug fixes ---------- -#1572 - Use Thread.currentThread().getContextClassLoader() to load - ExecuteListener classes as a workaround for experienced class loading - problems when using OSGi -#1584 - Code generation error with Oracle UDT static functions -#1632 - Improve the performance of various DefaultRenderContext methods, by - locally caching Settings values -#1633 - Improve the performance of CursorImpl.CursorIterator by setting Record - values by index rather than by Field -#1635 - Improve the performance of Factory.fetch(ResultSet) by caching data type - normalisation regex in FieldTypeHelper -#1650 - jOOR Fix #16: Can't call Reflect.create(A, B, null) -#1660 - Factory.renderContext().castMode(CastMode.NEVER).render(query) doesn't - work. CastMode is not applied -#1667 - Bad variable binding when NULLS FIRST, NULLS LAST is simulated in SQL - Server and other databases -#1673 - Result.formatXML() and Result.intoXML() do not render namespaces - correctly -#1683 - Oracle code generation regression for 10g. No such column - ALL_PROCEDURES.OBJECT_ID -#1693 - Cannot bind UDT values from other schemata to stored procedures -#1730 - Compilation errors in SQLite generated code when flag - is set to true - -Version 2.4.0 - July 8, 2012 -================================================================================ - -This release's main new feature is jOOQ's added convenience in -Factory initialisation for those users who get their database -connectivity through JDBC DataSources. If supplied with a -DataSource, a jOOQ Factory will handle the Connection lifecycle -internally, closing the Connection when no longer needed. - -The H2 MERGE statement syntax is now supported and simulated in -other databases, for those users that prefer its more intuitive -syntax over the SQL standard. - -The code generator now also allows for generating interfaces and -DAOs per table. DAO generation was previous discussed on the user -group and seen in a competitor product called OneWebSQL. - -The jOOQ Console now supports breakpoints for even more effective -SQL development - -Features and improvements -------------------------- -#1141 - Add Result.intoResultSet() to wrap a Result in a JDBC - ResultSet -#1253 - Avoid JDBC escape syntax for date/time literals -#1280 - Generate DAO classes and interfaces for POJOs -#1404 - Document the lifecycle of an ExecuteListener in the - Javadoc -#1411 - Add support for Postgres "any" data type (with quotes!). - This seems to map well to java.lang.Object -#1418 - Support case-insensitive schema names in code generation -#1419 - Add some WARN-level logging when the source-code - generator doesn't generate any artefacts -#1423 - Add Field.likeIgnoreCase() to support Postgres' ILIKE - operator -#1424 - Add Factory(DataSource) and similar constructors -#1427 - Add Factory.batchStore(Collection>) for convenience -#1428 - Add DataType.convert(Object...) and - DataType.convert(Collection) for convenience -#1431 - Add org.jooq.Name Factory.name(String) to contruct - QueryParts that are escaped according to - Settings.getRenderNameStyle() -#1432 - Add Factory.fetch(String, QueryPart...) and - Factory.execute(String, QueryPart...) and similar methods - to support arbitrary QueryParts in plain SQL -#1434 - Add UniqueKeyDefinition.isPrimaryKey() for completeness -#1438 - Add Result Factory.fetchFromCSV(String) -#1440 - Add top-level pom.xml for jooq-parent artefact (GitHub - Issue #14) -#1446 - Converting arbitrary strings to Number / Date should - return null, instead of throwing an exception -#1449 - Generate some meaningful Javadoc into the generated - [schema-name]Factory classes -#1454 - Add line breaks to generated Javadoc where appropriate -#1463 - Add option to let generated Record / POJO objects - implement a common generated interface -#1470 - Support interface types in ResultQuery.fetchInto(Class), - Result.into(Class), and Record.into(Class) methods, - returning a proxy -#1471 - Upgrade internal jOOR dependency to jOOR 0.9.4 -#1473 - Add IdentityDefinition to jooq-meta -#1501 - Add support for conversion of String to - java.sql.{Date, Time, Timestamp}. GitHub issue #22 -#1504 - Document behaviour of fetch() and fetchOne() in case jOOQ - cannot fetch actual records -#1509 - Minor improvements in the generator source code. GitHub - pull request #23 -#1510 - Generate additional setters for foreign keys, accepting - records as arguments -#1521 - Expose Connection methods, such as commit(), rollback() - and similar transaction-related methods in Factory -#1523 - Support ROW_NUMBER() OVER() for the latest version of - Derby and H2, which support it -#1524 - Simulate ROW_NUMBER() OVER() in HSQLDB using ROWNUM() -#1528 - Let generated interfaces extend Serializable -#1532 - Clarify the lifecycle of Configuration.data in the - Javadoc -#1534 - Generate more meaningful Javadoc where "an uncommented - item" stands now -#1536 - Add documentation to the FOR UPDATE OF clause, indicating - that DB2 may have stricter requirements regarding - updatability of fields -#1541 - Add support for the H2 MERGE syntax - GitHub Issue #18 -#1542 - Simulate the H2 MERGE syntax in other dialects supporting - the SQL standard MERGE statement - GitHub Issue #18 -#1545 - Website and Documentation anchors should be links to - themselves, visually recognisable - -Features and improvements (jOOQ Console) ----------------------------------------- -#1398 - Allow for adding breakpoints in jOOQ Console - -API changes (backwards-compatible) ----------------------------------- -#1408 - Relax bounds of in Factory.truncate() to Record, - instead of TableRecord -#1429 - Change Convert.convert(List, XXX) to accept Collection - instead of List - -Bug fixes ---------- -#1020 - Improve Oracle's LIMIT .. OFFSET clause simulation. - GitHub Issue #16 -#1358 - Compilation errors in generated source code when Oracle - overloaded procedures collide with procedures that end - with numbers -#1437 - Error in Javadoc of FactoryOperations.fetchOne(). This - method may return null -#1441 - Performance issue with AbstractDataType.convert(Object). - Avoid conversions when they're obviously unneeded -#1448 - Handle String to Enum conversion (when Java Enums are - stored as Strings in the database) - GitHub issue #15 -#1459 - Generated Keys.java static class too large (static - initialiser can become bigger than 64kb) -#1460 - Table.getReferencesTo(Table) doesn't work correctly for - aliased tables -#1461 - Exception when rendering of {fn datetimeadd(...)} for - HSQLDB and Derby -#1462 - Document missing GeneratorStrategy features, such as - getJavaClassImplements() -#1465 - Custom generator strategy's printImplements() is called - with Mode == RECORD for tables -#1478 - Caching SQLDialect in AbstractDatabase heavily improves - code generation performance -#1483 - Inefficient cloning of default settings using JAXB - unmarshalling leads to non-negligible overall overhead. - Use serialisation instead (short of a useful XJC clone - plugin) -#1489 - Fix manual where it claims to throw SQLExceptions -#1490 - Compilation error when a SQL Server stored procedure has - a parameter named "value" -#1493 - Bad syntax for SELECT /*+hint*/ DISTINCT ... in Oracle -#1498 - jOOQ does not compile using JDK 7 / JDBC 4.1. GitHub - Issue #24 -#1499 - Generated members of Tables.java are not final -#1505 - Bad exception message when ON DUPLICATE KEY IGNORE cannot - be simulated -#1515 - Splitting of large NOT IN conditions is wrong. The parts - should be connected with AND, not with OR -#1522 - fetch().into(Table) doesn't initialise records correctly, - such that subsequent calls to store() will execute an - INSERT, rather than an UPDATE -#1525 - Generate missing Javadoc to getters for procedure OUT - parameters -#1529 - Factory.batchStore() logs all single statements to DEBUG - output. Find a more accurate log output -#1537 - Factory.batchStore() renders bad SQL for Postgres. The - RETURNING clause is not allowed in batch INSERTs - -Version 2.3.1 - May 11, 2012 -================================================================================ -This is an important patch release fixing some regressions in the -code generator for the Postgres dialect. With 2.3.0, it was no -longer possible to generate schemata of which the database user -was not the owner. - -Bug fixes ---------- -#1334 - Fix inaccurate simulation of TRUNC(number, decimals) for - Derby -#1403 - Documentation bug: ctx.statement() can be replaced in - executeStart(). This is not documented -#1406 - Compilation errors in generated source code when Postgres - stored procedure parameter is called "NAME" -#1407 - Compilation errors in generated source code when Postgres - data-type is "any" (with quotes!) -#1409 - Postgres code generation broken when not connecting with - the owner of a schema - -Version 2.3.0 - May 6, 2012 -================================================================================ - -This is a minor feature increment release, featuring many useful -API enhancements, some new functions, some new syntax support -elements, improved source code generation and a lot of -improvements on the jOOQ Console, thanks to Christopher Deckers. - -The updated jOOQ Console now allows for filtering incoming -statements directly on the server side, using regular expression -filters on statement text and other features. These improvements -are a part of a general strategy to introduce breakpoints and -more sophisticated debugging capability to the jOOQ Console. - -Features and improvements -------------------------- -#597 - Add support for Oracle KEEP (DENSE_RANK FIRST...) - aggregate function clause -#910 - Add ExecuteListener extension to allow for overriding - exception translator to handle vendor-specific error - codes -#1286 - Add "renderSchema" flag to Settings, to completely - disable rendering of schema names -#1293 - Generate setter methods for JAXB annotated configuration - properties -#1295 - Add support for MySQL's INSERT IGNORE clause -#1296 - Simulate the FOR UPDATE clause for SQL Server, CUBRID, - using JDBC's ResultSet.CONCUR_UPDATABLE -#1302 - Add Factory.inline() to allow for flagging inline-only - "bind values" -#1303 - Add connection-less Factory constructors for convenience, - when jOOQ is only used as a SQL query builder -#1304 - Add option to generate JSR-303 @NotNull and @Size - annotations to generated POJO's -#1307 - Let HSQLDB dialect render NVL2() as NVL2() instead of - CASE expression -#1312 - Allow for omitting , and generate all - available schemata in that case -#1315 - Let generated factories use their associated Schema as - the Settings' RenderMapping's defaultSchema -#1319 - Move jooq-spring's FactoryProxy to the core jooq project -#1322 - Add Factory.dateAdd() and timestampAdd() for convenience -#1327 - Add DataType.isLob() -#1328 - Add Field inline(char), inline(Character), - inline(CharSequence) for convenience -#1333 - Add support for the Oracle TRUNC function, for numeric - arithmetic -#1336 - Let Record.into(Class) and similar methods accept - "immutable" classes, i.e. setter-less classes that take - several constructor arguments -#1340 - Use Constructor.setAccessible(true), if no default - constructor is available on the target type of - Record.into(Class) -#1342 - Improve Javadoc on Factory.function(). Document arguments -#1349 - Add support for the CUBRID Click-Counter INCR() -#1352 - Allow for creating syntax-error and SQL-injection safe - qualifiers for org.jooq.Field and org.jooq.Table -#1361 - Add Factory.batchStore(TableRecord...), to allow for - batch UPDATE/INSERTs of many records -#1367 - Make configured ExecuteListeners default constructors - accessible -#1366 - Let org.jooq.Batch extend Serializable -#1378 - Upgrade internal jOOR dependency to jOOR 0.9.3 -#1379 - Upgrade internal jOOU dependency to jOOU 0.9.1 -#1390 - Add RenderContext.qualify() to indicate whether - QueryParts should render qualified versions of themselves - or not - -Features and improvements (jOOQ Console) ----------------------------------------- -#1242 - Upgrade jOOQ Console dependency on RSyntaxTextArea from - 1.5 to 2.0.2 -#1249 - Allow for filtering incoming statements in jOOQ Console -#1393 - Implement a communication protocol between Console server - types and Console client types to allow for more - sophisticated functionality - -API changes (backwards-compatible) ----------------------------------- -#1310 - Deprecate Factory.literal() in favor of Factory.inline(), - and Factory.field() -#1368 - Promote AbstractQuery.isExecutable() to the public API - -Bug fixes ---------- -#989 - INSERT and UPDATE statements always render non-qualified, - escaped field names. This may cause trouble when using - plain SQL fields -#1109 - Standalone TABLE or VARRAY types are not correctly - initialised before referencing tables load them -#1279 - NullPointerException when leaving empty -#1283 - The LIKE escape character needs escaping, too, in - contains(), startsWith(), endsWith() -#1306 - Add missing INTERVAL data types to HSQLDBDataType -#1308 - Oracle's DataTypeDefinition reports the length of a BLOB - / CLOB data type to be 4000 -#1313 - and match only table names, not - fully qualified names -#1323 - Add support for byte[] in Postgres UDTs -#1324 - Code generation error in Oracle 10g when generating - stored procedures -#1326 - Error when deserialising BLOBs from Oracle UDTs -#1329 - NullPointerException when passing null to - timestampDiff(Field, Field) -#1343 - Regression in insertInto(...).values(...). Cannot pass - Field to values() -#1344 - Initialise Result ArrayLists to their expected size, if - that size is known. -#1360 - jOOR issue 12: "Don't reset the accessible flag to false, - if setting it to true is required, to avoid race - conditions in concurrency contexts" -#1371 - Missing conversion when using unsafe Field types in - BATCH statements -#1376 - Oracle UDTs in REF CURSORs are not deserialised correctly - from procedure OUT parameters -#1377 - Oracle UDTs are not deserialised correctly when the same - UDT name is present in multiple schemata -#1394 - NullPointerException when omitting element in - code generation configuration - -Version 2.2.1 - April 12, 2012 -================================================================================ - -This is a minor patch release, fixing some issues related to the -code generation of the new CUBRID integration as well as other, -minor issues. Upgrade if you're using CUBRID - -Bug fixes ---------- -#1287 - Remove oracle.sql dependency also from OSGi information - in pom.xml -#1288 - SQL syntax errors from sequences when using RenderMapping - with defaultSchema -#1289 - DefaultBindContext logs as Util.class -#1297 - Compilation error in CUBRID generated artefacts - referencing OBJECT types -#1298 - Avoid source code generation errors when generating code - for unknown, dialect-specific data types - -Version 2.2.0 - April 09, 2012 -================================================================================ - -Finally, jOOQ has added support for another database, and a very -promising one, that is. http://www.cubrid.org is a surprisingly -original mixture of a relational and object-oriented database -where tables and classes are synonyms, so are records and -instances. The CUBRID database has a high level of compatibility -with MySQL and is aimed at MySQL users wanting more performance -for their web applications. For details, see the slides here: - -http://www.slideshare.net/cubrid/growing-in-the-wild-the-story-by-cubrid-database-developers - -jOOQ is proud to have become a CUBRID partner, looking forward -to further cooperation with CUBRID in the near future. - -Apart from that, jOOQ now fully supports SQL standard INTERVAL -data types. With JDBC and JPA lacking official support for this, -jOOQ aims for becoming the tool of choice for vendor-specific -date time arithmetic. True INTERVAL data type support is given in -HSQLDB, Ingres, Oracle, Postgres databases. Besides that, CUBRID -and MySQL support INTERVAL data type arguments in functions. In -other dialects, jOOQ simulates DATEADD(), TIMESTAMPADD(), -DATEDIFF(), TIMESTAMPDIFF(). - -For jOOQ's OLAP friends, there is now also support for the Oracle -LISTAGG function (LIST() in Sybase, XMLAGG() in DB2, STRING_AGG() -in Postgres, GROUP_CONCAT() in CUBRID, H2, HSQLDB, MySQL). -LISTAGG is an "ordered aggregate function", meaning that the -aggregation is done using a specific ordering. Keep an eye out -for more such function support in future versions. - -Features and improvements -------------------------- -#566 - Add support for INTERVAL data types -#585 - Add support for DATE, TIME and INTERVAL arithmetic -#1183 - Add support for DEFAULT values in Oracle stored procedure - parameters -#1243 - Let generated POJOs (and Records) extend base classes - and implement interfaces -#1252 - Avoid JDBC escape syntax for Oracle stored procedure - calls. Generate PL/SQL syntax, instead -#1255 - Let generated Tables contain a public default constructor - to be able to extend those classes - Github issue #12 -#1257 - Add CUBRID support -#1268 - Add Factory.field(String, QueryPart...) to generate - custom clauses -#1269 - Add YEAR(), MONTH(), DAY(), HOUR(), MINUTE(), SECOND() - function support as shortcuts for EXTRACT() -#1273 - Simulate GROUP_CONCAT() aggregate function using Oracle's - LISTAGG() function, where available -#1274 - Add support for the Oracle LISTAGG(...) WITHIN GROUP - (ORDER BY ..) [ OVER (..) ] aggregate / analytic function -#1275 - Simulate Sybase LIST() aggregate function using Oracle's - LISTAGG() function -#1276 - Simulate Oracle's LISTAGG() in DB2 using XMLAGG(), - SUBSTR() and CONCAT() -#1278 - DEBUG log both executed SQL and SQL with inlined bind - values - -API changes (backwards-compatible) ----------------------------------- -#1262 - Pull up OracleFactory.prior() and other CONNECT BY - related methods to Factory - -Bug fixes ---------- -#1241 - Wrong variable binding when comparing CHAR columns in - Derby and DB2 without explicit casting to VARCHAR -#1244 - Cannot override class name in GeneratorStrategy in - Mode.POJO -#1248 - Setting both false and - true leads to compilation errors -#1256 - Fixed code generation issue with H2 user defined - functions returning VARCHAR -#1263 - Pass fetchsizes <= 0 to the JDBC driver (for vendor- - specific MySQL compatibility) -#1270 - Most databases allow for multiple identical foreign keys. - This leads to compilation errors in generated source code - -Version 2.1.0 - March 18, 2012 -================================================================================ - -With this version, jOOQ attempts to follow versioning rules -imposed by semantic versioning: http://semver.org/ -There will be 1 minor release per month, and a couple of patch -releases per year, depending on popular demand - -The main improvements for this release include - -- The possibility of providing jOOQ with a custom type mapping. - You can now define your own Converter types that are used by - jOOQ to map a database's SQLDataTypes to your custom types. - This is particularly useful for Java's enums. Read more about - custom converters in the manual: - http://www.jooq.org/manual/ADVANCED/CustomTypes/ - -- There are a lot of new runtime configuration options to control - the SQL style of SQL rendered by jOOQ. You can now specify - whether table/column names should be quoted / capitalised / - lower-cased, whether SQL keywords should be capitalised or not, - etc... - -- The handling of NULL has been improved in favour of using jOOQ - as a SQL builder library (e.g. along with Spring for execution) - NULL is no longer inlined, but bound as a variable. - -- jOOQ now supports simulation of the relational division - operation using an intuitive syntax. Read more about the - relational division here: - http://en.wikipedia.org/wiki/Relational_algebra#Division - -Features and improvements -------------------------- -#161 - Add runtime configuration to pretty print rendered SQL -#349 - Add SQLite relations support -#491 - Add runtime configuration for SQL keyword style (upper - case, lower case) -#521 - Add runtime configuration for SQL reference style (upper - case, lower case, as-is, quoted) -#1150 - Add code generation option to disable generation of - records -#1181 - Add support for SQL Server data types timestamp and - rowversion -#1188 - Load default Settings from the classpath at - /jooq-settings.xml, or from -Dorg.jooq.settings -#1193 - Specify main-class in jOOQ Console's manifest.mf and - include dependency in jar file -#1194 - Add ColumnDefinition.isNullable() -#1202 - Add support for the relational division operation: - A.divideBy(B).on(A.ID.equal(B.A_ID)).returning(A.X, ...) -#1207 - Add Factory.batch(Collection) for - convenience -#1208 - Render @javax.persistence.Column(nullable = false) - property, if available -#1209 - Render @javax.persistence.Column(length, precision, - scale) properties, if available -#1215 - Add org.jooq.Converter for custom type mapping -#1216 - Overload Record, Result.getValue() and .setValue() - methods to accept a Converter -#1217 - Add EnumConverter as a base type for custom enum - converters -#1218 - Add code generation options to generate - referencing a Java type and a Converter -#1224 - Add DataTypeDefinition.getLength() to jooq-meta's type - system -#1233 - Support custom JDBC properties for jooq-codegen -#1234 - Add Database.getTable(SchemaDefinition, String, boolean) - to fetch tables case-insensitively -#1239 - Add Factory.fetchLazy(String, Object...) - -API changes (backwards-compatible) ----------------------------------- -#1191 - Deprecate ConfigurationRegistry and replace by equivalent - ExecuteListener feature -#1219 - API Bug: Cannot use LIMIT .. OFFSET along with FOR UPDATE - -Bug fixes ---------- -#625 - Remove dependency from generated Routines to the - generator's SQLDialect -#1128 - NULL is inlined in INSERT statement instead of binding it - as a variable. This can cause issues when using jOOQ with - Spring -#1137 - Exclude MySQL column-level enum types when that column is - overridden by a -#1158 - Derby cannot handle inlined NULL literals in some - contexts -#1180 - Execute BatchMultiple (multi-query batch query), when - executing BatchSimple (single-query, multi-bind-value - query) with StatementType == STATIC_STATEMENT -#1189 - TableMapping regression for SQLite database -#1190 - Cannot store SQLite records when using - StatementType.STATIC_STATEMENT -#1199 - Table.getFields() returns an internal representation of a - table's field list. Make generated tables immutable! -#1200 - Internal API leak exposed through covariance in - AbstractType.getFields() -#1211 - Enforce method name disambiguation also when using custom - strategies in jooq-codegen -#1212 - Enforce identifier disambiguation also when using custom - strategies in jooq-codegen -#1221 - Incorrect ExecuteListener invocation for INSERT .. - RETURNING. executeStart() and executeEnd() are omitted -#1223 - Cache ExecuteListener classes for performance -#1225 - Bind NULL byte[] as java.sql.Types.BINARY instead of - BLOB in Postgres, to avoid errors -#1226 - Bind NULL UDTs with their associated type name in Oracle -#1232 - SQLException when Factory.fetch() does not return a - ResultSet -#1237 - Don't generate enum classes for columns in MySQL tables - that are excluded from code generation - -Version 2.0.5 - February 26, 2012 -================================================================================ - -This release finally introduced basic runtime configuration -features for the jOOQ Factory. This configuration now includes: - -- Execute listener and SQL tracing support. jOOQ allows you to - hook your own listeners into jOOQ's query execution engine to - be notified of all sorts of events -- The existing SchemaMapping features. They are now part of the - runtime configuration -- StatementType settings. Specify whether a Factory should - execute java.sql.PreparedStatements (with bind variables) or - static java.sql.Statements with inlined variables. - -The runtime configuration is documented here: - -http://www.jooq.org/manual/JOOQ/Factory/ - -The listener and tracing support has been requested by -Christopher Deckers, a new jOOQ user who has had the courtesy to -contribute the new jOOQ Console, which is documented here: - -http://www.jooq.org/manual/ADVANCED/ExecuteListener/ - -Apart from that, another long-requested feature is now fully -implemented: The GeneratorStrategy, allowing for custom naming -strategies in generated source code. This will allow for -generating custom table / record class name prefixes / suffixes, -as well as overriding the default behaviour for rendering UPPER, -lower and CamelCase artefacts. See the manual for details: - -http://www.jooq.org/manual/META/Configuration/ - -Features and improvements -------------------------- -#93 - Add Field.equalIgnoreCase(), Field.notEqualIgnoreCase() -#408 - Add class prefixes, suffixes and other options to the - code generator -#492 - Add runtime configuration -#1107 - Let Field.contains() support the Postgres ARRAY @> ARRAY - operator -#1140 - Add ResultQuery.fetchResultSet() to return the underlying - JDBC result set -#1143 - Add Result.isNotEmpty() for convenience -#1145 - Add runtime configuration to specify whether jOOQ should - execute java.sql.PreparedStatement (with bind variables) - or a java.sql.Statement (with inlined parameters) -#1146 - Add Query.getSQL(boolean) to indicate that bind values - should be inlined (as a convenience for - Factory.renderInlined(QueryPart)) -#1148 - Add Cursor.resultSet() to expose the underlying ResultSet -#1149 - Allow for optional - "http://www.jooq.org/xsd/jooq-codegen-2.0.4.xsd" - namespace in jooq-codegen configuration -#1152 - Add & org.jooq.EnumType> - E MySQLFactory.enumType(Class, int) for enum reverse - lookups of MySQL-specific enums -#1159 - Support matching numbers with LIKE, e.g. ID LIKE '%33%' -#1160 - Implement Field.contains(), .startsWith(), .endsWith() - for numeric values, too -#1161 - Use reflection to remove compile-time dependency on - ojdbc for creating ARRAYs -#1162 - Integrate jOOR into jOOQ for simpler reflection -#1164 - Distinguish between Definition.getInputName(), - .getOutputName() -#1165 - Add constraint name to generated javadoc -#1167 - Trivial issue with org.jooq.Factory.exists Javadoc - - GitHub issue #10 -#1169 - Add Configuration.setData(), getData() to convey custom - data in a configuration's lifecycle -#1172 - Add runtime configuration to deactivate JooqLogger -#1177 - Add jOOQ-Console module to jOOQ -#1184 - Add DataType.isArray() - -API changes (backwards-compatible) ----------------------------------- -#1142 - Rename Result.exportXML() to Result.intoXML() to stay - more consistent -#1151 - Deprecate SchemaMapping in favour of new runtime - configuration - -Bug fixes ---------- -#978 - Schema.getTables() and similar methods return empty lists - when Schema is mapped with SchemaMapping -#1153 - Bad inlining of booleans in Sybase ASE / DB2 / Oracle - SQL Server / SQLite -#1154 - Bad inlining of byte[] in most dialects -#1155 - byte[] are erroneously converted to String when using - Record.intoArray() -#1156 - Bad inlining of DATE / TIME / TIMESTAMP data types in - Ingres (and other dialects, when the setting differs from - the default) -#1166 - Some generated Javadoc uses naming strategy or plain - output name, instead of qualified output name -#1168 - Oracle packages are generated as static, instead of - static final -#1175 - Factory.use() seems to render SQL with the Schema name - still present -#1179 - Oracle-generated ArrayRecords need a reference to - org.jooq.Schema to read TABLE of OBJECT from stored - procedures - -Test cases ----------- -#1147 - Add integration tests for executing SQL generated using - Factory.renderInlined() - -Version 2.0.4 - February 12, 2012 -================================================================================ - -This release introduced many improvements to source code -generation. These improvements include: - -- Maven and standalone code generation now use the same XML - configuration, which is read by jOOQ-codegen using JAXB. This - allows for more complex configuration elements in the future -- jOOQ-codegen can now handle multi-schema databases and generate - code for tables referencing tables from other schemata. This - is integration tested against the SQL Server AdventureWorks - database -- jOOQ now allows to generate simple POJOs in addition to Records - and to annotate both POJOs and Records with JPA annotations - such as @Entity, @Table, @Id, @Column, @UniqueConstraint, etc. - -You can migrate your existing .properties configuration by running -> org.jooq.util.GenerationTool /your.properties migrate - -Besides that, there is a lot of ongoing work to improve the -integration of Oracle's TABLE and VARRAY types. - -Features and improvements -------------------------- -#8 - Add JPA annotations to generated POJOs / Records -#282 - Add support for multi-schema databases -#287 - Add support for Oracle TABLE types -#395 - Use XML configuration file instead of properties file -#1089 - Add Field.contains(), .startsWith(), .endsWith() as a - convenience for Field.like() (including escaping) -#1092 - Move master data table configuration from - generator.generate to generator.database namespace -#1093 - Add support for generator.strategy in Maven source code - generation -#1094 - Add support for generator.database.date-as-timestamp in - Maven source code generation -#1095 - Move generator.generate.unsigned-types to - generator.database namespace -#1096 - Add support for generator.generate.unsigned-types in - Maven source code generation -#1103 - Add support for SQL Server data type uniqueidentifier -#1106 - Add Factory.escape(Field, char) for use with LIKE -#1108 - Add support for multi-schema databases using Maven code - generation -#1115 - Add support for Oracle VARRAY/TABLE of OBJECT types -#1127 - Add support for POJO classes generation -#1129 - Allow for using Param in LIMIT .. OFFSET clauses -#1132 - Add RenderContext.castMode() to allow for avoiding casts - where this is not really needed -#1136 - Add generation option to enable/disable generating - navigation methods - -Bug fixes ---------- -#1099 - Derby generated artefacts are not sorted alphabetically -#1101 - Internal API leak exposed through covariance in - AbstractTable.joinXXX() methods -#1110 - VARRAY element type information is lost when unnesting - VARRAY's in Oracle -#1111 - VARRAY element type information is lost when unnesting - VARRAY's returned from functions in Oracle -#1114 - Syntax error when unnesting TABLE of OBJECT in Oracle. - The unnested table contains several columns but jOOQ only - unnests "COLUMN_VALUE" -#1117 - NullPointerException when passing an ArrayRecord - containing a null array to a stored function in Oracle -#1125 - Postgres needs casting for date time data types in - queries like SELECT ? FROM DUAL -#1131 - DB2: [Noauthorized routine named "LIKE" of type - "FUNCTION" having compatible arguments was found] when - using Field.like(concat(x, y)) -#1133 - Compilation errors in generated source code if the same - constraint name exists in several schemata -#1134 - NullPointerException in code generation when a foreign - key constraint references a table from another schema - that is not being generated -#1135 - Generated Javadoc references inputSchema instead of - outputSchema - -Test cases ----------- -#1009 - Add more integration tests for proper handling of - java.sql.Date, Time, Timestamp -#1090 - Run jOOQ tests against AdventureWorks SQL Server sample - database -#1105 - Add integration tests for multi-schema source code - generation and querying -#1122 - The 10k lines of integration test code are too heavy for - the compiler. Create test modules with fewer lines of - code, each. - -Version 2.0.3 - January 29, 2012 -================================================================================ - -This release focuses on increased compatibility between various -SQL dialect integrations as far as ARRAY and JOIN support is -concerned: - -- ARRAY types are only available in H2, HSQLDB, Oracle, Postgres. - Nevertheless, they can be somewhat simulated in other dialects - using nested selects with UNION ALL. Increased compatibility - leads to a nicer API, where ARRAYs are used along with ALL/ANY - quantifiers, for instance. - -- JOIN syntaxes can be quite powerful in SQL. Apart from - simulating NATURAL JOIN, JOIN USING clauses, as well as a - synthetic "KEY JOIN" syntax, jOOQ now also supports nesting - JOIN expressions to create more complex table sources. See a - recent blog post on the subject here: - -http://blog.jooq.org/2012/01/15/lets-revise-the-sql-from-clause/ - -Features and improvements -------------------------- -#578 - Add KEY JOIN syntax to simulate joining using generated - foreign keys -#577 - Simulate NATURAL JOIN syntax, where this is unavailable -#582 - Simulate JOIN USING syntax, where this is unavailable -#671 - Allow for nesting JOIN clauses -#676 - Add Table.join() methods to create more flexible table - sources -#993 - Add Field.equalAny(T[]), .equalAny(Field) methods -#1048 - Simulate (array) syntax for dialects - that do not support arrays -#1051 - Add Factory.execute(String, Object...) as a convenience - method for Factory.query(...).execute() -#1055 - Simulate Factory.table(Object[]) and table(List) using - UNION ALL in dialects that do not support arrays -#1060 - Improve debug logging of H2 arrays. The syntax is not - ARRAY[1, 2], but (1, 2) -#1065 - Add OracleFactory.sysContext(String, String) to support - Oracle's SYS_CONTEXT function -#1069 - Add support for INSERT INTO table(field1, field2, ...) - SELECT syntax - as opposed to the existing INSERT INTO - table SELECT -#1072 - Add support for LIKE .. ESCAPE .. syntax -#1074 - Add Field.notBetween(T, T) for convenience -#1080 - Add support for JDBC's Statement.setFetchSize() in - ResultQuery.fetchLazy() -#1082 - Add some more DEBUG logging in AbstractResultQuery - -API changes (backwards-compatible) ----------------------------------- -#1059 - Change SelectFromStep.from(Collection>) to - from(Collection>) - -API changes (backwards-incompatible) ------------------------------------- -#1087 - Change the NTILE function to return Field - instead of Field - -Bug fixes ---------- -#1071 - Make Sequence Serializable -#1081 - Derby error in NULL handling when simulating unnested - arrays that contain NULL values -#1084 - Bind index mismatch in val(null).equal(null) and in - val(null).notEqual(null) -#1091 - Add missing @Support annotations on Table.crossJoin() - methods - -Test cases ----------- -#1026 - Add integration tests for NTILE window function and - document compatibility -#1073 - Add integration tests for NOT IN queries holding NULL - arguments - -Version 2.0.2 - January 8, 2012 -================================================================================ - -This is a maintenance release for jOOQ 2.0. The main improvements -include - -- The whole jOOQ API is now annotated with a new org.jooq.Support - annotation to help you assess whether a certain SQL clause is - available in your database or not. This is particularly useful - when your application should support several databases at once - (e.g. MySQL, Postgres, Oracle) -- The Oracle PIVOT clause is now formally supported for advanced - statistical queries in Oracle. This clause will be simulated in - other dialects in the future. -- The DATE data type can be mapped to TIMESTAMP. This important - when you query a legacy Oracle database, where DATE columns - can also contain time information -- Several convenience methods have been added for more fluent - syntax, when using plain SQL result queries, subqueries as - tables, or when unnesting arrays in ANY() and ALL() quantifiers - -Further type mapping support is still experimental. An official -cooperation with MinuteProject for source code generation is -being analysed. With MinuteProject, many source code generation -issues could be addressed centrally, as MinuteProject specialises -in source code generation: - -http://minuteproject.wikispaces.com/ - -Features and improvements -------------------------- -#595 - Add support for Oracle's PIVOT clause -#869 - Add support for using ANY, ALL with arrays, not just with - subselects -#1007 - Formally document the API methods to indicate whether - something is supported by any given SQL dialect -#1011 - Add code generation configuration parameter to avoid - generating @Generated annotation -#1019 - Render LIMIT x OFFSET y also for MySQL, instead of - LIMIT y, x -#1022 - Add missing Sybase ASE implementation for Factory.use() -#1024 - Add Factory.resultQuery(String, Object...) to allow for - arbitrary execution modes of plain SQL queries (lazy, - later, into, array, etc) -#1025 - Add missing SQLite implementation for Factory.deg() and - Factory.rad() -#1033 - Generate table comments into generated Tables.java as - Javadoc -#1040 - Add Object[][] Result.intoArray() and - Object[] Record.intoArray() for convenience. Let - E Record.into(Class) also support array types. -#1041 - Add Table Factory.table(Select) convenience - method for more fluency -#1042 - Add support for DISTINCT keyword in SUM, AVG, MIN, MAX - aggregate functions -#1046 - Generate Ingres table and column comments in generated - source code (only Ingres 10) - -API changes (backwards-compatible) ----------------------------------- -#1050 - Deprecate usage of SOME quantifier in predicates, such as - equalSome() - -API changes (backwards-incompatible) ------------------------------------- -#1036 - Fixed API typo in - WindowsRowsStep.rowsBetweenUnboundedFollwing() -#1037 - The fluent API allows for JOIN clauses without FROM - clause - -Bug fixes ---------- -#1010 - The MERGE INTO .. WHEN NOT MATCHED THEN INSERT .. syntax - may cause type-safety issues in some databases. VALUES - should be converted before binding -#1014 - FindBugs: Latent risk of infinite recursion due to typo - in QueryPartList.retainAll(); -#1015 - FindBugs: 7 occurrences of "Bad attempt to compute - absolute value of signed 32-bit hashcode". In extreme - cases, this could lead to SQL syntax errors -#1016 - The Oracle CONNECT BY cond1 AND cond2 syntax erroneously - creates a WHERE cond2 CONNECT BY cond1 statement -#1028 - Syntax errors when using untyped param() in HSQLDB (and - other strongly typed dialects) -#1029 - Postgres can't bind NULL values in cases, where bind type - is Object.class and bind value was created with - Factory.param() -#1030 - UnsupportedOperationException when calling - Query.bind(int, Object) on a query containing plain SQL - fields -#1031 - Incorrect debug logging when plain SQL QueryParts like - field("?") bind null values -#1032 - Incorrect debug logging when plain SQL QueryParts contain - String literals, such as 'Hello? Anyobody out there?' -#1047 - Field.notEqualAny() erroneously renders <> ALL() - -Test cases ----------- -#1021 - Add explicit integration tests for - LEFT|RIGHT|FULL OUTER JOIN - -Version 2.0.1 - December 23, 2011 -================================================================================ - -This is a maintenance release for jOOQ 2.0. The main improvements -include - -- Better integration for using jOOQ with Spring Data. This - includes support for named parameters, as well as allowing to - change bind values on previously constructed Query objects -- The MERGE statement has been enhanced for better integration - with Oracle. -- jOOQ is now ready to use with Scala / Groovy - -For more information about using jOOQ with Scala, see this blog -post: -http://blog.jooq.org/2011/12/11/the-ultimate-sql-dsl-jooq-in-scala/ - -There is now also experimental support for a custom type mapping. -This mapping allows to rewrite data types at code generation time -as well as to specify custom enum data types (e.g. boolean Y/N). -Not all integration tests run smoothly for custom data types, -hence, this feature is not yet fully supported. - -Features and improvements -------------------------- -#691 - Add support for Oracle CURSOR REF IN / INOUT parameters -#677 - Add type-mapping configuration, enforcing types for - columns -#947 - Add custom type mapping support (experimental) -#968 - Allow for custom enum types, configured in the code - generator (experimental) -#974 - Add Schema.getTable(String), getSequence(String), - getUDT(String) for better runtime Schema meta-navigation -#975 - Add Sequence.getName(), getSchema(), getDataType() -#980 - Add support for named parameters, to better interact with - Spring -#991 - Add Query.bind(String, Object) and bind(int, Object) to - easily modify existing bind values -#992 - Document thrown DataTypeException in Convert methods -#998 - Enhance MERGE statement for Oracle extensions: - WHEN MATCHED THEN UPDATE .. WHERE .. DELETE WHERE .. - WHEN NOT MATCHED THEN INSERT .. WHERE .. -#1000 - Add support for MySQL's INSERT INTO .. SET .. syntax in - MERGE statement's WHEN NOT MATCHED THEN INSERT clause - -API changes (backwards-compatible) ----------------------------------- -#981 - Cannot insertInto(table("my_table")), as plain SQL tables - return Table, not Table. Relax - bound on R -#988 - Change Factory.field(String) to return Field - instead of Field -#999 - Make MERGE's WHEN MATCHED .. and WHEN NOT MATCHED .. - clauses optional -#1001 - Identity.getField() should return TableField - instead of Field -#1006 - Add Factory.value(...) as a synonym for Factory.val(...) - for increased Scala / Groovy compatibility - -Bug fixes ---------- -#973 - EnumType renders name() instead of getLiteral() in - formatXXX() methods -#977 - EnumType renders name() instead of getLiteral() in - Convert.convert() method -#979 - Record.from() sets all changed flags to true. That's not - necessarily correct in the event of storing the record - back to the DB -#985 - AbstractRecord.equals() does not correctly compare - arrays. Compare them using Arrays.asList() -#986 - Postgres / DB2 / Sybase ASE foreign-key namespace is - unique-per-table. jOOQ forces all foreign keys from all - tables into the same namespace -#990 - Problems when encoding arbitrary byte[] as String(byte[]) - in inlined SQL. This can cause issues when DEBUG-level - logging is activated -#995 - Routines don't respect SchemaMapping - Github issue #8 -#1002 - TableRecord.storeUsing() doesn't update IDENTITY column - values, if the column is not part of the main unique key -#1003 - Sybase / SQL Server / MySQL / Ingres / H2 / Derby's - INSERT .. RETURNING simulation returns null if a table - has an IDENTITY column, but no primary/unique key -#1005 - The INSERT INTO .. VALUES .. syntax may cause type-safety - issues in some databases. VALUES should be converted - before binding - -Test cases ----------- -#984 - Detach IDENTITY column tests from UNIQUE KEY tests, - create a dedicated test suite instead - -Version 2.0.0 - November 25, 2011 -================================================================================ -This release is a fresh start in many areas of jOOQ, adressing -issues that have been requested by users for a long time. These -release notes docment the most important changes, a detailed -upgrade guide, as well as the detailed list of improvements. - -Most important changes ----------------------- -- The API became more static. This applies to many Factory - methods, such as val(), literal(), as well as to many Field - methods that have been moved over to the Factory. For example, - when before, you wrote this using "postfix function notation": - -
    NAME.replace(" ", "_").trim()
    - - you will now write (just as in SQL): - -
    trim(replace(NAME, " ", "_"))
    - - Using static imports of Factory.*, jOOQ makes SQL look even - more like SQL. The current "postfix notation" is maintained for - backwards compatibility. -- By default, jooq-codegen will now generate a "dynamic" meta - model as opposed to the existing static one. Generated tables - covariantly override the as(String) aliasing method, leading - to a much more convenient aliasing style. When before, you - wrote: - -
    -Table parent = T.as("parent");
    -Table child  = T.as("child");
    -Condition join =
    -  parent.getField("ID").equal(child.getField("PARENT_ID"))
    -
    - - You can now write: - -
    -T parent = T.as("parent");
    -T child  = T.as("child");
    -Condition join = parent.ID.equal(child.PARENT_ID)
    -
    - - Of course, the existing notation still works - -- Exceptions are no longer checked. When previously, the DB's - SQLException was propagated to client code, there is now an - unchecked DataAccessException hierarchy, similar to that of - Spring. This will eventually give way to a standardised error - handling abstraction, in future developments. -- Window functions are now constructed from their underlying - aggregate functions just like in SQL. For example: - -
    -sum(AMOUNT)
    -sum(AMOUNT).over().partitionBy(ACCOUNT)
    -
    - - This makes for a more concise API, especially when considering - future extensions, such as Oracle's KEEP (DENSE_RANK FIRST...) - syntax. -- More type safety has been introduced regarding various places - where generic and types are involved. - This is especially true for INSERT / UPDATE / DELETE statements -- Sequences now also have a type -- Unsigned number types are now supported in those databases that - use them. Unsigned numbers are implemented in jOOU, a spin-off - open source project. For convenience, this library is - "internalised" into jOOQ, to avoid adding a dependency - -http://code.google.com/p/joou/ - -Upgrade instructions: ---------------------- -Various of the above changes are incompatible with jOOQ 1.x. In -order to upgrade, please be aware of the following pitfalls: - -- The schema needs to be re-generated. -- Much of the post-fix function notation is replaced by static - methods in the Factory. Today's org.jooq.Field API is - maintained in jOOQ 2.0, for backwards compatibility. It will - be removed, eventually, though. Expect some incompatible - changes, where window functions are involved -- Some Factory instance methods (such as val(), literal()) are - now static. They are compatible, but may cause compiler - warnings. -- The meta model is now an instance model by default. If you - prefer the static meta model, you can configure this in your - jooq-codegen configuration. -- The additional typesafety involving and types may cause - compiler warnings and errors. -- SQLException is no longer part of the API. This can cause - compiler issues, in particular when extending jOOQ -- Some utility classes have moved to org.jooq.tools - -Should these incompatibilities be too significant for your -project, you can still stay on the 1.x branch, which will be -maintained for a while. Be aware that upgrading might be more -difficult, later, though. - -Features and improvements -------------------------- -#55 - Implement improved exception handling -#117 - Improve DSL support for field and table aliasing (decrease - verbosity) -#519 - Add support for MySQL UNSIGNED numeric types -#626 - Create static function access -#661 - Add support for bitwise operators -#718 - Sequences should be mapped to appropriate type (e.g. - SMALLINT, INT, BIGINT, etc) -#734 - Add support for Oracle / SQL Server CUBE() and ROLLUP() - grouping functions -#751 - Add support for Oracle / SQL Server GROUPING SETS() - function -#799 - Add support for Oracle PL/SQL's object-oriented MEMBER - PROCEDURES and MEMBER FUNCTIONS -#804 - Add to Insert, Update, Delete -#835 - Review API typesafety for InsertSetMoreStep - set(Field, T) and similar methods -#890 - Add Factory.selectCount() convenience method -#891 - Let min() max(), etc functions return a new type - AggregateFunction. This type can then be used as an entry- - point for window functions -#892 - Add support for Oracle / SQL Server GROUPING() and - GROUPING_ID() functions to be used along with CUBE() and - ROLLUP() -#893 - Simulate ROLLUP() function for MySQL, using the WITH - ROLLUP grouping modifier -#894 - Move functions from Field to org.jooq.impl.Factory - and make them static -#895 - Add power(..., Field) -#897 - Add (experimental) Spring integration project -#898 - Replace usage of checked SQLException by an unchecked - DataAccessException, similar to that of Spring -#899 - Build jOOQ .jar files as bundles to be deployed into OSGI - environments -#900 - Purge deprecated API - Prior to 2.0 -#901 - Introduce InvalidResultException as a subtype of - DataAccessException for integrity checks in methods like - ResultQuery#fetchOne(), ResultQuery#fetchMap(), etc. -#902 - Make AggregateFunction the base type for constructing - window functions -#904 - Move SQLDialectNotSupportedException into - org.jooq.exception package -#905 - Introduce MappingException as a subtype of - DataAccessException for integrity checks in methods like - ResultQuery#fetchInto(), etc. -#907 - Add missing Field.like(Field), notLike(Field) - methods to overload the existing Field.like(T), notLike(T) -#908 - Change rpad / lpad functions to accept String instead of - char -#912 - Add R newRecord(Table, Object) as - the inverse of various into(Class) methods -#916 - Add > {Record.into(Table) | - Result.into(Table) | ResultQuery.fetchInto(Table) | - Cursor.fetchInto(Table)} -#917 - Add various Cursor.fetchOneInto() convenience methods -#918 - Add CustomTable, CustomRecord as base classes for more - convenience when used with various into(Table) methods -#919 - Allow for accessing non-public constructors of Record - subtypes -#923 - Move some utilities to org.jooq.tools -#924 - Generate a reference to every table in a new Tables.java - class for improved static access -#928 - Add DataTypeException extending DataAccessException in - case something went wrong when converting data types -#930 - Support converting date time types to java.util.Calendar. - This applies to various into(Class) methods, as well as - Result.getValue(xx, Class) -#931 - Allow for conversion between Long and date/time types, and - vice versa -#932 - Let the bound of R in TableRecord extend TableRecord, - in UpdatableRecord to extend UpdatableRecord -#933 - Add support for type Character in Record.into(Class) - methods and similar -#936 - Accept primitive types, such as int.class for type - conversion -#938 - CODEGEN: Add static/instance table field configuration -#939 - Include license.txt and readme.txt in .jar files' META-INF - directory -#953 - Make DefaultGeneratorStrategy methods non-final to allow - for overriding -#954 - Add examples for source code generation of multiple - schemata with Maven -#955 - Generate a reference to every type in a new UDTs.java - class -#957 - Add R Factory.newRecord(UDT) for constructing - attached UDTRecords -#958 - CODEGEN: Add generation-time schema mapping, allowing for - re-writing schemata in jooq-codegen -#960 - CODEGEN: Add code generation configuration parameter to - avoid using the new UByte, UShort, UInteger, ULong wrappers - for UNSIGNED number types -#961 - Use Oracle's SYS.ALL_SEQUENCES.MAX_VALUE to determine the - type of a sequence. -#969 - Add List ResultQuery.fetch(Field, - Class) convenience method - -Bug fixes ---------- -#686 - Reduce the internal API leak by preventing access to - TableFieldImpl, UDTFieldImpl, ParameterImpl -#903 - lag(Field, int, T) erroneously delegates to lead() -#906 - Add more NullPointerException safety to API -#913 - NoClassDefFoundError in JooqUtil.isJPAAvailable() -#920 - Generic type is lost in Cursor.fetchInto(RecordHandler) -#925 - SelectConditionStep should extend SelectConnectByStep, not - SelectGroupByStep -#926 - AbstractRecord.into() fails to convert java.sql.Date into - java.util.Date -#934 - Don't consider static members in reflection utilities when - used with Record.into(Class) and similar methods -#935 - Don't consider final member fields in reflection utilities - when used with Record.into(Class) and similar methods -#937 - In the event of name clash (same name for table and field) - generated code has errors -#945 - Calling UpdatableRecord.setValue() twice with the same - argument causes the changed flag to be reset to false -#948 - Always set the changed flag to true in Record.setValue() -#959 - Compilation errors in generated source code if MySQL enum - values match Java reserved words, such as 'true', 'false', - 'new', etc... -#962 - Postgres ordering of generated enum literals is unstable -#967 - Better document type conversion - -Version 1.7.0 - November 25, 2011 -================================================================================ -This is a maintenance release for the 1.x branch. Some important -bug fixes are merged from version 2.0. These include: - -Bug fixes ---------- -#925 - SelectConditionStep should extend SelectConnectByStep, not - SelectGroupByStep -#926 - AbstractRecord.into() fails to convert java.sql.Date into - java.util.Date -#937 - In the event of name clash (same name for table and field) - generated code has errors -#945 - Calling UpdatableRecord.setValue() twice with the same - argument causes the changed flag to be reset to false -#948 - Always set the changed flag to true in Record.setValue() -#951 - Empty Password for jooq-codegen-maven causes NPE - -Version 1.6.9 - November 7, 2011 -================================================================================ -This is a maintenance release for the 1.x branch. Developments -on this branch will stop after version 1.6.9. Only important bug -fixes are merged to this branch. Developments for release 2.0 -have started. - -The most important functionality in release 1.6.9 is the newly -added support for JDBC batch operations. You can now batch -execute several queries. - -See the official blog for more information: -http://blog.jooq.org/2011/10/25/jdbc-batch-operations-with-jooq/ - -Features and improvements -------------------------- -#621 - Add support for JDBC batch operations -#794 - Add support for ORDER BY [int value] in order to reference - a column index for sorting -#882 - Optimise Field.isTrue() and isFalse(). Take Field's data - type into consideration. -#885 - Add support for INSERT INTO .. VALUES (..) syntax, - omitting explicit field declarations -#887 - Add List Cursor.fetchInto(Class) - -Bug fixes ---------- -#748 - H2 regression in 1.3.158 regarding stored functions, which - return a ResultSet (this was fixed in H2) -#859 - Derby casting of numeric types to BOOLEAN doesn't work -#886 - Regression in date extract function when used in a - subselect -#888 - Derby casting of VARCHAR to FLOAT (and similar) doesn't - work - -Version 1.6.8 - October 22, 2011 -================================================================================ -The main improvement of this release is the re-design of the -stored procedure / function API. With 12 supported RDBMS, which -all have their own idea about what is a stored procedure and what -is a stored function, it has proven to be a better design, to -unite them in one single type: org.jooq.Routine. A routine can -have a return value as well as OUT parameters. It can be embedded -in SQL and used as a field or a table. - -This means, you will need to re-generate your database schema, -when upgrading to jOOQ 1.6.8. After re-generation, you'll need to -fix your client code. These are the package changes: - -- [generated.package].procedures > [generated.package].routines -- [generated.package].functions > [generated.package].routines -- [generated.package].Procedures > [generated.package].Routines -- [generated.package].Functions > [generated.package].Routines - -Oracle generated packages are not re-located. With these -improvements, using stored procedures and functions becomes even -more reliable, especially when cursor types are involved. Read -more about the rationale behind this change: - -http://blog.jooq.org/2011/10/17/what-are-procedures-and-functions-after-all/ - -Apart from that, important improvements have been made in the -area of plain SQL tables. Also, consider a demo integration of -jOOQ with Google Cloud SQL: - -http://blog.jooq.org/2011/10/22/jooq-and-google-cloud-sql-example/ - -Features and improvements -------------------------- -#271 - Don't pre-fetch table meta data when selecting from plain - SQL tables -#489 - Add support for SELECT * (i.e. render SELECT * where - applicable) -#596 - Add support for VARIANCE() and STDDEV() OVER() window - functions -#608 - Add jOOQ version number in generated source code -#670 - Add more Javadoc to Field.xxx() functions -#692 - Add support for ResultSet type returned from HSQLDB - stored functions -#850 - Use http://www.jooq.org as URL for the @Generated - annotation -#854 - Add convenience methods Fields.isTrue(), isFalse() for - conversion of "Y", "YES", "1", "true", "on", etc into a - boolean condition -#870 - Add support for MEDIAN aggregate function -#872 - Add support for STDDEV_POP(), STDDEV_SAMP(), VAR_POP(), - VAR_SAMP() aggregate functions -#874 - Reduce the number of internal classes for dialect-specific - function aliases -#878 - Implement DataType.equals() and hashCode() - -API changes (backwards-compatible) ----------------------------------- -#851 - Change Field.{sortAsc|sortDesc}(List sortList) into - Field.{sortAsc|sortDesc}(Collection sortList) - -API changes (backwards-incompatible) ------------------------------------- -#848 - Purge deprecated API - Prior to 1.6.1 -#849 - Replace Cursor.fetchResult() by Cursor.fetch() -#852 - Review stored procedures / functions concept. Merge them - all into a single "Routine" type - -Bug fixes ---------- -#756 - Error when aliasing HSQLDB and Postgres unnested tables -#761 - Exception when TRACE logging execution with plain SQL - tables involved -#773 - Execute standalone stored functions as CallableStatement - to prevent issues with transactions -#847 - Query.getSQL() doesn't render dialect-specific SQL when - Query is constructed using the fluent API -#853 - DB2 generated convenience methods for stored functions - have unstable ordering -#857 - Derby casting of numeric types to String / VARCHAR does - not work -#858 - SQLDataType.getSQLDataType() should return itself, instead - of null -#860 - SQLite CEIL function is incorrectly simulated. CEIL(2.0) - returns 3.0 instead of 2.0 -#861 - Field.replace(String) generates bad SQL for various RDBMS. - Field.replace(String, String) works, though -#863 - Ingres integration generates illegal SQL when selecting - things like SELECT 1 WHERE 1 = 1 -#866 - Sybase ASE Field.replace(String) function incorrectly - removes the argument string -#873 - Error when selecting two times the same aggregate field -#877 - Compilation error in generated source code when a table - without a primary key has an identity column -#879 - Add Google Cloud SQL Example -#880 - Query.getSQL() does not consider SchemaMapping - -Test cases ----------- -#811 - Loader integration tests fail for SQLite -#812 - CSV Loader test leaves Postgres JDBC connection in an - inconsistent transactional state on error -#856 - Add integration tests for Field.abs() -#865 - Add integration tests for Field.ascii() -#867 - Add integration tests for Field.sum(), avg(), max(), min() -#881 - Re-design H2 stored functions to be pre-compiled, in order - to speed up integration tests - -Version 1.6.7 - September 25, 2011 -================================================================================ - -This release coincides with the launch of the new website at -http://www.jooq.org. Hence, it ships with little additions to the -deliverable itself. - -Apart from new convenience methods, the main addition is a Maven -plugin for jooq-codegen contributed by Sander Plas. - -Features and improvements -------------------------- -#797 - Create Maven plugin for source code generation -#825 - Add List> Factory.fetchMany(String) to - allow for fetching several result sets from stored - procedures, such as Sybase ASE's "sp_help" -#838 - Implement MetaDataFieldProvider.toString() -#841 - Add List Result.getValues(Field, Class) -#842 - Add Query.getBindValues() method to allow for extracting - bind values in the correct order -#843 - Add Factory.fetch(ResultSet) to transform a JDBC ResultSet - into a jOOQ Result - -API changes (backwards-compatible) ----------------------------------- -#837 - Avoid final keyword on Object methods, such as .equals(), - .hashCode(), etc - -Bug fixes ---------- -#836 - Bad syntax when selecting from aliased plain SQL tables -#839 - Boolean conversion in getValueAsBoolean() should trim - String values first -#840 - Numeric conversions in getValueAsXXX() should trim String - values first -#844 - NullPointerException when selecting a column from a Result, - that does not exist - -Version 1.6.6 - September 11, 2011 -================================================================================ - -Finally, support for another RDBMS has been added. Sybase's other -important product Sybase Adaptive Server Enterprise (or simply -Sybase ASE) is now officially supported by jOOQ - -Apart from this, there had been important improvements with the -recently added INSERT .. RETURNING clause, as well as some fixes -related to DECIMAL / NUMERIC data types - -Features and improvements -------------------------- -#796 - Complete missing public org.jooq.impl Javadoc -#800 - Add support for Sybase Adaptive Server Enterprise -#808 - Add support for INSERT .. RETURNING for Ingres -#809 - Add support for INSERT .. RETURNING for Sybase SQL - Anywhere using SELECT @@identity -#810 - Add support for INSERT .. RETURNING for SQLite using - last_inserted_rowid() -#813 - Add DSL support for INSERT .. RETURNING -#814 - Change TableRecord to reload its trigger-initialised main - key in Oracle and other RDBMS that don't support IDENTITY - columns -#818 - Add SQLiteFactory.rowid() -#819 - Support SQLite AUTOINCREMENT columns as IDENTITY -#820 - Add Factory.fetchOne(String) for executing plain SQL - queries that return single records -#826 - Allow for returning several records in the INSERT .. - RETURNING clause. This now works for DB2, HSQLDB, MySQL, - and Postgres -#827 - Support Sybase SQL Anywhere's TOP n START AT m clause - instead of simulating it with nested SELECT's - -API changes (previous API now deprecated) ------------------------------------------ -#817 - Deprecate Factory.lastID(Identity) - -Bug fixes ---------- -#815 - SQL Server fetching of IDENTITY value is broken -#821 - Optimise ResultQuery.fetchAny() executing fetchLazy() - internally, and only fetching one record from the cursor -#822 - Let Constant cast to more precise NUMERIC/DECIMAL types - in those RDBMS where casting is necessary -#823 - Cannot bind SQLite BigDecimal, BigInteger types - bind - them as String instead -#824 - BigInteger values cannot be bound in DB2, Derby -#828 - Document inefficient implementation for GREATEST and LEAST - in some RDBMS - -Version 1.6.5 - August 28, 2011 -================================================================================ - -This release finally adds a loader for CSV data to jOOQ. You can -now load CSV data using a simple fluent API, configuring error -handling, duplicate behaviour and transaction handling, as well -as various CSV parameters. - -This release also changes the way generated keys are retrieved -after INSERT's. Instead of (potentially inconsistently) running -SELECT MAX(pk) immediately after the INSERT, Postgres' INSERT.. -RETURNING clause is used (or simulated), in a single statement. - -Features and improvements -------------------------- -#784 - Add Result.exportXML() to retrieve a DOM document similar - to that of .formatXML() -#792 - Add support for loading of CSV data into tables -#795 - Add List fetch(int, Class) and - fetch(String, Class) convenience methods -#803 - Add support for INSERT .. RETURNING or simulate it where - not available -#805 - Add T[] fetchArray(int, Class) and - fetchArray(String, Class) convenience methods -#806 - Add T fetchOne(int, Class) and - fetchOne(String, Class) convenience methods - -Bug fixes ---------- -#798 - Oracle IN (...) clause with more than 1000 arguments does - not work -#802 - Use "INSERT .. RETURNING" instead of "SELECT MAX(pk)" - to retrieve the primary key of a new record - -Version 1.6.4 - August 07, 2011 -================================================================================ - -This release ships with a couple of useful concepts inspired by -other frameworks. These are: - -- selecting into custom POJO's. Results can be mapped to POJO's - by convention or using JPA @Column annotations -- selecting into custom callbacks. This is already a wide-spread - practice in Spring JdbcTemplates. -- selecting long-running queries asynchronously. This idea has - been inspired by the Avaje Ebean framework - -Apart from these changes and some bugfixes, the internal API has -been completely re-designed. The idea here is that query -rendering and variable binding are even faster (less String -objects), more extensible and more accurate. This is a pre- -requisite for many future developments with even more complex SQL -statements, such as for instance CTE's (Common Table Expressions) - -Features and improvements -------------------------- -#137 - Add support for asynchronous query execution using - FutureResult ResultQuery.fetchLater() similar to - Avaje Ebean -#198 - Add SELECT INTO functionality into POJO's using - T ResultQuery.fetchInto(Class) similar to JPA - CriteriaQuery -#728 - Add .fetchInto(RecordHandler) to ResultQuery, Result, - and Cursor to allow for callbacks similar to Spring's - JdbcTemplate/Ollin Framework -#774 - Add more TRACE logging to .fetchLazy() -#777 - CURSOR: Add function alias: UNNEST for TABLE -#781 - Add E function (Euler number) -#782 - Add T Record.getValue(..., Class) methods - for convenient type conversion -#785 - Allow for storing TableRecord with a provided Field[] - indicating the primary key -#786 - Document thread-safety facts in Factory Javadoc -#788 - Add Key.getFieldsArray() convenience method -#793 - Add support for Oracle's SYS_CONNECT_BY_PATH function - -API changes (backwards-incompatible) ------------------------------------- -#758 - Change internal QueryPart rendering and binding API to use - Configuration and Context as callback parameters. If you - use CustomField or CustomCondition, please correct your - implementations accordingly. Other parts of the API should - not be affected -#778 - Purge deprecated API, deprecation prior to jOOQ 1.5.7 -#790 - Purge deprecated generated code, deprecation prior to - jOOQ 1.5.7 - -API changes (previous API now deprecated) ------------------------------------------ -#776 - Deprecate QueryPart.getSQL(), add Query.getSQL() -#789 - Deprecate Record constructors with Configuration - parameter - -Test cases ----------- -#636 - Add integration tests for more advanced CONNECT BY - example -#772 - Add integration tests for selecting cartesian products - (several tables in FROM clause) - -Bug fixes ---------- -#730 - Sybase cannot bind null values in plain SQL -#759 - Omit the TOP 100 PERCENT clause in SQL Server ordered - top-level queries -#767 - An empty Java package is generated for PL/SQL packages - containing underscores -#771 - Some exotic literals are not properly escaped with quotes - yet, e.g. UDT identifiers, VARRAY types, etc. -#775 - Automatic re-attaching after deserialisation does not work - when used with .fetchLazy() -#787 - The UpdatableRecord's internal changed flags are not - updated after INSERTs / UPDATEs - -Version 1.6.3 - July 31, 2011 -================================================================================ - -This is mainly a maintenance release with lots of bugfixes, -mostly around code generation, plain SQL tables, and data types. -Please note that generated source code may contain incompatible -changes due to #639 (see below for details)! - -Apart from that, project CURSOR is advancing and it is now -possible to unnest arrays into tables. See this article for -details about where jOOQ is heading with project CURSOR: - -http://blog.jooq.org/2011/07/24/the-power-of-ref-cursor-types/ - -Features and improvements -------------------------- -#679 - Improve H2 NVL2 support as of H2 1.3.156 -#680 - Improve H2 ROUND support as of H2 1.3.156 -#735 - Add README documentation to GitHub -#736 - Add more info regarding number of generated artefacts in - jooq-codegen logging -#750 - Add DataType.isNumeric(), .isString(), .isTemporal(), - .isBinary() -#754 - Log query as executed by JDBC PreparedStatement when - TRACE logging (without inlining variables) -#752 - CURSOR: Add support for selecting from ARRAY types -#762 - Use H2's native support of NVL, instead of COALESCE -#764 - CURSOR: Add support for selecting from ARRAY types - returned from stored functions - -API changes (backwards-incompatible) ------------------------------------- -#639 - Map DECIMAL(n, 0) and NUMBER/NUMERIC(n, 0) data types - to Byte/Short/Integer/Long/BigInteger instead of - BigDecimal in generated source code. Re-generated code - will not be compatible! - -API changes (previous API now deprecated) ------------------------------------------ -#731 - Inconsistent API with Field.lessOrEqualToXXX(). Removed - "To" from method name -#757 - Deprecate Factory.constant() methods - -Test cases ----------- -#731 - Add missing integration tests for equalAll(), equalSome() - and similar methods -#747 - Upgrade H2 to 1.3.158 - -Bug fixes ---------- -#632 - Sybase error : column @p0 not found in nested SELECT -#700 - Restore HSQLDB ARRAY support with INFORMATION_SCHEMA - change in HSQLDB 2.2.3, and some fixes in 2.2.5 -#725 - Cannot insert byte[] data with plain SQL -#733 - H2 changed JDBC type for ResultSet/CURSOR from 0 to -10, - like Oracle -#737 - Compilation errors in generated source code if table - fields contain spaces -#738 - Compilation errors in generated source code if MySQL - procedure parameter type contains two comma-separated - arguments (like DECIMAL(10,2)) -#739 - Postgres navigator methods and keys are not re-generated - in the same order -#740 - Formatting is broken on Result.format() with some special - newline characters -#743 - Make SQL Server INFORMATION_SCHEMA independent from - HSQLDB again, to prevent incompatibility issues -#744 - Ingres REAL and FLOAT4 types are generated as FLOAT/FLOAT8 - which maps to java.lang.Double, instead of java.lang.Float -#753 - Postgres error when binding array that contains null - values -#755 - NullPointerException when converting an array containing - a null value -#766 - Bad decoding of JDBC Types BIGINT (to BigInteger instead - of Long) and REAL (to BigDecimal instead of Float) when - plain SQL tables are involved - -Version 1.6.2 - July 10, 2011 -================================================================================ - -This release mainly introduces three new projects. - -Project CURSOR where jOOQ finally supports various RDBMS's TABLE, -CURSOR, and REF CURSOR data types. This is especially useful when -those types are returned from stored procedures and functions. -Cursors are simply mapped to jOOQ Result types and can -thus be used like regular table results - -Project EXPORT aims at exporting data from the database in -various serialisable formats, such as XML, CSV, HTML, Text, JSON. -This project will be continued in the future, to also -deserialise from (some of) these data streams. This will allow -for easy transport of jOOQ Result types over the net. - -Project CODEGEN has finally been started. Many improvements -suggested by jOOQ users will be implemented in the next releases. -In this release, important fixes have been made to prevent -compilation errors in generated artefacts. - -Features and improvements -------------------------- -#61 - EXPORT: Add Result.formatXML() -#166 - CURSOR: Add support for ResultSet type returned from - Oracle stored procedures / functions -#411 - Allow for fetching Map (instead of Record) - and List> (instead of Result) -#549 - Add Factory.function() for plain SQL functions -#611 - Simulate RPAD and LPAD in SQL Server, Sybase -#627 - Add support for Postgres FOR UPDATE OF [table-name] clause -#628 - Add support for REPEAT (SQL Server: REPLICATE) function -#637 - Nicely format time in StopWatch logging output -#640 - Simulate Postgres FOR UPDATE OF [table-name] clause in - other dialects -#649 - CURSOR: Add Cursor.fetch(int) .fetchOne() - .fetchResult(int) .fetchResult() -#653 - Add support for MySQL encryption and compression functions -#660 - Clarify Javadoc of UpdatableRecord to explain its - behaviour when changing the main unique key -#669 - EXPORT: Add Result.formatHTML() -#672 - Add convenience method UpdatableRecord.copy() in order to - reset primary key values for a subsequent INSERT -#675 - EXPORT: Add Result.formatCSV() -#683 - Implement ResultImpl.equals() and .hashCode() -#684 - Implement AbstractStore.equals() and .hashCode() -#685 - Add Store.size() to indicate the maximum index of the - Store -#687 - EXPORT: Add result.formatJSON() -#689 - Create separate builds: jooq-core.zip and - jooq-with-dependencies.zip -#690 - CURSOR: Add support for ResultSet type returned from H2 - stored functions -#695 - CURSOR: Add support for ResultSet type returned from - Postgres stored functions -#697 - Add Factory.fetch(String) for executing plain SQL queries - that return results -#701 - Add ResultQuery.fetchArray() and .fetchOneArray to return - Object[][] and Object[] -#704 - Always add top and bottom line in Result.format() -#705 - Right-align numeric values in Result.format() -#716 - Add SUBSTRING function Field.substring(Field, Field) - taking fields as arguments -#719 - Document risk of SQL injection in plain SQL and literal - factory methods -#726 - Add LENGTH function as a synonym for CHAR_LENGTH - -API changes (backwards-compatible) ----------------------------------- -#698 - Inconsistent API with Factory.fetch(Table [,Condition]) - Let method return Result instead of List -#699 - Let Result extend List - -API changes (previous API now deprecated) ------------------------------------------ -#656 - Decrease verbosity of plain SQL methods. They will just be - called Factory.field() .condition() .table() .query() - -Test cases ----------- -#643 - Add integration test for code generation of invalid and - incomplete types in Oracle -#654 - Add integration tests for master data tables with PK types - other than NUMBER/INT -#655 - Add missing integration tests for TRIM function - -Bug fixes ---------- -#450 - Improve plain SQL integrity checks for bind variables -#610 - CODEGEN: Compilation error in generated source code for - databases with table named 'system' -#646 - An empty Java package is generated for an empty PL/SQL - package. This is unnecessary -#651 - CODEGEN: Avoid importing datatypes in generated source - code to prevent collisions -#657 - NullPointerException when creating a Factory with a null - SchemaMapping -#658 - Master data table code generation is broken for tables - with more or less than 3 columns -#662 - Add support for the missing Postgres data type "bpchar" -#663 - Add support for the missing Sybase data type "int" -#664 - Ingres INTEGER data types are not correctly generated -#665 - HSQLDB Datatype CLOB and BLOB are not supported, when - selecting from plain SQL tables -#666 - The evil bug: Ingres TRIM function only executes RTRIM -#673 - UpdatableRecord.store() doesn't work if called after - .delete() -#702 - Add support for the missing SQLite data type "NULL" -#706 - CURSOR: Ensure that Query.execute() runs in a single - transaction when Postgres refcursor is involved in the - query (this fixes a Postgres JDBC driver flaw) -#724 - NullPointerException when passing a single literal null - bind value to plain SQL methods without casting to Object -#729 - DB2, Derby, Ingres, Oracle cannot bind null values in - plain SQL - -Version 1.6.1 - June 19, 2011 -================================================================================ - -In this release, the PORTABILITY project has been implemented. -Finally, the SQLDialect has been removed from most generated -artefacts (Schema, Table, Field, Sequence, etc). Also, the -constructing Factory is not referenced by its created QueryParts -anymore, unless this is really necessary (Query objects, UDT's, -ARRAY types). This leads to higher compatibility between schemata -of different databases, e.g. if users want to use an HSQLDB -development and Oracle productive database. - -Unfortunately, this means that the way stored procedures are -called had to be changed. This is an API break that could not be -avoided. The pre-1.6.1 StoredObject.execute(Connection) method -is deprecated and will be removed in the future. It has been -replaced by StoredObject.execute(Configuration) - -In addition to this project, many more window functions are now -supported, as well as the Oracle-specific CONNECT BY clause for -recursive queries. - -Features --------- -#351 - Add support for Oracle ROWID data type -#452 - PORTABILITY: Create a super-set of RDBMS data types -#453 - PORTABILITY: Don't create dialect-specific QueryParts -#455 - Add support for the Oracle CONNECT BY clause -#587 - Add optional OFFSET clause to form LIMIT .. OFFSET - constructs -#589 - Add extended FOR UDPATE [OF ...] [{WAIT n | NOWAIT | SKIP - LOCKED }] support -#591 - Add support for LEAD() OVER() and LAG() OVER() window - functions -#592 - Add support for the CUME_DIST() OVER() window function -#601 - Add Factory.literal() convenience methods -#602 - Add Factory.val() methods to decrease .constant() - verbosity -#604 - Add support for RESPECT NULLS clause in some window - functions -#605 - Add Factory.use(String) for non-generated schemata -#613 - Add PI function -#616 - Add Factory.two() literal convenience method -#630 - Add support for Oracle CONNECT BY pseudo-columns LEVEL, - CONNECT_BY_ISCYCLE, CONNECT_BY_ISLEAF - -API changes ------------ -#299 - PORTABILITY: Create a dialect-independent meta-model -#588 - Add OVER() keyword to FIRST_VALUE() and LAST_VALUE() API - -Test cases ----------- -#368 - Add integration test for use with schema mapping -#586 - Upgrade H2 to 1.3.155 -#607 - Add integration tests for CRUD / SP's / UDT's / ARRAY's - with SchemaMapping -#612 - Add integration tests for LPAD and RPAD functions -#624 - Add integration test for code generation of invalid/ - incomplete views in Oracle -#631 - PORTABILITY: Add integration tests for using Oracle- - generated schema against an HSQLDB database -#638 - Add missing integration test for DECIMAL data type - -Bugfixes --------- -#176 - Stored procedures / functions in EQUIVALENT schemata - cannot be called -#493 - Bind variable mismatch when constructing bad SQL -#594 - Confusing Javadoc in SELECT DSL API -#603 - Fix DB2 'IGNORE NULLS' clause -#619 - SUBSTRING() function is broken in DB2, Ingres, SQL Server -#623 - SQL syntax error for some MERGE queries in SQL Server and - Sybase -#633 - SchemaMapping is not applied to sequences -#634 - Sequences are not escaped in generated SQL - -Version 1.6.0 - June 05, 2011 -================================================================================ - -Apart from supporting various additional standard and non- -standard JOIN constructs, there is now also full support for the -SQL standard MERGE statement and MySQL's ON DUPLICATE KEY variant -thereof. A great number of API enhancements have been added, -which improve the usability of jOOQ. The Ingres database is now -also supported. - -Features --------- -#301 - Add support for Oracle execution hints -#409 - Add support for NATURAL JOIN syntax, where RDBMS allows it -#415 - Make fluent API's underlying SelectQuery objects publicly - available -#429 - Add Ingres support -#475 - Document class-level generic types and in Javadoc -#486 - Add support for SQL MERGE clause -#494 - Allow for omitting schema name in generated SQL -#496 - Automatically update IDENTITY values in UpdatableRecord, - after storing them -#520 - Add support for JOIN ... USING syntax -#524 - Upgrade HSQLDB to 2.2 -#533 - Add ORDER BY [Map] or BY [List] functionality -#534 - Add Result.isEmpty() -#535 - Call upon ConfigurationRegistry.provideFor() before - throwing a DetachedException -#536 - Simulate CASE [value] WHEN [value] THEN [result] END - syntax in Derby -#538 - Add some logging to ConfigurationProvider -#539 - Add possibility to negate numeric values with Field.neg() -#541 - Add support for MySQL ON DUPLICATE KEY clause -#542 - Allow for Collection arguments in INSERT's DSL API -#543 - Allow for creating FUNCTION() OVER() without PARTITION BY - or ORDER BY clause -#546 - Add Factory.use(Schema) -#548 - Add new internal type FieldMap -#550 - Simulate ON DUPLICATE KEY INSERT clause in dialects other - than MySQL -#551 - Add TableMapping, similar to SchemaMapping for mapping - tables -#553 - Add Factory.plainSQLQuery -#554 - Add Factory.plainSQLField with a DataType parameter -#555 - Add UpdateXXX.set(Map) convenience methods to DSL API -#557 - Enhance INSERT DSL API to allow for adding VALUES clause - with InsertXXX.set() syntax -#570 - Add support for the RAND() function -#567 - Add support for Ingres Sequences -#572 - Add support for the ATAN2() function -#573 - Add possibility for additional select() clauses for - convenience -#575 - Add support for the FULL OUTER JOIN syntax, where RDBMS - supports it -#576 - Add support for the CROSS JOIN syntax, where RDBMS - supports it -#581 - Enhance API and allow Collection> - instead of Collection> - -API changes ------------ -#397 - Purge deprecated API - -Bugfixes --------- -#481 - Handle case where an empty record is stored -#522 - Misleading Javadoc in generated stored procedures and - function constructors -#532 - Restore Postgres INFORMATION_SCHEMA -#537 - Prevent null from being added to QueryPartList -#540 - Error when TRACE logging Limit -#544 - Aliased elements are not bound correctly when rendered - with toSQLReference() -#559 - Loosen type safety on overloaded methods to prevent - compilation errors with javac/Netbeans -#560 - HSQLDB DataType REAL is configured incorrectly -#565 - Add integration tests for current_user() function -#569 - ORA-01427 when generating foreign key relations -#571 - Field.trim() not correctly implemented for SQL Server -#583 - Accelerate integration tests: Reset schema only if - necessary - -Version 1.5.9 - May 15, 2011 -================================================================================ - -This version ships with lots of new functionality. Finally, the -DSL-style API has been extended to CRUD operations (INSERT, -UPDATE, DELETE)! Also, support for the TRUNCATE TABLE statement -has been added. - -The most important new features include the support for SQL:2003 -standard window functions, which are available in most major -RDBMS. Additionally, basic function support has been widely -extended. - -Features --------- -#148 - Added support for window functions -#204 - Add support for multi-record INSERT's -#416 - Added support for retrieval of IDENTITY values -#433 - Use bind variables for LIMIT and OFFSET -#441 - Added foreign key relationship meta information to the - generated source code -#446 - Beautify ResultImpl.toString() method -#461 - Automatically cast CONCAT parameters to Field if - necessary -#463 - Added support for trigonometric functions -#471 - Added support for the sign function -#472 - Added support for GREATEST/LEAST functions -#474 - Added support for "hyperbolic" functions SINH, COSH, TANH, - and COTH -#482 - Added DSL API for INSERT statements -#483 - Added DSL API for UPDATE statements -#484 - Added DSL API for DELETE statements -#485 - Added "Registry" for client code to provide Configurations - to jOOQ Attachables -#490 - Added support for the TRUNCATE TABLE statement -#495 - Generate source code for IDENTITY columns -#501 - Added support for boolean conversion to Result, Record, - and Store -#503 - Allow for schema navigation via generated artefacts -#518 - Let stored procedures reference owner package - if applicable -#525 - Added NULLS {FIRST | LAST} clause to ORDER BY constructs -#528 - Added Factory.getDataType() convenience method -#530 - Added Factory.zero() and Factory.one() convenience methods - -API changes (jooq) ------------------- -#527 - Weakened type-safety on Field.nvl2() -#529 - Deprecated Factory.select(Object...), added .selectOne() - and .selectZero() instead - -API changes (jooq-meta) ------------------------ -#30 - Add ParameterDefinition for stored procedures, instead of - reusing ColumnDefinition -#499 - Add reference to TableDefinition in ColumnDefinition -#500 - Add AttributeDefinition for UDTDefinition, instead of - reusing ColumnDefinition - -Bug fixes ---------- -#369 - Adapt H2 relations generation to H2's correction of - information_schema.cross_references -#435 - Added integration tests for NESTED SELECTs holding LIMIT - clauses -#460 - Syntax error when using a field with a reserved name -#462 - Fixed Javadoc broken links -#473 - Don't cast when cast is unnecessary -#479 - INSERT statement should not set all fields for a table -#497 - Derby referential code generation is broken, for named - foreign keys -#498 - Oracle package content is generated in arbitrary order -#502 - Syntax error when creating an empty IN condition -#526 - Corrected Javadoc in Field.coalesce() - -Version 1.5.8 - April 29, 2011 -================================================================================ - -Finally, jOOQ now supports two important new RDBMS: -SQL Server and Sybase! - -Apart from this great enhancement, there is now also full support -for the non-SQL standard LIMIT clause, even in dialects where the -LIMIT clause is not supported natively (especially Oracle, but -also DB2, SQL Server and Sybase, which have limitations). jOOQ -simulates LIMITs by rendering nested selects filtering on ROWNUM -(Oracle) or on ROW_NUMBER() (DB2, SQL Server and Sybase). - -Other interesting additions are an increasing support for native -mathematical functions. More function support will be added in -future versions. - -Features --------- -#16 - Added support for SQL Server -#21 - Uniform implementation of the LIMIT clause. Implemented - LIMIT clause simulation through analytic functions, where - LIMIT is not supported natively -#97 - Added support for Sybase -#418 - Measure time of various steps in source code generation -#420 - Added support for proprietary SQL extensions "FOR UPDATE" - and "FOR SHARE" -#431 - Added additional statistics to generation log files -#432 - Unified the various "standard" ANSI INFORMATION_SCHEMA - implementations in the jooq-meta artefact -#436 - Added support for the modulo function -#438 - Added floor and ceil functions -#439 - Added support for mathematical functions (logarithms, - exponentials, sqrt) -#447 - Enhanced Field.add() and Field.subtract() to work for date - time fields, also - - -API changes ------------ -#428 - Created new Maven artefact jooq-meta to cleanly separate - database meta-data navigation from code generation -#458 - Decreased DSL verbosity for arithmetic operations and for - ordering - -Bug fixes ---------- -#417 - Restored warning when unknown column type is encountered - in source code generation -#419 - Corrected misleading Select.fetchOne(...) Javadoc -#421 - Optimised AbstractRecord's memory consumption -#448 - Corrected some Javadoc @see links -#449 - Changed Field.concatenate() to accept Field parameters - to avoid generic varargs warnings - -Version 1.5.7 - April 17, 2011 -================================================================================ - -This is the first release built with support of Maven thanks to -the help of some jOOQ users! - -The main new features in this release are the improved support -for serialisation/deserialisation of jOOQ objects through use of -the newly introduced "Attachable" interface. - -If using log4j or the newly supported slf4j logging framework -in debug/trace mode, there is the possibility to log query -building/execution time statistics. - -Apart from these new features, fixes were mainly done in the -fields of type casting, HSQLDB 2.1 upgrade support, stored -procedures with OUT, IN/OUT parameters. Please upgrade, if you -are using any of those features. - -If you extend jOOQ as a base implementation for source code -generation, be aware of the fact, that the jOOQ-codegen is -currently undergoing major changes. Expect the code generation -API to stabilise again in one of the next releases. - -Features --------- -#104 - Added maven dependency -#248 - Integrate UDT types with ARRAYs -#295 - Allow for attaching/detaching UpdatableRecords to/from - Configurations -#359 - Added statistics measurement to Query execution for debug - log level -#362 - Added deprecation configuration flag -#364 - Document unknown type in generated source code -#373 - Improve exception handling in code generation -#378 - Added support for Oracle stored functions with OUT - parameters -#382 - Added Factory.attach() methods to re-attach deserialised - Attachables -#394 - Add logging support for SLF4J -#398 - Allow to provide a DataType in Factory.constant() -#399 - Provide access to TypeUtils.convert() methods via DataType -#404 - Added trace logging for measuring the speed of various - query execution steps - -API changes ------------ -#358 - Enhanced DSL API to allow for HAVING clauses without - GROUP BY clauses -#367 - Make Store, Result, QueryPart "Attachable" -#374 - Introduce strategy pattern to code generation for future - support for advanced naming schemes -#375 - Decouple Database from Generator -#381 - Made DataType Serializable -#384 - Deprecated singleton QueryParts -#388 - Unify "internal" API using an Adapter pattern - -Bug fixes ---------- -#187 - Protect generated Record navigation methods against name - clashes -#266 - Added more thorough integration tests for dialect-specific - casting (including some fixes related to varchar types) -#360 - Added more integration tests for the DISTINCT clause -#361 - Add more checks in testInsertUpdateDelete() -#366 - Warn only once per ColumnDefinition, if a data type is - unknown -#377 - NullPointerException when generating invalid stored - function -#380 - Added integration tests to check for proper - serialisability -#386 - Fixed incompatibilities with HSQLDB 2.1.0 -#387 - Fixed unnecessary imports in some Oracle generated - Records -#389 - Fixed javac compiler warning in AbstractStoredObject -#391 - Cannot properly call stored procedures when IN/OUT - parameter is bound to NULL -#392 - Procedures with several OUT parameters may not register - OUT parameters correctly -#410 - Passing null VARRAY values to Oracle stored procedures - causes issues -#412 - limit(int) sets default offset incorrectly in some - dialects - -Version 1.5.6 - March 31, 2011 -================================================================================ - -This release consists mainly of code generation bug fixes and -minor API improvements and enhancements. - -The most important improvement is ticket #90, by which lazy -fetching and iteration over data is now supported. jOOQ lets you -keep a reference to a Cursor that has an open JDBC ResultSet, to -fetch data from on-the-fly. - -A few major code generation bugs were reported where the -generated code may cause ambiguity due to an inconsistent API. -This means that you will have to re-generate your schema after -upgrading to version 1.5.6. Some of your code may not compile -anymore, after this upgrade. - -Features --------- -#90 - Added possibility for lazy fetching of data -#208 - Added convenience methods for direct invocation of - sequences' currval() and nextval() attributes -#212 - Created one factory per dialect for better separation of - dialect-specific support -#213 - Generate a factory for each schema -#251 - Opened up base implementations for Field and Condition - to allow for custom implementations by client code -#274 - Integrate H2 ARRAY types with stored procedures -#292 - Documented usage of log4j and java.util.logging -#306 - Added support for the NULLIF function -#319 - Added Field.between(Field, Field) method -#320 - Added trace logging for variable binding and SQL - generation methods -#323 - Added Field.in(Field...) method -#325 - Include release version number in delivered .jar files -#328 - Improved configuration setup documentation page -#333 - Let Result implement Serializable -#334 - Added fetchMap() convenience methods -#335 - Added more functions and aggregate functions examples to - documentation -#338 - Visually improve code generation logging -#339 - Removed skipping of unreferenced UDT's, ENUM's and ARRAY's -#342 - Improved generated referential code by using fetch() and - fetchOne() API -#356 - Let UpdatableRecord.store() and delete() return an int - to indicate whether the record was actually modified - -API changes ------------ -#233 - Allow for joining TableLike instead of Table -#337 - Added generic type > to - InsertSelectQuery -#341 - Fixed API flaw where SelectOnConditionStep.and() methods - and similar ones returned SelectConditionStep, instead of - SelectOnConditionStep - -Bugfixes --------- -#69 - Corrected referential code generation for foreign keys - that reference non-primary unique keys -#85 - Corrected referential code generation for multi-field - foreign keys -#121 - Covered more Factory.executeXXX() methods with integration - tests -#318 - Fixed NullPointerException when executing SELECT * from - aliased tables -#321 - BetweenCondition does not bind left hand side Field - correctly -#322 - InCondition does not bind left hand side Field correctly -#326 - Avoid method overloading where binding to Object - may lead to compile-time ambiguities (with javac) -#343 - Add more foreign key navigation method integration tests -#347 - Add explicit integration tests for schema artefacts - excluded from code generation -#350 - Disambiguate navigation methods if several foreign keys - reference the same entity -#352 - Disambiguate navigation methods if a table ending on S - references itself -#353 - Added integration test for compilation of generated - artefacts with javac (as opposed to the Eclipse compiler) -#355 - Error when storing an UpdatableRecord that has no changed - values - -Version 1.5.5.2 - March 15, 2011 -================================================================================ - -A critical bug was reported from the 1.5 release stream where -stored functions did not render their parameters in correct order - -Features --------- -#302 - Map Oracle's NUMBER data type to java.lang.Number in - stored procedures, stored functions - -Bugfixes --------- -#317 - StoredFunctionImpl.asField() renders parameters in wrong - order - -Version 1.5.5.1 - March 13, 2011 -================================================================================ - -In version 1.5.5, there was a fatal bug breaking Derby source code generation. -Only the Derby dialect is affected. Please update immediately, if you are using -jOOQ's Derby integration - -Bugfixes --------- -#315 - Generated master data records are not sorted by PK -#316 - Derby code generation fatally broken - -Version 1.5.5 - March 12, 2011 -================================================================================ - -This version is released early as there are some important bugfixes. Additional -improvements include: - -- Improved DSL related to conditions in HAVING and JOIN clauses -- Support for Oracle-style functions, such as NVL, NVL2, COALESCE - DECODE, etc - -Features --------- -#304 - Add support for Oracle NVL function -#305 - Add support for COALESCE function -#308 - Add support for Oracle NVL2 function -#311 - Add support for Oracle DECODE function - -API changes ------------ -#223 - Enhance DSL to accept and(), or() and similar methods in JOIN steps -#224 - Enhance DSL to accept and(), or() and similar methods in HAVING steps - -Bugfixes --------- -#297 - Fixed Factory.concatenate() function -#298 - Added integration tests for nested selects in HAVING clause -#300 - Added integration tests for nested selects in JOIN clause -#303 - Javadoc correction -#307 - Accelerated integration tests -#309 - Fixed JDBC variable binding issue related to Conditions where the lhs is - a function (e.g. stored function) and the rhs is a constant -#310 - Fixed issue where fetchOne() methods throw NullPointerException if no - result record is available -#312 - Fixed issue where Field.equal(...) methods rendered unexpected SQL when - rhs null is cast to a type -#313 - Fixed Derby cast type for VARCHAR -#304 - Let the DerbyDataType default for java.lang.String be VARCHAR, not LONG - VARCHAR - -Version 1.5.4 - March 04, 2011 -================================================================================ - -Feature #243 required a minor API change in the base classes of generated source -code. This means you have to re-generate all your jOOQ artifacts in order to -migrate to 1.5.4. The artifacts themselves should be regenerated in a compatible -way, such that your client code should not be affected. If this is not the case, -please report a ticket here: - - https://sourceforge.net/apps/trac/jooq/newticket - -Apart from the Derby RDMBS and some new data type support, there have been many -new convenience methods added all over the API. For instance, if type-safety is -not really a requirement, there are lots of possibilities to use plain SQL -directly in the DSL. In that case, data can be accessed from Record, Results, -not only through Field, but also through field names or indexes. - -Check out the updated documentation (soon) here: - - https://sourceforge.net/apps/trac/jooq/wiki/Examples - -- Support for the Derby RDBMS -- Support for casting. This allows for even greater flexibility - in cases where jOOQ cannot 100% ensure type-safety -- Support for ARRAY types. Oracle, Postgres, HSQLDB and H2 ARRAY - types are now supported natively as regular bindings in - jOOQ's Field -- Support for dialect-specific data types. CHAR, VARCHAR, CLOB - are no longer treated equally as java.lang.String. Their - type heritage is also generated -- More sequence support -- Lots and lots of bug fixes - -Features --------- -#95 - Support for the Derby RDMBS -#163 - Add support for JDBC type ARRAY (with Postgres) -#209 - Add support for DB2 sequences -#210 - Add support for H2 sequences -#211 - Add support for HSQLDB sequences -#215 - Support for SQL casting using as cast type -#246 - Support for SQL casting using dialect-specific data types -#254 - Add HSQLDB support for ARRAY types -#256 - Add Oracle support for VARRAY types -#257 - Integrate ARRAY types with stored procedures -#261 - Add a global type mapping to the generated Schema object -#267 - Add DataTypeDefinition for further abstraction of data types in code - generation -#269 - Add H2 support for ARRAY types -#290 - If log4j is not on the classpath, use java.util.logging instead, as - fallback - -API Changes ------------ -#156 - Allow for results to be accessed by index, not by field -#218 - Corrected bad method signature: Record.getValueAsLong(Field, Integer) -#219 - Extended Result and Select API's to be more similar to that of Record -#232 - Add more convenience plain SQL support to the API -#235 - Add convenience methods to Record, Result and Select for access of data - via field name -#243 - Refactor DataType implementations in order to allow for the use of - generics -#259 - Add field type to database meta data (ColumnDefinition) -#260 - Add field type to database meta data (Field) -#262 - Add default behaviour for Record.getValue(Field) -#276 - Add Javadoc as a ZIP file to the jOOQ distribution - -Bugfixes --------- -#125 - Add more plain SQL integration tests -#191 - Add more integration tests for nested unions -#205 - Implemented workaround for handling Postgres stored functions with UDT - OUT parameters -#214 - Fixed NPE when generating a stored function with an unknown parameter - type -#216 - Fixed some cases where binding of BigInteger is not done correctly -#220 - Syntax error when using select statement in a CASE clause -#221 - Corrected integration tests for combined update and select statements -#222 - Added integration test for INSERT statements having nested SELECT - statements for their fields -#225 - Correctly cast array types in Postgres -#230 - Potential misuse of Blob and Clob in H2's JDBC types -#239 - Factory.fetchAny() is not implemented for SQLite -#244 - Fixed peculiar MySQL casting support where cast types do not match any - data types -#245 - Fixed NPE when reading null dates in SQLite -#249 - Added ARRAY type integration tests -#255 - Stored procedure bind variables get mixed up when any argument is null -#263 - Correctly handle Postgres function overloading -#264 - Ambiguous funciton calls when calling overloaded functions with null - parameter -#281 - Handle compilation errors when generating stored procedures with > 254 - parameters -#283 - Fixed compilation errors in generated source code for Oracle's UDT table - type -#284 - Fixed compilation errors in generated source code for Oracle procedures - in packages, when they have no parameters -#285 - Fixed compilation errors in generated source code for Oracle tables with - the same name in different schemata -#286 - Fixed name collisions in generated objects with the java.lang.* package -#288 - Prevent the creation of UNION queries with bad syntax in MySQL -#289 - Correctly alias fields within UNION queries for some dialects, which then - only require the "AS" keyword -#291 - Cannot create an aliased field called "year" in Postgres - -Version 1.5.3 - January 13, 2011 -================================================================================ - -- Lots of stored procedure support was implemented -- Support for sequences was added -- The final decision to postpone support for DB2 UDT's was made -- Some code generation bugfixes - -Features --------- -#36 - Added stored procedure / stored function support for HSQLDB -#140 - Added support for Oracle sequences -#147 - Added support for H2 stored functions -#162 - Correctly integrate UDTs with stored procedures -#170 - Added support for Postgres stored functions -#186 - Added support for more Oracle PL/SQL simple data types -#193 - Simulate support for H2 "stored procedures" -#195 - Simulate support for Postgres "stored procedures" -#206 - Added support for Postgres sequences - -API changes ------------ -#180 - Improved DSL for constant values -#181 - Allow for referencing Field in function argument list -#189 - Renamed convenience methods in org.jooq.Record -#207 - Add fetchOne(Field) method to org.jooq.Select API - -Bugfixes --------- -#182 - Protected generated Record classes against clashes with inherited methods -#183 - Fixed NullPointerException, when generating master data tables with - NULL fields -#184 - Fixed IllegalArgumentException, when a data type is present in the - schema, but unavailable in code generation logic -#185 - Code generation should not fail when single elements cannot be generated -#188 - Improved integration tests for stored procedures / functions / packages -#196 - Increase RDMBS version compatibility by avoiding "SELECT *" in code - generation logic -#199 - Added integration tests for stored procedures in RDBMS that do not - support OUT parameters -#201 - Fixed issue in DB2 where stored procedures without parameters were not - generated. -#202 - Added integration tests for stored procedures / functions without - parameters - -Version 1.5.2 - December 27, 2010 -================================================================================ - -- Improved support for stored procedures, also in packages -- A minor API change was inevitable to implement #173. The API change only - concerns the INTERNAL API. Deprecation marks are added and deprecated items - will be removed in 1.6.0 -- Experimental SQLite database support -- Some important bug fixes - -Features --------- -#25 - Added support for Oracle packages -#114 - Added support for Oracle UDTs -#145 - Added support for the SQLite database -#150 - Generate static convenience methods for stored procedures / functions -#151 - Generate static convenience methods for stored function fields -#152 - Generate meaningful serialVersionUID in generated classes -#173 - Added support for EQUIVALENT schemata - -API changes ------------ -#159 - Added convenience method List getValues(Field) to Result -#165 - Added convenience methods for creating EXISTS clauses -#169 - Improved DSL for WHERE clauses - -Bugfixes --------- -#68 - Prevent issues originating from overloaded stored procedure names, - generating identical Java class names -#153 - Fixed issue with generated code for DB2 stored functions -#154 - Fixed issue with generated code for DB2 stored functions -#155 - Fixed issues with database NULL not being mapped correctly to Java NULL - when selecting values that have a primitive type (int, long, etc) -#158 - Potential ClassCastException when using Field -#171 - Corrected issue related to selection of default schema in DB2 -#177 - Fixed issue related to generated code for tables or UDTs without columns - - -Version 1.5.1 - December 13, 2010 -================================================================================ - -- H2 database support thanks to Espen Stromsnes -- Improved stored procedure support - -Features --------- -#96 - Added H2 database support -#101 - Added stored procedure / stored function support for Oracle -#138 - Added stored procedure support for DB2 -#146 - Added support for DB2 functions - -API changes ------------ -#143 - Added convenience methods to Record - -Bugfixes --------- -#84 - Implemented referential code generation for foreign keys that do not - match their primary keys' types -#141 - Encoding problem in generated master data classes - -Version 1.5.0 - November 22, 2010 -================================================================================ - -- A big one. Major API changes / improvements -- Added lots of convenience methods -- UDT support -- Enum support -- DB2 support thanks to Espen Stromsnes -- "Light" dependency to log4j added. jOOQ will still run without it - -Features --------- -#1 - Create support for UDTs (so far only for PostgreSQL) -#15 - Added DB2 support -#60 - Added support for nested selects in INSERT and UPDATE statements -#83 - Added log4j logging to code generation and runtime -#87 - Add support for arithmetic expressions -#105 - Added support for ENUM data types, where applicable (MySQL and PostgreSQL - so far) -#110 - Added execute and fetch convenience methods -#111 - Added missing "select distinct" support -#122 - Annotate generated classes with javax.annotation.Generated -#123 - Generate user enum fields from data values (master data) -#124 - Added PlainSQLTable -#127 - Added not() operator to Condition -#135 - Added convenience methods andNot() and orNot() in Condition - -API changes ------------ -#89 - Removed support for DataSource. jOOQ is not a transaction manager -#92 - Added SortField type to be used for sorting -#99 - Provide better access to functions (No more FunctionFactory) -#116 - Merge Manager functionality into Factory -#118 - Improve API of org.jooq.Field -#119 - Improve subquery condition API -#132 - Reduced much of the select query API -#134 - Better separation of SelectQuery and SimpleSelectQuery - -Bugfixes --------- -#109 - Error when executing select * if generated schema does not match actual - schema -#115 - Fix various "null" pseudo field issues -#126 - Error when selecting a single field from a union nested select -#129 - Fixed performance issue in Oracle code generation for very large - databases - - -Version 1.4.4 - November 22, 2010 -================================================================================ - -Unreleased version, fixes included in 1.5.0 - -Bugfixes --------- - -#133 - JoinCondition does not take comparison operator - -Version 1.4.3 - October 25, 2010 -================================================================================ - -Some more bugfixes - -Bugfixes --------- - -#71 - Generated code does not compile, when foreign key and primary key have a - data type mismatch -#73 - In Oracle generated code, multi-field foreign keys may generated bad - relations code -#82 - Conversion of literals to camelcase fails if numbers are involved - -Version 1.4.2 - October 22, 2010 -================================================================================ - -Various bugfixes and minor improvements - -Features --------- -#66 - Add support for CASE or DECODE expression - -API changes ------------ -#77 - Functions should not extend FieldImpl, but a new AbstractField -#78 - QueryPart pollutes declared method space of its implementations. Hide it - by indirection - -Bugfixes --------- -#64 - Code generation fails when foreign key references a unique key that is not - the primary key. Code generation for these cases is omitted -#67 - When loading properties files, a leading / seems to be mandatory. This is - preventing users from correctly setting up jOOQ the first time -#70 - Add support for Oracle datatype TIMESTAMP(6) -#72 - Name clashes in generated Tables -#75 - Constant does not bind its values. -#76 - Constant should not render strings all the time -#79 - Constants are not properly escaped -#80 - Position function does not bind any variables -#81 - Add cast function to Constants in HSQL - -Version 1.4.1 - October 18, 2010 -================================================================================ - -Oracle patch release - -Features --------- -#63 - Generate referential functionality for Oracle - -Version 1.4.0 - October 17, 2010 -================================================================================ - -Support for PostGreSQL was added. -Added lots of OR-mapping functionality. -There is a general API change due to various new features. - -Features --------- -#14 - Add PostGreSQL support -#40 - Resolve foreign keys. Allow for navigation between objects. -#42 - Add PlainSQLField -#45 - Add "dirty" flag to Record's values. This allows for updating only - relevant data. -#47 - Complete implementation for UPDATE, INSERT, DELETE statements. Added some - missing functionality. -#48 - Add more support for Date, Time, Timestamp fields. -#51 - Add a org.jooq.impl.Manager class that provides common utility methods for - CRUD operations - -API changes ------------ -#10 - Add second generic type . This is a prerequisite for - many OR-mapping features -#18 - Use org.jooq.Record in InsertQuery and UpdateQuery -#46 - Create UpdatableRecords as a prerequisite for JPA and true OR-mapping. - These records support store() and delete() methods -#52 - Add default constructor in generated Records. -#53 - Add refresh functionality to UpdatableRecords. See also #46 -#54 - Add a state to the factory class -#56 - Reduce API, remove unnecessary Condition subinterfaces -#57 - Reduce API, remove unnecessary QueryPart interfaces - -Bugfixes --------- -#49 - NullPointerException when generating relations on schema subset -#58 - Count function renders bad SQL in various dialects -#59 - Exception when selecting unaliased functions in queries - -Version 1.3.0 - August 24, 2010 -================================================================================ - -Support for HSQLDB was added. -There is a major API change due to #44. - -Features --------- -#29 - Generate primary keys and foreign keys in Oracle code generation -#34 - Add support for HSQLDB -#39 - Generate primary keys and foreign keys in HSQLDB code generation -#41 - Add documentation to QueryFactory and Functions - -API changes ------------ -#23 - Add support for more advanced joins -#32 - Merge SelectQuery and ResultProviderQuery interfaces -#44 - Let Query methods return "this" - -Bugfixes --------- -#35 - Add unit tests for HSQLDB support -#37 - Syntax error in combined select queries! The usage of combined queries in - MySQL may still be a bit awkward. Keep an eye out for further fixes -#43 - Join with aliased tables doesn't work - -Version 1.2.0 - August 21, 2010 -================================================================================ - -The added Oracle support is now unit tested and more stable. The Oracle NUMBER -data type is mapped more precisely to Java types. - -Features --------- -#12 - Model primary keys and foreign keys in generated code -#22 - Improve mapping of Oracle NUMBER data type -#26 - Add Plain SQL QueryParts -#27 - Add support for HAVING clause - -Bugfixes --------- -#24 - Add Unit tests for oracle database (and fixed bugs) -#31 - Pull up addOrderBy() methods from SelectQuery to ResultProviderQuery - -Version 1.1.0 - August 17, 2010 -================================================================================ - -The main new feature is the Oracle support. Wait for Version 1.1.1 for that -support to be stabilised, as there are no Oracle unit tests running against an -Oracle database yet. - -Features --------- - -#2 - Add support for inner / nested selects -#3 - Add more function support -#4 - Implement filtering functionality for code generation -#6 - Add Oracle Support -#9 - Create true POJO's (implementing org.jooq.Record) with getters and setters -#17 - Make org.jooq.impl.Parameter independent of Field - -Bugfixes --------- - -#11 - Code generation does not remove files - -Version 1.0.1 - August 14, 2010 -================================================================================ - -Features --------- - -#5 - Prevent code regeneration, if no changes were made -#7 - Implement ant task for code generation - -Version 1.0.0 - August 14, 2010 -================================================================================ -Initial Release \ No newline at end of file diff --git a/jOOQ-website/inc/RELEASENOTES-3.2.txt b/jOOQ-website/inc/RELEASENOTES-3.2.txt deleted file mode 100644 index ce8cd8e8ff..0000000000 --- a/jOOQ-website/inc/RELEASENOTES-3.2.txt +++ /dev/null @@ -1,3691 +0,0 @@ -jOOQ Release notes -================== - -For an interactive overview, see also -http://github.com/jOOQ/jOOQ/issues - -For a formatted text version, see -http://www.jooq.org/notes.php - -For a text version, see -http://www.jooq.org/inc/RELEASENOTES.txt - -Version 3.1.0 - June 30, 2013 -================================================================================ - -With this release, MariaDB is now finally officially supported by jOOQ! MariaDB -is a MySQL fork, which currently has a very similar feature set as its parent. -As such forks tend to evolve into different directions very quickly, it makes -sense to add formal support in jOOQ. - -SQL Server 2012 is another SQL dialect that is now officially supported in jOOQ, -allowing to make use of the newly supported ROWS UNBOUNDED PRECEDING and similar -windowing clauses, as well as the long awaited OFFSET .. FETCH clause. From now -on, jOOQ SQLDialect.family() allows to define a super-set of SQL dialects by the -same vendors with only subtle differences. - -POJO mapping is taken to the next level. jOOQ opened up its internal -DefaultRecordMapper providing useful Record to POJO mapping algorithms. But your -custom domain model might be more complex. Instead of creating the next -impedance mismatch, trying to foresee your own mapping algorithm needs, jOOQ -allows you to inject a RecordMapperProvider into your Configuration, allowing to -override record mapping with arbitrary behaviour. - -This minor release is also a strong step forward towards a more unified SQL -experience, where row value expression IN predicates and comparison predicates -are simulated with an equivalent EXISTS predicate. See this blog post for more -details: -http://blog.jooq.org/2013/05/03/sql-query-transformation-fun-predicates-with-row-value-expressions - -Note, that for technical reasons, jOOQ 3.0.0 could not yet be integration -tested with DB2, Ingres, and Sybase ASE. Consider using jOOQ 2.6, instead - -Features and improvements -------------------------- -#552 - Add SQLDialect.family() to group several SQLDialect versions of the same - RDBMS -#742 - Improve MySQL Stored Procedure support using MySQL 5.5's - INFORMATION_SCHEMA.PARAMETERS dictionary table -#833 - Add integration tests for both jconn3 and jTDS JDBC drivers for Sybase - and SQL Server -#963 - Map SQL Server TINYINT to UByte -#965 - Add support for Sybase SQL Anywhere unsigned number types -#1373 - Add Field DSL.coerce(Field, DataType) and similar methods, - to coerce a field to a given data type (as opposed to casting it) -#1836 - Document using jOOQ with Spring for transaction support -#1885 - Add test to count opening and closing of Statements and ResultSets by - jOOQ -#2022 - Add support for SQL Server 2012 windowing clauses in window functions -#2058 - Add support for the MariaDB database -#2095 - Document 's feature of forcing a column onto a SQL type -#2235 - Add Result DSLContext.fetchFromTXT() to allow for loading results - that were exported using Result.format() -#2236 - Add DSLContext.batch(String...) and batch(String, Object[]...) to easily - create batch statements from SQL strings -#2291 - Add DSLContext.fetchAny(Table, Condition) method and others -#2299 - Allow for setting ResultSet flags (e.g. - ResultSet.TYPE_SCROLL_INSENSITIVE through - ResultQuery.resultSetConcurrency(), resultSetType(), - resultSetHoldability() -#2310 - Add DSL.using(Connection) and DSL.using(Connection, Settings) which - auto-detect the SQLDialect from the jdbc url -#2311 - Add Configuration.recordMapperProvider() to override jOOQ's internal - default ReflectionMapper -#2339 - Support CUBRID 9.1's new features -#2344 - Add a new ControlFlowSignal that is used to explicitly jump out of a - control flow -#2355 - Add support for Postgres / HSQLDB's TRUNCATE [...] RESTART / CONTINUE - IDENTITY -#2357 - Add support for Postgres' TRUNCATE [...] CASCADE statement -#2395 - Simulate row value expression IN predicate using EXISTS -#2414 - Add Setting to influence parameter rendering (indexed, named, inlined) -#2416 - Add Result.intoXML(org.xml.sax.ContentHandler) to generate a SAX event - stream from a jOOQ result -#2423 - Add support for SQL Server 2012 native OFFSET .. FETCH clause -#2424 - Integration-test jOOQ with the SQLite xerial driver -#2426 - Add DSLContext.batch(Query, Object[]...) as a convenience for calling - batch(Query).bind(Object...).bind(Object...) -#2427 - Add more Javadoc to ResultQuery.fetchResultSet() explaining that - underlying PreparedStatements are closed with ResultSet.close() -#2428 - Simulate row value expression comparison predicates using EXISTS -#2430 - Add CustomQueryPart for use with plain SQL and other places -#2434 - Add Field.compare(Comparator, Select) and Field.compare(Comparator, - QuantifiedSelect) to allow for more dynamic SQL -#2437 - Add RenderContext.paramType() and deprecate RenderContext.inline() and - .namedParams() -#2440 - Expose the DataSource contained in the DataSourceConnectionProvider -#2441 - Add DSL.cast(Field, XXX) for increased API consistency -#2446 - Add JDBCUtils.dialect(Connection) to "guess" the jOOQ SQLDialect from a - JDBC Connection -#2466 - Add a public DefaultDSLContext implementation that can be used by users - to override the default behaviour -#2485 - Allow for treating Field as Condition -#2496 - Add support for SQL Server 2012 sequences -#2499 - Add JDBCUtils.safeClose(Connection) -#2509 - Expose CHECK constraints in jOOQ-meta -#2519 - Add Record.from(Object, Field...) from(Object, String...), - from(Object, int...) to copy only a select set of values from a POJO, - Array, Map -#2521 - Add {Row|Record}.fields(Field...), {Row|Record}.fields(String...), - {Row|Record}.fields(int...) to extract Field[] from a row or record -#2527 - Add org.jooq.tools.jdbc.DefaultResultSet to provide a default ResultSet - delegation implementation -#2531 - Add integration tests mapping binary(16) to java.util.UUID -#2532 - Let batch executions debug-log executed queries -#2535 - Convert.convert(Object, Class) should support simple casting -#2547 - Document some SQL language to jOOQ DSL API mapping rules in the manual -#2566 - Upgrade integration test jTDS version to 1.3.1 -#2571 - Add a new RecordType type to make up for the missing - recursive type definition on Record - -API changes (backwards-incompatible) ------------------------------------- -#2468 - API bug: MergeNotMatchedSetStep.set(Field, Select) returns - MergeMatchedSetMoreStep instead of MergeNotMatchedSetMoreStep - -Bug fixes ---------- -#1520 - Handle Ingres', SQLite, SQL Server's, Sybase ASE's limitations of 1024, - 999, 2100 or 2000 maximum bind values per query -#2135 - Postgres ENUM data type isn't supported correctly, if the ENUM needs - full qualification -#2323 - NullPointerException when calling Schema.getTables() on a meta schema - with SQLite -#2401 - Bad package name generated when contents are not trimmed -#2404 - Cannot combine with if both match -#2412 - jOOQ Meta does not recognise non-uppercase IN, OUT, INOUT keywords in - MySQL stored procedures -#2413 - Suppress warnings in generated code (@SuppressWarnings("all") doesn't - suppress "rawtypes" warnings with javac) -#2418 - RenderContext.data() is not passed on to QueryParts when being rendered -#2422 - Upgrade RSyntaxTextArea to 2.0.7 -#2432 - Manual refers to a package-private DefaultConfiguration constructor -#2443 - AbstractStoreQuery.execute() doesn't correctly operate on the - Configuration's ConnectionProvider in SQLite IDENTITY fetching queries -#2445 - JDBCDatabase doesn't recognise Oracle's VARCHAR2 data type (and other - vendor-specific data types) -#2447 - Tables collected through DSLContext.meta() return duplicate columns if - multi-schema environments contain identical tables -#2449 - JDBCDatabase doesn't use DataType.length(), precision(), and scale() -#2450 - Cannot set precision on TINYINT, SMALLINT, INT, BIGINT data types -#2461 - Generator Encoding Error for Database-Objects with Unicode-Names -#2464 - Bad SQL rendered from DELETE statements with aliased tables -#2469 - NullPointerException in AbstractResultQuery.fetchOneMap() -#2477 - MySQL's unsigned types cannot be used in other dialects -#2478 - IngresDatabase erroneously joins IIINDEXES to get constraint columns, - rather than using IIKEYS -#2494 - Possible null pointer passed to ConnectionProvider.release() -#2502 - Code generation fails to generate valid java for stored procedures that - accept parameters named configuration. -#2506 - SQLDialectNotSupportedException on DSL.inline(T, Class), when jOOQ's - internals are not (yet) properly initialised -#2515 - Compilation errors when generating code for artefacts that differ only - by a trailing underscore(s): A and A_ and A__ -#2523 - Statement.close() may be called upon previously closed statements -#2528 - Combining renderFormatted with inlined bind variables will change bind$ - values when they contain newlines -#2562 - Bad SQLDialect reference in Oracle and MySQL package-info.java -#2569 - Error when rendering SQL Server procedures with Settings.renderSchema - == false - -Version 3.0.0 - April 28, 2013 -================================================================================ - -This major release is a great move towards better integration of SQL as a -language in Java. Unlike any other database abstraction framework, jOOQ now -formally supports the notion of "row value expressions". The jOOQ API uses -Xtend-generated API types from Row1 .. Row22, as well as Record1 .. Record22 to -bring you even more compile-time typesafety on a record-level. - -In SQL, you can typesafely write - -
    -  SELECT * FROM t WHERE (t.a, t.b) = (1, 2)
    -  SELECT * FROM t WHERE (t.a, t.b) OVERLAPS (date1, date2)
    -  SELECT * FROM t WHERE (t.a, t.b) IN (SELECT x, y FROM t2)
    -  UPDATE t SET (a, b) = (SELECT x, y FROM t2 WHERE ...)
    -  INSERT INTO t (a, b) VALUES (1, 2)
    -
    - -In jOOQ, you can now (also typesafely!) write - -
    -  select().from(t).where(row(t.a, t.b).eq(1, 2));
    -  // Type-check here: ----------------->  ^^^^
    -  select().from(t).where(row(t.a, t.b).overlaps(date1, date2));
    -  // Type-check here: ------------------------> ^^^^^^^^^^^^
    -  select().from(t).where(row(t.a, t.b).in(select(t2.x, t2.y).from(t2)));
    -  // Type-check here: -------------------------> ^^^^^^^^^^
    -  update(t).set(row(t.a, t.b), select(t2.x, t2.y).where(...));
    -  // Type-check here: --------------> ^^^^^^^^^^
    -  insertInto(t, t.a, t.b).values(1, 2);
    -  // Type-check here: ---------> ^^^^
    -
    - -This also applies for existing API, which doesn't involve row value expressions: - -
    -  select().from(t).where(t.a.eq(select(t2.x).from(t2));
    -  // Type-check here: ---------------> ^^^^
    -  select().from(t).where(t.a.eq(any(select(t2.x).from(t2)));
    -  // Type-check here: -------------------> ^^^^
    -  select().from(t).where(t.a.in(select(t2.x).from(t2));
    -  // Type-check here: ---------------> ^^^^
    -
    - -And for UNIONs - -
    -  select(t1.a, t1.b).from(t1).union(select(t2.a, t2.b).from(t2));
    -  // Type-check here: -------------------> ^^^^^^^^^^
    -
    - -These type-checks are preformed by your Java compiler, considering the generic -type information of your SQL statement's Record data types. These include: - -- Record1 -- Record2 -- Record3 -- ... -- Record22 - -The highest degree of typesafety was chosen to be 22, to match Scala's Tuple22, -Product22 and Function22 types. Higher degree records are still supported by -jOOQ, just without the additional typesafety. - -This Record typesafety is applied to - -- SELECT statements -- INSERT and MERGE statements: the VALUES() clause -- UPDATE statements: SET A = (SELECT...) -- UPDATE statements with row value expressions: SET (A, B) = (SELECT...) -- Quantified comparison predicates: ANY(SELECT...) and ALL(SELECT...) -- Comparison predicates: = (SELECT...) -- IN predicates: IN (SELECT...) -- BETWEEN predicates: BETWEEN (SELECT...) AND (SELECT...) -- Generated records -- The new VALUES() constructor -- Scala integration for conversion of jOOQ Record[N] to Scala's Tuple[N] - -Apart from this major improvement, there had been many minor changes throughout -the jOOQ API. Here are some important ones: - -- Factory has been split into DSL (static QueryPart construction) and - DSLContext (Query execution, "attached" QueryPart construction). This greatly - improves the overall DSL experience while allowing for more fine-grained - Executor lifecycle control. -- A ConnectionProvider has been introduced as an abstraction of the JDBC - Connection lifecycle. The standalone Connection and pooled DataSource modes - are still supported, but you can now inject your own ConnectionProvider for - more control. -- A lot of performance improvements have been implemented within the jOOQ API - removing most of the overhead caused by jOOQ when fetching data from JDBC -- A JDBC Mock API has been added to help you create simple unit tests for your - application built on top of jOOQ. -- A VALUES() constructor is now supported, and derived column lists to alias - tables and columns in one go. -- The data type API has been greatly simplified. This allowed for the - introduction of runtime precision, scale, and length information. -- CRUD has been improved through many more CRUD batch operations, explicit - INSERT and UPDATE (in addition to store()), and explicit handling of jOOQ's - internal changed flags. - -As this is a major release, some backwards-incompatibilities were inevitable. -For those users among you, migrating from jOOQ 2.x to 3.0, here are a couple of -useful hints: -http://www.jooq.org/doc/3.0/manual/reference/migrating-to-3.0/ - -Note, that for technical reasons, jOOQ 3.0.0 could not yet be integration -tested with DB2, Ingres, and Sybase ASE. Consider using jOOQ 2.6, instead - -Note, that further code generation and model API improvements were postponed to -a later release - -Note, previous release candidates contained more features, improvements and bug -fixes. See their respective sections for details. - -Features and improvements -------------------------- -#2410 - Add some more API usage examples to the section about ResultSet fetching -#2415 - Add Constants.MINOR_VERSION and Constants.FULL_VERSION for internal and - external reuse - -Bug fixes ---------- -#1998 - Wrong screenshots in the manual's section about code generation. - jooq-meta.jar is missing -#2407 - Fix bad references to pre-3.0 Factory in Javadoc - -Version 3.0.0 (RC3) - April 12, 2013 -================================================================================ - -This major release is a great move towards better integration of SQL as a -language in Java. Unlike any other database abstraction framework, jOOQ now -formally supports the notion of "row value expressions". The jOOQ API uses -Xtend-generated API types from Row1 .. Row22, as well as Record1 .. Record22 to -bring you even more compile-time typesafety on a record-level. - -See release 3.0.0 for more information. - -Features and improvements -------------------------- -#2195 - Remove the standalone tutorial, link to the manual -#2321 - Implement various Key.toString() methods -#2329 - Add Javadoc to Configuration.executeListenerProviders() -#2331 - Add hint to the manual about mvn eclipse:clean and eclipse:eclipse when - building jOOQ -#2363 - Change the readme file to use Markdown -#2366 - Add org.jooq.util.example package to jOOQ-codegen with some example - GeneratorStrategies -#2372 - Add aliases for arithmetic operators to be able to use Groovy default - operator overloading -#2389 - Make org.jooq.impl.DefaultConfiguration public -#2392 - Add Configuration.set() methods. They should allow for modifying a - Configuration -#2396 - Add DSL.function(Name, Class, Field...) and - DSL.function(Name, DataType, Field...) to allow for custom, - fully-qualified function references - -API changes (backwards-compatible) ----------------------------------- -#2378 - Allow for overriding getIdentity() and getReferences() in CustomTable - -API changes (backwards-incompatible) ------------------------------------- -#2328 - Remove UpdatableTable marker interface, pulling up methods to Table -#2342 - Change Configuration.data() to return Map -#2343 - Decouple lifecycle of Configuration and ExecuteContext -#2350 - Do not statically reference a Connection from GenerationTool -#2353 - Decouple org.jooq.Context from Configuration. Choose composition over - inheritance -#2362 - Decouple org.jooq.DSLContext from Configuration. Choose composition over - inheritance -#2379 - Replace 3.0-RC1 Executor type by a contextual DSL type constructed from - DSL.using() -#2380 - Rename org.jooq.impl.Factory to org.jooq.impl.DSL -#2382 - Let DAO reference a Configuration instead of a DSLContext -#2388 - Replace Configuration's List with - ExecuteListenerProvider[] to simplify correct and thread-safe client - implementations -#2390 - Change Configuration API to reflect jOOQ-style getter / setter naming -#2391 - Rename dialect-specific Factories [Dialect]Factory to [Dialect]DSL -#2399 - Remove support for the USE statement - -Behaviour changes (backwards-incompatible) ------------------------------------------- -#2351 - Relax ConnectionProvider contract, allowing acquire() to return new - Connections even before release() is called - -Bug fixes ---------- -#1868 - Cursor.close() doesn't terminate the ExecuteListener life cycle -#2325 - "HsqlException: incompatible data type in conversion" when binding a - UUID[] to an HSQLDB prepared statement -#2327 - Compilation error in generated tables, when a table contains a UNIQUE - key but no PRIMARY key -#2332 - Documentation example regarding DSL.concat() does not compile -#2336 - jOOQ 3.0 regression: NoClassDefFoundError caused by missing log4j - dependency -#2338 - Tutorial example unclear: There are three artefacts in Maven, not one -#2346 - org.jooq.Meta's generated Schema and other objects are Serializable, but - their enclosed Meta instance is not -#2347 - Let equals() implementations succeed early on identity -#2354 - Single page manual display errors on Firefox -#2361 - Inaccurate Configuration Javadoc explaining wrong ExecuteListener - lifecycle -#2367 - SQLite identifiers that collide with keywords should be quoted -#2381 - Do not add TableFieldImpl to table in constructor of TableFieldImpl -#2385 - fetchOne() and fetchLazy() don't terminate the ExecuteListener life - cycle when an exception occurs -#2393 - Fully qualified name not used for user-defined aggregate function - -Version 3.0.0 (RC2) - March 8, 2013 -================================================================================ - -This major release is a great move towards better integration of SQL as a -language in Java. Unlike any other database abstraction framework, jOOQ now -formally supports the notion of "row value expressions". The jOOQ API uses -Xtend-generated API types from Row1 .. Row22, as well as Record1 .. Record22 to -bring you even more compile-time typesafety on a record-level. - -See subsequent release candidates or release 3.0.0 for more information. - -Features and improvements -------------------------- -#2200 - Add Executor.fetchCount(Select) and Select.fetchCount() to replace - the projection by a COUNT(*) query -#2244 - Add section to the manual indicating that the jOOQ generator can only - handle schemas of a certain size -#2255 - Add code generation option to avoid the generation of "global object - references" -#2257 - Add List Database.getIdentities(SchemaDefinition) - for convenience to jooq-meta -#2258 - Restore private and deprecated versions of the Factory constructors, - adding some Javadoc about the changes between jOOQ 2.x and 3.0 -#2270 - Add section to the manual indicating how to build jOOQ with Maven -#2272 - Add a paragraph to the manual's preface, explaining "why not just use - SQL"? -#2281 - Add Result Executor.fetchFromStringData(List) in order - to reuse logic from fetchFromCSV -#2285 - Add more verbosity to the code generator, when configured badly -#2290 - Add Database.getUniqueKeys() and getForeignKeys to jOOQ-meta -#2297 - Add section to the manual indicating how the various generator flags - depend on each other -#2308 - Do not generate "final" Tables.java, UniqueKeys.java, etc. - -Bug fixes ---------- -#2212 - "code size too large" in generated SchemaImpl, when the number of tables - exceeds 15k -#2238 - Code generation runs extremely slow for large schemas (Inefficient - DefaultRelations.getUniqueKeys() and getForeignKeys() methods) -#2239 - Code generation runs extremely slow for large schemas (Inefficient - AbstractDatabase.filterSchema() methods) -#2252 - ArrayIndexOutOfBoundsException, when rendering plain SQL that is - terminated by a comment -#2259 - RenderMapping has no effect, if not supplied to the Executor constructor -#2262 - RenderSchema has no effect, if not supplied to the Executor constructor -#2267 - SQLDialectNotSupportedException: Type class org.postgis.PGgeometry is - not supported in dialect null, when binding PG* objects -#2271 - jOOQ Unit tests fail when not run in CET / CEST -#2273 - Tutorial bug, referencing wrong Maven dependency. jOOQ 3.0.0 is not yet - released, only RC1 -#2276 - Wrong MockDataProvider manual example -#2278 - Postgres (UUID and other) ARRAY types aren't correctly inlined as string - literals -#2279 - UUIDs aren't correctly deserialised from Postgres UDTs -#2280 - Improve supported formats for MockFileDatabase -#2283 - Class loading issues in GenerationTool when called by Gradle -#2294 - Compilation errors when code generator is configured with - true and false -#2298 - Suppress warnings in generated code (@SuppressWarnings("all") doesn't - work with javac) -#2312 - Annotate org.jooq.Support with java.lang.annotation.Documented to make - it part of the public API (in Javadoc) -#2314 - Outdated GenerationTool Javadoc - -Version 3.0.0 (RC1) - February 16, 2013 -================================================================================ - -This major release is a great move towards better integration of SQL as a -language in Java. Unlike any other database abstraction framework, jOOQ now -formally supports the notion of "row value expressions". The jOOQ API uses -Xtend-generated API types from Row1 .. Row22, as well as Record1 .. Record22 to -bring you even more compile-time typesafety on a record-level. - -See subsequent release candidates or release 3.0.0 for more information. - -Features and improvements -------------------------- -#456 - Add runtime support for PRECISION, SCALE, and LENGTH attributes -#834 - Add support for the Firebird / Postgres UPDATE .. RETURNING clause -#915 - Add Table> - Factory.values(Row[N]...), to create ad-hoc tables - from data -#1038 - Introduce new type GroupField for cube(), rollup() and groupingSets() - functions. Accept only GroupField... in groupBy() clauses -#1097 - Add org.jooq.Catalog, a type modelling an entity combining several - org.jooq.Schema -#1144 - Overload Executor.fetch[One|Lazy](ResultSet, X...) with X being - Field, DataType, Class -#1178 - Allow for treating Condition as Field -#1583 - Add support for row value expressions in UPDATE statements: UPDATE .. - SET (A, B, C) = (SELECT X, Y, Z) -#1624 - Add support for java.util.UUID as a type -#1663 - Document RenderContext and make it part of the public API -#1686 - Add UpdatableRecord.insert() and update() -#1689 - Generate E into(E) and R from(E) methods to generated records -#1690 - Add UpdatableRecord.key() returning a Record holding PK values -#1695 - Add Factory.all() and Factory.any() to create quantified expressions -#1703 - Add Executor.batchDelete(UpdatableRecord...) to mass-delete a set of - UpdatableRecords -#1801 - Add Table.as(String, String...) to allow for creating a table aliases - (correlation names) with derived column lists -#1874 - Add Record1, Record2, ... Record[N] similar to Row1, Row2, ... Row[N] to - support record type-safety -#1897 - Add a section to the manual about the migration to jOOQ 3.0 -#1899 - Make some JDBC-related utility methods publicly available in - org.jooq.tools.jdbc.JDBCUtils -#1902 - Duplicate SELECT API between Executor and Factory -#1904 - Add Executor.fetch(ResultQuery), Executor.execute(Query), and similar - methods -#1905 - Add Row[N].equal(Select) and similar methods -#1906 - Use Xtend to generate Row[N], Record[N] and other [N]-related API code - artefacts -#1914 - Document the fact that SELECT * is performed by leaving the SELECT list - empty -#1917 - Add support for CUBRID 9.0's window functions and MERGE statement -#1918 - Let generated Records implement Record[N] if applicable -#1919 - Support higher degrees of Row[N] and Record[N] types. Match Scala's max - degree of 22 -#1920 - Add more implicit defs in order to treat Record[N] as Scala's Tuple[N] -#1923 - Add Record.intoResultSet() to create a single-record JDBC ResultSet from - a Record -#1924 - Add support for CUBRID 9.0's ENUM data type -#1932 - Generate Javadocs for Table constructors -#1934 - Improve generated Record Javadoc -#1951 - Add support for the SQL Server WITH (...) table hints -#1966 - Add Row[N].equal(Record[N]) and similar convenience methods -#1967 - Document using MySQL's SQL_CALC_FOUND_ROWS as an Oracle hint -#1968 - Add org.jooq.Meta returned from Executor.meta() to return a wrapped JDBC - DatabaseMetaData object -#1972 - Move MySQLFactory.md5() to Factory and simulate it for Oracle -#1973 - Add Executor.fetchOne(ResultSet) -#1975 - Add Result.sort{Asc|Desc}(int) and (String) to order by field index / - name -#1981 - Add support for DB2 CGTT and MQT -#1983 - Improve the Javadoc on Table.as() and Field.as() to hint at - case-sensitivity and RenderNameStyle -#1984 - Add ResultQuery.fetchOneInto() -#1986 - Add Record.fromMap() as the inverse operation of Record.intoMap() -#1987 - Allow for reading data from arrays, Maps through Record.from() -#1988 - Add Record.fromArray() as the inverse operation of Record.intoArray() -#1989 - Add Record.changed(Field), changed(int), changed(String) to check - whether a single field's value has changed -#1990 - Add T Record.original(Field), original(int), original(String) to - get a Field's original value -#1991 - Reflect changed flag in Result.toString() (and thus also - Record.toString()) -#1999 - Add Record.changed(boolean) changed(Field, boolean) - changed(int, boolean) changed(String, boolean) as setters for the - changed flag -#2000 - Add Record.reset(), reset(Field), reset(int), reset(String) to - restore original values in a record -#2008 - Add elementFormDefault="qualified" to XSD specifications to allow for - XML validation of jOOQ configuration files -#2020 - Let org.jooq.ExecuteListener extend java.util.EventListener -#2021 - Add UpdatableRecord.refresh(Field...) to allow for refreshing a - subset of the Record's values -#2027 - Document semantic versioning rules as understood by jOOQ -#2028 - Add Batch.size() to indicate the number of queries that will be executed - by a batch operation -#2030 - Add reusable wrapper types for JDBC Connection, Statement, ResultSet, - etc. -#2044 - Add various TableRecord.fetchParent(...), fetchChild(...) and - fetchChildren(...) methods to follow foreign key relationships -#2049 - Add gt() / ge() / lt() / le() to Row[N] types -#2052 - Add [not]Between[Symmetric]() to Row[N] types -#2053 - Add is[Not]Null() to Row[N] types -#2066 - Add Executor.extractBindValues(QueryPart), extractParams(QueryPart) to - extract bind values in the context of an Executor (i.e. Configuration) -#2072 - Let UDTRecordImpl and ArrayRecordImpl.toString() return a valid - constructor expression -#2078 - Add Postgres to @Support annotation of SelectForUpdateWaitStep.wait() -#2079 - Support generation of bean validation annotations on records and - interfaces -#2089 - Generate an "empty" DefaultSchema for those databases that do not have - any schema (CUBRID, Firebird, SQLite) -#2094 - Add unit tests for org.jooq.tools.Convert -#2107 - Let Record implement Comparable -#2111 - Improve org.jooq.Record Javadoc, to explain the various Record subtypes -#2112 - Add Row.types() and Row.dataTypes() as a convenience -#2113 - Document Record.hashCode() and equals() through Javadoc -#2133 - Allow for mapping to "" (empty) in order to avoid the - generation of a schema -#2156 - Add Row.type(int), type(String), dataType(int), dataType(String) for - convenience -#2158 - Add Executor.fetchLazy(Table) and fetchLazy(Table, Condition) for - convenience -#2159 - Let ExecuteListener extend Serializable -#2160 - Add Executor.batchUpdate(UpdatableRecord...) to mass-update a set of - UpdatableRecords -#2161 - Add Executor.batchInsert(UpdatableRecord...) to mass-insert a set of - UpdatableRecords -#2162 - Add some more Javadoc to JooqLogger -#2170 - Add 0.0 and 1.0 to Convert.FALSE_VALUES and Convert.TRUE_VALUES -#2171 - Allow for converting booleans to numbers through org.jooq.tools.Convert: - TRUE => 1, FALSE => 0 -#2172 - Add set(Field, Select>) methods to UPDATE, - MERGE and INSERT statements -#2176 - Add hint in code generation, when an unsupported, old database version - is being used (e.g. MS SQL Server 2000) -#2177 - Add ResultQuery.intern() and Result.intern() for string interning in - result sets -#2179 - Add Javadoc to QueryPart.hashCode() and equals() -#2199 - Allow for INSERT and UPDATE of pre-existing records through - SET [ Record ] clauses -#2202 - Add Mock JDBC objects for unit testing with jOOQ -#2203 - Add Executor.map(Schema) and Executor.map(Table) as a convenience to - apply runtime schema mapping -#2204 - Add BatchBindStep.bind(Object[][]) to bind lots of bind values at a time -#2205 - Add Result Executor.newResult(Table) to generate custom - results - -API changes (backwards-compatible) ----------------------------------- -#1309 - Let Factory.val() return Param instead of Field -#2031 - Change union(Select) and similar methods to - union(Select) -#2157 - Change the bounds of various > H - fetchInto(H handler) methods to RecordHandler -#2197 - Relax bounds on Factory.groupingSets(Collection>...) to - Collection>... -#2206 - Relax bounds of R on Executor.newRecord() from TableRecord to Record - -API changes (backwards-incompatible) ------------------------------------- -#1118 - Remove support for the code generation ant task -#1254 - Move org.jooq.tools.unsigned contents to org.jooq.types (along with the - INTERVAL types) -#1374 - Relax usage of generic . Replace by where data types - are involved. -#1533 - Extract Executor API from Factory. Let Factory contain only static - QueryPart factory methods -#1549 - Externalise connection lifecycle through new ConnectionProvider -#1649 - Remove support for code generation from pre-jOOQ 2.0 .properties file -#1740 - Remove support for generated master data enums -#1875 - Add generic type to SelectXXXStep DSL type hierarchy - for increased tuple type-safety -#1887 - Remove all deprecated code -#1894 - Remove constructors from dialect-specific factories -#1907 - Remove FactoryOperations, push its API down to org.jooq.impl.Executor -#1921 - Add InsertValuesStep[N] - Executor.insertInto(Table, Field, Field, ..., Field) -#1926 - Add MergeXXXStep - Executor.mergeInto(Table, Field, Field, ..., Field) -#1977 - Remove the confusing concept of having a "main key" as opposed to a - "primary key" -#2042 - Remove generated setters, setting foreign key values from records -#2043 - Remove generated navigation methods -#2060 - Remove redundant SimpleSelectXXX API -#2117 - Remove the FieldProvider marker interface. Simplify the FieldProvider - API -#2119 - Rename Row.getDegree() to Row.size() - -Behaviour changes (backwards-incompatible) ------------------------------------------- -#1235 - SQLite BIGINT data type erroneously maps to java.math.BigInteger -#1578 - Change configuration of ExecuteListeners in Configuration. Listeners - instances should be provided, not classes -#2076 - Stop "supporting" comma-separated regular expressions in the code - generator configuration -#2088 - Do not treat CUBRID "owner" as schema in generated code - -Bug fixes ---------- -#1170 - Improve performance on jOOQ's reflection usage -#1626 - Explicitly implement hashCode() and equals() in some additional - QueryParts -#1886 - Query.bind() has no effect when Query.keepStatement(true) and - StatementType.STATIC_STATEMENT are combined -#1890 - Bad Postgres array serialisation when " or \ characters are contained in - a String[] -#1938 - Improve AbstractField.hashCode() and AbstractTable.hashCode() and - similar, as these two are called very often -#1942 - Inefficient call to String.split() in StringUtils.toCamelCase() leads to - non-negligible performance overhead in POJO transformation calls -#1937 - Inefficient implementations of AbstractDataType.equals() and hashCode() -#1954 - Bad SQL rendered when combining ORDER BY [ some-function ] with LIMIT .. - OFFSET in DB2, SQL Server -#1958 - Bad SQL rendered for OVER (ORDER BY [ some-function ]) for SQL Server - and Sybase -#1974 - Optimise various Executor.fetchOne() methods, which consume the whole - ResultSet before throwing an InvalidResultException -#1979 - Thread safety issue in org.jooq.impl.FieldList -#1982 - Change RenderNameStyle.UPPER, LOWER, AS_IS to quote literals if needed -#1992 - Bad reference to org.jooq.debug.[impl].DebugListener in the manual -#1993 - Bad code generated when the same table name exists in multiple schemas - in SQL Server -#1995 - Record.original() values aren't updated after a Record.store() operation -#1997 - Review the manual's tutorial for integrity -#2001 - Named Params are treated as null literals on right sides of comparisons -#2007 - Bad type coercion on the right hand side of a comparison predicate, when - the left hand side is Field -#2011 - Implement some micro-optimisations in DefaultRenderContext -#2025 - Correctly handle multiple foreign keys defined on the same column -#2045 - Bad hashCode calculation when Records contain arrays or byte[] -#2055 - MySQL's UPDATE [t1] JOIN [t2] syntax can cause syntax errors as column - references are not fully qualified -#2057 - Cannot properly extract bind values for LIMIT .. OFFSET clause from a - SELECT statement -#2063 - jOOQ-meta loads Firebird composite unique key columns in wrong order -#2073 - The code generator's flag doesn't affect Oracle - VARRAY and TABLE types -#2082 - Oracle PIVOT expression doesn't bind any variables of a derived table - being pivoted -#2085 - java.lang.NoSuchMethodError: org.apache.log4j.Logger.isTraceEnabled()Z - when logger dependency is missing -#2086 - SQL syntax error when aliasing outcome of a relational division -#2091 - CUBRID doesn't really have a NVARCHAR data type -#2098 - NullPointerException when org.jooq.impl.EnumConverter converts null -#2104 - SQLite code generation treats multi-column primary keys like multiple - single-column unique keys -#2108 - SQLite returns NULL for val(new Date(0)).add(-1) and some other date - time arithmetic expressions -#2128 - Misleading Javadoc in Factory / Executor.selectCount() -#2137 - Failure to assign a value to a record pojo for a column with a - composite type when using select into. -#2139 - batchStore with Postgres composite types incorrectly reuses values from - the first record. -#2140 - No table java mapping generated using maven plugin - missing inputSchema - in postgres -#2143 - UnsupportedOperationException when binding UDTRecord in batchStore() for - Oracle -#2144 - Improve AbstractField.equals() and AbstractTable.equals() and similar, - as these two are called very often -#2145 - Improve QueryPartList.removeNulls() as this is called very often -#2154 - Generated Records should access values by index, not by field, for - performance reasons -#2165 - Add H2 database definitions to the jOOQ-scala module (to prevent - compilation errors) -#2167 - Convert.convert("xx", boolean.class) returns null, instead of false -#2178 - Improve FieldList. Avoid creating excessive array lists, where simple - (immutable) Field[] are sufficient -#2180 - Optimise DAOImpl by using the new ReflectionMapper instead of calling - Record.into() all the time -#2187 - Change all Javadoc

    tags to

    (To fix Java 7 standard Javadoc - style layout issues) -#2210 - Executor.fetchFromCSV() shouldn't mark resulting records as "changed" -#2215 - Improve example in the "jOOQ for CRUD" section. Use only columns from - the sample database -#2223 - SQL injection is possible in org.jooq.impl.Val, if client code doesn't - correctly enforce generic typesafety, and bind variables are inlined -#2227 - Field.in(T...) doesn't convert argument values to the Field's type - -Version 2.6.0 - October 26, 2012 -================================================================================ - -This release has a new main feature: the type-safe support for row value -expressions also known as tuples - up to a degree of 8. The API is formed in a -similar way as pre-existing tuple support in languages like C# or Scala. - -jOOQ's Scala integration has also been improved through the new jOOQ-Scala -module, which provides some useful implicit defs for operator overloading. -Future versions of jOOQ-Scala may experiment with Scala 2.10's Macros - -This release also ships with a lot of new deprecation to help you prepare for -the upcoming major release. - -Minor feature improvements include: - -- Lots of new fetchGroups() and intoGroups() methods, thanks to Ivan Dugic -- JDBC execution control support, such as cancel(), maxRows(), queryTimeout() -- Allowing for re-using JDBC PreparedStatement between Query executions -- Support for the SQL standard OVERLAPS predicate -- A new RecordMapper, similar to the existing RecordHandler - -Features and improvements -------------------------- -#385 - Allow for keeping open statements in a Query -#600 - Add support for Oracle / SQL Standard linear regression functions -#1058 - Add Factory.row(T1, T2, .. TN) and Factory.row( - Field, Field ... Field) to allow for creating tuples / rows -#1077 - Add support for the SQL standard OVERLAPS predicate -#1245 - Improve formatting for DECIMAL data types in Result.format(). Nicely - align the decimal point and reserve space on both sides -#1484 - Let XJC-generated artefacts implement Cloneable -#1527 - Support for converting String to java.net.URL, java.net.URI, and - java.io.File -#1674 - Export data types with Result.formatXML() and Result.formatJSON() - exports -#1679 - Add Factory.table(String, QueryPart...) -#1708 - Add Map> ResultQuery.fetchGroups(Field, Class) -#1709 - Add Map> ResultQuery.fetchGroups(Field[]) -#1710 - Add Map> - ResultQuery.fetchGroups(Field[], Class) -#1719 - Make logic from ResultQuery.fetchArray() available in Result.intoArray() -#1728 - Add support for the MySQL COUNT(DISTINCT expr, expr...) aggregate - function syntax -#1744 - Add support for the CUBRID DECR() function -#1756 - Add RecordMapper, similar to RecordHandler, mapping records to - custom types -#1762 - Add package-info.java to add Javadoc documentation to all packages -#1766 - Simulate row comparisons where they are not supported -#1773 - Add a new jOOQ-Scala project and jooq-scala artefactId, to contain jOOQ - extensions in the Scala language -#1782 - Move JAXB bindings out of XSD, in order to support more advanced - bindings -#1783 - Generate @SuppressWarnings("all") in jOOQ-generated artefacts -#1784 - Enhance the BETWEEN predicate, introducing the AND keyword -#1810 - Add Map ResultQuery.fetchMap(Field, Class) and - Result.intoMap(Field, Class) -#1816 - Add support for materialized views in Oracle's code generator -#1828 - Reduce log level for Factory deserialisation to TRACE -#1837 - Add support for @java.beans.ConstructorProperties when fetching into - immutable POJOs -#1841 - Add SortField Field.sort(SortOrder) to allow for dynamic sorting -#1842 - Add Condition Field.compare(Comparator, Field) to allow for dynamic - comparisons -#1844 - Add Table Table.join(TableLike, JoinType) to allow for - dynamic joining -#1845 - Add Factory.schemaByName(String) for plain SQL schemata -#1848 - Add Record.changed() to indicate whether a Record contains "dirty" - values -#1849 - Add Record.original() to obtain the originally fetched values from a - Record -#1854 - Add ResultQuery.maxRows(int) to limit the number of actually fetched - records -#1855 - Add Query.cancel() to support for interrupting statements prematurely -#1856 - Add Query.queryTimeout(int) to support for JDBC's - Statement.setQueryTimeout() - -API changes (backwards-compatible) ----------------------------------- -#1800 - Deprecate AliasProvider -#1807 - Result.intoArray() declares "throws MappingException", which isn't true -#1839 - Deprecate the various Result.getValuesAs[Type] and - Record.getValueAs[Type] methods -#1840 - Deprecate org.jooq.Store -#1866 - Deprecate [Schema-Name]Factory, remove reference to it from the - tutorials -#1869 - Deprecate org.jooq.NamedQueryPart -#1870 - Deprecate org.jooq.NamedTypeProviderQueryPart -#1872 - Improve jOOQ's RenderContext pretty printing behaviour -#1881 - Deprecate ConditionProvider, OrderProvider, LockProvider types - -Bug fixes ---------- -#1593 - Factory.field("{1} + {0} + {0}", val(1), val(2)) doesn't work. Cannot - re-use / re-order placeholders -#1720 - Improve performance by using Record.getValue(int) instead of - Record.getValue(Field) internally, where more than one value is - retrieved from a record -#1751 - Result.intoResultSet() generates wrong ResultSetMetaData if runtime - schema mapping is applied -#1764 - Add missing @Support({ ... FIREBIRD ... }) annotations -#1768 - NullPointerException when DAO.fetchOne() returns no record -#1774 - QueryPart.toString() does not load default settings from classpath -#1786 - Fix SEQUENCE support for Firebird -#1791 - Log a table's input/output names, and PK name when generating code -#1792 - Factory.fieldByName() and tableByName() do not correctly escape quotes -#1797 - SQL syntax errors when plain SQL contains comments with question marks - and SQL is executed as StatementType.STATIC_STATEMENT -#1802 - Result.into(Table) doesn't work correctly, if the same field name - appears twice in Result -#1806 - Let Record.toString() wrap the record in a temporary Result and call - Result.toString() instead -#1819 - MappingException in Record.into(Class), when POJO setters have - applicable names but non-applicable argument types -#1820 - Cannot fetch into non-public POJO classes. Their members / getters / - setters should be made accessible -#1829 - Factory.execute(String) may cause errors when plain SQL returns results -#1830 - Allow for passing null or empty arrays to intoMap(Field[]) and - intoGroups(Field[]) -#1850 - Record.equals() returns true as soon as both records hold a "null" value - for a given field -#1860 - Bad Results returned from plain SQL "select *" queries, if several - selected columns share the same name -#1876 - NULL constraint violation when storing a copied record - -Version 2.5.0 - August 26, 2012 -================================================================================ - -Welcome to another great database integration in jOOQ: Firebird! This is one of -the more popular open source SQL databases out there, with a rich feature set, -including the SQL standard MERGE statement. - -Apart from this, the main new features are: - -- Optimistic locking. jOOQ's UpdatableRecord API transparently implements - optimistic locking on its store() and delete() methods. By default, the - in-memory record is compared with the one in the database at write time. But - you can also let jOOQ handle incremented VERSION or TIMESTAMP columns for you. -- Oracle feature increment. Many nice Oracle features are now supported: - user-defined aggregates, regular expressions, Oracle Text, CONNECT_BY_ROOT and - ORDER SIBLINGS BY clausess, partitioned outer joins and more -- jOOQ's convenience API has been greatly enhanced. This includes many improved - fetch methods and new short forms for equal=eq, notEqual=ne, greaterThan=gt, - etc. to better align jOOQ with JPA, XSL, QueryDSL and many other tools that - abbreviate these keywords -- Many types and methods have been deprecated to help you foresee the upcoming - changes in jOOQ 3.0 - -Please consider also the updated manual with its new, more user-friendly -structure - -Features and improvements -------------------------- -#430 - Add support for the Firebird database -#457 - Add support for Oracle user-defined AGGREGATE functions -#620 - Add support for the SQL:2008 standard LIKE_REGEX operator -#722 - Remove casting of bind values in Ingres -#727 - Simulate RPAD and LPAD in SQLite -#816 - Add support for Oracle Text functions -#1339 - Add option to generate immutable pojos -#1547 - Support "optimistic locking" in UpdatableRecord.store() and delete() -#1552 - Generate fetchBy[ColumnName] methods in generated DAO classes -#1553 - Add some Javadoc to document the difference between using a Factory with - a Connection or with a DataSource -#1556 - Add javax.validation API to full deliverable -#1565 - Add Factory.connectByRoot(Field) to support the Oracle - CONNECT_BY_ROOT pseudo column -#1570 - Add Factory.condition(String, QueryPart...) similar to - Factory.field(String, QueryPart...) -#1582 - Add support for Oracle's ORDER SIBLINGS BY clause, in combination with - CONNECT BY -#1586 - Add missing constructors taking DataSource to dialect-specific factories -#1587 - Generate missing constructors taking DataSource in schema-specific - factories -#1595 - Simulate REPEAT() in SQLite -#1596 - Add support for optimistic locking using generated information about - "timestamp" or "version" columns -#1627 - Handle NULL in CSV imports/exports -#1645 - Add support for Oracle's PARTITION BY clause in OUTER JOINs -#1657 - Reorganise the manual -#1664 - By default, activate in the code generator -#1665 - Add support for the empty GROUP BY () clause -#1675 - Add support for the SQL standard IS [NOT] DISTINCT FROM predicate -#1680 - Overload all plain SQL DSL methods to also accept QueryPart arguments -#1681 - Simulate empty GROUP BY () clause in Sybase ASE and Ingres, joining a - dummy table and grouping by a constant field -#1684 - Add Setting to indicate that fetched records shouldn't - be automatically "attached" -#1685 - Improve Javadoc of Attachable.attach(). Document how "detaching" works -#1688 - Add E Record.into(E) as a complement to E Record.into(Class) -#1692 - Replace Factory.executeInsert(), Factory.executeUpdate() and similar - methods with more succinct variants -#1696 - Add short versions of comparison predicate methods, such as eq, ne, gt, - ge, lt, le -#1698 - Add support for the SQL standard BETWEEN SYMMETRIC predicate -#1701 - Add Factory.not(Condition) as a synonym for Condition.not() -#1704 - Document the behaviour of Factory.newRecord(Table, Object) and - Record.from(Object) with respect to UpdatableRecord.store() -#1707 - Add Map> ResultQuery.fetchGroups(Field) and - Result.intoGroups(Field) -#1712 - Add > Result.sortAsc .sortDesc(Field) -#1713 - Add Result.sortAsc, .sortDesc(Field, Comparator) -#1714 - Add Result.sortAsc, .sortDesc(Comparator) -#1718 - Document usage of InvalidResultException on the ResultQuery.fetchXXX() - Javadocs -#1721 - Add Map> ResultQuery.fetchGroups(Field, Field) - and Result.intoGroups(Field, Field) -#1722 - ResultQuery.fetchArray(int) and .fetchArray(String) should return a - typed array, even if this cannot be checked by the compiler -#1723 - Add Factory.fetchLazy(ResultSet) - -API changes (backwards-compatible) ----------------------------------- -#1544 - Remove Attachable interface from QueryPart hierarchy -#1579 - Deprecate org.jooq.Type -#1580 - Deprecate org.jooq.SchemaProvider -#1638 - Deprecate org.jooq.ArrayRecord.createArray() -#1639 - Deprecate org.jooq.Adapter -#1687 - Let Cursor.fetchInto(Table) return Result instead of List -#1736 - Deprecate TableRecord.{store|refresh|delete}Using() methods as being - part of jOOQ's internal API -#1741 - Deprecate org.jooq.MasterDataType - -Bug fixes ---------- -#1572 - Use Thread.currentThread().getContextClassLoader() to load - ExecuteListener classes as a workaround for experienced class loading - problems when using OSGi -#1584 - Code generation error with Oracle UDT static functions -#1632 - Improve the performance of various DefaultRenderContext methods, by - locally caching Settings values -#1633 - Improve the performance of CursorImpl.CursorIterator by setting Record - values by index rather than by Field -#1635 - Improve the performance of Factory.fetch(ResultSet) by caching data type - normalisation regex in FieldTypeHelper -#1650 - jOOR Fix #16: Can't call Reflect.create(A, B, null) -#1660 - Factory.renderContext().castMode(CastMode.NEVER).render(query) doesn't - work. CastMode is not applied -#1667 - Bad variable binding when NULLS FIRST, NULLS LAST is simulated in SQL - Server and other databases -#1673 - Result.formatXML() and Result.intoXML() do not render namespaces - correctly -#1683 - Oracle code generation regression for 10g. No such column - ALL_PROCEDURES.OBJECT_ID -#1693 - Cannot bind UDT values from other schemata to stored procedures -#1730 - Compilation errors in SQLite generated code when flag - is set to true - -Version 2.4.0 - July 8, 2012 -================================================================================ - -This release's main new feature is jOOQ's added convenience in -Factory initialisation for those users who get their database -connectivity through JDBC DataSources. If supplied with a -DataSource, a jOOQ Factory will handle the Connection lifecycle -internally, closing the Connection when no longer needed. - -The H2 MERGE statement syntax is now supported and simulated in -other databases, for those users that prefer its more intuitive -syntax over the SQL standard. - -The code generator now also allows for generating interfaces and -DAOs per table. DAO generation was previous discussed on the user -group and seen in a competitor product called OneWebSQL. - -The jOOQ Console now supports breakpoints for even more effective -SQL development - -Features and improvements -------------------------- -#1141 - Add Result.intoResultSet() to wrap a Result in a JDBC - ResultSet -#1253 - Avoid JDBC escape syntax for date/time literals -#1280 - Generate DAO classes and interfaces for POJOs -#1404 - Document the lifecycle of an ExecuteListener in the - Javadoc -#1411 - Add support for Postgres "any" data type (with quotes!). - This seems to map well to java.lang.Object -#1418 - Support case-insensitive schema names in code generation -#1419 - Add some WARN-level logging when the source-code - generator doesn't generate any artefacts -#1423 - Add Field.likeIgnoreCase() to support Postgres' ILIKE - operator -#1424 - Add Factory(DataSource) and similar constructors -#1427 - Add Factory.batchStore(Collection>) for convenience -#1428 - Add DataType.convert(Object...) and - DataType.convert(Collection) for convenience -#1431 - Add org.jooq.Name Factory.name(String) to contruct - QueryParts that are escaped according to - Settings.getRenderNameStyle() -#1432 - Add Factory.fetch(String, QueryPart...) and - Factory.execute(String, QueryPart...) and similar methods - to support arbitrary QueryParts in plain SQL -#1434 - Add UniqueKeyDefinition.isPrimaryKey() for completeness -#1438 - Add Result Factory.fetchFromCSV(String) -#1440 - Add top-level pom.xml for jooq-parent artefact (GitHub - Issue #14) -#1446 - Converting arbitrary strings to Number / Date should - return null, instead of throwing an exception -#1449 - Generate some meaningful Javadoc into the generated - [schema-name]Factory classes -#1454 - Add line breaks to generated Javadoc where appropriate -#1463 - Add option to let generated Record / POJO objects - implement a common generated interface -#1470 - Support interface types in ResultQuery.fetchInto(Class), - Result.into(Class), and Record.into(Class) methods, - returning a proxy -#1471 - Upgrade internal jOOR dependency to jOOR 0.9.4 -#1473 - Add IdentityDefinition to jooq-meta -#1501 - Add support for conversion of String to - java.sql.{Date, Time, Timestamp}. GitHub issue #22 -#1504 - Document behaviour of fetch() and fetchOne() in case jOOQ - cannot fetch actual records -#1509 - Minor improvements in the generator source code. GitHub - pull request #23 -#1510 - Generate additional setters for foreign keys, accepting - records as arguments -#1521 - Expose Connection methods, such as commit(), rollback() - and similar transaction-related methods in Factory -#1523 - Support ROW_NUMBER() OVER() for the latest version of - Derby and H2, which support it -#1524 - Simulate ROW_NUMBER() OVER() in HSQLDB using ROWNUM() -#1528 - Let generated interfaces extend Serializable -#1532 - Clarify the lifecycle of Configuration.data in the - Javadoc -#1534 - Generate more meaningful Javadoc where "an uncommented - item" stands now -#1536 - Add documentation to the FOR UPDATE OF clause, indicating - that DB2 may have stricter requirements regarding - updatability of fields -#1541 - Add support for the H2 MERGE syntax - GitHub Issue #18 -#1542 - Simulate the H2 MERGE syntax in other dialects supporting - the SQL standard MERGE statement - GitHub Issue #18 -#1545 - Website and Documentation anchors should be links to - themselves, visually recognisable - -Features and improvements (jOOQ Console) ----------------------------------------- -#1398 - Allow for adding breakpoints in jOOQ Console - -API changes (backwards-compatible) ----------------------------------- -#1408 - Relax bounds of in Factory.truncate() to Record, - instead of TableRecord -#1429 - Change Convert.convert(List, XXX) to accept Collection - instead of List - -Bug fixes ---------- -#1020 - Improve Oracle's LIMIT .. OFFSET clause simulation. - GitHub Issue #16 -#1358 - Compilation errors in generated source code when Oracle - overloaded procedures collide with procedures that end - with numbers -#1437 - Error in Javadoc of FactoryOperations.fetchOne(). This - method may return null -#1441 - Performance issue with AbstractDataType.convert(Object). - Avoid conversions when they're obviously unneeded -#1448 - Handle String to Enum conversion (when Java Enums are - stored as Strings in the database) - GitHub issue #15 -#1459 - Generated Keys.java static class too large (static - initialiser can become bigger than 64kb) -#1460 - Table.getReferencesTo(Table) doesn't work correctly for - aliased tables -#1461 - Exception when rendering of {fn datetimeadd(...)} for - HSQLDB and Derby -#1462 - Document missing GeneratorStrategy features, such as - getJavaClassImplements() -#1465 - Custom generator strategy's printImplements() is called - with Mode == RECORD for tables -#1478 - Caching SQLDialect in AbstractDatabase heavily improves - code generation performance -#1483 - Inefficient cloning of default settings using JAXB - unmarshalling leads to non-negligible overall overhead. - Use serialisation instead (short of a useful XJC clone - plugin) -#1489 - Fix manual where it claims to throw SQLExceptions -#1490 - Compilation error when a SQL Server stored procedure has - a parameter named "value" -#1493 - Bad syntax for SELECT /*+hint*/ DISTINCT ... in Oracle -#1498 - jOOQ does not compile using JDK 7 / JDBC 4.1. GitHub - Issue #24 -#1499 - Generated members of Tables.java are not final -#1505 - Bad exception message when ON DUPLICATE KEY IGNORE cannot - be simulated -#1515 - Splitting of large NOT IN conditions is wrong. The parts - should be connected with AND, not with OR -#1522 - fetch().into(Table) doesn't initialise records correctly, - such that subsequent calls to store() will execute an - INSERT, rather than an UPDATE -#1525 - Generate missing Javadoc to getters for procedure OUT - parameters -#1529 - Factory.batchStore() logs all single statements to DEBUG - output. Find a more accurate log output -#1537 - Factory.batchStore() renders bad SQL for Postgres. The - RETURNING clause is not allowed in batch INSERTs - -Version 2.3.1 - May 11, 2012 -================================================================================ -This is an important patch release fixing some regressions in the -code generator for the Postgres dialect. With 2.3.0, it was no -longer possible to generate schemata of which the database user -was not the owner. - -Bug fixes ---------- -#1334 - Fix inaccurate simulation of TRUNC(number, decimals) for - Derby -#1403 - Documentation bug: ctx.statement() can be replaced in - executeStart(). This is not documented -#1406 - Compilation errors in generated source code when Postgres - stored procedure parameter is called "NAME" -#1407 - Compilation errors in generated source code when Postgres - data-type is "any" (with quotes!) -#1409 - Postgres code generation broken when not connecting with - the owner of a schema - -Version 2.3.0 - May 6, 2012 -================================================================================ - -This is a minor feature increment release, featuring many useful -API enhancements, some new functions, some new syntax support -elements, improved source code generation and a lot of -improvements on the jOOQ Console, thanks to Christopher Deckers. - -The updated jOOQ Console now allows for filtering incoming -statements directly on the server side, using regular expression -filters on statement text and other features. These improvements -are a part of a general strategy to introduce breakpoints and -more sophisticated debugging capability to the jOOQ Console. - -Features and improvements -------------------------- -#597 - Add support for Oracle KEEP (DENSE_RANK FIRST...) - aggregate function clause -#910 - Add ExecuteListener extension to allow for overriding - exception translator to handle vendor-specific error - codes -#1286 - Add "renderSchema" flag to Settings, to completely - disable rendering of schema names -#1293 - Generate setter methods for JAXB annotated configuration - properties -#1295 - Add support for MySQL's INSERT IGNORE clause -#1296 - Simulate the FOR UPDATE clause for SQL Server, CUBRID, - using JDBC's ResultSet.CONCUR_UPDATABLE -#1302 - Add Factory.inline() to allow for flagging inline-only - "bind values" -#1303 - Add connection-less Factory constructors for convenience, - when jOOQ is only used as a SQL query builder -#1304 - Add option to generate JSR-303 @NotNull and @Size - annotations to generated POJO's -#1307 - Let HSQLDB dialect render NVL2() as NVL2() instead of - CASE expression -#1312 - Allow for omitting , and generate all - available schemata in that case -#1315 - Let generated factories use their associated Schema as - the Settings' RenderMapping's defaultSchema -#1319 - Move jooq-spring's FactoryProxy to the core jooq project -#1322 - Add Factory.dateAdd() and timestampAdd() for convenience -#1327 - Add DataType.isLob() -#1328 - Add Field inline(char), inline(Character), - inline(CharSequence) for convenience -#1333 - Add support for the Oracle TRUNC function, for numeric - arithmetic -#1336 - Let Record.into(Class) and similar methods accept - "immutable" classes, i.e. setter-less classes that take - several constructor arguments -#1340 - Use Constructor.setAccessible(true), if no default - constructor is available on the target type of - Record.into(Class) -#1342 - Improve Javadoc on Factory.function(). Document arguments -#1349 - Add support for the CUBRID Click-Counter INCR() -#1352 - Allow for creating syntax-error and SQL-injection safe - qualifiers for org.jooq.Field and org.jooq.Table -#1361 - Add Factory.batchStore(TableRecord...), to allow for - batch UPDATE/INSERTs of many records -#1367 - Make configured ExecuteListeners default constructors - accessible -#1366 - Let org.jooq.Batch extend Serializable -#1378 - Upgrade internal jOOR dependency to jOOR 0.9.3 -#1379 - Upgrade internal jOOU dependency to jOOU 0.9.1 -#1390 - Add RenderContext.qualify() to indicate whether - QueryParts should render qualified versions of themselves - or not - -Features and improvements (jOOQ Console) ----------------------------------------- -#1242 - Upgrade jOOQ Console dependency on RSyntaxTextArea from - 1.5 to 2.0.2 -#1249 - Allow for filtering incoming statements in jOOQ Console -#1393 - Implement a communication protocol between Console server - types and Console client types to allow for more - sophisticated functionality - -API changes (backwards-compatible) ----------------------------------- -#1310 - Deprecate Factory.literal() in favor of Factory.inline(), - and Factory.field() -#1368 - Promote AbstractQuery.isExecutable() to the public API - -Bug fixes ---------- -#989 - INSERT and UPDATE statements always render non-qualified, - escaped field names. This may cause trouble when using - plain SQL fields -#1109 - Standalone TABLE or VARRAY types are not correctly - initialised before referencing tables load them -#1279 - NullPointerException when leaving empty -#1283 - The LIKE escape character needs escaping, too, in - contains(), startsWith(), endsWith() -#1306 - Add missing INTERVAL data types to HSQLDBDataType -#1308 - Oracle's DataTypeDefinition reports the length of a BLOB - / CLOB data type to be 4000 -#1313 - and match only table names, not - fully qualified names -#1323 - Add support for byte[] in Postgres UDTs -#1324 - Code generation error in Oracle 10g when generating - stored procedures -#1326 - Error when deserialising BLOBs from Oracle UDTs -#1329 - NullPointerException when passing null to - timestampDiff(Field, Field) -#1343 - Regression in insertInto(...).values(...). Cannot pass - Field to values() -#1344 - Initialise Result ArrayLists to their expected size, if - that size is known. -#1360 - jOOR issue 12: "Don't reset the accessible flag to false, - if setting it to true is required, to avoid race - conditions in concurrency contexts" -#1371 - Missing conversion when using unsafe Field types in - BATCH statements -#1376 - Oracle UDTs in REF CURSORs are not deserialised correctly - from procedure OUT parameters -#1377 - Oracle UDTs are not deserialised correctly when the same - UDT name is present in multiple schemata -#1394 - NullPointerException when omitting element in - code generation configuration - -Version 2.2.1 - April 12, 2012 -================================================================================ - -This is a minor patch release, fixing some issues related to the -code generation of the new CUBRID integration as well as other, -minor issues. Upgrade if you're using CUBRID - -Bug fixes ---------- -#1287 - Remove oracle.sql dependency also from OSGi information - in pom.xml -#1288 - SQL syntax errors from sequences when using RenderMapping - with defaultSchema -#1289 - DefaultBindContext logs as Util.class -#1297 - Compilation error in CUBRID generated artefacts - referencing OBJECT types -#1298 - Avoid source code generation errors when generating code - for unknown, dialect-specific data types - -Version 2.2.0 - April 09, 2012 -================================================================================ - -Finally, jOOQ has added support for another database, and a very -promising one, that is. http://www.cubrid.org is a surprisingly -original mixture of a relational and object-oriented database -where tables and classes are synonyms, so are records and -instances. The CUBRID database has a high level of compatibility -with MySQL and is aimed at MySQL users wanting more performance -for their web applications. For details, see the slides here: - -http://www.slideshare.net/cubrid/growing-in-the-wild-the-story-by-cubrid-database-developers - -jOOQ is proud to have become a CUBRID partner, looking forward -to further cooperation with CUBRID in the near future. - -Apart from that, jOOQ now fully supports SQL standard INTERVAL -data types. With JDBC and JPA lacking official support for this, -jOOQ aims for becoming the tool of choice for vendor-specific -date time arithmetic. True INTERVAL data type support is given in -HSQLDB, Ingres, Oracle, Postgres databases. Besides that, CUBRID -and MySQL support INTERVAL data type arguments in functions. In -other dialects, jOOQ simulates DATEADD(), TIMESTAMPADD(), -DATEDIFF(), TIMESTAMPDIFF(). - -For jOOQ's OLAP friends, there is now also support for the Oracle -LISTAGG function (LIST() in Sybase, XMLAGG() in DB2, STRING_AGG() -in Postgres, GROUP_CONCAT() in CUBRID, H2, HSQLDB, MySQL). -LISTAGG is an "ordered aggregate function", meaning that the -aggregation is done using a specific ordering. Keep an eye out -for more such function support in future versions. - -Features and improvements -------------------------- -#566 - Add support for INTERVAL data types -#585 - Add support for DATE, TIME and INTERVAL arithmetic -#1183 - Add support for DEFAULT values in Oracle stored procedure - parameters -#1243 - Let generated POJOs (and Records) extend base classes - and implement interfaces -#1252 - Avoid JDBC escape syntax for Oracle stored procedure - calls. Generate PL/SQL syntax, instead -#1255 - Let generated Tables contain a public default constructor - to be able to extend those classes - Github issue #12 -#1257 - Add CUBRID support -#1268 - Add Factory.field(String, QueryPart...) to generate - custom clauses -#1269 - Add YEAR(), MONTH(), DAY(), HOUR(), MINUTE(), SECOND() - function support as shortcuts for EXTRACT() -#1273 - Simulate GROUP_CONCAT() aggregate function using Oracle's - LISTAGG() function, where available -#1274 - Add support for the Oracle LISTAGG(...) WITHIN GROUP - (ORDER BY ..) [ OVER (..) ] aggregate / analytic function -#1275 - Simulate Sybase LIST() aggregate function using Oracle's - LISTAGG() function -#1276 - Simulate Oracle's LISTAGG() in DB2 using XMLAGG(), - SUBSTR() and CONCAT() -#1278 - DEBUG log both executed SQL and SQL with inlined bind - values - -API changes (backwards-compatible) ----------------------------------- -#1262 - Pull up OracleFactory.prior() and other CONNECT BY - related methods to Factory - -Bug fixes ---------- -#1241 - Wrong variable binding when comparing CHAR columns in - Derby and DB2 without explicit casting to VARCHAR -#1244 - Cannot override class name in GeneratorStrategy in - Mode.POJO -#1248 - Setting both false and - true leads to compilation errors -#1256 - Fixed code generation issue with H2 user defined - functions returning VARCHAR -#1263 - Pass fetchsizes <= 0 to the JDBC driver (for vendor- - specific MySQL compatibility) -#1270 - Most databases allow for multiple identical foreign keys. - This leads to compilation errors in generated source code - -Version 2.1.0 - March 18, 2012 -================================================================================ - -With this version, jOOQ attempts to follow versioning rules -imposed by semantic versioning: http://semver.org/ -There will be 1 minor release per month, and a couple of patch -releases per year, depending on popular demand - -The main improvements for this release include - -- The possibility of providing jOOQ with a custom type mapping. - You can now define your own Converter types that are used by - jOOQ to map a database's SQLDataTypes to your custom types. - This is particularly useful for Java's enums. Read more about - custom converters in the manual: - http://www.jooq.org/manual/ADVANCED/CustomTypes/ - -- There are a lot of new runtime configuration options to control - the SQL style of SQL rendered by jOOQ. You can now specify - whether table/column names should be quoted / capitalised / - lower-cased, whether SQL keywords should be capitalised or not, - etc... - -- The handling of NULL has been improved in favour of using jOOQ - as a SQL builder library (e.g. along with Spring for execution) - NULL is no longer inlined, but bound as a variable. - -- jOOQ now supports simulation of the relational division - operation using an intuitive syntax. Read more about the - relational division here: - http://en.wikipedia.org/wiki/Relational_algebra#Division - -Features and improvements -------------------------- -#161 - Add runtime configuration to pretty print rendered SQL -#349 - Add SQLite relations support -#491 - Add runtime configuration for SQL keyword style (upper - case, lower case) -#521 - Add runtime configuration for SQL reference style (upper - case, lower case, as-is, quoted) -#1150 - Add code generation option to disable generation of - records -#1181 - Add support for SQL Server data types timestamp and - rowversion -#1188 - Load default Settings from the classpath at - /jooq-settings.xml, or from -Dorg.jooq.settings -#1193 - Specify main-class in jOOQ Console's manifest.mf and - include dependency in jar file -#1194 - Add ColumnDefinition.isNullable() -#1202 - Add support for the relational division operation: - A.divideBy(B).on(A.ID.equal(B.A_ID)).returning(A.X, ...) -#1207 - Add Factory.batch(Collection) for - convenience -#1208 - Render @javax.persistence.Column(nullable = false) - property, if available -#1209 - Render @javax.persistence.Column(length, precision, - scale) properties, if available -#1215 - Add org.jooq.Converter for custom type mapping -#1216 - Overload Record, Result.getValue() and .setValue() - methods to accept a Converter -#1217 - Add EnumConverter as a base type for custom enum - converters -#1218 - Add code generation options to generate - referencing a Java type and a Converter -#1224 - Add DataTypeDefinition.getLength() to jooq-meta's type - system -#1233 - Support custom JDBC properties for jooq-codegen -#1234 - Add Database.getTable(SchemaDefinition, String, boolean) - to fetch tables case-insensitively -#1239 - Add Factory.fetchLazy(String, Object...) - -API changes (backwards-compatible) ----------------------------------- -#1191 - Deprecate ConfigurationRegistry and replace by equivalent - ExecuteListener feature -#1219 - API Bug: Cannot use LIMIT .. OFFSET along with FOR UPDATE - -Bug fixes ---------- -#625 - Remove dependency from generated Routines to the - generator's SQLDialect -#1128 - NULL is inlined in INSERT statement instead of binding it - as a variable. This can cause issues when using jOOQ with - Spring -#1137 - Exclude MySQL column-level enum types when that column is - overridden by a -#1158 - Derby cannot handle inlined NULL literals in some - contexts -#1180 - Execute BatchMultiple (multi-query batch query), when - executing BatchSimple (single-query, multi-bind-value - query) with StatementType == STATIC_STATEMENT -#1189 - TableMapping regression for SQLite database -#1190 - Cannot store SQLite records when using - StatementType.STATIC_STATEMENT -#1199 - Table.getFields() returns an internal representation of a - table's field list. Make generated tables immutable! -#1200 - Internal API leak exposed through covariance in - AbstractType.getFields() -#1211 - Enforce method name disambiguation also when using custom - strategies in jooq-codegen -#1212 - Enforce identifier disambiguation also when using custom - strategies in jooq-codegen -#1221 - Incorrect ExecuteListener invocation for INSERT .. - RETURNING. executeStart() and executeEnd() are omitted -#1223 - Cache ExecuteListener classes for performance -#1225 - Bind NULL byte[] as java.sql.Types.BINARY instead of - BLOB in Postgres, to avoid errors -#1226 - Bind NULL UDTs with their associated type name in Oracle -#1232 - SQLException when Factory.fetch() does not return a - ResultSet -#1237 - Don't generate enum classes for columns in MySQL tables - that are excluded from code generation - -Version 2.0.5 - February 26, 2012 -================================================================================ - -This release finally introduced basic runtime configuration -features for the jOOQ Factory. This configuration now includes: - -- Execute listener and SQL tracing support. jOOQ allows you to - hook your own listeners into jOOQ's query execution engine to - be notified of all sorts of events -- The existing SchemaMapping features. They are now part of the - runtime configuration -- StatementType settings. Specify whether a Factory should - execute java.sql.PreparedStatements (with bind variables) or - static java.sql.Statements with inlined variables. - -The runtime configuration is documented here: - -http://www.jooq.org/manual/JOOQ/Factory/ - -The listener and tracing support has been requested by -Christopher Deckers, a new jOOQ user who has had the courtesy to -contribute the new jOOQ Console, which is documented here: - -http://www.jooq.org/manual/ADVANCED/ExecuteListener/ - -Apart from that, another long-requested feature is now fully -implemented: The GeneratorStrategy, allowing for custom naming -strategies in generated source code. This will allow for -generating custom table / record class name prefixes / suffixes, -as well as overriding the default behaviour for rendering UPPER, -lower and CamelCase artefacts. See the manual for details: - -http://www.jooq.org/manual/META/Configuration/ - -Features and improvements -------------------------- -#93 - Add Field.equalIgnoreCase(), Field.notEqualIgnoreCase() -#408 - Add class prefixes, suffixes and other options to the - code generator -#492 - Add runtime configuration -#1107 - Let Field.contains() support the Postgres ARRAY @> ARRAY - operator -#1140 - Add ResultQuery.fetchResultSet() to return the underlying - JDBC result set -#1143 - Add Result.isNotEmpty() for convenience -#1145 - Add runtime configuration to specify whether jOOQ should - execute java.sql.PreparedStatement (with bind variables) - or a java.sql.Statement (with inlined parameters) -#1146 - Add Query.getSQL(boolean) to indicate that bind values - should be inlined (as a convenience for - Factory.renderInlined(QueryPart)) -#1148 - Add Cursor.resultSet() to expose the underlying ResultSet -#1149 - Allow for optional - "http://www.jooq.org/xsd/jooq-codegen-2.0.4.xsd" - namespace in jooq-codegen configuration -#1152 - Add & org.jooq.EnumType> - E MySQLFactory.enumType(Class, int) for enum reverse - lookups of MySQL-specific enums -#1159 - Support matching numbers with LIKE, e.g. ID LIKE '%33%' -#1160 - Implement Field.contains(), .startsWith(), .endsWith() - for numeric values, too -#1161 - Use reflection to remove compile-time dependency on - ojdbc for creating ARRAYs -#1162 - Integrate jOOR into jOOQ for simpler reflection -#1164 - Distinguish between Definition.getInputName(), - .getOutputName() -#1165 - Add constraint name to generated javadoc -#1167 - Trivial issue with org.jooq.Factory.exists Javadoc - - GitHub issue #10 -#1169 - Add Configuration.setData(), getData() to convey custom - data in a configuration's lifecycle -#1172 - Add runtime configuration to deactivate JooqLogger -#1177 - Add jOOQ-Console module to jOOQ -#1184 - Add DataType.isArray() - -API changes (backwards-compatible) ----------------------------------- -#1142 - Rename Result.exportXML() to Result.intoXML() to stay - more consistent -#1151 - Deprecate SchemaMapping in favour of new runtime - configuration - -Bug fixes ---------- -#978 - Schema.getTables() and similar methods return empty lists - when Schema is mapped with SchemaMapping -#1153 - Bad inlining of booleans in Sybase ASE / DB2 / Oracle - SQL Server / SQLite -#1154 - Bad inlining of byte[] in most dialects -#1155 - byte[] are erroneously converted to String when using - Record.intoArray() -#1156 - Bad inlining of DATE / TIME / TIMESTAMP data types in - Ingres (and other dialects, when the setting differs from - the default) -#1166 - Some generated Javadoc uses naming strategy or plain - output name, instead of qualified output name -#1168 - Oracle packages are generated as static, instead of - static final -#1175 - Factory.use() seems to render SQL with the Schema name - still present -#1179 - Oracle-generated ArrayRecords need a reference to - org.jooq.Schema to read TABLE of OBJECT from stored - procedures - -Test cases ----------- -#1147 - Add integration tests for executing SQL generated using - Factory.renderInlined() - -Version 2.0.4 - February 12, 2012 -================================================================================ - -This release introduced many improvements to source code -generation. These improvements include: - -- Maven and standalone code generation now use the same XML - configuration, which is read by jOOQ-codegen using JAXB. This - allows for more complex configuration elements in the future -- jOOQ-codegen can now handle multi-schema databases and generate - code for tables referencing tables from other schemata. This - is integration tested against the SQL Server AdventureWorks - database -- jOOQ now allows to generate simple POJOs in addition to Records - and to annotate both POJOs and Records with JPA annotations - such as @Entity, @Table, @Id, @Column, @UniqueConstraint, etc. - -You can migrate your existing .properties configuration by running -> org.jooq.util.GenerationTool /your.properties migrate - -Besides that, there is a lot of ongoing work to improve the -integration of Oracle's TABLE and VARRAY types. - -Features and improvements -------------------------- -#8 - Add JPA annotations to generated POJOs / Records -#282 - Add support for multi-schema databases -#287 - Add support for Oracle TABLE types -#395 - Use XML configuration file instead of properties file -#1089 - Add Field.contains(), .startsWith(), .endsWith() as a - convenience for Field.like() (including escaping) -#1092 - Move master data table configuration from - generator.generate to generator.database namespace -#1093 - Add support for generator.strategy in Maven source code - generation -#1094 - Add support for generator.database.date-as-timestamp in - Maven source code generation -#1095 - Move generator.generate.unsigned-types to - generator.database namespace -#1096 - Add support for generator.generate.unsigned-types in - Maven source code generation -#1103 - Add support for SQL Server data type uniqueidentifier -#1106 - Add Factory.escape(Field, char) for use with LIKE -#1108 - Add support for multi-schema databases using Maven code - generation -#1115 - Add support for Oracle VARRAY/TABLE of OBJECT types -#1127 - Add support for POJO classes generation -#1129 - Allow for using Param in LIMIT .. OFFSET clauses -#1132 - Add RenderContext.castMode() to allow for avoiding casts - where this is not really needed -#1136 - Add generation option to enable/disable generating - navigation methods - -Bug fixes ---------- -#1099 - Derby generated artefacts are not sorted alphabetically -#1101 - Internal API leak exposed through covariance in - AbstractTable.joinXXX() methods -#1110 - VARRAY element type information is lost when unnesting - VARRAY's in Oracle -#1111 - VARRAY element type information is lost when unnesting - VARRAY's returned from functions in Oracle -#1114 - Syntax error when unnesting TABLE of OBJECT in Oracle. - The unnested table contains several columns but jOOQ only - unnests "COLUMN_VALUE" -#1117 - NullPointerException when passing an ArrayRecord - containing a null array to a stored function in Oracle -#1125 - Postgres needs casting for date time data types in - queries like SELECT ? FROM DUAL -#1131 - DB2: [Noauthorized routine named "LIKE" of type - "FUNCTION" having compatible arguments was found] when - using Field.like(concat(x, y)) -#1133 - Compilation errors in generated source code if the same - constraint name exists in several schemata -#1134 - NullPointerException in code generation when a foreign - key constraint references a table from another schema - that is not being generated -#1135 - Generated Javadoc references inputSchema instead of - outputSchema - -Test cases ----------- -#1009 - Add more integration tests for proper handling of - java.sql.Date, Time, Timestamp -#1090 - Run jOOQ tests against AdventureWorks SQL Server sample - database -#1105 - Add integration tests for multi-schema source code - generation and querying -#1122 - The 10k lines of integration test code are too heavy for - the compiler. Create test modules with fewer lines of - code, each. - -Version 2.0.3 - January 29, 2012 -================================================================================ - -This release focuses on increased compatibility between various -SQL dialect integrations as far as ARRAY and JOIN support is -concerned: - -- ARRAY types are only available in H2, HSQLDB, Oracle, Postgres. - Nevertheless, they can be somewhat simulated in other dialects - using nested selects with UNION ALL. Increased compatibility - leads to a nicer API, where ARRAYs are used along with ALL/ANY - quantifiers, for instance. - -- JOIN syntaxes can be quite powerful in SQL. Apart from - simulating NATURAL JOIN, JOIN USING clauses, as well as a - synthetic "KEY JOIN" syntax, jOOQ now also supports nesting - JOIN expressions to create more complex table sources. See a - recent blog post on the subject here: - -http://blog.jooq.org/2012/01/15/lets-revise-the-sql-from-clause/ - -Features and improvements -------------------------- -#578 - Add KEY JOIN syntax to simulate joining using generated - foreign keys -#577 - Simulate NATURAL JOIN syntax, where this is unavailable -#582 - Simulate JOIN USING syntax, where this is unavailable -#671 - Allow for nesting JOIN clauses -#676 - Add Table.join() methods to create more flexible table - sources -#993 - Add Field.equalAny(T[]), .equalAny(Field) methods -#1048 - Simulate (array) syntax for dialects - that do not support arrays -#1051 - Add Factory.execute(String, Object...) as a convenience - method for Factory.query(...).execute() -#1055 - Simulate Factory.table(Object[]) and table(List) using - UNION ALL in dialects that do not support arrays -#1060 - Improve debug logging of H2 arrays. The syntax is not - ARRAY[1, 2], but (1, 2) -#1065 - Add OracleFactory.sysContext(String, String) to support - Oracle's SYS_CONTEXT function -#1069 - Add support for INSERT INTO table(field1, field2, ...) - SELECT syntax - as opposed to the existing INSERT INTO - table SELECT -#1072 - Add support for LIKE .. ESCAPE .. syntax -#1074 - Add Field.notBetween(T, T) for convenience -#1080 - Add support for JDBC's Statement.setFetchSize() in - ResultQuery.fetchLazy() -#1082 - Add some more DEBUG logging in AbstractResultQuery - -API changes (backwards-compatible) ----------------------------------- -#1059 - Change SelectFromStep.from(Collection>) to - from(Collection>) - -API changes (backwards-incompatible) ------------------------------------- -#1087 - Change the NTILE function to return Field - instead of Field - -Bug fixes ---------- -#1071 - Make Sequence Serializable -#1081 - Derby error in NULL handling when simulating unnested - arrays that contain NULL values -#1084 - Bind index mismatch in val(null).equal(null) and in - val(null).notEqual(null) -#1091 - Add missing @Support annotations on Table.crossJoin() - methods - -Test cases ----------- -#1026 - Add integration tests for NTILE window function and - document compatibility -#1073 - Add integration tests for NOT IN queries holding NULL - arguments - -Version 2.0.2 - January 8, 2012 -================================================================================ - -This is a maintenance release for jOOQ 2.0. The main improvements -include - -- The whole jOOQ API is now annotated with a new org.jooq.Support - annotation to help you assess whether a certain SQL clause is - available in your database or not. This is particularly useful - when your application should support several databases at once - (e.g. MySQL, Postgres, Oracle) -- The Oracle PIVOT clause is now formally supported for advanced - statistical queries in Oracle. This clause will be simulated in - other dialects in the future. -- The DATE data type can be mapped to TIMESTAMP. This important - when you query a legacy Oracle database, where DATE columns - can also contain time information -- Several convenience methods have been added for more fluent - syntax, when using plain SQL result queries, subqueries as - tables, or when unnesting arrays in ANY() and ALL() quantifiers - -Further type mapping support is still experimental. An official -cooperation with MinuteProject for source code generation is -being analysed. With MinuteProject, many source code generation -issues could be addressed centrally, as MinuteProject specialises -in source code generation: - -http://minuteproject.wikispaces.com/ - -Features and improvements -------------------------- -#595 - Add support for Oracle's PIVOT clause -#869 - Add support for using ANY, ALL with arrays, not just with - subselects -#1007 - Formally document the API methods to indicate whether - something is supported by any given SQL dialect -#1011 - Add code generation configuration parameter to avoid - generating @Generated annotation -#1019 - Render LIMIT x OFFSET y also for MySQL, instead of - LIMIT y, x -#1022 - Add missing Sybase ASE implementation for Factory.use() -#1024 - Add Factory.resultQuery(String, Object...) to allow for - arbitrary execution modes of plain SQL queries (lazy, - later, into, array, etc) -#1025 - Add missing SQLite implementation for Factory.deg() and - Factory.rad() -#1033 - Generate table comments into generated Tables.java as - Javadoc -#1040 - Add Object[][] Result.intoArray() and - Object[] Record.intoArray() for convenience. Let - E Record.into(Class) also support array types. -#1041 - Add Table Factory.table(Select) convenience - method for more fluency -#1042 - Add support for DISTINCT keyword in SUM, AVG, MIN, MAX - aggregate functions -#1046 - Generate Ingres table and column comments in generated - source code (only Ingres 10) - -API changes (backwards-compatible) ----------------------------------- -#1050 - Deprecate usage of SOME quantifier in predicates, such as - equalSome() - -API changes (backwards-incompatible) ------------------------------------- -#1036 - Fixed API typo in - WindowsRowsStep.rowsBetweenUnboundedFollwing() -#1037 - The fluent API allows for JOIN clauses without FROM - clause - -Bug fixes ---------- -#1010 - The MERGE INTO .. WHEN NOT MATCHED THEN INSERT .. syntax - may cause type-safety issues in some databases. VALUES - should be converted before binding -#1014 - FindBugs: Latent risk of infinite recursion due to typo - in QueryPartList.retainAll(); -#1015 - FindBugs: 7 occurrences of "Bad attempt to compute - absolute value of signed 32-bit hashcode". In extreme - cases, this could lead to SQL syntax errors -#1016 - The Oracle CONNECT BY cond1 AND cond2 syntax erroneously - creates a WHERE cond2 CONNECT BY cond1 statement -#1028 - Syntax errors when using untyped param() in HSQLDB (and - other strongly typed dialects) -#1029 - Postgres can't bind NULL values in cases, where bind type - is Object.class and bind value was created with - Factory.param() -#1030 - UnsupportedOperationException when calling - Query.bind(int, Object) on a query containing plain SQL - fields -#1031 - Incorrect debug logging when plain SQL QueryParts like - field("?") bind null values -#1032 - Incorrect debug logging when plain SQL QueryParts contain - String literals, such as 'Hello? Anyobody out there?' -#1047 - Field.notEqualAny() erroneously renders <> ALL() - -Test cases ----------- -#1021 - Add explicit integration tests for - LEFT|RIGHT|FULL OUTER JOIN - -Version 2.0.1 - December 23, 2011 -================================================================================ - -This is a maintenance release for jOOQ 2.0. The main improvements -include - -- Better integration for using jOOQ with Spring Data. This - includes support for named parameters, as well as allowing to - change bind values on previously constructed Query objects -- The MERGE statement has been enhanced for better integration - with Oracle. -- jOOQ is now ready to use with Scala / Groovy - -For more information about using jOOQ with Scala, see this blog -post: -http://blog.jooq.org/2011/12/11/the-ultimate-sql-dsl-jooq-in-scala/ - -There is now also experimental support for a custom type mapping. -This mapping allows to rewrite data types at code generation time -as well as to specify custom enum data types (e.g. boolean Y/N). -Not all integration tests run smoothly for custom data types, -hence, this feature is not yet fully supported. - -Features and improvements -------------------------- -#691 - Add support for Oracle CURSOR REF IN / INOUT parameters -#677 - Add type-mapping configuration, enforcing types for - columns -#947 - Add custom type mapping support (experimental) -#968 - Allow for custom enum types, configured in the code - generator (experimental) -#974 - Add Schema.getTable(String), getSequence(String), - getUDT(String) for better runtime Schema meta-navigation -#975 - Add Sequence.getName(), getSchema(), getDataType() -#980 - Add support for named parameters, to better interact with - Spring -#991 - Add Query.bind(String, Object) and bind(int, Object) to - easily modify existing bind values -#992 - Document thrown DataTypeException in Convert methods -#998 - Enhance MERGE statement for Oracle extensions: - WHEN MATCHED THEN UPDATE .. WHERE .. DELETE WHERE .. - WHEN NOT MATCHED THEN INSERT .. WHERE .. -#1000 - Add support for MySQL's INSERT INTO .. SET .. syntax in - MERGE statement's WHEN NOT MATCHED THEN INSERT clause - -API changes (backwards-compatible) ----------------------------------- -#981 - Cannot insertInto(table("my_table")), as plain SQL tables - return Table, not Table. Relax - bound on R -#988 - Change Factory.field(String) to return Field - instead of Field -#999 - Make MERGE's WHEN MATCHED .. and WHEN NOT MATCHED .. - clauses optional -#1001 - Identity.getField() should return TableField - instead of Field -#1006 - Add Factory.value(...) as a synonym for Factory.val(...) - for increased Scala / Groovy compatibility - -Bug fixes ---------- -#973 - EnumType renders name() instead of getLiteral() in - formatXXX() methods -#977 - EnumType renders name() instead of getLiteral() in - Convert.convert() method -#979 - Record.from() sets all changed flags to true. That's not - necessarily correct in the event of storing the record - back to the DB -#985 - AbstractRecord.equals() does not correctly compare - arrays. Compare them using Arrays.asList() -#986 - Postgres / DB2 / Sybase ASE foreign-key namespace is - unique-per-table. jOOQ forces all foreign keys from all - tables into the same namespace -#990 - Problems when encoding arbitrary byte[] as String(byte[]) - in inlined SQL. This can cause issues when DEBUG-level - logging is activated -#995 - Routines don't respect SchemaMapping - Github issue #8 -#1002 - TableRecord.storeUsing() doesn't update IDENTITY column - values, if the column is not part of the main unique key -#1003 - Sybase / SQL Server / MySQL / Ingres / H2 / Derby's - INSERT .. RETURNING simulation returns null if a table - has an IDENTITY column, but no primary/unique key -#1005 - The INSERT INTO .. VALUES .. syntax may cause type-safety - issues in some databases. VALUES should be converted - before binding - -Test cases ----------- -#984 - Detach IDENTITY column tests from UNIQUE KEY tests, - create a dedicated test suite instead - -Version 2.0.0 - November 25, 2011 -================================================================================ -This release is a fresh start in many areas of jOOQ, adressing -issues that have been requested by users for a long time. These -release notes docment the most important changes, a detailed -upgrade guide, as well as the detailed list of improvements. - -Most important changes ----------------------- -- The API became more static. This applies to many Factory - methods, such as val(), literal(), as well as to many Field - methods that have been moved over to the Factory. For example, - when before, you wrote this using "postfix function notation": - -
    NAME.replace(" ", "_").trim()
    - - you will now write (just as in SQL): - -
    trim(replace(NAME, " ", "_"))
    - - Using static imports of Factory.*, jOOQ makes SQL look even - more like SQL. The current "postfix notation" is maintained for - backwards compatibility. -- By default, jooq-codegen will now generate a "dynamic" meta - model as opposed to the existing static one. Generated tables - covariantly override the as(String) aliasing method, leading - to a much more convenient aliasing style. When before, you - wrote: - -
    -Table parent = T.as("parent");
    -Table child  = T.as("child");
    -Condition join =
    -  parent.getField("ID").equal(child.getField("PARENT_ID"))
    -
    - - You can now write: - -
    -T parent = T.as("parent");
    -T child  = T.as("child");
    -Condition join = parent.ID.equal(child.PARENT_ID)
    -
    - - Of course, the existing notation still works - -- Exceptions are no longer checked. When previously, the DB's - SQLException was propagated to client code, there is now an - unchecked DataAccessException hierarchy, similar to that of - Spring. This will eventually give way to a standardised error - handling abstraction, in future developments. -- Window functions are now constructed from their underlying - aggregate functions just like in SQL. For example: - -
    -sum(AMOUNT)
    -sum(AMOUNT).over().partitionBy(ACCOUNT)
    -
    - - This makes for a more concise API, especially when considering - future extensions, such as Oracle's KEEP (DENSE_RANK FIRST...) - syntax. -- More type safety has been introduced regarding various places - where generic and types are involved. - This is especially true for INSERT / UPDATE / DELETE statements -- Sequences now also have a type -- Unsigned number types are now supported in those databases that - use them. Unsigned numbers are implemented in jOOU, a spin-off - open source project. For convenience, this library is - "internalised" into jOOQ, to avoid adding a dependency - -http://code.google.com/p/joou/ - -Upgrade instructions: ---------------------- -Various of the above changes are incompatible with jOOQ 1.x. In -order to upgrade, please be aware of the following pitfalls: - -- The schema needs to be re-generated. -- Much of the post-fix function notation is replaced by static - methods in the Factory. Today's org.jooq.Field API is - maintained in jOOQ 2.0, for backwards compatibility. It will - be removed, eventually, though. Expect some incompatible - changes, where window functions are involved -- Some Factory instance methods (such as val(), literal()) are - now static. They are compatible, but may cause compiler - warnings. -- The meta model is now an instance model by default. If you - prefer the static meta model, you can configure this in your - jooq-codegen configuration. -- The additional typesafety involving and types may cause - compiler warnings and errors. -- SQLException is no longer part of the API. This can cause - compiler issues, in particular when extending jOOQ -- Some utility classes have moved to org.jooq.tools - -Should these incompatibilities be too significant for your -project, you can still stay on the 1.x branch, which will be -maintained for a while. Be aware that upgrading might be more -difficult, later, though. - -Features and improvements -------------------------- -#55 - Implement improved exception handling -#117 - Improve DSL support for field and table aliasing (decrease - verbosity) -#519 - Add support for MySQL UNSIGNED numeric types -#626 - Create static function access -#661 - Add support for bitwise operators -#718 - Sequences should be mapped to appropriate type (e.g. - SMALLINT, INT, BIGINT, etc) -#734 - Add support for Oracle / SQL Server CUBE() and ROLLUP() - grouping functions -#751 - Add support for Oracle / SQL Server GROUPING SETS() - function -#799 - Add support for Oracle PL/SQL's object-oriented MEMBER - PROCEDURES and MEMBER FUNCTIONS -#804 - Add to Insert, Update, Delete -#835 - Review API typesafety for InsertSetMoreStep - set(Field, T) and similar methods -#890 - Add Factory.selectCount() convenience method -#891 - Let min() max(), etc functions return a new type - AggregateFunction. This type can then be used as an entry- - point for window functions -#892 - Add support for Oracle / SQL Server GROUPING() and - GROUPING_ID() functions to be used along with CUBE() and - ROLLUP() -#893 - Simulate ROLLUP() function for MySQL, using the WITH - ROLLUP grouping modifier -#894 - Move functions from Field to org.jooq.impl.Factory - and make them static -#895 - Add power(..., Field) -#897 - Add (experimental) Spring integration project -#898 - Replace usage of checked SQLException by an unchecked - DataAccessException, similar to that of Spring -#899 - Build jOOQ .jar files as bundles to be deployed into OSGI - environments -#900 - Purge deprecated API - Prior to 2.0 -#901 - Introduce InvalidResultException as a subtype of - DataAccessException for integrity checks in methods like - ResultQuery#fetchOne(), ResultQuery#fetchMap(), etc. -#902 - Make AggregateFunction the base type for constructing - window functions -#904 - Move SQLDialectNotSupportedException into - org.jooq.exception package -#905 - Introduce MappingException as a subtype of - DataAccessException for integrity checks in methods like - ResultQuery#fetchInto(), etc. -#907 - Add missing Field.like(Field), notLike(Field) - methods to overload the existing Field.like(T), notLike(T) -#908 - Change rpad / lpad functions to accept String instead of - char -#912 - Add R newRecord(Table, Object) as - the inverse of various into(Class) methods -#916 - Add > {Record.into(Table) | - Result.into(Table) | ResultQuery.fetchInto(Table) | - Cursor.fetchInto(Table)} -#917 - Add various Cursor.fetchOneInto() convenience methods -#918 - Add CustomTable, CustomRecord as base classes for more - convenience when used with various into(Table) methods -#919 - Allow for accessing non-public constructors of Record - subtypes -#923 - Move some utilities to org.jooq.tools -#924 - Generate a reference to every table in a new Tables.java - class for improved static access -#928 - Add DataTypeException extending DataAccessException in - case something went wrong when converting data types -#930 - Support converting date time types to java.util.Calendar. - This applies to various into(Class) methods, as well as - Result.getValue(xx, Class) -#931 - Allow for conversion between Long and date/time types, and - vice versa -#932 - Let the bound of R in TableRecord extend TableRecord, - in UpdatableRecord to extend UpdatableRecord -#933 - Add support for type Character in Record.into(Class) - methods and similar -#936 - Accept primitive types, such as int.class for type - conversion -#938 - CODEGEN: Add static/instance table field configuration -#939 - Include license.txt and readme.txt in .jar files' META-INF - directory -#953 - Make DefaultGeneratorStrategy methods non-final to allow - for overriding -#954 - Add examples for source code generation of multiple - schemata with Maven -#955 - Generate a reference to every type in a new UDTs.java - class -#957 - Add R Factory.newRecord(UDT) for constructing - attached UDTRecords -#958 - CODEGEN: Add generation-time schema mapping, allowing for - re-writing schemata in jooq-codegen -#960 - CODEGEN: Add code generation configuration parameter to - avoid using the new UByte, UShort, UInteger, ULong wrappers - for UNSIGNED number types -#961 - Use Oracle's SYS.ALL_SEQUENCES.MAX_VALUE to determine the - type of a sequence. -#969 - Add List ResultQuery.fetch(Field, - Class) convenience method - -Bug fixes ---------- -#686 - Reduce the internal API leak by preventing access to - TableFieldImpl, UDTFieldImpl, ParameterImpl -#903 - lag(Field, int, T) erroneously delegates to lead() -#906 - Add more NullPointerException safety to API -#913 - NoClassDefFoundError in JooqUtil.isJPAAvailable() -#920 - Generic type is lost in Cursor.fetchInto(RecordHandler) -#925 - SelectConditionStep should extend SelectConnectByStep, not - SelectGroupByStep -#926 - AbstractRecord.into() fails to convert java.sql.Date into - java.util.Date -#934 - Don't consider static members in reflection utilities when - used with Record.into(Class) and similar methods -#935 - Don't consider final member fields in reflection utilities - when used with Record.into(Class) and similar methods -#937 - In the event of name clash (same name for table and field) - generated code has errors -#945 - Calling UpdatableRecord.setValue() twice with the same - argument causes the changed flag to be reset to false -#948 - Always set the changed flag to true in Record.setValue() -#959 - Compilation errors in generated source code if MySQL enum - values match Java reserved words, such as 'true', 'false', - 'new', etc... -#962 - Postgres ordering of generated enum literals is unstable -#967 - Better document type conversion - -Version 1.7.0 - November 25, 2011 -================================================================================ -This is a maintenance release for the 1.x branch. Some important -bug fixes are merged from version 2.0. These include: - -Bug fixes ---------- -#925 - SelectConditionStep should extend SelectConnectByStep, not - SelectGroupByStep -#926 - AbstractRecord.into() fails to convert java.sql.Date into - java.util.Date -#937 - In the event of name clash (same name for table and field) - generated code has errors -#945 - Calling UpdatableRecord.setValue() twice with the same - argument causes the changed flag to be reset to false -#948 - Always set the changed flag to true in Record.setValue() -#951 - Empty Password for jooq-codegen-maven causes NPE - -Version 1.6.9 - November 7, 2011 -================================================================================ -This is a maintenance release for the 1.x branch. Developments -on this branch will stop after version 1.6.9. Only important bug -fixes are merged to this branch. Developments for release 2.0 -have started. - -The most important functionality in release 1.6.9 is the newly -added support for JDBC batch operations. You can now batch -execute several queries. - -See the official blog for more information: -http://blog.jooq.org/2011/10/25/jdbc-batch-operations-with-jooq/ - -Features and improvements -------------------------- -#621 - Add support for JDBC batch operations -#794 - Add support for ORDER BY [int value] in order to reference - a column index for sorting -#882 - Optimise Field.isTrue() and isFalse(). Take Field's data - type into consideration. -#885 - Add support for INSERT INTO .. VALUES (..) syntax, - omitting explicit field declarations -#887 - Add List Cursor.fetchInto(Class) - -Bug fixes ---------- -#748 - H2 regression in 1.3.158 regarding stored functions, which - return a ResultSet (this was fixed in H2) -#859 - Derby casting of numeric types to BOOLEAN doesn't work -#886 - Regression in date extract function when used in a - subselect -#888 - Derby casting of VARCHAR to FLOAT (and similar) doesn't - work - -Version 1.6.8 - October 22, 2011 -================================================================================ -The main improvement of this release is the re-design of the -stored procedure / function API. With 12 supported RDBMS, which -all have their own idea about what is a stored procedure and what -is a stored function, it has proven to be a better design, to -unite them in one single type: org.jooq.Routine. A routine can -have a return value as well as OUT parameters. It can be embedded -in SQL and used as a field or a table. - -This means, you will need to re-generate your database schema, -when upgrading to jOOQ 1.6.8. After re-generation, you'll need to -fix your client code. These are the package changes: - -- [generated.package].procedures > [generated.package].routines -- [generated.package].functions > [generated.package].routines -- [generated.package].Procedures > [generated.package].Routines -- [generated.package].Functions > [generated.package].Routines - -Oracle generated packages are not re-located. With these -improvements, using stored procedures and functions becomes even -more reliable, especially when cursor types are involved. Read -more about the rationale behind this change: - -http://blog.jooq.org/2011/10/17/what-are-procedures-and-functions-after-all/ - -Apart from that, important improvements have been made in the -area of plain SQL tables. Also, consider a demo integration of -jOOQ with Google Cloud SQL: - -http://blog.jooq.org/2011/10/22/jooq-and-google-cloud-sql-example/ - -Features and improvements -------------------------- -#271 - Don't pre-fetch table meta data when selecting from plain - SQL tables -#489 - Add support for SELECT * (i.e. render SELECT * where - applicable) -#596 - Add support for VARIANCE() and STDDEV() OVER() window - functions -#608 - Add jOOQ version number in generated source code -#670 - Add more Javadoc to Field.xxx() functions -#692 - Add support for ResultSet type returned from HSQLDB - stored functions -#850 - Use http://www.jooq.org as URL for the @Generated - annotation -#854 - Add convenience methods Fields.isTrue(), isFalse() for - conversion of "Y", "YES", "1", "true", "on", etc into a - boolean condition -#870 - Add support for MEDIAN aggregate function -#872 - Add support for STDDEV_POP(), STDDEV_SAMP(), VAR_POP(), - VAR_SAMP() aggregate functions -#874 - Reduce the number of internal classes for dialect-specific - function aliases -#878 - Implement DataType.equals() and hashCode() - -API changes (backwards-compatible) ----------------------------------- -#851 - Change Field.{sortAsc|sortDesc}(List sortList) into - Field.{sortAsc|sortDesc}(Collection sortList) - -API changes (backwards-incompatible) ------------------------------------- -#848 - Purge deprecated API - Prior to 1.6.1 -#849 - Replace Cursor.fetchResult() by Cursor.fetch() -#852 - Review stored procedures / functions concept. Merge them - all into a single "Routine" type - -Bug fixes ---------- -#756 - Error when aliasing HSQLDB and Postgres unnested tables -#761 - Exception when TRACE logging execution with plain SQL - tables involved -#773 - Execute standalone stored functions as CallableStatement - to prevent issues with transactions -#847 - Query.getSQL() doesn't render dialect-specific SQL when - Query is constructed using the fluent API -#853 - DB2 generated convenience methods for stored functions - have unstable ordering -#857 - Derby casting of numeric types to String / VARCHAR does - not work -#858 - SQLDataType.getSQLDataType() should return itself, instead - of null -#860 - SQLite CEIL function is incorrectly simulated. CEIL(2.0) - returns 3.0 instead of 2.0 -#861 - Field.replace(String) generates bad SQL for various RDBMS. - Field.replace(String, String) works, though -#863 - Ingres integration generates illegal SQL when selecting - things like SELECT 1 WHERE 1 = 1 -#866 - Sybase ASE Field.replace(String) function incorrectly - removes the argument string -#873 - Error when selecting two times the same aggregate field -#877 - Compilation error in generated source code when a table - without a primary key has an identity column -#879 - Add Google Cloud SQL Example -#880 - Query.getSQL() does not consider SchemaMapping - -Test cases ----------- -#811 - Loader integration tests fail for SQLite -#812 - CSV Loader test leaves Postgres JDBC connection in an - inconsistent transactional state on error -#856 - Add integration tests for Field.abs() -#865 - Add integration tests for Field.ascii() -#867 - Add integration tests for Field.sum(), avg(), max(), min() -#881 - Re-design H2 stored functions to be pre-compiled, in order - to speed up integration tests - -Version 1.6.7 - September 25, 2011 -================================================================================ - -This release coincides with the launch of the new website at -http://www.jooq.org. Hence, it ships with little additions to the -deliverable itself. - -Apart from new convenience methods, the main addition is a Maven -plugin for jooq-codegen contributed by Sander Plas. - -Features and improvements -------------------------- -#797 - Create Maven plugin for source code generation -#825 - Add List> Factory.fetchMany(String) to - allow for fetching several result sets from stored - procedures, such as Sybase ASE's "sp_help" -#838 - Implement MetaDataFieldProvider.toString() -#841 - Add List Result.getValues(Field, Class) -#842 - Add Query.getBindValues() method to allow for extracting - bind values in the correct order -#843 - Add Factory.fetch(ResultSet) to transform a JDBC ResultSet - into a jOOQ Result - -API changes (backwards-compatible) ----------------------------------- -#837 - Avoid final keyword on Object methods, such as .equals(), - .hashCode(), etc - -Bug fixes ---------- -#836 - Bad syntax when selecting from aliased plain SQL tables -#839 - Boolean conversion in getValueAsBoolean() should trim - String values first -#840 - Numeric conversions in getValueAsXXX() should trim String - values first -#844 - NullPointerException when selecting a column from a Result, - that does not exist - -Version 1.6.6 - September 11, 2011 -================================================================================ - -Finally, support for another RDBMS has been added. Sybase's other -important product Sybase Adaptive Server Enterprise (or simply -Sybase ASE) is now officially supported by jOOQ - -Apart from this, there had been important improvements with the -recently added INSERT .. RETURNING clause, as well as some fixes -related to DECIMAL / NUMERIC data types - -Features and improvements -------------------------- -#796 - Complete missing public org.jooq.impl Javadoc -#800 - Add support for Sybase Adaptive Server Enterprise -#808 - Add support for INSERT .. RETURNING for Ingres -#809 - Add support for INSERT .. RETURNING for Sybase SQL - Anywhere using SELECT @@identity -#810 - Add support for INSERT .. RETURNING for SQLite using - last_inserted_rowid() -#813 - Add DSL support for INSERT .. RETURNING -#814 - Change TableRecord to reload its trigger-initialised main - key in Oracle and other RDBMS that don't support IDENTITY - columns -#818 - Add SQLiteFactory.rowid() -#819 - Support SQLite AUTOINCREMENT columns as IDENTITY -#820 - Add Factory.fetchOne(String) for executing plain SQL - queries that return single records -#826 - Allow for returning several records in the INSERT .. - RETURNING clause. This now works for DB2, HSQLDB, MySQL, - and Postgres -#827 - Support Sybase SQL Anywhere's TOP n START AT m clause - instead of simulating it with nested SELECT's - -API changes (previous API now deprecated) ------------------------------------------ -#817 - Deprecate Factory.lastID(Identity) - -Bug fixes ---------- -#815 - SQL Server fetching of IDENTITY value is broken -#821 - Optimise ResultQuery.fetchAny() executing fetchLazy() - internally, and only fetching one record from the cursor -#822 - Let Constant cast to more precise NUMERIC/DECIMAL types - in those RDBMS where casting is necessary -#823 - Cannot bind SQLite BigDecimal, BigInteger types - bind - them as String instead -#824 - BigInteger values cannot be bound in DB2, Derby -#828 - Document inefficient implementation for GREATEST and LEAST - in some RDBMS - -Version 1.6.5 - August 28, 2011 -================================================================================ - -This release finally adds a loader for CSV data to jOOQ. You can -now load CSV data using a simple fluent API, configuring error -handling, duplicate behaviour and transaction handling, as well -as various CSV parameters. - -This release also changes the way generated keys are retrieved -after INSERT's. Instead of (potentially inconsistently) running -SELECT MAX(pk) immediately after the INSERT, Postgres' INSERT.. -RETURNING clause is used (or simulated), in a single statement. - -Features and improvements -------------------------- -#784 - Add Result.exportXML() to retrieve a DOM document similar - to that of .formatXML() -#792 - Add support for loading of CSV data into tables -#795 - Add List fetch(int, Class) and - fetch(String, Class) convenience methods -#803 - Add support for INSERT .. RETURNING or simulate it where - not available -#805 - Add T[] fetchArray(int, Class) and - fetchArray(String, Class) convenience methods -#806 - Add T fetchOne(int, Class) and - fetchOne(String, Class) convenience methods - -Bug fixes ---------- -#798 - Oracle IN (...) clause with more than 1000 arguments does - not work -#802 - Use "INSERT .. RETURNING" instead of "SELECT MAX(pk)" - to retrieve the primary key of a new record - -Version 1.6.4 - August 07, 2011 -================================================================================ - -This release ships with a couple of useful concepts inspired by -other frameworks. These are: - -- selecting into custom POJO's. Results can be mapped to POJO's - by convention or using JPA @Column annotations -- selecting into custom callbacks. This is already a wide-spread - practice in Spring JdbcTemplates. -- selecting long-running queries asynchronously. This idea has - been inspired by the Avaje Ebean framework - -Apart from these changes and some bugfixes, the internal API has -been completely re-designed. The idea here is that query -rendering and variable binding are even faster (less String -objects), more extensible and more accurate. This is a pre- -requisite for many future developments with even more complex SQL -statements, such as for instance CTE's (Common Table Expressions) - -Features and improvements -------------------------- -#137 - Add support for asynchronous query execution using - FutureResult ResultQuery.fetchLater() similar to - Avaje Ebean -#198 - Add SELECT INTO functionality into POJO's using - T ResultQuery.fetchInto(Class) similar to JPA - CriteriaQuery -#728 - Add .fetchInto(RecordHandler) to ResultQuery, Result, - and Cursor to allow for callbacks similar to Spring's - JdbcTemplate/Ollin Framework -#774 - Add more TRACE logging to .fetchLazy() -#777 - CURSOR: Add function alias: UNNEST for TABLE -#781 - Add E function (Euler number) -#782 - Add T Record.getValue(..., Class) methods - for convenient type conversion -#785 - Allow for storing TableRecord with a provided Field[] - indicating the primary key -#786 - Document thread-safety facts in Factory Javadoc -#788 - Add Key.getFieldsArray() convenience method -#793 - Add support for Oracle's SYS_CONNECT_BY_PATH function - -API changes (backwards-incompatible) ------------------------------------- -#758 - Change internal QueryPart rendering and binding API to use - Configuration and Context as callback parameters. If you - use CustomField or CustomCondition, please correct your - implementations accordingly. Other parts of the API should - not be affected -#778 - Purge deprecated API, deprecation prior to jOOQ 1.5.7 -#790 - Purge deprecated generated code, deprecation prior to - jOOQ 1.5.7 - -API changes (previous API now deprecated) ------------------------------------------ -#776 - Deprecate QueryPart.getSQL(), add Query.getSQL() -#789 - Deprecate Record constructors with Configuration - parameter - -Test cases ----------- -#636 - Add integration tests for more advanced CONNECT BY - example -#772 - Add integration tests for selecting cartesian products - (several tables in FROM clause) - -Bug fixes ---------- -#730 - Sybase cannot bind null values in plain SQL -#759 - Omit the TOP 100 PERCENT clause in SQL Server ordered - top-level queries -#767 - An empty Java package is generated for PL/SQL packages - containing underscores -#771 - Some exotic literals are not properly escaped with quotes - yet, e.g. UDT identifiers, VARRAY types, etc. -#775 - Automatic re-attaching after deserialisation does not work - when used with .fetchLazy() -#787 - The UpdatableRecord's internal changed flags are not - updated after INSERTs / UPDATEs - -Version 1.6.3 - July 31, 2011 -================================================================================ - -This is mainly a maintenance release with lots of bugfixes, -mostly around code generation, plain SQL tables, and data types. -Please note that generated source code may contain incompatible -changes due to #639 (see below for details)! - -Apart from that, project CURSOR is advancing and it is now -possible to unnest arrays into tables. See this article for -details about where jOOQ is heading with project CURSOR: - -http://blog.jooq.org/2011/07/24/the-power-of-ref-cursor-types/ - -Features and improvements -------------------------- -#679 - Improve H2 NVL2 support as of H2 1.3.156 -#680 - Improve H2 ROUND support as of H2 1.3.156 -#735 - Add README documentation to GitHub -#736 - Add more info regarding number of generated artefacts in - jooq-codegen logging -#750 - Add DataType.isNumeric(), .isString(), .isTemporal(), - .isBinary() -#754 - Log query as executed by JDBC PreparedStatement when - TRACE logging (without inlining variables) -#752 - CURSOR: Add support for selecting from ARRAY types -#762 - Use H2's native support of NVL, instead of COALESCE -#764 - CURSOR: Add support for selecting from ARRAY types - returned from stored functions - -API changes (backwards-incompatible) ------------------------------------- -#639 - Map DECIMAL(n, 0) and NUMBER/NUMERIC(n, 0) data types - to Byte/Short/Integer/Long/BigInteger instead of - BigDecimal in generated source code. Re-generated code - will not be compatible! - -API changes (previous API now deprecated) ------------------------------------------ -#731 - Inconsistent API with Field.lessOrEqualToXXX(). Removed - "To" from method name -#757 - Deprecate Factory.constant() methods - -Test cases ----------- -#731 - Add missing integration tests for equalAll(), equalSome() - and similar methods -#747 - Upgrade H2 to 1.3.158 - -Bug fixes ---------- -#632 - Sybase error : column @p0 not found in nested SELECT -#700 - Restore HSQLDB ARRAY support with INFORMATION_SCHEMA - change in HSQLDB 2.2.3, and some fixes in 2.2.5 -#725 - Cannot insert byte[] data with plain SQL -#733 - H2 changed JDBC type for ResultSet/CURSOR from 0 to -10, - like Oracle -#737 - Compilation errors in generated source code if table - fields contain spaces -#738 - Compilation errors in generated source code if MySQL - procedure parameter type contains two comma-separated - arguments (like DECIMAL(10,2)) -#739 - Postgres navigator methods and keys are not re-generated - in the same order -#740 - Formatting is broken on Result.format() with some special - newline characters -#743 - Make SQL Server INFORMATION_SCHEMA independent from - HSQLDB again, to prevent incompatibility issues -#744 - Ingres REAL and FLOAT4 types are generated as FLOAT/FLOAT8 - which maps to java.lang.Double, instead of java.lang.Float -#753 - Postgres error when binding array that contains null - values -#755 - NullPointerException when converting an array containing - a null value -#766 - Bad decoding of JDBC Types BIGINT (to BigInteger instead - of Long) and REAL (to BigDecimal instead of Float) when - plain SQL tables are involved - -Version 1.6.2 - July 10, 2011 -================================================================================ - -This release mainly introduces three new projects. - -Project CURSOR where jOOQ finally supports various RDBMS's TABLE, -CURSOR, and REF CURSOR data types. This is especially useful when -those types are returned from stored procedures and functions. -Cursors are simply mapped to jOOQ Result types and can -thus be used like regular table results - -Project EXPORT aims at exporting data from the database in -various serialisable formats, such as XML, CSV, HTML, Text, JSON. -This project will be continued in the future, to also -deserialise from (some of) these data streams. This will allow -for easy transport of jOOQ Result types over the net. - -Project CODEGEN has finally been started. Many improvements -suggested by jOOQ users will be implemented in the next releases. -In this release, important fixes have been made to prevent -compilation errors in generated artefacts. - -Features and improvements -------------------------- -#61 - EXPORT: Add Result.formatXML() -#166 - CURSOR: Add support for ResultSet type returned from - Oracle stored procedures / functions -#411 - Allow for fetching Map (instead of Record) - and List> (instead of Result) -#549 - Add Factory.function() for plain SQL functions -#611 - Simulate RPAD and LPAD in SQL Server, Sybase -#627 - Add support for Postgres FOR UPDATE OF [table-name] clause -#628 - Add support for REPEAT (SQL Server: REPLICATE) function -#637 - Nicely format time in StopWatch logging output -#640 - Simulate Postgres FOR UPDATE OF [table-name] clause in - other dialects -#649 - CURSOR: Add Cursor.fetch(int) .fetchOne() - .fetchResult(int) .fetchResult() -#653 - Add support for MySQL encryption and compression functions -#660 - Clarify Javadoc of UpdatableRecord to explain its - behaviour when changing the main unique key -#669 - EXPORT: Add Result.formatHTML() -#672 - Add convenience method UpdatableRecord.copy() in order to - reset primary key values for a subsequent INSERT -#675 - EXPORT: Add Result.formatCSV() -#683 - Implement ResultImpl.equals() and .hashCode() -#684 - Implement AbstractStore.equals() and .hashCode() -#685 - Add Store.size() to indicate the maximum index of the - Store -#687 - EXPORT: Add result.formatJSON() -#689 - Create separate builds: jooq-core.zip and - jooq-with-dependencies.zip -#690 - CURSOR: Add support for ResultSet type returned from H2 - stored functions -#695 - CURSOR: Add support for ResultSet type returned from - Postgres stored functions -#697 - Add Factory.fetch(String) for executing plain SQL queries - that return results -#701 - Add ResultQuery.fetchArray() and .fetchOneArray to return - Object[][] and Object[] -#704 - Always add top and bottom line in Result.format() -#705 - Right-align numeric values in Result.format() -#716 - Add SUBSTRING function Field.substring(Field, Field) - taking fields as arguments -#719 - Document risk of SQL injection in plain SQL and literal - factory methods -#726 - Add LENGTH function as a synonym for CHAR_LENGTH - -API changes (backwards-compatible) ----------------------------------- -#698 - Inconsistent API with Factory.fetch(Table [,Condition]) - Let method return Result instead of List -#699 - Let Result extend List - -API changes (previous API now deprecated) ------------------------------------------ -#656 - Decrease verbosity of plain SQL methods. They will just be - called Factory.field() .condition() .table() .query() - -Test cases ----------- -#643 - Add integration test for code generation of invalid and - incomplete types in Oracle -#654 - Add integration tests for master data tables with PK types - other than NUMBER/INT -#655 - Add missing integration tests for TRIM function - -Bug fixes ---------- -#450 - Improve plain SQL integrity checks for bind variables -#610 - CODEGEN: Compilation error in generated source code for - databases with table named 'system' -#646 - An empty Java package is generated for an empty PL/SQL - package. This is unnecessary -#651 - CODEGEN: Avoid importing datatypes in generated source - code to prevent collisions -#657 - NullPointerException when creating a Factory with a null - SchemaMapping -#658 - Master data table code generation is broken for tables - with more or less than 3 columns -#662 - Add support for the missing Postgres data type "bpchar" -#663 - Add support for the missing Sybase data type "int" -#664 - Ingres INTEGER data types are not correctly generated -#665 - HSQLDB Datatype CLOB and BLOB are not supported, when - selecting from plain SQL tables -#666 - The evil bug: Ingres TRIM function only executes RTRIM -#673 - UpdatableRecord.store() doesn't work if called after - .delete() -#702 - Add support for the missing SQLite data type "NULL" -#706 - CURSOR: Ensure that Query.execute() runs in a single - transaction when Postgres refcursor is involved in the - query (this fixes a Postgres JDBC driver flaw) -#724 - NullPointerException when passing a single literal null - bind value to plain SQL methods without casting to Object -#729 - DB2, Derby, Ingres, Oracle cannot bind null values in - plain SQL - -Version 1.6.1 - June 19, 2011 -================================================================================ - -In this release, the PORTABILITY project has been implemented. -Finally, the SQLDialect has been removed from most generated -artefacts (Schema, Table, Field, Sequence, etc). Also, the -constructing Factory is not referenced by its created QueryParts -anymore, unless this is really necessary (Query objects, UDT's, -ARRAY types). This leads to higher compatibility between schemata -of different databases, e.g. if users want to use an HSQLDB -development and Oracle productive database. - -Unfortunately, this means that the way stored procedures are -called had to be changed. This is an API break that could not be -avoided. The pre-1.6.1 StoredObject.execute(Connection) method -is deprecated and will be removed in the future. It has been -replaced by StoredObject.execute(Configuration) - -In addition to this project, many more window functions are now -supported, as well as the Oracle-specific CONNECT BY clause for -recursive queries. - -Features --------- -#351 - Add support for Oracle ROWID data type -#452 - PORTABILITY: Create a super-set of RDBMS data types -#453 - PORTABILITY: Don't create dialect-specific QueryParts -#455 - Add support for the Oracle CONNECT BY clause -#587 - Add optional OFFSET clause to form LIMIT .. OFFSET - constructs -#589 - Add extended FOR UDPATE [OF ...] [{WAIT n | NOWAIT | SKIP - LOCKED }] support -#591 - Add support for LEAD() OVER() and LAG() OVER() window - functions -#592 - Add support for the CUME_DIST() OVER() window function -#601 - Add Factory.literal() convenience methods -#602 - Add Factory.val() methods to decrease .constant() - verbosity -#604 - Add support for RESPECT NULLS clause in some window - functions -#605 - Add Factory.use(String) for non-generated schemata -#613 - Add PI function -#616 - Add Factory.two() literal convenience method -#630 - Add support for Oracle CONNECT BY pseudo-columns LEVEL, - CONNECT_BY_ISCYCLE, CONNECT_BY_ISLEAF - -API changes ------------ -#299 - PORTABILITY: Create a dialect-independent meta-model -#588 - Add OVER() keyword to FIRST_VALUE() and LAST_VALUE() API - -Test cases ----------- -#368 - Add integration test for use with schema mapping -#586 - Upgrade H2 to 1.3.155 -#607 - Add integration tests for CRUD / SP's / UDT's / ARRAY's - with SchemaMapping -#612 - Add integration tests for LPAD and RPAD functions -#624 - Add integration test for code generation of invalid/ - incomplete views in Oracle -#631 - PORTABILITY: Add integration tests for using Oracle- - generated schema against an HSQLDB database -#638 - Add missing integration test for DECIMAL data type - -Bugfixes --------- -#176 - Stored procedures / functions in EQUIVALENT schemata - cannot be called -#493 - Bind variable mismatch when constructing bad SQL -#594 - Confusing Javadoc in SELECT DSL API -#603 - Fix DB2 'IGNORE NULLS' clause -#619 - SUBSTRING() function is broken in DB2, Ingres, SQL Server -#623 - SQL syntax error for some MERGE queries in SQL Server and - Sybase -#633 - SchemaMapping is not applied to sequences -#634 - Sequences are not escaped in generated SQL - -Version 1.6.0 - June 05, 2011 -================================================================================ - -Apart from supporting various additional standard and non- -standard JOIN constructs, there is now also full support for the -SQL standard MERGE statement and MySQL's ON DUPLICATE KEY variant -thereof. A great number of API enhancements have been added, -which improve the usability of jOOQ. The Ingres database is now -also supported. - -Features --------- -#301 - Add support for Oracle execution hints -#409 - Add support for NATURAL JOIN syntax, where RDBMS allows it -#415 - Make fluent API's underlying SelectQuery objects publicly - available -#429 - Add Ingres support -#475 - Document class-level generic types and in Javadoc -#486 - Add support for SQL MERGE clause -#494 - Allow for omitting schema name in generated SQL -#496 - Automatically update IDENTITY values in UpdatableRecord, - after storing them -#520 - Add support for JOIN ... USING syntax -#524 - Upgrade HSQLDB to 2.2 -#533 - Add ORDER BY [Map] or BY [List] functionality -#534 - Add Result.isEmpty() -#535 - Call upon ConfigurationRegistry.provideFor() before - throwing a DetachedException -#536 - Simulate CASE [value] WHEN [value] THEN [result] END - syntax in Derby -#538 - Add some logging to ConfigurationProvider -#539 - Add possibility to negate numeric values with Field.neg() -#541 - Add support for MySQL ON DUPLICATE KEY clause -#542 - Allow for Collection arguments in INSERT's DSL API -#543 - Allow for creating FUNCTION() OVER() without PARTITION BY - or ORDER BY clause -#546 - Add Factory.use(Schema) -#548 - Add new internal type FieldMap -#550 - Simulate ON DUPLICATE KEY INSERT clause in dialects other - than MySQL -#551 - Add TableMapping, similar to SchemaMapping for mapping - tables -#553 - Add Factory.plainSQLQuery -#554 - Add Factory.plainSQLField with a DataType parameter -#555 - Add UpdateXXX.set(Map) convenience methods to DSL API -#557 - Enhance INSERT DSL API to allow for adding VALUES clause - with InsertXXX.set() syntax -#570 - Add support for the RAND() function -#567 - Add support for Ingres Sequences -#572 - Add support for the ATAN2() function -#573 - Add possibility for additional select() clauses for - convenience -#575 - Add support for the FULL OUTER JOIN syntax, where RDBMS - supports it -#576 - Add support for the CROSS JOIN syntax, where RDBMS - supports it -#581 - Enhance API and allow Collection> - instead of Collection> - -API changes ------------ -#397 - Purge deprecated API - -Bugfixes --------- -#481 - Handle case where an empty record is stored -#522 - Misleading Javadoc in generated stored procedures and - function constructors -#532 - Restore Postgres INFORMATION_SCHEMA -#537 - Prevent null from being added to QueryPartList -#540 - Error when TRACE logging Limit -#544 - Aliased elements are not bound correctly when rendered - with toSQLReference() -#559 - Loosen type safety on overloaded methods to prevent - compilation errors with javac/Netbeans -#560 - HSQLDB DataType REAL is configured incorrectly -#565 - Add integration tests for current_user() function -#569 - ORA-01427 when generating foreign key relations -#571 - Field.trim() not correctly implemented for SQL Server -#583 - Accelerate integration tests: Reset schema only if - necessary - -Version 1.5.9 - May 15, 2011 -================================================================================ - -This version ships with lots of new functionality. Finally, the -DSL-style API has been extended to CRUD operations (INSERT, -UPDATE, DELETE)! Also, support for the TRUNCATE TABLE statement -has been added. - -The most important new features include the support for SQL:2003 -standard window functions, which are available in most major -RDBMS. Additionally, basic function support has been widely -extended. - -Features --------- -#148 - Added support for window functions -#204 - Add support for multi-record INSERT's -#416 - Added support for retrieval of IDENTITY values -#433 - Use bind variables for LIMIT and OFFSET -#441 - Added foreign key relationship meta information to the - generated source code -#446 - Beautify ResultImpl.toString() method -#461 - Automatically cast CONCAT parameters to Field if - necessary -#463 - Added support for trigonometric functions -#471 - Added support for the sign function -#472 - Added support for GREATEST/LEAST functions -#474 - Added support for "hyperbolic" functions SINH, COSH, TANH, - and COTH -#482 - Added DSL API for INSERT statements -#483 - Added DSL API for UPDATE statements -#484 - Added DSL API for DELETE statements -#485 - Added "Registry" for client code to provide Configurations - to jOOQ Attachables -#490 - Added support for the TRUNCATE TABLE statement -#495 - Generate source code for IDENTITY columns -#501 - Added support for boolean conversion to Result, Record, - and Store -#503 - Allow for schema navigation via generated artefacts -#518 - Let stored procedures reference owner package - if applicable -#525 - Added NULLS {FIRST | LAST} clause to ORDER BY constructs -#528 - Added Factory.getDataType() convenience method -#530 - Added Factory.zero() and Factory.one() convenience methods - -API changes (jooq) ------------------- -#527 - Weakened type-safety on Field.nvl2() -#529 - Deprecated Factory.select(Object...), added .selectOne() - and .selectZero() instead - -API changes (jooq-meta) ------------------------ -#30 - Add ParameterDefinition for stored procedures, instead of - reusing ColumnDefinition -#499 - Add reference to TableDefinition in ColumnDefinition -#500 - Add AttributeDefinition for UDTDefinition, instead of - reusing ColumnDefinition - -Bug fixes ---------- -#369 - Adapt H2 relations generation to H2's correction of - information_schema.cross_references -#435 - Added integration tests for NESTED SELECTs holding LIMIT - clauses -#460 - Syntax error when using a field with a reserved name -#462 - Fixed Javadoc broken links -#473 - Don't cast when cast is unnecessary -#479 - INSERT statement should not set all fields for a table -#497 - Derby referential code generation is broken, for named - foreign keys -#498 - Oracle package content is generated in arbitrary order -#502 - Syntax error when creating an empty IN condition -#526 - Corrected Javadoc in Field.coalesce() - -Version 1.5.8 - April 29, 2011 -================================================================================ - -Finally, jOOQ now supports two important new RDBMS: -SQL Server and Sybase! - -Apart from this great enhancement, there is now also full support -for the non-SQL standard LIMIT clause, even in dialects where the -LIMIT clause is not supported natively (especially Oracle, but -also DB2, SQL Server and Sybase, which have limitations). jOOQ -simulates LIMITs by rendering nested selects filtering on ROWNUM -(Oracle) or on ROW_NUMBER() (DB2, SQL Server and Sybase). - -Other interesting additions are an increasing support for native -mathematical functions. More function support will be added in -future versions. - -Features --------- -#16 - Added support for SQL Server -#21 - Uniform implementation of the LIMIT clause. Implemented - LIMIT clause simulation through analytic functions, where - LIMIT is not supported natively -#97 - Added support for Sybase -#418 - Measure time of various steps in source code generation -#420 - Added support for proprietary SQL extensions "FOR UPDATE" - and "FOR SHARE" -#431 - Added additional statistics to generation log files -#432 - Unified the various "standard" ANSI INFORMATION_SCHEMA - implementations in the jooq-meta artefact -#436 - Added support for the modulo function -#438 - Added floor and ceil functions -#439 - Added support for mathematical functions (logarithms, - exponentials, sqrt) -#447 - Enhanced Field.add() and Field.subtract() to work for date - time fields, also - - -API changes ------------ -#428 - Created new Maven artefact jooq-meta to cleanly separate - database meta-data navigation from code generation -#458 - Decreased DSL verbosity for arithmetic operations and for - ordering - -Bug fixes ---------- -#417 - Restored warning when unknown column type is encountered - in source code generation -#419 - Corrected misleading Select.fetchOne(...) Javadoc -#421 - Optimised AbstractRecord's memory consumption -#448 - Corrected some Javadoc @see links -#449 - Changed Field.concatenate() to accept Field parameters - to avoid generic varargs warnings - -Version 1.5.7 - April 17, 2011 -================================================================================ - -This is the first release built with support of Maven thanks to -the help of some jOOQ users! - -The main new features in this release are the improved support -for serialisation/deserialisation of jOOQ objects through use of -the newly introduced "Attachable" interface. - -If using log4j or the newly supported slf4j logging framework -in debug/trace mode, there is the possibility to log query -building/execution time statistics. - -Apart from these new features, fixes were mainly done in the -fields of type casting, HSQLDB 2.1 upgrade support, stored -procedures with OUT, IN/OUT parameters. Please upgrade, if you -are using any of those features. - -If you extend jOOQ as a base implementation for source code -generation, be aware of the fact, that the jOOQ-codegen is -currently undergoing major changes. Expect the code generation -API to stabilise again in one of the next releases. - -Features --------- -#104 - Added maven dependency -#248 - Integrate UDT types with ARRAYs -#295 - Allow for attaching/detaching UpdatableRecords to/from - Configurations -#359 - Added statistics measurement to Query execution for debug - log level -#362 - Added deprecation configuration flag -#364 - Document unknown type in generated source code -#373 - Improve exception handling in code generation -#378 - Added support for Oracle stored functions with OUT - parameters -#382 - Added Factory.attach() methods to re-attach deserialised - Attachables -#394 - Add logging support for SLF4J -#398 - Allow to provide a DataType in Factory.constant() -#399 - Provide access to TypeUtils.convert() methods via DataType -#404 - Added trace logging for measuring the speed of various - query execution steps - -API changes ------------ -#358 - Enhanced DSL API to allow for HAVING clauses without - GROUP BY clauses -#367 - Make Store, Result, QueryPart "Attachable" -#374 - Introduce strategy pattern to code generation for future - support for advanced naming schemes -#375 - Decouple Database from Generator -#381 - Made DataType Serializable -#384 - Deprecated singleton QueryParts -#388 - Unify "internal" API using an Adapter pattern - -Bug fixes ---------- -#187 - Protect generated Record navigation methods against name - clashes -#266 - Added more thorough integration tests for dialect-specific - casting (including some fixes related to varchar types) -#360 - Added more integration tests for the DISTINCT clause -#361 - Add more checks in testInsertUpdateDelete() -#366 - Warn only once per ColumnDefinition, if a data type is - unknown -#377 - NullPointerException when generating invalid stored - function -#380 - Added integration tests to check for proper - serialisability -#386 - Fixed incompatibilities with HSQLDB 2.1.0 -#387 - Fixed unnecessary imports in some Oracle generated - Records -#389 - Fixed javac compiler warning in AbstractStoredObject -#391 - Cannot properly call stored procedures when IN/OUT - parameter is bound to NULL -#392 - Procedures with several OUT parameters may not register - OUT parameters correctly -#410 - Passing null VARRAY values to Oracle stored procedures - causes issues -#412 - limit(int) sets default offset incorrectly in some - dialects - -Version 1.5.6 - March 31, 2011 -================================================================================ - -This release consists mainly of code generation bug fixes and -minor API improvements and enhancements. - -The most important improvement is ticket #90, by which lazy -fetching and iteration over data is now supported. jOOQ lets you -keep a reference to a Cursor that has an open JDBC ResultSet, to -fetch data from on-the-fly. - -A few major code generation bugs were reported where the -generated code may cause ambiguity due to an inconsistent API. -This means that you will have to re-generate your schema after -upgrading to version 1.5.6. Some of your code may not compile -anymore, after this upgrade. - -Features --------- -#90 - Added possibility for lazy fetching of data -#208 - Added convenience methods for direct invocation of - sequences' currval() and nextval() attributes -#212 - Created one factory per dialect for better separation of - dialect-specific support -#213 - Generate a factory for each schema -#251 - Opened up base implementations for Field and Condition - to allow for custom implementations by client code -#274 - Integrate H2 ARRAY types with stored procedures -#292 - Documented usage of log4j and java.util.logging -#306 - Added support for the NULLIF function -#319 - Added Field.between(Field, Field) method -#320 - Added trace logging for variable binding and SQL - generation methods -#323 - Added Field.in(Field...) method -#325 - Include release version number in delivered .jar files -#328 - Improved configuration setup documentation page -#333 - Let Result implement Serializable -#334 - Added fetchMap() convenience methods -#335 - Added more functions and aggregate functions examples to - documentation -#338 - Visually improve code generation logging -#339 - Removed skipping of unreferenced UDT's, ENUM's and ARRAY's -#342 - Improved generated referential code by using fetch() and - fetchOne() API -#356 - Let UpdatableRecord.store() and delete() return an int - to indicate whether the record was actually modified - -API changes ------------ -#233 - Allow for joining TableLike instead of Table -#337 - Added generic type > to - InsertSelectQuery -#341 - Fixed API flaw where SelectOnConditionStep.and() methods - and similar ones returned SelectConditionStep, instead of - SelectOnConditionStep - -Bugfixes --------- -#69 - Corrected referential code generation for foreign keys - that reference non-primary unique keys -#85 - Corrected referential code generation for multi-field - foreign keys -#121 - Covered more Factory.executeXXX() methods with integration - tests -#318 - Fixed NullPointerException when executing SELECT * from - aliased tables -#321 - BetweenCondition does not bind left hand side Field - correctly -#322 - InCondition does not bind left hand side Field correctly -#326 - Avoid method overloading where binding to Object - may lead to compile-time ambiguities (with javac) -#343 - Add more foreign key navigation method integration tests -#347 - Add explicit integration tests for schema artefacts - excluded from code generation -#350 - Disambiguate navigation methods if several foreign keys - reference the same entity -#352 - Disambiguate navigation methods if a table ending on S - references itself -#353 - Added integration test for compilation of generated - artefacts with javac (as opposed to the Eclipse compiler) -#355 - Error when storing an UpdatableRecord that has no changed - values - -Version 1.5.5.2 - March 15, 2011 -================================================================================ - -A critical bug was reported from the 1.5 release stream where -stored functions did not render their parameters in correct order - -Features --------- -#302 - Map Oracle's NUMBER data type to java.lang.Number in - stored procedures, stored functions - -Bugfixes --------- -#317 - StoredFunctionImpl.asField() renders parameters in wrong - order - -Version 1.5.5.1 - March 13, 2011 -================================================================================ - -In version 1.5.5, there was a fatal bug breaking Derby source code generation. -Only the Derby dialect is affected. Please update immediately, if you are using -jOOQ's Derby integration - -Bugfixes --------- -#315 - Generated master data records are not sorted by PK -#316 - Derby code generation fatally broken - -Version 1.5.5 - March 12, 2011 -================================================================================ - -This version is released early as there are some important bugfixes. Additional -improvements include: - -- Improved DSL related to conditions in HAVING and JOIN clauses -- Support for Oracle-style functions, such as NVL, NVL2, COALESCE - DECODE, etc - -Features --------- -#304 - Add support for Oracle NVL function -#305 - Add support for COALESCE function -#308 - Add support for Oracle NVL2 function -#311 - Add support for Oracle DECODE function - -API changes ------------ -#223 - Enhance DSL to accept and(), or() and similar methods in JOIN steps -#224 - Enhance DSL to accept and(), or() and similar methods in HAVING steps - -Bugfixes --------- -#297 - Fixed Factory.concatenate() function -#298 - Added integration tests for nested selects in HAVING clause -#300 - Added integration tests for nested selects in JOIN clause -#303 - Javadoc correction -#307 - Accelerated integration tests -#309 - Fixed JDBC variable binding issue related to Conditions where the lhs is - a function (e.g. stored function) and the rhs is a constant -#310 - Fixed issue where fetchOne() methods throw NullPointerException if no - result record is available -#312 - Fixed issue where Field.equal(...) methods rendered unexpected SQL when - rhs null is cast to a type -#313 - Fixed Derby cast type for VARCHAR -#304 - Let the DerbyDataType default for java.lang.String be VARCHAR, not LONG - VARCHAR - -Version 1.5.4 - March 04, 2011 -================================================================================ - -Feature #243 required a minor API change in the base classes of generated source -code. This means you have to re-generate all your jOOQ artifacts in order to -migrate to 1.5.4. The artifacts themselves should be regenerated in a compatible -way, such that your client code should not be affected. If this is not the case, -please report a ticket here: - - https://sourceforge.net/apps/trac/jooq/newticket - -Apart from the Derby RDMBS and some new data type support, there have been many -new convenience methods added all over the API. For instance, if type-safety is -not really a requirement, there are lots of possibilities to use plain SQL -directly in the DSL. In that case, data can be accessed from Record, Results, -not only through Field, but also through field names or indexes. - -Check out the updated documentation (soon) here: - - https://sourceforge.net/apps/trac/jooq/wiki/Examples - -- Support for the Derby RDBMS -- Support for casting. This allows for even greater flexibility - in cases where jOOQ cannot 100% ensure type-safety -- Support for ARRAY types. Oracle, Postgres, HSQLDB and H2 ARRAY - types are now supported natively as regular bindings in - jOOQ's Field -- Support for dialect-specific data types. CHAR, VARCHAR, CLOB - are no longer treated equally as java.lang.String. Their - type heritage is also generated -- More sequence support -- Lots and lots of bug fixes - -Features --------- -#95 - Support for the Derby RDMBS -#163 - Add support for JDBC type ARRAY (with Postgres) -#209 - Add support for DB2 sequences -#210 - Add support for H2 sequences -#211 - Add support for HSQLDB sequences -#215 - Support for SQL casting using as cast type -#246 - Support for SQL casting using dialect-specific data types -#254 - Add HSQLDB support for ARRAY types -#256 - Add Oracle support for VARRAY types -#257 - Integrate ARRAY types with stored procedures -#261 - Add a global type mapping to the generated Schema object -#267 - Add DataTypeDefinition for further abstraction of data types in code - generation -#269 - Add H2 support for ARRAY types -#290 - If log4j is not on the classpath, use java.util.logging instead, as - fallback - -API Changes ------------ -#156 - Allow for results to be accessed by index, not by field -#218 - Corrected bad method signature: Record.getValueAsLong(Field, Integer) -#219 - Extended Result and Select API's to be more similar to that of Record -#232 - Add more convenience plain SQL support to the API -#235 - Add convenience methods to Record, Result and Select for access of data - via field name -#243 - Refactor DataType implementations in order to allow for the use of - generics -#259 - Add field type to database meta data (ColumnDefinition) -#260 - Add field type to database meta data (Field) -#262 - Add default behaviour for Record.getValue(Field) -#276 - Add Javadoc as a ZIP file to the jOOQ distribution - -Bugfixes --------- -#125 - Add more plain SQL integration tests -#191 - Add more integration tests for nested unions -#205 - Implemented workaround for handling Postgres stored functions with UDT - OUT parameters -#214 - Fixed NPE when generating a stored function with an unknown parameter - type -#216 - Fixed some cases where binding of BigInteger is not done correctly -#220 - Syntax error when using select statement in a CASE clause -#221 - Corrected integration tests for combined update and select statements -#222 - Added integration test for INSERT statements having nested SELECT - statements for their fields -#225 - Correctly cast array types in Postgres -#230 - Potential misuse of Blob and Clob in H2's JDBC types -#239 - Factory.fetchAny() is not implemented for SQLite -#244 - Fixed peculiar MySQL casting support where cast types do not match any - data types -#245 - Fixed NPE when reading null dates in SQLite -#249 - Added ARRAY type integration tests -#255 - Stored procedure bind variables get mixed up when any argument is null -#263 - Correctly handle Postgres function overloading -#264 - Ambiguous funciton calls when calling overloaded functions with null - parameter -#281 - Handle compilation errors when generating stored procedures with > 254 - parameters -#283 - Fixed compilation errors in generated source code for Oracle's UDT table - type -#284 - Fixed compilation errors in generated source code for Oracle procedures - in packages, when they have no parameters -#285 - Fixed compilation errors in generated source code for Oracle tables with - the same name in different schemata -#286 - Fixed name collisions in generated objects with the java.lang.* package -#288 - Prevent the creation of UNION queries with bad syntax in MySQL -#289 - Correctly alias fields within UNION queries for some dialects, which then - only require the "AS" keyword -#291 - Cannot create an aliased field called "year" in Postgres - -Version 1.5.3 - January 13, 2011 -================================================================================ - -- Lots of stored procedure support was implemented -- Support for sequences was added -- The final decision to postpone support for DB2 UDT's was made -- Some code generation bugfixes - -Features --------- -#36 - Added stored procedure / stored function support for HSQLDB -#140 - Added support for Oracle sequences -#147 - Added support for H2 stored functions -#162 - Correctly integrate UDTs with stored procedures -#170 - Added support for Postgres stored functions -#186 - Added support for more Oracle PL/SQL simple data types -#193 - Simulate support for H2 "stored procedures" -#195 - Simulate support for Postgres "stored procedures" -#206 - Added support for Postgres sequences - -API changes ------------ -#180 - Improved DSL for constant values -#181 - Allow for referencing Field in function argument list -#189 - Renamed convenience methods in org.jooq.Record -#207 - Add fetchOne(Field) method to org.jooq.Select API - -Bugfixes --------- -#182 - Protected generated Record classes against clashes with inherited methods -#183 - Fixed NullPointerException, when generating master data tables with - NULL fields -#184 - Fixed IllegalArgumentException, when a data type is present in the - schema, but unavailable in code generation logic -#185 - Code generation should not fail when single elements cannot be generated -#188 - Improved integration tests for stored procedures / functions / packages -#196 - Increase RDMBS version compatibility by avoiding "SELECT *" in code - generation logic -#199 - Added integration tests for stored procedures in RDBMS that do not - support OUT parameters -#201 - Fixed issue in DB2 where stored procedures without parameters were not - generated. -#202 - Added integration tests for stored procedures / functions without - parameters - -Version 1.5.2 - December 27, 2010 -================================================================================ - -- Improved support for stored procedures, also in packages -- A minor API change was inevitable to implement #173. The API change only - concerns the INTERNAL API. Deprecation marks are added and deprecated items - will be removed in 1.6.0 -- Experimental SQLite database support -- Some important bug fixes - -Features --------- -#25 - Added support for Oracle packages -#114 - Added support for Oracle UDTs -#145 - Added support for the SQLite database -#150 - Generate static convenience methods for stored procedures / functions -#151 - Generate static convenience methods for stored function fields -#152 - Generate meaningful serialVersionUID in generated classes -#173 - Added support for EQUIVALENT schemata - -API changes ------------ -#159 - Added convenience method List getValues(Field) to Result -#165 - Added convenience methods for creating EXISTS clauses -#169 - Improved DSL for WHERE clauses - -Bugfixes --------- -#68 - Prevent issues originating from overloaded stored procedure names, - generating identical Java class names -#153 - Fixed issue with generated code for DB2 stored functions -#154 - Fixed issue with generated code for DB2 stored functions -#155 - Fixed issues with database NULL not being mapped correctly to Java NULL - when selecting values that have a primitive type (int, long, etc) -#158 - Potential ClassCastException when using Field -#171 - Corrected issue related to selection of default schema in DB2 -#177 - Fixed issue related to generated code for tables or UDTs without columns - - -Version 1.5.1 - December 13, 2010 -================================================================================ - -- H2 database support thanks to Espen Stromsnes -- Improved stored procedure support - -Features --------- -#96 - Added H2 database support -#101 - Added stored procedure / stored function support for Oracle -#138 - Added stored procedure support for DB2 -#146 - Added support for DB2 functions - -API changes ------------ -#143 - Added convenience methods to Record - -Bugfixes --------- -#84 - Implemented referential code generation for foreign keys that do not - match their primary keys' types -#141 - Encoding problem in generated master data classes - -Version 1.5.0 - November 22, 2010 -================================================================================ - -- A big one. Major API changes / improvements -- Added lots of convenience methods -- UDT support -- Enum support -- DB2 support thanks to Espen Stromsnes -- "Light" dependency to log4j added. jOOQ will still run without it - -Features --------- -#1 - Create support for UDTs (so far only for PostgreSQL) -#15 - Added DB2 support -#60 - Added support for nested selects in INSERT and UPDATE statements -#83 - Added log4j logging to code generation and runtime -#87 - Add support for arithmetic expressions -#105 - Added support for ENUM data types, where applicable (MySQL and PostgreSQL - so far) -#110 - Added execute and fetch convenience methods -#111 - Added missing "select distinct" support -#122 - Annotate generated classes with javax.annotation.Generated -#123 - Generate user enum fields from data values (master data) -#124 - Added PlainSQLTable -#127 - Added not() operator to Condition -#135 - Added convenience methods andNot() and orNot() in Condition - -API changes ------------ -#89 - Removed support for DataSource. jOOQ is not a transaction manager -#92 - Added SortField type to be used for sorting -#99 - Provide better access to functions (No more FunctionFactory) -#116 - Merge Manager functionality into Factory -#118 - Improve API of org.jooq.Field -#119 - Improve subquery condition API -#132 - Reduced much of the select query API -#134 - Better separation of SelectQuery and SimpleSelectQuery - -Bugfixes --------- -#109 - Error when executing select * if generated schema does not match actual - schema -#115 - Fix various "null" pseudo field issues -#126 - Error when selecting a single field from a union nested select -#129 - Fixed performance issue in Oracle code generation for very large - databases - - -Version 1.4.4 - November 22, 2010 -================================================================================ - -Unreleased version, fixes included in 1.5.0 - -Bugfixes --------- - -#133 - JoinCondition does not take comparison operator - -Version 1.4.3 - October 25, 2010 -================================================================================ - -Some more bugfixes - -Bugfixes --------- - -#71 - Generated code does not compile, when foreign key and primary key have a - data type mismatch -#73 - In Oracle generated code, multi-field foreign keys may generated bad - relations code -#82 - Conversion of literals to camelcase fails if numbers are involved - -Version 1.4.2 - October 22, 2010 -================================================================================ - -Various bugfixes and minor improvements - -Features --------- -#66 - Add support for CASE or DECODE expression - -API changes ------------ -#77 - Functions should not extend FieldImpl, but a new AbstractField -#78 - QueryPart pollutes declared method space of its implementations. Hide it - by indirection - -Bugfixes --------- -#64 - Code generation fails when foreign key references a unique key that is not - the primary key. Code generation for these cases is omitted -#67 - When loading properties files, a leading / seems to be mandatory. This is - preventing users from correctly setting up jOOQ the first time -#70 - Add support for Oracle datatype TIMESTAMP(6) -#72 - Name clashes in generated Tables -#75 - Constant does not bind its values. -#76 - Constant should not render strings all the time -#79 - Constants are not properly escaped -#80 - Position function does not bind any variables -#81 - Add cast function to Constants in HSQL - -Version 1.4.1 - October 18, 2010 -================================================================================ - -Oracle patch release - -Features --------- -#63 - Generate referential functionality for Oracle - -Version 1.4.0 - October 17, 2010 -================================================================================ - -Support for PostGreSQL was added. -Added lots of OR-mapping functionality. -There is a general API change due to various new features. - -Features --------- -#14 - Add PostGreSQL support -#40 - Resolve foreign keys. Allow for navigation between objects. -#42 - Add PlainSQLField -#45 - Add "dirty" flag to Record's values. This allows for updating only - relevant data. -#47 - Complete implementation for UPDATE, INSERT, DELETE statements. Added some - missing functionality. -#48 - Add more support for Date, Time, Timestamp fields. -#51 - Add a org.jooq.impl.Manager class that provides common utility methods for - CRUD operations - -API changes ------------ -#10 - Add second generic type . This is a prerequisite for - many OR-mapping features -#18 - Use org.jooq.Record in InsertQuery and UpdateQuery -#46 - Create UpdatableRecords as a prerequisite for JPA and true OR-mapping. - These records support store() and delete() methods -#52 - Add default constructor in generated Records. -#53 - Add refresh functionality to UpdatableRecords. See also #46 -#54 - Add a state to the factory class -#56 - Reduce API, remove unnecessary Condition subinterfaces -#57 - Reduce API, remove unnecessary QueryPart interfaces - -Bugfixes --------- -#49 - NullPointerException when generating relations on schema subset -#58 - Count function renders bad SQL in various dialects -#59 - Exception when selecting unaliased functions in queries - -Version 1.3.0 - August 24, 2010 -================================================================================ - -Support for HSQLDB was added. -There is a major API change due to #44. - -Features --------- -#29 - Generate primary keys and foreign keys in Oracle code generation -#34 - Add support for HSQLDB -#39 - Generate primary keys and foreign keys in HSQLDB code generation -#41 - Add documentation to QueryFactory and Functions - -API changes ------------ -#23 - Add support for more advanced joins -#32 - Merge SelectQuery and ResultProviderQuery interfaces -#44 - Let Query methods return "this" - -Bugfixes --------- -#35 - Add unit tests for HSQLDB support -#37 - Syntax error in combined select queries! The usage of combined queries in - MySQL may still be a bit awkward. Keep an eye out for further fixes -#43 - Join with aliased tables doesn't work - -Version 1.2.0 - August 21, 2010 -================================================================================ - -The added Oracle support is now unit tested and more stable. The Oracle NUMBER -data type is mapped more precisely to Java types. - -Features --------- -#12 - Model primary keys and foreign keys in generated code -#22 - Improve mapping of Oracle NUMBER data type -#26 - Add Plain SQL QueryParts -#27 - Add support for HAVING clause - -Bugfixes --------- -#24 - Add Unit tests for oracle database (and fixed bugs) -#31 - Pull up addOrderBy() methods from SelectQuery to ResultProviderQuery - -Version 1.1.0 - August 17, 2010 -================================================================================ - -The main new feature is the Oracle support. Wait for Version 1.1.1 for that -support to be stabilised, as there are no Oracle unit tests running against an -Oracle database yet. - -Features --------- - -#2 - Add support for inner / nested selects -#3 - Add more function support -#4 - Implement filtering functionality for code generation -#6 - Add Oracle Support -#9 - Create true POJO's (implementing org.jooq.Record) with getters and setters -#17 - Make org.jooq.impl.Parameter independent of Field - -Bugfixes --------- - -#11 - Code generation does not remove files - -Version 1.0.1 - August 14, 2010 -================================================================================ - -Features --------- - -#5 - Prevent code regeneration, if no changes were made -#7 - Implement ant task for code generation - -Version 1.0.0 - August 14, 2010 -================================================================================ -Initial Release \ No newline at end of file diff --git a/jOOQ-website/inc/RELEASENOTES.txt b/jOOQ-website/inc/RELEASENOTES.txt deleted file mode 100644 index e980f00bfb..0000000000 --- a/jOOQ-website/inc/RELEASENOTES.txt +++ /dev/null @@ -1,3781 +0,0 @@ -jOOQ Release notes -================== - -For an interactive overview, see also -http://github.com/jOOQ/jOOQ/issues - -For a formatted text version, see -http://www.jooq.org/notes.php - -For a text version, see -http://www.jooq.org/inc/RELEASENOTES.txt - -Version 3.2.0-alpha-01 - August 26, 2013 -================================================================================ - -** This is a preview for the upcoming jOOQ 3.2.0 release, which is due for late -September 2013. Beware that the new SPI might still be undergoing minor changes - -This release mainly features two new SPI elements, which allow jOOQ users to -take even more control of their jOOQ experience. A new rendering SPI called -VisitListener has been introduced, allowing for listening to arbitrary types of -SQL rendering events and for interacting with jOOQ's SQL renderer in order to -perform SQL transformation. An example of such transformation is given here: -https://github.com/jOOQ/jOOQ/blob/master/jOOQ-test/src/org/jooq/test/_/testcases/VisitListenerTests.java - -The above example adds custom "security" predicates to SELECT, UPDATE, DELETE -statements, restricting access to parts of data. It even transforms INSERT -statements adding a CHECK option to prevent "invalid" data insertion. Such SQL -transformation can also be used to implement shared-schema multi-tenancy. More -examples will follow in the manual when 3.2.0 is released. - -The other SPI is called RecordListener and it allows for hooking into a Record's -CRUD lifecycle, possibly modifying records prior to INSERTs, UPDATEs, DELETEs, -etc. An example use-case is the central generation of IDs (e.g. UUIDs) for all -records thus created. - -Features and improvements -------------------------- -#1079 - Add support for Oracle's FLASHBACK QUERY clause -#1903 - Duplicate Query construction API between DSLContext and DSL -#2010 - Add listener API to Record / UpdatableRecord -#2542 - Add an org.jooq.Keyword type and DSL.keyword(String) to construct it -#2593 - Add Meta.getPrimaryKeys() -#2594 - Add primary key and foreign key navigation support in JDBCDatabase -#2595 - Add implicit conversions from Scala functions to RecordMapper -#2603 - Add flag to code generation configuration to - indicate that and shall also match column names -#2606 - Distinguish Oracle10g, Oracle11g, Oracle12c SQLDialects within the - ORACLE family -#2618 - Document the fact that different packages are generated for different - schemas -#2619 - Add an example ExecuteListener to the manual, showing how UPDATE and - DELETE statements without WHERE clause can be aborted -#2630 - Add DSL.queryPart(String, Object...) and similar methods to create - simple plain SQL query parts -#2660 - Add some documentation about jOOQ not supporting operator precedence -#2665 - Implement SPI for RenderContext listening to allow for custom SQL - transformation -#2666 - Pull up RenderContext.sql(QueryPart) and BindContext.bind(QueryPart) - to Context.visit(QueryPart) -#2667 - Add org.jooq.Clause and let org.jooq.Context listen on start(Clause) and - end(Clause) events -#2676 - Add QueryPartInternal.clause() to allow for QueryParts to return Clause - information to org.jooq.Context -#2689 - Expose a DAO's internal RecordMapper through DAO.mapper() -#2696 - Provide default implementation for CustomQueryPart.bind() (for all - Custom QueryParts) -#2699 - Generate DEFAULT and NULL metadata information on generated DataTypes -#2701 - Document the fact that jOOQ sets changed flags to true, even if - Record.setValue() sets the value already present in the record -#2702 - Add DataType.defaulted() and DataType.nullable() -#2706 - Generate "full" constructors in records, allowing to construct a record - with all values set - -API changes (backwards-compatible) ----------------------------------- -#2581 - Deprecate fetchLater() and FutureResult -#2662 - Deprecate the internal method DSLContext.bind(QueryPart, - PreparedStatement) - -Bug fixes ---------- -#2586 - Bad SQL dialect referenced from ASE's and CUBRID's package-info.java -#2591 - Result.intoGroups() and similar methods create key Records with - changed=true -#2592 - Qualified names created using DSL.name(String...) should not render null - or empty string parts -#2596 - Scala tests don't run with Maven -#2608 - Error in code generator when the sqlite_sequence table is missing -#2613 - The batch INSERT query example in the manual is no longer correct with - jOOQ 3.x -#2624 - Wrong SQL Server 2012 detection in jOOQ-Meta -#2628 - Add missing Javadoc to DefaultDSLContext -#2634 - Minor documentation bug: The MockDataProvider uses toLowerCase() but - upper-cases SQL keywords -#2690 - Inaccurate runtime xsd versions in 3.1 manual -#2703 - SQLDialect.getNameLC() and getNameUC() are not NPE-safe -#2707 - PostgreSQL ENUM ordering is inconsistent with the database -#2708 - Wrong SQL rendered for CAST(x AS DECIMAL(y, z)). Precision and scale are - lost - -Version 3.1.0 - June 30, 2013 -================================================================================ - -With this release, MariaDB is now finally officially supported by jOOQ! MariaDB -is a MySQL fork, which currently has a very similar feature set as its parent. -As such forks tend to evolve into different directions very quickly, it makes -sense to add formal support in jOOQ. - -SQL Server 2012 is another SQL dialect that is now officially supported in jOOQ, -allowing to make use of the newly supported ROWS UNBOUNDED PRECEDING and similar -windowing clauses, as well as the long awaited OFFSET .. FETCH clause. From now -on, jOOQ SQLDialect.family() allows to define a super-set of SQL dialects by the -same vendors with only subtle differences. SQL Server users be careful to choose -the right dialect! - -POJO mapping is taken to the next level. jOOQ opened up its internal -DefaultRecordMapper providing useful Record to POJO mapping algorithms. But your -custom domain model might be more complex. Instead of creating the next -impedance mismatch, trying to foresee your own mapping algorithm needs, jOOQ -allows you to inject a RecordMapperProvider into your Configuration, allowing to -override record mapping with arbitrary behaviour. - -This minor release is also a strong step forward towards a more unified SQL -experience, where row value expression IN predicates and comparison predicates -are simulated with an equivalent EXISTS predicate. See this blog post for more -details: -http://blog.jooq.org/2013/05/03/sql-query-transformation-fun-predicates-with-row-value-expressions - -Note, that for technical reasons, jOOQ 3.0.0 could not yet be integration -tested with DB2, Ingres, and Sybase ASE. Consider using jOOQ 2.6, instead - -Features and improvements -------------------------- -#552 - Add SQLDialect.family() to group several SQLDialect versions of the same - RDBMS -#742 - Improve MySQL Stored Procedure support using MySQL 5.5's - INFORMATION_SCHEMA.PARAMETERS dictionary table -#833 - Add integration tests for both jconn3 and jTDS JDBC drivers for Sybase - and SQL Server -#963 - Map SQL Server TINYINT to UByte -#965 - Add support for Sybase SQL Anywhere unsigned number types -#1373 - Add Field DSL.coerce(Field, DataType) and similar methods, - to coerce a field to a given data type (as opposed to casting it) -#1836 - Document using jOOQ with Spring for transaction support -#1885 - Add test to count opening and closing of Statements and ResultSets by - jOOQ -#2022 - Add support for SQL Server 2012 windowing clauses in window functions -#2058 - Add support for the MariaDB database -#2095 - Document 's feature of forcing a column onto a SQL type -#2235 - Add Result DSLContext.fetchFromTXT() to allow for loading results - that were exported using Result.format() -#2236 - Add DSLContext.batch(String...) and batch(String, Object[]...) to easily - create batch statements from SQL strings -#2291 - Add DSLContext.fetchAny(Table, Condition) method and others -#2299 - Allow for setting ResultSet flags (e.g. - ResultSet.TYPE_SCROLL_INSENSITIVE through - ResultQuery.resultSetConcurrency(), resultSetType(), - resultSetHoldability() -#2310 - Add DSL.using(Connection) and DSL.using(Connection, Settings) which - auto-detect the SQLDialect from the jdbc url -#2311 - Add Configuration.recordMapperProvider() to override jOOQ's internal - default ReflectionMapper -#2339 - Support CUBRID 9.1's new features -#2344 - Add a new ControlFlowSignal that is used to explicitly jump out of a - control flow -#2355 - Add support for Postgres / HSQLDB's TRUNCATE [...] RESTART / CONTINUE - IDENTITY -#2357 - Add support for Postgres' TRUNCATE [...] CASCADE statement -#2395 - Simulate row value expression IN predicate using EXISTS -#2414 - Add Setting to influence parameter rendering (indexed, named, inlined) -#2416 - Add Result.intoXML(org.xml.sax.ContentHandler) to generate a SAX event - stream from a jOOQ result -#2423 - Add support for SQL Server 2012 native OFFSET .. FETCH clause -#2424 - Integration-test jOOQ with the SQLite xerial driver -#2426 - Add DSLContext.batch(Query, Object[]...) as a convenience for calling - batch(Query).bind(Object...).bind(Object...) -#2427 - Add more Javadoc to ResultQuery.fetchResultSet() explaining that - underlying PreparedStatements are closed with ResultSet.close() -#2428 - Simulate row value expression comparison predicates using EXISTS -#2430 - Add CustomQueryPart for use with plain SQL and other places -#2434 - Add Field.compare(Comparator, Select) and Field.compare(Comparator, - QuantifiedSelect) to allow for more dynamic SQL -#2437 - Add RenderContext.paramType() and deprecate RenderContext.inline() and - .namedParams() -#2440 - Expose the DataSource contained in the DataSourceConnectionProvider -#2441 - Add DSL.cast(Field, XXX) for increased API consistency -#2446 - Add JDBCUtils.dialect(Connection) to "guess" the jOOQ SQLDialect from a - JDBC Connection -#2466 - Add a public DefaultDSLContext implementation that can be used by users - to override the default behaviour -#2485 - Allow for treating Field as Condition -#2496 - Add support for SQL Server 2012 sequences -#2499 - Add JDBCUtils.safeClose(Connection) -#2509 - Expose CHECK constraints in jOOQ-meta -#2519 - Add Record.from(Object, Field...) from(Object, String...), - from(Object, int...) to copy only a select set of values from a POJO, - Array, Map -#2521 - Add {Row|Record}.fields(Field...), {Row|Record}.fields(String...), - {Row|Record}.fields(int...) to extract Field[] from a row or record -#2527 - Add org.jooq.tools.jdbc.DefaultResultSet to provide a default ResultSet - delegation implementation -#2531 - Add integration tests mapping binary(16) to java.util.UUID -#2532 - Let batch executions debug-log executed queries -#2535 - Convert.convert(Object, Class) should support simple casting -#2547 - Document some SQL language to jOOQ DSL API mapping rules in the manual -#2566 - Upgrade integration test jTDS version to 1.3.1 -#2571 - Add a new RecordType type to make up for the missing - recursive type definition on Record - -API changes (backwards-incompatible) ------------------------------------- -#2468 - API bug: MergeNotMatchedSetStep.set(Field, Select) returns - MergeMatchedSetMoreStep instead of MergeNotMatchedSetMoreStep - -Bug fixes ---------- -#1520 - Handle Ingres', SQLite, SQL Server's, Sybase ASE's limitations of 1024, - 999, 2100 or 2000 maximum bind values per query -#2135 - Postgres ENUM data type isn't supported correctly, if the ENUM needs - full qualification -#2323 - NullPointerException when calling Schema.getTables() on a meta schema - with SQLite -#2401 - Bad package name generated when contents are not trimmed -#2404 - Cannot combine with if both match -#2412 - jOOQ Meta does not recognise non-uppercase IN, OUT, INOUT keywords in - MySQL stored procedures -#2413 - Suppress warnings in generated code (@SuppressWarnings("all") doesn't - suppress "rawtypes" warnings with javac) -#2418 - RenderContext.data() is not passed on to QueryParts when being rendered -#2422 - Upgrade RSyntaxTextArea to 2.0.7 -#2432 - Manual refers to a package-private DefaultConfiguration constructor -#2443 - AbstractStoreQuery.execute() doesn't correctly operate on the - Configuration's ConnectionProvider in SQLite IDENTITY fetching queries -#2445 - JDBCDatabase doesn't recognise Oracle's VARCHAR2 data type (and other - vendor-specific data types) -#2447 - Tables collected through DSLContext.meta() return duplicate columns if - multi-schema environments contain identical tables -#2449 - JDBCDatabase doesn't use DataType.length(), precision(), and scale() -#2450 - Cannot set precision on TINYINT, SMALLINT, INT, BIGINT data types -#2461 - Generator Encoding Error for Database-Objects with Unicode-Names -#2464 - Bad SQL rendered from DELETE statements with aliased tables -#2469 - NullPointerException in AbstractResultQuery.fetchOneMap() -#2477 - MySQL's unsigned types cannot be used in other dialects -#2478 - IngresDatabase erroneously joins IIINDEXES to get constraint columns, - rather than using IIKEYS -#2494 - Possible null pointer passed to ConnectionProvider.release() -#2502 - Code generation fails to generate valid java for stored procedures that - accept parameters named configuration. -#2506 - SQLDialectNotSupportedException on DSL.inline(T, Class), when jOOQ's - internals are not (yet) properly initialised -#2515 - Compilation errors when generating code for artefacts that differ only - by a trailing underscore(s): A and A_ and A__ -#2523 - Statement.close() may be called upon previously closed statements -#2528 - Combining renderFormatted with inlined bind variables will change bind$ - values when they contain newlines -#2562 - Bad SQLDialect reference in Oracle and MySQL package-info.java -#2569 - Error when rendering SQL Server procedures with Settings.renderSchema - == false - -Version 3.0.0 - April 28, 2013 -================================================================================ - -This major release is a great move towards better integration of SQL as a -language in Java. Unlike any other database abstraction framework, jOOQ now -formally supports the notion of "row value expressions". The jOOQ API uses -Xtend-generated API types from Row1 .. Row22, as well as Record1 .. Record22 to -bring you even more compile-time typesafety on a record-level. - -In SQL, you can typesafely write - -
    -  SELECT * FROM t WHERE (t.a, t.b) = (1, 2)
    -  SELECT * FROM t WHERE (t.a, t.b) OVERLAPS (date1, date2)
    -  SELECT * FROM t WHERE (t.a, t.b) IN (SELECT x, y FROM t2)
    -  UPDATE t SET (a, b) = (SELECT x, y FROM t2 WHERE ...)
    -  INSERT INTO t (a, b) VALUES (1, 2)
    -
    - -In jOOQ, you can now (also typesafely!) write - -
    -  select().from(t).where(row(t.a, t.b).eq(1, 2));
    -  // Type-check here: ----------------->  ^^^^
    -  select().from(t).where(row(t.a, t.b).overlaps(date1, date2));
    -  // Type-check here: ------------------------> ^^^^^^^^^^^^
    -  select().from(t).where(row(t.a, t.b).in(select(t2.x, t2.y).from(t2)));
    -  // Type-check here: -------------------------> ^^^^^^^^^^
    -  update(t).set(row(t.a, t.b), select(t2.x, t2.y).where(...));
    -  // Type-check here: --------------> ^^^^^^^^^^
    -  insertInto(t, t.a, t.b).values(1, 2);
    -  // Type-check here: ---------> ^^^^
    -
    - -This also applies for existing API, which doesn't involve row value expressions: - -
    -  select().from(t).where(t.a.eq(select(t2.x).from(t2));
    -  // Type-check here: ---------------> ^^^^
    -  select().from(t).where(t.a.eq(any(select(t2.x).from(t2)));
    -  // Type-check here: -------------------> ^^^^
    -  select().from(t).where(t.a.in(select(t2.x).from(t2));
    -  // Type-check here: ---------------> ^^^^
    -
    - -And for UNIONs - -
    -  select(t1.a, t1.b).from(t1).union(select(t2.a, t2.b).from(t2));
    -  // Type-check here: -------------------> ^^^^^^^^^^
    -
    - -These type-checks are preformed by your Java compiler, considering the generic -type information of your SQL statement's Record data types. These include: - -- Record1 -- Record2 -- Record3 -- ... -- Record22 - -The highest degree of typesafety was chosen to be 22, to match Scala's Tuple22, -Product22 and Function22 types. Higher degree records are still supported by -jOOQ, just without the additional typesafety. - -This Record typesafety is applied to - -- SELECT statements -- INSERT and MERGE statements: the VALUES() clause -- UPDATE statements: SET A = (SELECT...) -- UPDATE statements with row value expressions: SET (A, B) = (SELECT...) -- Quantified comparison predicates: ANY(SELECT...) and ALL(SELECT...) -- Comparison predicates: = (SELECT...) -- IN predicates: IN (SELECT...) -- BETWEEN predicates: BETWEEN (SELECT...) AND (SELECT...) -- Generated records -- The new VALUES() constructor -- Scala integration for conversion of jOOQ Record[N] to Scala's Tuple[N] - -Apart from this major improvement, there had been many minor changes throughout -the jOOQ API. Here are some important ones: - -- Factory has been split into DSL (static QueryPart construction) and - DSLContext (Query execution, "attached" QueryPart construction). This greatly - improves the overall DSL experience while allowing for more fine-grained - Executor lifecycle control. -- A ConnectionProvider has been introduced as an abstraction of the JDBC - Connection lifecycle. The standalone Connection and pooled DataSource modes - are still supported, but you can now inject your own ConnectionProvider for - more control. -- A lot of performance improvements have been implemented within the jOOQ API - removing most of the overhead caused by jOOQ when fetching data from JDBC -- A JDBC Mock API has been added to help you create simple unit tests for your - application built on top of jOOQ. -- A VALUES() constructor is now supported, and derived column lists to alias - tables and columns in one go. -- The data type API has been greatly simplified. This allowed for the - introduction of runtime precision, scale, and length information. -- CRUD has been improved through many more CRUD batch operations, explicit - INSERT and UPDATE (in addition to store()), and explicit handling of jOOQ's - internal changed flags. - -As this is a major release, some backwards-incompatibilities were inevitable. -For those users among you, migrating from jOOQ 2.x to 3.0, here are a couple of -useful hints: -http://www.jooq.org/doc/3.0/manual/reference/migrating-to-3.0/ - -Note, that for technical reasons, jOOQ 3.0.0 could not yet be integration -tested with DB2, Ingres, and Sybase ASE. Consider using jOOQ 2.6, instead - -Note, that further code generation and model API improvements were postponed to -a later release - -Note, previous release candidates contained more features, improvements and bug -fixes. See their respective sections for details. - -Features and improvements -------------------------- -#2410 - Add some more API usage examples to the section about ResultSet fetching -#2415 - Add Constants.MINOR_VERSION and Constants.FULL_VERSION for internal and - external reuse - -Bug fixes ---------- -#1998 - Wrong screenshots in the manual's section about code generation. - jooq-meta.jar is missing -#2407 - Fix bad references to pre-3.0 Factory in Javadoc - -Version 3.0.0 (RC3) - April 12, 2013 -================================================================================ - -This major release is a great move towards better integration of SQL as a -language in Java. Unlike any other database abstraction framework, jOOQ now -formally supports the notion of "row value expressions". The jOOQ API uses -Xtend-generated API types from Row1 .. Row22, as well as Record1 .. Record22 to -bring you even more compile-time typesafety on a record-level. - -See release 3.0.0 for more information. - -Features and improvements -------------------------- -#2195 - Remove the standalone tutorial, link to the manual -#2321 - Implement various Key.toString() methods -#2329 - Add Javadoc to Configuration.executeListenerProviders() -#2331 - Add hint to the manual about mvn eclipse:clean and eclipse:eclipse when - building jOOQ -#2363 - Change the readme file to use Markdown -#2366 - Add org.jooq.util.example package to jOOQ-codegen with some example - GeneratorStrategies -#2372 - Add aliases for arithmetic operators to be able to use Groovy default - operator overloading -#2389 - Make org.jooq.impl.DefaultConfiguration public -#2392 - Add Configuration.set() methods. They should allow for modifying a - Configuration -#2396 - Add DSL.function(Name, Class, Field...) and - DSL.function(Name, DataType, Field...) to allow for custom, - fully-qualified function references - -API changes (backwards-compatible) ----------------------------------- -#2378 - Allow for overriding getIdentity() and getReferences() in CustomTable - -API changes (backwards-incompatible) ------------------------------------- -#2328 - Remove UpdatableTable marker interface, pulling up methods to Table -#2342 - Change Configuration.data() to return Map -#2343 - Decouple lifecycle of Configuration and ExecuteContext -#2350 - Do not statically reference a Connection from GenerationTool -#2353 - Decouple org.jooq.Context from Configuration. Choose composition over - inheritance -#2362 - Decouple org.jooq.DSLContext from Configuration. Choose composition over - inheritance -#2379 - Replace 3.0-RC1 Executor type by a contextual DSL type constructed from - DSL.using() -#2380 - Rename org.jooq.impl.Factory to org.jooq.impl.DSL -#2382 - Let DAO reference a Configuration instead of a DSLContext -#2388 - Replace Configuration's List with - ExecuteListenerProvider[] to simplify correct and thread-safe client - implementations -#2390 - Change Configuration API to reflect jOOQ-style getter / setter naming -#2391 - Rename dialect-specific Factories [Dialect]Factory to [Dialect]DSL -#2399 - Remove support for the USE statement - -Behaviour changes (backwards-incompatible) ------------------------------------------- -#2351 - Relax ConnectionProvider contract, allowing acquire() to return new - Connections even before release() is called - -Bug fixes ---------- -#1868 - Cursor.close() doesn't terminate the ExecuteListener life cycle -#2325 - "HsqlException: incompatible data type in conversion" when binding a - UUID[] to an HSQLDB prepared statement -#2327 - Compilation error in generated tables, when a table contains a UNIQUE - key but no PRIMARY key -#2332 - Documentation example regarding DSL.concat() does not compile -#2336 - jOOQ 3.0 regression: NoClassDefFoundError caused by missing log4j - dependency -#2338 - Tutorial example unclear: There are three artefacts in Maven, not one -#2346 - org.jooq.Meta's generated Schema and other objects are Serializable, but - their enclosed Meta instance is not -#2347 - Let equals() implementations succeed early on identity -#2354 - Single page manual display errors on Firefox -#2361 - Inaccurate Configuration Javadoc explaining wrong ExecuteListener - lifecycle -#2367 - SQLite identifiers that collide with keywords should be quoted -#2381 - Do not add TableFieldImpl to table in constructor of TableFieldImpl -#2385 - fetchOne() and fetchLazy() don't terminate the ExecuteListener life - cycle when an exception occurs -#2393 - Fully qualified name not used for user-defined aggregate function - -Version 3.0.0 (RC2) - March 8, 2013 -================================================================================ - -This major release is a great move towards better integration of SQL as a -language in Java. Unlike any other database abstraction framework, jOOQ now -formally supports the notion of "row value expressions". The jOOQ API uses -Xtend-generated API types from Row1 .. Row22, as well as Record1 .. Record22 to -bring you even more compile-time typesafety on a record-level. - -See subsequent release candidates or release 3.0.0 for more information. - -Features and improvements -------------------------- -#2200 - Add Executor.fetchCount(Select) and Select.fetchCount() to replace - the projection by a COUNT(*) query -#2244 - Add section to the manual indicating that the jOOQ generator can only - handle schemas of a certain size -#2255 - Add code generation option to avoid the generation of "global object - references" -#2257 - Add List Database.getIdentities(SchemaDefinition) - for convenience to jooq-meta -#2258 - Restore private and deprecated versions of the Factory constructors, - adding some Javadoc about the changes between jOOQ 2.x and 3.0 -#2270 - Add section to the manual indicating how to build jOOQ with Maven -#2272 - Add a paragraph to the manual's preface, explaining "why not just use - SQL"? -#2281 - Add Result Executor.fetchFromStringData(List) in order - to reuse logic from fetchFromCSV -#2285 - Add more verbosity to the code generator, when configured badly -#2290 - Add Database.getUniqueKeys() and getForeignKeys to jOOQ-meta -#2297 - Add section to the manual indicating how the various generator flags - depend on each other -#2308 - Do not generate "final" Tables.java, UniqueKeys.java, etc. - -Bug fixes ---------- -#2212 - "code size too large" in generated SchemaImpl, when the number of tables - exceeds 15k -#2238 - Code generation runs extremely slow for large schemas (Inefficient - DefaultRelations.getUniqueKeys() and getForeignKeys() methods) -#2239 - Code generation runs extremely slow for large schemas (Inefficient - AbstractDatabase.filterSchema() methods) -#2252 - ArrayIndexOutOfBoundsException, when rendering plain SQL that is - terminated by a comment -#2259 - RenderMapping has no effect, if not supplied to the Executor constructor -#2262 - RenderSchema has no effect, if not supplied to the Executor constructor -#2267 - SQLDialectNotSupportedException: Type class org.postgis.PGgeometry is - not supported in dialect null, when binding PG* objects -#2271 - jOOQ Unit tests fail when not run in CET / CEST -#2273 - Tutorial bug, referencing wrong Maven dependency. jOOQ 3.0.0 is not yet - released, only RC1 -#2276 - Wrong MockDataProvider manual example -#2278 - Postgres (UUID and other) ARRAY types aren't correctly inlined as string - literals -#2279 - UUIDs aren't correctly deserialised from Postgres UDTs -#2280 - Improve supported formats for MockFileDatabase -#2283 - Class loading issues in GenerationTool when called by Gradle -#2294 - Compilation errors when code generator is configured with - true and false -#2298 - Suppress warnings in generated code (@SuppressWarnings("all") doesn't - work with javac) -#2312 - Annotate org.jooq.Support with java.lang.annotation.Documented to make - it part of the public API (in Javadoc) -#2314 - Outdated GenerationTool Javadoc - -Version 3.0.0 (RC1) - February 16, 2013 -================================================================================ - -This major release is a great move towards better integration of SQL as a -language in Java. Unlike any other database abstraction framework, jOOQ now -formally supports the notion of "row value expressions". The jOOQ API uses -Xtend-generated API types from Row1 .. Row22, as well as Record1 .. Record22 to -bring you even more compile-time typesafety on a record-level. - -See subsequent release candidates or release 3.0.0 for more information. - -Features and improvements -------------------------- -#456 - Add runtime support for PRECISION, SCALE, and LENGTH attributes -#834 - Add support for the Firebird / Postgres UPDATE .. RETURNING clause -#915 - Add Table> - Factory.values(Row[N]...), to create ad-hoc tables - from data -#1038 - Introduce new type GroupField for cube(), rollup() and groupingSets() - functions. Accept only GroupField... in groupBy() clauses -#1097 - Add org.jooq.Catalog, a type modelling an entity combining several - org.jooq.Schema -#1144 - Overload Executor.fetch[One|Lazy](ResultSet, X...) with X being - Field, DataType, Class -#1178 - Allow for treating Condition as Field -#1583 - Add support for row value expressions in UPDATE statements: UPDATE .. - SET (A, B, C) = (SELECT X, Y, Z) -#1624 - Add support for java.util.UUID as a type -#1663 - Document RenderContext and make it part of the public API -#1686 - Add UpdatableRecord.insert() and update() -#1689 - Generate E into(E) and R from(E) methods to generated records -#1690 - Add UpdatableRecord.key() returning a Record holding PK values -#1695 - Add Factory.all() and Factory.any() to create quantified expressions -#1703 - Add Executor.batchDelete(UpdatableRecord...) to mass-delete a set of - UpdatableRecords -#1801 - Add Table.as(String, String...) to allow for creating a table aliases - (correlation names) with derived column lists -#1874 - Add Record1, Record2, ... Record[N] similar to Row1, Row2, ... Row[N] to - support record type-safety -#1897 - Add a section to the manual about the migration to jOOQ 3.0 -#1899 - Make some JDBC-related utility methods publicly available in - org.jooq.tools.jdbc.JDBCUtils -#1902 - Duplicate SELECT API between Executor and Factory -#1904 - Add Executor.fetch(ResultQuery), Executor.execute(Query), and similar - methods -#1905 - Add Row[N].equal(Select) and similar methods -#1906 - Use Xtend to generate Row[N], Record[N] and other [N]-related API code - artefacts -#1914 - Document the fact that SELECT * is performed by leaving the SELECT list - empty -#1917 - Add support for CUBRID 9.0's window functions and MERGE statement -#1918 - Let generated Records implement Record[N] if applicable -#1919 - Support higher degrees of Row[N] and Record[N] types. Match Scala's max - degree of 22 -#1920 - Add more implicit defs in order to treat Record[N] as Scala's Tuple[N] -#1923 - Add Record.intoResultSet() to create a single-record JDBC ResultSet from - a Record -#1924 - Add support for CUBRID 9.0's ENUM data type -#1932 - Generate Javadocs for Table constructors -#1934 - Improve generated Record Javadoc -#1951 - Add support for the SQL Server WITH (...) table hints -#1966 - Add Row[N].equal(Record[N]) and similar convenience methods -#1967 - Document using MySQL's SQL_CALC_FOUND_ROWS as an Oracle hint -#1968 - Add org.jooq.Meta returned from Executor.meta() to return a wrapped JDBC - DatabaseMetaData object -#1972 - Move MySQLFactory.md5() to Factory and simulate it for Oracle -#1973 - Add Executor.fetchOne(ResultSet) -#1975 - Add Result.sort{Asc|Desc}(int) and (String) to order by field index / - name -#1981 - Add support for DB2 CGTT and MQT -#1983 - Improve the Javadoc on Table.as() and Field.as() to hint at - case-sensitivity and RenderNameStyle -#1984 - Add ResultQuery.fetchOneInto() -#1986 - Add Record.fromMap() as the inverse operation of Record.intoMap() -#1987 - Allow for reading data from arrays, Maps through Record.from() -#1988 - Add Record.fromArray() as the inverse operation of Record.intoArray() -#1989 - Add Record.changed(Field), changed(int), changed(String) to check - whether a single field's value has changed -#1990 - Add T Record.original(Field), original(int), original(String) to - get a Field's original value -#1991 - Reflect changed flag in Result.toString() (and thus also - Record.toString()) -#1999 - Add Record.changed(boolean) changed(Field, boolean) - changed(int, boolean) changed(String, boolean) as setters for the - changed flag -#2000 - Add Record.reset(), reset(Field), reset(int), reset(String) to - restore original values in a record -#2008 - Add elementFormDefault="qualified" to XSD specifications to allow for - XML validation of jOOQ configuration files -#2020 - Let org.jooq.ExecuteListener extend java.util.EventListener -#2021 - Add UpdatableRecord.refresh(Field...) to allow for refreshing a - subset of the Record's values -#2027 - Document semantic versioning rules as understood by jOOQ -#2028 - Add Batch.size() to indicate the number of queries that will be executed - by a batch operation -#2030 - Add reusable wrapper types for JDBC Connection, Statement, ResultSet, - etc. -#2044 - Add various TableRecord.fetchParent(...), fetchChild(...) and - fetchChildren(...) methods to follow foreign key relationships -#2049 - Add gt() / ge() / lt() / le() to Row[N] types -#2052 - Add [not]Between[Symmetric]() to Row[N] types -#2053 - Add is[Not]Null() to Row[N] types -#2066 - Add Executor.extractBindValues(QueryPart), extractParams(QueryPart) to - extract bind values in the context of an Executor (i.e. Configuration) -#2072 - Let UDTRecordImpl and ArrayRecordImpl.toString() return a valid - constructor expression -#2078 - Add Postgres to @Support annotation of SelectForUpdateWaitStep.wait() -#2079 - Support generation of bean validation annotations on records and - interfaces -#2089 - Generate an "empty" DefaultSchema for those databases that do not have - any schema (CUBRID, Firebird, SQLite) -#2094 - Add unit tests for org.jooq.tools.Convert -#2107 - Let Record implement Comparable -#2111 - Improve org.jooq.Record Javadoc, to explain the various Record subtypes -#2112 - Add Row.types() and Row.dataTypes() as a convenience -#2113 - Document Record.hashCode() and equals() through Javadoc -#2133 - Allow for mapping to "" (empty) in order to avoid the - generation of a schema -#2156 - Add Row.type(int), type(String), dataType(int), dataType(String) for - convenience -#2158 - Add Executor.fetchLazy(Table) and fetchLazy(Table, Condition) for - convenience -#2159 - Let ExecuteListener extend Serializable -#2160 - Add Executor.batchUpdate(UpdatableRecord...) to mass-update a set of - UpdatableRecords -#2161 - Add Executor.batchInsert(UpdatableRecord...) to mass-insert a set of - UpdatableRecords -#2162 - Add some more Javadoc to JooqLogger -#2170 - Add 0.0 and 1.0 to Convert.FALSE_VALUES and Convert.TRUE_VALUES -#2171 - Allow for converting booleans to numbers through org.jooq.tools.Convert: - TRUE => 1, FALSE => 0 -#2172 - Add set(Field, Select>) methods to UPDATE, - MERGE and INSERT statements -#2176 - Add hint in code generation, when an unsupported, old database version - is being used (e.g. MS SQL Server 2000) -#2177 - Add ResultQuery.intern() and Result.intern() for string interning in - result sets -#2179 - Add Javadoc to QueryPart.hashCode() and equals() -#2199 - Allow for INSERT and UPDATE of pre-existing records through - SET [ Record ] clauses -#2202 - Add Mock JDBC objects for unit testing with jOOQ -#2203 - Add Executor.map(Schema) and Executor.map(Table) as a convenience to - apply runtime schema mapping -#2204 - Add BatchBindStep.bind(Object[][]) to bind lots of bind values at a time -#2205 - Add Result Executor.newResult(Table) to generate custom - results - -API changes (backwards-compatible) ----------------------------------- -#1309 - Let Factory.val() return Param instead of Field -#2031 - Change union(Select) and similar methods to - union(Select) -#2157 - Change the bounds of various > H - fetchInto(H handler) methods to RecordHandler -#2197 - Relax bounds on Factory.groupingSets(Collection>...) to - Collection>... -#2206 - Relax bounds of R on Executor.newRecord() from TableRecord to Record - -API changes (backwards-incompatible) ------------------------------------- -#1118 - Remove support for the code generation ant task -#1254 - Move org.jooq.tools.unsigned contents to org.jooq.types (along with the - INTERVAL types) -#1374 - Relax usage of generic . Replace by where data types - are involved. -#1533 - Extract Executor API from Factory. Let Factory contain only static - QueryPart factory methods -#1549 - Externalise connection lifecycle through new ConnectionProvider -#1649 - Remove support for code generation from pre-jOOQ 2.0 .properties file -#1740 - Remove support for generated master data enums -#1875 - Add generic type to SelectXXXStep DSL type hierarchy - for increased tuple type-safety -#1887 - Remove all deprecated code -#1894 - Remove constructors from dialect-specific factories -#1907 - Remove FactoryOperations, push its API down to org.jooq.impl.Executor -#1921 - Add InsertValuesStep[N] - Executor.insertInto(Table, Field, Field, ..., Field) -#1926 - Add MergeXXXStep - Executor.mergeInto(Table, Field, Field, ..., Field) -#1977 - Remove the confusing concept of having a "main key" as opposed to a - "primary key" -#2042 - Remove generated setters, setting foreign key values from records -#2043 - Remove generated navigation methods -#2060 - Remove redundant SimpleSelectXXX API -#2117 - Remove the FieldProvider marker interface. Simplify the FieldProvider - API -#2119 - Rename Row.getDegree() to Row.size() - -Behaviour changes (backwards-incompatible) ------------------------------------------- -#1235 - SQLite BIGINT data type erroneously maps to java.math.BigInteger -#1578 - Change configuration of ExecuteListeners in Configuration. Listeners - instances should be provided, not classes -#2076 - Stop "supporting" comma-separated regular expressions in the code - generator configuration -#2088 - Do not treat CUBRID "owner" as schema in generated code - -Bug fixes ---------- -#1170 - Improve performance on jOOQ's reflection usage -#1626 - Explicitly implement hashCode() and equals() in some additional - QueryParts -#1886 - Query.bind() has no effect when Query.keepStatement(true) and - StatementType.STATIC_STATEMENT are combined -#1890 - Bad Postgres array serialisation when " or \ characters are contained in - a String[] -#1938 - Improve AbstractField.hashCode() and AbstractTable.hashCode() and - similar, as these two are called very often -#1942 - Inefficient call to String.split() in StringUtils.toCamelCase() leads to - non-negligible performance overhead in POJO transformation calls -#1937 - Inefficient implementations of AbstractDataType.equals() and hashCode() -#1954 - Bad SQL rendered when combining ORDER BY [ some-function ] with LIMIT .. - OFFSET in DB2, SQL Server -#1958 - Bad SQL rendered for OVER (ORDER BY [ some-function ]) for SQL Server - and Sybase -#1974 - Optimise various Executor.fetchOne() methods, which consume the whole - ResultSet before throwing an InvalidResultException -#1979 - Thread safety issue in org.jooq.impl.FieldList -#1982 - Change RenderNameStyle.UPPER, LOWER, AS_IS to quote literals if needed -#1992 - Bad reference to org.jooq.debug.[impl].DebugListener in the manual -#1993 - Bad code generated when the same table name exists in multiple schemas - in SQL Server -#1995 - Record.original() values aren't updated after a Record.store() operation -#1997 - Review the manual's tutorial for integrity -#2001 - Named Params are treated as null literals on right sides of comparisons -#2007 - Bad type coercion on the right hand side of a comparison predicate, when - the left hand side is Field -#2011 - Implement some micro-optimisations in DefaultRenderContext -#2025 - Correctly handle multiple foreign keys defined on the same column -#2045 - Bad hashCode calculation when Records contain arrays or byte[] -#2055 - MySQL's UPDATE [t1] JOIN [t2] syntax can cause syntax errors as column - references are not fully qualified -#2057 - Cannot properly extract bind values for LIMIT .. OFFSET clause from a - SELECT statement -#2063 - jOOQ-meta loads Firebird composite unique key columns in wrong order -#2073 - The code generator's flag doesn't affect Oracle - VARRAY and TABLE types -#2082 - Oracle PIVOT expression doesn't bind any variables of a derived table - being pivoted -#2085 - java.lang.NoSuchMethodError: org.apache.log4j.Logger.isTraceEnabled()Z - when logger dependency is missing -#2086 - SQL syntax error when aliasing outcome of a relational division -#2091 - CUBRID doesn't really have a NVARCHAR data type -#2098 - NullPointerException when org.jooq.impl.EnumConverter converts null -#2104 - SQLite code generation treats multi-column primary keys like multiple - single-column unique keys -#2108 - SQLite returns NULL for val(new Date(0)).add(-1) and some other date - time arithmetic expressions -#2128 - Misleading Javadoc in Factory / Executor.selectCount() -#2137 - Failure to assign a value to a record pojo for a column with a - composite type when using select into. -#2139 - batchStore with Postgres composite types incorrectly reuses values from - the first record. -#2140 - No table java mapping generated using maven plugin - missing inputSchema - in postgres -#2143 - UnsupportedOperationException when binding UDTRecord in batchStore() for - Oracle -#2144 - Improve AbstractField.equals() and AbstractTable.equals() and similar, - as these two are called very often -#2145 - Improve QueryPartList.removeNulls() as this is called very often -#2154 - Generated Records should access values by index, not by field, for - performance reasons -#2165 - Add H2 database definitions to the jOOQ-scala module (to prevent - compilation errors) -#2167 - Convert.convert("xx", boolean.class) returns null, instead of false -#2178 - Improve FieldList. Avoid creating excessive array lists, where simple - (immutable) Field[] are sufficient -#2180 - Optimise DAOImpl by using the new ReflectionMapper instead of calling - Record.into() all the time -#2187 - Change all Javadoc

    tags to

    (To fix Java 7 standard Javadoc - style layout issues) -#2210 - Executor.fetchFromCSV() shouldn't mark resulting records as "changed" -#2215 - Improve example in the "jOOQ for CRUD" section. Use only columns from - the sample database -#2223 - SQL injection is possible in org.jooq.impl.Val, if client code doesn't - correctly enforce generic typesafety, and bind variables are inlined -#2227 - Field.in(T...) doesn't convert argument values to the Field's type - -Version 2.6.0 - October 26, 2012 -================================================================================ - -This release has a new main feature: the type-safe support for row value -expressions also known as tuples - up to a degree of 8. The API is formed in a -similar way as pre-existing tuple support in languages like C# or Scala. - -jOOQ's Scala integration has also been improved through the new jOOQ-Scala -module, which provides some useful implicit defs for operator overloading. -Future versions of jOOQ-Scala may experiment with Scala 2.10's Macros - -This release also ships with a lot of new deprecation to help you prepare for -the upcoming major release. - -Minor feature improvements include: - -- Lots of new fetchGroups() and intoGroups() methods, thanks to Ivan Dugic -- JDBC execution control support, such as cancel(), maxRows(), queryTimeout() -- Allowing for re-using JDBC PreparedStatement between Query executions -- Support for the SQL standard OVERLAPS predicate -- A new RecordMapper, similar to the existing RecordHandler - -Features and improvements -------------------------- -#385 - Allow for keeping open statements in a Query -#600 - Add support for Oracle / SQL Standard linear regression functions -#1058 - Add Factory.row(T1, T2, .. TN) and Factory.row( - Field, Field ... Field) to allow for creating tuples / rows -#1077 - Add support for the SQL standard OVERLAPS predicate -#1245 - Improve formatting for DECIMAL data types in Result.format(). Nicely - align the decimal point and reserve space on both sides -#1484 - Let XJC-generated artefacts implement Cloneable -#1527 - Support for converting String to java.net.URL, java.net.URI, and - java.io.File -#1674 - Export data types with Result.formatXML() and Result.formatJSON() - exports -#1679 - Add Factory.table(String, QueryPart...) -#1708 - Add Map> ResultQuery.fetchGroups(Field, Class) -#1709 - Add Map> ResultQuery.fetchGroups(Field[]) -#1710 - Add Map> - ResultQuery.fetchGroups(Field[], Class) -#1719 - Make logic from ResultQuery.fetchArray() available in Result.intoArray() -#1728 - Add support for the MySQL COUNT(DISTINCT expr, expr...) aggregate - function syntax -#1744 - Add support for the CUBRID DECR() function -#1756 - Add RecordMapper, similar to RecordHandler, mapping records to - custom types -#1762 - Add package-info.java to add Javadoc documentation to all packages -#1766 - Simulate row comparisons where they are not supported -#1773 - Add a new jOOQ-Scala project and jooq-scala artefactId, to contain jOOQ - extensions in the Scala language -#1782 - Move JAXB bindings out of XSD, in order to support more advanced - bindings -#1783 - Generate @SuppressWarnings("all") in jOOQ-generated artefacts -#1784 - Enhance the BETWEEN predicate, introducing the AND keyword -#1810 - Add Map ResultQuery.fetchMap(Field, Class) and - Result.intoMap(Field, Class) -#1816 - Add support for materialized views in Oracle's code generator -#1828 - Reduce log level for Factory deserialisation to TRACE -#1837 - Add support for @java.beans.ConstructorProperties when fetching into - immutable POJOs -#1841 - Add SortField Field.sort(SortOrder) to allow for dynamic sorting -#1842 - Add Condition Field.compare(Comparator, Field) to allow for dynamic - comparisons -#1844 - Add Table Table.join(TableLike, JoinType) to allow for - dynamic joining -#1845 - Add Factory.schemaByName(String) for plain SQL schemata -#1848 - Add Record.changed() to indicate whether a Record contains "dirty" - values -#1849 - Add Record.original() to obtain the originally fetched values from a - Record -#1854 - Add ResultQuery.maxRows(int) to limit the number of actually fetched - records -#1855 - Add Query.cancel() to support for interrupting statements prematurely -#1856 - Add Query.queryTimeout(int) to support for JDBC's - Statement.setQueryTimeout() - -API changes (backwards-compatible) ----------------------------------- -#1800 - Deprecate AliasProvider -#1807 - Result.intoArray() declares "throws MappingException", which isn't true -#1839 - Deprecate the various Result.getValuesAs[Type] and - Record.getValueAs[Type] methods -#1840 - Deprecate org.jooq.Store -#1866 - Deprecate [Schema-Name]Factory, remove reference to it from the - tutorials -#1869 - Deprecate org.jooq.NamedQueryPart -#1870 - Deprecate org.jooq.NamedTypeProviderQueryPart -#1872 - Improve jOOQ's RenderContext pretty printing behaviour -#1881 - Deprecate ConditionProvider, OrderProvider, LockProvider types - -Bug fixes ---------- -#1593 - Factory.field("{1} + {0} + {0}", val(1), val(2)) doesn't work. Cannot - re-use / re-order placeholders -#1720 - Improve performance by using Record.getValue(int) instead of - Record.getValue(Field) internally, where more than one value is - retrieved from a record -#1751 - Result.intoResultSet() generates wrong ResultSetMetaData if runtime - schema mapping is applied -#1764 - Add missing @Support({ ... FIREBIRD ... }) annotations -#1768 - NullPointerException when DAO.fetchOne() returns no record -#1774 - QueryPart.toString() does not load default settings from classpath -#1786 - Fix SEQUENCE support for Firebird -#1791 - Log a table's input/output names, and PK name when generating code -#1792 - Factory.fieldByName() and tableByName() do not correctly escape quotes -#1797 - SQL syntax errors when plain SQL contains comments with question marks - and SQL is executed as StatementType.STATIC_STATEMENT -#1802 - Result.into(Table) doesn't work correctly, if the same field name - appears twice in Result -#1806 - Let Record.toString() wrap the record in a temporary Result and call - Result.toString() instead -#1819 - MappingException in Record.into(Class), when POJO setters have - applicable names but non-applicable argument types -#1820 - Cannot fetch into non-public POJO classes. Their members / getters / - setters should be made accessible -#1829 - Factory.execute(String) may cause errors when plain SQL returns results -#1830 - Allow for passing null or empty arrays to intoMap(Field[]) and - intoGroups(Field[]) -#1850 - Record.equals() returns true as soon as both records hold a "null" value - for a given field -#1860 - Bad Results returned from plain SQL "select *" queries, if several - selected columns share the same name -#1876 - NULL constraint violation when storing a copied record - -Version 2.5.0 - August 26, 2012 -================================================================================ - -Welcome to another great database integration in jOOQ: Firebird! This is one of -the more popular open source SQL databases out there, with a rich feature set, -including the SQL standard MERGE statement. - -Apart from this, the main new features are: - -- Optimistic locking. jOOQ's UpdatableRecord API transparently implements - optimistic locking on its store() and delete() methods. By default, the - in-memory record is compared with the one in the database at write time. But - you can also let jOOQ handle incremented VERSION or TIMESTAMP columns for you. -- Oracle feature increment. Many nice Oracle features are now supported: - user-defined aggregates, regular expressions, Oracle Text, CONNECT_BY_ROOT and - ORDER SIBLINGS BY clausess, partitioned outer joins and more -- jOOQ's convenience API has been greatly enhanced. This includes many improved - fetch methods and new short forms for equal=eq, notEqual=ne, greaterThan=gt, - etc. to better align jOOQ with JPA, XSL, QueryDSL and many other tools that - abbreviate these keywords -- Many types and methods have been deprecated to help you foresee the upcoming - changes in jOOQ 3.0 - -Please consider also the updated manual with its new, more user-friendly -structure - -Features and improvements -------------------------- -#430 - Add support for the Firebird database -#457 - Add support for Oracle user-defined AGGREGATE functions -#620 - Add support for the SQL:2008 standard LIKE_REGEX operator -#722 - Remove casting of bind values in Ingres -#727 - Simulate RPAD and LPAD in SQLite -#816 - Add support for Oracle Text functions -#1339 - Add option to generate immutable pojos -#1547 - Support "optimistic locking" in UpdatableRecord.store() and delete() -#1552 - Generate fetchBy[ColumnName] methods in generated DAO classes -#1553 - Add some Javadoc to document the difference between using a Factory with - a Connection or with a DataSource -#1556 - Add javax.validation API to full deliverable -#1565 - Add Factory.connectByRoot(Field) to support the Oracle - CONNECT_BY_ROOT pseudo column -#1570 - Add Factory.condition(String, QueryPart...) similar to - Factory.field(String, QueryPart...) -#1582 - Add support for Oracle's ORDER SIBLINGS BY clause, in combination with - CONNECT BY -#1586 - Add missing constructors taking DataSource to dialect-specific factories -#1587 - Generate missing constructors taking DataSource in schema-specific - factories -#1595 - Simulate REPEAT() in SQLite -#1596 - Add support for optimistic locking using generated information about - "timestamp" or "version" columns -#1627 - Handle NULL in CSV imports/exports -#1645 - Add support for Oracle's PARTITION BY clause in OUTER JOINs -#1657 - Reorganise the manual -#1664 - By default, activate in the code generator -#1665 - Add support for the empty GROUP BY () clause -#1675 - Add support for the SQL standard IS [NOT] DISTINCT FROM predicate -#1680 - Overload all plain SQL DSL methods to also accept QueryPart arguments -#1681 - Simulate empty GROUP BY () clause in Sybase ASE and Ingres, joining a - dummy table and grouping by a constant field -#1684 - Add Setting to indicate that fetched records shouldn't - be automatically "attached" -#1685 - Improve Javadoc of Attachable.attach(). Document how "detaching" works -#1688 - Add E Record.into(E) as a complement to E Record.into(Class) -#1692 - Replace Factory.executeInsert(), Factory.executeUpdate() and similar - methods with more succinct variants -#1696 - Add short versions of comparison predicate methods, such as eq, ne, gt, - ge, lt, le -#1698 - Add support for the SQL standard BETWEEN SYMMETRIC predicate -#1701 - Add Factory.not(Condition) as a synonym for Condition.not() -#1704 - Document the behaviour of Factory.newRecord(Table, Object) and - Record.from(Object) with respect to UpdatableRecord.store() -#1707 - Add Map> ResultQuery.fetchGroups(Field) and - Result.intoGroups(Field) -#1712 - Add > Result.sortAsc .sortDesc(Field) -#1713 - Add Result.sortAsc, .sortDesc(Field, Comparator) -#1714 - Add Result.sortAsc, .sortDesc(Comparator) -#1718 - Document usage of InvalidResultException on the ResultQuery.fetchXXX() - Javadocs -#1721 - Add Map> ResultQuery.fetchGroups(Field, Field) - and Result.intoGroups(Field, Field) -#1722 - ResultQuery.fetchArray(int) and .fetchArray(String) should return a - typed array, even if this cannot be checked by the compiler -#1723 - Add Factory.fetchLazy(ResultSet) - -API changes (backwards-compatible) ----------------------------------- -#1544 - Remove Attachable interface from QueryPart hierarchy -#1579 - Deprecate org.jooq.Type -#1580 - Deprecate org.jooq.SchemaProvider -#1638 - Deprecate org.jooq.ArrayRecord.createArray() -#1639 - Deprecate org.jooq.Adapter -#1687 - Let Cursor.fetchInto(Table) return Result instead of List -#1736 - Deprecate TableRecord.{store|refresh|delete}Using() methods as being - part of jOOQ's internal API -#1741 - Deprecate org.jooq.MasterDataType - -Bug fixes ---------- -#1572 - Use Thread.currentThread().getContextClassLoader() to load - ExecuteListener classes as a workaround for experienced class loading - problems when using OSGi -#1584 - Code generation error with Oracle UDT static functions -#1632 - Improve the performance of various DefaultRenderContext methods, by - locally caching Settings values -#1633 - Improve the performance of CursorImpl.CursorIterator by setting Record - values by index rather than by Field -#1635 - Improve the performance of Factory.fetch(ResultSet) by caching data type - normalisation regex in FieldTypeHelper -#1650 - jOOR Fix #16: Can't call Reflect.create(A, B, null) -#1660 - Factory.renderContext().castMode(CastMode.NEVER).render(query) doesn't - work. CastMode is not applied -#1667 - Bad variable binding when NULLS FIRST, NULLS LAST is simulated in SQL - Server and other databases -#1673 - Result.formatXML() and Result.intoXML() do not render namespaces - correctly -#1683 - Oracle code generation regression for 10g. No such column - ALL_PROCEDURES.OBJECT_ID -#1693 - Cannot bind UDT values from other schemata to stored procedures -#1730 - Compilation errors in SQLite generated code when flag - is set to true - -Version 2.4.0 - July 8, 2012 -================================================================================ - -This release's main new feature is jOOQ's added convenience in -Factory initialisation for those users who get their database -connectivity through JDBC DataSources. If supplied with a -DataSource, a jOOQ Factory will handle the Connection lifecycle -internally, closing the Connection when no longer needed. - -The H2 MERGE statement syntax is now supported and simulated in -other databases, for those users that prefer its more intuitive -syntax over the SQL standard. - -The code generator now also allows for generating interfaces and -DAOs per table. DAO generation was previous discussed on the user -group and seen in a competitor product called OneWebSQL. - -The jOOQ Console now supports breakpoints for even more effective -SQL development - -Features and improvements -------------------------- -#1141 - Add Result.intoResultSet() to wrap a Result in a JDBC - ResultSet -#1253 - Avoid JDBC escape syntax for date/time literals -#1280 - Generate DAO classes and interfaces for POJOs -#1404 - Document the lifecycle of an ExecuteListener in the - Javadoc -#1411 - Add support for Postgres "any" data type (with quotes!). - This seems to map well to java.lang.Object -#1418 - Support case-insensitive schema names in code generation -#1419 - Add some WARN-level logging when the source-code - generator doesn't generate any artefacts -#1423 - Add Field.likeIgnoreCase() to support Postgres' ILIKE - operator -#1424 - Add Factory(DataSource) and similar constructors -#1427 - Add Factory.batchStore(Collection>) for convenience -#1428 - Add DataType.convert(Object...) and - DataType.convert(Collection) for convenience -#1431 - Add org.jooq.Name Factory.name(String) to contruct - QueryParts that are escaped according to - Settings.getRenderNameStyle() -#1432 - Add Factory.fetch(String, QueryPart...) and - Factory.execute(String, QueryPart...) and similar methods - to support arbitrary QueryParts in plain SQL -#1434 - Add UniqueKeyDefinition.isPrimaryKey() for completeness -#1438 - Add Result Factory.fetchFromCSV(String) -#1440 - Add top-level pom.xml for jooq-parent artefact (GitHub - Issue #14) -#1446 - Converting arbitrary strings to Number / Date should - return null, instead of throwing an exception -#1449 - Generate some meaningful Javadoc into the generated - [schema-name]Factory classes -#1454 - Add line breaks to generated Javadoc where appropriate -#1463 - Add option to let generated Record / POJO objects - implement a common generated interface -#1470 - Support interface types in ResultQuery.fetchInto(Class), - Result.into(Class), and Record.into(Class) methods, - returning a proxy -#1471 - Upgrade internal jOOR dependency to jOOR 0.9.4 -#1473 - Add IdentityDefinition to jooq-meta -#1501 - Add support for conversion of String to - java.sql.{Date, Time, Timestamp}. GitHub issue #22 -#1504 - Document behaviour of fetch() and fetchOne() in case jOOQ - cannot fetch actual records -#1509 - Minor improvements in the generator source code. GitHub - pull request #23 -#1510 - Generate additional setters for foreign keys, accepting - records as arguments -#1521 - Expose Connection methods, such as commit(), rollback() - and similar transaction-related methods in Factory -#1523 - Support ROW_NUMBER() OVER() for the latest version of - Derby and H2, which support it -#1524 - Simulate ROW_NUMBER() OVER() in HSQLDB using ROWNUM() -#1528 - Let generated interfaces extend Serializable -#1532 - Clarify the lifecycle of Configuration.data in the - Javadoc -#1534 - Generate more meaningful Javadoc where "an uncommented - item" stands now -#1536 - Add documentation to the FOR UPDATE OF clause, indicating - that DB2 may have stricter requirements regarding - updatability of fields -#1541 - Add support for the H2 MERGE syntax - GitHub Issue #18 -#1542 - Simulate the H2 MERGE syntax in other dialects supporting - the SQL standard MERGE statement - GitHub Issue #18 -#1545 - Website and Documentation anchors should be links to - themselves, visually recognisable - -Features and improvements (jOOQ Console) ----------------------------------------- -#1398 - Allow for adding breakpoints in jOOQ Console - -API changes (backwards-compatible) ----------------------------------- -#1408 - Relax bounds of in Factory.truncate() to Record, - instead of TableRecord -#1429 - Change Convert.convert(List, XXX) to accept Collection - instead of List - -Bug fixes ---------- -#1020 - Improve Oracle's LIMIT .. OFFSET clause simulation. - GitHub Issue #16 -#1358 - Compilation errors in generated source code when Oracle - overloaded procedures collide with procedures that end - with numbers -#1437 - Error in Javadoc of FactoryOperations.fetchOne(). This - method may return null -#1441 - Performance issue with AbstractDataType.convert(Object). - Avoid conversions when they're obviously unneeded -#1448 - Handle String to Enum conversion (when Java Enums are - stored as Strings in the database) - GitHub issue #15 -#1459 - Generated Keys.java static class too large (static - initialiser can become bigger than 64kb) -#1460 - Table.getReferencesTo(Table) doesn't work correctly for - aliased tables -#1461 - Exception when rendering of {fn datetimeadd(...)} for - HSQLDB and Derby -#1462 - Document missing GeneratorStrategy features, such as - getJavaClassImplements() -#1465 - Custom generator strategy's printImplements() is called - with Mode == RECORD for tables -#1478 - Caching SQLDialect in AbstractDatabase heavily improves - code generation performance -#1483 - Inefficient cloning of default settings using JAXB - unmarshalling leads to non-negligible overall overhead. - Use serialisation instead (short of a useful XJC clone - plugin) -#1489 - Fix manual where it claims to throw SQLExceptions -#1490 - Compilation error when a SQL Server stored procedure has - a parameter named "value" -#1493 - Bad syntax for SELECT /*+hint*/ DISTINCT ... in Oracle -#1498 - jOOQ does not compile using JDK 7 / JDBC 4.1. GitHub - Issue #24 -#1499 - Generated members of Tables.java are not final -#1505 - Bad exception message when ON DUPLICATE KEY IGNORE cannot - be simulated -#1515 - Splitting of large NOT IN conditions is wrong. The parts - should be connected with AND, not with OR -#1522 - fetch().into(Table) doesn't initialise records correctly, - such that subsequent calls to store() will execute an - INSERT, rather than an UPDATE -#1525 - Generate missing Javadoc to getters for procedure OUT - parameters -#1529 - Factory.batchStore() logs all single statements to DEBUG - output. Find a more accurate log output -#1537 - Factory.batchStore() renders bad SQL for Postgres. The - RETURNING clause is not allowed in batch INSERTs - -Version 2.3.1 - May 11, 2012 -================================================================================ -This is an important patch release fixing some regressions in the -code generator for the Postgres dialect. With 2.3.0, it was no -longer possible to generate schemata of which the database user -was not the owner. - -Bug fixes ---------- -#1334 - Fix inaccurate simulation of TRUNC(number, decimals) for - Derby -#1403 - Documentation bug: ctx.statement() can be replaced in - executeStart(). This is not documented -#1406 - Compilation errors in generated source code when Postgres - stored procedure parameter is called "NAME" -#1407 - Compilation errors in generated source code when Postgres - data-type is "any" (with quotes!) -#1409 - Postgres code generation broken when not connecting with - the owner of a schema - -Version 2.3.0 - May 6, 2012 -================================================================================ - -This is a minor feature increment release, featuring many useful -API enhancements, some new functions, some new syntax support -elements, improved source code generation and a lot of -improvements on the jOOQ Console, thanks to Christopher Deckers. - -The updated jOOQ Console now allows for filtering incoming -statements directly on the server side, using regular expression -filters on statement text and other features. These improvements -are a part of a general strategy to introduce breakpoints and -more sophisticated debugging capability to the jOOQ Console. - -Features and improvements -------------------------- -#597 - Add support for Oracle KEEP (DENSE_RANK FIRST...) - aggregate function clause -#910 - Add ExecuteListener extension to allow for overriding - exception translator to handle vendor-specific error - codes -#1286 - Add "renderSchema" flag to Settings, to completely - disable rendering of schema names -#1293 - Generate setter methods for JAXB annotated configuration - properties -#1295 - Add support for MySQL's INSERT IGNORE clause -#1296 - Simulate the FOR UPDATE clause for SQL Server, CUBRID, - using JDBC's ResultSet.CONCUR_UPDATABLE -#1302 - Add Factory.inline() to allow for flagging inline-only - "bind values" -#1303 - Add connection-less Factory constructors for convenience, - when jOOQ is only used as a SQL query builder -#1304 - Add option to generate JSR-303 @NotNull and @Size - annotations to generated POJO's -#1307 - Let HSQLDB dialect render NVL2() as NVL2() instead of - CASE expression -#1312 - Allow for omitting , and generate all - available schemata in that case -#1315 - Let generated factories use their associated Schema as - the Settings' RenderMapping's defaultSchema -#1319 - Move jooq-spring's FactoryProxy to the core jooq project -#1322 - Add Factory.dateAdd() and timestampAdd() for convenience -#1327 - Add DataType.isLob() -#1328 - Add Field inline(char), inline(Character), - inline(CharSequence) for convenience -#1333 - Add support for the Oracle TRUNC function, for numeric - arithmetic -#1336 - Let Record.into(Class) and similar methods accept - "immutable" classes, i.e. setter-less classes that take - several constructor arguments -#1340 - Use Constructor.setAccessible(true), if no default - constructor is available on the target type of - Record.into(Class) -#1342 - Improve Javadoc on Factory.function(). Document arguments -#1349 - Add support for the CUBRID Click-Counter INCR() -#1352 - Allow for creating syntax-error and SQL-injection safe - qualifiers for org.jooq.Field and org.jooq.Table -#1361 - Add Factory.batchStore(TableRecord...), to allow for - batch UPDATE/INSERTs of many records -#1367 - Make configured ExecuteListeners default constructors - accessible -#1366 - Let org.jooq.Batch extend Serializable -#1378 - Upgrade internal jOOR dependency to jOOR 0.9.3 -#1379 - Upgrade internal jOOU dependency to jOOU 0.9.1 -#1390 - Add RenderContext.qualify() to indicate whether - QueryParts should render qualified versions of themselves - or not - -Features and improvements (jOOQ Console) ----------------------------------------- -#1242 - Upgrade jOOQ Console dependency on RSyntaxTextArea from - 1.5 to 2.0.2 -#1249 - Allow for filtering incoming statements in jOOQ Console -#1393 - Implement a communication protocol between Console server - types and Console client types to allow for more - sophisticated functionality - -API changes (backwards-compatible) ----------------------------------- -#1310 - Deprecate Factory.literal() in favor of Factory.inline(), - and Factory.field() -#1368 - Promote AbstractQuery.isExecutable() to the public API - -Bug fixes ---------- -#989 - INSERT and UPDATE statements always render non-qualified, - escaped field names. This may cause trouble when using - plain SQL fields -#1109 - Standalone TABLE or VARRAY types are not correctly - initialised before referencing tables load them -#1279 - NullPointerException when leaving empty -#1283 - The LIKE escape character needs escaping, too, in - contains(), startsWith(), endsWith() -#1306 - Add missing INTERVAL data types to HSQLDBDataType -#1308 - Oracle's DataTypeDefinition reports the length of a BLOB - / CLOB data type to be 4000 -#1313 - and match only table names, not - fully qualified names -#1323 - Add support for byte[] in Postgres UDTs -#1324 - Code generation error in Oracle 10g when generating - stored procedures -#1326 - Error when deserialising BLOBs from Oracle UDTs -#1329 - NullPointerException when passing null to - timestampDiff(Field, Field) -#1343 - Regression in insertInto(...).values(...). Cannot pass - Field to values() -#1344 - Initialise Result ArrayLists to their expected size, if - that size is known. -#1360 - jOOR issue 12: "Don't reset the accessible flag to false, - if setting it to true is required, to avoid race - conditions in concurrency contexts" -#1371 - Missing conversion when using unsafe Field types in - BATCH statements -#1376 - Oracle UDTs in REF CURSORs are not deserialised correctly - from procedure OUT parameters -#1377 - Oracle UDTs are not deserialised correctly when the same - UDT name is present in multiple schemata -#1394 - NullPointerException when omitting element in - code generation configuration - -Version 2.2.1 - April 12, 2012 -================================================================================ - -This is a minor patch release, fixing some issues related to the -code generation of the new CUBRID integration as well as other, -minor issues. Upgrade if you're using CUBRID - -Bug fixes ---------- -#1287 - Remove oracle.sql dependency also from OSGi information - in pom.xml -#1288 - SQL syntax errors from sequences when using RenderMapping - with defaultSchema -#1289 - DefaultBindContext logs as Util.class -#1297 - Compilation error in CUBRID generated artefacts - referencing OBJECT types -#1298 - Avoid source code generation errors when generating code - for unknown, dialect-specific data types - -Version 2.2.0 - April 09, 2012 -================================================================================ - -Finally, jOOQ has added support for another database, and a very -promising one, that is. http://www.cubrid.org is a surprisingly -original mixture of a relational and object-oriented database -where tables and classes are synonyms, so are records and -instances. The CUBRID database has a high level of compatibility -with MySQL and is aimed at MySQL users wanting more performance -for their web applications. For details, see the slides here: - -http://www.slideshare.net/cubrid/growing-in-the-wild-the-story-by-cubrid-database-developers - -jOOQ is proud to have become a CUBRID partner, looking forward -to further cooperation with CUBRID in the near future. - -Apart from that, jOOQ now fully supports SQL standard INTERVAL -data types. With JDBC and JPA lacking official support for this, -jOOQ aims for becoming the tool of choice for vendor-specific -date time arithmetic. True INTERVAL data type support is given in -HSQLDB, Ingres, Oracle, Postgres databases. Besides that, CUBRID -and MySQL support INTERVAL data type arguments in functions. In -other dialects, jOOQ simulates DATEADD(), TIMESTAMPADD(), -DATEDIFF(), TIMESTAMPDIFF(). - -For jOOQ's OLAP friends, there is now also support for the Oracle -LISTAGG function (LIST() in Sybase, XMLAGG() in DB2, STRING_AGG() -in Postgres, GROUP_CONCAT() in CUBRID, H2, HSQLDB, MySQL). -LISTAGG is an "ordered aggregate function", meaning that the -aggregation is done using a specific ordering. Keep an eye out -for more such function support in future versions. - -Features and improvements -------------------------- -#566 - Add support for INTERVAL data types -#585 - Add support for DATE, TIME and INTERVAL arithmetic -#1183 - Add support for DEFAULT values in Oracle stored procedure - parameters -#1243 - Let generated POJOs (and Records) extend base classes - and implement interfaces -#1252 - Avoid JDBC escape syntax for Oracle stored procedure - calls. Generate PL/SQL syntax, instead -#1255 - Let generated Tables contain a public default constructor - to be able to extend those classes - Github issue #12 -#1257 - Add CUBRID support -#1268 - Add Factory.field(String, QueryPart...) to generate - custom clauses -#1269 - Add YEAR(), MONTH(), DAY(), HOUR(), MINUTE(), SECOND() - function support as shortcuts for EXTRACT() -#1273 - Simulate GROUP_CONCAT() aggregate function using Oracle's - LISTAGG() function, where available -#1274 - Add support for the Oracle LISTAGG(...) WITHIN GROUP - (ORDER BY ..) [ OVER (..) ] aggregate / analytic function -#1275 - Simulate Sybase LIST() aggregate function using Oracle's - LISTAGG() function -#1276 - Simulate Oracle's LISTAGG() in DB2 using XMLAGG(), - SUBSTR() and CONCAT() -#1278 - DEBUG log both executed SQL and SQL with inlined bind - values - -API changes (backwards-compatible) ----------------------------------- -#1262 - Pull up OracleFactory.prior() and other CONNECT BY - related methods to Factory - -Bug fixes ---------- -#1241 - Wrong variable binding when comparing CHAR columns in - Derby and DB2 without explicit casting to VARCHAR -#1244 - Cannot override class name in GeneratorStrategy in - Mode.POJO -#1248 - Setting both false and - true leads to compilation errors -#1256 - Fixed code generation issue with H2 user defined - functions returning VARCHAR -#1263 - Pass fetchsizes <= 0 to the JDBC driver (for vendor- - specific MySQL compatibility) -#1270 - Most databases allow for multiple identical foreign keys. - This leads to compilation errors in generated source code - -Version 2.1.0 - March 18, 2012 -================================================================================ - -With this version, jOOQ attempts to follow versioning rules -imposed by semantic versioning: http://semver.org/ -There will be 1 minor release per month, and a couple of patch -releases per year, depending on popular demand - -The main improvements for this release include - -- The possibility of providing jOOQ with a custom type mapping. - You can now define your own Converter types that are used by - jOOQ to map a database's SQLDataTypes to your custom types. - This is particularly useful for Java's enums. Read more about - custom converters in the manual: - http://www.jooq.org/manual/ADVANCED/CustomTypes/ - -- There are a lot of new runtime configuration options to control - the SQL style of SQL rendered by jOOQ. You can now specify - whether table/column names should be quoted / capitalised / - lower-cased, whether SQL keywords should be capitalised or not, - etc... - -- The handling of NULL has been improved in favour of using jOOQ - as a SQL builder library (e.g. along with Spring for execution) - NULL is no longer inlined, but bound as a variable. - -- jOOQ now supports simulation of the relational division - operation using an intuitive syntax. Read more about the - relational division here: - http://en.wikipedia.org/wiki/Relational_algebra#Division - -Features and improvements -------------------------- -#161 - Add runtime configuration to pretty print rendered SQL -#349 - Add SQLite relations support -#491 - Add runtime configuration for SQL keyword style (upper - case, lower case) -#521 - Add runtime configuration for SQL reference style (upper - case, lower case, as-is, quoted) -#1150 - Add code generation option to disable generation of - records -#1181 - Add support for SQL Server data types timestamp and - rowversion -#1188 - Load default Settings from the classpath at - /jooq-settings.xml, or from -Dorg.jooq.settings -#1193 - Specify main-class in jOOQ Console's manifest.mf and - include dependency in jar file -#1194 - Add ColumnDefinition.isNullable() -#1202 - Add support for the relational division operation: - A.divideBy(B).on(A.ID.equal(B.A_ID)).returning(A.X, ...) -#1207 - Add Factory.batch(Collection) for - convenience -#1208 - Render @javax.persistence.Column(nullable = false) - property, if available -#1209 - Render @javax.persistence.Column(length, precision, - scale) properties, if available -#1215 - Add org.jooq.Converter for custom type mapping -#1216 - Overload Record, Result.getValue() and .setValue() - methods to accept a Converter -#1217 - Add EnumConverter as a base type for custom enum - converters -#1218 - Add code generation options to generate - referencing a Java type and a Converter -#1224 - Add DataTypeDefinition.getLength() to jooq-meta's type - system -#1233 - Support custom JDBC properties for jooq-codegen -#1234 - Add Database.getTable(SchemaDefinition, String, boolean) - to fetch tables case-insensitively -#1239 - Add Factory.fetchLazy(String, Object...) - -API changes (backwards-compatible) ----------------------------------- -#1191 - Deprecate ConfigurationRegistry and replace by equivalent - ExecuteListener feature -#1219 - API Bug: Cannot use LIMIT .. OFFSET along with FOR UPDATE - -Bug fixes ---------- -#625 - Remove dependency from generated Routines to the - generator's SQLDialect -#1128 - NULL is inlined in INSERT statement instead of binding it - as a variable. This can cause issues when using jOOQ with - Spring -#1137 - Exclude MySQL column-level enum types when that column is - overridden by a -#1158 - Derby cannot handle inlined NULL literals in some - contexts -#1180 - Execute BatchMultiple (multi-query batch query), when - executing BatchSimple (single-query, multi-bind-value - query) with StatementType == STATIC_STATEMENT -#1189 - TableMapping regression for SQLite database -#1190 - Cannot store SQLite records when using - StatementType.STATIC_STATEMENT -#1199 - Table.getFields() returns an internal representation of a - table's field list. Make generated tables immutable! -#1200 - Internal API leak exposed through covariance in - AbstractType.getFields() -#1211 - Enforce method name disambiguation also when using custom - strategies in jooq-codegen -#1212 - Enforce identifier disambiguation also when using custom - strategies in jooq-codegen -#1221 - Incorrect ExecuteListener invocation for INSERT .. - RETURNING. executeStart() and executeEnd() are omitted -#1223 - Cache ExecuteListener classes for performance -#1225 - Bind NULL byte[] as java.sql.Types.BINARY instead of - BLOB in Postgres, to avoid errors -#1226 - Bind NULL UDTs with their associated type name in Oracle -#1232 - SQLException when Factory.fetch() does not return a - ResultSet -#1237 - Don't generate enum classes for columns in MySQL tables - that are excluded from code generation - -Version 2.0.5 - February 26, 2012 -================================================================================ - -This release finally introduced basic runtime configuration -features for the jOOQ Factory. This configuration now includes: - -- Execute listener and SQL tracing support. jOOQ allows you to - hook your own listeners into jOOQ's query execution engine to - be notified of all sorts of events -- The existing SchemaMapping features. They are now part of the - runtime configuration -- StatementType settings. Specify whether a Factory should - execute java.sql.PreparedStatements (with bind variables) or - static java.sql.Statements with inlined variables. - -The runtime configuration is documented here: - -http://www.jooq.org/manual/JOOQ/Factory/ - -The listener and tracing support has been requested by -Christopher Deckers, a new jOOQ user who has had the courtesy to -contribute the new jOOQ Console, which is documented here: - -http://www.jooq.org/manual/ADVANCED/ExecuteListener/ - -Apart from that, another long-requested feature is now fully -implemented: The GeneratorStrategy, allowing for custom naming -strategies in generated source code. This will allow for -generating custom table / record class name prefixes / suffixes, -as well as overriding the default behaviour for rendering UPPER, -lower and CamelCase artefacts. See the manual for details: - -http://www.jooq.org/manual/META/Configuration/ - -Features and improvements -------------------------- -#93 - Add Field.equalIgnoreCase(), Field.notEqualIgnoreCase() -#408 - Add class prefixes, suffixes and other options to the - code generator -#492 - Add runtime configuration -#1107 - Let Field.contains() support the Postgres ARRAY @> ARRAY - operator -#1140 - Add ResultQuery.fetchResultSet() to return the underlying - JDBC result set -#1143 - Add Result.isNotEmpty() for convenience -#1145 - Add runtime configuration to specify whether jOOQ should - execute java.sql.PreparedStatement (with bind variables) - or a java.sql.Statement (with inlined parameters) -#1146 - Add Query.getSQL(boolean) to indicate that bind values - should be inlined (as a convenience for - Factory.renderInlined(QueryPart)) -#1148 - Add Cursor.resultSet() to expose the underlying ResultSet -#1149 - Allow for optional - "http://www.jooq.org/xsd/jooq-codegen-2.0.4.xsd" - namespace in jooq-codegen configuration -#1152 - Add & org.jooq.EnumType> - E MySQLFactory.enumType(Class, int) for enum reverse - lookups of MySQL-specific enums -#1159 - Support matching numbers with LIKE, e.g. ID LIKE '%33%' -#1160 - Implement Field.contains(), .startsWith(), .endsWith() - for numeric values, too -#1161 - Use reflection to remove compile-time dependency on - ojdbc for creating ARRAYs -#1162 - Integrate jOOR into jOOQ for simpler reflection -#1164 - Distinguish between Definition.getInputName(), - .getOutputName() -#1165 - Add constraint name to generated javadoc -#1167 - Trivial issue with org.jooq.Factory.exists Javadoc - - GitHub issue #10 -#1169 - Add Configuration.setData(), getData() to convey custom - data in a configuration's lifecycle -#1172 - Add runtime configuration to deactivate JooqLogger -#1177 - Add jOOQ-Console module to jOOQ -#1184 - Add DataType.isArray() - -API changes (backwards-compatible) ----------------------------------- -#1142 - Rename Result.exportXML() to Result.intoXML() to stay - more consistent -#1151 - Deprecate SchemaMapping in favour of new runtime - configuration - -Bug fixes ---------- -#978 - Schema.getTables() and similar methods return empty lists - when Schema is mapped with SchemaMapping -#1153 - Bad inlining of booleans in Sybase ASE / DB2 / Oracle - SQL Server / SQLite -#1154 - Bad inlining of byte[] in most dialects -#1155 - byte[] are erroneously converted to String when using - Record.intoArray() -#1156 - Bad inlining of DATE / TIME / TIMESTAMP data types in - Ingres (and other dialects, when the setting differs from - the default) -#1166 - Some generated Javadoc uses naming strategy or plain - output name, instead of qualified output name -#1168 - Oracle packages are generated as static, instead of - static final -#1175 - Factory.use() seems to render SQL with the Schema name - still present -#1179 - Oracle-generated ArrayRecords need a reference to - org.jooq.Schema to read TABLE of OBJECT from stored - procedures - -Test cases ----------- -#1147 - Add integration tests for executing SQL generated using - Factory.renderInlined() - -Version 2.0.4 - February 12, 2012 -================================================================================ - -This release introduced many improvements to source code -generation. These improvements include: - -- Maven and standalone code generation now use the same XML - configuration, which is read by jOOQ-codegen using JAXB. This - allows for more complex configuration elements in the future -- jOOQ-codegen can now handle multi-schema databases and generate - code for tables referencing tables from other schemata. This - is integration tested against the SQL Server AdventureWorks - database -- jOOQ now allows to generate simple POJOs in addition to Records - and to annotate both POJOs and Records with JPA annotations - such as @Entity, @Table, @Id, @Column, @UniqueConstraint, etc. - -You can migrate your existing .properties configuration by running -> org.jooq.util.GenerationTool /your.properties migrate - -Besides that, there is a lot of ongoing work to improve the -integration of Oracle's TABLE and VARRAY types. - -Features and improvements -------------------------- -#8 - Add JPA annotations to generated POJOs / Records -#282 - Add support for multi-schema databases -#287 - Add support for Oracle TABLE types -#395 - Use XML configuration file instead of properties file -#1089 - Add Field.contains(), .startsWith(), .endsWith() as a - convenience for Field.like() (including escaping) -#1092 - Move master data table configuration from - generator.generate to generator.database namespace -#1093 - Add support for generator.strategy in Maven source code - generation -#1094 - Add support for generator.database.date-as-timestamp in - Maven source code generation -#1095 - Move generator.generate.unsigned-types to - generator.database namespace -#1096 - Add support for generator.generate.unsigned-types in - Maven source code generation -#1103 - Add support for SQL Server data type uniqueidentifier -#1106 - Add Factory.escape(Field, char) for use with LIKE -#1108 - Add support for multi-schema databases using Maven code - generation -#1115 - Add support for Oracle VARRAY/TABLE of OBJECT types -#1127 - Add support for POJO classes generation -#1129 - Allow for using Param in LIMIT .. OFFSET clauses -#1132 - Add RenderContext.castMode() to allow for avoiding casts - where this is not really needed -#1136 - Add generation option to enable/disable generating - navigation methods - -Bug fixes ---------- -#1099 - Derby generated artefacts are not sorted alphabetically -#1101 - Internal API leak exposed through covariance in - AbstractTable.joinXXX() methods -#1110 - VARRAY element type information is lost when unnesting - VARRAY's in Oracle -#1111 - VARRAY element type information is lost when unnesting - VARRAY's returned from functions in Oracle -#1114 - Syntax error when unnesting TABLE of OBJECT in Oracle. - The unnested table contains several columns but jOOQ only - unnests "COLUMN_VALUE" -#1117 - NullPointerException when passing an ArrayRecord - containing a null array to a stored function in Oracle -#1125 - Postgres needs casting for date time data types in - queries like SELECT ? FROM DUAL -#1131 - DB2: [Noauthorized routine named "LIKE" of type - "FUNCTION" having compatible arguments was found] when - using Field.like(concat(x, y)) -#1133 - Compilation errors in generated source code if the same - constraint name exists in several schemata -#1134 - NullPointerException in code generation when a foreign - key constraint references a table from another schema - that is not being generated -#1135 - Generated Javadoc references inputSchema instead of - outputSchema - -Test cases ----------- -#1009 - Add more integration tests for proper handling of - java.sql.Date, Time, Timestamp -#1090 - Run jOOQ tests against AdventureWorks SQL Server sample - database -#1105 - Add integration tests for multi-schema source code - generation and querying -#1122 - The 10k lines of integration test code are too heavy for - the compiler. Create test modules with fewer lines of - code, each. - -Version 2.0.3 - January 29, 2012 -================================================================================ - -This release focuses on increased compatibility between various -SQL dialect integrations as far as ARRAY and JOIN support is -concerned: - -- ARRAY types are only available in H2, HSQLDB, Oracle, Postgres. - Nevertheless, they can be somewhat simulated in other dialects - using nested selects with UNION ALL. Increased compatibility - leads to a nicer API, where ARRAYs are used along with ALL/ANY - quantifiers, for instance. - -- JOIN syntaxes can be quite powerful in SQL. Apart from - simulating NATURAL JOIN, JOIN USING clauses, as well as a - synthetic "KEY JOIN" syntax, jOOQ now also supports nesting - JOIN expressions to create more complex table sources. See a - recent blog post on the subject here: - -http://blog.jooq.org/2012/01/15/lets-revise-the-sql-from-clause/ - -Features and improvements -------------------------- -#578 - Add KEY JOIN syntax to simulate joining using generated - foreign keys -#577 - Simulate NATURAL JOIN syntax, where this is unavailable -#582 - Simulate JOIN USING syntax, where this is unavailable -#671 - Allow for nesting JOIN clauses -#676 - Add Table.join() methods to create more flexible table - sources -#993 - Add Field.equalAny(T[]), .equalAny(Field) methods -#1048 - Simulate (array) syntax for dialects - that do not support arrays -#1051 - Add Factory.execute(String, Object...) as a convenience - method for Factory.query(...).execute() -#1055 - Simulate Factory.table(Object[]) and table(List) using - UNION ALL in dialects that do not support arrays -#1060 - Improve debug logging of H2 arrays. The syntax is not - ARRAY[1, 2], but (1, 2) -#1065 - Add OracleFactory.sysContext(String, String) to support - Oracle's SYS_CONTEXT function -#1069 - Add support for INSERT INTO table(field1, field2, ...) - SELECT syntax - as opposed to the existing INSERT INTO - table SELECT -#1072 - Add support for LIKE .. ESCAPE .. syntax -#1074 - Add Field.notBetween(T, T) for convenience -#1080 - Add support for JDBC's Statement.setFetchSize() in - ResultQuery.fetchLazy() -#1082 - Add some more DEBUG logging in AbstractResultQuery - -API changes (backwards-compatible) ----------------------------------- -#1059 - Change SelectFromStep.from(Collection>) to - from(Collection>) - -API changes (backwards-incompatible) ------------------------------------- -#1087 - Change the NTILE function to return Field - instead of Field - -Bug fixes ---------- -#1071 - Make Sequence Serializable -#1081 - Derby error in NULL handling when simulating unnested - arrays that contain NULL values -#1084 - Bind index mismatch in val(null).equal(null) and in - val(null).notEqual(null) -#1091 - Add missing @Support annotations on Table.crossJoin() - methods - -Test cases ----------- -#1026 - Add integration tests for NTILE window function and - document compatibility -#1073 - Add integration tests for NOT IN queries holding NULL - arguments - -Version 2.0.2 - January 8, 2012 -================================================================================ - -This is a maintenance release for jOOQ 2.0. The main improvements -include - -- The whole jOOQ API is now annotated with a new org.jooq.Support - annotation to help you assess whether a certain SQL clause is - available in your database or not. This is particularly useful - when your application should support several databases at once - (e.g. MySQL, Postgres, Oracle) -- The Oracle PIVOT clause is now formally supported for advanced - statistical queries in Oracle. This clause will be simulated in - other dialects in the future. -- The DATE data type can be mapped to TIMESTAMP. This important - when you query a legacy Oracle database, where DATE columns - can also contain time information -- Several convenience methods have been added for more fluent - syntax, when using plain SQL result queries, subqueries as - tables, or when unnesting arrays in ANY() and ALL() quantifiers - -Further type mapping support is still experimental. An official -cooperation with MinuteProject for source code generation is -being analysed. With MinuteProject, many source code generation -issues could be addressed centrally, as MinuteProject specialises -in source code generation: - -http://minuteproject.wikispaces.com/ - -Features and improvements -------------------------- -#595 - Add support for Oracle's PIVOT clause -#869 - Add support for using ANY, ALL with arrays, not just with - subselects -#1007 - Formally document the API methods to indicate whether - something is supported by any given SQL dialect -#1011 - Add code generation configuration parameter to avoid - generating @Generated annotation -#1019 - Render LIMIT x OFFSET y also for MySQL, instead of - LIMIT y, x -#1022 - Add missing Sybase ASE implementation for Factory.use() -#1024 - Add Factory.resultQuery(String, Object...) to allow for - arbitrary execution modes of plain SQL queries (lazy, - later, into, array, etc) -#1025 - Add missing SQLite implementation for Factory.deg() and - Factory.rad() -#1033 - Generate table comments into generated Tables.java as - Javadoc -#1040 - Add Object[][] Result.intoArray() and - Object[] Record.intoArray() for convenience. Let - E Record.into(Class) also support array types. -#1041 - Add Table Factory.table(Select) convenience - method for more fluency -#1042 - Add support for DISTINCT keyword in SUM, AVG, MIN, MAX - aggregate functions -#1046 - Generate Ingres table and column comments in generated - source code (only Ingres 10) - -API changes (backwards-compatible) ----------------------------------- -#1050 - Deprecate usage of SOME quantifier in predicates, such as - equalSome() - -API changes (backwards-incompatible) ------------------------------------- -#1036 - Fixed API typo in - WindowsRowsStep.rowsBetweenUnboundedFollwing() -#1037 - The fluent API allows for JOIN clauses without FROM - clause - -Bug fixes ---------- -#1010 - The MERGE INTO .. WHEN NOT MATCHED THEN INSERT .. syntax - may cause type-safety issues in some databases. VALUES - should be converted before binding -#1014 - FindBugs: Latent risk of infinite recursion due to typo - in QueryPartList.retainAll(); -#1015 - FindBugs: 7 occurrences of "Bad attempt to compute - absolute value of signed 32-bit hashcode". In extreme - cases, this could lead to SQL syntax errors -#1016 - The Oracle CONNECT BY cond1 AND cond2 syntax erroneously - creates a WHERE cond2 CONNECT BY cond1 statement -#1028 - Syntax errors when using untyped param() in HSQLDB (and - other strongly typed dialects) -#1029 - Postgres can't bind NULL values in cases, where bind type - is Object.class and bind value was created with - Factory.param() -#1030 - UnsupportedOperationException when calling - Query.bind(int, Object) on a query containing plain SQL - fields -#1031 - Incorrect debug logging when plain SQL QueryParts like - field("?") bind null values -#1032 - Incorrect debug logging when plain SQL QueryParts contain - String literals, such as 'Hello? Anyobody out there?' -#1047 - Field.notEqualAny() erroneously renders <> ALL() - -Test cases ----------- -#1021 - Add explicit integration tests for - LEFT|RIGHT|FULL OUTER JOIN - -Version 2.0.1 - December 23, 2011 -================================================================================ - -This is a maintenance release for jOOQ 2.0. The main improvements -include - -- Better integration for using jOOQ with Spring Data. This - includes support for named parameters, as well as allowing to - change bind values on previously constructed Query objects -- The MERGE statement has been enhanced for better integration - with Oracle. -- jOOQ is now ready to use with Scala / Groovy - -For more information about using jOOQ with Scala, see this blog -post: -http://blog.jooq.org/2011/12/11/the-ultimate-sql-dsl-jooq-in-scala/ - -There is now also experimental support for a custom type mapping. -This mapping allows to rewrite data types at code generation time -as well as to specify custom enum data types (e.g. boolean Y/N). -Not all integration tests run smoothly for custom data types, -hence, this feature is not yet fully supported. - -Features and improvements -------------------------- -#691 - Add support for Oracle CURSOR REF IN / INOUT parameters -#677 - Add type-mapping configuration, enforcing types for - columns -#947 - Add custom type mapping support (experimental) -#968 - Allow for custom enum types, configured in the code - generator (experimental) -#974 - Add Schema.getTable(String), getSequence(String), - getUDT(String) for better runtime Schema meta-navigation -#975 - Add Sequence.getName(), getSchema(), getDataType() -#980 - Add support for named parameters, to better interact with - Spring -#991 - Add Query.bind(String, Object) and bind(int, Object) to - easily modify existing bind values -#992 - Document thrown DataTypeException in Convert methods -#998 - Enhance MERGE statement for Oracle extensions: - WHEN MATCHED THEN UPDATE .. WHERE .. DELETE WHERE .. - WHEN NOT MATCHED THEN INSERT .. WHERE .. -#1000 - Add support for MySQL's INSERT INTO .. SET .. syntax in - MERGE statement's WHEN NOT MATCHED THEN INSERT clause - -API changes (backwards-compatible) ----------------------------------- -#981 - Cannot insertInto(table("my_table")), as plain SQL tables - return Table, not Table. Relax - bound on R -#988 - Change Factory.field(String) to return Field - instead of Field -#999 - Make MERGE's WHEN MATCHED .. and WHEN NOT MATCHED .. - clauses optional -#1001 - Identity.getField() should return TableField - instead of Field -#1006 - Add Factory.value(...) as a synonym for Factory.val(...) - for increased Scala / Groovy compatibility - -Bug fixes ---------- -#973 - EnumType renders name() instead of getLiteral() in - formatXXX() methods -#977 - EnumType renders name() instead of getLiteral() in - Convert.convert() method -#979 - Record.from() sets all changed flags to true. That's not - necessarily correct in the event of storing the record - back to the DB -#985 - AbstractRecord.equals() does not correctly compare - arrays. Compare them using Arrays.asList() -#986 - Postgres / DB2 / Sybase ASE foreign-key namespace is - unique-per-table. jOOQ forces all foreign keys from all - tables into the same namespace -#990 - Problems when encoding arbitrary byte[] as String(byte[]) - in inlined SQL. This can cause issues when DEBUG-level - logging is activated -#995 - Routines don't respect SchemaMapping - Github issue #8 -#1002 - TableRecord.storeUsing() doesn't update IDENTITY column - values, if the column is not part of the main unique key -#1003 - Sybase / SQL Server / MySQL / Ingres / H2 / Derby's - INSERT .. RETURNING simulation returns null if a table - has an IDENTITY column, but no primary/unique key -#1005 - The INSERT INTO .. VALUES .. syntax may cause type-safety - issues in some databases. VALUES should be converted - before binding - -Test cases ----------- -#984 - Detach IDENTITY column tests from UNIQUE KEY tests, - create a dedicated test suite instead - -Version 2.0.0 - November 25, 2011 -================================================================================ -This release is a fresh start in many areas of jOOQ, adressing -issues that have been requested by users for a long time. These -release notes docment the most important changes, a detailed -upgrade guide, as well as the detailed list of improvements. - -Most important changes ----------------------- -- The API became more static. This applies to many Factory - methods, such as val(), literal(), as well as to many Field - methods that have been moved over to the Factory. For example, - when before, you wrote this using "postfix function notation": - -
    NAME.replace(" ", "_").trim()
    - - you will now write (just as in SQL): - -
    trim(replace(NAME, " ", "_"))
    - - Using static imports of Factory.*, jOOQ makes SQL look even - more like SQL. The current "postfix notation" is maintained for - backwards compatibility. -- By default, jooq-codegen will now generate a "dynamic" meta - model as opposed to the existing static one. Generated tables - covariantly override the as(String) aliasing method, leading - to a much more convenient aliasing style. When before, you - wrote: - -
    -Table parent = T.as("parent");
    -Table child  = T.as("child");
    -Condition join =
    -  parent.getField("ID").equal(child.getField("PARENT_ID"))
    -
    - - You can now write: - -
    -T parent = T.as("parent");
    -T child  = T.as("child");
    -Condition join = parent.ID.equal(child.PARENT_ID)
    -
    - - Of course, the existing notation still works - -- Exceptions are no longer checked. When previously, the DB's - SQLException was propagated to client code, there is now an - unchecked DataAccessException hierarchy, similar to that of - Spring. This will eventually give way to a standardised error - handling abstraction, in future developments. -- Window functions are now constructed from their underlying - aggregate functions just like in SQL. For example: - -
    -sum(AMOUNT)
    -sum(AMOUNT).over().partitionBy(ACCOUNT)
    -
    - - This makes for a more concise API, especially when considering - future extensions, such as Oracle's KEEP (DENSE_RANK FIRST...) - syntax. -- More type safety has been introduced regarding various places - where generic and types are involved. - This is especially true for INSERT / UPDATE / DELETE statements -- Sequences now also have a type -- Unsigned number types are now supported in those databases that - use them. Unsigned numbers are implemented in jOOU, a spin-off - open source project. For convenience, this library is - "internalised" into jOOQ, to avoid adding a dependency - -http://code.google.com/p/joou/ - -Upgrade instructions: ---------------------- -Various of the above changes are incompatible with jOOQ 1.x. In -order to upgrade, please be aware of the following pitfalls: - -- The schema needs to be re-generated. -- Much of the post-fix function notation is replaced by static - methods in the Factory. Today's org.jooq.Field API is - maintained in jOOQ 2.0, for backwards compatibility. It will - be removed, eventually, though. Expect some incompatible - changes, where window functions are involved -- Some Factory instance methods (such as val(), literal()) are - now static. They are compatible, but may cause compiler - warnings. -- The meta model is now an instance model by default. If you - prefer the static meta model, you can configure this in your - jooq-codegen configuration. -- The additional typesafety involving and types may cause - compiler warnings and errors. -- SQLException is no longer part of the API. This can cause - compiler issues, in particular when extending jOOQ -- Some utility classes have moved to org.jooq.tools - -Should these incompatibilities be too significant for your -project, you can still stay on the 1.x branch, which will be -maintained for a while. Be aware that upgrading might be more -difficult, later, though. - -Features and improvements -------------------------- -#55 - Implement improved exception handling -#117 - Improve DSL support for field and table aliasing (decrease - verbosity) -#519 - Add support for MySQL UNSIGNED numeric types -#626 - Create static function access -#661 - Add support for bitwise operators -#718 - Sequences should be mapped to appropriate type (e.g. - SMALLINT, INT, BIGINT, etc) -#734 - Add support for Oracle / SQL Server CUBE() and ROLLUP() - grouping functions -#751 - Add support for Oracle / SQL Server GROUPING SETS() - function -#799 - Add support for Oracle PL/SQL's object-oriented MEMBER - PROCEDURES and MEMBER FUNCTIONS -#804 - Add to Insert, Update, Delete -#835 - Review API typesafety for InsertSetMoreStep - set(Field, T) and similar methods -#890 - Add Factory.selectCount() convenience method -#891 - Let min() max(), etc functions return a new type - AggregateFunction. This type can then be used as an entry- - point for window functions -#892 - Add support for Oracle / SQL Server GROUPING() and - GROUPING_ID() functions to be used along with CUBE() and - ROLLUP() -#893 - Simulate ROLLUP() function for MySQL, using the WITH - ROLLUP grouping modifier -#894 - Move functions from Field to org.jooq.impl.Factory - and make them static -#895 - Add power(..., Field) -#897 - Add (experimental) Spring integration project -#898 - Replace usage of checked SQLException by an unchecked - DataAccessException, similar to that of Spring -#899 - Build jOOQ .jar files as bundles to be deployed into OSGI - environments -#900 - Purge deprecated API - Prior to 2.0 -#901 - Introduce InvalidResultException as a subtype of - DataAccessException for integrity checks in methods like - ResultQuery#fetchOne(), ResultQuery#fetchMap(), etc. -#902 - Make AggregateFunction the base type for constructing - window functions -#904 - Move SQLDialectNotSupportedException into - org.jooq.exception package -#905 - Introduce MappingException as a subtype of - DataAccessException for integrity checks in methods like - ResultQuery#fetchInto(), etc. -#907 - Add missing Field.like(Field), notLike(Field) - methods to overload the existing Field.like(T), notLike(T) -#908 - Change rpad / lpad functions to accept String instead of - char -#912 - Add R newRecord(Table, Object) as - the inverse of various into(Class) methods -#916 - Add > {Record.into(Table) | - Result.into(Table) | ResultQuery.fetchInto(Table) | - Cursor.fetchInto(Table)} -#917 - Add various Cursor.fetchOneInto() convenience methods -#918 - Add CustomTable, CustomRecord as base classes for more - convenience when used with various into(Table) methods -#919 - Allow for accessing non-public constructors of Record - subtypes -#923 - Move some utilities to org.jooq.tools -#924 - Generate a reference to every table in a new Tables.java - class for improved static access -#928 - Add DataTypeException extending DataAccessException in - case something went wrong when converting data types -#930 - Support converting date time types to java.util.Calendar. - This applies to various into(Class) methods, as well as - Result.getValue(xx, Class) -#931 - Allow for conversion between Long and date/time types, and - vice versa -#932 - Let the bound of R in TableRecord extend TableRecord, - in UpdatableRecord to extend UpdatableRecord -#933 - Add support for type Character in Record.into(Class) - methods and similar -#936 - Accept primitive types, such as int.class for type - conversion -#938 - CODEGEN: Add static/instance table field configuration -#939 - Include license.txt and readme.txt in .jar files' META-INF - directory -#953 - Make DefaultGeneratorStrategy methods non-final to allow - for overriding -#954 - Add examples for source code generation of multiple - schemata with Maven -#955 - Generate a reference to every type in a new UDTs.java - class -#957 - Add R Factory.newRecord(UDT) for constructing - attached UDTRecords -#958 - CODEGEN: Add generation-time schema mapping, allowing for - re-writing schemata in jooq-codegen -#960 - CODEGEN: Add code generation configuration parameter to - avoid using the new UByte, UShort, UInteger, ULong wrappers - for UNSIGNED number types -#961 - Use Oracle's SYS.ALL_SEQUENCES.MAX_VALUE to determine the - type of a sequence. -#969 - Add List ResultQuery.fetch(Field, - Class) convenience method - -Bug fixes ---------- -#686 - Reduce the internal API leak by preventing access to - TableFieldImpl, UDTFieldImpl, ParameterImpl -#903 - lag(Field, int, T) erroneously delegates to lead() -#906 - Add more NullPointerException safety to API -#913 - NoClassDefFoundError in JooqUtil.isJPAAvailable() -#920 - Generic type is lost in Cursor.fetchInto(RecordHandler) -#925 - SelectConditionStep should extend SelectConnectByStep, not - SelectGroupByStep -#926 - AbstractRecord.into() fails to convert java.sql.Date into - java.util.Date -#934 - Don't consider static members in reflection utilities when - used with Record.into(Class) and similar methods -#935 - Don't consider final member fields in reflection utilities - when used with Record.into(Class) and similar methods -#937 - In the event of name clash (same name for table and field) - generated code has errors -#945 - Calling UpdatableRecord.setValue() twice with the same - argument causes the changed flag to be reset to false -#948 - Always set the changed flag to true in Record.setValue() -#959 - Compilation errors in generated source code if MySQL enum - values match Java reserved words, such as 'true', 'false', - 'new', etc... -#962 - Postgres ordering of generated enum literals is unstable -#967 - Better document type conversion - -Version 1.7.0 - November 25, 2011 -================================================================================ -This is a maintenance release for the 1.x branch. Some important -bug fixes are merged from version 2.0. These include: - -Bug fixes ---------- -#925 - SelectConditionStep should extend SelectConnectByStep, not - SelectGroupByStep -#926 - AbstractRecord.into() fails to convert java.sql.Date into - java.util.Date -#937 - In the event of name clash (same name for table and field) - generated code has errors -#945 - Calling UpdatableRecord.setValue() twice with the same - argument causes the changed flag to be reset to false -#948 - Always set the changed flag to true in Record.setValue() -#951 - Empty Password for jooq-codegen-maven causes NPE - -Version 1.6.9 - November 7, 2011 -================================================================================ -This is a maintenance release for the 1.x branch. Developments -on this branch will stop after version 1.6.9. Only important bug -fixes are merged to this branch. Developments for release 2.0 -have started. - -The most important functionality in release 1.6.9 is the newly -added support for JDBC batch operations. You can now batch -execute several queries. - -See the official blog for more information: -http://blog.jooq.org/2011/10/25/jdbc-batch-operations-with-jooq/ - -Features and improvements -------------------------- -#621 - Add support for JDBC batch operations -#794 - Add support for ORDER BY [int value] in order to reference - a column index for sorting -#882 - Optimise Field.isTrue() and isFalse(). Take Field's data - type into consideration. -#885 - Add support for INSERT INTO .. VALUES (..) syntax, - omitting explicit field declarations -#887 - Add List Cursor.fetchInto(Class) - -Bug fixes ---------- -#748 - H2 regression in 1.3.158 regarding stored functions, which - return a ResultSet (this was fixed in H2) -#859 - Derby casting of numeric types to BOOLEAN doesn't work -#886 - Regression in date extract function when used in a - subselect -#888 - Derby casting of VARCHAR to FLOAT (and similar) doesn't - work - -Version 1.6.8 - October 22, 2011 -================================================================================ -The main improvement of this release is the re-design of the -stored procedure / function API. With 12 supported RDBMS, which -all have their own idea about what is a stored procedure and what -is a stored function, it has proven to be a better design, to -unite them in one single type: org.jooq.Routine. A routine can -have a return value as well as OUT parameters. It can be embedded -in SQL and used as a field or a table. - -This means, you will need to re-generate your database schema, -when upgrading to jOOQ 1.6.8. After re-generation, you'll need to -fix your client code. These are the package changes: - -- [generated.package].procedures > [generated.package].routines -- [generated.package].functions > [generated.package].routines -- [generated.package].Procedures > [generated.package].Routines -- [generated.package].Functions > [generated.package].Routines - -Oracle generated packages are not re-located. With these -improvements, using stored procedures and functions becomes even -more reliable, especially when cursor types are involved. Read -more about the rationale behind this change: - -http://blog.jooq.org/2011/10/17/what-are-procedures-and-functions-after-all/ - -Apart from that, important improvements have been made in the -area of plain SQL tables. Also, consider a demo integration of -jOOQ with Google Cloud SQL: - -http://blog.jooq.org/2011/10/22/jooq-and-google-cloud-sql-example/ - -Features and improvements -------------------------- -#271 - Don't pre-fetch table meta data when selecting from plain - SQL tables -#489 - Add support for SELECT * (i.e. render SELECT * where - applicable) -#596 - Add support for VARIANCE() and STDDEV() OVER() window - functions -#608 - Add jOOQ version number in generated source code -#670 - Add more Javadoc to Field.xxx() functions -#692 - Add support for ResultSet type returned from HSQLDB - stored functions -#850 - Use http://www.jooq.org as URL for the @Generated - annotation -#854 - Add convenience methods Fields.isTrue(), isFalse() for - conversion of "Y", "YES", "1", "true", "on", etc into a - boolean condition -#870 - Add support for MEDIAN aggregate function -#872 - Add support for STDDEV_POP(), STDDEV_SAMP(), VAR_POP(), - VAR_SAMP() aggregate functions -#874 - Reduce the number of internal classes for dialect-specific - function aliases -#878 - Implement DataType.equals() and hashCode() - -API changes (backwards-compatible) ----------------------------------- -#851 - Change Field.{sortAsc|sortDesc}(List sortList) into - Field.{sortAsc|sortDesc}(Collection sortList) - -API changes (backwards-incompatible) ------------------------------------- -#848 - Purge deprecated API - Prior to 1.6.1 -#849 - Replace Cursor.fetchResult() by Cursor.fetch() -#852 - Review stored procedures / functions concept. Merge them - all into a single "Routine" type - -Bug fixes ---------- -#756 - Error when aliasing HSQLDB and Postgres unnested tables -#761 - Exception when TRACE logging execution with plain SQL - tables involved -#773 - Execute standalone stored functions as CallableStatement - to prevent issues with transactions -#847 - Query.getSQL() doesn't render dialect-specific SQL when - Query is constructed using the fluent API -#853 - DB2 generated convenience methods for stored functions - have unstable ordering -#857 - Derby casting of numeric types to String / VARCHAR does - not work -#858 - SQLDataType.getSQLDataType() should return itself, instead - of null -#860 - SQLite CEIL function is incorrectly simulated. CEIL(2.0) - returns 3.0 instead of 2.0 -#861 - Field.replace(String) generates bad SQL for various RDBMS. - Field.replace(String, String) works, though -#863 - Ingres integration generates illegal SQL when selecting - things like SELECT 1 WHERE 1 = 1 -#866 - Sybase ASE Field.replace(String) function incorrectly - removes the argument string -#873 - Error when selecting two times the same aggregate field -#877 - Compilation error in generated source code when a table - without a primary key has an identity column -#879 - Add Google Cloud SQL Example -#880 - Query.getSQL() does not consider SchemaMapping - -Test cases ----------- -#811 - Loader integration tests fail for SQLite -#812 - CSV Loader test leaves Postgres JDBC connection in an - inconsistent transactional state on error -#856 - Add integration tests for Field.abs() -#865 - Add integration tests for Field.ascii() -#867 - Add integration tests for Field.sum(), avg(), max(), min() -#881 - Re-design H2 stored functions to be pre-compiled, in order - to speed up integration tests - -Version 1.6.7 - September 25, 2011 -================================================================================ - -This release coincides with the launch of the new website at -http://www.jooq.org. Hence, it ships with little additions to the -deliverable itself. - -Apart from new convenience methods, the main addition is a Maven -plugin for jooq-codegen contributed by Sander Plas. - -Features and improvements -------------------------- -#797 - Create Maven plugin for source code generation -#825 - Add List> Factory.fetchMany(String) to - allow for fetching several result sets from stored - procedures, such as Sybase ASE's "sp_help" -#838 - Implement MetaDataFieldProvider.toString() -#841 - Add List Result.getValues(Field, Class) -#842 - Add Query.getBindValues() method to allow for extracting - bind values in the correct order -#843 - Add Factory.fetch(ResultSet) to transform a JDBC ResultSet - into a jOOQ Result - -API changes (backwards-compatible) ----------------------------------- -#837 - Avoid final keyword on Object methods, such as .equals(), - .hashCode(), etc - -Bug fixes ---------- -#836 - Bad syntax when selecting from aliased plain SQL tables -#839 - Boolean conversion in getValueAsBoolean() should trim - String values first -#840 - Numeric conversions in getValueAsXXX() should trim String - values first -#844 - NullPointerException when selecting a column from a Result, - that does not exist - -Version 1.6.6 - September 11, 2011 -================================================================================ - -Finally, support for another RDBMS has been added. Sybase's other -important product Sybase Adaptive Server Enterprise (or simply -Sybase ASE) is now officially supported by jOOQ - -Apart from this, there had been important improvements with the -recently added INSERT .. RETURNING clause, as well as some fixes -related to DECIMAL / NUMERIC data types - -Features and improvements -------------------------- -#796 - Complete missing public org.jooq.impl Javadoc -#800 - Add support for Sybase Adaptive Server Enterprise -#808 - Add support for INSERT .. RETURNING for Ingres -#809 - Add support for INSERT .. RETURNING for Sybase SQL - Anywhere using SELECT @@identity -#810 - Add support for INSERT .. RETURNING for SQLite using - last_inserted_rowid() -#813 - Add DSL support for INSERT .. RETURNING -#814 - Change TableRecord to reload its trigger-initialised main - key in Oracle and other RDBMS that don't support IDENTITY - columns -#818 - Add SQLiteFactory.rowid() -#819 - Support SQLite AUTOINCREMENT columns as IDENTITY -#820 - Add Factory.fetchOne(String) for executing plain SQL - queries that return single records -#826 - Allow for returning several records in the INSERT .. - RETURNING clause. This now works for DB2, HSQLDB, MySQL, - and Postgres -#827 - Support Sybase SQL Anywhere's TOP n START AT m clause - instead of simulating it with nested SELECT's - -API changes (previous API now deprecated) ------------------------------------------ -#817 - Deprecate Factory.lastID(Identity) - -Bug fixes ---------- -#815 - SQL Server fetching of IDENTITY value is broken -#821 - Optimise ResultQuery.fetchAny() executing fetchLazy() - internally, and only fetching one record from the cursor -#822 - Let Constant cast to more precise NUMERIC/DECIMAL types - in those RDBMS where casting is necessary -#823 - Cannot bind SQLite BigDecimal, BigInteger types - bind - them as String instead -#824 - BigInteger values cannot be bound in DB2, Derby -#828 - Document inefficient implementation for GREATEST and LEAST - in some RDBMS - -Version 1.6.5 - August 28, 2011 -================================================================================ - -This release finally adds a loader for CSV data to jOOQ. You can -now load CSV data using a simple fluent API, configuring error -handling, duplicate behaviour and transaction handling, as well -as various CSV parameters. - -This release also changes the way generated keys are retrieved -after INSERT's. Instead of (potentially inconsistently) running -SELECT MAX(pk) immediately after the INSERT, Postgres' INSERT.. -RETURNING clause is used (or simulated), in a single statement. - -Features and improvements -------------------------- -#784 - Add Result.exportXML() to retrieve a DOM document similar - to that of .formatXML() -#792 - Add support for loading of CSV data into tables -#795 - Add List fetch(int, Class) and - fetch(String, Class) convenience methods -#803 - Add support for INSERT .. RETURNING or simulate it where - not available -#805 - Add T[] fetchArray(int, Class) and - fetchArray(String, Class) convenience methods -#806 - Add T fetchOne(int, Class) and - fetchOne(String, Class) convenience methods - -Bug fixes ---------- -#798 - Oracle IN (...) clause with more than 1000 arguments does - not work -#802 - Use "INSERT .. RETURNING" instead of "SELECT MAX(pk)" - to retrieve the primary key of a new record - -Version 1.6.4 - August 07, 2011 -================================================================================ - -This release ships with a couple of useful concepts inspired by -other frameworks. These are: - -- selecting into custom POJO's. Results can be mapped to POJO's - by convention or using JPA @Column annotations -- selecting into custom callbacks. This is already a wide-spread - practice in Spring JdbcTemplates. -- selecting long-running queries asynchronously. This idea has - been inspired by the Avaje Ebean framework - -Apart from these changes and some bugfixes, the internal API has -been completely re-designed. The idea here is that query -rendering and variable binding are even faster (less String -objects), more extensible and more accurate. This is a pre- -requisite for many future developments with even more complex SQL -statements, such as for instance CTE's (Common Table Expressions) - -Features and improvements -------------------------- -#137 - Add support for asynchronous query execution using - FutureResult ResultQuery.fetchLater() similar to - Avaje Ebean -#198 - Add SELECT INTO functionality into POJO's using - T ResultQuery.fetchInto(Class) similar to JPA - CriteriaQuery -#728 - Add .fetchInto(RecordHandler) to ResultQuery, Result, - and Cursor to allow for callbacks similar to Spring's - JdbcTemplate/Ollin Framework -#774 - Add more TRACE logging to .fetchLazy() -#777 - CURSOR: Add function alias: UNNEST for TABLE -#781 - Add E function (Euler number) -#782 - Add T Record.getValue(..., Class) methods - for convenient type conversion -#785 - Allow for storing TableRecord with a provided Field[] - indicating the primary key -#786 - Document thread-safety facts in Factory Javadoc -#788 - Add Key.getFieldsArray() convenience method -#793 - Add support for Oracle's SYS_CONNECT_BY_PATH function - -API changes (backwards-incompatible) ------------------------------------- -#758 - Change internal QueryPart rendering and binding API to use - Configuration and Context as callback parameters. If you - use CustomField or CustomCondition, please correct your - implementations accordingly. Other parts of the API should - not be affected -#778 - Purge deprecated API, deprecation prior to jOOQ 1.5.7 -#790 - Purge deprecated generated code, deprecation prior to - jOOQ 1.5.7 - -API changes (previous API now deprecated) ------------------------------------------ -#776 - Deprecate QueryPart.getSQL(), add Query.getSQL() -#789 - Deprecate Record constructors with Configuration - parameter - -Test cases ----------- -#636 - Add integration tests for more advanced CONNECT BY - example -#772 - Add integration tests for selecting cartesian products - (several tables in FROM clause) - -Bug fixes ---------- -#730 - Sybase cannot bind null values in plain SQL -#759 - Omit the TOP 100 PERCENT clause in SQL Server ordered - top-level queries -#767 - An empty Java package is generated for PL/SQL packages - containing underscores -#771 - Some exotic literals are not properly escaped with quotes - yet, e.g. UDT identifiers, VARRAY types, etc. -#775 - Automatic re-attaching after deserialisation does not work - when used with .fetchLazy() -#787 - The UpdatableRecord's internal changed flags are not - updated after INSERTs / UPDATEs - -Version 1.6.3 - July 31, 2011 -================================================================================ - -This is mainly a maintenance release with lots of bugfixes, -mostly around code generation, plain SQL tables, and data types. -Please note that generated source code may contain incompatible -changes due to #639 (see below for details)! - -Apart from that, project CURSOR is advancing and it is now -possible to unnest arrays into tables. See this article for -details about where jOOQ is heading with project CURSOR: - -http://blog.jooq.org/2011/07/24/the-power-of-ref-cursor-types/ - -Features and improvements -------------------------- -#679 - Improve H2 NVL2 support as of H2 1.3.156 -#680 - Improve H2 ROUND support as of H2 1.3.156 -#735 - Add README documentation to GitHub -#736 - Add more info regarding number of generated artefacts in - jooq-codegen logging -#750 - Add DataType.isNumeric(), .isString(), .isTemporal(), - .isBinary() -#754 - Log query as executed by JDBC PreparedStatement when - TRACE logging (without inlining variables) -#752 - CURSOR: Add support for selecting from ARRAY types -#762 - Use H2's native support of NVL, instead of COALESCE -#764 - CURSOR: Add support for selecting from ARRAY types - returned from stored functions - -API changes (backwards-incompatible) ------------------------------------- -#639 - Map DECIMAL(n, 0) and NUMBER/NUMERIC(n, 0) data types - to Byte/Short/Integer/Long/BigInteger instead of - BigDecimal in generated source code. Re-generated code - will not be compatible! - -API changes (previous API now deprecated) ------------------------------------------ -#731 - Inconsistent API with Field.lessOrEqualToXXX(). Removed - "To" from method name -#757 - Deprecate Factory.constant() methods - -Test cases ----------- -#731 - Add missing integration tests for equalAll(), equalSome() - and similar methods -#747 - Upgrade H2 to 1.3.158 - -Bug fixes ---------- -#632 - Sybase error : column @p0 not found in nested SELECT -#700 - Restore HSQLDB ARRAY support with INFORMATION_SCHEMA - change in HSQLDB 2.2.3, and some fixes in 2.2.5 -#725 - Cannot insert byte[] data with plain SQL -#733 - H2 changed JDBC type for ResultSet/CURSOR from 0 to -10, - like Oracle -#737 - Compilation errors in generated source code if table - fields contain spaces -#738 - Compilation errors in generated source code if MySQL - procedure parameter type contains two comma-separated - arguments (like DECIMAL(10,2)) -#739 - Postgres navigator methods and keys are not re-generated - in the same order -#740 - Formatting is broken on Result.format() with some special - newline characters -#743 - Make SQL Server INFORMATION_SCHEMA independent from - HSQLDB again, to prevent incompatibility issues -#744 - Ingres REAL and FLOAT4 types are generated as FLOAT/FLOAT8 - which maps to java.lang.Double, instead of java.lang.Float -#753 - Postgres error when binding array that contains null - values -#755 - NullPointerException when converting an array containing - a null value -#766 - Bad decoding of JDBC Types BIGINT (to BigInteger instead - of Long) and REAL (to BigDecimal instead of Float) when - plain SQL tables are involved - -Version 1.6.2 - July 10, 2011 -================================================================================ - -This release mainly introduces three new projects. - -Project CURSOR where jOOQ finally supports various RDBMS's TABLE, -CURSOR, and REF CURSOR data types. This is especially useful when -those types are returned from stored procedures and functions. -Cursors are simply mapped to jOOQ Result types and can -thus be used like regular table results - -Project EXPORT aims at exporting data from the database in -various serialisable formats, such as XML, CSV, HTML, Text, JSON. -This project will be continued in the future, to also -deserialise from (some of) these data streams. This will allow -for easy transport of jOOQ Result types over the net. - -Project CODEGEN has finally been started. Many improvements -suggested by jOOQ users will be implemented in the next releases. -In this release, important fixes have been made to prevent -compilation errors in generated artefacts. - -Features and improvements -------------------------- -#61 - EXPORT: Add Result.formatXML() -#166 - CURSOR: Add support for ResultSet type returned from - Oracle stored procedures / functions -#411 - Allow for fetching Map (instead of Record) - and List> (instead of Result) -#549 - Add Factory.function() for plain SQL functions -#611 - Simulate RPAD and LPAD in SQL Server, Sybase -#627 - Add support for Postgres FOR UPDATE OF [table-name] clause -#628 - Add support for REPEAT (SQL Server: REPLICATE) function -#637 - Nicely format time in StopWatch logging output -#640 - Simulate Postgres FOR UPDATE OF [table-name] clause in - other dialects -#649 - CURSOR: Add Cursor.fetch(int) .fetchOne() - .fetchResult(int) .fetchResult() -#653 - Add support for MySQL encryption and compression functions -#660 - Clarify Javadoc of UpdatableRecord to explain its - behaviour when changing the main unique key -#669 - EXPORT: Add Result.formatHTML() -#672 - Add convenience method UpdatableRecord.copy() in order to - reset primary key values for a subsequent INSERT -#675 - EXPORT: Add Result.formatCSV() -#683 - Implement ResultImpl.equals() and .hashCode() -#684 - Implement AbstractStore.equals() and .hashCode() -#685 - Add Store.size() to indicate the maximum index of the - Store -#687 - EXPORT: Add result.formatJSON() -#689 - Create separate builds: jooq-core.zip and - jooq-with-dependencies.zip -#690 - CURSOR: Add support for ResultSet type returned from H2 - stored functions -#695 - CURSOR: Add support for ResultSet type returned from - Postgres stored functions -#697 - Add Factory.fetch(String) for executing plain SQL queries - that return results -#701 - Add ResultQuery.fetchArray() and .fetchOneArray to return - Object[][] and Object[] -#704 - Always add top and bottom line in Result.format() -#705 - Right-align numeric values in Result.format() -#716 - Add SUBSTRING function Field.substring(Field, Field) - taking fields as arguments -#719 - Document risk of SQL injection in plain SQL and literal - factory methods -#726 - Add LENGTH function as a synonym for CHAR_LENGTH - -API changes (backwards-compatible) ----------------------------------- -#698 - Inconsistent API with Factory.fetch(Table [,Condition]) - Let method return Result instead of List -#699 - Let Result extend List - -API changes (previous API now deprecated) ------------------------------------------ -#656 - Decrease verbosity of plain SQL methods. They will just be - called Factory.field() .condition() .table() .query() - -Test cases ----------- -#643 - Add integration test for code generation of invalid and - incomplete types in Oracle -#654 - Add integration tests for master data tables with PK types - other than NUMBER/INT -#655 - Add missing integration tests for TRIM function - -Bug fixes ---------- -#450 - Improve plain SQL integrity checks for bind variables -#610 - CODEGEN: Compilation error in generated source code for - databases with table named 'system' -#646 - An empty Java package is generated for an empty PL/SQL - package. This is unnecessary -#651 - CODEGEN: Avoid importing datatypes in generated source - code to prevent collisions -#657 - NullPointerException when creating a Factory with a null - SchemaMapping -#658 - Master data table code generation is broken for tables - with more or less than 3 columns -#662 - Add support for the missing Postgres data type "bpchar" -#663 - Add support for the missing Sybase data type "int" -#664 - Ingres INTEGER data types are not correctly generated -#665 - HSQLDB Datatype CLOB and BLOB are not supported, when - selecting from plain SQL tables -#666 - The evil bug: Ingres TRIM function only executes RTRIM -#673 - UpdatableRecord.store() doesn't work if called after - .delete() -#702 - Add support for the missing SQLite data type "NULL" -#706 - CURSOR: Ensure that Query.execute() runs in a single - transaction when Postgres refcursor is involved in the - query (this fixes a Postgres JDBC driver flaw) -#724 - NullPointerException when passing a single literal null - bind value to plain SQL methods without casting to Object -#729 - DB2, Derby, Ingres, Oracle cannot bind null values in - plain SQL - -Version 1.6.1 - June 19, 2011 -================================================================================ - -In this release, the PORTABILITY project has been implemented. -Finally, the SQLDialect has been removed from most generated -artefacts (Schema, Table, Field, Sequence, etc). Also, the -constructing Factory is not referenced by its created QueryParts -anymore, unless this is really necessary (Query objects, UDT's, -ARRAY types). This leads to higher compatibility between schemata -of different databases, e.g. if users want to use an HSQLDB -development and Oracle productive database. - -Unfortunately, this means that the way stored procedures are -called had to be changed. This is an API break that could not be -avoided. The pre-1.6.1 StoredObject.execute(Connection) method -is deprecated and will be removed in the future. It has been -replaced by StoredObject.execute(Configuration) - -In addition to this project, many more window functions are now -supported, as well as the Oracle-specific CONNECT BY clause for -recursive queries. - -Features --------- -#351 - Add support for Oracle ROWID data type -#452 - PORTABILITY: Create a super-set of RDBMS data types -#453 - PORTABILITY: Don't create dialect-specific QueryParts -#455 - Add support for the Oracle CONNECT BY clause -#587 - Add optional OFFSET clause to form LIMIT .. OFFSET - constructs -#589 - Add extended FOR UDPATE [OF ...] [{WAIT n | NOWAIT | SKIP - LOCKED }] support -#591 - Add support for LEAD() OVER() and LAG() OVER() window - functions -#592 - Add support for the CUME_DIST() OVER() window function -#601 - Add Factory.literal() convenience methods -#602 - Add Factory.val() methods to decrease .constant() - verbosity -#604 - Add support for RESPECT NULLS clause in some window - functions -#605 - Add Factory.use(String) for non-generated schemata -#613 - Add PI function -#616 - Add Factory.two() literal convenience method -#630 - Add support for Oracle CONNECT BY pseudo-columns LEVEL, - CONNECT_BY_ISCYCLE, CONNECT_BY_ISLEAF - -API changes ------------ -#299 - PORTABILITY: Create a dialect-independent meta-model -#588 - Add OVER() keyword to FIRST_VALUE() and LAST_VALUE() API - -Test cases ----------- -#368 - Add integration test for use with schema mapping -#586 - Upgrade H2 to 1.3.155 -#607 - Add integration tests for CRUD / SP's / UDT's / ARRAY's - with SchemaMapping -#612 - Add integration tests for LPAD and RPAD functions -#624 - Add integration test for code generation of invalid/ - incomplete views in Oracle -#631 - PORTABILITY: Add integration tests for using Oracle- - generated schema against an HSQLDB database -#638 - Add missing integration test for DECIMAL data type - -Bugfixes --------- -#176 - Stored procedures / functions in EQUIVALENT schemata - cannot be called -#493 - Bind variable mismatch when constructing bad SQL -#594 - Confusing Javadoc in SELECT DSL API -#603 - Fix DB2 'IGNORE NULLS' clause -#619 - SUBSTRING() function is broken in DB2, Ingres, SQL Server -#623 - SQL syntax error for some MERGE queries in SQL Server and - Sybase -#633 - SchemaMapping is not applied to sequences -#634 - Sequences are not escaped in generated SQL - -Version 1.6.0 - June 05, 2011 -================================================================================ - -Apart from supporting various additional standard and non- -standard JOIN constructs, there is now also full support for the -SQL standard MERGE statement and MySQL's ON DUPLICATE KEY variant -thereof. A great number of API enhancements have been added, -which improve the usability of jOOQ. The Ingres database is now -also supported. - -Features --------- -#301 - Add support for Oracle execution hints -#409 - Add support for NATURAL JOIN syntax, where RDBMS allows it -#415 - Make fluent API's underlying SelectQuery objects publicly - available -#429 - Add Ingres support -#475 - Document class-level generic types and in Javadoc -#486 - Add support for SQL MERGE clause -#494 - Allow for omitting schema name in generated SQL -#496 - Automatically update IDENTITY values in UpdatableRecord, - after storing them -#520 - Add support for JOIN ... USING syntax -#524 - Upgrade HSQLDB to 2.2 -#533 - Add ORDER BY [Map] or BY [List] functionality -#534 - Add Result.isEmpty() -#535 - Call upon ConfigurationRegistry.provideFor() before - throwing a DetachedException -#536 - Simulate CASE [value] WHEN [value] THEN [result] END - syntax in Derby -#538 - Add some logging to ConfigurationProvider -#539 - Add possibility to negate numeric values with Field.neg() -#541 - Add support for MySQL ON DUPLICATE KEY clause -#542 - Allow for Collection arguments in INSERT's DSL API -#543 - Allow for creating FUNCTION() OVER() without PARTITION BY - or ORDER BY clause -#546 - Add Factory.use(Schema) -#548 - Add new internal type FieldMap -#550 - Simulate ON DUPLICATE KEY INSERT clause in dialects other - than MySQL -#551 - Add TableMapping, similar to SchemaMapping for mapping - tables -#553 - Add Factory.plainSQLQuery -#554 - Add Factory.plainSQLField with a DataType parameter -#555 - Add UpdateXXX.set(Map) convenience methods to DSL API -#557 - Enhance INSERT DSL API to allow for adding VALUES clause - with InsertXXX.set() syntax -#570 - Add support for the RAND() function -#567 - Add support for Ingres Sequences -#572 - Add support for the ATAN2() function -#573 - Add possibility for additional select() clauses for - convenience -#575 - Add support for the FULL OUTER JOIN syntax, where RDBMS - supports it -#576 - Add support for the CROSS JOIN syntax, where RDBMS - supports it -#581 - Enhance API and allow Collection> - instead of Collection> - -API changes ------------ -#397 - Purge deprecated API - -Bugfixes --------- -#481 - Handle case where an empty record is stored -#522 - Misleading Javadoc in generated stored procedures and - function constructors -#532 - Restore Postgres INFORMATION_SCHEMA -#537 - Prevent null from being added to QueryPartList -#540 - Error when TRACE logging Limit -#544 - Aliased elements are not bound correctly when rendered - with toSQLReference() -#559 - Loosen type safety on overloaded methods to prevent - compilation errors with javac/Netbeans -#560 - HSQLDB DataType REAL is configured incorrectly -#565 - Add integration tests for current_user() function -#569 - ORA-01427 when generating foreign key relations -#571 - Field.trim() not correctly implemented for SQL Server -#583 - Accelerate integration tests: Reset schema only if - necessary - -Version 1.5.9 - May 15, 2011 -================================================================================ - -This version ships with lots of new functionality. Finally, the -DSL-style API has been extended to CRUD operations (INSERT, -UPDATE, DELETE)! Also, support for the TRUNCATE TABLE statement -has been added. - -The most important new features include the support for SQL:2003 -standard window functions, which are available in most major -RDBMS. Additionally, basic function support has been widely -extended. - -Features --------- -#148 - Added support for window functions -#204 - Add support for multi-record INSERT's -#416 - Added support for retrieval of IDENTITY values -#433 - Use bind variables for LIMIT and OFFSET -#441 - Added foreign key relationship meta information to the - generated source code -#446 - Beautify ResultImpl.toString() method -#461 - Automatically cast CONCAT parameters to Field if - necessary -#463 - Added support for trigonometric functions -#471 - Added support for the sign function -#472 - Added support for GREATEST/LEAST functions -#474 - Added support for "hyperbolic" functions SINH, COSH, TANH, - and COTH -#482 - Added DSL API for INSERT statements -#483 - Added DSL API for UPDATE statements -#484 - Added DSL API for DELETE statements -#485 - Added "Registry" for client code to provide Configurations - to jOOQ Attachables -#490 - Added support for the TRUNCATE TABLE statement -#495 - Generate source code for IDENTITY columns -#501 - Added support for boolean conversion to Result, Record, - and Store -#503 - Allow for schema navigation via generated artefacts -#518 - Let stored procedures reference owner package - if applicable -#525 - Added NULLS {FIRST | LAST} clause to ORDER BY constructs -#528 - Added Factory.getDataType() convenience method -#530 - Added Factory.zero() and Factory.one() convenience methods - -API changes (jooq) ------------------- -#527 - Weakened type-safety on Field.nvl2() -#529 - Deprecated Factory.select(Object...), added .selectOne() - and .selectZero() instead - -API changes (jooq-meta) ------------------------ -#30 - Add ParameterDefinition for stored procedures, instead of - reusing ColumnDefinition -#499 - Add reference to TableDefinition in ColumnDefinition -#500 - Add AttributeDefinition for UDTDefinition, instead of - reusing ColumnDefinition - -Bug fixes ---------- -#369 - Adapt H2 relations generation to H2's correction of - information_schema.cross_references -#435 - Added integration tests for NESTED SELECTs holding LIMIT - clauses -#460 - Syntax error when using a field with a reserved name -#462 - Fixed Javadoc broken links -#473 - Don't cast when cast is unnecessary -#479 - INSERT statement should not set all fields for a table -#497 - Derby referential code generation is broken, for named - foreign keys -#498 - Oracle package content is generated in arbitrary order -#502 - Syntax error when creating an empty IN condition -#526 - Corrected Javadoc in Field.coalesce() - -Version 1.5.8 - April 29, 2011 -================================================================================ - -Finally, jOOQ now supports two important new RDBMS: -SQL Server and Sybase! - -Apart from this great enhancement, there is now also full support -for the non-SQL standard LIMIT clause, even in dialects where the -LIMIT clause is not supported natively (especially Oracle, but -also DB2, SQL Server and Sybase, which have limitations). jOOQ -simulates LIMITs by rendering nested selects filtering on ROWNUM -(Oracle) or on ROW_NUMBER() (DB2, SQL Server and Sybase). - -Other interesting additions are an increasing support for native -mathematical functions. More function support will be added in -future versions. - -Features --------- -#16 - Added support for SQL Server -#21 - Uniform implementation of the LIMIT clause. Implemented - LIMIT clause simulation through analytic functions, where - LIMIT is not supported natively -#97 - Added support for Sybase -#418 - Measure time of various steps in source code generation -#420 - Added support for proprietary SQL extensions "FOR UPDATE" - and "FOR SHARE" -#431 - Added additional statistics to generation log files -#432 - Unified the various "standard" ANSI INFORMATION_SCHEMA - implementations in the jooq-meta artefact -#436 - Added support for the modulo function -#438 - Added floor and ceil functions -#439 - Added support for mathematical functions (logarithms, - exponentials, sqrt) -#447 - Enhanced Field.add() and Field.subtract() to work for date - time fields, also - - -API changes ------------ -#428 - Created new Maven artefact jooq-meta to cleanly separate - database meta-data navigation from code generation -#458 - Decreased DSL verbosity for arithmetic operations and for - ordering - -Bug fixes ---------- -#417 - Restored warning when unknown column type is encountered - in source code generation -#419 - Corrected misleading Select.fetchOne(...) Javadoc -#421 - Optimised AbstractRecord's memory consumption -#448 - Corrected some Javadoc @see links -#449 - Changed Field.concatenate() to accept Field parameters - to avoid generic varargs warnings - -Version 1.5.7 - April 17, 2011 -================================================================================ - -This is the first release built with support of Maven thanks to -the help of some jOOQ users! - -The main new features in this release are the improved support -for serialisation/deserialisation of jOOQ objects through use of -the newly introduced "Attachable" interface. - -If using log4j or the newly supported slf4j logging framework -in debug/trace mode, there is the possibility to log query -building/execution time statistics. - -Apart from these new features, fixes were mainly done in the -fields of type casting, HSQLDB 2.1 upgrade support, stored -procedures with OUT, IN/OUT parameters. Please upgrade, if you -are using any of those features. - -If you extend jOOQ as a base implementation for source code -generation, be aware of the fact, that the jOOQ-codegen is -currently undergoing major changes. Expect the code generation -API to stabilise again in one of the next releases. - -Features --------- -#104 - Added maven dependency -#248 - Integrate UDT types with ARRAYs -#295 - Allow for attaching/detaching UpdatableRecords to/from - Configurations -#359 - Added statistics measurement to Query execution for debug - log level -#362 - Added deprecation configuration flag -#364 - Document unknown type in generated source code -#373 - Improve exception handling in code generation -#378 - Added support for Oracle stored functions with OUT - parameters -#382 - Added Factory.attach() methods to re-attach deserialised - Attachables -#394 - Add logging support for SLF4J -#398 - Allow to provide a DataType in Factory.constant() -#399 - Provide access to TypeUtils.convert() methods via DataType -#404 - Added trace logging for measuring the speed of various - query execution steps - -API changes ------------ -#358 - Enhanced DSL API to allow for HAVING clauses without - GROUP BY clauses -#367 - Make Store, Result, QueryPart "Attachable" -#374 - Introduce strategy pattern to code generation for future - support for advanced naming schemes -#375 - Decouple Database from Generator -#381 - Made DataType Serializable -#384 - Deprecated singleton QueryParts -#388 - Unify "internal" API using an Adapter pattern - -Bug fixes ---------- -#187 - Protect generated Record navigation methods against name - clashes -#266 - Added more thorough integration tests for dialect-specific - casting (including some fixes related to varchar types) -#360 - Added more integration tests for the DISTINCT clause -#361 - Add more checks in testInsertUpdateDelete() -#366 - Warn only once per ColumnDefinition, if a data type is - unknown -#377 - NullPointerException when generating invalid stored - function -#380 - Added integration tests to check for proper - serialisability -#386 - Fixed incompatibilities with HSQLDB 2.1.0 -#387 - Fixed unnecessary imports in some Oracle generated - Records -#389 - Fixed javac compiler warning in AbstractStoredObject -#391 - Cannot properly call stored procedures when IN/OUT - parameter is bound to NULL -#392 - Procedures with several OUT parameters may not register - OUT parameters correctly -#410 - Passing null VARRAY values to Oracle stored procedures - causes issues -#412 - limit(int) sets default offset incorrectly in some - dialects - -Version 1.5.6 - March 31, 2011 -================================================================================ - -This release consists mainly of code generation bug fixes and -minor API improvements and enhancements. - -The most important improvement is ticket #90, by which lazy -fetching and iteration over data is now supported. jOOQ lets you -keep a reference to a Cursor that has an open JDBC ResultSet, to -fetch data from on-the-fly. - -A few major code generation bugs were reported where the -generated code may cause ambiguity due to an inconsistent API. -This means that you will have to re-generate your schema after -upgrading to version 1.5.6. Some of your code may not compile -anymore, after this upgrade. - -Features --------- -#90 - Added possibility for lazy fetching of data -#208 - Added convenience methods for direct invocation of - sequences' currval() and nextval() attributes -#212 - Created one factory per dialect for better separation of - dialect-specific support -#213 - Generate a factory for each schema -#251 - Opened up base implementations for Field and Condition - to allow for custom implementations by client code -#274 - Integrate H2 ARRAY types with stored procedures -#292 - Documented usage of log4j and java.util.logging -#306 - Added support for the NULLIF function -#319 - Added Field.between(Field, Field) method -#320 - Added trace logging for variable binding and SQL - generation methods -#323 - Added Field.in(Field...) method -#325 - Include release version number in delivered .jar files -#328 - Improved configuration setup documentation page -#333 - Let Result implement Serializable -#334 - Added fetchMap() convenience methods -#335 - Added more functions and aggregate functions examples to - documentation -#338 - Visually improve code generation logging -#339 - Removed skipping of unreferenced UDT's, ENUM's and ARRAY's -#342 - Improved generated referential code by using fetch() and - fetchOne() API -#356 - Let UpdatableRecord.store() and delete() return an int - to indicate whether the record was actually modified - -API changes ------------ -#233 - Allow for joining TableLike instead of Table -#337 - Added generic type > to - InsertSelectQuery -#341 - Fixed API flaw where SelectOnConditionStep.and() methods - and similar ones returned SelectConditionStep, instead of - SelectOnConditionStep - -Bugfixes --------- -#69 - Corrected referential code generation for foreign keys - that reference non-primary unique keys -#85 - Corrected referential code generation for multi-field - foreign keys -#121 - Covered more Factory.executeXXX() methods with integration - tests -#318 - Fixed NullPointerException when executing SELECT * from - aliased tables -#321 - BetweenCondition does not bind left hand side Field - correctly -#322 - InCondition does not bind left hand side Field correctly -#326 - Avoid method overloading where binding to Object - may lead to compile-time ambiguities (with javac) -#343 - Add more foreign key navigation method integration tests -#347 - Add explicit integration tests for schema artefacts - excluded from code generation -#350 - Disambiguate navigation methods if several foreign keys - reference the same entity -#352 - Disambiguate navigation methods if a table ending on S - references itself -#353 - Added integration test for compilation of generated - artefacts with javac (as opposed to the Eclipse compiler) -#355 - Error when storing an UpdatableRecord that has no changed - values - -Version 1.5.5.2 - March 15, 2011 -================================================================================ - -A critical bug was reported from the 1.5 release stream where -stored functions did not render their parameters in correct order - -Features --------- -#302 - Map Oracle's NUMBER data type to java.lang.Number in - stored procedures, stored functions - -Bugfixes --------- -#317 - StoredFunctionImpl.asField() renders parameters in wrong - order - -Version 1.5.5.1 - March 13, 2011 -================================================================================ - -In version 1.5.5, there was a fatal bug breaking Derby source code generation. -Only the Derby dialect is affected. Please update immediately, if you are using -jOOQ's Derby integration - -Bugfixes --------- -#315 - Generated master data records are not sorted by PK -#316 - Derby code generation fatally broken - -Version 1.5.5 - March 12, 2011 -================================================================================ - -This version is released early as there are some important bugfixes. Additional -improvements include: - -- Improved DSL related to conditions in HAVING and JOIN clauses -- Support for Oracle-style functions, such as NVL, NVL2, COALESCE - DECODE, etc - -Features --------- -#304 - Add support for Oracle NVL function -#305 - Add support for COALESCE function -#308 - Add support for Oracle NVL2 function -#311 - Add support for Oracle DECODE function - -API changes ------------ -#223 - Enhance DSL to accept and(), or() and similar methods in JOIN steps -#224 - Enhance DSL to accept and(), or() and similar methods in HAVING steps - -Bugfixes --------- -#297 - Fixed Factory.concatenate() function -#298 - Added integration tests for nested selects in HAVING clause -#300 - Added integration tests for nested selects in JOIN clause -#303 - Javadoc correction -#307 - Accelerated integration tests -#309 - Fixed JDBC variable binding issue related to Conditions where the lhs is - a function (e.g. stored function) and the rhs is a constant -#310 - Fixed issue where fetchOne() methods throw NullPointerException if no - result record is available -#312 - Fixed issue where Field.equal(...) methods rendered unexpected SQL when - rhs null is cast to a type -#313 - Fixed Derby cast type for VARCHAR -#304 - Let the DerbyDataType default for java.lang.String be VARCHAR, not LONG - VARCHAR - -Version 1.5.4 - March 04, 2011 -================================================================================ - -Feature #243 required a minor API change in the base classes of generated source -code. This means you have to re-generate all your jOOQ artifacts in order to -migrate to 1.5.4. The artifacts themselves should be regenerated in a compatible -way, such that your client code should not be affected. If this is not the case, -please report a ticket here: - - https://sourceforge.net/apps/trac/jooq/newticket - -Apart from the Derby RDMBS and some new data type support, there have been many -new convenience methods added all over the API. For instance, if type-safety is -not really a requirement, there are lots of possibilities to use plain SQL -directly in the DSL. In that case, data can be accessed from Record, Results, -not only through Field, but also through field names or indexes. - -Check out the updated documentation (soon) here: - - https://sourceforge.net/apps/trac/jooq/wiki/Examples - -- Support for the Derby RDBMS -- Support for casting. This allows for even greater flexibility - in cases where jOOQ cannot 100% ensure type-safety -- Support for ARRAY types. Oracle, Postgres, HSQLDB and H2 ARRAY - types are now supported natively as regular bindings in - jOOQ's Field -- Support for dialect-specific data types. CHAR, VARCHAR, CLOB - are no longer treated equally as java.lang.String. Their - type heritage is also generated -- More sequence support -- Lots and lots of bug fixes - -Features --------- -#95 - Support for the Derby RDMBS -#163 - Add support for JDBC type ARRAY (with Postgres) -#209 - Add support for DB2 sequences -#210 - Add support for H2 sequences -#211 - Add support for HSQLDB sequences -#215 - Support for SQL casting using as cast type -#246 - Support for SQL casting using dialect-specific data types -#254 - Add HSQLDB support for ARRAY types -#256 - Add Oracle support for VARRAY types -#257 - Integrate ARRAY types with stored procedures -#261 - Add a global type mapping to the generated Schema object -#267 - Add DataTypeDefinition for further abstraction of data types in code - generation -#269 - Add H2 support for ARRAY types -#290 - If log4j is not on the classpath, use java.util.logging instead, as - fallback - -API Changes ------------ -#156 - Allow for results to be accessed by index, not by field -#218 - Corrected bad method signature: Record.getValueAsLong(Field, Integer) -#219 - Extended Result and Select API's to be more similar to that of Record -#232 - Add more convenience plain SQL support to the API -#235 - Add convenience methods to Record, Result and Select for access of data - via field name -#243 - Refactor DataType implementations in order to allow for the use of - generics -#259 - Add field type to database meta data (ColumnDefinition) -#260 - Add field type to database meta data (Field) -#262 - Add default behaviour for Record.getValue(Field) -#276 - Add Javadoc as a ZIP file to the jOOQ distribution - -Bugfixes --------- -#125 - Add more plain SQL integration tests -#191 - Add more integration tests for nested unions -#205 - Implemented workaround for handling Postgres stored functions with UDT - OUT parameters -#214 - Fixed NPE when generating a stored function with an unknown parameter - type -#216 - Fixed some cases where binding of BigInteger is not done correctly -#220 - Syntax error when using select statement in a CASE clause -#221 - Corrected integration tests for combined update and select statements -#222 - Added integration test for INSERT statements having nested SELECT - statements for their fields -#225 - Correctly cast array types in Postgres -#230 - Potential misuse of Blob and Clob in H2's JDBC types -#239 - Factory.fetchAny() is not implemented for SQLite -#244 - Fixed peculiar MySQL casting support where cast types do not match any - data types -#245 - Fixed NPE when reading null dates in SQLite -#249 - Added ARRAY type integration tests -#255 - Stored procedure bind variables get mixed up when any argument is null -#263 - Correctly handle Postgres function overloading -#264 - Ambiguous funciton calls when calling overloaded functions with null - parameter -#281 - Handle compilation errors when generating stored procedures with > 254 - parameters -#283 - Fixed compilation errors in generated source code for Oracle's UDT table - type -#284 - Fixed compilation errors in generated source code for Oracle procedures - in packages, when they have no parameters -#285 - Fixed compilation errors in generated source code for Oracle tables with - the same name in different schemata -#286 - Fixed name collisions in generated objects with the java.lang.* package -#288 - Prevent the creation of UNION queries with bad syntax in MySQL -#289 - Correctly alias fields within UNION queries for some dialects, which then - only require the "AS" keyword -#291 - Cannot create an aliased field called "year" in Postgres - -Version 1.5.3 - January 13, 2011 -================================================================================ - -- Lots of stored procedure support was implemented -- Support for sequences was added -- The final decision to postpone support for DB2 UDT's was made -- Some code generation bugfixes - -Features --------- -#36 - Added stored procedure / stored function support for HSQLDB -#140 - Added support for Oracle sequences -#147 - Added support for H2 stored functions -#162 - Correctly integrate UDTs with stored procedures -#170 - Added support for Postgres stored functions -#186 - Added support for more Oracle PL/SQL simple data types -#193 - Simulate support for H2 "stored procedures" -#195 - Simulate support for Postgres "stored procedures" -#206 - Added support for Postgres sequences - -API changes ------------ -#180 - Improved DSL for constant values -#181 - Allow for referencing Field in function argument list -#189 - Renamed convenience methods in org.jooq.Record -#207 - Add fetchOne(Field) method to org.jooq.Select API - -Bugfixes --------- -#182 - Protected generated Record classes against clashes with inherited methods -#183 - Fixed NullPointerException, when generating master data tables with - NULL fields -#184 - Fixed IllegalArgumentException, when a data type is present in the - schema, but unavailable in code generation logic -#185 - Code generation should not fail when single elements cannot be generated -#188 - Improved integration tests for stored procedures / functions / packages -#196 - Increase RDMBS version compatibility by avoiding "SELECT *" in code - generation logic -#199 - Added integration tests for stored procedures in RDBMS that do not - support OUT parameters -#201 - Fixed issue in DB2 where stored procedures without parameters were not - generated. -#202 - Added integration tests for stored procedures / functions without - parameters - -Version 1.5.2 - December 27, 2010 -================================================================================ - -- Improved support for stored procedures, also in packages -- A minor API change was inevitable to implement #173. The API change only - concerns the INTERNAL API. Deprecation marks are added and deprecated items - will be removed in 1.6.0 -- Experimental SQLite database support -- Some important bug fixes - -Features --------- -#25 - Added support for Oracle packages -#114 - Added support for Oracle UDTs -#145 - Added support for the SQLite database -#150 - Generate static convenience methods for stored procedures / functions -#151 - Generate static convenience methods for stored function fields -#152 - Generate meaningful serialVersionUID in generated classes -#173 - Added support for EQUIVALENT schemata - -API changes ------------ -#159 - Added convenience method List getValues(Field) to Result -#165 - Added convenience methods for creating EXISTS clauses -#169 - Improved DSL for WHERE clauses - -Bugfixes --------- -#68 - Prevent issues originating from overloaded stored procedure names, - generating identical Java class names -#153 - Fixed issue with generated code for DB2 stored functions -#154 - Fixed issue with generated code for DB2 stored functions -#155 - Fixed issues with database NULL not being mapped correctly to Java NULL - when selecting values that have a primitive type (int, long, etc) -#158 - Potential ClassCastException when using Field -#171 - Corrected issue related to selection of default schema in DB2 -#177 - Fixed issue related to generated code for tables or UDTs without columns - - -Version 1.5.1 - December 13, 2010 -================================================================================ - -- H2 database support thanks to Espen Stromsnes -- Improved stored procedure support - -Features --------- -#96 - Added H2 database support -#101 - Added stored procedure / stored function support for Oracle -#138 - Added stored procedure support for DB2 -#146 - Added support for DB2 functions - -API changes ------------ -#143 - Added convenience methods to Record - -Bugfixes --------- -#84 - Implemented referential code generation for foreign keys that do not - match their primary keys' types -#141 - Encoding problem in generated master data classes - -Version 1.5.0 - November 22, 2010 -================================================================================ - -- A big one. Major API changes / improvements -- Added lots of convenience methods -- UDT support -- Enum support -- DB2 support thanks to Espen Stromsnes -- "Light" dependency to log4j added. jOOQ will still run without it - -Features --------- -#1 - Create support for UDTs (so far only for PostgreSQL) -#15 - Added DB2 support -#60 - Added support for nested selects in INSERT and UPDATE statements -#83 - Added log4j logging to code generation and runtime -#87 - Add support for arithmetic expressions -#105 - Added support for ENUM data types, where applicable (MySQL and PostgreSQL - so far) -#110 - Added execute and fetch convenience methods -#111 - Added missing "select distinct" support -#122 - Annotate generated classes with javax.annotation.Generated -#123 - Generate user enum fields from data values (master data) -#124 - Added PlainSQLTable -#127 - Added not() operator to Condition -#135 - Added convenience methods andNot() and orNot() in Condition - -API changes ------------ -#89 - Removed support for DataSource. jOOQ is not a transaction manager -#92 - Added SortField type to be used for sorting -#99 - Provide better access to functions (No more FunctionFactory) -#116 - Merge Manager functionality into Factory -#118 - Improve API of org.jooq.Field -#119 - Improve subquery condition API -#132 - Reduced much of the select query API -#134 - Better separation of SelectQuery and SimpleSelectQuery - -Bugfixes --------- -#109 - Error when executing select * if generated schema does not match actual - schema -#115 - Fix various "null" pseudo field issues -#126 - Error when selecting a single field from a union nested select -#129 - Fixed performance issue in Oracle code generation for very large - databases - - -Version 1.4.4 - November 22, 2010 -================================================================================ - -Unreleased version, fixes included in 1.5.0 - -Bugfixes --------- - -#133 - JoinCondition does not take comparison operator - -Version 1.4.3 - October 25, 2010 -================================================================================ - -Some more bugfixes - -Bugfixes --------- - -#71 - Generated code does not compile, when foreign key and primary key have a - data type mismatch -#73 - In Oracle generated code, multi-field foreign keys may generated bad - relations code -#82 - Conversion of literals to camelcase fails if numbers are involved - -Version 1.4.2 - October 22, 2010 -================================================================================ - -Various bugfixes and minor improvements - -Features --------- -#66 - Add support for CASE or DECODE expression - -API changes ------------ -#77 - Functions should not extend FieldImpl, but a new AbstractField -#78 - QueryPart pollutes declared method space of its implementations. Hide it - by indirection - -Bugfixes --------- -#64 - Code generation fails when foreign key references a unique key that is not - the primary key. Code generation for these cases is omitted -#67 - When loading properties files, a leading / seems to be mandatory. This is - preventing users from correctly setting up jOOQ the first time -#70 - Add support for Oracle datatype TIMESTAMP(6) -#72 - Name clashes in generated Tables -#75 - Constant does not bind its values. -#76 - Constant should not render strings all the time -#79 - Constants are not properly escaped -#80 - Position function does not bind any variables -#81 - Add cast function to Constants in HSQL - -Version 1.4.1 - October 18, 2010 -================================================================================ - -Oracle patch release - -Features --------- -#63 - Generate referential functionality for Oracle - -Version 1.4.0 - October 17, 2010 -================================================================================ - -Support for PostGreSQL was added. -Added lots of OR-mapping functionality. -There is a general API change due to various new features. - -Features --------- -#14 - Add PostGreSQL support -#40 - Resolve foreign keys. Allow for navigation between objects. -#42 - Add PlainSQLField -#45 - Add "dirty" flag to Record's values. This allows for updating only - relevant data. -#47 - Complete implementation for UPDATE, INSERT, DELETE statements. Added some - missing functionality. -#48 - Add more support for Date, Time, Timestamp fields. -#51 - Add a org.jooq.impl.Manager class that provides common utility methods for - CRUD operations - -API changes ------------ -#10 - Add second generic type . This is a prerequisite for - many OR-mapping features -#18 - Use org.jooq.Record in InsertQuery and UpdateQuery -#46 - Create UpdatableRecords as a prerequisite for JPA and true OR-mapping. - These records support store() and delete() methods -#52 - Add default constructor in generated Records. -#53 - Add refresh functionality to UpdatableRecords. See also #46 -#54 - Add a state to the factory class -#56 - Reduce API, remove unnecessary Condition subinterfaces -#57 - Reduce API, remove unnecessary QueryPart interfaces - -Bugfixes --------- -#49 - NullPointerException when generating relations on schema subset -#58 - Count function renders bad SQL in various dialects -#59 - Exception when selecting unaliased functions in queries - -Version 1.3.0 - August 24, 2010 -================================================================================ - -Support for HSQLDB was added. -There is a major API change due to #44. - -Features --------- -#29 - Generate primary keys and foreign keys in Oracle code generation -#34 - Add support for HSQLDB -#39 - Generate primary keys and foreign keys in HSQLDB code generation -#41 - Add documentation to QueryFactory and Functions - -API changes ------------ -#23 - Add support for more advanced joins -#32 - Merge SelectQuery and ResultProviderQuery interfaces -#44 - Let Query methods return "this" - -Bugfixes --------- -#35 - Add unit tests for HSQLDB support -#37 - Syntax error in combined select queries! The usage of combined queries in - MySQL may still be a bit awkward. Keep an eye out for further fixes -#43 - Join with aliased tables doesn't work - -Version 1.2.0 - August 21, 2010 -================================================================================ - -The added Oracle support is now unit tested and more stable. The Oracle NUMBER -data type is mapped more precisely to Java types. - -Features --------- -#12 - Model primary keys and foreign keys in generated code -#22 - Improve mapping of Oracle NUMBER data type -#26 - Add Plain SQL QueryParts -#27 - Add support for HAVING clause - -Bugfixes --------- -#24 - Add Unit tests for oracle database (and fixed bugs) -#31 - Pull up addOrderBy() methods from SelectQuery to ResultProviderQuery - -Version 1.1.0 - August 17, 2010 -================================================================================ - -The main new feature is the Oracle support. Wait for Version 1.1.1 for that -support to be stabilised, as there are no Oracle unit tests running against an -Oracle database yet. - -Features --------- - -#2 - Add support for inner / nested selects -#3 - Add more function support -#4 - Implement filtering functionality for code generation -#6 - Add Oracle Support -#9 - Create true POJO's (implementing org.jooq.Record) with getters and setters -#17 - Make org.jooq.impl.Parameter independent of Field - -Bugfixes --------- - -#11 - Code generation does not remove files - -Version 1.0.1 - August 14, 2010 -================================================================================ - -Features --------- - -#5 - Prevent code regeneration, if no changes were made -#7 - Implement ant task for code generation - -Version 1.0.0 - August 14, 2010 -================================================================================ -Initial Release \ No newline at end of file diff --git a/jOOQ-website/inc/feature-matrix.php b/jOOQ-website/inc/feature-matrix.php deleted file mode 100644 index 9259dda671..0000000000 --- a/jOOQ-website/inc/feature-matrix.php +++ /dev/null @@ -1,427 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SQL statements and features
    FeatureASEDB2DerbyH2HSQLDBIngresMySQLOraclePostgresSQLiteSQL ServerSybase
    INSERT with VALUESyesyesyesyesyesyesyesyesyesyesyesyes
    INSERT with VALUES (multiple records)yesyesyesyesyesyesyesyesyesyesyesyes
    INSERT with SELECTyesyesyesyesyesyesyesyesyesyesyesyes
    INSERT with ON DUPLICATE KEY UPDATEnoyes [1]nonoyes [1]noyesyes [1]nonoyes [1]yes [1]
    INSERT with RETURNINGpartially [3]yes [4]partially [3]partially [3]yes [4]partially [3]yes [3]partially [4]yespartially [2]partially [3]partially [2]
    SELECTyesyesyesyesyesyesyesyesyesyesyesyes
    SELECT with CONNECT BYnononononononoyesnononono
    SELECT with LIMIT .. OFFSETpartially [7]yes [8]yes [9]yes [10]yes [10]yes [9]yes [10]yes [11]yes [10]yes [10]yes [8]yes [12]
    SELECT with FOR UPDATEyesyesyesyesyesyesyesyesyesnonoyes
    SELECT with FOR UPDATE OF (field-list)noyesyesyesyesyesnoyesnononoyes
    SELECT with FOR UPDATE OF (table-list)noyes [13]yes [13]yesyesyes [13]noyes [13]yesnonoyes
    SELECT with FOR UPDATE WAIT, NOWAIT, SKIP LOCKEDnononononononoyesnononono
    UPDATEyesyesyesyesyesyesyesyesyesyesyesyes
    DELETEyesyesyesyesyesyesyesyesyesyesyesyes
    MERGEnoyesnono [6]yesnonoyesnonoyesyes
    MERGE (Oracle extensions)nononononononoyesnononono
    TRUNCATEyesyesyesyesyesyes [14]yesyesyesyes [14]yesyes
    Sequence CURRVALnoyesnoyesnoyesnoyesyesnonoyes
    Sequence NEXTVALnoyesyesyesyesyesnoyesyesnonoyes
    JDBC features
    FeatureASEDB2DerbyH2HSQLDBIngresMySQLOraclePostgresSQLiteSQL ServerSybase
    batch operationsyesyesyesyesyesyesyesyesyesyesyesyes
    jOOQ features
    FeatureASEDB2DerbyH2HSQLDBIngresMySQLOraclePostgresSQLiteSQL ServerSybase
    CSV Data loaderyes [5]yesyes [5]yes [5]yesyes [5]yesyesyes [5]yes [5]yesyes
    Functions
    FeatureASEDB2DerbyH2HSQLDBIngresMySQLOraclePostgresSQLiteSQL ServerSybase
    Last inserted IDyesnoyesyesyesyesyesnonoyesyesyes
    - -
      -
    • [1] MySQL's INSERT .. ON DUPLICATE KEY UPDATE statement is simulated using an equivalent MERGE statement
    • -
    • [2] Postgres' INSERT .. RETURNING statement is simulated by fetching the last inserted ID explicitly with a new statement. Other fields than the ID are fetched with another statement. Client code must ensure transactional integrity between the three statements to prevent race conditions (e.g. set autocommit to off). This does not work for multi-record inserts.
    • -
    • [3] Postgres' INSERT .. RETURNING statement is simulated by using JDBC's PreparedStatement.getGeneratedKeys() functionality. Other fields than the ID are fetched with another statement. Client code must ensure transactional integrity between the two statements to prevent race conditions (e.g. set autocommit to off). This may not work for multi-record inserts in some dialects
    • -
    • [4] Postgres' INSERT .. RETURNING statement is simulated by using JDBC's PreparedStatement.getGeneratedKeys() functionality. All fields can be fetched in a single statement. This may not work for multi-record inserts in some dialects
    • -
    • [5] The loader API has an option to use MySQL's INSERT .. ON DUPLICATE KEY UPDATE statement, which only works in some dialects. See also [1]
    • -
    • [6] H2's MERGE statement is quite different from the SQL:2003 standard MERGE statement. It is currently not supported by jOOQ
    • -
    • [7] Sybase ASE has no means of specifying an OFFSET like other dialects. LIMIT is translated to the TOP clause
    • -
    • [8] DB2 knows a FIRST ROWS clause without OFFSET. SQL Server knows a TOP clause without OFFSET. LIMIT .. OFFSET is simulated using nested SELECT and filtering on ROW_NUMBER() OVER()
    • -
    • [9] Derby knows the OFFSET .. ROWS FETCH NEXT .. ROWS ONLY clause, Ingres has a similar OFFSET .. ROWS FETCH NEXT .. ROWS ONLY clause. They work just the same as [10]
    • -
    • [10] Many databases know the LIMIT .. OFFSET clause as declared in the jOOQ API
    • -
    • [11] Oracle has no native support for LIMIT .. OFFSET clauses. Instead, LIMIT .. OFFSET is simulated using nested SELECT and filtering on ROW_NUMBER() OVER()
    • -
    • [12] Sybase knows a TOP .. START AT .. clause that works just the same as [10]
    • -
    • [13] Some databases do not support a FOR UPDATE OF (table-list) clause. But jOOQ knows all columns in generated tables, hence jOOQ renders an appropriate FOR UPDATE OF (field-list) clause instead
    • -
    • [14] Some databases do not support a TRUNCATE statement. An equivalent DELETE statement is issued instead.
    • -
    \ No newline at end of file diff --git a/jOOQ-website/index.php b/jOOQ-website/index.php deleted file mode 100644 index c5c21d9e07..0000000000 --- a/jOOQ-website/index.php +++ /dev/null @@ -1,196 +0,0 @@ - -

    # Philosophy

    -

    SQL was never meant to be abstracted. To be confined in the narrow boundaries - of heavy mappers, hiding the beauty and simplicity of relational data. - SQL was never meant to be object-oriented. SQL was never meant to be - anything other than... SQL!

    -

    # What does jOOQ code look like?

    -

    It's simple. With the jOOQ DSL, SQL looks almost as if it were -natively supported by Java. For instance, get all books published in 2011, ordered by title

    - - - - - - -
    -  SELECT * FROM BOOK
    -   WHERE PUBLISHED_IN = 2011
    -ORDER BY TITLE
    -create.selectFrom(BOOK)
    -      .where(PUBLISHED_IN.equal(2011))
    -      .orderBy(TITLE)
    - -

    jOOQ also supports more complex SQL statements. get all authors' - first and last names, and the number of books they've written in - German, if they have written more than five books in German in the last - three years (from 2011), and sort those authors by last names limiting - results to the second and third row, then lock first and last names - columns for update

    - - - - - -
    -  SELECT AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME, COUNT(*)
    -    FROM AUTHOR
    -    JOIN BOOK ON AUTHOR.ID = BOOK.AUTHOR_ID
    -   WHERE BOOK.LANGUAGE = 'DE'
    -     AND BOOK.PUBLISHED > DATE '2008-01-01'
    -GROUP BY AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME
    -  HAVING COUNT(*) > 5
    -ORDER BY AUTHOR.LAST_NAME ASC NULLS FIRST
    -   LIMIT 2
    -  OFFSET 1
    -     FOR UPDATE
    -      OF AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME
    -create.select(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME, count())
    -      .from(AUTHOR)
    -      .join(BOOK).on(AUTHOR.ID.equal(BOOK.AUTHOR_ID))
    -      .where(BOOK.LANGUAGE.eq("DE"))
    -      .and(BOOK.PUBLISHED.gt(date("2008-01-01")))
    -      .groupBy(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .having(count().gt(5))
    -      .orderBy(AUTHOR.LAST_NAME.asc().nullsFirst())
    -      .limit(2)
    -      .offset(1)
    -      .forUpdate()
    -      .of(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    - -

    # What does type safety mean to jOOQ?

    -

    SQL is a very type safe language. So is jOOQ. jOOQ uniquely respects SQL's row value expression typesafety. jOOQ will use your Java compiler to type-check the following:

    - -
    -select().from(t).where(t.a.eq(select(t2.x).from(t2));
    -// Type-check here: ---------------> ^^^^
    -select().from(t).where(t.a.eq(any(select(t2.x).from(t2)));
    -// Type-check here: -------------------> ^^^^
    -select().from(t).where(t.a.in(select(t2.x).from(t2));
    -// Type-check here: ---------------> ^^^^
    -
    - -

    And also set operations:

    - -
    -select(t1.a, t1.b).from(t1).union(select(t2.a, t2.b).from(t2));
    -// Type-check here: -------------------> ^^^^^^^^^^
    -
    - -

    And even row value expressions:

    - - - - - - -
    -SELECT * FROM t WHERE (t.a, t.b) = (1, 2)
    -
    -SELECT * FROM t WHERE (t.a, t.b) OVERLAPS (date1, date2)
    -
    -SELECT * FROM t WHERE (t.a, t.b) IN (SELECT x, y FROM t2)
    -
    -UPDATE t SET (a, b) = (SELECT x, y FROM t2 WHERE ...)
    -
    -INSERT INTO t (a, b) VALUES (1, 2)
    - 
    -
    -select().from(t).where(row(t.a, t.b).eq(1, 2));
    -// Type-check here: ----------------->  ^^^^
    -select().from(t).where(row(t.a, t.b).overlaps(date1, date2));
    -// Type-check here: ------------------------> ^^^^^^^^^^^^
    -select().from(t).where(row(t.a, t.b).in(select(t2.x, t2.y).from(t2)));
    -// Type-check here: -------------------------> ^^^^^^^^^^
    -update(t).set(row(t.a, t.b), select(t2.x, t2.y).where(...));
    -// Type-check here: --------------> ^^^^^^^^^^
    -insertInto(t, t.a, t.b).values(1, 2);
    -// Type-check here: ---------> ^^^^
    -
    - -

    # What is jOOQ?

    -

    jOOQ stands for Java Object Oriented Querying. It combines these essential features:

    - -
      -
    • Code Generation: jOOQ generates a simple Java representation of your database schema. Every table, view, stored procedure, enum, UDT is a class.
    • -
    • Active records: jOOQ implements an easy-to-use active record pattern. It is NOT an OR-mapper, but provides a 1:1 mapping between tables/views and classes. Between columns and members.
    • -
    • Typesafe SQL: jOOQ allows for writing compile-time typesafe querying using its built-in fluent API.
    • -
    • SQL standard: jOOQ supports all standard SQL language features including the more complex UNION's, nested SELECTs, joins, aliasing
    • -
    • Vendor-specific feature support: jOOQ encourages the use of vendor-specific extensions such as stored procedures, UDT's and ARRAY's, recursive queries, and many more.
    • -
    - -

    # How does jOOQ help you?

    -
      -
    • Your database always comes FIRST! That's where the schema is, not in your Java code or some XML mapping file.
    • -
    • Your schema is generated in Java. You can use auto-completion in your IDE!
    • -
    • Your "value objects" or "data transfer objects" are generated too. This keeps things DRY
    • -
    • Your Java code won't compile anymore when you modify your schema. That means less runtime errors.
    • -
    • You and your DBA can be friends again because you have full control over your SQL.
    • -
    • You can port your SQL to a new database. jOOQ will generate SQL that works on any database.
    • -
    • You won't have syntax errors in your query.
    • -
    • You won't forget to bind variables correctly. No SQL injection, either.
    • -
    • You can forget about JDBC's verbosity (especially useful when dealing with UDTs, ARRAYs and stored procedures).
    • -
    -

    Or in short:

    -
      -
    • You can be productive again!
    • -
    - -

    # What databases are supported

    -

    Every RDMBS out there has its own little specialties. - jOOQ considers those specialties as much as possible, while trying to - standardise the behaviour in the API. In order to maintain a very high level of quality, - some 140 unit tests are run for syntax and variable binding verification, - as well as some 300 integration tests with an overall of around 2000 queries for any - of these databases:

    -
      -
    • CUBRID 8.4.1 and 9.1.0
    • -
    • DB2 9.7
    • -
    • Derby 10.10
    • -
    • Firebird 2.5.1
    • -
    • H2 1.3.161
    • -
    • HSQLDB 2.2.5
    • -
    • Ingres 10.1.0
    • -
    • MariaDB 5.2.14
    • -
    • MySQL 5.1.41 and 5.5.8
    • -
    • Oracle XE 10.2.0.1.0 and 11g
    • -
    • PostgreSQL 9.0
    • -
    • SQLite (using xerial sqlite-jdbc)
    • -
    • SQL Server 2008 R8 and 2012 (with sqljdbc4 or jTDS JDBC drivers)
    • -
    • Sybase Adaptive Server Enterprise 15.5
    • -
    • Sybase SQL Anywhere 12 (with jconn3 or jTDS JDCB drivers)
    • -
    -

    These platforms have been observed to work as well, but are not integration-tested

    -
      -
    • Google Cloud SQL (MySQL)
    • -
    - -

    # Other requirements

    -

    jOOQ runs with Java 1.6+

    - -

    License

    -

    jOOQ is licensed under the Apache Software License 2.0

    - - -

    Thanks

    -

    YourKit is kindly supporting open source projects with its -full-featured Java Profiler. YourKit, LLC is the creator of innovative -and intelligent tools for profiling Java and .NET applications. Take a -look at YourKit's leading software products: YourKit Java -Profiler and YourKit .NET -Profiler.

    - \ No newline at end of file diff --git a/jOOQ-website/js/jquery.cookie.js b/jOOQ-website/js/jquery.cookie.js deleted file mode 100644 index 32badc56d7..0000000000 --- a/jOOQ-website/js/jquery.cookie.js +++ /dev/null @@ -1,95 +0,0 @@ -/*! - * jQuery Cookie Plugin v1.3.1 - * https://github.com/carhartl/jquery-cookie - * - * Copyright 2013 Klaus Hartl - * Released under the MIT license - */ -(function (factory) { - if (typeof define === 'function' && define.amd) { - // AMD. Register as anonymous module. - define(['jquery'], factory); - } else { - // Browser globals. - factory(jQuery); - } -}(function ($) { - - var pluses = /\+/g; - - function raw(s) { - return s; - } - - function decoded(s) { - return decodeURIComponent(s.replace(pluses, ' ')); - } - - function converted(s) { - if (s.indexOf('"') === 0) { - // This is a quoted cookie as according to RFC2068, unescape - s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\'); - } - try { - return config.json ? JSON.parse(s) : s; - } catch(er) {} - } - - var config = $.cookie = function (key, value, options) { - - // write - if (value !== undefined) { - options = $.extend({}, config.defaults, options); - - if (typeof options.expires === 'number') { - var days = options.expires, t = options.expires = new Date(); - t.setDate(t.getDate() + days); - } - - value = config.json ? JSON.stringify(value) : String(value); - - return (document.cookie = [ - config.raw ? key : encodeURIComponent(key), - '=', - config.raw ? value : encodeURIComponent(value), - options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE - options.path ? '; path=' + options.path : '', - options.domain ? '; domain=' + options.domain : '', - options.secure ? '; secure' : '' - ].join('')); - } - - // read - var decode = config.raw ? raw : decoded; - var cookies = document.cookie.split('; '); - var result = key ? undefined : {}; - for (var i = 0, l = cookies.length; i < l; i++) { - var parts = cookies[i].split('='); - var name = decode(parts.shift()); - var cookie = decode(parts.join('=')); - - if (key && key === name) { - result = converted(cookie); - break; - } - - if (!key) { - result[name] = converted(cookie); - } - } - - return result; - }; - - config.defaults = {}; - - $.removeCookie = function (key, options) { - if ($.cookie(key) !== undefined) { - // Must not alter options, thus extending a fresh object... - $.cookie(key, '', $.extend({}, options, { expires: -1 })); - return true; - } - return false; - }; - -})); \ No newline at end of file diff --git a/jOOQ-website/js/jquery.js b/jOOQ-website/js/jquery.js deleted file mode 100644 index 45bb4fc1f1..0000000000 --- a/jOOQ-website/js/jquery.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery v1.7.2 jquery.com | jquery.org/license */ -(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cu(a){if(!cj[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?"":"")+""),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;e=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?+d:j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){if(typeof c!="string"||!c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
    a",d=p.getElementsByTagName("*"),e=p.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=p.getElementsByTagName("input")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:p.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},f.boxModel=b.boxModel=c.compatMode==="CSS1Compat",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),i.setAttribute("name","t"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m="on"+n,o=m in p,o||(p.setAttribute(m,"return;"),o=typeof p[m]=="function"),b[n+"Bubbles"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName("body")[0];!u||(m=1,t="padding:0;margin:0;border:",r="position:absolute;top:0;left:0;width:1px;height:1px;",s=t+"0;visibility:hidden;",n="style='"+r+t+"5px solid #000;",q="
    "+""+"
    ",d=c.createElement("div"),d.style.cssText=s+"width:0;height:0;position:static;top:0;margin-top:"+m+"px",u.insertBefore(d,u.firstChild),p=c.createElement("div"),d.appendChild(p),p.innerHTML="
    t
    ",k=p.getElementsByTagName("td"),o=k[0].offsetHeight===0,k[0].style.display="",k[1].style.display="none",b.reliableHiddenOffsets=o&&k[0].offsetHeight===0,a.getComputedStyle&&(p.innerHTML="",l=c.createElement("div"),l.style.width="0",l.style.marginRight="0",p.style.width="2px",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!="undefined"&&(p.innerHTML="",p.style.width=p.style.padding="1px",p.style.border=0,p.style.overflow="hidden",p.style.display="inline",p.style.zoom=1,b.inlineBlockNeedsLayout=p.offsetWidth===3,p.style.display="block",p.style.overflow="visible",p.innerHTML="
    ",b.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChild,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,doesAddBorderForTableAndCells:i.offsetTop===5},g.style.position="fixed",g.style.top="20px",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.position=g.style.top="",e.style.overflow="hidden",e.style.position="relative",j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginInBodyOffset=u.offsetTop!==m,a.getComputedStyle&&(p.style.marginTop="1%",b.pixelMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!=="1%"),typeof d.style.zoom!="undefined"&&(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.extend(b,j))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e1,null,!1)},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof a!="string"&&(c=a,a="fx",d--);if(arguments.length1)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length>1)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h,i=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;i=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/(?:^|\s)hover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function( -a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler,g=p.selector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&j.push({elem:this,matches:d.slice(e)});for(k=0;k0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));o.match.globalPOS=p;var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

    ";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
    ";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/]","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*",""],legend:[1,"
    ","
    "],thead:[1,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
    ","
    "]),f.fn.extend({text:function(a){return f.access(this,function(a){return a===b?f.text(this):this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f -.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){return f.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(;d1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test("<"+a.nodeName+">")?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g,h,i,j=[];b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof l=="number"&&(l+="");if(!l)continue;if(typeof l=="string")if(!_.test(l))l=b.createTextNode(l);else{l=l.replace(Y,"<$1>");var m=(Z.exec(l)||["",""])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement("div"),q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m==="table"&&!s?p.firstChild&&p.firstChild.childNodes:n[1]===""&&!s?p.childNodes:[];for(i=t.length-1;i>=0;--i)f.nodeName(t[i],"tbody")&&!t[i].childNodes.length&&t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&&X.test(l)&&p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p&&(p.parentNode.removeChild(p),q.length>0&&(r=q[q.length-1],r&&r.parentNode&&r.parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]&&typeof (u=l.length)=="number")for(i=0;i1)},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,"opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bu.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(by)return by(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defaultView&&c.defaultView.getComputedStyle&&(bz=function(a,b){var c,d,e,g,h=a.style;b=b.replace(br,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b))),!f.support.pixelMargin&&e&&bv.test(b)&&bt.test(c)&&(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.documentElement.currentStyle&&(bA=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f==null&&g&&(e=g[b])&&(f=e),bt.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),by=bz||bA,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.test(b)?b+"px":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bq.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bp,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bp.test(g)?g.replace(bp,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){return f.swap(a,{display:"inline-block"},function(){return b?by(a,"margin-right"):a.style.marginRight})}})}),f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)}),f.each({margin:"",padding:"",border:"Width"},function(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}});var bC=/%20/g,bD=/\[\]$/,bE=/\r?\n/g,bF=/#.*$/,bG=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\/\//,bL=/\?/,bM=/)<[^<]*)*<\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV,bW=["*/"]+["*"];try{bU=e.href}catch(bX){bU=c.createElement("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
    ").append(c.replace(bM,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,"\r\n")}}):{name:b.name,value:c.replace(bE,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b$(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b$(a,b);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bW},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bY(bS),ajaxTransport:bY(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?ca(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cb(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bW+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bZ(bT,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=typeof b.data=="string"&&/^application\/x\-www\-form\-urlencoded/.test(b.contentType);if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n);try{m.text=h.responseText}catch(a){}try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(ct("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);f.fn[a]=function(e){return f.access(this,function(a,e,g){var h=cy(a);if(g===b)return h?c in h?h[c]:f.support.boxModel&&h.document.documentElement[e]||h.document.body[e]:a[e];h?h.scrollTo(d?f(h).scrollLeft():g,d?g:f(h).scrollTop()):a[e]=g},a,e,arguments.length,null)}}),f.each({Height:"height",Width:"width"},function(a,c){var d="client"+a,e="scroll"+a,g="offset"+a;f.fn["inner"+a]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,c,"padding")):this[c]():null},f.fn["outer"+a]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,c,a?"margin":"border")):this[c]():null},f.fn[c]=function(a){return f.access(this,function(a,c,h){var i,j,k,l;if(f.isWindow(a)){i=a.document,j=i.documentElement[d];return f.support.boxModel&&j||i.body&&i.body[d]||j}if(a.nodeType===9){i=a.documentElement;if(i[d]>=i[e])return i[d];return Math.max(a.body[e],i[e],a.body[g],i[g])}if(h===b){k=f.css(a,c),l=parseFloat(k);return f.isNumeric(l)?l:k}f(a).css(c,h)},c,a,arguments.length,null)}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file diff --git a/jOOQ-website/js/jquery.modal.js b/jOOQ-website/js/jquery.modal.js deleted file mode 100644 index 130cc65efd..0000000000 --- a/jOOQ-website/js/jquery.modal.js +++ /dev/null @@ -1,187 +0,0 @@ -/* - A simple jQuery modal (http://github.com/kylefox/jquery-modal) - Version 0.5.3 -*/ -(function($) { - - var current = null; - - $.modal = function(el, options) { - $.modal.close(); // Close any open modals. - var remove, target; - this.$body = $('body'); - this.options = $.extend({}, $.modal.defaults, options); - if (el.is('a')) { - target = el.attr('href'); - //Select element by id from href - if (/^#/.test(target)) { - this.$elm = $(target); - if (this.$elm.length !== 1) return null; - this.open(); - //AJAX - } else { - this.$elm = $('
    '); - this.$body.append(this.$elm); - remove = function(event, modal) { modal.elm.remove(); }; - this.showSpinner(); - el.trigger($.modal.AJAX_SEND); - $.get(target).done(function(html) { - if (!current) return; - el.trigger($.modal.AJAX_SUCCESS); - current.$elm.empty().append(html).on($.modal.CLOSE, remove); - current.hideSpinner(); - current.open(); - el.trigger($.modal.AJAX_COMPLETE); - }).fail(function() { - el.trigger($.modal.AJAX_FAIL); - current.hideSpinner(); - el.trigger($.modal.AJAX_COMPLETE); - }); - } - } else { - this.$elm = el; - this.open(); - } - }; - - $.modal.prototype = { - constructor: $.modal, - - open: function() { - this.block(); - this.show(); - if (this.options.escapeClose) { - $(document).on('keydown.modal', function(event) { - if (event.which == 27) $.modal.close(); - }); - } - if (this.options.clickClose) this.blocker.click($.modal.close); - }, - - close: function() { - this.unblock(); - this.hide(); - $(document).off('keydown.modal'); - }, - - block: function() { - this.$elm.trigger($.modal.BEFORE_BLOCK, [this._ctx()]); - this.blocker = $('
    ').css({ - top: 0, right: 0, bottom: 0, left: 0, - width: "100%", height: "100%", - position: "fixed", - zIndex: this.options.zIndex, - background: this.options.overlay, - opacity: this.options.opacity - }); - this.$body.append(this.blocker); - this.$elm.trigger($.modal.BLOCK, [this._ctx()]); - }, - - unblock: function() { - this.blocker.remove(); - }, - - show: function() { - this.$elm.trigger($.modal.BEFORE_OPEN, [this._ctx()]); - if (this.options.showClose) { - this.closeButton = $('' + this.options.closeText + ''); - this.$elm.append(this.closeButton); - } - this.$elm.addClass(this.options.modalClass + ' current'); - this.center(); - this.$elm.show().trigger($.modal.OPEN, [this._ctx()]); - }, - - hide: function() { - this.$elm.trigger($.modal.BEFORE_CLOSE, [this._ctx()]); - if (this.closeButton) this.closeButton.remove(); - this.$elm.removeClass('current').hide(); - this.$elm.trigger($.modal.CLOSE, [this._ctx()]); - }, - - showSpinner: function() { - if (!this.options.showSpinner) return; - this.spinner = this.spinner || $('
    ') - .append(this.options.spinnerHtml); - this.$body.append(this.spinner); - this.spinner.show(); - }, - - hideSpinner: function() { - if (this.spinner) this.spinner.remove(); - }, - - center: function() { - this.$elm.css({ - position: 'fixed', - top: "50%", - left: "50%", - marginTop: - (this.$elm.outerHeight() / 2), - marginLeft: - (this.$elm.outerWidth() / 2), - zIndex: this.options.zIndex + 1 - }); - }, - - //Return context for custom events - _ctx: function() { - return { elm: this.$elm, blocker: this.blocker, options: this.options }; - } - }; - - //resize is alias for center for now - $.modal.prototype.resize = $.modal.prototype.center; - - $.modal.close = function(event) { - if (!current) return; - if (event) event.preventDefault(); - current.close(); - var that = current.$elm; - current = null; - return that; - }; - - $.modal.resize = function() { - if (!current) return; - current.resize(); - }; - - $.modal.defaults = { - overlay: "#000", - opacity: 0.75, - zIndex: 1, - escapeClose: true, - clickClose: true, - closeText: 'Close', - modalClass: "modal", - spinnerHtml: null, - showSpinner: true, - showClose: true - }; - - // Event constants - $.modal.BEFORE_BLOCK = 'modal:before-block'; - $.modal.BLOCK = 'modal:block'; - $.modal.BEFORE_OPEN = 'modal:before-open'; - $.modal.OPEN = 'modal:open'; - $.modal.BEFORE_CLOSE = 'modal:before-close'; - $.modal.CLOSE = 'modal:close'; - $.modal.AJAX_SEND = 'modal:ajax:send'; - $.modal.AJAX_SUCCESS = 'modal:ajax:success'; - $.modal.AJAX_FAIL = 'modal:ajax:fail'; - $.modal.AJAX_COMPLETE = 'modal:ajax:complete'; - - $.fn.modal = function(options){ - if (this.length === 1) { - current = new $.modal(this, options); - } - return this; - }; - - // Automatically bind links with rel="modal:close" to, well, close the modal. - $(document).on('click.modal', 'a[rel="modal:close"]', $.modal.close); - $(document).on('click.modal', 'a[rel="modal:open"]', function(event) { - event.preventDefault(); - $(this).modal(); - }); -})(jQuery); \ No newline at end of file diff --git a/jOOQ-website/js/prettify/lang-apollo.js b/jOOQ-website/js/prettify/lang-apollo.js deleted file mode 100644 index c834573272..0000000000 --- a/jOOQ-website/js/prettify/lang-apollo.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright (C) 2009 Onno Hommes. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - - -/** - * @fileoverview - * Registers a language handler for the AGC/AEA Assembly Language as described - * at http://virtualagc.googlecode.com - *

    - * This file could be used by goodle code to allow syntax highlight for - * Virtual AGC SVN repository or if you don't want to commonize - * the header for the agc/aea html assembly listing. - * - * @author ohommes@alumni.cmu.edu - */ - -PR['registerLangHandler']( - PR['createSimpleLexer']( - [ - // A line comment that starts with ; - [PR['PR_COMMENT'], /^#[^\r\n]*/, null, '#'], - // Whitespace - [PR['PR_PLAIN'], /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0'], - // A double quoted, possibly multi-line, string. - [PR['PR_STRING'], /^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/, null, '"'] - ], - [ - [PR['PR_KEYWORD'], /^(?:ADS|AD|AUG|BZF|BZMF|CAE|CAF|CA|CCS|COM|CS|DAS|DCA|DCOM|DCS|DDOUBL|DIM|DOUBLE|DTCB|DTCF|DV|DXCH|EDRUPT|EXTEND|INCR|INDEX|NDX|INHINT|LXCH|MASK|MSK|MP|MSU|NOOP|OVSK|QXCH|RAND|READ|RELINT|RESUME|RETURN|ROR|RXOR|SQUARE|SU|TCR|TCAA|OVSK|TCF|TC|TS|WAND|WOR|WRITE|XCH|XLQ|XXALQ|ZL|ZQ|ADD|ADZ|SUB|SUZ|MPY|MPR|MPZ|DVP|COM|ABS|CLA|CLZ|LDQ|STO|STQ|ALS|LLS|LRS|TRA|TSQ|TMI|TOV|AXT|TIX|DLY|INP|OUT)\s/,null], - [PR['PR_TYPE'], /^(?:-?GENADR|=MINUS|2BCADR|VN|BOF|MM|-?2CADR|-?[1-6]DNADR|ADRES|BBCON|[SE]?BANK\=?|BLOCK|BNKSUM|E?CADR|COUNT\*?|2?DEC\*?|-?DNCHAN|-?DNPTR|EQUALS|ERASE|MEMORY|2?OCT|REMADR|SETLOC|SUBRO|ORG|BSS|BES|SYN|EQU|DEFINE|END)\s/,null], - // A single quote possibly followed by a word that optionally ends with - // = ! or ?. - [PR['PR_LITERAL'], - /^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/], - // Any word including labels that optionally ends with = ! or ?. - [PR['PR_PLAIN'], - /^-*(?:[!-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i], - // A printable non-space non-special character - [PR['PR_PUNCTUATION'], /^[^\w\t\n\r \xA0()\"\\\';]+/] - ]), - ['apollo', 'agc', 'aea']); diff --git a/jOOQ-website/js/prettify/lang-basic.js b/jOOQ-website/js/prettify/lang-basic.js deleted file mode 100644 index 7072bdb5b5..0000000000 --- a/jOOQ-website/js/prettify/lang-basic.js +++ /dev/null @@ -1,32 +0,0 @@ -// Contributed by peter dot kofler at code minus cop dot org - -/** - * @fileoverview - * Registers a language handler for Basic. - * - * To use, include prettify.js and this file in your HTML page. - * Then put your code in an HTML tag like - *

    (my BASIC code)
    - * - * @author peter dot kofler at code minus cop dot org - */ - -PR.registerLangHandler( - PR.createSimpleLexer( - [ // shortcutStylePatterns - // "single-line-string" - [PR.PR_STRING, /^(?:"(?:[^\\"\r\n]|\\.)*(?:"|$))/, null, '"'], - // Whitespace - [PR.PR_PLAIN, /^\s+/, null, ' \r\n\t\xA0'] - ], - [ // fallthroughStylePatterns - // A line comment that starts with REM - [PR.PR_COMMENT, /^REM[^\r\n]*/, null], - [PR.PR_KEYWORD, /^\b(?:AND|CLOSE|CLR|CMD|CONT|DATA|DEF ?FN|DIM|END|FOR|GET|GOSUB|GOTO|IF|INPUT|LET|LIST|LOAD|NEW|NEXT|NOT|ON|OPEN|OR|POKE|PRINT|READ|RESTORE|RETURN|RUN|SAVE|STEP|STOP|SYS|THEN|TO|VERIFY|WAIT)\b/, null], - [PR.PR_PLAIN, /^[A-Z][A-Z0-9]?(?:\$|%)?/i, null], - // Literals .0, 0, 0.0 0E13 - [PR.PR_LITERAL, /^(?:\d+(?:\.\d*)?|\.\d+)(?:e[+\-]?\d+)?/i, null, '0123456789'], - [PR.PR_PUNCTUATION, /^.[^\s\w\.$%"]*/, null] - // [PR.PR_PUNCTUATION, /^[-,:;!<>=\+^\/\*]+/] - ]), - ['basic','cbm']); diff --git a/jOOQ-website/js/prettify/lang-clj.js b/jOOQ-website/js/prettify/lang-clj.js deleted file mode 100644 index 24da44a5f7..0000000000 --- a/jOOQ-website/js/prettify/lang-clj.js +++ /dev/null @@ -1,64 +0,0 @@ -/** - * @license Copyright (C) 2011 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @fileoverview - * Registers a language handler for Clojure. - * - * - * To use, include prettify.js and this file in your HTML page. - * Then put your code in an HTML tag like - *
    (my lisp code)
    - * The lang-cl class identifies the language as common lisp. - * This file supports the following language extensions: - * lang-clj - Clojure - * - * - * I used lang-lisp.js as the basis for this adding the clojure specific - * keywords and syntax. - * - * "Name" = 'Clojure' - * "Author" = 'Rich Hickey' - * "Version" = '1.2' - * "About" = 'Clojure is a lisp for the jvm with concurrency primitives and a richer set of types.' - * - * - * I used Clojure.org Reference as - * the basis for the reserved word list. - * - * - * @author jwall@google.com - */ - -PR['registerLangHandler']( - PR['createSimpleLexer']( - [ - // clojure has more paren types than minimal lisp. - ['opn', /^[\(\{\[]+/, null, '([{'], - ['clo', /^[\)\}\]]+/, null, ')]}'], - // A line comment that starts with ; - [PR['PR_COMMENT'], /^;[^\r\n]*/, null, ';'], - // Whitespace - [PR['PR_PLAIN'], /^[\t\n\r \xA0]+/, null, '\t\n\r \xA0'], - // A double quoted, possibly multi-line, string. - [PR['PR_STRING'], /^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/, null, '"'] - ], - [ - // clojure has a much larger set of keywords - [PR['PR_KEYWORD'], /^(?:def|if|do|let|quote|var|fn|loop|recur|throw|try|monitor-enter|monitor-exit|defmacro|defn|defn-|macroexpand|macroexpand-1|for|doseq|dosync|dotimes|and|or|when|not|assert|doto|proxy|defstruct|first|rest|cons|defprotocol|deftype|defrecord|reify|defmulti|defmethod|meta|with-meta|ns|in-ns|create-ns|import|intern|refer|alias|namespace|resolve|ref|deref|refset|new|set!|memfn|to-array|into-array|aset|gen-class|reduce|map|filter|find|nil?|empty?|hash-map|hash-set|vec|vector|seq|flatten|reverse|assoc|dissoc|list|list?|disj|get|union|difference|intersection|extend|extend-type|extend-protocol|prn)\b/, null], - [PR['PR_TYPE'], /^:[0-9a-zA-Z\-]+/] - ]), - ['clj']); diff --git a/jOOQ-website/js/prettify/lang-css.js b/jOOQ-website/js/prettify/lang-css.js deleted file mode 100644 index 39cbfc2250..0000000000 --- a/jOOQ-website/js/prettify/lang-css.js +++ /dev/null @@ -1,159 +0,0 @@ -// Copyright (C) 2009 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - - - -/** - * @fileoverview - * Registers a language handler for CSS. - * - * - * To use, include prettify.js and this file in your HTML page. - * Then put your code in an HTML tag like - *
    
    - *
    - *
    - * http://www.w3.org/TR/CSS21/grammar.html Section G2 defines the lexical
    - * grammar.  This scheme does not recognize keywords containing escapes.
    - *
    - * @author mikesamuel@gmail.com
    - */
    -
    -// This file is a call to a function defined in prettify.js which defines a
    -// lexical scanner for CSS and maps tokens to styles.
    -
    -// The call to PR['registerLangHandler'] is quoted so that Closure Compiler
    -// will not rename the call so that this language extensions can be
    -// compiled/minified separately from one another.  Other symbols defined in
    -// prettify.js are similarly quoted.
    -
    -// The call is structured thus:
    -// PR['registerLangHandler'](
    -//    PR['createSimpleLexer'](
    -//        shortcutPatterns,
    -//        fallThroughPatterns),
    -//    [languageId0, ..., languageIdN])
    -
    -// Langugage IDs
    -// =============
    -// The language IDs are typically the file extensions of source files for
    -// that language so that users can syntax highlight arbitrary files based
    -// on just the extension.  This is heuristic, but works pretty well in
    -// practice.
    -
    -// Patterns
    -// ========
    -// Lexers are typically implemented as a set of regular expressions.
    -// The SimpleLexer function takes regular expressions, styles, and some
    -// pragma-info and produces a lexer.  A token description looks like
    -//   [STYLE_NAME, /regular-expression/, pragmas]
    -
    -// Initially, simple lexer's inner loop looked like:
    -
    -//    while sourceCode is not empty:
    -//      try each regular expression in order until one matches
    -//      remove the matched portion from sourceCode
    -
    -// This was really slow for large files because some JS interpreters
    -// do a buffer copy on the matched portion which is O(n*n)
    -
    -// The current loop now looks like
    -
    -//    1. use js-modules/combinePrefixPatterns.js to 
    -//       combine all regular expressions into one 
    -//    2. use a single global regular expresion match to extract all tokens
    -//    3. for each token try regular expressions in order until one matches it
    -//       and classify it using the associated style
    -
    -// This is a lot more efficient but it does mean that lookahead and lookbehind
    -// can't be used across boundaries to classify tokens.
    -
    -// Sometimes we need lookahead and lookbehind and sometimes we want to handle
    -// embedded language -- JavaScript or CSS embedded in HTML, or inline assembly
    -// in C.
    -
    -// If a particular pattern has a numbered group, and its style pattern starts
    -// with "lang-" as in
    -//    ['lang-js', /}
    - * 
  • define style rules. See the example page for examples. - *
  • mark the {@code
    } and {@code } tags in your source with
    - *    {@code class=prettyprint.}
    - *    You can also use the (html deprecated) {@code } tag, but the pretty
    - *    printer needs to do more substantial DOM manipulations to support that, so
    - *    some css styles may not be preserved.
    - * </ol>
    - * That's it.  I wanted to keep the API as simple as possible, so there's no
    - * need to specify which language the code is in, but if you wish, you can add
    - * another class to the {@code <pre>} or {@code <code>} element to specify the
    - * language, as in {@code <pre class="prettyprint lang-java">}.  Any class that
    - * starts with "lang-" followed by a file extension, specifies the file type.
    - * See the "lang-*.js" files in this directory for code that implements
    - * per-language file handlers.
    - * <p>
    - * Change log:<br>
    - * cbeust, 2006/08/22
    - * <blockquote>
    - *   Java annotations (start with "@") are now captured as literals ("lit")
    - * </blockquote>
    - * @requires console
    - */
    -
    -// JSLint declarations
    -/*global console, document, navigator, setTimeout, window, define */
    -
    -/** @define {boolean} */
    -var IN_GLOBAL_SCOPE = true;
    -
    -/**
    - * Split {@code prettyPrint} into multiple timeouts so as not to interfere with
    - * UI events.
    - * If set to {@code false}, {@code prettyPrint()} is synchronous.
    - */
    -window['PR_SHOULD_USE_CONTINUATION'] = true;
    -
    -/**
    - * Pretty print a chunk of code.
    - * @param {string} sourceCodeHtml The HTML to pretty print.
    - * @param {string} opt_langExtension The language name to use.
    - *     Typically, a filename extension like 'cpp' or 'java'.
    - * @param {number|boolean} opt_numberLines True to number lines,
    - *     or the 1-indexed number of the first line in sourceCodeHtml.
    - * @return {string} code as html, but prettier
    - */
    -var prettyPrintOne;
    -/**
    - * Find all the {@code <pre>} and {@code <code>} tags in the DOM with
    - * {@code class=prettyprint} and prettify them.
    - *
    - * @param {Function} opt_whenDone called when prettifying is done.
    - * @param {HTMLElement|HTMLDocument} opt_root an element or document
    - *   containing all the elements to pretty print.
    - *   Defaults to {@code document.body}.
    - */
    -var prettyPrint;
    -
    -
    -(function () {
    -  var win = window;
    -  // Keyword lists for various languages.
    -  // We use things that coerce to strings to make them compact when minified
    -  // and to defeat aggressive optimizers that fold large string constants.
    -  var FLOW_CONTROL_KEYWORDS = ["break,continue,do,else,for,if,return,while"];
    -  var C_KEYWORDS = [FLOW_CONTROL_KEYWORDS,"auto,case,char,const,default," + 
    -      "double,enum,extern,float,goto,inline,int,long,register,short,signed," +
    -      "sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];
    -  var COMMON_KEYWORDS = [C_KEYWORDS,"catch,class,delete,false,import," +
    -      "new,operator,private,protected,public,this,throw,true,try,typeof"];
    -  var CPP_KEYWORDS = [COMMON_KEYWORDS,"alignof,align_union,asm,axiom,bool," +
    -      "concept,concept_map,const_cast,constexpr,decltype,delegate," +
    -      "dynamic_cast,explicit,export,friend,generic,late_check," +
    -      "mutable,namespace,nullptr,property,reinterpret_cast,static_assert," +
    -      "static_cast,template,typeid,typename,using,virtual,where"];
    -  var JAVA_KEYWORDS = [COMMON_KEYWORDS,
    -      "abstract,assert,boolean,byte,extends,final,finally,implements,import," +
    -      "instanceof,interface,null,native,package,strictfp,super,synchronized," +
    -      "throws,transient"];
    -  var CSHARP_KEYWORDS = [JAVA_KEYWORDS,
    -      "as,base,by,checked,decimal,delegate,descending,dynamic,event," +
    -      "fixed,foreach,from,group,implicit,in,internal,into,is,let," +
    -      "lock,object,out,override,orderby,params,partial,readonly,ref,sbyte," +
    -      "sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort," +
    -      "var,virtual,where"];
    -  var COFFEE_KEYWORDS = "all,and,by,catch,class,else,extends,false,finally," +
    -      "for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then," +
    -      "throw,true,try,unless,until,when,while,yes";
    -  var JSCRIPT_KEYWORDS = [COMMON_KEYWORDS,
    -      "debugger,eval,export,function,get,null,set,undefined,var,with," +
    -      "Infinity,NaN"];
    -  var PERL_KEYWORDS = "caller,delete,die,do,dump,elsif,eval,exit,foreach,for," +
    -      "goto,if,import,last,local,my,next,no,our,print,package,redo,require," +
    -      "sub,undef,unless,until,use,wantarray,while,BEGIN,END";
    -  var PYTHON_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "and,as,assert,class,def,del," +
    -      "elif,except,exec,finally,from,global,import,in,is,lambda," +
    -      "nonlocal,not,or,pass,print,raise,try,with,yield," +
    -      "False,True,None"];
    -  var RUBY_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "alias,and,begin,case,class," +
    -      "def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo," +
    -      "rescue,retry,self,super,then,true,undef,unless,until,when,yield," +
    -      "BEGIN,END"];
    -   var RUST_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "as,assert,const,copy,drop," +
    -      "enum,extern,fail,false,fn,impl,let,log,loop,match,mod,move,mut,priv," +
    -      "pub,pure,ref,self,static,struct,true,trait,type,unsafe,use"];
    -  var SH_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "case,done,elif,esac,eval,fi," +
    -      "function,in,local,set,then,until"];
    -  var ALL_KEYWORDS = [
    -      CPP_KEYWORDS, CSHARP_KEYWORDS, JSCRIPT_KEYWORDS, PERL_KEYWORDS,
    -      PYTHON_KEYWORDS, RUBY_KEYWORDS, SH_KEYWORDS];
    -  var C_TYPES = /^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)\b/;
    -
    -  // token style names.  correspond to css classes
    -  /**
    -   * token style for a string literal
    -   * @const
    -   */
    -  var PR_STRING = 'str';
    -  /**
    -   * token style for a keyword
    -   * @const
    -   */
    -  var PR_KEYWORD = 'kwd';
    -  /**
    -   * token style for a comment
    -   * @const
    -   */
    -  var PR_COMMENT = 'com';
    -  /**
    -   * token style for a type
    -   * @const
    -   */
    -  var PR_TYPE = 'typ';
    -  /**
    -   * token style for a literal value.  e.g. 1, null, true.
    -   * @const
    -   */
    -  var PR_LITERAL = 'lit';
    -  /**
    -   * token style for a punctuation string.
    -   * @const
    -   */
    -  var PR_PUNCTUATION = 'pun';
    -  /**
    -   * token style for plain text.
    -   * @const
    -   */
    -  var PR_PLAIN = 'pln';
    -
    -  /**
    -   * token style for an sgml tag.
    -   * @const
    -   */
    -  var PR_TAG = 'tag';
    -  /**
    -   * token style for a markup declaration such as a DOCTYPE.
    -   * @const
    -   */
    -  var PR_DECLARATION = 'dec';
    -  /**
    -   * token style for embedded source.
    -   * @const
    -   */
    -  var PR_SOURCE = 'src';
    -  /**
    -   * token style for an sgml attribute name.
    -   * @const
    -   */
    -  var PR_ATTRIB_NAME = 'atn';
    -  /**
    -   * token style for an sgml attribute value.
    -   * @const
    -   */
    -  var PR_ATTRIB_VALUE = 'atv';
    -
    -  /**
    -   * A class that indicates a section of markup that is not code, e.g. to allow
    -   * embedding of line numbers within code listings.
    -   * @const
    -   */
    -  var PR_NOCODE = 'nocode';
    -
    -  
    -  
    -  /**
    -   * A set of tokens that can precede a regular expression literal in
    -   * javascript
    -   * http://web.archive.org/web/20070717142515/http://www.mozilla.org/js/language/js20/rationale/syntax.html
    -   * has the full list, but I've removed ones that might be problematic when
    -   * seen in languages that don't support regular expression literals.
    -   *
    -   * <p>Specifically, I've removed any keywords that can't precede a regexp
    -   * literal in a syntactically legal javascript program, and I've removed the
    -   * "in" keyword since it's not a keyword in many languages, and might be used
    -   * as a count of inches.
    -   *
    -   * <p>The link above does not accurately describe EcmaScript rules since
    -   * it fails to distinguish between (a=++/b/i) and (a++/b/i) but it works
    -   * very well in practice.
    -   *
    -   * @private
    -   * @const
    -   */
    -  var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|[!=]=?=?|\\#|%=?|&&?=?|\\(|\\*=?|[+\\-]=|->|\\/=?|::?|<<?=?|>>?>?=?|,|;|\\?|@|\\[|~|{|\\^\\^?=?|\\|\\|?=?|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*';
    -  
    -  // CAVEAT: this does not properly handle the case where a regular
    -  // expression immediately follows another since a regular expression may
    -  // have flags for case-sensitivity and the like.  Having regexp tokens
    -  // adjacent is not valid in any language I'm aware of, so I'm punting.
    -  // TODO: maybe style special characters inside a regexp as punctuation.
    -
    -  /**
    -   * Given a group of {@link RegExp}s, returns a {@code RegExp} that globally
    -   * matches the union of the sets of strings matched by the input RegExp.
    -   * Since it matches globally, if the input strings have a start-of-input
    -   * anchor (/^.../), it is ignored for the purposes of unioning.
    -   * @param {Array.<RegExp>} regexs non multiline, non-global regexs.
    -   * @return {RegExp} a global regex.
    -   */
    -  function combinePrefixPatterns(regexs) {
    -    var capturedGroupIndex = 0;
    -  
    -    var needToFoldCase = false;
    -    var ignoreCase = false;
    -    for (var i = 0, n = regexs.length; i < n; ++i) {
    -      var regex = regexs[i];
    -      if (regex.ignoreCase) {
    -        ignoreCase = true;
    -      } else if (/[a-z]/i.test(regex.source.replace(
    -                     /\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi, ''))) {
    -        needToFoldCase = true;
    -        ignoreCase = false;
    -        break;
    -      }
    -    }
    -  
    -    var escapeCharToCodeUnit = {
    -      'b': 8,
    -      't': 9,
    -      'n': 0xa,
    -      'v': 0xb,
    -      'f': 0xc,
    -      'r': 0xd
    -    };
    -  
    -    function decodeEscape(charsetPart) {
    -      var cc0 = charsetPart.charCodeAt(0);
    -      if (cc0 !== 92 /* \\ */) {
    -        return cc0;
    -      }
    -      var c1 = charsetPart.charAt(1);
    -      cc0 = escapeCharToCodeUnit[c1];
    -      if (cc0) {
    -        return cc0;
    -      } else if ('0' <= c1 && c1 <= '7') {
    -        return parseInt(charsetPart.substring(1), 8);
    -      } else if (c1 === 'u' || c1 === 'x') {
    -        return parseInt(charsetPart.substring(2), 16);
    -      } else {
    -        return charsetPart.charCodeAt(1);
    -      }
    -    }
    -  
    -    function encodeEscape(charCode) {
    -      if (charCode < 0x20) {
    -        return (charCode < 0x10 ? '\\x0' : '\\x') + charCode.toString(16);
    -      }
    -      var ch = String.fromCharCode(charCode);
    -      return (ch === '\\' || ch === '-' || ch === ']' || ch === '^')
    -          ? "\\" + ch : ch;
    -    }
    -  
    -    function caseFoldCharset(charSet) {
    -      var charsetParts = charSet.substring(1, charSet.length - 1).match(
    -          new RegExp(
    -              '\\\\u[0-9A-Fa-f]{4}'
    -              + '|\\\\x[0-9A-Fa-f]{2}'
    -              + '|\\\\[0-3][0-7]{0,2}'
    -              + '|\\\\[0-7]{1,2}'
    -              + '|\\\\[\\s\\S]'
    -              + '|-'
    -              + '|[^-\\\\]',
    -              'g'));
    -      var ranges = [];
    -      var inverse = charsetParts[0] === '^';
    -  
    -      var out = ['['];
    -      if (inverse) { out.push('^'); }
    -  
    -      for (var i = inverse ? 1 : 0, n = charsetParts.length; i < n; ++i) {
    -        var p = charsetParts[i];
    -        if (/\\[bdsw]/i.test(p)) {  // Don't muck with named groups.
    -          out.push(p);
    -        } else {
    -          var start = decodeEscape(p);
    -          var end;
    -          if (i + 2 < n && '-' === charsetParts[i + 1]) {
    -            end = decodeEscape(charsetParts[i + 2]);
    -            i += 2;
    -          } else {
    -            end = start;
    -          }
    -          ranges.push([start, end]);
    -          // If the range might intersect letters, then expand it.
    -          // This case handling is too simplistic.
    -          // It does not deal with non-latin case folding.
    -          // It works for latin source code identifiers though.
    -          if (!(end < 65 || start > 122)) {
    -            if (!(end < 65 || start > 90)) {
    -              ranges.push([Math.max(65, start) | 32, Math.min(end, 90) | 32]);
    -            }
    -            if (!(end < 97 || start > 122)) {
    -              ranges.push([Math.max(97, start) & ~32, Math.min(end, 122) & ~32]);
    -            }
    -          }
    -        }
    -      }
    -  
    -      // [[1, 10], [3, 4], [8, 12], [14, 14], [16, 16], [17, 17]]
    -      // -> [[1, 12], [14, 14], [16, 17]]
    -      ranges.sort(function (a, b) { return (a[0] - b[0]) || (b[1]  - a[1]); });
    -      var consolidatedRanges = [];
    -      var lastRange = [];
    -      for (var i = 0; i < ranges.length; ++i) {
    -        var range = ranges[i];
    -        if (range[0] <= lastRange[1] + 1) {
    -          lastRange[1] = Math.max(lastRange[1], range[1]);
    -        } else {
    -          consolidatedRanges.push(lastRange = range);
    -        }
    -      }
    -  
    -      for (var i = 0; i < consolidatedRanges.length; ++i) {
    -        var range = consolidatedRanges[i];
    -        out.push(encodeEscape(range[0]));
    -        if (range[1] > range[0]) {
    -          if (range[1] + 1 > range[0]) { out.push('-'); }
    -          out.push(encodeEscape(range[1]));
    -        }
    -      }
    -      out.push(']');
    -      return out.join('');
    -    }
    -  
    -    function allowAnywhereFoldCaseAndRenumberGroups(regex) {
    -      // Split into character sets, escape sequences, punctuation strings
    -      // like ('(', '(?:', ')', '^'), and runs of characters that do not
    -      // include any of the above.
    -      var parts = regex.source.match(
    -          new RegExp(
    -              '(?:'
    -              + '\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]'  // a character set
    -              + '|\\\\u[A-Fa-f0-9]{4}'  // a unicode escape
    -              + '|\\\\x[A-Fa-f0-9]{2}'  // a hex escape
    -              + '|\\\\[0-9]+'  // a back-reference or octal escape
    -              + '|\\\\[^ux0-9]'  // other escape sequence
    -              + '|\\(\\?[:!=]'  // start of a non-capturing group
    -              + '|[\\(\\)\\^]'  // start/end of a group, or line start
    -              + '|[^\\x5B\\x5C\\(\\)\\^]+'  // run of other characters
    -              + ')',
    -              'g'));
    -      var n = parts.length;
    -  
    -      // Maps captured group numbers to the number they will occupy in
    -      // the output or to -1 if that has not been determined, or to
    -      // undefined if they need not be capturing in the output.
    -      var capturedGroups = [];
    -  
    -      // Walk over and identify back references to build the capturedGroups
    -      // mapping.
    -      for (var i = 0, groupIndex = 0; i < n; ++i) {
    -        var p = parts[i];
    -        if (p === '(') {
    -          // groups are 1-indexed, so max group index is count of '('
    -          ++groupIndex;
    -        } else if ('\\' === p.charAt(0)) {
    -          var decimalValue = +p.substring(1);
    -          if (decimalValue) {
    -            if (decimalValue <= groupIndex) {
    -              capturedGroups[decimalValue] = -1;
    -            } else {
    -              // Replace with an unambiguous escape sequence so that
    -              // an octal escape sequence does not turn into a backreference
    -              // to a capturing group from an earlier regex.
    -              parts[i] = encodeEscape(decimalValue);
    -            }
    -          }
    -        }
    -      }
    -  
    -      // Renumber groups and reduce capturing groups to non-capturing groups
    -      // where possible.
    -      for (var i = 1; i < capturedGroups.length; ++i) {
    -        if (-1 === capturedGroups[i]) {
    -          capturedGroups[i] = ++capturedGroupIndex;
    -        }
    -      }
    -      for (var i = 0, groupIndex = 0; i < n; ++i) {
    -        var p = parts[i];
    -        if (p === '(') {
    -          ++groupIndex;
    -          if (!capturedGroups[groupIndex]) {
    -            parts[i] = '(?:';
    -          }
    -        } else if ('\\' === p.charAt(0)) {
    -          var decimalValue = +p.substring(1);
    -          if (decimalValue && decimalValue <= groupIndex) {
    -            parts[i] = '\\' + capturedGroups[decimalValue];
    -          }
    -        }
    -      }
    -  
    -      // Remove any prefix anchors so that the output will match anywhere.
    -      // ^^ really does mean an anchored match though.
    -      for (var i = 0; i < n; ++i) {
    -        if ('^' === parts[i] && '^' !== parts[i + 1]) { parts[i] = ''; }
    -      }
    -  
    -      // Expand letters to groups to handle mixing of case-sensitive and
    -      // case-insensitive patterns if necessary.
    -      if (regex.ignoreCase && needToFoldCase) {
    -        for (var i = 0; i < n; ++i) {
    -          var p = parts[i];
    -          var ch0 = p.charAt(0);
    -          if (p.length >= 2 && ch0 === '[') {
    -            parts[i] = caseFoldCharset(p);
    -          } else if (ch0 !== '\\') {
    -            // TODO: handle letters in numeric escapes.
    -            parts[i] = p.replace(
    -                /[a-zA-Z]/g,
    -                function (ch) {
    -                  var cc = ch.charCodeAt(0);
    -                  return '[' + String.fromCharCode(cc & ~32, cc | 32) + ']';
    -                });
    -          }
    -        }
    -      }
    -  
    -      return parts.join('');
    -    }
    -  
    -    var rewritten = [];
    -    for (var i = 0, n = regexs.length; i < n; ++i) {
    -      var regex = regexs[i];
    -      if (regex.global || regex.multiline) { throw new Error('' + regex); }
    -      rewritten.push(
    -          '(?:' + allowAnywhereFoldCaseAndRenumberGroups(regex) + ')');
    -    }
    -  
    -    return new RegExp(rewritten.join('|'), ignoreCase ? 'gi' : 'g');
    -  }
    -
    -  /**
    -   * Split markup into a string of source code and an array mapping ranges in
    -   * that string to the text nodes in which they appear.
    -   *
    -   * <p>
    -   * The HTML DOM structure:</p>
    -   * <pre>
    -   * (Element   "p"
    -   *   (Element "b"
    -   *     (Text  "print "))       ; #1
    -   *   (Text    "'Hello '")      ; #2
    -   *   (Element "br")            ; #3
    -   *   (Text    "  + 'World';")) ; #4
    -   * </pre>
    -   * <p>
    -   * corresponds to the HTML
    -   * {@code <p><b>print </b>'Hello '<br>  + 'World';</p>}.</p>
    -   *
    -   * <p>
    -   * It will produce the output:</p>
    -   * <pre>
    -   * {
    -   *   sourceCode: "print 'Hello '\n  + 'World';",
    -   *   //                     1          2
    -   *   //           012345678901234 5678901234567
    -   *   spans: [0, #1, 6, #2, 14, #3, 15, #4]
    -   * }
    -   * </pre>
    -   * <p>
    -   * where #1 is a reference to the {@code "print "} text node above, and so
    -   * on for the other text nodes.
    -   * </p>
    -   *
    -   * <p>
    -   * The {@code} spans array is an array of pairs.  Even elements are the start
    -   * indices of substrings, and odd elements are the text nodes (or BR elements)
    -   * that contain the text for those substrings.
    -   * Substrings continue until the next index or the end of the source.
    -   * </p>
    -   *
    -   * @param {Node} node an HTML DOM subtree containing source-code.
    -   * @param {boolean} isPreformatted true if white-space in text nodes should
    -   *    be considered significant.
    -   * @return {Object} source code and the text nodes in which they occur.
    -   */
    -  function extractSourceSpans(node, isPreformatted) {
    -    var nocode = /(?:^|\s)nocode(?:\s|$)/;
    -  
    -    var chunks = [];
    -    var length = 0;
    -    var spans = [];
    -    var k = 0;
    -  
    -    function walk(node) {
    -      var type = node.nodeType;
    -      if (type == 1) {  // Element
    -        if (nocode.test(node.className)) { return; }
    -        for (var child = node.firstChild; child; child = child.nextSibling) {
    -          walk(child);
    -        }
    -        var nodeName = node.nodeName.toLowerCase();
    -        if ('br' === nodeName || 'li' === nodeName) {
    -          chunks[k] = '\n';
    -          spans[k << 1] = length++;
    -          spans[(k++ << 1) | 1] = node;
    -        }
    -      } else if (type == 3 || type == 4) {  // Text
    -        var text = node.nodeValue;
    -        if (text.length) {
    -          if (!isPreformatted) {
    -            text = text.replace(/[ \t\r\n]+/g, ' ');
    -          } else {
    -            text = text.replace(/\r\n?/g, '\n');  // Normalize newlines.
    -          }
    -          // TODO: handle tabs here?
    -          chunks[k] = text;
    -          spans[k << 1] = length;
    -          length += text.length;
    -          spans[(k++ << 1) | 1] = node;
    -        }
    -      }
    -    }
    -  
    -    walk(node);
    -  
    -    return {
    -      sourceCode: chunks.join('').replace(/\n$/, ''),
    -      spans: spans
    -    };
    -  }
    -
    -  /**
    -   * Apply the given language handler to sourceCode and add the resulting
    -   * decorations to out.
    -   * @param {number} basePos the index of sourceCode within the chunk of source
    -   *    whose decorations are already present on out.
    -   */
    -  function appendDecorations(basePos, sourceCode, langHandler, out) {
    -    if (!sourceCode) { return; }
    -    var job = {
    -      sourceCode: sourceCode,
    -      basePos: basePos
    -    };
    -    langHandler(job);
    -    out.push.apply(out, job.decorations);
    -  }
    -
    -  var notWs = /\S/;
    -
    -  /**
    -   * Given an element, if it contains only one child element and any text nodes
    -   * it contains contain only space characters, return the sole child element.
    -   * Otherwise returns undefined.
    -   * <p>
    -   * This is meant to return the CODE element in {@code <pre><code ...>} when
    -   * there is a single child element that contains all the non-space textual
    -   * content, but not to return anything where there are multiple child elements
    -   * as in {@code <pre><code>...</code><code>...</code></pre>} or when there
    -   * is textual content.
    -   */
    -  function childContentWrapper(element) {
    -    var wrapper = undefined;
    -    for (var c = element.firstChild; c; c = c.nextSibling) {
    -      var type = c.nodeType;
    -      wrapper = (type === 1)  // Element Node
    -          ? (wrapper ? element : c)
    -          : (type === 3)  // Text Node
    -          ? (notWs.test(c.nodeValue) ? element : wrapper)
    -          : wrapper;
    -    }
    -    return wrapper === element ? undefined : wrapper;
    -  }
    -
    -  /** Given triples of [style, pattern, context] returns a lexing function,
    -    * The lexing function interprets the patterns to find token boundaries and
    -    * returns a decoration list of the form
    -    * [index_0, style_0, index_1, style_1, ..., index_n, style_n]
    -    * where index_n is an index into the sourceCode, and style_n is a style
    -    * constant like PR_PLAIN.  index_n-1 <= index_n, and style_n-1 applies to
    -    * all characters in sourceCode[index_n-1:index_n].
    -    *
    -    * The stylePatterns is a list whose elements have the form
    -    * [style : string, pattern : RegExp, DEPRECATED, shortcut : string].
    -    *
    -    * Style is a style constant like PR_PLAIN, or can be a string of the
    -    * form 'lang-FOO', where FOO is a language extension describing the
    -    * language of the portion of the token in $1 after pattern executes.
    -    * E.g., if style is 'lang-lisp', and group 1 contains the text
    -    * '(hello (world))', then that portion of the token will be passed to the
    -    * registered lisp handler for formatting.
    -    * The text before and after group 1 will be restyled using this decorator
    -    * so decorators should take care that this doesn't result in infinite
    -    * recursion.  For example, the HTML lexer rule for SCRIPT elements looks
    -    * something like ['lang-js', /<[s]cript>(.+?)<\/script>/].  This may match
    -    * '<script>foo()<\/script>', which would cause the current decorator to
    -    * be called with '<script>' which would not match the same rule since
    -    * group 1 must not be empty, so it would be instead styled as PR_TAG by
    -    * the generic tag rule.  The handler registered for the 'js' extension would
    -    * then be called with 'foo()', and finally, the current decorator would
    -    * be called with '<\/script>' which would not match the original rule and
    -    * so the generic tag rule would identify it as a tag.
    -    *
    -    * Pattern must only match prefixes, and if it matches a prefix, then that
    -    * match is considered a token with the same style.
    -    *
    -    * Context is applied to the last non-whitespace, non-comment token
    -    * recognized.
    -    *
    -    * Shortcut is an optional string of characters, any of which, if the first
    -    * character, gurantee that this pattern and only this pattern matches.
    -    *
    -    * @param {Array} shortcutStylePatterns patterns that always start with
    -    *   a known character.  Must have a shortcut string.
    -    * @param {Array} fallthroughStylePatterns patterns that will be tried in
    -    *   order if the shortcut ones fail.  May have shortcuts.
    -    *
    -    * @return {function (Object)} a
    -    *   function that takes source code and returns a list of decorations.
    -    */
    -  function createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns) {
    -    var shortcuts = {};
    -    var tokenizer;
    -    (function () {
    -      var allPatterns = shortcutStylePatterns.concat(fallthroughStylePatterns);
    -      var allRegexs = [];
    -      var regexKeys = {};
    -      for (var i = 0, n = allPatterns.length; i < n; ++i) {
    -        var patternParts = allPatterns[i];
    -        var shortcutChars = patternParts[3];
    -        if (shortcutChars) {
    -          for (var c = shortcutChars.length; --c >= 0;) {
    -            shortcuts[shortcutChars.charAt(c)] = patternParts;
    -          }
    -        }
    -        var regex = patternParts[1];
    -        var k = '' + regex;
    -        if (!regexKeys.hasOwnProperty(k)) {
    -          allRegexs.push(regex);
    -          regexKeys[k] = null;
    -        }
    -      }
    -      allRegexs.push(/[\0-\uffff]/);
    -      tokenizer = combinePrefixPatterns(allRegexs);
    -    })();
    -
    -    var nPatterns = fallthroughStylePatterns.length;
    -
    -    /**
    -     * Lexes job.sourceCode and produces an output array job.decorations of
    -     * style classes preceded by the position at which they start in
    -     * job.sourceCode in order.
    -     *
    -     * @param {Object} job an object like <pre>{
    -     *    sourceCode: {string} sourceText plain text,
    -     *    basePos: {int} position of job.sourceCode in the larger chunk of
    -     *        sourceCode.
    -     * }</pre>
    -     */
    -    var decorate = function (job) {
    -      var sourceCode = job.sourceCode, basePos = job.basePos;
    -      /** Even entries are positions in source in ascending order.  Odd enties
    -        * are style markers (e.g., PR_COMMENT) that run from that position until
    -        * the end.
    -        * @type {Array.<number|string>}
    -        */
    -      var decorations = [basePos, PR_PLAIN];
    -      var pos = 0;  // index into sourceCode
    -      var tokens = sourceCode.match(tokenizer) || [];
    -      var styleCache = {};
    -
    -      for (var ti = 0, nTokens = tokens.length; ti < nTokens; ++ti) {
    -        var token = tokens[ti];
    -        var style = styleCache[token];
    -        var match = void 0;
    -
    -        var isEmbedded;
    -        if (typeof style === 'string') {
    -          isEmbedded = false;
    -        } else {
    -          var patternParts = shortcuts[token.charAt(0)];
    -          if (patternParts) {
    -            match = token.match(patternParts[1]);
    -            style = patternParts[0];
    -          } else {
    -            for (var i = 0; i < nPatterns; ++i) {
    -              patternParts = fallthroughStylePatterns[i];
    -              match = token.match(patternParts[1]);
    -              if (match) {
    -                style = patternParts[0];
    -                break;
    -              }
    -            }
    -
    -            if (!match) {  // make sure that we make progress
    -              style = PR_PLAIN;
    -            }
    -          }
    -
    -          isEmbedded = style.length >= 5 && 'lang-' === style.substring(0, 5);
    -          if (isEmbedded && !(match && typeof match[1] === 'string')) {
    -            isEmbedded = false;
    -            style = PR_SOURCE;
    -          }
    -
    -          if (!isEmbedded) { styleCache[token] = style; }
    -        }
    -
    -        var tokenStart = pos;
    -        pos += token.length;
    -
    -        if (!isEmbedded) {
    -          decorations.push(basePos + tokenStart, style);
    -        } else {  // Treat group 1 as an embedded block of source code.
    -          var embeddedSource = match[1];
    -          var embeddedSourceStart = token.indexOf(embeddedSource);
    -          var embeddedSourceEnd = embeddedSourceStart + embeddedSource.length;
    -          if (match[2]) {
    -            // If embeddedSource can be blank, then it would match at the
    -            // beginning which would cause us to infinitely recurse on the
    -            // entire token, so we catch the right context in match[2].
    -            embeddedSourceEnd = token.length - match[2].length;
    -            embeddedSourceStart = embeddedSourceEnd - embeddedSource.length;
    -          }
    -          var lang = style.substring(5);
    -          // Decorate the left of the embedded source
    -          appendDecorations(
    -              basePos + tokenStart,
    -              token.substring(0, embeddedSourceStart),
    -              decorate, decorations);
    -          // Decorate the embedded source
    -          appendDecorations(
    -              basePos + tokenStart + embeddedSourceStart,
    -              embeddedSource,
    -              langHandlerForExtension(lang, embeddedSource),
    -              decorations);
    -          // Decorate the right of the embedded section
    -          appendDecorations(
    -              basePos + tokenStart + embeddedSourceEnd,
    -              token.substring(embeddedSourceEnd),
    -              decorate, decorations);
    -        }
    -      }
    -      job.decorations = decorations;
    -    };
    -    return decorate;
    -  }
    -
    -  /** returns a function that produces a list of decorations from source text.
    -    *
    -    * This code treats ", ', and ` as string delimiters, and \ as a string
    -    * escape.  It does not recognize perl's qq() style strings.
    -    * It has no special handling for double delimiter escapes as in basic, or
    -    * the tripled delimiters used in python, but should work on those regardless
    -    * although in those cases a single string literal may be broken up into
    -    * multiple adjacent string literals.
    -    *
    -    * It recognizes C, C++, and shell style comments.
    -    *
    -    * @param {Object} options a set of optional parameters.
    -    * @return {function (Object)} a function that examines the source code
    -    *     in the input job and builds the decoration list.
    -    */
    -  function sourceDecorator(options) {
    -    var shortcutStylePatterns = [], fallthroughStylePatterns = [];
    -    if (options['tripleQuotedStrings']) {
    -      // '''multi-line-string''', 'single-line-string', and double-quoted
    -      shortcutStylePatterns.push(
    -          [PR_STRING,  /^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,
    -           null, '\'"']);
    -    } else if (options['multiLineStrings']) {
    -      // 'multi-line-string', "multi-line-string"
    -      shortcutStylePatterns.push(
    -          [PR_STRING,  /^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,
    -           null, '\'"`']);
    -    } else {
    -      // 'single-line-string', "single-line-string"
    -      shortcutStylePatterns.push(
    -          [PR_STRING,
    -           /^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,
    -           null, '"\'']);
    -    }
    -    if (options['verbatimStrings']) {
    -      // verbatim-string-literal production from the C# grammar.  See issue 93.
    -      fallthroughStylePatterns.push(
    -          [PR_STRING, /^@\"(?:[^\"]|\"\")*(?:\"|$)/, null]);
    -    }
    -    var hc = options['hashComments'];
    -    if (hc) {
    -      if (options['cStyleComments']) {
    -        if (hc > 1) {  // multiline hash comments
    -          shortcutStylePatterns.push(
    -              [PR_COMMENT, /^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/, null, '#']);
    -        } else {
    -          // Stop C preprocessor declarations at an unclosed open comment
    -          shortcutStylePatterns.push(
    -              [PR_COMMENT, /^#(?:(?:define|e(?:l|nd)if|else|error|ifn?def|include|line|pragma|undef|warning)\b|[^\r\n]*)/,
    -               null, '#']);
    -        }
    -        // #include <stdio.h>
    -        fallthroughStylePatterns.push(
    -            [PR_STRING,
    -             /^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h(?:h|pp|\+\+)?|[a-z]\w*)>/,
    -             null]);
    -      } else {
    -        shortcutStylePatterns.push([PR_COMMENT, /^#[^\r\n]*/, null, '#']);
    -      }
    -    }
    -    if (options['cStyleComments']) {
    -      fallthroughStylePatterns.push([PR_COMMENT, /^\/\/[^\r\n]*/, null]);
    -      fallthroughStylePatterns.push(
    -          [PR_COMMENT, /^\/\*[\s\S]*?(?:\*\/|$)/, null]);
    -    }
    -    var regexLiterals = options['regexLiterals'];
    -    if (regexLiterals) {
    -      /**
    -       * @const
    -       */
    -      var regexExcls = regexLiterals > 1
    -        ? ''  // Multiline regex literals
    -        : '\n\r';
    -      /**
    -       * @const
    -       */
    -      var regexAny = regexExcls ? '.' : '[\\S\\s]';
    -      /**
    -       * @const
    -       */
    -      var REGEX_LITERAL = (
    -          // A regular expression literal starts with a slash that is
    -          // not followed by * or / so that it is not confused with
    -          // comments.
    -          '/(?=[^/*' + regexExcls + '])'
    -          // and then contains any number of raw characters,
    -          + '(?:[^/\\x5B\\x5C' + regexExcls + ']'
    -          // escape sequences (\x5C),
    -          +    '|\\x5C' + regexAny
    -          // or non-nesting character sets (\x5B\x5D);
    -          +    '|\\x5B(?:[^\\x5C\\x5D' + regexExcls + ']'
    -          +             '|\\x5C' + regexAny + ')*(?:\\x5D|$))+'
    -          // finally closed by a /.
    -          + '/');
    -      fallthroughStylePatterns.push(
    -          ['lang-regex',
    -           RegExp('^' + REGEXP_PRECEDER_PATTERN + '(' + REGEX_LITERAL + ')')
    -           ]);
    -    }
    -
    -    var types = options['types'];
    -    if (types) {
    -      fallthroughStylePatterns.push([PR_TYPE, types]);
    -    }
    -
    -    var keywords = ("" + options['keywords']).replace(/^ | $/g, '');
    -    if (keywords.length) {
    -      fallthroughStylePatterns.push(
    -          [PR_KEYWORD,
    -           new RegExp('^(?:' + keywords.replace(/[\s,]+/g, '|') + ')\\b'),
    -           null]);
    -    }
    -
    -    shortcutStylePatterns.push([PR_PLAIN,       /^\s+/, null, ' \r\n\t\xA0']);
    -
    -    var punctuation =
    -      // The Bash man page says
    -
    -      // A word is a sequence of characters considered as a single
    -      // unit by GRUB. Words are separated by metacharacters,
    -      // which are the following plus space, tab, and newline: { }
    -      // | & $ ; < >
    -      // ...
    -      
    -      // A word beginning with # causes that word and all remaining
    -      // characters on that line to be ignored.
    -
    -      // which means that only a '#' after /(?:^|[{}|&$;<>\s])/ starts a
    -      // comment but empirically
    -      // $ echo {#}
    -      // {#}
    -      // $ echo \$#
    -      // $#
    -      // $ echo }#
    -      // }#
    -
    -      // so /(?:^|[|&;<>\s])/ is more appropriate.
    -
    -      // http://gcc.gnu.org/onlinedocs/gcc-2.95.3/cpp_1.html#SEC3
    -      // suggests that this definition is compatible with a
    -      // default mode that tries to use a single token definition
    -      // to recognize both bash/python style comments and C
    -      // preprocessor directives.
    -
    -      // This definition of punctuation does not include # in the list of
    -      // follow-on exclusions, so # will not be broken before if preceeded
    -      // by a punctuation character.  We could try to exclude # after
    -      // [|&;<>] but that doesn't seem to cause many major problems.
    -      // If that does turn out to be a problem, we should change the below
    -      // when hc is truthy to include # in the run of punctuation characters
    -      // only when not followint [|&;<>].
    -      '^.[^\\s\\w.$@\'"`/\\\\]*';
    -    if (options['regexLiterals']) {
    -      punctuation += '(?!\s*\/)';
    -    }
    -
    -    fallthroughStylePatterns.push(
    -        // TODO(mikesamuel): recognize non-latin letters and numerals in idents
    -        [PR_LITERAL,     /^@[a-z_$][a-z_$@0-9]*/i, null],
    -        [PR_TYPE,        /^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/, null],
    -        [PR_PLAIN,       /^[a-z_$][a-z_$@0-9]*/i, null],
    -        [PR_LITERAL,
    -         new RegExp(
    -             '^(?:'
    -             // A hex number
    -             + '0x[a-f0-9]+'
    -             // or an octal or decimal number,
    -             + '|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)'
    -             // possibly in scientific notation
    -             + '(?:e[+\\-]?\\d+)?'
    -             + ')'
    -             // with an optional modifier like UL for unsigned long
    -             + '[a-z]*', 'i'),
    -         null, '0123456789'],
    -        // Don't treat escaped quotes in bash as starting strings.
    -        // See issue 144.
    -        [PR_PLAIN,       /^\\[\s\S]?/, null],
    -        [PR_PUNCTUATION, new RegExp(punctuation), null]);
    -
    -    return createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns);
    -  }
    -
    -  var decorateSource = sourceDecorator({
    -        'keywords': ALL_KEYWORDS,
    -        'hashComments': true,
    -        'cStyleComments': true,
    -        'multiLineStrings': true,
    -        'regexLiterals': true
    -      });
    -
    -  /**
    -   * Given a DOM subtree, wraps it in a list, and puts each line into its own
    -   * list item.
    -   *
    -   * @param {Node} node modified in place.  Its content is pulled into an
    -   *     HTMLOListElement, and each line is moved into a separate list item.
    -   *     This requires cloning elements, so the input might not have unique
    -   *     IDs after numbering.
    -   * @param {boolean} isPreformatted true iff white-space in text nodes should
    -   *     be treated as significant.
    -   */
    -  function numberLines(node, opt_startLineNum, isPreformatted) {
    -    var nocode = /(?:^|\s)nocode(?:\s|$)/;
    -    var lineBreak = /\r\n?|\n/;
    -  
    -    var document = node.ownerDocument;
    -  
    -    var li = document.createElement('li');
    -    while (node.firstChild) {
    -      li.appendChild(node.firstChild);
    -    }
    -    // An array of lines.  We split below, so this is initialized to one
    -    // un-split line.
    -    var listItems = [li];
    -  
    -    function walk(node) {
    -      var type = node.nodeType;
    -      if (type == 1 && !nocode.test(node.className)) {  // Element
    -        if ('br' === node.nodeName) {
    -          breakAfter(node);
    -          // Discard the <BR> since it is now flush against a </LI>.
    -          if (node.parentNode) {
    -            node.parentNode.removeChild(node);
    -          }
    -        } else {
    -          for (var child = node.firstChild; child; child = child.nextSibling) {
    -            walk(child);
    -          }
    -        }
    -      } else if ((type == 3 || type == 4) && isPreformatted) {  // Text
    -        var text = node.nodeValue;
    -        var match = text.match(lineBreak);
    -        if (match) {
    -          var firstLine = text.substring(0, match.index);
    -          node.nodeValue = firstLine;
    -          var tail = text.substring(match.index + match[0].length);
    -          if (tail) {
    -            var parent = node.parentNode;
    -            parent.insertBefore(
    -              document.createTextNode(tail), node.nextSibling);
    -          }
    -          breakAfter(node);
    -          if (!firstLine) {
    -            // Don't leave blank text nodes in the DOM.
    -            node.parentNode.removeChild(node);
    -          }
    -        }
    -      }
    -    }
    -  
    -    // Split a line after the given node.
    -    function breakAfter(lineEndNode) {
    -      // If there's nothing to the right, then we can skip ending the line
    -      // here, and move root-wards since splitting just before an end-tag
    -      // would require us to create a bunch of empty copies.
    -      while (!lineEndNode.nextSibling) {
    -        lineEndNode = lineEndNode.parentNode;
    -        if (!lineEndNode) { return; }
    -      }
    -  
    -      function breakLeftOf(limit, copy) {
    -        // Clone shallowly if this node needs to be on both sides of the break.
    -        var rightSide = copy ? limit.cloneNode(false) : limit;
    -        var parent = limit.parentNode;
    -        if (parent) {
    -          // We clone the parent chain.
    -          // This helps us resurrect important styling elements that cross lines.
    -          // E.g. in <i>Foo<br>Bar</i>
    -          // should be rewritten to <li><i>Foo</i></li><li><i>Bar</i></li>.
    -          var parentClone = breakLeftOf(parent, 1);
    -          // Move the clone and everything to the right of the original
    -          // onto the cloned parent.
    -          var next = limit.nextSibling;
    -          parentClone.appendChild(rightSide);
    -          for (var sibling = next; sibling; sibling = next) {
    -            next = sibling.nextSibling;
    -            parentClone.appendChild(sibling);
    -          }
    -        }
    -        return rightSide;
    -      }
    -  
    -      var copiedListItem = breakLeftOf(lineEndNode.nextSibling, 0);
    -  
    -      // Walk the parent chain until we reach an unattached LI.
    -      for (var parent;
    -           // Check nodeType since IE invents document fragments.
    -           (parent = copiedListItem.parentNode) && parent.nodeType === 1;) {
    -        copiedListItem = parent;
    -      }
    -      // Put it on the list of lines for later processing.
    -      listItems.push(copiedListItem);
    -    }
    -  
    -    // Split lines while there are lines left to split.
    -    for (var i = 0;  // Number of lines that have been split so far.
    -         i < listItems.length;  // length updated by breakAfter calls.
    -         ++i) {
    -      walk(listItems[i]);
    -    }
    -  
    -    // Make sure numeric indices show correctly.
    -    if (opt_startLineNum === (opt_startLineNum|0)) {
    -      listItems[0].setAttribute('value', opt_startLineNum);
    -    }
    -  
    -    var ol = document.createElement('ol');
    -    ol.className = 'linenums';
    -    var offset = Math.max(0, ((opt_startLineNum - 1 /* zero index */)) | 0) || 0;
    -    for (var i = 0, n = listItems.length; i < n; ++i) {
    -      li = listItems[i];
    -      // Stick a class on the LIs so that stylesheets can
    -      // color odd/even rows, or any other row pattern that
    -      // is co-prime with 10.
    -      li.className = 'L' + ((i + offset) % 10);
    -      if (!li.firstChild) {
    -        li.appendChild(document.createTextNode('\xA0'));
    -      }
    -      ol.appendChild(li);
    -    }
    -  
    -    node.appendChild(ol);
    -  }
    -  /**
    -   * Breaks {@code job.sourceCode} around style boundaries in
    -   * {@code job.decorations} and modifies {@code job.sourceNode} in place.
    -   * @param {Object} job like <pre>{
    -   *    sourceCode: {string} source as plain text,
    -   *    sourceNode: {HTMLElement} the element containing the source,
    -   *    spans: {Array.<number|Node>} alternating span start indices into source
    -   *       and the text node or element (e.g. {@code <BR>}) corresponding to that
    -   *       span.
    -   *    decorations: {Array.<number|string} an array of style classes preceded
    -   *       by the position at which they start in job.sourceCode in order
    -   * }</pre>
    -   * @private
    -   */
    -  function recombineTagsAndDecorations(job) {
    -    var isIE8OrEarlier = /\bMSIE\s(\d+)/.exec(navigator.userAgent);
    -    isIE8OrEarlier = isIE8OrEarlier && +isIE8OrEarlier[1] <= 8;
    -    var newlineRe = /\n/g;
    -  
    -    var source = job.sourceCode;
    -    var sourceLength = source.length;
    -    // Index into source after the last code-unit recombined.
    -    var sourceIndex = 0;
    -  
    -    var spans = job.spans;
    -    var nSpans = spans.length;
    -    // Index into spans after the last span which ends at or before sourceIndex.
    -    var spanIndex = 0;
    -  
    -    var decorations = job.decorations;
    -    var nDecorations = decorations.length;
    -    // Index into decorations after the last decoration which ends at or before
    -    // sourceIndex.
    -    var decorationIndex = 0;
    -  
    -    // Remove all zero-length decorations.
    -    decorations[nDecorations] = sourceLength;
    -    var decPos, i;
    -    for (i = decPos = 0; i < nDecorations;) {
    -      if (decorations[i] !== decorations[i + 2]) {
    -        decorations[decPos++] = decorations[i++];
    -        decorations[decPos++] = decorations[i++];
    -      } else {
    -        i += 2;
    -      }
    -    }
    -    nDecorations = decPos;
    -  
    -    // Simplify decorations.
    -    for (i = decPos = 0; i < nDecorations;) {
    -      var startPos = decorations[i];
    -      // Conflate all adjacent decorations that use the same style.
    -      var startDec = decorations[i + 1];
    -      var end = i + 2;
    -      while (end + 2 <= nDecorations && decorations[end + 1] === startDec) {
    -        end += 2;
    -      }
    -      decorations[decPos++] = startPos;
    -      decorations[decPos++] = startDec;
    -      i = end;
    -    }
    -  
    -    nDecorations = decorations.length = decPos;
    -  
    -    var sourceNode = job.sourceNode;
    -    var oldDisplay;
    -    if (sourceNode) {
    -      oldDisplay = sourceNode.style.display;
    -      sourceNode.style.display = 'none';
    -    }
    -    try {
    -      var decoration = null;
    -      while (spanIndex < nSpans) {
    -        var spanStart = spans[spanIndex];
    -        var spanEnd = spans[spanIndex + 2] || sourceLength;
    -  
    -        var decEnd = decorations[decorationIndex + 2] || sourceLength;
    -  
    -        var end = Math.min(spanEnd, decEnd);
    -  
    -        var textNode = spans[spanIndex + 1];
    -        var styledText;
    -        if (textNode.nodeType !== 1  // Don't muck with <BR>s or <LI>s
    -            // Don't introduce spans around empty text nodes.
    -            && (styledText = source.substring(sourceIndex, end))) {
    -          // This may seem bizarre, and it is.  Emitting LF on IE causes the
    -          // code to display with spaces instead of line breaks.
    -          // Emitting Windows standard issue linebreaks (CRLF) causes a blank
    -          // space to appear at the beginning of every line but the first.
    -          // Emitting an old Mac OS 9 line separator makes everything spiffy.
    -          if (isIE8OrEarlier) {
    -            styledText = styledText.replace(newlineRe, '\r');
    -          }
    -          textNode.nodeValue = styledText;
    -          var document = textNode.ownerDocument;
    -          var span = document.createElement('span');
    -          span.className = decorations[decorationIndex + 1];
    -          var parentNode = textNode.parentNode;
    -          parentNode.replaceChild(span, textNode);
    -          span.appendChild(textNode);
    -          if (sourceIndex < spanEnd) {  // Split off a text node.
    -            spans[spanIndex + 1] = textNode
    -                // TODO: Possibly optimize by using '' if there's no flicker.
    -                = document.createTextNode(source.substring(end, spanEnd));
    -            parentNode.insertBefore(textNode, span.nextSibling);
    -          }
    -        }
    -  
    -        sourceIndex = end;
    -  
    -        if (sourceIndex >= spanEnd) {
    -          spanIndex += 2;
    -        }
    -        if (sourceIndex >= decEnd) {
    -          decorationIndex += 2;
    -        }
    -      }
    -    } finally {
    -      if (sourceNode) {
    -        sourceNode.style.display = oldDisplay;
    -      }
    -    }
    -  }
    -
    -  /** Maps language-specific file extensions to handlers. */
    -  var langHandlerRegistry = {};
    -  /** Register a language handler for the given file extensions.
    -    * @param {function (Object)} handler a function from source code to a list
    -    *      of decorations.  Takes a single argument job which describes the
    -    *      state of the computation.   The single parameter has the form
    -    *      {@code {
    -    *        sourceCode: {string} as plain text.
    -    *        decorations: {Array.<number|string>} an array of style classes
    -    *                     preceded by the position at which they start in
    -    *                     job.sourceCode in order.
    -    *                     The language handler should assigned this field.
    -    *        basePos: {int} the position of source in the larger source chunk.
    -    *                 All positions in the output decorations array are relative
    -    *                 to the larger source chunk.
    -    *      } }
    -    * @param {Array.<string>} fileExtensions
    -    */
    -  function registerLangHandler(handler, fileExtensions) {
    -    for (var i = fileExtensions.length; --i >= 0;) {
    -      var ext = fileExtensions[i];
    -      if (!langHandlerRegistry.hasOwnProperty(ext)) {
    -        langHandlerRegistry[ext] = handler;
    -      } else if (win['console']) {
    -        console['warn']('cannot override language handler %s', ext);
    -      }
    -    }
    -  }
    -  function langHandlerForExtension(extension, source) {
    -    if (!(extension && langHandlerRegistry.hasOwnProperty(extension))) {
    -      // Treat it as markup if the first non whitespace character is a < and
    -      // the last non-whitespace character is a >.
    -      extension = /^\s*</.test(source)
    -          ? 'default-markup'
    -          : 'default-code';
    -    }
    -    return langHandlerRegistry[extension];
    -  }
    -  registerLangHandler(decorateSource, ['default-code']);
    -  registerLangHandler(
    -      createSimpleLexer(
    -          [],
    -          [
    -           [PR_PLAIN,       /^[^<?]+/],
    -           [PR_DECLARATION, /^<!\w[^>]*(?:>|$)/],
    -           [PR_COMMENT,     /^<\!--[\s\S]*?(?:-\->|$)/],
    -           // Unescaped content in an unknown language
    -           ['lang-',        /^<\?([\s\S]+?)(?:\?>|$)/],
    -           ['lang-',        /^<%([\s\S]+?)(?:%>|$)/],
    -           [PR_PUNCTUATION, /^(?:<[%?]|[%?]>)/],
    -           ['lang-',        /^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],
    -           // Unescaped content in javascript.  (Or possibly vbscript).
    -           ['lang-js',      /^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],
    -           // Contains unescaped stylesheet content
    -           ['lang-css',     /^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],
    -           ['lang-in.tag',  /^(<\/?[a-z][^<>]*>)/i]
    -          ]),
    -      ['default-markup', 'htm', 'html', 'mxml', 'xhtml', 'xml', 'xsl']);
    -  registerLangHandler(
    -      createSimpleLexer(
    -          [
    -           [PR_PLAIN,        /^[\s]+/, null, ' \t\r\n'],
    -           [PR_ATTRIB_VALUE, /^(?:\"[^\"]*\"?|\'[^\']*\'?)/, null, '\"\'']
    -           ],
    -          [
    -           [PR_TAG,          /^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],
    -           [PR_ATTRIB_NAME,  /^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],
    -           ['lang-uq.val',   /^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],
    -           [PR_PUNCTUATION,  /^[=<>\/]+/],
    -           ['lang-js',       /^on\w+\s*=\s*\"([^\"]+)\"/i],
    -           ['lang-js',       /^on\w+\s*=\s*\'([^\']+)\'/i],
    -           ['lang-js',       /^on\w+\s*=\s*([^\"\'>\s]+)/i],
    -           ['lang-css',      /^style\s*=\s*\"([^\"]+)\"/i],
    -           ['lang-css',      /^style\s*=\s*\'([^\']+)\'/i],
    -           ['lang-css',      /^style\s*=\s*([^\"\'>\s]+)/i]
    -           ]),
    -      ['in.tag']);
    -  registerLangHandler(
    -      createSimpleLexer([], [[PR_ATTRIB_VALUE, /^[\s\S]+/]]), ['uq.val']);
    -  registerLangHandler(sourceDecorator({
    -          'keywords': CPP_KEYWORDS,
    -          'hashComments': true,
    -          'cStyleComments': true,
    -          'types': C_TYPES
    -        }), ['c', 'cc', 'cpp', 'cxx', 'cyc', 'm']);
    -  registerLangHandler(sourceDecorator({
    -          'keywords': 'null,true,false'
    -        }), ['json']);
    -  registerLangHandler(sourceDecorator({
    -          'keywords': CSHARP_KEYWORDS,
    -          'hashComments': true,
    -          'cStyleComments': true,
    -          'verbatimStrings': true,
    -          'types': C_TYPES
    -        }), ['cs']);
    -  registerLangHandler(sourceDecorator({
    -          'keywords': JAVA_KEYWORDS,
    -          'cStyleComments': true
    -        }), ['java']);
    -  registerLangHandler(sourceDecorator({
    -          'keywords': SH_KEYWORDS,
    -          'hashComments': true,
    -          'multiLineStrings': true
    -        }), ['bash', 'bsh', 'csh', 'sh']);
    -  registerLangHandler(sourceDecorator({
    -          'keywords': PYTHON_KEYWORDS,
    -          'hashComments': true,
    -          'multiLineStrings': true,
    -          'tripleQuotedStrings': true
    -        }), ['cv', 'py', 'python']);
    -  registerLangHandler(sourceDecorator({
    -          'keywords': PERL_KEYWORDS,
    -          'hashComments': true,
    -          'multiLineStrings': true,
    -          'regexLiterals': 2  // multiline regex literals
    -        }), ['perl', 'pl', 'pm']);
    -  registerLangHandler(sourceDecorator({
    -          'keywords': RUBY_KEYWORDS,
    -          'hashComments': true,
    -          'multiLineStrings': true,
    -          'regexLiterals': true
    -        }), ['rb', 'ruby']);
    -  registerLangHandler(sourceDecorator({
    -          'keywords': JSCRIPT_KEYWORDS,
    -          'cStyleComments': true,
    -          'regexLiterals': true
    -        }), ['javascript', 'js']);
    -  registerLangHandler(sourceDecorator({
    -          'keywords': COFFEE_KEYWORDS,
    -          'hashComments': 3,  // ### style block comments
    -          'cStyleComments': true,
    -          'multilineStrings': true,
    -          'tripleQuotedStrings': true,
    -          'regexLiterals': true
    -        }), ['coffee']);
    -  registerLangHandler(sourceDecorator({
    -          'keywords': RUST_KEYWORDS,
    -          'cStyleComments': true,
    -          'multilineStrings': true
    -        }), ['rc', 'rs', 'rust']);
    -  registerLangHandler(
    -      createSimpleLexer([], [[PR_STRING, /^[\s\S]+/]]), ['regex']);
    -
    -  function applyDecorator(job) {
    -    var opt_langExtension = job.langExtension;
    -
    -    try {
    -      // Extract tags, and convert the source code to plain text.
    -      var sourceAndSpans = extractSourceSpans(job.sourceNode, job.pre);
    -      /** Plain text. @type {string} */
    -      var source = sourceAndSpans.sourceCode;
    -      job.sourceCode = source;
    -      job.spans = sourceAndSpans.spans;
    -      job.basePos = 0;
    -
    -      // Apply the appropriate language handler
    -      langHandlerForExtension(opt_langExtension, source)(job);
    -
    -      // Integrate the decorations and tags back into the source code,
    -      // modifying the sourceNode in place.
    -      recombineTagsAndDecorations(job);
    -    } catch (e) {
    -      if (win['console']) {
    -        console['log'](e && e['stack'] || e);
    -      }
    -    }
    -  }
    -
    -  /**
    -   * Pretty print a chunk of code.
    -   * @param sourceCodeHtml {string} The HTML to pretty print.
    -   * @param opt_langExtension {string} The language name to use.
    -   *     Typically, a filename extension like 'cpp' or 'java'.
    -   * @param opt_numberLines {number|boolean} True to number lines,
    -   *     or the 1-indexed number of the first line in sourceCodeHtml.
    -   */
    -  function $prettyPrintOne(sourceCodeHtml, opt_langExtension, opt_numberLines) {
    -    var container = document.createElement('div');
    -    // This could cause images to load and onload listeners to fire.
    -    // E.g. <img onerror="alert(1337)" src="nosuchimage.png">.
    -    // We assume that the inner HTML is from a trusted source.
    -    // The pre-tag is required for IE8 which strips newlines from innerHTML
    -    // when it is injected into a <pre> tag.
    -    // http://stackoverflow.com/questions/451486/pre-tag-loses-line-breaks-when-setting-innerhtml-in-ie
    -    // http://stackoverflow.com/questions/195363/inserting-a-newline-into-a-pre-tag-ie-javascript
    -    container.innerHTML = '<pre>' + sourceCodeHtml + '</pre>';
    -    container = container.firstChild;
    -    if (opt_numberLines) {
    -      numberLines(container, opt_numberLines, true);
    -    }
    -
    -    var job = {
    -      langExtension: opt_langExtension,
    -      numberLines: opt_numberLines,
    -      sourceNode: container,
    -      pre: 1
    -    };
    -    applyDecorator(job);
    -    return container.innerHTML;
    -  }
    -
    -   /**
    -    * Find all the {@code <pre>} and {@code <code>} tags in the DOM with
    -    * {@code class=prettyprint} and prettify them.
    -    *
    -    * @param {Function} opt_whenDone called when prettifying is done.
    -    * @param {HTMLElement|HTMLDocument} opt_root an element or document
    -    *   containing all the elements to pretty print.
    -    *   Defaults to {@code document.body}.
    -    */
    -  function $prettyPrint(opt_whenDone, opt_root) {
    -    var root = opt_root || document.body;
    -    var doc = root.ownerDocument || document;
    -    function byTagName(tn) { return root.getElementsByTagName(tn); }
    -    // fetch a list of nodes to rewrite
    -    var codeSegments = [byTagName('pre'), byTagName('code'), byTagName('xmp')];
    -    var elements = [];
    -    for (var i = 0; i < codeSegments.length; ++i) {
    -      for (var j = 0, n = codeSegments[i].length; j < n; ++j) {
    -        elements.push(codeSegments[i][j]);
    -      }
    -    }
    -    codeSegments = null;
    -
    -    var clock = Date;
    -    if (!clock['now']) {
    -      clock = { 'now': function () { return +(new Date); } };
    -    }
    -
    -    // The loop is broken into a series of continuations to make sure that we
    -    // don't make the browser unresponsive when rewriting a large page.
    -    var k = 0;
    -    var prettyPrintingJob;
    -
    -    var langExtensionRe = /\blang(?:uage)?-([\w.]+)(?!\S)/;
    -    var prettyPrintRe = /\bprettyprint\b/;
    -    var prettyPrintedRe = /\bprettyprinted\b/;
    -    var preformattedTagNameRe = /pre|xmp/i;
    -    var codeRe = /^code$/i;
    -    var preCodeXmpRe = /^(?:pre|code|xmp)$/i;
    -    var EMPTY = {};
    -
    -    function doWork() {
    -      var endTime = (win['PR_SHOULD_USE_CONTINUATION'] ?
    -                     clock['now']() + 250 /* ms */ :
    -                     Infinity);
    -      for (; k < elements.length && clock['now']() < endTime; k++) {
    -        var cs = elements[k];
    -
    -        // Look for a preceding comment like
    -        // <?prettify lang="..." linenums="..."?>
    -        var attrs = EMPTY;
    -        {
    -          for (var preceder = cs; (preceder = preceder.previousSibling);) {
    -            var nt = preceder.nodeType;
    -            // <?foo?> is parsed by HTML 5 to a comment node (8)
    -            // like <!--?foo?-->, but in XML is a processing instruction
    -            var value = (nt === 7 || nt === 8) && preceder.nodeValue;
    -            if (value
    -                ? !/^\??prettify\b/.test(value)
    -                : (nt !== 3 || /\S/.test(preceder.nodeValue))) {
    -              // Skip over white-space text nodes but not others.
    -              break;
    -            }
    -            if (value) {
    -              attrs = {};
    -              value.replace(
    -                  /\b(\w+)=([\w:.%+-]+)/g,
    -                function (_, name, value) { attrs[name] = value; });
    -              break;
    -            }
    -          }
    -        }
    -
    -        var className = cs.className;
    -        if ((attrs !== EMPTY || prettyPrintRe.test(className))
    -            // Don't redo this if we've already done it.
    -            // This allows recalling pretty print to just prettyprint elements
    -            // that have been added to the page since last call.
    -            && !prettyPrintedRe.test(className)) {
    -
    -          // make sure this is not nested in an already prettified element
    -          var nested = false;
    -          for (var p = cs.parentNode; p; p = p.parentNode) {
    -            var tn = p.tagName;
    -            if (preCodeXmpRe.test(tn)
    -                && p.className && prettyPrintRe.test(p.className)) {
    -              nested = true;
    -              break;
    -            }
    -          }
    -          if (!nested) {
    -            // Mark done.  If we fail to prettyprint for whatever reason,
    -            // we shouldn't try again.
    -            cs.className += ' prettyprinted';
    -
    -            // If the classes includes a language extensions, use it.
    -            // Language extensions can be specified like
    -            //     <pre class="prettyprint lang-cpp">
    -            // the language extension "cpp" is used to find a language handler
    -            // as passed to PR.registerLangHandler.
    -            // HTML5 recommends that a language be specified using "language-"
    -            // as the prefix instead.  Google Code Prettify supports both.
    -            // http://dev.w3.org/html5/spec-author-view/the-code-element.html
    -            var langExtension = attrs['lang'];
    -            if (!langExtension) {
    -              langExtension = className.match(langExtensionRe);
    -              // Support <pre class="prettyprint"><code class="language-c">
    -              var wrapper;
    -              if (!langExtension && (wrapper = childContentWrapper(cs))
    -                  && codeRe.test(wrapper.tagName)) {
    -                langExtension = wrapper.className.match(langExtensionRe);
    -              }
    -
    -              if (langExtension) { langExtension = langExtension[1]; }
    -            }
    -
    -            var preformatted;
    -            if (preformattedTagNameRe.test(cs.tagName)) {
    -              preformatted = 1;
    -            } else {
    -              var currentStyle = cs['currentStyle'];
    -              var defaultView = doc.defaultView;
    -              var whitespace = (
    -                  currentStyle
    -                  ? currentStyle['whiteSpace']
    -                  : (defaultView
    -                     && defaultView.getComputedStyle)
    -                  ? defaultView.getComputedStyle(cs, null)
    -                  .getPropertyValue('white-space')
    -                  : 0);
    -              preformatted = whitespace
    -                  && 'pre' === whitespace.substring(0, 3);
    -            }
    -
    -            // Look for a class like linenums or linenums:<n> where <n> is the
    -            // 1-indexed number of the first line.
    -            var lineNums = attrs['linenums'];
    -            if (!(lineNums = lineNums === 'true' || +lineNums)) {
    -              lineNums = className.match(/\blinenums\b(?::(\d+))?/);
    -              lineNums =
    -                lineNums
    -                ? lineNums[1] && lineNums[1].length
    -                  ? +lineNums[1] : true
    -                : false;
    -            }
    -            if (lineNums) { numberLines(cs, lineNums, preformatted); }
    -
    -            // do the pretty printing
    -            prettyPrintingJob = {
    -              langExtension: langExtension,
    -              sourceNode: cs,
    -              numberLines: lineNums,
    -              pre: preformatted
    -            };
    -            applyDecorator(prettyPrintingJob);
    -          }
    -        }
    -      }
    -      if (k < elements.length) {
    -        // finish up in a continuation
    -        setTimeout(doWork, 250);
    -      } else if ('function' === typeof opt_whenDone) {
    -        opt_whenDone();
    -      }
    -    }
    -
    -    doWork();
    -  }
    -
    -  /**
    -   * Contains functions for creating and registering new language handlers.
    -   * @type {Object}
    -   */
    -  var PR = win['PR'] = {
    -        'createSimpleLexer': createSimpleLexer,
    -        'registerLangHandler': registerLangHandler,
    -        'sourceDecorator': sourceDecorator,
    -        'PR_ATTRIB_NAME': PR_ATTRIB_NAME,
    -        'PR_ATTRIB_VALUE': PR_ATTRIB_VALUE,
    -        'PR_COMMENT': PR_COMMENT,
    -        'PR_DECLARATION': PR_DECLARATION,
    -        'PR_KEYWORD': PR_KEYWORD,
    -        'PR_LITERAL': PR_LITERAL,
    -        'PR_NOCODE': PR_NOCODE,
    -        'PR_PLAIN': PR_PLAIN,
    -        'PR_PUNCTUATION': PR_PUNCTUATION,
    -        'PR_SOURCE': PR_SOURCE,
    -        'PR_STRING': PR_STRING,
    -        'PR_TAG': PR_TAG,
    -        'PR_TYPE': PR_TYPE,
    -        'prettyPrintOne':
    -           IN_GLOBAL_SCOPE
    -             ? (win['prettyPrintOne'] = $prettyPrintOne)
    -             : (prettyPrintOne = $prettyPrintOne),
    -        'prettyPrint': prettyPrint =
    -           IN_GLOBAL_SCOPE
    -             ? (win['prettyPrint'] = $prettyPrint)
    -             : (prettyPrint = $prettyPrint)
    -      };
    -
    -  // Make PR available via the Asynchronous Module Definition (AMD) API.
    -  // Per https://github.com/amdjs/amdjs-api/wiki/AMD:
    -  // The Asynchronous Module Definition (AMD) API specifies a
    -  // mechanism for defining modules such that the module and its
    -  // dependencies can be asynchronously loaded.
    -  // ...
    -  // To allow a clear indicator that a global define function (as
    -  // needed for script src browser loading) conforms to the AMD API,
    -  // any global define function SHOULD have a property called "amd"
    -  // whose value is an object. This helps avoid conflict with any
    -  // other existing JavaScript code that could have defined a define()
    -  // function that does not conform to the AMD API.
    -  if (typeof define === "function" && define['amd']) {
    -    define("google-code-prettify", [], function () {
    -      return PR; 
    -    });
    -  }
    -})();
    diff --git a/jOOQ-website/json/.htaccess b/jOOQ-website/json/.htaccess
    deleted file mode 100644
    index a7d398c001..0000000000
    --- a/jOOQ-website/json/.htaccess
    +++ /dev/null
    @@ -1 +0,0 @@
    -php_flag allow_url_fopen on
    \ No newline at end of file
    diff --git a/jOOQ-website/json/stats.php b/jOOQ-website/json/stats.php
    deleted file mode 100644
    index 9b1fcc18a5..0000000000
    --- a/jOOQ-website/json/stats.php
    +++ /dev/null
    @@ -1,23 +0,0 @@
    -<?php
    -header("Content-Type: text/javascript");
    -
    -echo '{"sourceforge": ';
    -echo file_get_contents(
    -  "http://sourceforge.net/projects/jooq/files/stats/json?start_date=" .
    -   date('Y-m-d', time() - (390 * 24 * 60 * 60)) .
    -  "&end_date=" .
    -   date('Y-m-d', time() - (30 * 24 * 60 * 60)));
    -
    -// Maven statistics are manually downloaded from oss.sonatype.com:
    -echo ', "maven": {"2011-04":"23",  "2011-05":"30",  "2011-06":"43",' .
    -                 '"2011-07":"73",  "2011-08":"80",  "2011-09":"89",' .
    -                 '"2011-10":"89",  "2011-11":"302", "2011-12":"236",' .
    -                 '"2012-01":"332", "2012-02":"428", "2012-03":"358",' .
    -                 '"2012-04":"461", "2012-05":"573", "2012-06":"659",' .
    -                 '"2012-07":"782", "2012-08":"805", "2012-09":"943",' .
    -                 '"2012-10":"1148","2012-11":"1084","2012-12":"1087",' .
    -                 '"2013-01":"1266","2013-02":"1297","2013-03":"1696",' .
    -                 '"2013-04":"1660","2013-05":"2098","2013-06":"2019",' .
    -                 '"2013-07":"2480","2013-08":"1738"}}';
    -
    -?>
    \ No newline at end of file
    diff --git a/jOOQ-website/launch/Transform.launch b/jOOQ-website/launch/Transform.launch
    deleted file mode 100644
    index 237927b025..0000000000
    --- a/jOOQ-website/launch/Transform.launch
    +++ /dev/null
    @@ -1,13 +0,0 @@
    -<?xml version="1.0" encoding="UTF-8" standalone="no"?>
    -<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
    -<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
    -<listEntry value="/jOOQ-website/src/main/java/Transform.java"/>
    -</listAttribute>
    -<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
    -<listEntry value="1"/>
    -</listAttribute>
    -<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.m2e.launchconfig.classpathProvider"/>
    -<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="Transform"/>
    -<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="jOOQ-website"/>
    -<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.m2e.launchconfig.sourcepathProvider"/>
    -</launchConfiguration>
    diff --git a/jOOQ-website/learn.php b/jOOQ-website/learn.php
    deleted file mode 100644
    index e4afe4a724..0000000000
    --- a/jOOQ-website/learn.php
    +++ /dev/null
    @@ -1,239 +0,0 @@
    -<?php
    -require 'frame.php';
    -function getH1() {
    -	return 'The manual, tutorials, FAQ, references';
    -}
    -function getActiveMenu() {
    -	return "learn";
    -}
    -function printStep($step) {
    -	global $root;
    -    global $minorVersion;
    -	global $version;
    -	
    -	echo $root . '/doc/' . $minorVersion . '/manual/getting-started/tutorials/jooq-in-7-steps/jooq-in-7-steps-step' . $step;
    -}
    -function printContent() {
    -	global $root;
    -    global $minorVersion;
    -	global $version;
    -?>
    -
    -<table width="100%">
    -<tr>
    -
    -<td valign="top" width="50%">
    -<table width="100%">
    -<tr>
    -<td colspan="3">
    -<h2>3.x Documentation</h2>
    -</td>
    -<tr>
    -<th width="80" class="right">Version</th>
    -<th class="right">Javadoc</th>
    -<th class="right">Manual</th>
    -</tr>
    -<tr>
    -<td class="right">3.1.0</td>
    -<td class="right">
    -	<a style="padding-right: 20px" href="http://www.jooq.org/javadoc/latest/" title="The jOOQ Javadoc">HTML</a>
    -</td>
    -<td class="right">
    -	<a style="padding-right: 20px" href="<?=$root?>/doc/3.1/manual-single-page" title="The jOOQ Manual on one single page">HTML</a>
    -	<a style="padding-right: 20px" href="<?=$root?>/doc/3.1/manual" title="The jOOQ Manual on multiple pages">HTML (multi-page)</a>
    -	<a style="padding-right: 20px" href="<?=$root?>/doc/3.1/manual-pdf/jOOQ-manual-3.1.pdf" title="The jOOQ Manual as a PDF">PDF</a>
    -</td>
    -</tr>
    -
    -<tr>
    -<td class="right">3.0.0</td>
    -<td class="right">
    -	<a style="padding-right: 20px" href="http://www.jooq.org/javadoc/3.0.x/" title="The jOOQ Javadoc">HTML</a>
    -</td>
    -<td class="right">
    -	<a style="padding-right: 20px" href="<?=$root?>/doc/3.0/manual-single-page" title="The jOOQ Manual on one single page">HTML</a>
    -	<a style="padding-right: 20px" href="<?=$root?>/doc/3.0/manual" title="The jOOQ Manual on multiple pages">HTML (multi-page)</a>
    -	<a style="padding-right: 20px" href="<?=$root?>/doc/3.0/manual-pdf/jOOQ-manual-3.0.pdf" title="The jOOQ Manual as a PDF">PDF</a>
    -</td>
    -</tr>
    -
    -<td colspan="3">
    -<h2>2.x Documentation</h2>
    -</td>
    -<tr>
    -<th width="80" class="right">Version</th>
    -<th class="right">Javadoc</th>
    -<th class="right">Manual</th>
    -</tr>
    -
    -<tr>
    -<td class="right">2.6.0</td>
    -<td class="right">
    -	<a style="padding-right: 20px" href="http://www.jooq.org/javadoc/2.6.x/" title="The jOOQ Javadoc">HTML</a>
    -</td>
    -<td class="right">
    -	<a style="padding-right: 20px" href="<?=$root?>/doc/2.6/manual-single-page" title="The jOOQ Manual on one single page">HTML</a>
    -	<a style="padding-right: 20px" href="<?=$root?>/doc/2.6/manual" title="The jOOQ Manual on multiple pages">HTML (multi-page)</a>
    -	<a style="padding-right: 20px" href="<?=$root?>/doc/2.6/manual-pdf/jOOQ-manual-2.6.pdf" title="The jOOQ Manual as a PDF">PDF</a>
    -</td>
    -</tr>
    -
    -<tr>
    -<td class="right">2.5.0</td>
    -<td class="right">
    -	<a style="padding-right: 20px" href="http://www.jooq.org/javadoc/2.5.x/" title="The jOOQ Javadoc">HTML</a>
    -</td>
    -<td class="right">
    -	<a style="padding-right: 20px" href="<?=$root?>/doc/2.5/manual-single-page" title="The jOOQ Manual on one single page">HTML</a>
    -	<a style="padding-right: 20px" href="<?=$root?>/doc/2.5/manual" title="The jOOQ Manual on multiple pages">HTML (multi-page)</a>
    -	<a style="padding-right: 20px" href="<?=$root?>/doc/2.5/manual-pdf/jOOQ-manual-2.5.pdf" title="The jOOQ Manual as a PDF">PDF</a>
    -</td>
    -</tr>
    -
    -<tr>
    -<td class="right">2.4.0</td>
    -<td class="right">
    -	<a style="padding-right: 20px" href="http://www.jooq.org/javadoc/2.4.x/" title="The jOOQ Javadoc">HTML</a>
    -</td>
    -<td class="right">
    -	<a style="padding-right: 20px" href="<?=$root?>/manual-single-page" title="The jOOQ Manual on one single page">HTML</a>
    -	<a style="padding-right: 20px" href="<?=$root?>/manual" title="The jOOQ Manual on multiple pages">HTML (multi-page)</a>
    -	<a style="padding-right: 20px" href="<?=$root?>/manual-pdf/jOOQ-manual.pdf" title="The jOOQ Manual as a PDF">PDF</a>
    -</td>
    -</tr>
    -
    -<tr>
    -<td class="right">2.3.0</td>
    -<td class="right">
    -	<a style="padding-right: 20px" href="http://www.jooq.org/javadoc/2.3.x/" title="The jOOQ Javadoc">HTML</a>
    -</td>
    -<td class="right">
    -</td>
    -</tr>
    -
    -<tr>
    -<td class="right">2.2.0</td>
    -<td class="right">
    -	<a style="padding-right: 20px" href="http://www.jooq.org/javadoc/2.2.x/" title="The jOOQ Javadoc">HTML</a>
    -</td>
    -<td class="right">
    -</td>
    -</tr>
    -
    -<tr>
    -<td class="right">2.1.0</td>
    -<td class="right">
    -	<a style="padding-right: 20px" href="http://www.jooq.org/javadoc/2.1.x/" title="The jOOQ Javadoc">HTML</a>
    -</td>
    -<td class="right">
    -</td>
    -</tr>
    -
    -<tr>
    -<td class="right">2.0.0</td>
    -<td class="right">
    -	<a style="padding-right: 20px" href="http://www.jooq.org/javadoc/2.0.x/" title="The jOOQ Javadoc">HTML</a>
    -</td>
    -<td class="right">
    -</td>
    -</tr>
    -</table>
    -
    -<h2 id="FAQ">FAQ</h2>
    -<p>
    -Before you go on and read the whole manual, there are a couple of interesting questions that you might want to consider:
    -</p>
    -
    -<p>
    -<b class="mono">Q:</b> When I generate source code from MySQL, can I also use it on another database?<br/>
    -<b class="mono">A:</b> Yes! The generated Java code will work for all supported databases, not only for the database driver that you used when you generated the code.
    -</p>
    -
    -<p>
    -<b class="mono">Q:</b> When I generate source code from my developer database, can I also use it on production?<br/>
    -<b class="mono">A:</b> Yes! You can map your schema at code generation time or at run time. <a href="http://www.jooq.org/doc/<?=$minorVersion?>/manual/code-generation/codegen-advanced" title="Schema mapping functionality in jOOQ">See the manual for details.</a>
    -</p>
    -
    -<p>
    -<b class="mono">Q:</b> Can I use jOOQ without code generation?<br/>
    -<b class="mono">A:</b> Yes! You can define tables, fields, conditions using Strings. <a href="http://www.jooq.org/doc/<?=$minorVersion?>/manual/getting-started/use-cases" title="Plain SQL functionality in jOOQ">See the manual for details.</a>
    -</p>
    -
    -<p>
    -<b class="mono">Q:</b> Can I use jOOQ as a query builder and execute queries with Spring?<br/>
    -<b class="mono">A:</b> Yes! This has been done by other users and will be documented soon. <a href="http://stackoverflow.com/questions/4474365/jooq-and-spring" title="Stack Overflow question about using jOOQ with Spring">See this Stack Overflow question for details.</a>
    -</p>
    -</td>
    -
    -
    -<td valign="top" width="50%">
    -<table width="100%">
    -<tr>
    -<td>
    -<h2>Tutorial</h2>
    -<p>
    -Your simplest entry point is probably to get the tutorial
    -running. It shows how to use jOOQ and its code generator with a simple MySQL database
    -</p>
    -<ul>
    -    <li><a href="<?=printStep(1)?>">Preparation: Download jOOQ and your SQL driver</a></li>
    -    <li><a href="<?=printStep(2)?>">Step 1: Create a SQL database and a table</a></li>
    -    <li><a href="<?=printStep(3)?>">Step 2: Generate classes</a></li>
    -    <li><a href="<?=printStep(4)?>">Step 3: Write a main class and establish a MySQL connection</a></li>
    -    <li><a href="<?=printStep(5)?>">Step 4: Write a query using jOOQ's DSL</a></li>
    -    <li><a href="<?=printStep(6)?>">Step 5: Iterate over results</a></li>
    -    <li><a href="<?=printStep(7)?>">Step 6: Explore!</a></li>
    -</ul>
    -</td>
    -</tr>
    -<tr>
    -<td>
    -<h2>Book Recommendation</h2>
    -<p>
    -	With jOOQ, you will write a lot of SQL. Knowing SQL well is important. We highly recommend you read this book to write high-performing SQL:
    -</p>
    -<table width="100%">
    -<tr>
    -<td width="180" valign="top"><a href="http://sql-performance-explained.com/l" title="SQL Performance Explained by Markus Winand, author of Use-The-Index-Luke.com"><img src="<?=$root?>/img/sql-performance-explained-de.png" alt="SQL Performance Explained by Markus Winand, author of Use-The-Index-Luke.com" style="border: 2px solid black"/></a></td>
    -<td valign="top">Markus Winand is the author of the popular website <a href="http://use-the-index-luke.com">Use-The-Index-Luke.com</a>. His book explains nicely how to achieve proper indexing and performance in popular RDBMS:<br/><br/>
    -<table width="100%">
    -<tr>
    -<td>Author</td>
    -<td><a href="http://winand.at">Markus Winand</a></td>
    -</tr>
    -<tr>
    -<td>Title</td>
    -<td>
    -<a href="http://sql-performance-explained.com/l" title="SQL Performance Explained by Markus Winand, author of Use-The-Index-Luke.com">SQL Performance Explained</a></td>
    -</tr>
    -<tr>
    -<td>Available in</td>
    -<td><a href="http://sql-performance-explained.com">English</a>, <a href="http://sql-performance-explained.de">German</a>, <a href="http://sql-au-coeur-des-performances.fr">French</a></td>
    -</tr>
    -</table>
    -<br/><br/>
    -Read this book when writing SQL with jOOQ!
    -</td>
    -</tr>
    -</table>
    -</td>
    -</tr>
    -<tr>
    -<td>
    -<h2>Further readings</h2>
    -<ul>
    -<li><a href="http://tech.pro/tutorial/1555/10-easy-steps-to-a-complete-understanding-of-sql">10 Easy Steps to a Complete Understanding of SQL</a></li>
    -<li><a href="http://blog.jooq.org/2013/07/30/10-common-mistakes-java-developers-make-when-writing-sql/">10 Common Mistakes Java Developers Make When Writing SQL</a></li>
    -<li><a href="http://blog.jooq.org/2013/08/12/10-more-common-mistakes-java-developers-make-when-writing-sql/">10 More Common Mistakes Java Developers Make When Writing SQL</a></li>
    -<li><a href="http://blog.jooq.org/2012/01/05/the-java-fluent-api-designer-crash-course/">The Java Fluent API Designer Crash Course</a></li>
    -</ul>
    -</td>
    -</tr>
    -</table>
    -</td>
    -</tr>
    -</table>
    -
    -<?php
    -}
    -?>
    \ No newline at end of file
    diff --git a/jOOQ-website/licenses.php b/jOOQ-website/licenses.php
    deleted file mode 100644
    index 47e982bff5..0000000000
    --- a/jOOQ-website/licenses.php
    +++ /dev/null
    @@ -1,22 +0,0 @@
    -<?php
    -require 'frame.php';
    -function getH1() {
    -	return 'Licensing';
    -}
    -function getActiveMenu() {
    -	return "support";
    -}
    -function printContent() {
    -	global $root;
    -    global $minorVersion;
    -	global $version;
    -?>
    -
    -<h2>Licensing</h2>
    -<p>
    -	Come back soon to learn how to commercially license jOOQ.
    -</p>
    -
    -<?php
    -}
    -?>
    \ No newline at end of file
    diff --git a/jOOQ-website/news.php b/jOOQ-website/news.php
    deleted file mode 100644
    index 0bd5788fd0..0000000000
    --- a/jOOQ-website/news.php
    +++ /dev/null
    @@ -1,60 +0,0 @@
    -<?php
    -require 'frame.php';
    -function getH1() {
    -	return 'What\'s new around jOOQ';
    -}
    -function getActiveMenu() {
    -	return "news";
    -}
    -function printContent() {
    -	global $root;
    -    global $minorVersion;
    -	global $version;
    -?>
    -
    -
    -<table cellpadding="0" cellspacing="0" border="0" width="100%">
    -<tr>
    -<td colspan="3">
    -    <h2>Upcoming jOOQ events</h2>
    -</td>
    -</tr>
    -<tr>
    -    <th width="200" class="right">Date</th>
    -    <th width="40" class="right">Language</th>
    -    <th class="right">Event</th>
    -</tr>
    -<tr>
    -    <td class="right">October 2013</td>
    -    <td class="right">English</td>
    -    <td class="right">Hear about jOOQ and about lots of other good stuff at the <a href="http://www.medit-symposium.com">MEDIT Symposium</a> in Sicilly.</td>
    -</tr>
    -<td colspan="3">
    -    <h2>Past jOOQ events</h2>
    -</td>
    -<tr>
    -    <td class="right">September 2013</td>
    -    <td class="right">German</td>
    -    <td class="right">Join the jOOQ introductory sessions at the <a href="http://www.jugh.de/display/jugh/2013/08/06/JUGH-Treffen+26.+September+2013">JUGH</a> in Kassel, Germany</td>
    -</tr>
    -<tr>
    -    <td class="right">September 2013</td>
    -    <td class="right">German</td>
    -    <td class="right">Join the jOOQ training sessions at the <a href="http://www.ch-open.ch/wstage/workshop-tage/2013/aktuelles-programm-2013/ws-6-mit-jooq-und-opensource-datenbanken-sofort-produktiv-werden/">/ch/open workshop days</a> in Zurich, Switzerland</td>
    -</tr>
    -<tr>
    -    <td class="right">June 2013</td>
    -    <td class="right">German</td>
    -    <td class="right">Join the jOOQ introductory session at the <a href="http://www.jug.ch/html/events/2013/jooq_lu.html">JUGS</a> in Lucerne, Switzerland</td>
    -</tr>
    -<tr>
    -    <td class="right">July 2012</td>
    -    <td class="right">German</td>
    -    <td class="right">Join the jOOQ introductory session at the <a href="http://www.jug.ch/html/events/2012/jooq.html">JUGS</a> in Zurich, Switzerland</td>
    -</tr>
    -
    -</table>
    -
    -<?php
    -}
    -?>
    \ No newline at end of file
    diff --git a/jOOQ-website/notes.php b/jOOQ-website/notes.php
    deleted file mode 100644
    index 4b3f493b8f..0000000000
    --- a/jOOQ-website/notes.php
    +++ /dev/null
    @@ -1,118 +0,0 @@
    -<?php
    -require 'frame.php';
    -function getH1() {
    -	return 'The history of jOOQ. From 2009 to ' . date('Y');
    -}
    -function getActiveMenu() {
    -	return "download";
    -}
    -function printContent() {
    -    if (isset($_GET['version']) && $_GET['version'] == '2.0') {
    -	  $contents = file('inc/RELEASENOTES-2.0.txt');
    -    }
    -    else if (isset($_GET['version']) && $_GET['version'] == '2.1') {
    -	  $contents = file('inc/RELEASENOTES-2.1.txt');
    -    }
    -    else if (isset($_GET['version']) && $_GET['version'] == '2.2') {
    -	  $contents = file('inc/RELEASENOTES-2.2.txt');
    -    }
    -    else if (isset($_GET['version']) && $_GET['version'] == '2.3') {
    -	  $contents = file('inc/RELEASENOTES-2.3.txt');
    -    }
    -    else if (isset($_GET['version']) && $_GET['version'] == '2.4') {
    -	  $contents = file('inc/RELEASENOTES-2.4.txt');
    -    }
    -    else if (isset($_GET['version']) && $_GET['version'] == '2.5') {
    -	  $contents = file('inc/RELEASENOTES-2.5.txt');
    -    }
    -    else if (isset($_GET['version']) && $_GET['version'] == '2.6') {
    -	  $contents = file('inc/RELEASENOTES-2.6.txt');
    -    }
    -    else if (isset($_GET['version']) && $_GET['version'] == '3.0') {
    -	  $contents = file('inc/RELEASENOTES-3.0.txt');
    -    }
    -    else {
    -      $contents = file('inc/RELEASENOTES.txt');
    -    }
    -
    -	for ($i = 0; $i < count($contents); $i++) {
    -		if ($i + 1 < count($contents) && substr($contents[$i + 1], 0, 3) == '===') {
    -		    $id = trim(preg_replace('%Version (\d+\.\d+\.\d+).*\n?%', '$1', $contents[$i]));
    -			print '<h2 id="' . $id . '"><a href="#' . $id . '" name="' . $id . '">#</a> ';
    -			print $contents[$i];
    -			print '</h2>';
    -		}
    -		else if ($i + 1 < count($contents) && substr($contents[$i + 1], 0, 3) == '---') {
    -			print '<h3>';
    -			print $contents[$i];
    -			print '</h3>';
    -		}
    -
    -		else if (substr($contents[$i], 0, 3) == '===') {
    -			// Skip
    -		}
    -		else if (substr($contents[$i], 0, 3) == '---') {
    -			// Skip
    -		}
    -		else if (trim($contents[$i]) == '' && substr($contents[$i + 1], 0, 1) != '-') {
    -			print '<p>';
    -		}
    -
    -		// Create an <ul> from a list of "dashed" elements
    -		else if (substr($contents[$i], 0, 1) == '-') {
    -			print '<ul>';
    -
    -			while (trim($contents[$i]) != '') {
    -				print '<li>';
    -				print preg_replace('%-\s+(.*)%', '$1', markup($contents[$i]));
    -
    -				while (trim($contents[++$i]) != '' && substr($contents[$i], 0, 1) != '-') {
    -					print markup(htmlentities($contents[$i]));
    -				}
    -
    -				print '</li>';
    -			}
    -
    -			print '</ul><p>';
    -		}
    -
    -		// Create a ticket-table from a list of "hashed" elements
    -		else if (substr($contents[$i], 0, 1) == '#') {
    -			print '<table class="ticket-table">';
    -
    -			while (trim($contents[$i]) != '') {
    -				$ticket = preg_replace('%#(\d+).*%', '$1', $contents[$i]);
    -
    -				print '<tr>';
    -				print '<td width="80">';
    -				print '<a href="https://github.com/jOOQ/jOOQ/issues/' . $ticket . '">#';
    -				print $ticket;
    -				print '</a>';
    -				print '</td>';
    -				print '<td>';
    -				print htmlentities(preg_replace('%#\d+\s+-\s+(.*)%', '$1', $contents[$i]));
    -
    -				while (trim($contents[++$i]) != '' && substr($contents[$i], 0, 1) != '#') {
    -					print htmlentities($contents[$i]);
    -				}
    -
    -				print '</td>';
    -				print '</tr>';
    -			}
    -
    -			print '</table>';
    -		}
    -		else {
    -		    print markup($contents[$i]);
    -		}
    -	}
    -}
    -
    -function markup($value) {
    -	$value = htmlentities($value);
    -	$value = preg_replace('%&lt;pre( class=&quot;(.*?)&quot;)?&gt;%', '<pre class="$2">', $value);
    -	$value = preg_replace('%&lt;/pre&gt;%', '</pre>', $value);
    -	$value = preg_replace('%(https?://\S+)%', '<a href="$1">$1</a>', $value);
    -	return $value;
    -}
    -?>
    \ No newline at end of file
    diff --git a/jOOQ-website/pom.xml b/jOOQ-website/pom.xml
    deleted file mode 100644
    index 44d60e8e65..0000000000
    --- a/jOOQ-website/pom.xml
    +++ /dev/null
    @@ -1,57 +0,0 @@
    -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    -  <modelVersion>4.0.0</modelVersion>
    -  <groupId>jOOQ-website-man-builder</groupId>
    -  <artifactId>jOOQ-website-man-builder</artifactId>
    -  <version>0.0.1-SNAPSHOT</version>
    -  <dependencies>
    -      <dependency>
    -          <groupId>org.jooq</groupId>
    -          <artifactId>joox</artifactId>
    -          <version>0.9.3</version>
    -          <type>jar</type>
    -          <scope>compile</scope>
    -      </dependency>
    -      <dependency>
    -          <groupId>commons-io</groupId>
    -          <artifactId>commons-io</artifactId>
    -          <version>2.1</version>
    -          <type>jar</type>
    -          <scope>compile</scope>
    -      </dependency>
    -      <dependency>
    -          <groupId>org.apache.commons</groupId>
    -          <artifactId>commons-lang3</artifactId>
    -          <version>3.0.1</version>
    -          <type>jar</type>
    -          <scope>compile</scope>
    -      </dependency>
    -      <dependency>
    -          <groupId>xalan</groupId>
    -          <artifactId>xalan</artifactId>
    -          <version>2.7.1</version>
    -          <type>jar</type>
    -          <scope>compile</scope>
    -      </dependency>
    -      <dependency>
    -          <groupId>org.apache.xmlgraphics</groupId>
    -          <artifactId>fop</artifactId>
    -          <version>0.95</version>
    -          <type>jar</type>
    -          <scope>compile</scope>
    -      </dependency>
    -      <dependency>
    -          <groupId>org.apache.avalon.framework</groupId>
    -          <artifactId>avalon-framework-impl</artifactId>
    -          <version>4.3.1</version>
    -          <type>jar</type>
    -          <scope>compile</scope>
    -      </dependency>
    -      <dependency>
    -          <groupId>org.jooq</groupId>
    -          <artifactId>jooq</artifactId>
    -          <version>3.2.0-SNAPSHOT</version>
    -          <type>jar</type>
    -          <scope>compile</scope>
    -      </dependency>
    -  </dependencies>
    -</project>
    \ No newline at end of file
    diff --git a/jOOQ-website/registration-email-save.php b/jOOQ-website/registration-email-save.php
    deleted file mode 100644
    index e6da80871a..0000000000
    --- a/jOOQ-website/registration-email-save.php
    +++ /dev/null
    @@ -1,32 +0,0 @@
    -<?php
    -require 'access.php';
    -require 'MailChimp.class.php';
    -
    -$file = 'users.csv';
    -$handle = fopen('users.csv', 'a');
    -
    -fwrite($handle, 
    -  '"' . str_replace('"', '""', $_POST['name']) . '",' .
    -  '"' . str_replace('"', '""', $_POST['email']) . '",' .
    -  '"' . str_replace('"', '""', $_POST['country']) . '",' .
    -  '"' . str_replace('"', '""', $_POST['company_name']) . '",' .
    -  '"' . str_replace('"', '""', $_POST['company_size']) . '",' .
    -  '"' . str_replace('"', '""', $_POST['newsletter']) . '",' .
    -  '"' . date('Y-m-d H:i:s') . '"' . "\n"
    -);
    -
    -fclose($handle);
    -
    -if ($_POST['newsletter'] == '1' && $_POST['email'] != '') {
    -    $chimp = new MailChimp($access['chimp']);
    -    $result = $chimp->call('lists/subscribe', array(
    -                    'id'                => '24ff762dd2',
    -                    'email'             => array('email'=>$_POST['email']),
    -                    'merge_vars'        => array('FNAME'=>$_POST['name']),
    -                    'double_optin'      => false,
    -                    'update_existing'   => true,
    -                    'replace_interests' => false,
    -                    'send_welcome'      => true,
    -              ));
    -}
    -?>
    \ No newline at end of file
    diff --git a/jOOQ-website/registration-email.php b/jOOQ-website/registration-email.php
    deleted file mode 100644
    index f5a2184861..0000000000
    --- a/jOOQ-website/registration-email.php
    +++ /dev/null
    @@ -1,294 +0,0 @@
    -<form id="registration-email-form" name="registration-email" action="#" method="POST">
    -<div class="row">
    -  <div class="col col-1">Name</div>
    -  <div class="col col-2"><input class="input" name="name"/></div>
    -</div>
    -<div class="row">
    -  <div class="col col-1">E-Mail</div>
    -  <div class="col col-2"><input class="input" name="email"/></div>
    -</div>
    -<div class="row">
    -  <div class="col col-1">Country</div>
    -  <div class="col col-2">
    -    <select name="country">
    -      <option value="">Please select...</option>
    -      <option value="AF">Afghanistan</option>
    -      <option value="AX">Ã…land Islands</option>
    -      <option value="AL">Albania</option>
    -      <option value="DZ">Algeria</option>
    -      <option value="AS">American Samoa</option>
    -      <option value="AD">Andorra</option>
    -      <option value="AO">Angola</option>
    -      <option value="AI">Anguilla</option>
    -      <option value="AQ">Antarctica</option>
    -      <option value="AG">Antigua And Barbuda</option>
    -      <option value="AR">Argentina</option>
    -      <option value="AM">Armenia</option>
    -      <option value="AW">Aruba</option>
    -      <option value="AU">Australia</option>
    -      <option value="AT">Austria</option>
    -      <option value="AZ">Azerbaijan</option>
    -      <option value="BS">Bahamas</option>
    -      <option value="BH">Bahrain</option>
    -      <option value="BD">Bangladesh</option>
    -      <option value="BB">Barbados</option>
    -      <option value="BY">Belarus</option>
    -      <option value="BE">Belgium</option>
    -      <option value="BZ">Belize</option>
    -      <option value="BJ">Benin</option>
    -      <option value="BM">Bermuda</option>
    -      <option value="BT">Bhutan</option>
    -      <option value="BO">Bolivia</option>
    -      <option value="BA">Bosnia And Herzegovina</option>
    -      <option value="BW">Botswana</option>
    -      <option value="BV">Bouvet Island</option>
    -      <option value="BR">Brazil</option>
    -      <option value="IO">British Indian Ocean Territory</option>
    -      <option value="BN">Brunei Darussalam</option>
    -      <option value="BG">Bulgaria</option>
    -      <option value="BF">Burkina Faso</option>
    -      <option value="BI">Burundi</option>
    -      <option value="KH">Cambodia</option>
    -      <option value="CM">Cameroon</option>
    -      <option value="CA">Canada</option>
    -      <option value="CV">Cape Verde</option>
    -      <option value="KY">Cayman Islands</option>
    -      <option value="CF">Central African Republic</option>
    -      <option value="TD">Chad</option>
    -      <option value="CL">Chile</option>
    -      <option value="CN">China</option>
    -      <option value="CX">Christmas Island</option>
    -      <option value="CC">Cocos (Keeling) Islands</option>
    -      <option value="CO">Colombia</option>
    -      <option value="KM">Comoros</option>
    -      <option value="CG">Congo</option>
    -      <option value="CD">Congo, Democratic Republic</option>
    -      <option value="CK">Cook Islands</option>
    -      <option value="CR">Costa Rica</option>
    -      <option value="CI">Côte D'Ivoire</option>
    -      <option value="HR">Croatia</option>
    -      <option value="CU">Cuba</option>
    -      <option value="CY">Cyprus</option>
    -      <option value="CZ">Czech Republic</option>
    -      <option value="DK">Denmark</option>
    -      <option value="DJ">Djibouti</option>
    -      <option value="DM">Dominica</option>
    -      <option value="DO">Dominican Republic</option>
    -      <option value="EC">Ecuador</option>
    -      <option value="EG">Egypt</option>
    -      <option value="SV">El Salvador</option>
    -      <option value="GQ">Equatorial Guinea</option>
    -      <option value="ER">Eritrea</option>
    -      <option value="EE">Estonia</option>
    -      <option value="ET">Ethiopia</option>
    -      <option value="FK">Falkland Islands (Malvinas)</option>
    -      <option value="FO">Faroe Islands</option>
    -      <option value="FJ">Fiji</option>
    -      <option value="FI">Finland</option>
    -      <option value="FR">France</option>
    -      <option value="GF">French Guiana</option>
    -      <option value="PF">French Polynesia</option>
    -      <option value="TF">French Southern Territories</option>
    -      <option value="GA">Gabon</option>
    -      <option value="GM">Gambia</option>
    -      <option value="GE">Georgia</option>
    -      <option value="DE">Germany</option>
    -      <option value="GH">Ghana</option>
    -      <option value="GI">Gibraltar</option>
    -      <option value="GR">Greece</option>
    -      <option value="GL">Greenland</option>
    -      <option value="GD">Grenada</option>
    -      <option value="GP">Guadeloupe</option>
    -      <option value="GU">Guam</option>
    -      <option value="GT">Guatemala</option>
    -      <option value="GN">Guinea</option>
    -      <option value="GW">Guinea-Bissau</option>
    -      <option value="GY">Guyana</option>
    -      <option value="HT">Haiti</option>
    -      <option value="HM">Heard Island And Mcdonald Islands</option>
    -      <option value="VA">Holy See (Vatican City State)</option>
    -      <option value="HN">Honduras</option>
    -      <option value="HK">Hong Kong</option>
    -      <option value="HU">Hungary</option>
    -      <option value="IS">Iceland</option>
    -      <option value="IN">India</option>
    -      <option value="ID">Indonesia</option>
    -      <option value="IR">Iran, Islamic Republic Of</option>
    -      <option value="IQ">Iraq</option>
    -      <option value="IE">Ireland</option>
    -      <option value="IL">Israel</option>
    -      <option value="IT">Italy</option>
    -      <option value="JM">Jamaica</option>
    -      <option value="JP">Japan</option>
    -      <option value="JO">Jordan</option>
    -      <option value="KZ">Kazakhstan</option>
    -      <option value="KE">Kenya</option>
    -      <option value="KI">Kiribati</option>
    -      <option value="KP">Korea, North</option>
    -      <option value="KR">Korea, South</option>
    -      <option value="KW">Kuwait</option>
    -      <option value="KG">Kyrgyzstan</option>
    -      <option value="LA">Lao People's Democratic Republic</option>
    -      <option value="LV">Latvia</option>
    -      <option value="LB">Lebanon</option>
    -      <option value="LS">Lesotho</option>
    -      <option value="LR">Liberia</option>
    -      <option value="LY">Libyan Arab Jamahiriya</option>
    -      <option value="LI">Liechtenstein</option>
    -      <option value="LT">Lithuania</option>
    -      <option value="LU">Luxembourg</option>
    -      <option value="MO">Macao</option>
    -      <option value="MK">Macedonia</option>
    -      <option value="MG">Madagascar</option>
    -      <option value="MW">Malawi</option>
    -      <option value="MY">Malaysia</option>
    -      <option value="MV">Maldives</option>
    -      <option value="ML">Mali</option>
    -      <option value="MT">Malta</option>
    -      <option value="MH">Marshall Islands</option>
    -      <option value="MQ">Martinique</option>
    -      <option value="MR">Mauritania</option>
    -      <option value="MU">Mauritius</option>
    -      <option value="YT">Mayotte</option>
    -      <option value="MX">Mexico</option>
    -      <option value="FM">Micronesia</option>
    -      <option value="MD">Moldova, Republic Of</option>
    -      <option value="MC">Monaco</option>
    -      <option value="MN">Mongolia</option>
    -      <option value="ME">Montenegro</option>
    -      <option value="MS">Montserrat</option>
    -      <option value="MA">Morocco</option>
    -      <option value="MZ">Mozambique</option>
    -      <option value="MM">Myanmar</option>
    -      <option value="NA">Namibia</option>
    -      <option value="NR">Nauru</option>
    -      <option value="NP">Nepal</option>
    -      <option value="NL">Netherlands</option>
    -      <option value="AN">Netherlands Antilles</option>
    -      <option value="NC">New Caledonia</option>
    -      <option value="NZ">New Zealand</option>
    -      <option value="NI">Nicaragua</option>
    -      <option value="NE">Niger</option>
    -      <option value="NG">Nigeria</option>
    -      <option value="NU">Niue</option>
    -      <option value="NF">Norfolk Island</option>
    -      <option value="MP">Northern Mariana Islands</option>
    -      <option value="NO">Norway</option>
    -      <option value="OM">Oman</option>
    -      <option value="PK">Pakistan</option>
    -      <option value="PW">Palau</option>
    -      <option value="PS">Palestinian Territory, Occupied</option>
    -      <option value="PA">Panama</option>
    -      <option value="PG">Papua New Guinea</option>
    -      <option value="PY">Paraguay</option>
    -      <option value="PE">Peru</option>
    -      <option value="PH">Philippines</option>
    -      <option value="PN">Pitcairn</option>
    -      <option value="PL">Poland</option>
    -      <option value="PT">Portugal</option>
    -      <option value="PR">Puerto Rico</option>
    -      <option value="QA">Qatar</option>
    -      <option value="RE">Reunion</option>
    -      <option value="RO">Romania</option>
    -      <option value="RU">Russian Federation</option>
    -      <option value="RW">Rwanda</option>
    -      <option value="SH">Saint Helena</option>
    -      <option value="KN">Saint Kitts And Nevis</option>
    -      <option value="LC">Saint Lucia</option>
    -      <option value="PM">Saint Pierre And Miquelon</option>
    -      <option value="VC">Saint Vincent And The Grenadines</option>
    -      <option value="WS">Samoa</option>
    -      <option value="SM">San Marino</option>
    -      <option value="ST">São Tome And Principe</option>
    -      <option value="SA">Saudi Arabia</option>
    -      <option value="SN">Senegal</option>
    -      <option value="RS">Serbia</option>
    -      <option value="SC">Seychelles</option>
    -      <option value="SL">Sierra Leone</option>
    -      <option value="SG">Singapore</option>
    -      <option value="SK">Slovakia</option>
    -      <option value="SI">Slovenia</option>
    -      <option value="SB">Solomon Islands</option>
    -      <option value="SO">Somalia</option>
    -      <option value="ZA">South Africa</option>
    -      <option value="GS">South Georgia</option>
    -      <option value="ES">Spain</option>
    -      <option value="LK">Sri Lanka</option>
    -      <option value="SD">Sudan</option>
    -      <option value="SR">Suriname</option>
    -      <option value="SJ">Svalbard And Jan Mayen</option>
    -      <option value="SZ">Swaziland</option>
    -      <option value="SE">Sweden</option>
    -      <option value="CH">Switzerland</option>
    -      <option value="SY">Syrian Arab Republic</option>
    -      <option value="TW">Taiwan</option>
    -      <option value="TJ">Tajikistan</option>
    -      <option value="TZ">Tanzania, United Republic Of</option>
    -      <option value="TH">Thailand</option>
    -      <option value="TL">Timor-Leste</option>
    -      <option value="TG">Togo</option>
    -      <option value="TK">Tokelau</option>
    -      <option value="TO">Tonga</option>
    -      <option value="TT">Trinidad And Tobago</option>
    -      <option value="TN">Tunisia</option>
    -      <option value="TR">Turkey</option>
    -      <option value="TM">Turkmenistan</option>
    -      <option value="TC">Turks And Caicos Islands</option>
    -      <option value="TV">Tuvalu</option>
    -      <option value="UG">Uganda</option>
    -      <option value="UA">Ukraine</option>
    -      <option value="AE">United Arab Emirates</option>
    -      <option value="GB">United Kingdom</option>
    -      <option value="US">United States</option>
    -      <option value="UM">United States Minor Outlying Islands</option>
    -      <option value="UY">Uruguay</option>
    -      <option value="UZ">Uzbekistan</option>
    -      <option value="VU">Vanuatu</option>
    -      <option value="VE">Venezuela</option>
    -      <option value="VN">Viet Nam</option>
    -      <option value="VG">Virgin Islands, British</option>
    -      <option value="VI">Virgin Islands, U.S.</option>
    -      <option value="WF">Wallis And Futuna</option>
    -      <option value="EH">Western Sahara</option>
    -      <option value="YE">Yemen</option>
    -      <option value="ZM">Zambia</option>
    -      <option value="ZW">Zimbabwe</option>
    -    </select>
    -  </div>
    -</div>
    -<div class="row">
    -  <div class="col col-1">Company Name</div>
    -  <div class="col col-2"><input class="input" name="company_name"/></div>
    -</div>
    -<div class="row">
    -  <div class="col col-1">Company Size</div>
    -  <div class="col col-2">
    -    <select name="company_size">
    -      <option value="">Please select...</option>
    -      <option value="1">Only me</option>
    -      <option value="10">Less than 10</option>
    -      <option value="100">Less than 100</option>
    -      <option value="1000">Less than 1000</option>
    -      <option value="10000">Less than 10000</option>
    -      <option value="99999">More than 10000</option>
    -    </select>
    -  </div>
    -</div>
    -<div class="row">
    -  <div class="col col-1">Newsletter</div>
    -  <div class="col col-2"><input type="checkbox" id="newsletter" name="newsletter" value="1" checked="checked"/><label for="newsletter">Receive our monthly newsletter</label></div>
    -</div>
    -<div class="row">
    -  <div class="col col-1">&#160;</div>
    -  <div class="col col-1">
    -    <button class="save">
    -      Save
    -    </button>
    -  </div>
    -  <div class="col col-1">
    -    <button class="no-thanks" data-cookie="jooq-registration-email" data-fade="email">
    -      No thanks
    -    </button>  
    -  </div>
    -</div>
    -</form>
    \ No newline at end of file
    diff --git a/jOOQ-website/robots.txt b/jOOQ-website/robots.txt
    deleted file mode 100644
    index bc1164092c..0000000000
    --- a/jOOQ-website/robots.txt
    +++ /dev/null
    @@ -1,3 +0,0 @@
    -User-agent: *
    -Allow: /
    -
    diff --git a/jOOQ-website/sql-as-seen-by-jooq.svg b/jOOQ-website/sql-as-seen-by-jooq.svg
    deleted file mode 100644
    index 2f871cd000..0000000000
    --- a/jOOQ-website/sql-as-seen-by-jooq.svg
    +++ /dev/null
    @@ -1,537 +0,0 @@
    -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" http-equiv="Content-Type" content="application/xhtml+xml"></xhtml:meta><xhtml:link xmlns:xhtml="http://www.w3.org/1999/xhtml" rel="shortcut icon" href="/favicon.ico"></xhtml:link><xhtml:title xmlns:xhtml="http://www.w3.org/1999/xhtml">Railroad Diagram Generator</xhtml:title><style type="text/css">
    -    ::-moz-selection
    -    {
    -      color: #FFFCF0;
    -      background: #4D3D00;
    -    }
    -    ::selection
    -    {
    -      color: #FFFCF0;
    -      background: #4D3D00;
    -    }      
    -    body
    -    {
    -      font: normal 12px Verdana, sans-serif;
    -      color: #4D3D00;
    -      background: #FFFCF0;
    -    }
    -    a:link, a:visited
    -    {
    -      color: #4D3D00;
    -    }
    -    a.button, #tabs li a
    -    {
    -      padding: 0.25em 0.5em;
    -      border: 1px solid #806600;
    -      background: #F1E8C6;
    -      color: #806600;
    -      text-decoration: none;
    -      font-weight: bold;
    -    }
    -    a:hover, #tabs li a:hover
    -    {
    -      color: #1A1400;
    -      background: #FFF4C7;
    -      border-color: #1A1400;       
    -    }     
    -    #tabs
    -    {
    -      padding: 3px 10px;
    -      margin-left: 0;
    -      margin-top: 58px;
    -      border-bottom: 1px solid #4D3D00;
    -    }  
    -    #tabs li
    -    {
    -      list-style: none;
    -      margin-left: 5px;
    -      display: inline;
    -    }
    -    #tabs li a
    -    {     
    -      border-bottom: 1px solid #4D3D00;
    -    }
    -    #tabs li a.active
    -    {
    -      color: #4D3D00;
    -      background: #FFFCF0;
    -      border-color: #4D3D00;
    -      border-bottom: 1px solid #FFFCF0;
    -      outline: none;
    -    }
    -    #divs div
    -    {
    -      display: none;
    -      overflow:auto;
    -    }
    -    #divs div.active
    -    {
    -      display: block;
    -    }
    -    #text
    -    {
    -      border-color: #806600;
    -      background: #FFFEFA;
    -      color: #1A1400;
    -    }
    -    td.time
    -    {
    -      vertical-align: top;
    -    }
    -    span.time
    -    {
    -      font-size: 9px;
    -      visibility: hidden;
    -    }
    -    td.time:hover span.time
    -    {
    -      visibility: visible;
    -    }
    -  </style><svg xmlns="http://www.w3.org/2000/svg"><defs><style type="text/css">
    -    @namespace "http://www.w3.org/2000/svg";
    -    .line                 {fill: none; stroke: #332900;}
    -    filled                {fill: #332900; stroke: none;}
    -    text                  {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                          }
    -    text.terminal         {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                            font-weight: bold;
    -                          }
    -    rect, circle, polygon {fill: #332900; stroke: #332900;}
    -    rect.terminal         {fill: #FFCC00; stroke: #332900;}
    -    rect.nonterminal      {fill: #FFEB99; stroke: #332900;}
    -    rect.text             {fill: none; stroke: none;}    
    -    polygon.regexp        {fill: #FFF5CC; stroke: #332900;}
    -  </style></defs></svg></head><body><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml" style="font-size: 14px; font-weight:bold"><xhtml:a name="QUERY">QUERY:</xhtml:a></xhtml:p><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="220" height="344"><defs><style type="text/css">
    -    @namespace "http://www.w3.org/2000/svg";
    -    .line                 {fill: none; stroke: #332900;}
    -    filled                {fill: #332900; stroke: none;}
    -    text                  {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                          }
    -    text.terminal         {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                            font-weight: bold;
    -                          }
    -    rect, circle, polygon {fill: #332900; stroke: #332900;}
    -    rect.terminal         {fill: #FFCC00; stroke: #332900;}
    -    rect.nonterminal      {fill: #FFEB99; stroke: #332900;}
    -    rect.text             {fill: none; stroke: none;}    
    -    polygon.regexp        {fill: #FFF5CC; stroke: #332900;}
    -  </style></defs><polygon points="9 17 1 13 1 21" class="filled"></polygon><polygon points="17 17 9 13 9 21" class="filled"></polygon><line x1="17" y1="17" x2="19" y2="17" class="line"></line><a xlink:href="#SELECT" xlink:title="SELECT"><rect x="51" y="3" width="66" height="32"></rect><rect x="49" y="1" width="66" height="32" class="nonterminal"></rect><text class="nonterminal" x="59" y="21">SELECT</text></a><line x1="39" y1="17" x2="49" y2="17" class="line"></line><line x1="115" y1="17" x2="125" y2="17" class="line"></line><line x1="125" y1="17" x2="181" y2="17" class="line"></line><line x1="19" y1="17" x2="39" y2="17" class="line"></line><line x1="181" y1="17" x2="201" y2="17" class="line"></line><path d="M19 17 Q29 17 29 27" class="line"></path><path d="M191 27 Q191 17 201 17" class="line"></path><line x1="29" y1="27" x2="29" y2="51" class="line"></line><line x1="191" y1="51" x2="191" y2="27" class="line"></line><path d="M29 51 Q29 61 39 61" class="line"></path><path d="M181 61 Q191 61 191 51" class="line"></path><a xlink:href="#RESULT_QUERY" xlink:title="RESULT_QUERY"><rect x="51" y="47" width="116" height="32"></rect><rect x="49" y="45" width="116" height="32" class="nonterminal"></rect><text class="nonterminal" x="59" y="65">RESULT_QUERY</text></a><line x1="39" y1="61" x2="49" y2="61" class="line"></line><line x1="165" y1="61" x2="175" y2="61" class="line"></line><line x1="175" y1="61" x2="181" y2="61" class="line"></line><line x1="29" y1="51" x2="29" y2="71" class="line"></line><line x1="191" y1="71" x2="191" y2="51" class="line"></line><line x1="29" y1="71" x2="29" y2="95" class="line"></line><line x1="191" y1="95" x2="191" y2="71" class="line"></line><path d="M29 95 Q29 105 39 105" class="line"></path><path d="M181 105 Q191 105 191 95" class="line"></path><a xlink:href="#UPDATE" xlink:title="UPDATE"><rect x="51" y="91" width="68" height="32"></rect><rect x="49" y="89" width="68" height="32" class="nonterminal"></rect><text class="nonterminal" x="59" y="109">UPDATE</text></a><line x1="39" y1="105" x2="49" y2="105" class="line"></line><line x1="117" y1="105" x2="127" y2="105" class="line"></line><line x1="127" y1="105" x2="181" y2="105" class="line"></line><line x1="29" y1="95" x2="29" y2="115" class="line"></line><line x1="191" y1="115" x2="191" y2="95" class="line"></line><line x1="29" y1="115" x2="29" y2="139" class="line"></line><line x1="191" y1="139" x2="191" y2="115" class="line"></line><path d="M29 139 Q29 149 39 149" class="line"></path><path d="M181 149 Q191 149 191 139" class="line"></path><a xlink:href="#INSERT" xlink:title="INSERT"><rect x="51" y="135" width="64" height="32"></rect><rect x="49" y="133" width="64" height="32" class="nonterminal"></rect><text class="nonterminal" x="59" y="153">INSERT</text></a><line x1="39" y1="149" x2="49" y2="149" class="line"></line><line x1="113" y1="149" x2="123" y2="149" class="line"></line><line x1="123" y1="149" x2="181" y2="149" class="line"></line><line x1="29" y1="139" x2="29" y2="159" class="line"></line><line x1="191" y1="159" x2="191" y2="139" class="line"></line><line x1="29" y1="159" x2="29" y2="183" class="line"></line><line x1="191" y1="183" x2="191" y2="159" class="line"></line><path d="M29 183 Q29 193 39 193" class="line"></path><path d="M181 193 Q191 193 191 183" class="line"></path><a xlink:href="#DELETE" xlink:title="DELETE"><rect x="51" y="179" width="66" height="32"></rect><rect x="49" y="177" width="66" height="32" class="nonterminal"></rect><text class="nonterminal" x="59" y="197">DELETE</text></a><line x1="39" y1="193" x2="49" y2="193" class="line"></line><line x1="115" y1="193" x2="125" y2="193" class="line"></line><line x1="125" y1="193" x2="181" y2="193" class="line"></line><line x1="29" y1="183" x2="29" y2="203" class="line"></line><line x1="191" y1="203" x2="191" y2="183" class="line"></line><line x1="29" y1="203" x2="29" y2="227" class="line"></line><line x1="191" y1="227" x2="191" y2="203" class="line"></line><path d="M29 227 Q29 237 39 237" class="line"></path><path d="M181 237 Q191 237 191 227" class="line"></path><a xlink:href="#MERGE" xlink:title="MERGE"><rect x="51" y="223" width="62" height="32"></rect><rect x="49" y="221" width="62" height="32" class="nonterminal"></rect><text class="nonterminal" x="59" y="241">MERGE</text></a><line x1="39" y1="237" x2="49" y2="237" class="line"></line><line x1="111" y1="237" x2="121" y2="237" class="line"></line><line x1="121" y1="237" x2="181" y2="237" class="line"></line><line x1="29" y1="227" x2="29" y2="247" class="line"></line><line x1="191" y1="247" x2="191" y2="227" class="line"></line><line x1="29" y1="247" x2="29" y2="271" class="line"></line><line x1="191" y1="271" x2="191" y2="247" class="line"></line><path d="M29 271 Q29 281 39 281" class="line"></path><path d="M181 281 Q191 281 191 271" class="line"></path><a xlink:href="#TRUNCATE" xlink:title="TRUNCATE"><rect x="51" y="267" width="84" height="32"></rect><rect x="49" y="265" width="84" height="32" class="nonterminal"></rect><text class="nonterminal" x="59" y="285">TRUNCATE</text></a><line x1="39" y1="281" x2="49" y2="281" class="line"></line><line x1="133" y1="281" x2="143" y2="281" class="line"></line><line x1="143" y1="281" x2="181" y2="281" class="line"></line><line x1="29" y1="271" x2="29" y2="291" class="line"></line><line x1="191" y1="291" x2="191" y2="271" class="line"></line><line x1="29" y1="291" x2="29" y2="315" class="line"></line><line x1="191" y1="315" x2="191" y2="291" class="line"></line><path d="M29 315 Q29 325 39 325" class="line"></path><path d="M181 325 Q191 325 191 315" class="line"></path><rect x="51" y="311" width="58" height="32" rx="10"></rect><rect x="49" y="309" width="58" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="329">query</text><line x1="39" y1="325" x2="49" y2="325" class="line"></line><line x1="107" y1="325" x2="117" y2="325" class="line"></line><a xlink:href="#SQL" xlink:title="SQL"><rect x="129" y="311" width="44" height="32"></rect><rect x="127" y="309" width="44" height="32" class="nonterminal"></rect><text class="nonterminal" x="137" y="329">SQL</text></a><line x1="117" y1="325" x2="127" y2="325" class="line"></line><line x1="171" y1="325" x2="181" y2="325" class="line"></line><line x1="204" y1="17" x2="201" y2="17" class="line"></line><polygon points="211 17 219 13 219 21" class="filled"></polygon><polygon points="211 17 203 13 203 21" class="filled"></polygon></svg><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">no references</xhtml:p><xhtml:br xmlns:xhtml="http://www.w3.org/1999/xhtml"></xhtml:br><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml" style="font-size: 14px; font-weight:bold"><xhtml:a name="RESULT_QUERY">RESULT_QUERY:</xhtml:a></xhtml:p><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="260" height="80"><defs><style type="text/css">
    -
    -    @namespace "http://www.w3.org/2000/svg";
    -    .line                 {fill: none; stroke: #332900;}
    -    filled                {fill: #332900; stroke: none;}
    -    text                  {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                          }
    -    text.terminal         {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                            font-weight: bold;
    -                          }
    -    rect, circle, polygon {fill: #332900; stroke: #332900;}
    -    rect.terminal         {fill: #FFCC00; stroke: #332900;}
    -    rect.nonterminal      {fill: #FFEB99; stroke: #332900;}
    -    rect.text             {fill: none; stroke: none;}    
    -    polygon.regexp        {fill: #FFF5CC; stroke: #332900;}
    -  </style></defs><polygon points="9 17 1 13 1 21" class="filled"></polygon><polygon points="17 17 9 13 9 21" class="filled"></polygon><line x1="17" y1="17" x2="19" y2="17" class="line"></line><a xlink:href="#SELECT" xlink:title="SELECT"><rect x="51" y="3" width="66" height="32"></rect><rect x="49" y="1" width="66" height="32" class="nonterminal"></rect><text class="nonterminal" x="59" y="21">SELECT</text></a><line x1="39" y1="17" x2="49" y2="17" class="line"></line><line x1="115" y1="17" x2="125" y2="17" class="line"></line><line x1="125" y1="17" x2="221" y2="17" class="line"></line><line x1="19" y1="17" x2="39" y2="17" class="line"></line><line x1="221" y1="17" x2="241" y2="17" class="line"></line><path d="M19 17 Q29 17 29 27" class="line"></path><path d="M231 27 Q231 17 241 17" class="line"></path><line x1="29" y1="27" x2="29" y2="51" class="line"></line><line x1="231" y1="51" x2="231" y2="27" class="line"></line><path d="M29 51 Q29 61 39 61" class="line"></path><path d="M221 61 Q231 61 231 51" class="line"></path><rect x="51" y="47" width="98" height="32" rx="10"></rect><rect x="49" y="45" width="98" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="65">resultQuery</text><line x1="39" y1="61" x2="49" y2="61" class="line"></line><line x1="147" y1="61" x2="157" y2="61" class="line"></line><a xlink:href="#SQL" xlink:title="SQL"><rect x="169" y="47" width="44" height="32"></rect><rect x="167" y="45" width="44" height="32" class="nonterminal"></rect><text class="nonterminal" x="177" y="65">SQL</text></a><line x1="157" y1="61" x2="167" y2="61" class="line"></line><line x1="211" y1="61" x2="221" y2="61" class="line"></line><line x1="244" y1="17" x2="241" y2="17" class="line"></line><polygon points="251 17 259 13 259 21" class="filled"></polygon><polygon points="251 17 243 13 243 21" class="filled"></polygon></svg><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">referenced by:<xhtml:ul><xhtml:li><xhtml:a href="#CURSOR" title="CURSOR">CURSOR</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#QUERY" title="QUERY">QUERY</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#RESULT" title="RESULT">RESULT</xhtml:a></xhtml:li></xhtml:ul></xhtml:p><xhtml:br xmlns:xhtml="http://www.w3.org/1999/xhtml"></xhtml:br><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml" style="font-size: 14px; font-weight:bold"><xhtml:a name="RESULT">RESULT:</xhtml:a></xhtml:p><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="448" height="872"><defs><style type="text/css">
    -    @namespace "http://www.w3.org/2000/svg";
    -    .line                 {fill: none; stroke: #332900;}
    -    filled                {fill: #332900; stroke: none;}
    -    text                  {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                          }
    -    text.terminal         {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                            font-weight: bold;
    -                          }
    -    rect, circle, polygon {fill: #332900; stroke: #332900;}
    -    rect.terminal         {fill: #FFCC00; stroke: #332900;}
    -    rect.nonterminal      {fill: #FFEB99; stroke: #332900;}
    -    rect.text             {fill: none; stroke: none;}    
    -    polygon.regexp        {fill: #FFF5CC; stroke: #332900;}
    -  </style></defs><polygon points="9 17 1 13 1 21" class="filled"></polygon><polygon points="17 17 9 13 9 21" class="filled"></polygon><line x1="17" y1="17" x2="19" y2="17" class="line"></line><rect x="71" y="3" width="52" height="32" rx="10"></rect><rect x="69" y="1" width="52" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="21">fetch</text><line x1="59" y1="17" x2="69" y2="17" class="line"></line><line x1="121" y1="17" x2="131" y2="17" class="line"></line><line x1="131" y1="17" x2="167" y2="17" class="line"></line><line x1="39" y1="17" x2="59" y2="17" class="line"></line><line x1="167" y1="17" x2="187" y2="17" class="line"></line><path d="M39 17 Q49 17 49 27" class="line"></path><path d="M177 27 Q177 17 187 17" class="line"></path><line x1="49" y1="27" x2="49" y2="51" class="line"></line><line x1="177" y1="51" x2="177" y2="27" class="line"></line><path d="M49 51 Q49 61 59 61" class="line"></path><path d="M167 61 Q177 61 177 51" class="line"></path><rect x="71" y="47" width="88" height="32" rx="10"></rect><rect x="69" y="45" width="88" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="65">fetchMany</text><line x1="59" y1="61" x2="69" y2="61" class="line"></line><line x1="157" y1="61" x2="167" y2="61" class="line"></line><line x1="49" y1="51" x2="49" y2="71" class="line"></line><line x1="177" y1="71" x2="177" y2="51" class="line"></line><line x1="49" y1="71" x2="49" y2="95" class="line"></line><line x1="177" y1="95" x2="177" y2="71" class="line"></line><path d="M49 95 Q49 105 59 105" class="line"></path><path d="M167 105 Q177 105 177 95" class="line"></path><rect x="71" y="91" width="80" height="32" rx="10"></rect><rect x="69" y="89" width="80" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="109">fetchOne</text><line x1="59" y1="105" x2="69" y2="105" class="line"></line><line x1="149" y1="105" x2="159" y2="105" class="line"></line><line x1="159" y1="105" x2="167" y2="105" class="line"></line><a xlink:href="#SQL" xlink:title="SQL"><rect x="199" y="3" width="44" height="32"></rect><rect x="197" y="1" width="44" height="32" class="nonterminal"></rect><text class="nonterminal" x="207" y="21">SQL</text></a><line x1="187" y1="17" x2="197" y2="17" class="line"></line><line x1="241" y1="17" x2="251" y2="17" class="line"></line><line x1="251" y1="17" x2="409" y2="17" class="line"></line><line x1="19" y1="17" x2="39" y2="17" class="line"></line><line x1="409" y1="17" x2="429" y2="17" class="line"></line><path d="M19 17 Q29 17 29 27" class="line"></path><path d="M419 27 Q419 17 429 17" class="line"></path><line x1="29" y1="27" x2="29" y2="139" class="line"></line><line x1="419" y1="139" x2="419" y2="27" class="line"></line><path d="M29 139 Q29 149 39 149" class="line"></path><path d="M409 149 Q419 149 419 139" class="line"></path><rect x="71" y="135" width="52" height="32" rx="10"></rect><rect x="69" y="133" width="52" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="153">fetch</text><line x1="59" y1="149" x2="69" y2="149" class="line"></line><line x1="121" y1="149" x2="131" y2="149" class="line"></line><line x1="131" y1="149" x2="159" y2="149" class="line"></line><line x1="39" y1="149" x2="59" y2="149" class="line"></line><line x1="159" y1="149" x2="179" y2="149" class="line"></line><path d="M39 149 Q49 149 49 159" class="line"></path><path d="M169 159 Q169 149 179 149" class="line"></path><line x1="49" y1="159" x2="49" y2="183" class="line"></line><line x1="169" y1="183" x2="169" y2="159" class="line"></line><path d="M49 183 Q49 193 59 193" class="line"></path><path d="M159 193 Q169 193 169 183" class="line"></path><rect x="71" y="179" width="80" height="32" rx="10"></rect><rect x="69" y="177" width="80" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="197">fetchOne</text><line x1="59" y1="193" x2="69" y2="193" class="line"></line><line x1="149" y1="193" x2="159" y2="193" class="line"></line><a xlink:href="#TABLE" xlink:title="TABLE"><rect x="191" y="135" width="58" height="32"></rect><rect x="189" y="133" width="58" height="32" class="nonterminal"></rect><text class="nonterminal" x="199" y="153">TABLE</text></a><line x1="179" y1="149" x2="189" y2="149" class="line"></line><line x1="247" y1="149" x2="257" y2="149" class="line"></line><a xlink:href="#CONDITION" xlink:title="CONDITION"><rect x="289" y="135" width="92" height="32"></rect><rect x="287" y="133" width="92" height="32" class="nonterminal"></rect><text class="nonterminal" x="297" y="153">CONDITION</text></a><line x1="277" y1="149" x2="287" y2="149" class="line"></line><line x1="379" y1="149" x2="389" y2="149" class="line"></line><line x1="257" y1="149" x2="277" y2="149" class="line"></line><line x1="389" y1="149" x2="409" y2="149" class="line"></line><path d="M257 149 Q267 149 267 159" class="line"></path><path d="M399 159 Q399 149 409 149" class="line"></path><line x1="267" y1="159" x2="267" y2="173" class="line"></line><line x1="399" y1="173" x2="399" y2="159" class="line"></line><path d="M267 173 Q267 183 277 183" class="line"></path><path d="M389 183 Q399 183 399 173" class="line"></path><line x1="277" y1="183" x2="287" y2="183" class="line"></line><line x1="287" y1="183" x2="389" y2="183" class="line"></line><line x1="29" y1="139" x2="29" y2="159" class="line"></line><line x1="419" y1="159" x2="419" y2="139" class="line"></line><line x1="29" y1="159" x2="29" y2="227" class="line"></line><line x1="419" y1="227" x2="419" y2="159" class="line"></line><path d="M29 227 Q29 237 39 237" class="line"></path><path d="M409 237 Q419 237 419 227" class="line"></path><rect x="51" y="223" width="78" height="32" rx="10"></rect><rect x="49" y="221" width="78" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="241">fetchAny</text><line x1="39" y1="237" x2="49" y2="237" class="line"></line><line x1="127" y1="237" x2="137" y2="237" class="line"></line><a xlink:href="#TABLE" xlink:title="TABLE"><rect x="149" y="223" width="58" height="32"></rect><rect x="147" y="221" width="58" height="32" class="nonterminal"></rect><text class="nonterminal" x="157" y="241">TABLE</text></a><line x1="137" y1="237" x2="147" y2="237" class="line"></line><line x1="205" y1="237" x2="215" y2="237" class="line"></line><line x1="215" y1="237" x2="409" y2="237" class="line"></line><line x1="29" y1="227" x2="29" y2="247" class="line"></line><line x1="419" y1="247" x2="419" y2="227" class="line"></line><line x1="29" y1="247" x2="29" y2="271" class="line"></line><line x1="419" y1="271" x2="419" y2="247" class="line"></line><path d="M29 271 Q29 281 39 281" class="line"></path><path d="M409 281 Q419 281 419 271" class="line"></path><rect x="51" y="267" width="52" height="32" rx="10"></rect><rect x="49" y="265" width="52" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="285">fetch</text><line x1="39" y1="281" x2="49" y2="281" class="line"></line><line x1="101" y1="281" x2="111" y2="281" class="line"></line><rect x="123" y="267" width="122" height="32" rx="10"></rect><rect x="121" y="265" width="122" height="32" class="terminal" rx="10"></rect><text class="terminal" x="131" y="285">JDBC ResultSet</text><line x1="111" y1="281" x2="121" y2="281" class="line"></line><line x1="243" y1="281" x2="253" y2="281" class="line"></line><line x1="253" y1="281" x2="409" y2="281" class="line"></line><line x1="29" y1="271" x2="29" y2="291" class="line"></line><line x1="419" y1="291" x2="419" y2="271" class="line"></line><line x1="29" y1="291" x2="29" y2="315" class="line"></line><line x1="419" y1="315" x2="419" y2="291" class="line"></line><path d="M29 315 Q29 325 39 325" class="line"></path><path d="M409 325 Q419 325 419 315" class="line"></path><a xlink:href="#RESULT_QUERY" xlink:title="RESULT_QUERY"><rect x="51" y="311" width="116" height="32"></rect><rect x="49" y="309" width="116" height="32" class="nonterminal"></rect><text class="nonterminal" x="59" y="329">RESULT_QUERY</text></a><line x1="39" y1="325" x2="49" y2="325" class="line"></line><line x1="165" y1="325" x2="175" y2="325" class="line"></line><rect x="207" y="311" width="52" height="32" rx="10"></rect><rect x="205" y="309" width="52" height="32" class="terminal" rx="10"></rect><text class="terminal" x="215" y="329">fetch</text><line x1="195" y1="325" x2="205" y2="325" class="line"></line><line x1="257" y1="325" x2="267" y2="325" class="line"></line><line x1="267" y1="325" x2="389" y2="325" class="line"></line><line x1="175" y1="325" x2="195" y2="325" class="line"></line><line x1="389" y1="325" x2="409" y2="325" class="line"></line><path d="M175 325 Q185 325 185 335" class="line"></path><path d="M399 335 Q399 325 409 325" class="line"></path><line x1="185" y1="335" x2="185" y2="359" class="line"></line><line x1="399" y1="359" x2="399" y2="335" class="line"></line><path d="M185 359 Q185 369 195 369" class="line"></path><path d="M389 369 Q399 369 399 359" class="line"></path><rect x="207" y="355" width="88" height="32" rx="10"></rect><rect x="205" y="353" width="88" height="32" class="terminal" rx="10"></rect><text class="terminal" x="215" y="373">fetchMany</text><line x1="195" y1="369" x2="205" y2="369" class="line"></line><line x1="293" y1="369" x2="303" y2="369" class="line"></line><line x1="303" y1="369" x2="389" y2="369" class="line"></line><line x1="185" y1="359" x2="185" y2="379" class="line"></line><line x1="399" y1="379" x2="399" y2="359" class="line"></line><line x1="185" y1="379" x2="185" y2="403" class="line"></line><line x1="399" y1="403" x2="399" y2="379" class="line"></line><path d="M185 403 Q185 413 195 413" class="line"></path><path d="M389 413 Q399 413 399 403" class="line"></path><rect x="207" y="399" width="80" height="32" rx="10"></rect><rect x="205" y="397" width="80" height="32" class="terminal" rx="10"></rect><text class="terminal" x="215" y="417">fetchOne</text><line x1="195" y1="413" x2="205" y2="413" class="line"></line><line x1="285" y1="413" x2="295" y2="413" class="line"></line><line x1="295" y1="413" x2="389" y2="413" class="line"></line><line x1="185" y1="403" x2="185" y2="423" class="line"></line><line x1="399" y1="423" x2="399" y2="403" class="line"></line><line x1="185" y1="423" x2="185" y2="447" class="line"></line><line x1="399" y1="447" x2="399" y2="423" class="line"></line><path d="M185 447 Q185 457 195 457" class="line"></path><path d="M389 457 Q399 457 399 447" class="line"></path><rect x="207" y="443" width="78" height="32" rx="10"></rect><rect x="205" y="441" width="78" height="32" class="terminal" rx="10"></rect><text class="terminal" x="215" y="461">fetchAny</text><line x1="195" y1="457" x2="205" y2="457" class="line"></line><line x1="283" y1="457" x2="293" y2="457" class="line"></line><line x1="293" y1="457" x2="389" y2="457" class="line"></line><line x1="185" y1="447" x2="185" y2="467" class="line"></line><line x1="399" y1="467" x2="399" y2="447" class="line"></line><line x1="185" y1="467" x2="185" y2="491" class="line"></line><line x1="399" y1="491" x2="399" y2="467" class="line"></line><path d="M185 491 Q185 501 195 501" class="line"></path><path d="M389 501 Q399 501 399 491" class="line"></path><rect x="207" y="487" width="86" height="32" rx="10"></rect><rect x="205" y="485" width="86" height="32" class="terminal" rx="10"></rect><text class="terminal" x="215" y="505">fetchMaps</text><line x1="195" y1="501" x2="205" y2="501" class="line"></line><line x1="291" y1="501" x2="301" y2="501" class="line"></line><line x1="301" y1="501" x2="389" y2="501" class="line"></line><line x1="185" y1="491" x2="185" y2="511" class="line"></line><line x1="399" y1="511" x2="399" y2="491" class="line"></line><line x1="185" y1="511" x2="185" y2="535" class="line"></line><line x1="399" y1="535" x2="399" y2="511" class="line"></line><path d="M185 535 Q185 545 195 545" class="line"></path><path d="M389 545 Q399 545 399 535" class="line"></path><rect x="207" y="531" width="106" height="32" rx="10"></rect><rect x="205" y="529" width="106" height="32" class="terminal" rx="10"></rect><text class="terminal" x="215" y="549">fetchOneMap</text><line x1="195" y1="545" x2="205" y2="545" class="line"></line><line x1="311" y1="545" x2="321" y2="545" class="line"></line><line x1="321" y1="545" x2="389" y2="545" class="line"></line><line x1="185" y1="535" x2="185" y2="555" class="line"></line><line x1="399" y1="555" x2="399" y2="535" class="line"></line><line x1="185" y1="555" x2="185" y2="579" class="line"></line><line x1="399" y1="579" x2="399" y2="555" class="line"></line><path d="M185 579 Q185 589 195 589" class="line"></path><path d="M389 589 Q399 589 399 579" class="line"></path><rect x="207" y="575" width="80" height="32" rx="10"></rect><rect x="205" y="573" width="80" height="32" class="terminal" rx="10"></rect><text class="terminal" x="215" y="593">fetchMap</text><line x1="195" y1="589" x2="205" y2="589" class="line"></line><line x1="285" y1="589" x2="295" y2="589" class="line"></line><line x1="295" y1="589" x2="389" y2="589" class="line"></line><line x1="185" y1="579" x2="185" y2="599" class="line"></line><line x1="399" y1="599" x2="399" y2="579" class="line"></line><line x1="185" y1="599" x2="185" y2="623" class="line"></line><line x1="399" y1="623" x2="399" y2="599" class="line"></line><path d="M185 623 Q185 633 195 633" class="line"></path><path d="M389 633 Q399 633 399 623" class="line"></path><rect x="207" y="619" width="96" height="32" rx="10"></rect><rect x="205" y="617" width="96" height="32" class="terminal" rx="10"></rect><text class="terminal" x="215" y="637">fetchArrays</text><line x1="195" y1="633" x2="205" y2="633" class="line"></line><line x1="301" y1="633" x2="311" y2="633" class="line"></line><line x1="311" y1="633" x2="389" y2="633" class="line"></line><line x1="185" y1="623" x2="185" y2="643" class="line"></line><line x1="399" y1="643" x2="399" y2="623" class="line"></line><line x1="185" y1="643" x2="185" y2="667" class="line"></line><line x1="399" y1="667" x2="399" y2="643" class="line"></line><path d="M185 667 Q185 677 195 677" class="line"></path><path d="M389 677 Q399 677 399 667" class="line"></path><rect x="207" y="663" width="90" height="32" rx="10"></rect><rect x="205" y="661" width="90" height="32" class="terminal" rx="10"></rect><text class="terminal" x="215" y="681">fetchArray</text><line x1="195" y1="677" x2="205" y2="677" class="line"></line><line x1="295" y1="677" x2="305" y2="677" class="line"></line><line x1="305" y1="677" x2="389" y2="677" class="line"></line><line x1="185" y1="667" x2="185" y2="687" class="line"></line><line x1="399" y1="687" x2="399" y2="667" class="line"></line><line x1="185" y1="687" x2="185" y2="711" class="line"></line><line x1="399" y1="711" x2="399" y2="687" class="line"></line><path d="M185 711 Q185 721 195 721" class="line"></path><path d="M389 721 Q399 721 399 711" class="line"></path><rect x="207" y="707" width="116" height="32" rx="10"></rect><rect x="205" y="705" width="116" height="32" class="terminal" rx="10"></rect><text class="terminal" x="215" y="725">fetchOneArray</text><line x1="195" y1="721" x2="205" y2="721" class="line"></line><line x1="321" y1="721" x2="331" y2="721" class="line"></line><line x1="331" y1="721" x2="389" y2="721" class="line"></line><line x1="185" y1="711" x2="185" y2="731" class="line"></line><line x1="399" y1="731" x2="399" y2="711" class="line"></line><line x1="185" y1="731" x2="185" y2="755" class="line"></line><line x1="399" y1="755" x2="399" y2="731" class="line"></line><path d="M185 755 Q185 765 195 765" class="line"></path><path d="M389 765 Q399 765 399 755" class="line"></path><rect x="207" y="751" width="80" height="32" rx="10"></rect><rect x="205" y="749" width="80" height="32" class="terminal" rx="10"></rect><text class="terminal" x="215" y="769">fetchInto</text><line x1="195" y1="765" x2="205" y2="765" class="line"></line><line x1="285" y1="765" x2="295" y2="765" class="line"></line><line x1="295" y1="765" x2="389" y2="765" class="line"></line><line x1="185" y1="755" x2="185" y2="775" class="line"></line><line x1="399" y1="775" x2="399" y2="755" class="line"></line><line x1="185" y1="775" x2="185" y2="799" class="line"></line><line x1="399" y1="799" x2="399" y2="775" class="line"></line><path d="M185 799 Q185 809 195 809" class="line"></path><path d="M389 809 Q399 809 399 799" class="line"></path><rect x="207" y="795" width="88" height="32" rx="10"></rect><rect x="205" y="793" width="88" height="32" class="terminal" rx="10"></rect><text class="terminal" x="215" y="813">fetchLater</text><line x1="195" y1="809" x2="205" y2="809" class="line"></line><line x1="293" y1="809" x2="303" y2="809" class="line"></line><line x1="303" y1="809" x2="389" y2="809" class="line"></line><line x1="185" y1="799" x2="185" y2="819" class="line"></line><line x1="399" y1="819" x2="399" y2="799" class="line"></line><line x1="185" y1="819" x2="185" y2="843" class="line"></line><line x1="399" y1="843" x2="399" y2="819" class="line"></line><path d="M185 843 Q185 853 195 853" class="line"></path><path d="M389 853 Q399 853 399 843" class="line"></path><rect x="207" y="839" width="72" height="32" rx="10"></rect><rect x="205" y="837" width="72" height="32" class="terminal" rx="10"></rect><text class="terminal" x="215" y="857">execute</text><line x1="195" y1="853" x2="205" y2="853" class="line"></line><line x1="277" y1="853" x2="287" y2="853" class="line"></line><rect x="299" y="839" width="82" height="32" rx="10"></rect><rect x="297" y="837" width="82" height="32" class="terminal" rx="10"></rect><text class="terminal" x="307" y="857">getResult</text><line x1="287" y1="853" x2="297" y2="853" class="line"></line><line x1="379" y1="853" x2="389" y2="853" class="line"></line><line x1="432" y1="17" x2="429" y2="17" class="line"></line><polygon points="439 17 447 13 447 21" class="filled"></polygon><polygon points="439 17 431 13 431 21" class="filled"></polygon></svg><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">no references</xhtml:p><xhtml:br xmlns:xhtml="http://www.w3.org/1999/xhtml"></xhtml:br><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml" style="font-size: 14px; font-weight:bold"><xhtml:a name="CURSOR">CURSOR:</xhtml:a></xhtml:p><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="278" height="36"><defs><style type="text/css">
    -
    -    @namespace "http://www.w3.org/2000/svg";
    -    .line                 {fill: none; stroke: #332900;}
    -    filled                {fill: #332900; stroke: none;}
    -    text                  {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                          }
    -    text.terminal         {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                            font-weight: bold;
    -                          }
    -    rect, circle, polygon {fill: #332900; stroke: #332900;}
    -    rect.terminal         {fill: #FFCC00; stroke: #332900;}
    -    rect.nonterminal      {fill: #FFEB99; stroke: #332900;}
    -    rect.text             {fill: none; stroke: none;}    
    -    polygon.regexp        {fill: #FFF5CC; stroke: #332900;}
    -  </style></defs><polygon points="9 17 1 13 1 21" class="filled"></polygon><polygon points="17 17 9 13 9 21" class="filled"></polygon><line x1="17" y1="17" x2="19" y2="17" class="line"></line><a xlink:href="#RESULT_QUERY" xlink:title="RESULT_QUERY"><rect x="31" y="3" width="116" height="32"></rect><rect x="29" y="1" width="116" height="32" class="nonterminal"></rect><text class="nonterminal" x="39" y="21">RESULT_QUERY</text></a><line x1="19" y1="17" x2="29" y2="17" class="line"></line><line x1="145" y1="17" x2="155" y2="17" class="line"></line><rect x="167" y="3" width="84" height="32" rx="10"></rect><rect x="165" y="1" width="84" height="32" class="terminal" rx="10"></rect><text class="terminal" x="175" y="21">fetchLazy</text><line x1="155" y1="17" x2="165" y2="17" class="line"></line><line x1="249" y1="17" x2="259" y2="17" class="line"></line><line x1="262" y1="17" x2="259" y2="17" class="line"></line><polygon points="269 17 277 13 277 21" class="filled"></polygon><polygon points="269 17 261 13 261 21" class="filled"></polygon></svg><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">no references</xhtml:p><xhtml:br xmlns:xhtml="http://www.w3.org/1999/xhtml"></xhtml:br><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml" style="font-size: 14px; font-weight:bold"><xhtml:a name="SELECT">SELECT:</xhtml:a></xhtml:p><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1200" height="1848"><defs><style type="text/css">
    -    @namespace "http://www.w3.org/2000/svg";
    -    .line                 {fill: none; stroke: #332900;}
    -    filled                {fill: #332900; stroke: none;}
    -    text                  {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                          }
    -    text.terminal         {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                            font-weight: bold;
    -                          }
    -    rect, circle, polygon {fill: #332900; stroke: #332900;}
    -    rect.terminal         {fill: #FFCC00; stroke: #332900;}
    -    rect.nonterminal      {fill: #FFEB99; stroke: #332900;}
    -    rect.text             {fill: none; stroke: none;}    
    -    polygon.regexp        {fill: #FFF5CC; stroke: #332900;}
    -  </style></defs><polygon points="9 49 1 45 1 53" class="filled"></polygon><polygon points="17 49 9 45 9 53" class="filled"></polygon><line x1="17" y1="49" x2="19" y2="49" class="line"></line><rect x="71" y="35" width="58" height="32" rx="10"></rect><rect x="69" y="33" width="58" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="53">select</text><line x1="59" y1="49" x2="69" y2="49" class="line"></line><line x1="127" y1="49" x2="137" y2="49" class="line"></line><line x1="137" y1="49" x2="187" y2="49" class="line"></line><line x1="39" y1="49" x2="59" y2="49" class="line"></line><line x1="187" y1="49" x2="207" y2="49" class="line"></line><path d="M39 49 Q49 49 49 59" class="line"></path><path d="M197 59 Q197 49 207 49" class="line"></path><line x1="49" y1="59" x2="49" y2="83" class="line"></line><line x1="197" y1="83" x2="197" y2="59" class="line"></line><path d="M49 83 Q49 93 59 93" class="line"></path><path d="M187 93 Q197 93 197 83" class="line"></path><rect x="71" y="79" width="108" height="32" rx="10"></rect><rect x="69" y="77" width="108" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="97">selectDistinct</text><line x1="59" y1="93" x2="69" y2="93" class="line"></line><line x1="177" y1="93" x2="187" y2="93" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="259" y="35" width="56" height="32"></rect><rect x="257" y="33" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="267" y="53">FIELD</text></a><line x1="247" y1="49" x2="257" y2="49" class="line"></line><line x1="313" y1="49" x2="323" y2="49" class="line"></line><path d="M227 49 L247 49 M246 49 Q237 49 237 39 L237 27 Q237 17 247 17" class="line"></path><path d="M323 49 L343 49 M323 49 Q333 49 333 39 L333 27 Q333 17 323 17" class="line"></path><line x1="247" y1="17" x2="257" y2="17" class="line"></line><line x1="257" y1="17" x2="323" y2="17" class="line"></line><line x1="207" y1="49" x2="227" y2="49" class="line"></line><line x1="343" y1="49" x2="363" y2="49" class="line"></line><path d="M207 49 Q217 49 217 59" class="line"></path><path d="M353 59 Q353 49 363 49" class="line"></path><line x1="217" y1="59" x2="217" y2="73" class="line"></line><line x1="353" y1="73" x2="353" y2="59" class="line"></line><path d="M217 73 Q217 83 227 83" class="line"></path><path d="M343 83 Q353 83 353 73" class="line"></path><line x1="227" y1="83" x2="237" y2="83" class="line"></line><line x1="237" y1="83" x2="343" y2="83" class="line"></line><line x1="19" y1="49" x2="39" y2="49" class="line"></line><line x1="363" y1="49" x2="383" y2="49" class="line"></line><path d="M19 49 Q29 49 29 59" class="line"></path><path d="M373 59 Q373 49 383 49" class="line"></path><line x1="29" y1="59" x2="29" y2="127" class="line"></line><line x1="373" y1="127" x2="373" y2="59" class="line"></line><path d="M29 127 Q29 137 39 137" class="line"></path><path d="M363 137 Q373 137 373 127" class="line"></path><rect x="51" y="123" width="86" height="32" rx="10"></rect><rect x="49" y="121" width="86" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="141">selectOne</text><line x1="39" y1="137" x2="49" y2="137" class="line"></line><line x1="135" y1="137" x2="145" y2="137" class="line"></line><line x1="145" y1="137" x2="363" y2="137" class="line"></line><line x1="29" y1="127" x2="29" y2="147" class="line"></line><line x1="373" y1="147" x2="373" y2="127" class="line"></line><line x1="29" y1="147" x2="29" y2="171" class="line"></line><line x1="373" y1="171" x2="373" y2="147" class="line"></line><path d="M29 171 Q29 181 39 181" class="line"></path><path d="M363 181 Q373 181 373 171" class="line"></path><rect x="51" y="167" width="88" height="32" rx="10"></rect><rect x="49" y="165" width="88" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="185">selectZero</text><line x1="39" y1="181" x2="49" y2="181" class="line"></line><line x1="137" y1="181" x2="147" y2="181" class="line"></line><line x1="147" y1="181" x2="363" y2="181" class="line"></line><line x1="29" y1="171" x2="29" y2="191" class="line"></line><line x1="373" y1="191" x2="373" y2="171" class="line"></line><line x1="29" y1="191" x2="29" y2="215" class="line"></line><line x1="373" y1="215" x2="373" y2="191" class="line"></line><path d="M29 215 Q29 225 39 225" class="line"></path><path d="M363 225 Q373 225 373 215" class="line"></path><rect x="51" y="211" width="96" height="32" rx="10"></rect><rect x="49" y="209" width="96" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="229">selectCount</text><line x1="39" y1="225" x2="49" y2="225" class="line"></line><line x1="145" y1="225" x2="155" y2="225" class="line"></line><line x1="155" y1="225" x2="363" y2="225" class="line"></line><rect x="435" y="35" width="58" height="32" rx="10"></rect><rect x="433" y="33" width="58" height="32" class="terminal" rx="10"></rect><text class="terminal" x="443" y="53">select</text><line x1="423" y1="49" x2="433" y2="49" class="line"></line><line x1="491" y1="49" x2="501" y2="49" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="553" y="35" width="56" height="32"></rect><rect x="551" y="33" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="561" y="53">FIELD</text></a><line x1="541" y1="49" x2="551" y2="49" class="line"></line><line x1="607" y1="49" x2="617" y2="49" class="line"></line><path d="M521 49 L541 49 M540 49 Q531 49 531 39 L531 27 Q531 17 541 17" class="line"></path><path d="M617 49 L637 49 M617 49 Q627 49 627 39 L627 27 Q627 17 617 17" class="line"></path><line x1="541" y1="17" x2="551" y2="17" class="line"></line><line x1="551" y1="17" x2="617" y2="17" class="line"></line><line x1="501" y1="49" x2="521" y2="49" class="line"></line><line x1="637" y1="49" x2="657" y2="49" class="line"></line><path d="M501 49 Q511 49 511 59" class="line"></path><path d="M647 59 Q647 49 657 49" class="line"></path><line x1="511" y1="59" x2="511" y2="73" class="line"></line><line x1="647" y1="73" x2="647" y2="59" class="line"></line><path d="M511 73 Q511 83 521 83" class="line"></path><path d="M637 83 Q647 83 647 73" class="line"></path><line x1="521" y1="83" x2="531" y2="83" class="line"></line><line x1="531" y1="83" x2="637" y2="83" class="line"></line><path d="M403 49 L423 49 M422 49 Q413 49 413 39 L413 11 Q413 1 423 1" class="line"></path><path d="M657 49 L677 49 M657 49 Q667 49 667 39 L667 11 Q667 1 657 1" class="line"></path><line x1="423" y1="1" x2="433" y2="1" class="line"></line><line x1="433" y1="1" x2="657" y2="1" class="line"></line><line x1="383" y1="49" x2="403" y2="49" class="line"></line><line x1="677" y1="49" x2="697" y2="49" class="line"></line><path d="M383 49 Q393 49 393 59" class="line"></path><path d="M687 59 Q687 49 697 49" class="line"></path><line x1="393" y1="59" x2="393" y2="89" class="line"></line><line x1="687" y1="89" x2="687" y2="59" class="line"></line><path d="M393 89 Q393 99 403 99" class="line"></path><path d="M677 99 Q687 99 687 89" class="line"></path><line x1="403" y1="99" x2="413" y2="99" class="line"></line><line x1="413" y1="99" x2="677" y2="99" class="line"></line><rect x="749" y="35" width="44" height="32" rx="10"></rect><rect x="747" y="33" width="44" height="32" class="terminal" rx="10"></rect><text class="terminal" x="757" y="53">hint</text><line x1="737" y1="49" x2="747" y2="49" class="line"></line><line x1="791" y1="49" x2="801" y2="49" class="line"></line><a xlink:href="#SQL" xlink:title="SQL"><rect x="813" y="35" width="44" height="32"></rect><rect x="811" y="33" width="44" height="32" class="nonterminal"></rect><text class="nonterminal" x="821" y="53">SQL</text></a><line x1="801" y1="49" x2="811" y2="49" class="line"></line><line x1="855" y1="49" x2="865" y2="49" class="line"></line><path d="M717 49 L737 49 M736 49 Q727 49 727 39 L727 27 Q727 17 737 17" class="line"></path><path d="M865 49 L885 49 M865 49 Q875 49 875 39 L875 27 Q875 17 865 17" class="line"></path><line x1="737" y1="17" x2="747" y2="17" class="line"></line><line x1="747" y1="17" x2="865" y2="17" class="line"></line><line x1="697" y1="49" x2="717" y2="49" class="line"></line><line x1="885" y1="49" x2="905" y2="49" class="line"></line><path d="M697 49 Q707 49 707 59" class="line"></path><path d="M895 59 Q895 49 905 49" class="line"></path><line x1="707" y1="59" x2="707" y2="73" class="line"></line><line x1="895" y1="73" x2="895" y2="59" class="line"></line><path d="M707 73 Q707 83 717 83" class="line"></path><path d="M885 83 Q895 83 895 73" class="line"></path><line x1="717" y1="83" x2="727" y2="83" class="line"></line><line x1="727" y1="83" x2="885" y2="83" class="line"></line><path class="line" d="M907 49 L909 49 M911 49 L913 49 M915 49 L917 49 M1 323 L3 323 M5 323 L7 323 M9 323 L11 323"></path><rect x="45" y="309" width="50" height="32" rx="10"></rect><rect x="43" y="307" width="50" height="32" class="terminal" rx="10"></rect><text class="terminal" x="53" y="327">from</text><line x1="33" y1="323" x2="43" y2="323" class="line"></line><line x1="93" y1="323" x2="103" y2="323" class="line"></line><a xlink:href="#TABLE" xlink:title="TABLE"><rect x="155" y="309" width="58" height="32"></rect><rect x="153" y="307" width="58" height="32" class="nonterminal"></rect><text class="nonterminal" x="163" y="327">TABLE</text></a><line x1="143" y1="323" x2="153" y2="323" class="line"></line><line x1="211" y1="323" x2="221" y2="323" class="line"></line><path d="M123 323 L143 323 M142 323 Q133 323 133 313 L133 301 Q133 291 143 291" class="line"></path><path d="M221 323 L241 323 M221 323 Q231 323 231 313 L231 301 Q231 291 221 291" class="line"></path><line x1="143" y1="291" x2="153" y2="291" class="line"></line><line x1="153" y1="291" x2="221" y2="291" class="line"></line><line x1="103" y1="323" x2="123" y2="323" class="line"></line><line x1="241" y1="323" x2="261" y2="323" class="line"></line><path d="M103 323 Q113 323 113 333" class="line"></path><path d="M251 333 Q251 323 261 323" class="line"></path><line x1="113" y1="333" x2="113" y2="357" class="line"></line><line x1="251" y1="357" x2="251" y2="333" class="line"></line><path d="M113 357 Q113 367 123 367" class="line"></path><path d="M241 367 Q251 367 251 357" class="line"></path><a xlink:href="#SQL" xlink:title="SQL"><rect x="135" y="353" width="44" height="32"></rect><rect x="133" y="351" width="44" height="32" class="nonterminal"></rect><text class="nonterminal" x="143" y="371">SQL</text></a><line x1="123" y1="367" x2="133" y2="367" class="line"></line><line x1="177" y1="367" x2="187" y2="367" class="line"></line><line x1="187" y1="367" x2="241" y2="367" class="line"></line><rect x="353" y="309" width="44" height="32" rx="10"></rect><rect x="351" y="307" width="44" height="32" class="terminal" rx="10"></rect><text class="terminal" x="361" y="327">join</text><line x1="341" y1="323" x2="351" y2="323" class="line"></line><line x1="395" y1="323" x2="405" y2="323" class="line"></line><line x1="405" y1="323" x2="477" y2="323" class="line"></line><line x1="321" y1="323" x2="341" y2="323" class="line"></line><line x1="477" y1="323" x2="497" y2="323" class="line"></line><path d="M321 323 Q331 323 331 333" class="line"></path><path d="M487 333 Q487 323 497 323" class="line"></path><line x1="331" y1="333" x2="331" y2="357" class="line"></line><line x1="487" y1="357" x2="487" y2="333" class="line"></line><path d="M331 357 Q331 367 341 367" class="line"></path><path d="M477 367 Q487 367 487 357" class="line"></path><rect x="353" y="353" width="106" height="32" rx="10"></rect><rect x="351" y="351" width="106" height="32" class="terminal" rx="10"></rect><text class="terminal" x="361" y="371">leftOuterJoin</text><line x1="341" y1="367" x2="351" y2="367" class="line"></line><line x1="457" y1="367" x2="467" y2="367" class="line"></line><line x1="467" y1="367" x2="477" y2="367" class="line"></line><line x1="331" y1="357" x2="331" y2="377" class="line"></line><line x1="487" y1="377" x2="487" y2="357" class="line"></line><line x1="331" y1="377" x2="331" y2="401" class="line"></line><line x1="487" y1="401" x2="487" y2="377" class="line"></line><path d="M331 401 Q331 411 341 411" class="line"></path><path d="M477 411 Q487 411 487 401" class="line"></path><rect x="353" y="397" width="116" height="32" rx="10"></rect><rect x="351" y="395" width="116" height="32" class="terminal" rx="10"></rect><text class="terminal" x="361" y="415">rightOuterJoin</text><line x1="341" y1="411" x2="351" y2="411" class="line"></line><line x1="467" y1="411" x2="477" y2="411" class="line"></line><line x1="331" y1="401" x2="331" y2="421" class="line"></line><line x1="487" y1="421" x2="487" y2="401" class="line"></line><line x1="331" y1="421" x2="331" y2="445" class="line"></line><line x1="487" y1="445" x2="487" y2="421" class="line"></line><path d="M331 445 Q331 455 341 455" class="line"></path><path d="M477 455 Q487 455 487 445" class="line"></path><rect x="353" y="441" width="106" height="32" rx="10"></rect><rect x="351" y="439" width="106" height="32" class="terminal" rx="10"></rect><text class="terminal" x="361" y="459">fullOuterJoin</text><line x1="341" y1="455" x2="351" y2="455" class="line"></line><line x1="457" y1="455" x2="467" y2="455" class="line"></line><line x1="467" y1="455" x2="477" y2="455" class="line"></line><a xlink:href="#TABLE" xlink:title="TABLE"><rect x="529" y="309" width="58" height="32"></rect><rect x="527" y="307" width="58" height="32" class="nonterminal"></rect><text class="nonterminal" x="537" y="327">TABLE</text></a><line x1="517" y1="323" x2="527" y2="323" class="line"></line><line x1="585" y1="323" x2="595" y2="323" class="line"></line><line x1="497" y1="323" x2="517" y2="323" class="line"></line><line x1="595" y1="323" x2="615" y2="323" class="line"></line><path d="M497 323 Q507 323 507 333" class="line"></path><path d="M605 333 Q605 323 615 323" class="line"></path><line x1="507" y1="333" x2="507" y2="357" class="line"></line><line x1="605" y1="357" x2="605" y2="333" class="line"></line><path d="M507 357 Q507 367 517 367" class="line"></path><path d="M595 367 Q605 367 605 357" class="line"></path><a xlink:href="#SQL" xlink:title="SQL"><rect x="529" y="353" width="44" height="32"></rect><rect x="527" y="351" width="44" height="32" class="nonterminal"></rect><text class="nonterminal" x="537" y="371">SQL</text></a><line x1="517" y1="367" x2="527" y2="367" class="line"></line><line x1="571" y1="367" x2="581" y2="367" class="line"></line><line x1="581" y1="367" x2="595" y2="367" class="line"></line><rect x="647" y="309" width="36" height="32" rx="10"></rect><rect x="645" y="307" width="36" height="32" class="terminal" rx="10"></rect><text class="terminal" x="655" y="327">on</text><line x1="635" y1="323" x2="645" y2="323" class="line"></line><line x1="681" y1="323" x2="691" y2="323" class="line"></line><a xlink:href="#CONDITION" xlink:title="CONDITION"><rect x="743" y="309" width="92" height="32"></rect><rect x="741" y="307" width="92" height="32" class="nonterminal"></rect><text class="nonterminal" x="751" y="327">CONDITION</text></a><line x1="731" y1="323" x2="741" y2="323" class="line"></line><line x1="833" y1="323" x2="843" y2="323" class="line"></line><path d="M711 323 L731 323 M730 323 Q721 323 721 313 L721 301 Q721 291 731 291" class="line"></path><path d="M843 323 L863 323 M843 323 Q853 323 853 313 L853 301 Q853 291 843 291" class="line"></path><line x1="731" y1="291" x2="741" y2="291" class="line"></line><line x1="741" y1="291" x2="843" y2="291" class="line"></line><line x1="691" y1="323" x2="711" y2="323" class="line"></line><line x1="863" y1="323" x2="883" y2="323" class="line"></line><path d="M691 323 Q701 323 701 333" class="line"></path><path d="M873 333 Q873 323 883 323" class="line"></path><line x1="701" y1="333" x2="701" y2="357" class="line"></line><line x1="873" y1="357" x2="873" y2="333" class="line"></line><path d="M701 357 Q701 367 711 367" class="line"></path><path d="M863 367 Q873 367 873 357" class="line"></path><a xlink:href="#SQL" xlink:title="SQL"><rect x="723" y="353" width="44" height="32"></rect><rect x="721" y="351" width="44" height="32" class="nonterminal"></rect><text class="nonterminal" x="731" y="371">SQL</text></a><line x1="711" y1="367" x2="721" y2="367" class="line"></line><line x1="765" y1="367" x2="775" y2="367" class="line"></line><line x1="775" y1="367" x2="863" y2="367" class="line"></line><a xlink:href="#MORE_CONDITIONS" xlink:title="MORE_CONDITIONS"><rect x="915" y="309" width="144" height="32"></rect><rect x="913" y="307" width="144" height="32" class="nonterminal"></rect><text class="nonterminal" x="923" y="327">MORE_CONDITIONS</text></a><line x1="903" y1="323" x2="913" y2="323" class="line"></line><line x1="1057" y1="323" x2="1067" y2="323" class="line"></line><line x1="883" y1="323" x2="903" y2="323" class="line"></line><line x1="1067" y1="323" x2="1087" y2="323" class="line"></line><path d="M883 323 Q893 323 893 333" class="line"></path><path d="M1077 333 Q1077 323 1087 323" class="line"></path><line x1="893" y1="333" x2="893" y2="347" class="line"></line><line x1="1077" y1="347" x2="1077" y2="333" class="line"></line><path d="M893 347 Q893 357 903 357" class="line"></path><path d="M1067 357 Q1077 357 1077 347" class="line"></path><line x1="903" y1="357" x2="913" y2="357" class="line"></line><line x1="913" y1="357" x2="1067" y2="357" class="line"></line><line x1="615" y1="323" x2="635" y2="323" class="line"></line><line x1="1087" y1="323" x2="1107" y2="323" class="line"></line><path d="M615 323 Q625 323 625 333" class="line"></path><path d="M1097 333 Q1097 323 1107 323" class="line"></path><line x1="625" y1="333" x2="625" y2="423" class="line"></line><line x1="1097" y1="423" x2="1097" y2="333" class="line"></line><path d="M625 423 Q625 433 635 433" class="line"></path><path d="M1087 433 Q1097 433 1097 423" class="line"></path><rect x="647" y="419" width="54" height="32" rx="10"></rect><rect x="645" y="417" width="54" height="32" class="terminal" rx="10"></rect><text class="terminal" x="655" y="437">using</text><line x1="635" y1="433" x2="645" y2="433" class="line"></line><line x1="699" y1="433" x2="709" y2="433" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="741" y="419" width="56" height="32"></rect><rect x="739" y="417" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="749" y="437">FIELD</text></a><line x1="729" y1="433" x2="739" y2="433" class="line"></line><line x1="795" y1="433" x2="805" y2="433" class="line"></line><path d="M709 433 L729 433 M728 433 Q719 433 719 423 L719 411 Q719 401 729 401" class="line"></path><path d="M805 433 L825 433 M805 433 Q815 433 815 423 L815 411 Q815 401 805 401" class="line"></path><line x1="729" y1="401" x2="739" y2="401" class="line"></line><line x1="739" y1="401" x2="805" y2="401" class="line"></line><line x1="825" y1="433" x2="1087" y2="433" class="line"></line><line x1="301" y1="323" x2="321" y2="323" class="line"></line><line x1="1107" y1="323" x2="1127" y2="323" class="line"></line><path d="M301 323 Q311 323 311 333" class="line"></path><path d="M1117 333 Q1117 323 1127 323" class="line"></path><line x1="311" y1="333" x2="311" y2="489" class="line"></line><line x1="1117" y1="489" x2="1117" y2="333" class="line"></line><path d="M311 489 Q311 499 321 499" class="line"></path><path d="M1107 499 Q1117 499 1117 489" class="line"></path><rect x="353" y="485" width="82" height="32" rx="10"></rect><rect x="351" y="483" width="82" height="32" class="terminal" rx="10"></rect><text class="terminal" x="361" y="503">crossJoin</text><line x1="341" y1="499" x2="351" y2="499" class="line"></line><line x1="433" y1="499" x2="443" y2="499" class="line"></line><line x1="443" y1="499" x2="527" y2="499" class="line"></line><line x1="321" y1="499" x2="341" y2="499" class="line"></line><line x1="527" y1="499" x2="547" y2="499" class="line"></line><path d="M321 499 Q331 499 331 509" class="line"></path><path d="M537 509 Q537 499 547 499" class="line"></path><line x1="331" y1="509" x2="331" y2="533" class="line"></line><line x1="537" y1="533" x2="537" y2="509" class="line"></line><path d="M331 533 Q331 543 341 543" class="line"></path><path d="M527 543 Q537 543 537 533" class="line"></path><rect x="353" y="529" width="94" height="32" rx="10"></rect><rect x="351" y="527" width="94" height="32" class="terminal" rx="10"></rect><text class="terminal" x="361" y="547">naturalJoin</text><line x1="341" y1="543" x2="351" y2="543" class="line"></line><line x1="445" y1="543" x2="455" y2="543" class="line"></line><line x1="455" y1="543" x2="527" y2="543" class="line"></line><line x1="331" y1="533" x2="331" y2="553" class="line"></line><line x1="537" y1="553" x2="537" y2="533" class="line"></line><line x1="331" y1="553" x2="331" y2="577" class="line"></line><line x1="537" y1="577" x2="537" y2="553" class="line"></line><path d="M331 577 Q331 587 341 587" class="line"></path><path d="M527 587 Q537 587 537 577" class="line"></path><rect x="353" y="573" width="158" height="32" rx="10"></rect><rect x="351" y="571" width="158" height="32" class="terminal" rx="10"></rect><text class="terminal" x="361" y="591">naturalLeftOuterJoin</text><line x1="341" y1="587" x2="351" y2="587" class="line"></line><line x1="509" y1="587" x2="519" y2="587" class="line"></line><line x1="519" y1="587" x2="527" y2="587" class="line"></line><line x1="331" y1="577" x2="331" y2="597" class="line"></line><line x1="537" y1="597" x2="537" y2="577" class="line"></line><line x1="331" y1="597" x2="331" y2="621" class="line"></line><line x1="537" y1="621" x2="537" y2="597" class="line"></line><path d="M331 621 Q331 631 341 631" class="line"></path><path d="M527 631 Q537 631 537 621" class="line"></path><rect x="353" y="617" width="166" height="32" rx="10"></rect><rect x="351" y="615" width="166" height="32" class="terminal" rx="10"></rect><text class="terminal" x="361" y="635">naturalRightOuterJoin</text><line x1="341" y1="631" x2="351" y2="631" class="line"></line><line x1="517" y1="631" x2="527" y2="631" class="line"></line><a xlink:href="#TABLE" xlink:title="TABLE"><rect x="579" y="485" width="58" height="32"></rect><rect x="577" y="483" width="58" height="32" class="nonterminal"></rect><text class="nonterminal" x="587" y="503">TABLE</text></a><line x1="567" y1="499" x2="577" y2="499" class="line"></line><line x1="635" y1="499" x2="645" y2="499" class="line"></line><line x1="547" y1="499" x2="567" y2="499" class="line"></line><line x1="645" y1="499" x2="665" y2="499" class="line"></line><path d="M547 499 Q557 499 557 509" class="line"></path><path d="M655 509 Q655 499 665 499" class="line"></path><line x1="557" y1="509" x2="557" y2="533" class="line"></line><line x1="655" y1="533" x2="655" y2="509" class="line"></line><path d="M557 533 Q557 543 567 543" class="line"></path><path d="M645 543 Q655 543 655 533" class="line"></path><a xlink:href="#SQL" xlink:title="SQL"><rect x="579" y="529" width="44" height="32"></rect><rect x="577" y="527" width="44" height="32" class="nonterminal"></rect><text class="nonterminal" x="587" y="547">SQL</text></a><line x1="567" y1="543" x2="577" y2="543" class="line"></line><line x1="621" y1="543" x2="631" y2="543" class="line"></line><line x1="631" y1="543" x2="645" y2="543" class="line"></line><line x1="665" y1="499" x2="1107" y2="499" class="line"></line><path d="M281 323 L301 323 M300 323 Q291 323 291 313 L291 285 Q291 275 301 275" class="line"></path><path d="M1127 323 L1147 323 M1127 323 Q1137 323 1137 313 L1137 285 Q1137 275 1127 275" class="line"></path><line x1="301" y1="275" x2="311" y2="275" class="line"></line><line x1="311" y1="275" x2="1127" y2="275" class="line"></line><line x1="261" y1="323" x2="281" y2="323" class="line"></line><line x1="1147" y1="323" x2="1167" y2="323" class="line"></line><path d="M261 323 Q271 323 271 333" class="line"></path><path d="M1157 333 Q1157 323 1167 323" class="line"></path><line x1="271" y1="333" x2="271" y2="655" class="line"></line><line x1="1157" y1="655" x2="1157" y2="333" class="line"></line><path d="M271 655 Q271 665 281 665" class="line"></path><path d="M1147 665 Q1157 665 1157 655" class="line"></path><line x1="281" y1="665" x2="291" y2="665" class="line"></line><line x1="291" y1="665" x2="1147" y2="665" class="line"></line><line x1="13" y1="323" x2="33" y2="323" class="line"></line><line x1="1167" y1="323" x2="1187" y2="323" class="line"></line><path d="M13 323 Q23 323 23 333" class="line"></path><path d="M1177 333 Q1177 323 1187 323" class="line"></path><line x1="23" y1="333" x2="23" y2="671" class="line"></line><line x1="1177" y1="671" x2="1177" y2="333" class="line"></line><path d="M23 671 Q23 681 33 681" class="line"></path><path d="M1167 681 Q1177 681 1177 671" class="line"></path><line x1="33" y1="681" x2="43" y2="681" class="line"></line><line x1="43" y1="681" x2="1167" y2="681" class="line"></line><path class="line" d="M1189 323 L1191 323 M1193 323 L1195 323 M1197 323 L1199 323 M309 745 L311 745 M313 745 L315 745 M317 745 L319 745"></path><rect x="373" y="731" width="62" height="32" rx="10"></rect><rect x="371" y="729" width="62" height="32" class="terminal" rx="10"></rect><text class="terminal" x="381" y="749">where</text><line x1="361" y1="745" x2="371" y2="745" class="line"></line><line x1="433" y1="745" x2="443" y2="745" class="line"></line><a xlink:href="#CONDITION" xlink:title="CONDITION"><rect x="495" y="731" width="92" height="32"></rect><rect x="493" y="729" width="92" height="32" class="nonterminal"></rect><text class="nonterminal" x="503" y="749">CONDITION</text></a><line x1="483" y1="745" x2="493" y2="745" class="line"></line><line x1="585" y1="745" x2="595" y2="745" class="line"></line><path d="M463 745 L483 745 M482 745 Q473 745 473 735 L473 723 Q473 713 483 713" class="line"></path><path d="M595 745 L615 745 M595 745 Q605 745 605 735 L605 723 Q605 713 595 713" class="line"></path><line x1="483" y1="713" x2="493" y2="713" class="line"></line><line x1="493" y1="713" x2="595" y2="713" class="line"></line><line x1="443" y1="745" x2="463" y2="745" class="line"></line><line x1="615" y1="745" x2="635" y2="745" class="line"></line><path d="M443 745 Q453 745 453 755" class="line"></path><path d="M625 755 Q625 745 635 745" class="line"></path><line x1="453" y1="755" x2="453" y2="779" class="line"></line><line x1="625" y1="779" x2="625" y2="755" class="line"></line><path d="M453 779 Q453 789 463 789" class="line"></path><path d="M615 789 Q625 789 625 779" class="line"></path><a xlink:href="#SQL" xlink:title="SQL"><rect x="475" y="775" width="44" height="32"></rect><rect x="473" y="773" width="44" height="32" class="nonterminal"></rect><text class="nonterminal" x="483" y="793">SQL</text></a><line x1="463" y1="789" x2="473" y2="789" class="line"></line><line x1="517" y1="789" x2="527" y2="789" class="line"></line><line x1="527" y1="789" x2="615" y2="789" class="line"></line><line x1="341" y1="745" x2="361" y2="745" class="line"></line><line x1="635" y1="745" x2="655" y2="745" class="line"></line><path d="M341 745 Q351 745 351 755" class="line"></path><path d="M645 755 Q645 745 655 745" class="line"></path><line x1="351" y1="755" x2="351" y2="823" class="line"></line><line x1="645" y1="823" x2="645" y2="755" class="line"></line><path d="M351 823 Q351 833 361 833" class="line"></path><path d="M635 833 Q645 833 645 823" class="line"></path><rect x="393" y="819" width="100" height="32" rx="10"></rect><rect x="391" y="817" width="100" height="32" class="terminal" rx="10"></rect><text class="terminal" x="401" y="837">whereExists</text><line x1="381" y1="833" x2="391" y2="833" class="line"></line><line x1="491" y1="833" x2="501" y2="833" class="line"></line><line x1="501" y1="833" x2="525" y2="833" class="line"></line><line x1="361" y1="833" x2="381" y2="833" class="line"></line><line x1="525" y1="833" x2="545" y2="833" class="line"></line><path d="M361 833 Q371 833 371 843" class="line"></path><path d="M535 843 Q535 833 545 833" class="line"></path><line x1="371" y1="843" x2="371" y2="867" class="line"></line><line x1="535" y1="867" x2="535" y2="843" class="line"></line><path d="M371 867 Q371 877 381 877" class="line"></path><path d="M525 877 Q535 877 535 867" class="line"></path><rect x="393" y="863" width="124" height="32" rx="10"></rect><rect x="391" y="861" width="124" height="32" class="terminal" rx="10"></rect><text class="terminal" x="401" y="881">whereNotExists</text><line x1="381" y1="877" x2="391" y2="877" class="line"></line><line x1="515" y1="877" x2="525" y2="877" class="line"></line><a xlink:href="#SELECT" xlink:title="SELECT"><rect x="557" y="819" width="66" height="32"></rect><rect x="555" y="817" width="66" height="32" class="nonterminal"></rect><text class="nonterminal" x="565" y="837">SELECT</text></a><line x1="545" y1="833" x2="555" y2="833" class="line"></line><line x1="621" y1="833" x2="631" y2="833" class="line"></line><line x1="631" y1="833" x2="635" y2="833" class="line"></line><a xlink:href="#MORE_CONDITIONS" xlink:title="MORE_CONDITIONS"><rect x="687" y="731" width="144" height="32"></rect><rect x="685" y="729" width="144" height="32" class="nonterminal"></rect><text class="nonterminal" x="695" y="749">MORE_CONDITIONS</text></a><line x1="675" y1="745" x2="685" y2="745" class="line"></line><line x1="829" y1="745" x2="839" y2="745" class="line"></line><line x1="655" y1="745" x2="675" y2="745" class="line"></line><line x1="839" y1="745" x2="859" y2="745" class="line"></line><path d="M655 745 Q665 745 665 755" class="line"></path><path d="M849 755 Q849 745 859 745" class="line"></path><line x1="665" y1="755" x2="665" y2="769" class="line"></line><line x1="849" y1="769" x2="849" y2="755" class="line"></line><path d="M665 769 Q665 779 675 779" class="line"></path><path d="M839 779 Q849 779 849 769" class="line"></path><line x1="675" y1="779" x2="685" y2="779" class="line"></line><line x1="685" y1="779" x2="839" y2="779" class="line"></line><line x1="321" y1="745" x2="341" y2="745" class="line"></line><line x1="859" y1="745" x2="879" y2="745" class="line"></line><path d="M321 745 Q331 745 331 755" class="line"></path><path d="M869 755 Q869 745 879 745" class="line"></path><line x1="331" y1="755" x2="331" y2="901" class="line"></line><line x1="869" y1="901" x2="869" y2="755" class="line"></line><path d="M331 901 Q331 911 341 911" class="line"></path><path d="M859 911 Q869 911 869 901" class="line"></path><line x1="341" y1="911" x2="351" y2="911" class="line"></line><line x1="351" y1="911" x2="859" y2="911" class="line"></line><path class="line" d="M881 745 L883 745 M885 745 L887 745 M889 745 L891 745 M224 1003 L226 1003 M228 1003 L230 1003 M232 1003 L234 1003"></path><rect x="288" y="989" width="88" height="32" rx="10"></rect><rect x="286" y="987" width="88" height="32" class="terminal" rx="10"></rect><text class="terminal" x="296" y="1007">connectBy</text><line x1="276" y1="1003" x2="286" y2="1003" class="line"></line><line x1="374" y1="1003" x2="384" y2="1003" class="line"></line><line x1="384" y1="1003" x2="438" y2="1003" class="line"></line><line x1="256" y1="1003" x2="276" y2="1003" class="line"></line><line x1="438" y1="1003" x2="458" y2="1003" class="line"></line><path d="M256 1003 Q266 1003 266 1013" class="line"></path><path d="M448 1013 Q448 1003 458 1003" class="line"></path><line x1="266" y1="1013" x2="266" y2="1037" class="line"></line><line x1="448" y1="1037" x2="448" y2="1013" class="line"></line><path d="M266 1037 Q266 1047 276 1047" class="line"></path><path d="M438 1047 Q448 1047 448 1037" class="line"></path><rect x="288" y="1033" width="142" height="32" rx="10"></rect><rect x="286" y="1031" width="142" height="32" class="terminal" rx="10"></rect><text class="terminal" x="296" y="1051">connectByNoCycle</text><line x1="276" y1="1047" x2="286" y2="1047" class="line"></line><line x1="428" y1="1047" x2="438" y2="1047" class="line"></line><a xlink:href="#CONDITION" xlink:title="CONDITION"><rect x="510" y="989" width="92" height="32"></rect><rect x="508" y="987" width="92" height="32" class="nonterminal"></rect><text class="nonterminal" x="518" y="1007">CONDITION</text></a><line x1="498" y1="1003" x2="508" y2="1003" class="line"></line><line x1="600" y1="1003" x2="610" y2="1003" class="line"></line><line x1="478" y1="1003" x2="498" y2="1003" class="line"></line><line x1="610" y1="1003" x2="630" y2="1003" class="line"></line><path d="M478 1003 Q488 1003 488 1013" class="line"></path><path d="M620 1013 Q620 1003 630 1003" class="line"></path><line x1="488" y1="1013" x2="488" y2="1037" class="line"></line><line x1="620" y1="1037" x2="620" y2="1013" class="line"></line><path d="M488 1037 Q488 1047 498 1047" class="line"></path><path d="M610 1047 Q620 1047 620 1037" class="line"></path><a xlink:href="#SQL" xlink:title="SQL"><rect x="510" y="1033" width="44" height="32"></rect><rect x="508" y="1031" width="44" height="32" class="nonterminal"></rect><text class="nonterminal" x="518" y="1051">SQL</text></a><line x1="498" y1="1047" x2="508" y2="1047" class="line"></line><line x1="552" y1="1047" x2="562" y2="1047" class="line"></line><line x1="562" y1="1047" x2="610" y2="1047" class="line"></line><path d="M458 1003 L478 1003 M477 1003 Q468 1003 468 993 L468 969 Q468 959 478 959" class="line"></path><path d="M630 1003 L650 1003 M630 1003 Q640 1003 640 993 L640 969 Q640 959 630 959" class="line"></path><rect x="490" y="945" width="44" height="32" rx="10"></rect><rect x="488" y="943" width="44" height="32" class="terminal" rx="10"></rect><text class="terminal" x="498" y="963">and</text><line x1="478" y1="959" x2="488" y2="959" class="line"></line><line x1="532" y1="959" x2="542" y2="959" class="line"></line><line x1="542" y1="959" x2="630" y2="959" class="line"></line><rect x="682" y="989" width="82" height="32" rx="10"></rect><rect x="680" y="987" width="82" height="32" class="terminal" rx="10"></rect><text class="terminal" x="690" y="1007">startWith</text><line x1="670" y1="1003" x2="680" y2="1003" class="line"></line><line x1="762" y1="1003" x2="772" y2="1003" class="line"></line><a xlink:href="#CONDITION" xlink:title="CONDITION"><rect x="804" y="989" width="92" height="32"></rect><rect x="802" y="987" width="92" height="32" class="nonterminal"></rect><text class="nonterminal" x="812" y="1007">CONDITION</text></a><line x1="792" y1="1003" x2="802" y2="1003" class="line"></line><line x1="894" y1="1003" x2="904" y2="1003" class="line"></line><line x1="772" y1="1003" x2="792" y2="1003" class="line"></line><line x1="904" y1="1003" x2="924" y2="1003" class="line"></line><path d="M772 1003 Q782 1003 782 1013" class="line"></path><path d="M914 1013 Q914 1003 924 1003" class="line"></path><line x1="782" y1="1013" x2="782" y2="1037" class="line"></line><line x1="914" y1="1037" x2="914" y2="1013" class="line"></line><path d="M782 1037 Q782 1047 792 1047" class="line"></path><path d="M904 1047 Q914 1047 914 1037" class="line"></path><a xlink:href="#SQL" xlink:title="SQL"><rect x="804" y="1033" width="44" height="32"></rect><rect x="802" y="1031" width="44" height="32" class="nonterminal"></rect><text class="nonterminal" x="812" y="1051">SQL</text></a><line x1="792" y1="1047" x2="802" y2="1047" class="line"></line><line x1="846" y1="1047" x2="856" y2="1047" class="line"></line><line x1="856" y1="1047" x2="904" y2="1047" class="line"></line><line x1="650" y1="1003" x2="670" y2="1003" class="line"></line><line x1="924" y1="1003" x2="944" y2="1003" class="line"></line><path d="M650 1003 Q660 1003 660 1013" class="line"></path><path d="M934 1013 Q934 1003 944 1003" class="line"></path><line x1="660" y1="1013" x2="660" y2="1071" class="line"></line><line x1="934" y1="1071" x2="934" y2="1013" class="line"></line><path d="M660 1071 Q660 1081 670 1081" class="line"></path><path d="M924 1081 Q934 1081 934 1071" class="line"></path><line x1="670" y1="1081" x2="680" y2="1081" class="line"></line><line x1="680" y1="1081" x2="924" y2="1081" class="line"></line><line x1="236" y1="1003" x2="256" y2="1003" class="line"></line><line x1="944" y1="1003" x2="964" y2="1003" class="line"></line><path d="M236 1003 Q246 1003 246 1013" class="line"></path><path d="M954 1013 Q954 1003 964 1003" class="line"></path><line x1="246" y1="1013" x2="246" y2="1087" class="line"></line><line x1="954" y1="1087" x2="954" y2="1013" class="line"></line><path d="M246 1087 Q246 1097 256 1097" class="line"></path><path d="M944 1097 Q954 1097 954 1087" class="line"></path><line x1="256" y1="1097" x2="266" y2="1097" class="line"></line><line x1="266" y1="1097" x2="944" y2="1097" class="line"></line><path class="line" d="M966 1003 L968 1003 M970 1003 L972 1003 M974 1003 L976 1003 M177 1161 L179 1161 M181 1161 L183 1161 M185 1161 L187 1161"></path><rect x="221" y="1147" width="74" height="32" rx="10"></rect><rect x="219" y="1145" width="74" height="32" class="terminal" rx="10"></rect><text class="terminal" x="229" y="1165">groupBy</text><line x1="209" y1="1161" x2="219" y2="1161" class="line"></line><line x1="293" y1="1161" x2="303" y2="1161" class="line"></line><a xlink:href="#GROUP_FIELD" xlink:title="GROUP_FIELD"><rect x="335" y="1147" width="108" height="32"></rect><rect x="333" y="1145" width="108" height="32" class="nonterminal"></rect><text class="nonterminal" x="343" y="1165">GROUP_FIELD</text></a><line x1="323" y1="1161" x2="333" y2="1161" class="line"></line><line x1="441" y1="1161" x2="451" y2="1161" class="line"></line><path d="M303 1161 L323 1161 M322 1161 Q313 1161 313 1151 L313 1139 Q313 1129 323 1129" class="line"></path><path d="M451 1161 L471 1161 M451 1161 Q461 1161 461 1151 L461 1139 Q461 1129 451 1129" class="line"></path><line x1="323" y1="1129" x2="333" y2="1129" class="line"></line><line x1="333" y1="1129" x2="451" y2="1129" class="line"></line><line x1="189" y1="1161" x2="209" y2="1161" class="line"></line><line x1="471" y1="1161" x2="491" y2="1161" class="line"></line><path d="M189 1161 Q199 1161 199 1171" class="line"></path><path d="M481 1171 Q481 1161 491 1161" class="line"></path><line x1="199" y1="1171" x2="199" y2="1185" class="line"></line><line x1="481" y1="1185" x2="481" y2="1171" class="line"></line><path d="M199 1185 Q199 1195 209 1195" class="line"></path><path d="M471 1195 Q481 1195 481 1185" class="line"></path><line x1="209" y1="1195" x2="219" y2="1195" class="line"></line><line x1="219" y1="1195" x2="471" y2="1195" class="line"></line><rect x="523" y="1147" width="64" height="32" rx="10"></rect><rect x="521" y="1145" width="64" height="32" class="terminal" rx="10"></rect><text class="terminal" x="531" y="1165">having</text><line x1="511" y1="1161" x2="521" y2="1161" class="line"></line><line x1="585" y1="1161" x2="595" y2="1161" class="line"></line><a xlink:href="#CONDITION" xlink:title="CONDITION"><rect x="647" y="1147" width="92" height="32"></rect><rect x="645" y="1145" width="92" height="32" class="nonterminal"></rect><text class="nonterminal" x="655" y="1165">CONDITION</text></a><line x1="635" y1="1161" x2="645" y2="1161" class="line"></line><line x1="737" y1="1161" x2="747" y2="1161" class="line"></line><path d="M615 1161 L635 1161 M634 1161 Q625 1161 625 1151 L625 1139 Q625 1129 635 1129" class="line"></path><path d="M747 1161 L767 1161 M747 1161 Q757 1161 757 1151 L757 1139 Q757 1129 747 1129" class="line"></path><line x1="635" y1="1129" x2="645" y2="1129" class="line"></line><line x1="645" y1="1129" x2="747" y2="1129" class="line"></line><line x1="595" y1="1161" x2="615" y2="1161" class="line"></line><line x1="767" y1="1161" x2="787" y2="1161" class="line"></line><path d="M595 1161 Q605 1161 605 1171" class="line"></path><path d="M777 1171 Q777 1161 787 1161" class="line"></path><line x1="605" y1="1171" x2="605" y2="1195" class="line"></line><line x1="777" y1="1195" x2="777" y2="1171" class="line"></line><path d="M605 1195 Q605 1205 615 1205" class="line"></path><path d="M767 1205 Q777 1205 777 1195" class="line"></path><a xlink:href="#SQL" xlink:title="SQL"><rect x="627" y="1191" width="44" height="32"></rect><rect x="625" y="1189" width="44" height="32" class="nonterminal"></rect><text class="nonterminal" x="635" y="1209">SQL</text></a><line x1="615" y1="1205" x2="625" y2="1205" class="line"></line><line x1="669" y1="1205" x2="679" y2="1205" class="line"></line><line x1="679" y1="1205" x2="767" y2="1205" class="line"></line><a xlink:href="#MORE_CONDITIONS" xlink:title="MORE_CONDITIONS"><rect x="819" y="1147" width="144" height="32"></rect><rect x="817" y="1145" width="144" height="32" class="nonterminal"></rect><text class="nonterminal" x="827" y="1165">MORE_CONDITIONS</text></a><line x1="807" y1="1161" x2="817" y2="1161" class="line"></line><line x1="961" y1="1161" x2="971" y2="1161" class="line"></line><line x1="787" y1="1161" x2="807" y2="1161" class="line"></line><line x1="971" y1="1161" x2="991" y2="1161" class="line"></line><path d="M787 1161 Q797 1161 797 1171" class="line"></path><path d="M981 1171 Q981 1161 991 1161" class="line"></path><line x1="797" y1="1171" x2="797" y2="1185" class="line"></line><line x1="981" y1="1185" x2="981" y2="1171" class="line"></line><path d="M797 1185 Q797 1195 807 1195" class="line"></path><path d="M971 1195 Q981 1195 981 1185" class="line"></path><line x1="807" y1="1195" x2="817" y2="1195" class="line"></line><line x1="817" y1="1195" x2="971" y2="1195" class="line"></line><line x1="491" y1="1161" x2="511" y2="1161" class="line"></line><line x1="991" y1="1161" x2="1011" y2="1161" class="line"></line><path d="M491 1161 Q501 1161 501 1171" class="line"></path><path d="M1001 1171 Q1001 1161 1011 1161" class="line"></path><line x1="501" y1="1171" x2="501" y2="1229" class="line"></line><line x1="1001" y1="1229" x2="1001" y2="1171" class="line"></line><path d="M501 1229 Q501 1239 511 1239" class="line"></path><path d="M991 1239 Q1001 1239 1001 1229" class="line"></path><line x1="511" y1="1239" x2="521" y2="1239" class="line"></line><line x1="521" y1="1239" x2="991" y2="1239" class="line"></line><path class="line" d="M1013 1161 L1015 1161 M1017 1161 L1019 1161 M1021 1161 L1023 1161 M142 1303 L144 1303 M146 1303 L148 1303 M150 1303 L152 1303"></path><rect x="186" y="1289" width="72" height="32" rx="10"></rect><rect x="184" y="1287" width="72" height="32" class="terminal" rx="10"></rect><text class="terminal" x="194" y="1307">orderBy</text><line x1="174" y1="1303" x2="184" y2="1303" class="line"></line><line x1="256" y1="1303" x2="266" y2="1303" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="318" y="1289" width="56" height="32"></rect><rect x="316" y="1287" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="326" y="1307">FIELD</text></a><line x1="306" y1="1303" x2="316" y2="1303" class="line"></line><line x1="372" y1="1303" x2="382" y2="1303" class="line"></line><path d="M286 1303 L306 1303 M305 1303 Q296 1303 296 1293 L296 1281 Q296 1271 306 1271" class="line"></path><path d="M382 1303 L402 1303 M382 1303 Q392 1303 392 1293 L392 1281 Q392 1271 382 1271" class="line"></path><line x1="306" y1="1271" x2="316" y2="1271" class="line"></line><line x1="316" y1="1271" x2="382" y2="1271" class="line"></line><line x1="402" y1="1303" x2="442" y2="1303" class="line"></line><line x1="266" y1="1303" x2="286" y2="1303" class="line"></line><line x1="442" y1="1303" x2="462" y2="1303" class="line"></line><path d="M266 1303 Q276 1303 276 1313" class="line"></path><path d="M452 1313 Q452 1303 462 1303" class="line"></path><line x1="276" y1="1313" x2="276" y2="1359" class="line"></line><line x1="452" y1="1359" x2="452" y2="1313" class="line"></line><path d="M276 1359 Q276 1369 286 1369" class="line"></path><path d="M442 1369 Q452 1369 452 1359" class="line"></path><a xlink:href="#SORT_FIELD" xlink:title="SORT_FIELD"><rect x="318" y="1355" width="96" height="32"></rect><rect x="316" y="1353" width="96" height="32" class="nonterminal"></rect><text class="nonterminal" x="326" y="1373">SORT_FIELD</text></a><line x1="306" y1="1369" x2="316" y2="1369" class="line"></line><line x1="412" y1="1369" x2="422" y2="1369" class="line"></line><path d="M286 1369 L306 1369 M305 1369 Q296 1369 296 1359 L296 1347 Q296 1337 306 1337" class="line"></path><path d="M422 1369 L442 1369 M422 1369 Q432 1369 432 1359 L432 1347 Q432 1337 422 1337" class="line"></path><line x1="306" y1="1337" x2="316" y2="1337" class="line"></line><line x1="316" y1="1337" x2="422" y2="1337" class="line"></line><line x1="276" y1="1359" x2="276" y2="1379" class="line"></line><line x1="452" y1="1379" x2="452" y2="1359" class="line"></line><line x1="276" y1="1379" x2="276" y2="1425" class="line"></line><line x1="452" y1="1425" x2="452" y2="1379" class="line"></line><path d="M276 1425 Q276 1435 286 1435" class="line"></path><path d="M442 1435 Q452 1435 452 1425" class="line"></path><a xlink:href="#INT" xlink:title="INT"><rect x="318" y="1421" width="40" height="32"></rect><rect x="316" y="1419" width="40" height="32" class="nonterminal"></rect><text class="nonterminal" x="326" y="1439">INT</text></a><line x1="306" y1="1435" x2="316" y2="1435" class="line"></line><line x1="356" y1="1435" x2="366" y2="1435" class="line"></line><path d="M286 1435 L306 1435 M305 1435 Q296 1435 296 1425 L296 1413 Q296 1403 306 1403" class="line"></path><path d="M366 1435 L386 1435 M366 1435 Q376 1435 376 1425 L376 1413 Q376 1403 366 1403" class="line"></path><line x1="306" y1="1403" x2="316" y2="1403" class="line"></line><line x1="316" y1="1403" x2="366" y2="1403" class="line"></line><line x1="386" y1="1435" x2="442" y2="1435" class="line"></line><line x1="154" y1="1303" x2="174" y2="1303" class="line"></line><line x1="462" y1="1303" x2="482" y2="1303" class="line"></line><path d="M154 1303 Q164 1303 164 1313" class="line"></path><path d="M472 1313 Q472 1303 482 1303" class="line"></path><line x1="164" y1="1313" x2="164" y2="1459" class="line"></line><line x1="472" y1="1459" x2="472" y2="1313" class="line"></line><path d="M164 1459 Q164 1469 174 1469" class="line"></path><path d="M462 1469 Q472 1469 472 1459" class="line"></path><line x1="174" y1="1469" x2="184" y2="1469" class="line"></line><line x1="184" y1="1469" x2="462" y2="1469" class="line"></line><rect x="514" y="1289" width="48" height="32" rx="10"></rect><rect x="512" y="1287" width="48" height="32" class="terminal" rx="10"></rect><text class="terminal" x="522" y="1307">limit</text><line x1="502" y1="1303" x2="512" y2="1303" class="line"></line><line x1="560" y1="1303" x2="570" y2="1303" class="line"></line><a xlink:href="#INT" xlink:title="INT"><rect x="582" y="1289" width="40" height="32"></rect><rect x="580" y="1287" width="40" height="32" class="nonterminal"></rect><text class="nonterminal" x="590" y="1307">INT</text></a><line x1="570" y1="1303" x2="580" y2="1303" class="line"></line><line x1="620" y1="1303" x2="630" y2="1303" class="line"></line><rect x="662" y="1289" width="58" height="32" rx="10"></rect><rect x="660" y="1287" width="58" height="32" class="terminal" rx="10"></rect><text class="terminal" x="670" y="1307">offset</text><line x1="650" y1="1303" x2="660" y2="1303" class="line"></line><line x1="718" y1="1303" x2="728" y2="1303" class="line"></line><a xlink:href="#INT" xlink:title="INT"><rect x="740" y="1289" width="40" height="32"></rect><rect x="738" y="1287" width="40" height="32" class="nonterminal"></rect><text class="nonterminal" x="748" y="1307">INT</text></a><line x1="728" y1="1303" x2="738" y2="1303" class="line"></line><line x1="778" y1="1303" x2="788" y2="1303" class="line"></line><line x1="630" y1="1303" x2="650" y2="1303" class="line"></line><line x1="788" y1="1303" x2="808" y2="1303" class="line"></line><path d="M630 1303 Q640 1303 640 1313" class="line"></path><path d="M798 1313 Q798 1303 808 1303" class="line"></path><line x1="640" y1="1313" x2="640" y2="1337" class="line"></line><line x1="798" y1="1337" x2="798" y2="1313" class="line"></line><path d="M640 1337 Q640 1347 650 1347" class="line"></path><path d="M788 1347 Q798 1347 798 1337" class="line"></path><a xlink:href="#INT" xlink:title="INT"><rect x="662" y="1333" width="40" height="32"></rect><rect x="660" y="1331" width="40" height="32" class="nonterminal"></rect><text class="nonterminal" x="670" y="1351">INT</text></a><line x1="650" y1="1347" x2="660" y2="1347" class="line"></line><line x1="700" y1="1347" x2="710" y2="1347" class="line"></line><line x1="710" y1="1347" x2="788" y2="1347" class="line"></line><line x1="640" y1="1337" x2="640" y2="1357" class="line"></line><line x1="798" y1="1357" x2="798" y2="1337" class="line"></line><line x1="640" y1="1357" x2="640" y2="1371" class="line"></line><line x1="798" y1="1371" x2="798" y2="1357" class="line"></line><path d="M640 1371 Q640 1381 650 1381" class="line"></path><path d="M788 1381 Q798 1381 798 1371" class="line"></path><line x1="650" y1="1381" x2="660" y2="1381" class="line"></line><line x1="660" y1="1381" x2="788" y2="1381" class="line"></line><line x1="808" y1="1303" x2="1026" y2="1303" class="line"></line><line x1="482" y1="1303" x2="502" y2="1303" class="line"></line><line x1="1026" y1="1303" x2="1046" y2="1303" class="line"></line><path d="M482 1303 Q492 1303 492 1313" class="line"></path><path d="M1036 1313 Q1036 1303 1046 1303" class="line"></path><line x1="492" y1="1313" x2="492" y2="1419" class="line"></line><line x1="1036" y1="1419" x2="1036" y2="1313" class="line"></line><path d="M492 1419 Q492 1429 502 1429" class="line"></path><path d="M1026 1429 Q1036 1429 1036 1419" class="line"></path><rect x="514" y="1415" width="86" height="32" rx="10"></rect><rect x="512" y="1413" width="86" height="32" class="terminal" rx="10"></rect><text class="terminal" x="522" y="1433">forUpdate</text><line x1="502" y1="1429" x2="512" y2="1429" class="line"></line><line x1="598" y1="1429" x2="608" y2="1429" class="line"></line><rect x="640" y="1415" width="32" height="32" rx="10"></rect><rect x="638" y="1413" width="32" height="32" class="terminal" rx="10"></rect><text class="terminal" x="648" y="1433">of</text><line x1="628" y1="1429" x2="638" y2="1429" class="line"></line><line x1="670" y1="1429" x2="680" y2="1429" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="732" y="1415" width="56" height="32"></rect><rect x="730" y="1413" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="740" y="1433">FIELD</text></a><line x1="720" y1="1429" x2="730" y2="1429" class="line"></line><line x1="786" y1="1429" x2="796" y2="1429" class="line"></line><path d="M700 1429 L720 1429 M719 1429 Q710 1429 710 1419 L710 1407 Q710 1397 720 1397" class="line"></path><path d="M796 1429 L816 1429 M796 1429 Q806 1429 806 1419 L806 1407 Q806 1397 796 1397" class="line"></path><line x1="720" y1="1397" x2="730" y2="1397" class="line"></line><line x1="730" y1="1397" x2="796" y2="1397" class="line"></line><line x1="816" y1="1429" x2="818" y2="1429" class="line"></line><line x1="680" y1="1429" x2="700" y2="1429" class="line"></line><line x1="818" y1="1429" x2="838" y2="1429" class="line"></line><path d="M680 1429 Q690 1429 690 1439" class="line"></path><path d="M828 1439 Q828 1429 838 1429" class="line"></path><line x1="690" y1="1439" x2="690" y2="1485" class="line"></line><line x1="828" y1="1485" x2="828" y2="1439" class="line"></line><path d="M690 1485 Q690 1495 700 1495" class="line"></path><path d="M818 1495 Q828 1495 828 1485" class="line"></path><a xlink:href="#TABLE" xlink:title="TABLE"><rect x="732" y="1481" width="58" height="32"></rect><rect x="730" y="1479" width="58" height="32" class="nonterminal"></rect><text class="nonterminal" x="740" y="1499">TABLE</text></a><line x1="720" y1="1495" x2="730" y2="1495" class="line"></line><line x1="788" y1="1495" x2="798" y2="1495" class="line"></line><path d="M700 1495 L720 1495 M719 1495 Q710 1495 710 1485 L710 1473 Q710 1463 720 1463" class="line"></path><path d="M798 1495 L818 1495 M798 1495 Q808 1495 808 1485 L808 1473 Q808 1463 798 1463" class="line"></path><line x1="720" y1="1463" x2="730" y2="1463" class="line"></line><line x1="730" y1="1463" x2="798" y2="1463" class="line"></line><line x1="608" y1="1429" x2="628" y2="1429" class="line"></line><line x1="838" y1="1429" x2="858" y2="1429" class="line"></line><path d="M608 1429 Q618 1429 618 1439" class="line"></path><path d="M848 1439 Q848 1429 858 1429" class="line"></path><line x1="618" y1="1439" x2="618" y2="1519" class="line"></line><line x1="848" y1="1519" x2="848" y2="1439" class="line"></line><path d="M618 1519 Q618 1529 628 1529" class="line"></path><path d="M838 1529 Q848 1529 848 1519" class="line"></path><line x1="628" y1="1529" x2="638" y2="1529" class="line"></line><line x1="638" y1="1529" x2="838" y2="1529" class="line"></line><rect x="890" y="1415" width="48" height="32" rx="10"></rect><rect x="888" y="1413" width="48" height="32" class="terminal" rx="10"></rect><text class="terminal" x="898" y="1433">wait</text><line x1="878" y1="1429" x2="888" y2="1429" class="line"></line><line x1="936" y1="1429" x2="946" y2="1429" class="line"></line><a xlink:href="#INT" xlink:title="INT"><rect x="958" y="1415" width="40" height="32"></rect><rect x="956" y="1413" width="40" height="32" class="nonterminal"></rect><text class="nonterminal" x="966" y="1433">INT</text></a><line x1="946" y1="1429" x2="956" y2="1429" class="line"></line><line x1="996" y1="1429" x2="1006" y2="1429" class="line"></line><line x1="858" y1="1429" x2="878" y2="1429" class="line"></line><line x1="1006" y1="1429" x2="1026" y2="1429" class="line"></line><path d="M858 1429 Q868 1429 868 1439" class="line"></path><path d="M1016 1439 Q1016 1429 1026 1429" class="line"></path><line x1="868" y1="1439" x2="868" y2="1463" class="line"></line><line x1="1016" y1="1463" x2="1016" y2="1439" class="line"></line><path d="M868 1463 Q868 1473 878 1473" class="line"></path><path d="M1006 1473 Q1016 1473 1016 1463" class="line"></path><rect x="890" y="1459" width="66" height="32" rx="10"></rect><rect x="888" y="1457" width="66" height="32" class="terminal" rx="10"></rect><text class="terminal" x="898" y="1477">noWait</text><line x1="878" y1="1473" x2="888" y2="1473" class="line"></line><line x1="954" y1="1473" x2="964" y2="1473" class="line"></line><line x1="964" y1="1473" x2="1006" y2="1473" class="line"></line><line x1="868" y1="1463" x2="868" y2="1483" class="line"></line><line x1="1016" y1="1483" x2="1016" y2="1463" class="line"></line><line x1="868" y1="1483" x2="868" y2="1507" class="line"></line><line x1="1016" y1="1507" x2="1016" y2="1483" class="line"></line><path d="M868 1507 Q868 1517 878 1517" class="line"></path><path d="M1006 1517 Q1016 1517 1016 1507" class="line"></path><rect x="890" y="1503" width="94" height="32" rx="10"></rect><rect x="888" y="1501" width="94" height="32" class="terminal" rx="10"></rect><text class="terminal" x="898" y="1521">skipLocked</text><line x1="878" y1="1517" x2="888" y2="1517" class="line"></line><line x1="982" y1="1517" x2="992" y2="1517" class="line"></line><line x1="992" y1="1517" x2="1006" y2="1517" class="line"></line><line x1="868" y1="1507" x2="868" y2="1527" class="line"></line><line x1="1016" y1="1527" x2="1016" y2="1507" class="line"></line><line x1="868" y1="1527" x2="868" y2="1541" class="line"></line><line x1="1016" y1="1541" x2="1016" y2="1527" class="line"></line><path d="M868 1541 Q868 1551 878 1551" class="line"></path><path d="M1006 1551 Q1016 1551 1016 1541" class="line"></path><line x1="878" y1="1551" x2="888" y2="1551" class="line"></line><line x1="888" y1="1551" x2="1006" y2="1551" class="line"></line><line x1="492" y1="1419" x2="492" y2="1439" class="line"></line><line x1="1036" y1="1439" x2="1036" y2="1419" class="line"></line><line x1="492" y1="1439" x2="492" y2="1573" class="line"></line><line x1="1036" y1="1573" x2="1036" y2="1439" class="line"></line><path d="M492 1573 Q492 1583 502 1583" class="line"></path><path d="M1026 1583 Q1036 1583 1036 1573" class="line"></path><rect x="514" y="1569" width="78" height="32" rx="10"></rect><rect x="512" y="1567" width="78" height="32" class="terminal" rx="10"></rect><text class="terminal" x="522" y="1587">forShare</text><line x1="502" y1="1583" x2="512" y2="1583" class="line"></line><line x1="590" y1="1583" x2="600" y2="1583" class="line"></line><line x1="600" y1="1583" x2="1026" y2="1583" class="line"></line><line x1="492" y1="1573" x2="492" y2="1593" class="line"></line><line x1="1036" y1="1593" x2="1036" y2="1573" class="line"></line><line x1="492" y1="1593" x2="492" y2="1607" class="line"></line><line x1="1036" y1="1607" x2="1036" y2="1593" class="line"></line><path d="M492 1607 Q492 1617 502 1617" class="line"></path><path d="M1026 1617 Q1036 1617 1036 1607" class="line"></path><line x1="502" y1="1617" x2="512" y2="1617" class="line"></line><line x1="512" y1="1617" x2="1026" y2="1617" class="line"></line><path class="line" d="M1048 1303 L1050 1303 M1052 1303 L1054 1303 M1056 1303 L1058 1303 M865 1681 L867 1681 M869 1681 L871 1681 M873 1681 L875 1681"></path><rect x="949" y="1667" width="56" height="32" rx="10"></rect><rect x="947" y="1665" width="56" height="32" class="terminal" rx="10"></rect><text class="terminal" x="957" y="1685">union</text><line x1="937" y1="1681" x2="947" y2="1681" class="line"></line><line x1="1003" y1="1681" x2="1013" y2="1681" class="line"></line><line x1="1013" y1="1681" x2="1035" y2="1681" class="line"></line><line x1="917" y1="1681" x2="937" y2="1681" class="line"></line><line x1="1035" y1="1681" x2="1055" y2="1681" class="line"></line><path d="M917 1681 Q927 1681 927 1691" class="line"></path><path d="M1045 1691 Q1045 1681 1055 1681" class="line"></path><line x1="927" y1="1691" x2="927" y2="1715" class="line"></line><line x1="1045" y1="1715" x2="1045" y2="1691" class="line"></line><path d="M927 1715 Q927 1725 937 1725" class="line"></path><path d="M1035 1725 Q1045 1725 1045 1715" class="line"></path><rect x="949" y="1711" width="72" height="32" rx="10"></rect><rect x="947" y="1709" width="72" height="32" class="terminal" rx="10"></rect><text class="terminal" x="957" y="1729">unionAll</text><line x1="937" y1="1725" x2="947" y2="1725" class="line"></line><line x1="1019" y1="1725" x2="1029" y2="1725" class="line"></line><line x1="1029" y1="1725" x2="1035" y2="1725" class="line"></line><line x1="927" y1="1715" x2="927" y2="1735" class="line"></line><line x1="1045" y1="1735" x2="1045" y2="1715" class="line"></line><line x1="927" y1="1735" x2="927" y2="1759" class="line"></line><line x1="1045" y1="1759" x2="1045" y2="1735" class="line"></line><path d="M927 1759 Q927 1769 937 1769" class="line"></path><path d="M1035 1769 Q1045 1769 1045 1759" class="line"></path><rect x="949" y="1755" width="64" height="32" rx="10"></rect><rect x="947" y="1753" width="64" height="32" class="terminal" rx="10"></rect><text class="terminal" x="957" y="1773">except</text><line x1="937" y1="1769" x2="947" y2="1769" class="line"></line><line x1="1011" y1="1769" x2="1021" y2="1769" class="line"></line><line x1="1021" y1="1769" x2="1035" y2="1769" class="line"></line><line x1="927" y1="1759" x2="927" y2="1779" class="line"></line><line x1="1045" y1="1779" x2="1045" y2="1759" class="line"></line><line x1="927" y1="1779" x2="927" y2="1803" class="line"></line><line x1="1045" y1="1803" x2="1045" y2="1779" class="line"></line><path d="M927 1803 Q927 1813 937 1813" class="line"></path><path d="M1035 1813 Q1045 1813 1045 1803" class="line"></path><rect x="949" y="1799" width="78" height="32" rx="10"></rect><rect x="947" y="1797" width="78" height="32" class="terminal" rx="10"></rect><text class="terminal" x="957" y="1817">intersect</text><line x1="937" y1="1813" x2="947" y2="1813" class="line"></line><line x1="1025" y1="1813" x2="1035" y2="1813" class="line"></line><a xlink:href="#SELECT" xlink:title="SELECT"><rect x="1067" y="1667" width="66" height="32"></rect><rect x="1065" y="1665" width="66" height="32" class="nonterminal"></rect><text class="nonterminal" x="1075" y="1685">SELECT</text></a><line x1="1055" y1="1681" x2="1065" y2="1681" class="line"></line><line x1="1131" y1="1681" x2="1141" y2="1681" class="line"></line><path d="M897 1681 L917 1681 M916 1681 Q907 1681 907 1671 L907 1659 Q907 1649 917 1649" class="line"></path><path d="M1141 1681 L1161 1681 M1141 1681 Q1151 1681 1151 1671 L1151 1659 Q1151 1649 1141 1649" class="line"></path><line x1="917" y1="1649" x2="927" y2="1649" class="line"></line><line x1="927" y1="1649" x2="1141" y2="1649" class="line"></line><line x1="877" y1="1681" x2="897" y2="1681" class="line"></line><line x1="1161" y1="1681" x2="1181" y2="1681" class="line"></line><path d="M877 1681 Q887 1681 887 1691" class="line"></path><path d="M1171 1691 Q1171 1681 1181 1681" class="line"></path><line x1="887" y1="1691" x2="887" y2="1837" class="line"></line><line x1="1171" y1="1837" x2="1171" y2="1691" class="line"></line><path d="M887 1837 Q887 1847 897 1847" class="line"></path><path d="M1161 1847 Q1171 1847 1171 1837" class="line"></path><line x1="897" y1="1847" x2="907" y2="1847" class="line"></line><line x1="907" y1="1847" x2="1161" y2="1847" class="line"></line><line x1="1184" y1="1681" x2="1181" y2="1681" class="line"></line><polygon points="1191 1681 1199 1677 1199 1685" class="filled"></polygon><polygon points="1191 1681 1183 1677 1183 1685" class="filled"></polygon></svg><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">referenced by:<xhtml:ul><xhtml:li><xhtml:a href="#CONDITION" title="CONDITION">CONDITION</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#DELETE" title="DELETE">DELETE</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#INSERT" title="INSERT">INSERT</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#MORE_CONDITIONS" title="MORE_CONDITIONS">MORE_CONDITIONS</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#QUERY" title="QUERY">QUERY</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#RESULT_QUERY" title="RESULT_QUERY">RESULT_QUERY</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#SELECT" title="SELECT">SELECT</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#TABLE" title="TABLE">TABLE</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#UPDATE" title="UPDATE">UPDATE</xhtml:a></xhtml:li></xhtml:ul></xhtml:p><xhtml:br xmlns:xhtml="http://www.w3.org/1999/xhtml"></xhtml:br><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml" style="font-size: 14px; font-weight:bold"><xhtml:a name="UPDATE">UPDATE:</xhtml:a></xhtml:p><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="590" height="282"><defs><style type="text/css">
    -
    -    @namespace "http://www.w3.org/2000/svg";
    -    .line                 {fill: none; stroke: #332900;}
    -    filled                {fill: #332900; stroke: none;}
    -    text                  {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                          }
    -    text.terminal         {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                            font-weight: bold;
    -                          }
    -    rect, circle, polygon {fill: #332900; stroke: #332900;}
    -    rect.terminal         {fill: #FFCC00; stroke: #332900;}
    -    rect.nonterminal      {fill: #FFEB99; stroke: #332900;}
    -    rect.text             {fill: none; stroke: none;}    
    -    polygon.regexp        {fill: #FFF5CC; stroke: #332900;}
    -  </style></defs><polygon points="11 33 3 29 3 37" class="filled"></polygon><polygon points="19 33 11 29 11 37" class="filled"></polygon><line x1="19" y1="33" x2="21" y2="33" class="line"></line><rect x="33" y="19" width="64" height="32" rx="10"></rect><rect x="31" y="17" width="64" height="32" class="terminal" rx="10"></rect><text class="terminal" x="41" y="37">update</text><line x1="21" y1="33" x2="31" y2="33" class="line"></line><line x1="95" y1="33" x2="105" y2="33" class="line"></line><a xlink:href="#TABLE" xlink:title="TABLE"><rect x="117" y="19" width="58" height="32"></rect><rect x="115" y="17" width="58" height="32" class="nonterminal"></rect><text class="nonterminal" x="125" y="37">TABLE</text></a><line x1="105" y1="33" x2="115" y2="33" class="line"></line><line x1="173" y1="33" x2="183" y2="33" class="line"></line><rect x="215" y="19" width="40" height="32" rx="10"></rect><rect x="213" y="17" width="40" height="32" class="terminal" rx="10"></rect><text class="terminal" x="223" y="37">set</text><line x1="203" y1="33" x2="213" y2="33" class="line"></line><line x1="253" y1="33" x2="263" y2="33" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="275" y="19" width="56" height="32"></rect><rect x="273" y="17" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="283" y="37">FIELD</text></a><line x1="263" y1="33" x2="273" y2="33" class="line"></line><line x1="329" y1="33" x2="339" y2="33" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="351" y="19" width="56" height="32"></rect><rect x="349" y="17" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="359" y="37">FIELD</text></a><line x1="339" y1="33" x2="349" y2="33" class="line"></line><line x1="405" y1="33" x2="415" y2="33" class="line"></line><path d="M183 33 L203 33 M202 33 Q193 33 193 23 L193 11 Q193 1 203 1" class="line"></path><path d="M415 33 L435 33 M415 33 Q425 33 425 23 L425 11 Q425 1 415 1" class="line"></path><line x1="203" y1="1" x2="213" y2="1" class="line"></line><line x1="213" y1="1" x2="415" y2="1" class="line"></line><path class="line" d="M437 33 L439 33 M441 33 L443 33 M445 33 L447 33 M1 115 L3 115 M5 115 L7 115 M9 115 L11 115"></path><rect x="65" y="101" width="62" height="32" rx="10"></rect><rect x="63" y="99" width="62" height="32" class="terminal" rx="10"></rect><text class="terminal" x="73" y="119">where</text><line x1="53" y1="115" x2="63" y2="115" class="line"></line><line x1="125" y1="115" x2="135" y2="115" class="line"></line><a xlink:href="#CONDITION" xlink:title="CONDITION"><rect x="187" y="101" width="92" height="32"></rect><rect x="185" y="99" width="92" height="32" class="nonterminal"></rect><text class="nonterminal" x="195" y="119">CONDITION</text></a><line x1="175" y1="115" x2="185" y2="115" class="line"></line><line x1="277" y1="115" x2="287" y2="115" class="line"></line><path d="M155 115 L175 115 M174 115 Q165 115 165 105 L165 93 Q165 83 175 83" class="line"></path><path d="M287 115 L307 115 M287 115 Q297 115 297 105 L297 93 Q297 83 287 83" class="line"></path><line x1="175" y1="83" x2="185" y2="83" class="line"></line><line x1="185" y1="83" x2="287" y2="83" class="line"></line><line x1="135" y1="115" x2="155" y2="115" class="line"></line><line x1="307" y1="115" x2="327" y2="115" class="line"></line><path d="M135 115 Q145 115 145 125" class="line"></path><path d="M317 125 Q317 115 327 115" class="line"></path><line x1="145" y1="125" x2="145" y2="149" class="line"></line><line x1="317" y1="149" x2="317" y2="125" class="line"></line><path d="M145 149 Q145 159 155 159" class="line"></path><path d="M307 159 Q317 159 317 149" class="line"></path><a xlink:href="#SQL" xlink:title="SQL"><rect x="167" y="145" width="44" height="32"></rect><rect x="165" y="143" width="44" height="32" class="nonterminal"></rect><text class="nonterminal" x="175" y="163">SQL</text></a><line x1="155" y1="159" x2="165" y2="159" class="line"></line><line x1="209" y1="159" x2="219" y2="159" class="line"></line><line x1="219" y1="159" x2="307" y2="159" class="line"></line><line x1="33" y1="115" x2="53" y2="115" class="line"></line><line x1="327" y1="115" x2="347" y2="115" class="line"></line><path d="M33 115 Q43 115 43 125" class="line"></path><path d="M337 125 Q337 115 347 115" class="line"></path><line x1="43" y1="125" x2="43" y2="193" class="line"></line><line x1="337" y1="193" x2="337" y2="125" class="line"></line><path d="M43 193 Q43 203 53 203" class="line"></path><path d="M327 203 Q337 203 337 193" class="line"></path><rect x="85" y="189" width="100" height="32" rx="10"></rect><rect x="83" y="187" width="100" height="32" class="terminal" rx="10"></rect><text class="terminal" x="93" y="207">whereExists</text><line x1="73" y1="203" x2="83" y2="203" class="line"></line><line x1="183" y1="203" x2="193" y2="203" class="line"></line><line x1="193" y1="203" x2="217" y2="203" class="line"></line><line x1="53" y1="203" x2="73" y2="203" class="line"></line><line x1="217" y1="203" x2="237" y2="203" class="line"></line><path d="M53 203 Q63 203 63 213" class="line"></path><path d="M227 213 Q227 203 237 203" class="line"></path><line x1="63" y1="213" x2="63" y2="237" class="line"></line><line x1="227" y1="237" x2="227" y2="213" class="line"></line><path d="M63 237 Q63 247 73 247" class="line"></path><path d="M217 247 Q227 247 227 237" class="line"></path><rect x="85" y="233" width="124" height="32" rx="10"></rect><rect x="83" y="231" width="124" height="32" class="terminal" rx="10"></rect><text class="terminal" x="93" y="251">whereNotExists</text><line x1="73" y1="247" x2="83" y2="247" class="line"></line><line x1="207" y1="247" x2="217" y2="247" class="line"></line><a xlink:href="#SELECT" xlink:title="SELECT"><rect x="249" y="189" width="66" height="32"></rect><rect x="247" y="187" width="66" height="32" class="nonterminal"></rect><text class="nonterminal" x="257" y="207">SELECT</text></a><line x1="237" y1="203" x2="247" y2="203" class="line"></line><line x1="313" y1="203" x2="323" y2="203" class="line"></line><line x1="323" y1="203" x2="327" y2="203" class="line"></line><a xlink:href="#MORE_CONDITIONS" xlink:title="MORE_CONDITIONS"><rect x="379" y="101" width="144" height="32"></rect><rect x="377" y="99" width="144" height="32" class="nonterminal"></rect><text class="nonterminal" x="387" y="119">MORE_CONDITIONS</text></a><line x1="367" y1="115" x2="377" y2="115" class="line"></line><line x1="521" y1="115" x2="531" y2="115" class="line"></line><line x1="347" y1="115" x2="367" y2="115" class="line"></line><line x1="531" y1="115" x2="551" y2="115" class="line"></line><path d="M347 115 Q357 115 357 125" class="line"></path><path d="M541 125 Q541 115 551 115" class="line"></path><line x1="357" y1="125" x2="357" y2="139" class="line"></line><line x1="541" y1="139" x2="541" y2="125" class="line"></line><path d="M357 139 Q357 149 367 149" class="line"></path><path d="M531 149 Q541 149 541 139" class="line"></path><line x1="367" y1="149" x2="377" y2="149" class="line"></line><line x1="377" y1="149" x2="531" y2="149" class="line"></line><line x1="13" y1="115" x2="33" y2="115" class="line"></line><line x1="551" y1="115" x2="571" y2="115" class="line"></line><path d="M13 115 Q23 115 23 125" class="line"></path><path d="M561 125 Q561 115 571 115" class="line"></path><line x1="23" y1="125" x2="23" y2="271" class="line"></line><line x1="561" y1="271" x2="561" y2="125" class="line"></line><path d="M23 271 Q23 281 33 281" class="line"></path><path d="M551 281 Q561 281 561 271" class="line"></path><line x1="33" y1="281" x2="43" y2="281" class="line"></line><line x1="43" y1="281" x2="551" y2="281" class="line"></line><line x1="574" y1="115" x2="571" y2="115" class="line"></line><polygon points="581 115 589 111 589 119" class="filled"></polygon><polygon points="581 115 573 111 573 119" class="filled"></polygon></svg><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">referenced by:<xhtml:ul><xhtml:li><xhtml:a href="#QUERY" title="QUERY">QUERY</xhtml:a></xhtml:li></xhtml:ul></xhtml:p><xhtml:br xmlns:xhtml="http://www.w3.org/1999/xhtml"></xhtml:br><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml" style="font-size: 14px; font-weight:bold"><xhtml:a name="INSERT">INSERT:</xhtml:a></xhtml:p><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1026" height="376"><defs><style type="text/css">
    -
    -    @namespace "http://www.w3.org/2000/svg";
    -    .line                 {fill: none; stroke: #332900;}
    -    filled                {fill: #332900; stroke: none;}
    -    text                  {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                          }
    -    text.terminal         {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                            font-weight: bold;
    -                          }
    -    rect, circle, polygon {fill: #332900; stroke: #332900;}
    -    rect.terminal         {fill: #FFCC00; stroke: #332900;}
    -    rect.nonterminal      {fill: #FFEB99; stroke: #332900;}
    -    rect.text             {fill: none; stroke: none;}    
    -    polygon.regexp        {fill: #FFF5CC; stroke: #332900;}
    -  </style></defs><polygon points="11 17 3 13 3 21" class="filled"></polygon><polygon points="19 17 11 13 11 21" class="filled"></polygon><line x1="19" y1="17" x2="21" y2="17" class="line"></line><rect x="33" y="3" width="84" height="32" rx="10"></rect><rect x="31" y="1" width="84" height="32" class="terminal" rx="10"></rect><text class="terminal" x="41" y="21">insertInto</text><line x1="21" y1="17" x2="31" y2="17" class="line"></line><line x1="115" y1="17" x2="125" y2="17" class="line"></line><path class="line" d="M127 17 L129 17 M131 17 L133 17 M135 17 L137 17 M1 83 L3 83 M5 83 L7 83 M9 83 L11 83"></path><a xlink:href="#SELECT" xlink:title="SELECT"><rect x="45" y="69" width="66" height="32"></rect><rect x="43" y="67" width="66" height="32" class="nonterminal"></rect><text class="nonterminal" x="53" y="87">SELECT</text></a><line x1="33" y1="83" x2="43" y2="83" class="line"></line><line x1="109" y1="83" x2="119" y2="83" class="line"></line><line x1="119" y1="83" x2="987" y2="83" class="line"></line><line x1="13" y1="83" x2="33" y2="83" class="line"></line><line x1="987" y1="83" x2="1007" y2="83" class="line"></line><path d="M13 83 Q23 83 23 93" class="line"></path><path d="M997 93 Q997 83 1007 83" class="line"></path><line x1="23" y1="93" x2="23" y2="183" class="line"></line><line x1="997" y1="183" x2="997" y2="93" class="line"></line><path d="M23 183 Q23 193 33 193" class="line"></path><path d="M987 193 Q997 193 997 183" class="line"></path><a xlink:href="#TABLE" xlink:title="TABLE"><rect x="45" y="179" width="58" height="32"></rect><rect x="43" y="177" width="58" height="32" class="nonterminal"></rect><text class="nonterminal" x="53" y="197">TABLE</text></a><line x1="33" y1="193" x2="43" y2="193" class="line"></line><line x1="101" y1="193" x2="111" y2="193" class="line"></line><rect x="183" y="179" width="40" height="32" rx="10"></rect><rect x="181" y="177" width="40" height="32" class="terminal" rx="10"></rect><text class="terminal" x="191" y="197">set</text><line x1="171" y1="193" x2="181" y2="193" class="line"></line><line x1="221" y1="193" x2="231" y2="193" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="243" y="179" width="56" height="32"></rect><rect x="241" y="177" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="251" y="197">FIELD</text></a><line x1="231" y1="193" x2="241" y2="193" class="line"></line><line x1="297" y1="193" x2="307" y2="193" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="319" y="179" width="56" height="32"></rect><rect x="317" y="177" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="327" y="197">FIELD</text></a><line x1="307" y1="193" x2="317" y2="193" class="line"></line><line x1="373" y1="193" x2="383" y2="193" class="line"></line><path d="M151 193 L171 193 M170 193 Q161 193 161 183 L161 171 Q161 161 171 161" class="line"></path><path d="M383 193 L403 193 M383 193 Q393 193 393 183 L393 171 Q393 161 383 161" class="line"></path><line x1="171" y1="161" x2="181" y2="161" class="line"></line><line x1="181" y1="161" x2="383" y2="161" class="line"></line><path d="M131 193 L151 193 M150 193 Q141 193 141 183 L141 137 Q141 127 151 127" class="line"></path><path d="M403 193 L423 193 M403 193 Q413 193 413 183 L413 137 Q413 127 403 127" class="line"></path><rect x="163" y="113" width="94" height="32" rx="10"></rect><rect x="161" y="111" width="94" height="32" class="terminal" rx="10"></rect><text class="terminal" x="171" y="131">newRecord</text><line x1="151" y1="127" x2="161" y2="127" class="line"></line><line x1="255" y1="127" x2="265" y2="127" class="line"></line><line x1="265" y1="127" x2="403" y2="127" class="line"></line><line x1="423" y1="193" x2="485" y2="193" class="line"></line><line x1="111" y1="193" x2="131" y2="193" class="line"></line><line x1="485" y1="193" x2="505" y2="193" class="line"></line><path d="M111 193 Q121 193 121 203" class="line"></path><path d="M495 203 Q495 193 505 193" class="line"></path><line x1="121" y1="203" x2="121" y2="265" class="line"></line><line x1="495" y1="265" x2="495" y2="203" class="line"></line><path d="M121 265 Q121 275 131 275" class="line"></path><path d="M485 275 Q495 275 495 265" class="line"></path><rect x="163" y="261" width="62" height="32" rx="10"></rect><rect x="161" y="259" width="62" height="32" class="terminal" rx="10"></rect><text class="terminal" x="171" y="279">values</text><line x1="151" y1="275" x2="161" y2="275" class="line"></line><line x1="223" y1="275" x2="233" y2="275" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="265" y="261" width="56" height="32"></rect><rect x="263" y="259" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="273" y="279">FIELD</text></a><line x1="253" y1="275" x2="263" y2="275" class="line"></line><line x1="319" y1="275" x2="329" y2="275" class="line"></line><path d="M233 275 L253 275 M252 275 Q243 275 243 265 L243 253 Q243 243 253 243" class="line"></path><path d="M329 275 L349 275 M329 275 Q339 275 339 265 L339 253 Q339 243 329 243" class="line"></path><line x1="253" y1="243" x2="263" y2="243" class="line"></line><line x1="263" y1="243" x2="329" y2="243" class="line"></line><path d="M131 275 L151 275 M150 275 Q141 275 141 265 L141 237 Q141 227 151 227" class="line"></path><path d="M349 275 L369 275 M349 275 Q359 275 359 265 L359 237 Q359 227 349 227" class="line"></path><line x1="151" y1="227" x2="161" y2="227" class="line"></line><line x1="161" y1="227" x2="349" y2="227" class="line"></line><line x1="369" y1="275" x2="485" y2="275" class="line"></line><line x1="121" y1="265" x2="121" y2="285" class="line"></line><line x1="495" y1="285" x2="495" y2="265" class="line"></line><line x1="121" y1="285" x2="121" y2="347" class="line"></line><line x1="495" y1="347" x2="495" y2="285" class="line"></line><path d="M121 347 Q121 357 131 357" class="line"></path><path d="M485 357 Q495 357 495 347" class="line"></path><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="163" y="343" width="56" height="32"></rect><rect x="161" y="341" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="171" y="361">FIELD</text></a><line x1="151" y1="357" x2="161" y2="357" class="line"></line><line x1="217" y1="357" x2="227" y2="357" class="line"></line><path d="M131 357 L151 357 M150 357 Q141 357 141 347 L141 335 Q141 325 151 325" class="line"></path><path d="M227 357 L247 357 M227 357 Q237 357 237 347 L237 335 Q237 325 227 325" class="line"></path><line x1="151" y1="325" x2="161" y2="325" class="line"></line><line x1="161" y1="325" x2="227" y2="325" class="line"></line><rect x="279" y="343" width="62" height="32" rx="10"></rect><rect x="277" y="341" width="62" height="32" class="terminal" rx="10"></rect><text class="terminal" x="287" y="361">values</text><line x1="267" y1="357" x2="277" y2="357" class="line"></line><line x1="339" y1="357" x2="349" y2="357" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="381" y="343" width="56" height="32"></rect><rect x="379" y="341" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="389" y="361">FIELD</text></a><line x1="369" y1="357" x2="379" y2="357" class="line"></line><line x1="435" y1="357" x2="445" y2="357" class="line"></line><path d="M349 357 L369 357 M368 357 Q359 357 359 347 L359 335 Q359 325 369 325" class="line"></path><path d="M445 357 L465 357 M445 357 Q455 357 455 347 L455 335 Q455 325 445 325" class="line"></path><line x1="369" y1="325" x2="379" y2="325" class="line"></line><line x1="379" y1="325" x2="445" y2="325" class="line"></line><path d="M247 357 L267 357 M266 357 Q257 357 257 347 L257 319 Q257 309 267 309" class="line"></path><path d="M465 357 L485 357 M465 357 Q475 357 475 347 L475 319 Q475 309 465 309" class="line"></path><line x1="267" y1="309" x2="277" y2="309" class="line"></line><line x1="277" y1="309" x2="465" y2="309" class="line"></line><rect x="537" y="179" width="170" height="32" rx="10"></rect><rect x="535" y="177" width="170" height="32" class="terminal" rx="10"></rect><text class="terminal" x="545" y="197">onDuplicateKeyUpdate</text><line x1="525" y1="193" x2="535" y2="193" class="line"></line><line x1="705" y1="193" x2="715" y2="193" class="line"></line><rect x="747" y="179" width="40" height="32" rx="10"></rect><rect x="745" y="177" width="40" height="32" class="terminal" rx="10"></rect><text class="terminal" x="755" y="197">set</text><line x1="735" y1="193" x2="745" y2="193" class="line"></line><line x1="785" y1="193" x2="795" y2="193" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="807" y="179" width="56" height="32"></rect><rect x="805" y="177" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="815" y="197">FIELD</text></a><line x1="795" y1="193" x2="805" y2="193" class="line"></line><line x1="861" y1="193" x2="871" y2="193" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="883" y="179" width="56" height="32"></rect><rect x="881" y="177" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="891" y="197">FIELD</text></a><line x1="871" y1="193" x2="881" y2="193" class="line"></line><line x1="937" y1="193" x2="947" y2="193" class="line"></line><path d="M715 193 L735 193 M734 193 Q725 193 725 183 L725 171 Q725 161 735 161" class="line"></path><path d="M947 193 L967 193 M947 193 Q957 193 957 183 L957 171 Q957 161 947 161" class="line"></path><line x1="735" y1="161" x2="745" y2="161" class="line"></line><line x1="745" y1="161" x2="947" y2="161" class="line"></line><line x1="505" y1="193" x2="525" y2="193" class="line"></line><line x1="967" y1="193" x2="987" y2="193" class="line"></line><path d="M505 193 Q515 193 515 203" class="line"></path><path d="M977 203 Q977 193 987 193" class="line"></path><line x1="515" y1="203" x2="515" y2="249" class="line"></line><line x1="977" y1="249" x2="977" y2="203" class="line"></line><path d="M515 249 Q515 259 525 259" class="line"></path><path d="M967 259 Q977 259 977 249" class="line"></path><rect x="537" y="245" width="80" height="32" rx="10"></rect><rect x="535" y="243" width="80" height="32" class="terminal" rx="10"></rect><text class="terminal" x="545" y="263">returning</text><line x1="525" y1="259" x2="535" y2="259" class="line"></line><line x1="615" y1="259" x2="625" y2="259" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="677" y="245" width="56" height="32"></rect><rect x="675" y="243" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="685" y="263">FIELD</text></a><line x1="665" y1="259" x2="675" y2="259" class="line"></line><line x1="731" y1="259" x2="741" y2="259" class="line"></line><path d="M645 259 L665 259 M664 259 Q655 259 655 249 L655 237 Q655 227 665 227" class="line"></path><path d="M741 259 L761 259 M741 259 Q751 259 751 249 L751 237 Q751 227 741 227" class="line"></path><line x1="665" y1="227" x2="675" y2="227" class="line"></line><line x1="675" y1="227" x2="741" y2="227" class="line"></line><line x1="625" y1="259" x2="645" y2="259" class="line"></line><line x1="761" y1="259" x2="781" y2="259" class="line"></line><path d="M625 259 Q635 259 635 269" class="line"></path><path d="M771 269 Q771 259 781 259" class="line"></path><line x1="635" y1="269" x2="635" y2="283" class="line"></line><line x1="771" y1="283" x2="771" y2="269" class="line"></line><path d="M635 283 Q635 293 645 293" class="line"></path><path d="M761 293 Q771 293 771 283" class="line"></path><line x1="645" y1="293" x2="655" y2="293" class="line"></line><line x1="655" y1="293" x2="761" y2="293" class="line"></line><line x1="781" y1="259" x2="967" y2="259" class="line"></line><line x1="515" y1="249" x2="515" y2="269" class="line"></line><line x1="977" y1="269" x2="977" y2="249" class="line"></line><line x1="515" y1="269" x2="515" y2="299" class="line"></line><line x1="977" y1="299" x2="977" y2="269" class="line"></line><path d="M515 299 Q515 309 525 309" class="line"></path><path d="M967 309 Q977 309 977 299" class="line"></path><line x1="525" y1="309" x2="535" y2="309" class="line"></line><line x1="535" y1="309" x2="967" y2="309" class="line"></line><line x1="1010" y1="83" x2="1007" y2="83" class="line"></line><polygon points="1017 83 1025 79 1025 87" class="filled"></polygon><polygon points="1017 83 1009 79 1009 87" class="filled"></polygon></svg><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">referenced by:<xhtml:ul><xhtml:li><xhtml:a href="#QUERY" title="QUERY">QUERY</xhtml:a></xhtml:li></xhtml:ul></xhtml:p><xhtml:br xmlns:xhtml="http://www.w3.org/1999/xhtml"></xhtml:br><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml" style="font-size: 14px; font-weight:bold"><xhtml:a name="DELETE">DELETE:</xhtml:a></xhtml:p><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="754" height="200"><defs><style type="text/css">
    -
    -    @namespace "http://www.w3.org/2000/svg";
    -    .line                 {fill: none; stroke: #332900;}
    -    filled                {fill: #332900; stroke: none;}
    -    text                  {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                          }
    -    text.terminal         {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                            font-weight: bold;
    -                          }
    -    rect, circle, polygon {fill: #332900; stroke: #332900;}
    -    rect.terminal         {fill: #FFCC00; stroke: #332900;}
    -    rect.nonterminal      {fill: #FFEB99; stroke: #332900;}
    -    rect.text             {fill: none; stroke: none;}    
    -    polygon.regexp        {fill: #FFF5CC; stroke: #332900;}
    -  </style></defs><polygon points="9 33 1 29 1 37" class="filled"></polygon><polygon points="17 33 9 29 9 37" class="filled"></polygon><line x1="17" y1="33" x2="19" y2="33" class="line"></line><rect x="31" y="19" width="60" height="32" rx="10"></rect><rect x="29" y="17" width="60" height="32" class="terminal" rx="10"></rect><text class="terminal" x="39" y="37">delete</text><line x1="19" y1="33" x2="29" y2="33" class="line"></line><line x1="89" y1="33" x2="99" y2="33" class="line"></line><a xlink:href="#TABLE" xlink:title="TABLE"><rect x="111" y="19" width="58" height="32"></rect><rect x="109" y="17" width="58" height="32" class="nonterminal"></rect><text class="nonterminal" x="119" y="37">TABLE</text></a><line x1="99" y1="33" x2="109" y2="33" class="line"></line><line x1="167" y1="33" x2="177" y2="33" class="line"></line><rect x="229" y="19" width="62" height="32" rx="10"></rect><rect x="227" y="17" width="62" height="32" class="terminal" rx="10"></rect><text class="terminal" x="237" y="37">where</text><line x1="217" y1="33" x2="227" y2="33" class="line"></line><line x1="289" y1="33" x2="299" y2="33" class="line"></line><a xlink:href="#CONDITION" xlink:title="CONDITION"><rect x="351" y="19" width="92" height="32"></rect><rect x="349" y="17" width="92" height="32" class="nonterminal"></rect><text class="nonterminal" x="359" y="37">CONDITION</text></a><line x1="339" y1="33" x2="349" y2="33" class="line"></line><line x1="441" y1="33" x2="451" y2="33" class="line"></line><path d="M319 33 L339 33 M338 33 Q329 33 329 23 L329 11 Q329 1 339 1" class="line"></path><path d="M451 33 L471 33 M451 33 Q461 33 461 23 L461 11 Q461 1 451 1" class="line"></path><line x1="339" y1="1" x2="349" y2="1" class="line"></line><line x1="349" y1="1" x2="451" y2="1" class="line"></line><line x1="299" y1="33" x2="319" y2="33" class="line"></line><line x1="471" y1="33" x2="491" y2="33" class="line"></line><path d="M299 33 Q309 33 309 43" class="line"></path><path d="M481 43 Q481 33 491 33" class="line"></path><line x1="309" y1="43" x2="309" y2="67" class="line"></line><line x1="481" y1="67" x2="481" y2="43" class="line"></line><path d="M309 67 Q309 77 319 77" class="line"></path><path d="M471 77 Q481 77 481 67" class="line"></path><a xlink:href="#SQL" xlink:title="SQL"><rect x="331" y="63" width="44" height="32"></rect><rect x="329" y="61" width="44" height="32" class="nonterminal"></rect><text class="nonterminal" x="339" y="81">SQL</text></a><line x1="319" y1="77" x2="329" y2="77" class="line"></line><line x1="373" y1="77" x2="383" y2="77" class="line"></line><line x1="383" y1="77" x2="471" y2="77" class="line"></line><line x1="197" y1="33" x2="217" y2="33" class="line"></line><line x1="491" y1="33" x2="511" y2="33" class="line"></line><path d="M197 33 Q207 33 207 43" class="line"></path><path d="M501 43 Q501 33 511 33" class="line"></path><line x1="207" y1="43" x2="207" y2="111" class="line"></line><line x1="501" y1="111" x2="501" y2="43" class="line"></line><path d="M207 111 Q207 121 217 121" class="line"></path><path d="M491 121 Q501 121 501 111" class="line"></path><rect x="249" y="107" width="100" height="32" rx="10"></rect><rect x="247" y="105" width="100" height="32" class="terminal" rx="10"></rect><text class="terminal" x="257" y="125">whereExists</text><line x1="237" y1="121" x2="247" y2="121" class="line"></line><line x1="347" y1="121" x2="357" y2="121" class="line"></line><line x1="357" y1="121" x2="381" y2="121" class="line"></line><line x1="217" y1="121" x2="237" y2="121" class="line"></line><line x1="381" y1="121" x2="401" y2="121" class="line"></line><path d="M217 121 Q227 121 227 131" class="line"></path><path d="M391 131 Q391 121 401 121" class="line"></path><line x1="227" y1="131" x2="227" y2="155" class="line"></line><line x1="391" y1="155" x2="391" y2="131" class="line"></line><path d="M227 155 Q227 165 237 165" class="line"></path><path d="M381 165 Q391 165 391 155" class="line"></path><rect x="249" y="151" width="124" height="32" rx="10"></rect><rect x="247" y="149" width="124" height="32" class="terminal" rx="10"></rect><text class="terminal" x="257" y="169">whereNotExists</text><line x1="237" y1="165" x2="247" y2="165" class="line"></line><line x1="371" y1="165" x2="381" y2="165" class="line"></line><a xlink:href="#SELECT" xlink:title="SELECT"><rect x="413" y="107" width="66" height="32"></rect><rect x="411" y="105" width="66" height="32" class="nonterminal"></rect><text class="nonterminal" x="421" y="125">SELECT</text></a><line x1="401" y1="121" x2="411" y2="121" class="line"></line><line x1="477" y1="121" x2="487" y2="121" class="line"></line><line x1="487" y1="121" x2="491" y2="121" class="line"></line><a xlink:href="#MORE_CONDITIONS" xlink:title="MORE_CONDITIONS"><rect x="543" y="19" width="144" height="32"></rect><rect x="541" y="17" width="144" height="32" class="nonterminal"></rect><text class="nonterminal" x="551" y="37">MORE_CONDITIONS</text></a><line x1="531" y1="33" x2="541" y2="33" class="line"></line><line x1="685" y1="33" x2="695" y2="33" class="line"></line><line x1="511" y1="33" x2="531" y2="33" class="line"></line><line x1="695" y1="33" x2="715" y2="33" class="line"></line><path d="M511 33 Q521 33 521 43" class="line"></path><path d="M705 43 Q705 33 715 33" class="line"></path><line x1="521" y1="43" x2="521" y2="57" class="line"></line><line x1="705" y1="57" x2="705" y2="43" class="line"></line><path d="M521 57 Q521 67 531 67" class="line"></path><path d="M695 67 Q705 67 705 57" class="line"></path><line x1="531" y1="67" x2="541" y2="67" class="line"></line><line x1="541" y1="67" x2="695" y2="67" class="line"></line><line x1="177" y1="33" x2="197" y2="33" class="line"></line><line x1="715" y1="33" x2="735" y2="33" class="line"></line><path d="M177 33 Q187 33 187 43" class="line"></path><path d="M725 43 Q725 33 735 33" class="line"></path><line x1="187" y1="43" x2="187" y2="189" class="line"></line><line x1="725" y1="189" x2="725" y2="43" class="line"></line><path d="M187 189 Q187 199 197 199" class="line"></path><path d="M715 199 Q725 199 725 189" class="line"></path><line x1="197" y1="199" x2="207" y2="199" class="line"></line><line x1="207" y1="199" x2="715" y2="199" class="line"></line><line x1="738" y1="33" x2="735" y2="33" class="line"></line><polygon points="745 33 753 29 753 37" class="filled"></polygon><polygon points="745 33 737 29 737 37" class="filled"></polygon></svg><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">referenced by:<xhtml:ul><xhtml:li><xhtml:a href="#QUERY" title="QUERY">QUERY</xhtml:a></xhtml:li></xhtml:ul></xhtml:p><xhtml:br xmlns:xhtml="http://www.w3.org/1999/xhtml"></xhtml:br><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml" style="font-size: 14px; font-weight:bold"><xhtml:a name="MERGE">MERGE:</xhtml:a></xhtml:p><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1038" height="390"><defs><style type="text/css">
    -    @namespace "http://www.w3.org/2000/svg";
    -    .line                 {fill: none; stroke: #332900;}
    -    filled                {fill: #332900; stroke: none;}
    -    text                  {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                          }
    -    text.terminal         {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                            font-weight: bold;
    -                          }
    -    rect, circle, polygon {fill: #332900; stroke: #332900;}
    -    rect.terminal         {fill: #FFCC00; stroke: #332900;}
    -    rect.nonterminal      {fill: #FFEB99; stroke: #332900;}
    -    rect.text             {fill: none; stroke: none;}    
    -    polygon.regexp        {fill: #FFF5CC; stroke: #332900;}
    -  </style></defs><polygon points="9 33 1 29 1 37" class="filled"></polygon><polygon points="17 33 9 29 9 37" class="filled"></polygon><line x1="17" y1="33" x2="19" y2="33" class="line"></line><rect x="31" y="19" width="88" height="32" rx="10"></rect><rect x="29" y="17" width="88" height="32" class="terminal" rx="10"></rect><text class="terminal" x="39" y="37">mergeInto</text><line x1="19" y1="33" x2="29" y2="33" class="line"></line><line x1="117" y1="33" x2="127" y2="33" class="line"></line><a xlink:href="#TABLE" xlink:title="TABLE"><rect x="139" y="19" width="58" height="32"></rect><rect x="137" y="17" width="58" height="32" class="nonterminal"></rect><text class="nonterminal" x="147" y="37">TABLE</text></a><line x1="127" y1="33" x2="137" y2="33" class="line"></line><line x1="195" y1="33" x2="205" y2="33" class="line"></line><rect x="237" y="19" width="54" height="32" rx="10"></rect><rect x="235" y="17" width="54" height="32" class="terminal" rx="10"></rect><text class="terminal" x="245" y="37">using</text><line x1="225" y1="33" x2="235" y2="33" class="line"></line><line x1="289" y1="33" x2="299" y2="33" class="line"></line><a xlink:href="#TABLE" xlink:title="TABLE"><rect x="311" y="19" width="58" height="32"></rect><rect x="309" y="17" width="58" height="32" class="nonterminal"></rect><text class="nonterminal" x="319" y="37">TABLE</text></a><line x1="299" y1="33" x2="309" y2="33" class="line"></line><line x1="367" y1="33" x2="377" y2="33" class="line"></line><line x1="205" y1="33" x2="225" y2="33" class="line"></line><line x1="377" y1="33" x2="397" y2="33" class="line"></line><path d="M205 33 Q215 33 215 43" class="line"></path><path d="M387 43 Q387 33 397 33" class="line"></path><line x1="215" y1="43" x2="215" y2="67" class="line"></line><line x1="387" y1="67" x2="387" y2="43" class="line"></line><path d="M215 67 Q215 77 225 77" class="line"></path><path d="M377 77 Q387 77 387 67" class="line"></path><rect x="237" y="63" width="84" height="32" rx="10"></rect><rect x="235" y="61" width="84" height="32" class="terminal" rx="10"></rect><text class="terminal" x="245" y="81">usingDual</text><line x1="225" y1="77" x2="235" y2="77" class="line"></line><line x1="319" y1="77" x2="329" y2="77" class="line"></line><line x1="329" y1="77" x2="377" y2="77" class="line"></line><rect x="409" y="19" width="36" height="32" rx="10"></rect><rect x="407" y="17" width="36" height="32" class="terminal" rx="10"></rect><text class="terminal" x="417" y="37">on</text><line x1="397" y1="33" x2="407" y2="33" class="line"></line><line x1="443" y1="33" x2="453" y2="33" class="line"></line><a xlink:href="#CONDITION" xlink:title="CONDITION"><rect x="505" y="19" width="92" height="32"></rect><rect x="503" y="17" width="92" height="32" class="nonterminal"></rect><text class="nonterminal" x="513" y="37">CONDITION</text></a><line x1="493" y1="33" x2="503" y2="33" class="line"></line><line x1="595" y1="33" x2="605" y2="33" class="line"></line><path d="M473 33 L493 33 M492 33 Q483 33 483 23 L483 11 Q483 1 493 1" class="line"></path><path d="M605 33 L625 33 M605 33 Q615 33 615 23 L615 11 Q615 1 605 1" class="line"></path><line x1="493" y1="1" x2="503" y2="1" class="line"></line><line x1="503" y1="1" x2="605" y2="1" class="line"></line><line x1="453" y1="33" x2="473" y2="33" class="line"></line><line x1="625" y1="33" x2="645" y2="33" class="line"></line><path d="M453 33 Q463 33 463 43" class="line"></path><path d="M635 43 Q635 33 645 33" class="line"></path><line x1="463" y1="43" x2="463" y2="67" class="line"></line><line x1="635" y1="67" x2="635" y2="43" class="line"></line><path d="M463 67 Q463 77 473 77" class="line"></path><path d="M625 77 Q635 77 635 67" class="line"></path><a xlink:href="#SQL" xlink:title="SQL"><rect x="485" y="63" width="44" height="32"></rect><rect x="483" y="61" width="44" height="32" class="nonterminal"></rect><text class="nonterminal" x="493" y="81">SQL</text></a><line x1="473" y1="77" x2="483" y2="77" class="line"></line><line x1="527" y1="77" x2="537" y2="77" class="line"></line><line x1="537" y1="77" x2="625" y2="77" class="line"></line><a xlink:href="#MORE_CONDITIONS" xlink:title="MORE_CONDITIONS"><rect x="677" y="19" width="144" height="32"></rect><rect x="675" y="17" width="144" height="32" class="nonterminal"></rect><text class="nonterminal" x="685" y="37">MORE_CONDITIONS</text></a><line x1="665" y1="33" x2="675" y2="33" class="line"></line><line x1="819" y1="33" x2="829" y2="33" class="line"></line><line x1="645" y1="33" x2="665" y2="33" class="line"></line><line x1="829" y1="33" x2="849" y2="33" class="line"></line><path d="M645 33 Q655 33 655 43" class="line"></path><path d="M839 43 Q839 33 849 33" class="line"></path><line x1="655" y1="43" x2="655" y2="57" class="line"></line><line x1="839" y1="57" x2="839" y2="43" class="line"></line><path d="M655 57 Q655 67 665 67" class="line"></path><path d="M829 67 Q839 67 839 57" class="line"></path><line x1="665" y1="67" x2="675" y2="67" class="line"></line><line x1="675" y1="67" x2="829" y2="67" class="line"></line><path class="line" d="M851 33 L853 33 M855 33 L857 33 M859 33 L861 33 M1 159 L3 159 M5 159 L7 159 M9 159 L11 159"></path><rect x="45" y="145" width="190" height="32" rx="10"></rect><rect x="43" y="143" width="190" height="32" class="terminal" rx="10"></rect><text class="terminal" x="53" y="163">whenMatchedThenUpdate</text><line x1="33" y1="159" x2="43" y2="159" class="line"></line><line x1="233" y1="159" x2="243" y2="159" class="line"></line><rect x="275" y="145" width="40" height="32" rx="10"></rect><rect x="273" y="143" width="40" height="32" class="terminal" rx="10"></rect><text class="terminal" x="283" y="163">set</text><line x1="263" y1="159" x2="273" y2="159" class="line"></line><line x1="313" y1="159" x2="323" y2="159" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="335" y="145" width="56" height="32"></rect><rect x="333" y="143" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="343" y="163">FIELD</text></a><line x1="323" y1="159" x2="333" y2="159" class="line"></line><line x1="389" y1="159" x2="399" y2="159" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="411" y="145" width="56" height="32"></rect><rect x="409" y="143" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="419" y="163">FIELD</text></a><line x1="399" y1="159" x2="409" y2="159" class="line"></line><line x1="465" y1="159" x2="475" y2="159" class="line"></line><path d="M243 159 L263 159 M262 159 Q253 159 253 149 L253 137 Q253 127 263 127" class="line"></path><path d="M475 159 L495 159 M475 159 Q485 159 485 149 L485 137 Q485 127 475 127" class="line"></path><line x1="263" y1="127" x2="273" y2="127" class="line"></line><line x1="273" y1="127" x2="475" y2="127" class="line"></line><rect x="527" y="145" width="62" height="32" rx="10"></rect><rect x="525" y="143" width="62" height="32" class="terminal" rx="10"></rect><text class="terminal" x="535" y="163">where</text><line x1="515" y1="159" x2="525" y2="159" class="line"></line><line x1="587" y1="159" x2="597" y2="159" class="line"></line><a xlink:href="#CONDITION" xlink:title="CONDITION"><rect x="609" y="145" width="92" height="32"></rect><rect x="607" y="143" width="92" height="32" class="nonterminal"></rect><text class="nonterminal" x="617" y="163">CONDITION</text></a><line x1="597" y1="159" x2="607" y2="159" class="line"></line><line x1="699" y1="159" x2="709" y2="159" class="line"></line><rect x="741" y="145" width="104" height="32" rx="10"></rect><rect x="739" y="143" width="104" height="32" class="terminal" rx="10"></rect><text class="terminal" x="749" y="163">deleteWhere</text><line x1="729" y1="159" x2="739" y2="159" class="line"></line><line x1="843" y1="159" x2="853" y2="159" class="line"></line><a xlink:href="#CONDITION" xlink:title="CONDITION"><rect x="865" y="145" width="92" height="32"></rect><rect x="863" y="143" width="92" height="32" class="nonterminal"></rect><text class="nonterminal" x="873" y="163">CONDITION</text></a><line x1="853" y1="159" x2="863" y2="159" class="line"></line><line x1="955" y1="159" x2="965" y2="159" class="line"></line><line x1="709" y1="159" x2="729" y2="159" class="line"></line><line x1="965" y1="159" x2="985" y2="159" class="line"></line><path d="M709 159 Q719 159 719 169" class="line"></path><path d="M975 169 Q975 159 985 159" class="line"></path><line x1="719" y1="169" x2="719" y2="183" class="line"></line><line x1="975" y1="183" x2="975" y2="169" class="line"></line><path d="M719 183 Q719 193 729 193" class="line"></path><path d="M965 193 Q975 193 975 183" class="line"></path><line x1="729" y1="193" x2="739" y2="193" class="line"></line><line x1="739" y1="193" x2="965" y2="193" class="line"></line><line x1="495" y1="159" x2="515" y2="159" class="line"></line><line x1="985" y1="159" x2="1005" y2="159" class="line"></line><path d="M495 159 Q505 159 505 169" class="line"></path><path d="M995 169 Q995 159 1005 159" class="line"></path><line x1="505" y1="169" x2="505" y2="199" class="line"></line><line x1="995" y1="199" x2="995" y2="169" class="line"></line><path d="M505 199 Q505 209 515 209" class="line"></path><path d="M985 209 Q995 209 995 199" class="line"></path><line x1="515" y1="209" x2="525" y2="209" class="line"></line><line x1="525" y1="209" x2="985" y2="209" class="line"></line><line x1="13" y1="159" x2="33" y2="159" class="line"></line><line x1="1005" y1="159" x2="1025" y2="159" class="line"></line><path d="M13 159 Q23 159 23 169" class="line"></path><path d="M1015 169 Q1015 159 1025 159" class="line"></path><line x1="23" y1="169" x2="23" y2="215" class="line"></line><line x1="1015" y1="215" x2="1015" y2="169" class="line"></line><path d="M23 215 Q23 225 33 225" class="line"></path><path d="M1005 225 Q1015 225 1015 215" class="line"></path><line x1="33" y1="225" x2="43" y2="225" class="line"></line><line x1="43" y1="225" x2="1005" y2="225" class="line"></line><path class="line" d="M1027 159 L1029 159 M1031 159 L1033 159 M1035 159 L1037 159 M153 289 L155 289 M157 289 L159 289 M161 289 L163 289"></path><rect x="197" y="275" width="206" height="32" rx="10"></rect><rect x="195" y="273" width="206" height="32" class="terminal" rx="10"></rect><text class="terminal" x="205" y="293">whenNotMatchedThenInsert</text><line x1="185" y1="289" x2="195" y2="289" class="line"></line><line x1="401" y1="289" x2="411" y2="289" class="line"></line><rect x="463" y="275" width="40" height="32" rx="10"></rect><rect x="461" y="273" width="40" height="32" class="terminal" rx="10"></rect><text class="terminal" x="471" y="293">set</text><line x1="451" y1="289" x2="461" y2="289" class="line"></line><line x1="501" y1="289" x2="511" y2="289" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="523" y="275" width="56" height="32"></rect><rect x="521" y="273" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="531" y="293">FIELD</text></a><line x1="511" y1="289" x2="521" y2="289" class="line"></line><line x1="577" y1="289" x2="587" y2="289" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="599" y="275" width="56" height="32"></rect><rect x="597" y="273" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="607" y="293">FIELD</text></a><line x1="587" y1="289" x2="597" y2="289" class="line"></line><line x1="653" y1="289" x2="663" y2="289" class="line"></line><path d="M431 289 L451 289 M450 289 Q441 289 441 279 L441 267 Q441 257 451 257" class="line"></path><path d="M663 289 L683 289 M663 289 Q673 289 673 279 L673 267 Q673 257 663 257" class="line"></path><line x1="451" y1="257" x2="461" y2="257" class="line"></line><line x1="461" y1="257" x2="663" y2="257" class="line"></line><line x1="683" y1="289" x2="745" y2="289" class="line"></line><line x1="411" y1="289" x2="431" y2="289" class="line"></line><line x1="745" y1="289" x2="765" y2="289" class="line"></line><path d="M411 289 Q421 289 421 299" class="line"></path><path d="M755 299 Q755 289 765 289" class="line"></path><line x1="421" y1="299" x2="421" y2="345" class="line"></line><line x1="755" y1="345" x2="755" y2="299" class="line"></line><path d="M421 345 Q421 355 431 355" class="line"></path><path d="M745 355 Q755 355 755 345" class="line"></path><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="463" y="341" width="56" height="32"></rect><rect x="461" y="339" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="471" y="359">FIELD</text></a><line x1="451" y1="355" x2="461" y2="355" class="line"></line><line x1="517" y1="355" x2="527" y2="355" class="line"></line><path d="M431 355 L451 355 M450 355 Q441 355 441 345 L441 333 Q441 323 451 323" class="line"></path><path d="M527 355 L547 355 M527 355 Q537 355 537 345 L537 333 Q537 323 527 323" class="line"></path><line x1="451" y1="323" x2="461" y2="323" class="line"></line><line x1="461" y1="323" x2="527" y2="323" class="line"></line><rect x="559" y="341" width="62" height="32" rx="10"></rect><rect x="557" y="339" width="62" height="32" class="terminal" rx="10"></rect><text class="terminal" x="567" y="359">values</text><line x1="547" y1="355" x2="557" y2="355" class="line"></line><line x1="619" y1="355" x2="629" y2="355" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="661" y="341" width="56" height="32"></rect><rect x="659" y="339" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="669" y="359">FIELD</text></a><line x1="649" y1="355" x2="659" y2="355" class="line"></line><line x1="715" y1="355" x2="725" y2="355" class="line"></line><path d="M629 355 L649 355 M648 355 Q639 355 639 345 L639 333 Q639 323 649 323" class="line"></path><path d="M725 355 L745 355 M725 355 Q735 355 735 345 L735 333 Q735 323 725 323" class="line"></path><line x1="649" y1="323" x2="659" y2="323" class="line"></line><line x1="659" y1="323" x2="725" y2="323" class="line"></line><rect x="797" y="275" width="62" height="32" rx="10"></rect><rect x="795" y="273" width="62" height="32" class="terminal" rx="10"></rect><text class="terminal" x="805" y="293">where</text><line x1="785" y1="289" x2="795" y2="289" class="line"></line><line x1="857" y1="289" x2="867" y2="289" class="line"></line><a xlink:href="#CONDITION" xlink:title="CONDITION"><rect x="879" y="275" width="92" height="32"></rect><rect x="877" y="273" width="92" height="32" class="nonterminal"></rect><text class="nonterminal" x="887" y="293">CONDITION</text></a><line x1="867" y1="289" x2="877" y2="289" class="line"></line><line x1="969" y1="289" x2="979" y2="289" class="line"></line><line x1="765" y1="289" x2="785" y2="289" class="line"></line><line x1="979" y1="289" x2="999" y2="289" class="line"></line><path d="M765 289 Q775 289 775 299" class="line"></path><path d="M989 299 Q989 289 999 289" class="line"></path><line x1="775" y1="299" x2="775" y2="313" class="line"></line><line x1="989" y1="313" x2="989" y2="299" class="line"></line><path d="M775 313 Q775 323 785 323" class="line"></path><path d="M979 323 Q989 323 989 313" class="line"></path><line x1="785" y1="323" x2="795" y2="323" class="line"></line><line x1="795" y1="323" x2="979" y2="323" class="line"></line><line x1="165" y1="289" x2="185" y2="289" class="line"></line><line x1="999" y1="289" x2="1019" y2="289" class="line"></line><path d="M165 289 Q175 289 175 299" class="line"></path><path d="M1009 299 Q1009 289 1019 289" class="line"></path><line x1="175" y1="299" x2="175" y2="379" class="line"></line><line x1="1009" y1="379" x2="1009" y2="299" class="line"></line><path d="M175 379 Q175 389 185 389" class="line"></path><path d="M999 389 Q1009 389 1009 379" class="line"></path><line x1="185" y1="389" x2="195" y2="389" class="line"></line><line x1="195" y1="389" x2="999" y2="389" class="line"></line><line x1="1022" y1="289" x2="1019" y2="289" class="line"></line><polygon points="1029 289 1037 285 1037 293" class="filled"></polygon><polygon points="1029 289 1021 285 1021 293" class="filled"></polygon></svg><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">referenced by:<xhtml:ul><xhtml:li><xhtml:a href="#QUERY" title="QUERY">QUERY</xhtml:a></xhtml:li></xhtml:ul></xhtml:p><xhtml:br xmlns:xhtml="http://www.w3.org/1999/xhtml"></xhtml:br><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml" style="font-size: 14px; font-weight:bold"><xhtml:a name="TRUNCATE">TRUNCATE:</xhtml:a></xhtml:p><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="210" height="36"><defs><style type="text/css">
    -
    -    @namespace "http://www.w3.org/2000/svg";
    -    .line                 {fill: none; stroke: #332900;}
    -    filled                {fill: #332900; stroke: none;}
    -    text                  {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                          }
    -    text.terminal         {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                            font-weight: bold;
    -                          }
    -    rect, circle, polygon {fill: #332900; stroke: #332900;}
    -    rect.terminal         {fill: #FFCC00; stroke: #332900;}
    -    rect.nonterminal      {fill: #FFEB99; stroke: #332900;}
    -    rect.text             {fill: none; stroke: none;}    
    -    polygon.regexp        {fill: #FFF5CC; stroke: #332900;}
    -  </style></defs><polygon points="9 17 1 13 1 21" class="filled"></polygon><polygon points="17 17 9 13 9 21" class="filled"></polygon><line x1="17" y1="17" x2="19" y2="17" class="line"></line><rect x="31" y="3" width="74" height="32" rx="10"></rect><rect x="29" y="1" width="74" height="32" class="terminal" rx="10"></rect><text class="terminal" x="39" y="21">truncate</text><line x1="19" y1="17" x2="29" y2="17" class="line"></line><line x1="103" y1="17" x2="113" y2="17" class="line"></line><a xlink:href="#TABLE" xlink:title="TABLE"><rect x="125" y="3" width="58" height="32"></rect><rect x="123" y="1" width="58" height="32" class="nonterminal"></rect><text class="nonterminal" x="133" y="21">TABLE</text></a><line x1="113" y1="17" x2="123" y2="17" class="line"></line><line x1="181" y1="17" x2="191" y2="17" class="line"></line><line x1="194" y1="17" x2="191" y2="17" class="line"></line><polygon points="201 17 209 13 209 21" class="filled"></polygon><polygon points="201 17 193 13 193 21" class="filled"></polygon></svg><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">referenced by:<xhtml:ul><xhtml:li><xhtml:a href="#QUERY" title="QUERY">QUERY</xhtml:a></xhtml:li></xhtml:ul></xhtml:p><xhtml:br xmlns:xhtml="http://www.w3.org/1999/xhtml"></xhtml:br><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml" style="font-size: 14px; font-weight:bold"><xhtml:a name="SQL">SQL:</xhtml:a></xhtml:p><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="324" height="68"><defs><style type="text/css">
    -    @namespace "http://www.w3.org/2000/svg";
    -    .line                 {fill: none; stroke: #332900;}
    -    filled                {fill: #332900; stroke: none;}
    -    text                  {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                          }
    -    text.terminal         {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                            font-weight: bold;
    -                          }
    -    rect, circle, polygon {fill: #332900; stroke: #332900;}
    -    rect.terminal         {fill: #FFCC00; stroke: #332900;}
    -    rect.nonterminal      {fill: #FFEB99; stroke: #332900;}
    -    rect.text             {fill: none; stroke: none;}    
    -    polygon.regexp        {fill: #FFF5CC; stroke: #332900;}
    -  </style></defs><polygon points="9 33 1 29 1 37" class="filled"></polygon><polygon points="17 33 9 29 9 37" class="filled"></polygon><line x1="17" y1="33" x2="19" y2="33" class="line"></line><rect x="31" y="19" width="92" height="32" rx="10"></rect><rect x="29" y="17" width="92" height="32" class="terminal" rx="10"></rect><text class="terminal" x="39" y="37">SQL String</text><line x1="19" y1="33" x2="29" y2="33" class="line"></line><line x1="121" y1="33" x2="131" y2="33" class="line"></line><a xlink:href="#BINDING" xlink:title="BINDING"><rect x="183" y="19" width="74" height="32"></rect><rect x="181" y="17" width="74" height="32" class="nonterminal"></rect><text class="nonterminal" x="191" y="37">BINDING</text></a><line x1="171" y1="33" x2="181" y2="33" class="line"></line><line x1="255" y1="33" x2="265" y2="33" class="line"></line><path d="M151 33 L171 33 M170 33 Q161 33 161 23 L161 11 Q161 1 171 1" class="line"></path><path d="M265 33 L285 33 M265 33 Q275 33 275 23 L275 11 Q275 1 265 1" class="line"></path><line x1="171" y1="1" x2="181" y2="1" class="line"></line><line x1="181" y1="1" x2="265" y2="1" class="line"></line><line x1="131" y1="33" x2="151" y2="33" class="line"></line><line x1="285" y1="33" x2="305" y2="33" class="line"></line><path d="M131 33 Q141 33 141 43" class="line"></path><path d="M295 43 Q295 33 305 33" class="line"></path><line x1="141" y1="43" x2="141" y2="57" class="line"></line><line x1="295" y1="57" x2="295" y2="43" class="line"></line><path d="M141 57 Q141 67 151 67" class="line"></path><path d="M285 67 Q295 67 295 57" class="line"></path><line x1="151" y1="67" x2="161" y2="67" class="line"></line><line x1="161" y1="67" x2="285" y2="67" class="line"></line><line x1="308" y1="33" x2="305" y2="33" class="line"></line><polygon points="315 33 323 29 323 37" class="filled"></polygon><polygon points="315 33 307 29 307 37" class="filled"></polygon></svg><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">referenced by:<xhtml:ul><xhtml:li><xhtml:a href="#CONDITION" title="CONDITION">CONDITION</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#DELETE" title="DELETE">DELETE</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#FIELD" title="FIELD">FIELD</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#MERGE" title="MERGE">MERGE</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#MORE_CONDITIONS" title="MORE_CONDITIONS">MORE_CONDITIONS</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#QUERY" title="QUERY">QUERY</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#RESULT" title="RESULT">RESULT</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#RESULT_QUERY" title="RESULT_QUERY">RESULT_QUERY</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#SELECT" title="SELECT">SELECT</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#TABLE" title="TABLE">TABLE</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#UPDATE" title="UPDATE">UPDATE</xhtml:a></xhtml:li></xhtml:ul></xhtml:p><xhtml:br xmlns:xhtml="http://www.w3.org/1999/xhtml"></xhtml:br><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml" style="font-size: 14px; font-weight:bold"><xhtml:a name="BINDING">BINDING:</xhtml:a></xhtml:p><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="186" height="36"><defs><style type="text/css">
    -
    -    @namespace "http://www.w3.org/2000/svg";
    -    .line                 {fill: none; stroke: #332900;}
    -    filled                {fill: #332900; stroke: none;}
    -    text                  {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                          }
    -    text.terminal         {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                            font-weight: bold;
    -                          }
    -    rect, circle, polygon {fill: #332900; stroke: #332900;}
    -    rect.terminal         {fill: #FFCC00; stroke: #332900;}
    -    rect.nonterminal      {fill: #FFEB99; stroke: #332900;}
    -    rect.text             {fill: none; stroke: none;}    
    -    polygon.regexp        {fill: #FFF5CC; stroke: #332900;}
    -  </style></defs><polygon points="9 17 1 13 1 21" class="filled"></polygon><polygon points="17 17 9 13 9 21" class="filled"></polygon><line x1="17" y1="17" x2="19" y2="17" class="line"></line><rect x="31" y="3" width="128" height="32" rx="10"></rect><rect x="29" y="1" width="128" height="32" class="terminal" rx="10"></rect><text class="terminal" x="39" y="21">Any Java Object</text><line x1="19" y1="17" x2="29" y2="17" class="line"></line><line x1="157" y1="17" x2="167" y2="17" class="line"></line><line x1="170" y1="17" x2="167" y2="17" class="line"></line><polygon points="177 17 185 13 185 21" class="filled"></polygon><polygon points="177 17 169 13 169 21" class="filled"></polygon></svg><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">referenced by:<xhtml:ul><xhtml:li><xhtml:a href="#FIELD" title="FIELD">FIELD</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#SORT_FIELD" title="SORT_FIELD">SORT_FIELD</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#SQL" title="SQL">SQL</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#TABLE" title="TABLE">TABLE</xhtml:a></xhtml:li></xhtml:ul></xhtml:p><xhtml:br xmlns:xhtml="http://www.w3.org/1999/xhtml"></xhtml:br><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml" style="font-size: 14px; font-weight:bold"><xhtml:a name="BINDING_MAP">BINDING_MAP:</xhtml:a></xhtml:p><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="214" height="36"><defs><style type="text/css">
    -    @namespace "http://www.w3.org/2000/svg";
    -    .line                 {fill: none; stroke: #332900;}
    -    filled                {fill: #332900; stroke: none;}
    -    text                  {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                          }
    -    text.terminal         {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                            font-weight: bold;
    -                          }
    -    rect, circle, polygon {fill: #332900; stroke: #332900;}
    -    rect.terminal         {fill: #FFCC00; stroke: #332900;}
    -    rect.nonterminal      {fill: #FFEB99; stroke: #332900;}
    -    rect.text             {fill: none; stroke: none;}    
    -    polygon.regexp        {fill: #FFF5CC; stroke: #332900;}
    -  </style></defs><polygon points="9 17 1 13 1 21" class="filled"></polygon><polygon points="17 17 9 13 9 21" class="filled"></polygon><line x1="17" y1="17" x2="19" y2="17" class="line"></line><rect x="31" y="3" width="156" height="32" rx="10"></rect><rect x="29" y="1" width="156" height="32" class="terminal" rx="10"></rect><text class="terminal" x="39" y="21">A map of bind values</text><line x1="19" y1="17" x2="29" y2="17" class="line"></line><line x1="185" y1="17" x2="195" y2="17" class="line"></line><line x1="198" y1="17" x2="195" y2="17" class="line"></line><polygon points="205 17 213 13 213 21" class="filled"></polygon><polygon points="205 17 197 13 197 21" class="filled"></polygon></svg><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">referenced by:<xhtml:ul><xhtml:li><xhtml:a href="#SORT_FIELD" title="SORT_FIELD">SORT_FIELD</xhtml:a></xhtml:li></xhtml:ul></xhtml:p><xhtml:br xmlns:xhtml="http://www.w3.org/1999/xhtml"></xhtml:br><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml" style="font-size: 14px; font-weight:bold"><xhtml:a name="FIELD">FIELD:</xhtml:a></xhtml:p><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="886" height="4248"><defs><style type="text/css">
    -
    -    @namespace "http://www.w3.org/2000/svg";
    -    .line                 {fill: none; stroke: #332900;}
    -    filled                {fill: #332900; stroke: none;}
    -    text                  {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                          }
    -    text.terminal         {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                            font-weight: bold;
    -                          }
    -    rect, circle, polygon {fill: #332900; stroke: #332900;}
    -    rect.terminal         {fill: #FFCC00; stroke: #332900;}
    -    rect.nonterminal      {fill: #FFEB99; stroke: #332900;}
    -    rect.text             {fill: none; stroke: none;}    
    -    polygon.regexp        {fill: #FFF5CC; stroke: #332900;}
    -  </style></defs><polygon points="9 17 1 13 1 21" class="filled"></polygon><polygon points="17 17 9 13 9 21" class="filled"></polygon><line x1="17" y1="17" x2="19" y2="17" class="line"></line><rect x="51" y="3" width="164" height="32" rx="10"></rect><rect x="49" y="1" width="164" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="21">jOOQ generated Field</text><line x1="39" y1="17" x2="49" y2="17" class="line"></line><line x1="213" y1="17" x2="223" y2="17" class="line"></line><line x1="223" y1="17" x2="847" y2="17" class="line"></line><line x1="19" y1="17" x2="39" y2="17" class="line"></line><line x1="847" y1="17" x2="867" y2="17" class="line"></line><path d="M19 17 Q29 17 29 27" class="line"></path><path d="M857 27 Q857 17 867 17" class="line"></path><line x1="29" y1="27" x2="29" y2="51" class="line"></line><line x1="857" y1="51" x2="857" y2="27" class="line"></line><path d="M29 51 Q29 61 39 61" class="line"></path><path d="M847 61 Q857 61 857 51" class="line"></path><rect x="51" y="47" width="100" height="32" rx="10"></rect><rect x="49" y="45" width="100" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="65">CustomField</text><line x1="39" y1="61" x2="49" y2="61" class="line"></line><line x1="149" y1="61" x2="159" y2="61" class="line"></line><line x1="159" y1="61" x2="847" y2="61" class="line"></line><line x1="29" y1="51" x2="29" y2="71" class="line"></line><line x1="857" y1="71" x2="857" y2="51" class="line"></line><line x1="29" y1="71" x2="29" y2="95" class="line"></line><line x1="857" y1="95" x2="857" y2="71" class="line"></line><path d="M29 95 Q29 105 39 105" class="line"></path><path d="M847 105 Q857 105 857 95" class="line"></path><rect x="71" y="91" width="40" height="32" rx="10"></rect><rect x="69" y="89" width="40" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="109">val</text><line x1="59" y1="105" x2="69" y2="105" class="line"></line><line x1="109" y1="105" x2="119" y2="105" class="line"></line><line x1="119" y1="105" x2="135" y2="105" class="line"></line><line x1="39" y1="105" x2="59" y2="105" class="line"></line><line x1="135" y1="105" x2="155" y2="105" class="line"></line><path d="M39 105 Q49 105 49 115" class="line"></path><path d="M145 115 Q145 105 155 105" class="line"></path><line x1="49" y1="115" x2="49" y2="139" class="line"></line><line x1="145" y1="139" x2="145" y2="115" class="line"></line><path d="M49 139 Q49 149 59 149" class="line"></path><path d="M135 149 Q145 149 145 139" class="line"></path><rect x="71" y="135" width="56" height="32" rx="10"></rect><rect x="69" y="133" width="56" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="153">value</text><line x1="59" y1="149" x2="69" y2="149" class="line"></line><line x1="125" y1="149" x2="135" y2="149" class="line"></line><a xlink:href="#BINDING" xlink:title="BINDING"><rect x="167" y="91" width="74" height="32"></rect><rect x="165" y="89" width="74" height="32" class="nonterminal"></rect><text class="nonterminal" x="175" y="109">BINDING</text></a><line x1="155" y1="105" x2="165" y2="105" class="line"></line><line x1="239" y1="105" x2="249" y2="105" class="line"></line><line x1="249" y1="105" x2="847" y2="105" class="line"></line><line x1="29" y1="95" x2="29" y2="115" class="line"></line><line x1="857" y1="115" x2="857" y2="95" class="line"></line><line x1="29" y1="115" x2="29" y2="183" class="line"></line><line x1="857" y1="183" x2="857" y2="115" class="line"></line><path d="M29 183 Q29 193 39 193" class="line"></path><path d="M847 193 Q857 193 857 183" class="line"></path><rect x="51" y="179" width="62" height="32" rx="10"></rect><rect x="49" y="177" width="62" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="197">param</text><line x1="39" y1="193" x2="49" y2="193" class="line"></line><line x1="111" y1="193" x2="121" y2="193" class="line"></line><a xlink:href="#NAME" xlink:title="NAME"><rect x="133" y="179" width="54" height="32"></rect><rect x="131" y="177" width="54" height="32" class="nonterminal"></rect><text class="nonterminal" x="141" y="197">NAME</text></a><line x1="121" y1="193" x2="131" y2="193" class="line"></line><line x1="185" y1="193" x2="195" y2="193" class="line"></line><a xlink:href="#BINDING" xlink:title="BINDING"><rect x="227" y="179" width="74" height="32"></rect><rect x="225" y="177" width="74" height="32" class="nonterminal"></rect><text class="nonterminal" x="235" y="197">BINDING</text></a><line x1="215" y1="193" x2="225" y2="193" class="line"></line><line x1="299" y1="193" x2="309" y2="193" class="line"></line><line x1="195" y1="193" x2="215" y2="193" class="line"></line><line x1="309" y1="193" x2="329" y2="193" class="line"></line><path d="M195 193 Q205 193 205 203" class="line"></path><path d="M319 203 Q319 193 329 193" class="line"></path><line x1="205" y1="203" x2="205" y2="217" class="line"></line><line x1="319" y1="217" x2="319" y2="203" class="line"></line><path d="M205 217 Q205 227 215 227" class="line"></path><path d="M309 227 Q319 227 319 217" class="line"></path><line x1="215" y1="227" x2="225" y2="227" class="line"></line><line x1="225" y1="227" x2="309" y2="227" class="line"></line><line x1="329" y1="193" x2="847" y2="193" class="line"></line><line x1="29" y1="183" x2="29" y2="203" class="line"></line><line x1="857" y1="203" x2="857" y2="183" class="line"></line><line x1="29" y1="203" x2="29" y2="249" class="line"></line><line x1="857" y1="249" x2="857" y2="203" class="line"></line><path d="M29 249 Q29 259 39 259" class="line"></path><path d="M847 259 Q857 259 857 249" class="line"></path><rect x="51" y="245" width="58" height="32" rx="10"></rect><rect x="49" y="243" width="58" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="263">literal</text><line x1="39" y1="259" x2="49" y2="259" class="line"></line><line x1="107" y1="259" x2="117" y2="259" class="line"></line><a xlink:href="#BINDING" xlink:title="BINDING"><rect x="129" y="245" width="74" height="32"></rect><rect x="127" y="243" width="74" height="32" class="nonterminal"></rect><text class="nonterminal" x="137" y="263">BINDING</text></a><line x1="117" y1="259" x2="127" y2="259" class="line"></line><line x1="201" y1="259" x2="211" y2="259" class="line"></line><line x1="211" y1="259" x2="847" y2="259" class="line"></line><line x1="29" y1="249" x2="29" y2="269" class="line"></line><line x1="857" y1="269" x2="857" y2="249" class="line"></line><line x1="29" y1="269" x2="29" y2="293" class="line"></line><line x1="857" y1="293" x2="857" y2="269" class="line"></line><path d="M29 293 Q29 303 39 303" class="line"></path><path d="M847 303 Q857 303 857 293" class="line"></path><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="51" y="289" width="56" height="32"></rect><rect x="49" y="287" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="59" y="307">FIELD</text></a><line x1="39" y1="303" x2="49" y2="303" class="line"></line><line x1="105" y1="303" x2="115" y2="303" class="line"></line><rect x="127" y="289" width="34" height="32" rx="10"></rect><rect x="125" y="287" width="34" height="32" class="terminal" rx="10"></rect><text class="terminal" x="135" y="307">as</text><line x1="115" y1="303" x2="125" y2="303" class="line"></line><line x1="159" y1="303" x2="169" y2="303" class="line"></line><a xlink:href="#NAME" xlink:title="NAME"><rect x="181" y="289" width="54" height="32"></rect><rect x="179" y="287" width="54" height="32" class="nonterminal"></rect><text class="nonterminal" x="189" y="307">NAME</text></a><line x1="169" y1="303" x2="179" y2="303" class="line"></line><line x1="233" y1="303" x2="243" y2="303" class="line"></line><line x1="243" y1="303" x2="847" y2="303" class="line"></line><line x1="29" y1="293" x2="29" y2="313" class="line"></line><line x1="857" y1="313" x2="857" y2="293" class="line"></line><line x1="29" y1="313" x2="29" y2="337" class="line"></line><line x1="857" y1="337" x2="857" y2="313" class="line"></line><path d="M29 337 Q29 347 39 347" class="line"></path><path d="M847 347 Q857 347 857 337" class="line"></path><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="51" y="333" width="56" height="32"></rect><rect x="49" y="331" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="59" y="351">FIELD</text></a><line x1="39" y1="347" x2="49" y2="347" class="line"></line><line x1="105" y1="347" x2="115" y2="347" class="line"></line><rect x="127" y="333" width="46" height="32" rx="10"></rect><rect x="125" y="331" width="46" height="32" class="terminal" rx="10"></rect><text class="terminal" x="135" y="351">cast</text><line x1="115" y1="347" x2="125" y2="347" class="line"></line><line x1="171" y1="347" x2="181" y2="347" class="line"></line><a xlink:href="#TYPE" xlink:title="TYPE"><rect x="193" y="333" width="50" height="32"></rect><rect x="191" y="331" width="50" height="32" class="nonterminal"></rect><text class="nonterminal" x="201" y="351">TYPE</text></a><line x1="181" y1="347" x2="191" y2="347" class="line"></line><line x1="241" y1="347" x2="251" y2="347" class="line"></line><line x1="251" y1="347" x2="847" y2="347" class="line"></line><line x1="29" y1="337" x2="29" y2="357" class="line"></line><line x1="857" y1="357" x2="857" y2="337" class="line"></line><line x1="29" y1="357" x2="29" y2="381" class="line"></line><line x1="857" y1="381" x2="857" y2="357" class="line"></line><path d="M29 381 Q29 391 39 391" class="line"></path><path d="M847 391 Q857 391 857 381" class="line"></path><rect x="51" y="377" width="48" height="32" rx="10"></rect><rect x="49" y="375" width="48" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="395">zero</text><line x1="39" y1="391" x2="49" y2="391" class="line"></line><line x1="97" y1="391" x2="107" y2="391" class="line"></line><line x1="107" y1="391" x2="847" y2="391" class="line"></line><line x1="29" y1="381" x2="29" y2="401" class="line"></line><line x1="857" y1="401" x2="857" y2="381" class="line"></line><line x1="29" y1="401" x2="29" y2="425" class="line"></line><line x1="857" y1="425" x2="857" y2="401" class="line"></line><path d="M29 425 Q29 435 39 435" class="line"></path><path d="M847 435 Q857 435 857 425" class="line"></path><rect x="51" y="421" width="44" height="32" rx="10"></rect><rect x="49" y="419" width="44" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="439">one</text><line x1="39" y1="435" x2="49" y2="435" class="line"></line><line x1="93" y1="435" x2="103" y2="435" class="line"></line><line x1="103" y1="435" x2="847" y2="435" class="line"></line><line x1="29" y1="425" x2="29" y2="445" class="line"></line><line x1="857" y1="445" x2="857" y2="425" class="line"></line><line x1="29" y1="445" x2="29" y2="469" class="line"></line><line x1="857" y1="469" x2="857" y2="445" class="line"></line><path d="M29 469 Q29 479 39 479" class="line"></path><path d="M847 479 Q857 479 857 469" class="line"></path><rect x="51" y="465" width="44" height="32" rx="10"></rect><rect x="49" y="463" width="44" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="483">two</text><line x1="39" y1="479" x2="49" y2="479" class="line"></line><line x1="93" y1="479" x2="103" y2="479" class="line"></line><line x1="103" y1="479" x2="847" y2="479" class="line"></line><line x1="29" y1="469" x2="29" y2="489" class="line"></line><line x1="857" y1="489" x2="857" y2="469" class="line"></line><line x1="29" y1="489" x2="29" y2="513" class="line"></line><line x1="857" y1="513" x2="857" y2="489" class="line"></line><path d="M29 513 Q29 523 39 523" class="line"></path><path d="M847 523 Q857 523 857 513" class="line"></path><rect x="51" y="509" width="32" height="32" rx="10"></rect><rect x="49" y="507" width="32" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="527">pi</text><line x1="39" y1="523" x2="49" y2="523" class="line"></line><line x1="81" y1="523" x2="91" y2="523" class="line"></line><line x1="91" y1="523" x2="847" y2="523" class="line"></line><line x1="29" y1="513" x2="29" y2="533" class="line"></line><line x1="857" y1="533" x2="857" y2="513" class="line"></line><line x1="29" y1="533" x2="29" y2="557" class="line"></line><line x1="857" y1="557" x2="857" y2="533" class="line"></line><path d="M29 557 Q29 567 39 567" class="line"></path><path d="M847 567 Q857 567 857 557" class="line"></path><rect x="51" y="553" width="28" height="32" rx="10"></rect><rect x="49" y="551" width="28" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="571">e</text><line x1="39" y1="567" x2="49" y2="567" class="line"></line><line x1="77" y1="567" x2="87" y2="567" class="line"></line><line x1="87" y1="567" x2="847" y2="567" class="line"></line><line x1="29" y1="557" x2="29" y2="577" class="line"></line><line x1="857" y1="577" x2="857" y2="557" class="line"></line><line x1="29" y1="577" x2="29" y2="601" class="line"></line><line x1="857" y1="601" x2="857" y2="577" class="line"></line><path d="M29 601 Q29 611 39 611" class="line"></path><path d="M847 611 Q857 611 857 601" class="line"></path><rect x="51" y="597" width="98" height="32" rx="10"></rect><rect x="49" y="595" width="98" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="615">currentDate</text><line x1="39" y1="611" x2="49" y2="611" class="line"></line><line x1="147" y1="611" x2="157" y2="611" class="line"></line><line x1="157" y1="611" x2="847" y2="611" class="line"></line><line x1="29" y1="601" x2="29" y2="621" class="line"></line><line x1="857" y1="621" x2="857" y2="601" class="line"></line><line x1="29" y1="621" x2="29" y2="645" class="line"></line><line x1="857" y1="645" x2="857" y2="621" class="line"></line><path d="M29 645 Q29 655 39 655" class="line"></path><path d="M847 655 Q857 655 857 645" class="line"></path><rect x="51" y="641" width="100" height="32" rx="10"></rect><rect x="49" y="639" width="100" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="659">currentTime</text><line x1="39" y1="655" x2="49" y2="655" class="line"></line><line x1="149" y1="655" x2="159" y2="655" class="line"></line><line x1="159" y1="655" x2="847" y2="655" class="line"></line><line x1="29" y1="645" x2="29" y2="665" class="line"></line><line x1="857" y1="665" x2="857" y2="645" class="line"></line><line x1="29" y1="665" x2="29" y2="689" class="line"></line><line x1="857" y1="689" x2="857" y2="665" class="line"></line><path d="M29 689 Q29 699 39 699" class="line"></path><path d="M847 699 Q857 699 857 689" class="line"></path><rect x="51" y="685" width="140" height="32" rx="10"></rect><rect x="49" y="683" width="140" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="703">currentTimestamp</text><line x1="39" y1="699" x2="49" y2="699" class="line"></line><line x1="189" y1="699" x2="199" y2="699" class="line"></line><line x1="199" y1="699" x2="847" y2="699" class="line"></line><line x1="29" y1="689" x2="29" y2="709" class="line"></line><line x1="857" y1="709" x2="857" y2="689" class="line"></line><line x1="29" y1="709" x2="29" y2="733" class="line"></line><line x1="857" y1="733" x2="857" y2="709" class="line"></line><path d="M29 733 Q29 743 39 743" class="line"></path><path d="M847 743 Q857 743 857 733" class="line"></path><rect x="51" y="729" width="98" height="32" rx="10"></rect><rect x="49" y="727" width="98" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="747">currentUser</text><line x1="39" y1="743" x2="49" y2="743" class="line"></line><line x1="147" y1="743" x2="157" y2="743" class="line"></line><line x1="157" y1="743" x2="847" y2="743" class="line"></line><line x1="29" y1="733" x2="29" y2="753" class="line"></line><line x1="857" y1="753" x2="857" y2="733" class="line"></line><line x1="29" y1="753" x2="29" y2="777" class="line"></line><line x1="857" y1="777" x2="857" y2="753" class="line"></line><path d="M29 777 Q29 787 39 787" class="line"></path><path d="M847 787 Q857 787 857 777" class="line"></path><rect x="51" y="773" width="50" height="32" rx="10"></rect><rect x="49" y="771" width="50" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="791">rand</text><line x1="39" y1="787" x2="49" y2="787" class="line"></line><line x1="99" y1="787" x2="109" y2="787" class="line"></line><line x1="109" y1="787" x2="847" y2="787" class="line"></line><line x1="29" y1="777" x2="29" y2="797" class="line"></line><line x1="857" y1="797" x2="857" y2="777" class="line"></line><line x1="29" y1="797" x2="29" y2="821" class="line"></line><line x1="857" y1="821" x2="857" y2="797" class="line"></line><path d="M29 821 Q29 831 39 831" class="line"></path><path d="M847 831 Q857 831 857 821" class="line"></path><rect x="51" y="817" width="48" height="32" rx="10"></rect><rect x="49" y="815" width="48" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="835">field</text><line x1="39" y1="831" x2="49" y2="831" class="line"></line><line x1="97" y1="831" x2="107" y2="831" class="line"></line><a xlink:href="#SQL" xlink:title="SQL"><rect x="119" y="817" width="44" height="32"></rect><rect x="117" y="815" width="44" height="32" class="nonterminal"></rect><text class="nonterminal" x="127" y="835">SQL</text></a><line x1="107" y1="831" x2="117" y2="831" class="line"></line><line x1="161" y1="831" x2="171" y2="831" class="line"></line><line x1="171" y1="831" x2="847" y2="831" class="line"></line><line x1="29" y1="821" x2="29" y2="841" class="line"></line><line x1="857" y1="841" x2="857" y2="821" class="line"></line><line x1="29" y1="841" x2="29" y2="887" class="line"></line><line x1="857" y1="887" x2="857" y2="841" class="line"></line><path d="M29 887 Q29 897 39 897" class="line"></path><path d="M847 897 Q857 897 857 887" class="line"></path><rect x="51" y="883" width="72" height="32" rx="10"></rect><rect x="49" y="881" width="72" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="901">function</text><line x1="39" y1="897" x2="49" y2="897" class="line"></line><line x1="121" y1="897" x2="131" y2="897" class="line"></line><a xlink:href="#NAME" xlink:title="NAME"><rect x="143" y="883" width="54" height="32"></rect><rect x="141" y="881" width="54" height="32" class="nonterminal"></rect><text class="nonterminal" x="151" y="901">NAME</text></a><line x1="131" y1="897" x2="141" y2="897" class="line"></line><line x1="195" y1="897" x2="205" y2="897" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="257" y="883" width="56" height="32"></rect><rect x="255" y="881" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="265" y="901">FIELD</text></a><line x1="245" y1="897" x2="255" y2="897" class="line"></line><line x1="311" y1="897" x2="321" y2="897" class="line"></line><path d="M225 897 L245 897 M244 897 Q235 897 235 887 L235 875 Q235 865 245 865" class="line"></path><path d="M321 897 L341 897 M321 897 Q331 897 331 887 L331 875 Q331 865 321 865" class="line"></path><line x1="245" y1="865" x2="255" y2="865" class="line"></line><line x1="255" y1="865" x2="321" y2="865" class="line"></line><line x1="205" y1="897" x2="225" y2="897" class="line"></line><line x1="341" y1="897" x2="361" y2="897" class="line"></line><path d="M205 897 Q215 897 215 907" class="line"></path><path d="M351 907 Q351 897 361 897" class="line"></path><line x1="215" y1="907" x2="215" y2="921" class="line"></line><line x1="351" y1="921" x2="351" y2="907" class="line"></line><path d="M215 921 Q215 931 225 931" class="line"></path><path d="M341 931 Q351 931 351 921" class="line"></path><line x1="225" y1="931" x2="235" y2="931" class="line"></line><line x1="235" y1="931" x2="341" y2="931" class="line"></line><line x1="361" y1="897" x2="847" y2="897" class="line"></line><line x1="29" y1="887" x2="29" y2="907" class="line"></line><line x1="857" y1="907" x2="857" y2="887" class="line"></line><line x1="29" y1="907" x2="29" y2="969" class="line"></line><line x1="857" y1="969" x2="857" y2="907" class="line"></line><path d="M29 969 Q29 979 39 979" class="line"></path><path d="M847 979 Q857 979 857 969" class="line"></path><rect x="51" y="965" width="66" height="32" rx="10"></rect><rect x="49" y="963" width="66" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="983">decode</text><line x1="39" y1="979" x2="49" y2="979" class="line"></line><line x1="115" y1="979" x2="125" y2="979" class="line"></line><rect x="177" y="965" width="56" height="32" rx="10"></rect><rect x="175" y="963" width="56" height="32" class="terminal" rx="10"></rect><text class="terminal" x="185" y="983">value</text><line x1="165" y1="979" x2="175" y2="979" class="line"></line><line x1="231" y1="979" x2="241" y2="979" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="253" y="965" width="56" height="32"></rect><rect x="251" y="963" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="261" y="983">FIELD</text></a><line x1="241" y1="979" x2="251" y2="979" class="line"></line><line x1="307" y1="979" x2="317" y2="979" class="line"></line><rect x="349" y="965" width="56" height="32" rx="10"></rect><rect x="347" y="963" width="56" height="32" class="terminal" rx="10"></rect><text class="terminal" x="357" y="983">when</text><line x1="337" y1="979" x2="347" y2="979" class="line"></line><line x1="403" y1="979" x2="413" y2="979" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="425" y="965" width="56" height="32"></rect><rect x="423" y="963" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="433" y="983">FIELD</text></a><line x1="413" y1="979" x2="423" y2="979" class="line"></line><line x1="479" y1="979" x2="489" y2="979" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="501" y="965" width="56" height="32"></rect><rect x="499" y="963" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="509" y="983">FIELD</text></a><line x1="489" y1="979" x2="499" y2="979" class="line"></line><line x1="555" y1="979" x2="565" y2="979" class="line"></line><path d="M317 979 L337 979 M336 979 Q327 979 327 969 L327 957 Q327 947 337 947" class="line"></path><path d="M565 979 L585 979 M565 979 Q575 979 575 969 L575 957 Q575 947 565 947" class="line"></path><line x1="337" y1="947" x2="347" y2="947" class="line"></line><line x1="347" y1="947" x2="565" y2="947" class="line"></line><line x1="145" y1="979" x2="165" y2="979" class="line"></line><line x1="585" y1="979" x2="605" y2="979" class="line"></line><path d="M145 979 Q155 979 155 989" class="line"></path><path d="M595 989 Q595 979 605 979" class="line"></path><line x1="155" y1="989" x2="155" y2="1035" class="line"></line><line x1="595" y1="1035" x2="595" y2="989" class="line"></line><path d="M155 1035 Q155 1045 165 1045" class="line"></path><path d="M585 1045 Q595 1045 595 1035" class="line"></path><rect x="197" y="1031" width="56" height="32" rx="10"></rect><rect x="195" y="1029" width="56" height="32" class="terminal" rx="10"></rect><text class="terminal" x="205" y="1049">when</text><line x1="185" y1="1045" x2="195" y2="1045" class="line"></line><line x1="251" y1="1045" x2="261" y2="1045" class="line"></line><a xlink:href="#CONDITION" xlink:title="CONDITION"><rect x="273" y="1031" width="92" height="32"></rect><rect x="271" y="1029" width="92" height="32" class="nonterminal"></rect><text class="nonterminal" x="281" y="1049">CONDITION</text></a><line x1="261" y1="1045" x2="271" y2="1045" class="line"></line><line x1="363" y1="1045" x2="373" y2="1045" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="385" y="1031" width="56" height="32"></rect><rect x="383" y="1029" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="393" y="1049">FIELD</text></a><line x1="373" y1="1045" x2="383" y2="1045" class="line"></line><line x1="439" y1="1045" x2="449" y2="1045" class="line"></line><path d="M165 1045 L185 1045 M184 1045 Q175 1045 175 1035 L175 1023 Q175 1013 185 1013" class="line"></path><path d="M449 1045 L469 1045 M449 1045 Q459 1045 459 1035 L459 1023 Q459 1013 449 1013" class="line"></path><line x1="185" y1="1013" x2="195" y2="1013" class="line"></line><line x1="195" y1="1013" x2="449" y2="1013" class="line"></line><line x1="469" y1="1045" x2="585" y2="1045" class="line"></line><rect x="637" y="965" width="86" height="32" rx="10"></rect><rect x="635" y="963" width="86" height="32" class="terminal" rx="10"></rect><text class="terminal" x="645" y="983">otherwise</text><line x1="625" y1="979" x2="635" y2="979" class="line"></line><line x1="721" y1="979" x2="731" y2="979" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="743" y="965" width="56" height="32"></rect><rect x="741" y="963" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="751" y="983">FIELD</text></a><line x1="731" y1="979" x2="741" y2="979" class="line"></line><line x1="797" y1="979" x2="807" y2="979" class="line"></line><line x1="605" y1="979" x2="625" y2="979" class="line"></line><line x1="807" y1="979" x2="827" y2="979" class="line"></line><path d="M605 979 Q615 979 615 989" class="line"></path><path d="M817 989 Q817 979 827 979" class="line"></path><line x1="615" y1="989" x2="615" y2="1003" class="line"></line><line x1="817" y1="1003" x2="817" y2="989" class="line"></line><path d="M615 1003 Q615 1013 625 1013" class="line"></path><path d="M807 1013 Q817 1013 817 1003" class="line"></path><line x1="625" y1="1013" x2="635" y2="1013" class="line"></line><line x1="635" y1="1013" x2="807" y2="1013" class="line"></line><line x1="125" y1="979" x2="145" y2="979" class="line"></line><line x1="827" y1="979" x2="847" y2="979" class="line"></line><path d="M125 979 Q135 979 135 989" class="line"></path><path d="M837 989 Q837 979 847 979" class="line"></path><line x1="135" y1="989" x2="135" y2="1101" class="line"></line><line x1="837" y1="1101" x2="837" y2="989" class="line"></line><path d="M135 1101 Q135 1111 145 1111" class="line"></path><path d="M827 1111 Q837 1111 837 1101" class="line"></path><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="177" y="1097" width="56" height="32"></rect><rect x="175" y="1095" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="185" y="1115">FIELD</text></a><line x1="165" y1="1111" x2="175" y2="1111" class="line"></line><line x1="231" y1="1111" x2="241" y2="1111" class="line"></line><path d="M145 1111 L165 1111 M164 1111 Q155 1111 155 1101 L155 1089 Q155 1079 165 1079" class="line"></path><path d="M241 1111 L261 1111 M241 1111 Q251 1111 251 1101 L251 1089 Q251 1079 241 1079" class="line"></path><line x1="165" y1="1079" x2="175" y2="1079" class="line"></line><line x1="175" y1="1079" x2="241" y2="1079" class="line"></line><line x1="261" y1="1111" x2="827" y2="1111" class="line"></line><line x1="29" y1="969" x2="29" y2="989" class="line"></line><line x1="857" y1="989" x2="857" y2="969" class="line"></line><line x1="29" y1="989" x2="29" y2="1145" class="line"></line><line x1="857" y1="1145" x2="857" y2="989" class="line"></line><path d="M29 1145 Q29 1155 39 1155" class="line"></path><path d="M847 1155 Q857 1155 857 1145" class="line"></path><rect x="51" y="1141" width="78" height="32" rx="10"></rect><rect x="49" y="1139" width="78" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="1159">grouping</text><line x1="39" y1="1155" x2="49" y2="1155" class="line"></line><line x1="127" y1="1155" x2="137" y2="1155" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="149" y="1141" width="56" height="32"></rect><rect x="147" y="1139" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="157" y="1159">FIELD</text></a><line x1="137" y1="1155" x2="147" y2="1155" class="line"></line><line x1="203" y1="1155" x2="213" y2="1155" class="line"></line><line x1="213" y1="1155" x2="847" y2="1155" class="line"></line><line x1="29" y1="1145" x2="29" y2="1165" class="line"></line><line x1="857" y1="1165" x2="857" y2="1145" class="line"></line><line x1="29" y1="1165" x2="29" y2="1211" class="line"></line><line x1="857" y1="1211" x2="857" y2="1165" class="line"></line><path d="M29 1211 Q29 1221 39 1221" class="line"></path><path d="M847 1221 Q857 1221 857 1211" class="line"></path><rect x="51" y="1207" width="92" height="32" rx="10"></rect><rect x="49" y="1205" width="92" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="1225">groupingId</text><line x1="39" y1="1221" x2="49" y2="1221" class="line"></line><line x1="141" y1="1221" x2="151" y2="1221" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="183" y="1207" width="56" height="32"></rect><rect x="181" y="1205" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="191" y="1225">FIELD</text></a><line x1="171" y1="1221" x2="181" y2="1221" class="line"></line><line x1="237" y1="1221" x2="247" y2="1221" class="line"></line><path d="M151 1221 L171 1221 M170 1221 Q161 1221 161 1211 L161 1199 Q161 1189 171 1189" class="line"></path><path d="M247 1221 L267 1221 M247 1221 Q257 1221 257 1211 L257 1199 Q257 1189 247 1189" class="line"></path><line x1="171" y1="1189" x2="181" y2="1189" class="line"></line><line x1="181" y1="1189" x2="247" y2="1189" class="line"></line><line x1="267" y1="1221" x2="847" y2="1221" class="line"></line><line x1="29" y1="1211" x2="29" y2="1231" class="line"></line><line x1="857" y1="1231" x2="857" y2="1211" class="line"></line><line x1="29" y1="1231" x2="29" y2="1255" class="line"></line><line x1="857" y1="1255" x2="857" y2="1231" class="line"></line><path d="M29 1255 Q29 1265 39 1265" class="line"></path><path d="M847 1265 Q857 1265 857 1255" class="line"></path><rect x="51" y="1251" width="46" height="32" rx="10"></rect><rect x="49" y="1249" width="46" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="1269">cast</text><line x1="39" y1="1265" x2="49" y2="1265" class="line"></line><line x1="95" y1="1265" x2="105" y2="1265" class="line"></line><a xlink:href="#BINDING" xlink:title="BINDING"><rect x="117" y="1251" width="74" height="32"></rect><rect x="115" y="1249" width="74" height="32" class="nonterminal"></rect><text class="nonterminal" x="125" y="1269">BINDING</text></a><line x1="105" y1="1265" x2="115" y2="1265" class="line"></line><line x1="189" y1="1265" x2="199" y2="1265" class="line"></line><a xlink:href="#TYPE" xlink:title="TYPE"><rect x="211" y="1251" width="50" height="32"></rect><rect x="209" y="1249" width="50" height="32" class="nonterminal"></rect><text class="nonterminal" x="219" y="1269">TYPE</text></a><line x1="199" y1="1265" x2="209" y2="1265" class="line"></line><line x1="259" y1="1265" x2="269" y2="1265" class="line"></line><line x1="269" y1="1265" x2="847" y2="1265" class="line"></line><line x1="29" y1="1255" x2="29" y2="1275" class="line"></line><line x1="857" y1="1275" x2="857" y2="1255" class="line"></line><line x1="29" y1="1275" x2="29" y2="1299" class="line"></line><line x1="857" y1="1299" x2="857" y2="1275" class="line"></line><path d="M29 1299 Q29 1309 39 1309" class="line"></path><path d="M847 1309 Q857 1309 857 1299" class="line"></path><rect x="51" y="1295" width="72" height="32" rx="10"></rect><rect x="49" y="1293" width="72" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="1313">castNull</text><line x1="39" y1="1309" x2="49" y2="1309" class="line"></line><line x1="121" y1="1309" x2="131" y2="1309" class="line"></line><a xlink:href="#TYPE" xlink:title="TYPE"><rect x="143" y="1295" width="50" height="32"></rect><rect x="141" y="1293" width="50" height="32" class="nonterminal"></rect><text class="nonterminal" x="151" y="1313">TYPE</text></a><line x1="131" y1="1309" x2="141" y2="1309" class="line"></line><line x1="191" y1="1309" x2="201" y2="1309" class="line"></line><line x1="201" y1="1309" x2="847" y2="1309" class="line"></line><line x1="29" y1="1299" x2="29" y2="1319" class="line"></line><line x1="857" y1="1319" x2="857" y2="1299" class="line"></line><line x1="29" y1="1319" x2="29" y2="1365" class="line"></line><line x1="857" y1="1365" x2="857" y2="1319" class="line"></line><path d="M29 1365 Q29 1375 39 1375" class="line"></path><path d="M847 1375 Q857 1375 857 1365" class="line"></path><rect x="71" y="1361" width="76" height="32" rx="10"></rect><rect x="69" y="1359" width="76" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="1379">coalesce</text><line x1="59" y1="1375" x2="69" y2="1375" class="line"></line><line x1="145" y1="1375" x2="155" y2="1375" class="line"></line><line x1="39" y1="1375" x2="59" y2="1375" class="line"></line><line x1="155" y1="1375" x2="175" y2="1375" class="line"></line><path d="M39 1375 Q49 1375 49 1385" class="line"></path><path d="M165 1385 Q165 1375 175 1375" class="line"></path><line x1="49" y1="1385" x2="49" y2="1409" class="line"></line><line x1="165" y1="1409" x2="165" y2="1385" class="line"></line><path d="M49 1409 Q49 1419 59 1419" class="line"></path><path d="M155 1419 Q165 1419 165 1409" class="line"></path><rect x="71" y="1405" width="62" height="32" rx="10"></rect><rect x="69" y="1403" width="62" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="1423">concat</text><line x1="59" y1="1419" x2="69" y2="1419" class="line"></line><line x1="131" y1="1419" x2="141" y2="1419" class="line"></line><line x1="141" y1="1419" x2="155" y2="1419" class="line"></line><line x1="49" y1="1409" x2="49" y2="1429" class="line"></line><line x1="165" y1="1429" x2="165" y2="1409" class="line"></line><line x1="49" y1="1429" x2="49" y2="1453" class="line"></line><line x1="165" y1="1453" x2="165" y2="1429" class="line"></line><path d="M49 1453 Q49 1463 59 1463" class="line"></path><path d="M155 1463 Q165 1463 165 1453" class="line"></path><rect x="71" y="1449" width="74" height="32" rx="10"></rect><rect x="69" y="1447" width="74" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="1467">greatest</text><line x1="59" y1="1463" x2="69" y2="1463" class="line"></line><line x1="143" y1="1463" x2="153" y2="1463" class="line"></line><line x1="153" y1="1463" x2="155" y2="1463" class="line"></line><line x1="49" y1="1453" x2="49" y2="1473" class="line"></line><line x1="165" y1="1473" x2="165" y2="1453" class="line"></line><line x1="49" y1="1473" x2="49" y2="1497" class="line"></line><line x1="165" y1="1497" x2="165" y2="1473" class="line"></line><path d="M49 1497 Q49 1507 59 1507" class="line"></path><path d="M155 1507 Q165 1507 165 1497" class="line"></path><rect x="71" y="1493" width="52" height="32" rx="10"></rect><rect x="69" y="1491" width="52" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="1511">least</text><line x1="59" y1="1507" x2="69" y2="1507" class="line"></line><line x1="121" y1="1507" x2="131" y2="1507" class="line"></line><line x1="131" y1="1507" x2="155" y2="1507" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="207" y="1361" width="56" height="32"></rect><rect x="205" y="1359" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="215" y="1379">FIELD</text></a><line x1="195" y1="1375" x2="205" y2="1375" class="line"></line><line x1="261" y1="1375" x2="271" y2="1375" class="line"></line><path d="M175 1375 L195 1375 M194 1375 Q185 1375 185 1365 L185 1353 Q185 1343 195 1343" class="line"></path><path d="M271 1375 L291 1375 M271 1375 Q281 1375 281 1365 L281 1353 Q281 1343 271 1343" class="line"></path><line x1="195" y1="1343" x2="205" y2="1343" class="line"></line><line x1="205" y1="1343" x2="271" y2="1343" class="line"></line><line x1="291" y1="1375" x2="847" y2="1375" class="line"></line><line x1="29" y1="1365" x2="29" y2="1385" class="line"></line><line x1="857" y1="1385" x2="857" y2="1365" class="line"></line><line x1="29" y1="1385" x2="29" y2="1541" class="line"></line><line x1="857" y1="1541" x2="857" y2="1385" class="line"></line><path d="M29 1541 Q29 1551 39 1551" class="line"></path><path d="M847 1551 Q857 1551 857 1541" class="line"></path><rect x="71" y="1537" width="40" height="32" rx="10"></rect><rect x="69" y="1535" width="40" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="1555">nvl</text><line x1="59" y1="1551" x2="69" y2="1551" class="line"></line><line x1="109" y1="1551" x2="119" y2="1551" class="line"></line><line x1="119" y1="1551" x2="131" y2="1551" class="line"></line><line x1="39" y1="1551" x2="59" y2="1551" class="line"></line><line x1="131" y1="1551" x2="151" y2="1551" class="line"></line><path d="M39 1551 Q49 1551 49 1561" class="line"></path><path d="M141 1561 Q141 1551 151 1551" class="line"></path><line x1="49" y1="1561" x2="49" y2="1585" class="line"></line><line x1="141" y1="1585" x2="141" y2="1561" class="line"></line><path d="M49 1585 Q49 1595 59 1595" class="line"></path><path d="M131 1595 Q141 1595 141 1585" class="line"></path><rect x="71" y="1581" width="52" height="32" rx="10"></rect><rect x="69" y="1579" width="52" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="1599">nullif</text><line x1="59" y1="1595" x2="69" y2="1595" class="line"></line><line x1="121" y1="1595" x2="131" y2="1595" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="163" y="1537" width="56" height="32"></rect><rect x="161" y="1535" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="171" y="1555">FIELD</text></a><line x1="151" y1="1551" x2="161" y2="1551" class="line"></line><line x1="217" y1="1551" x2="227" y2="1551" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="239" y="1537" width="56" height="32"></rect><rect x="237" y="1535" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="247" y="1555">FIELD</text></a><line x1="227" y1="1551" x2="237" y2="1551" class="line"></line><line x1="293" y1="1551" x2="303" y2="1551" class="line"></line><line x1="303" y1="1551" x2="847" y2="1551" class="line"></line><line x1="29" y1="1541" x2="29" y2="1561" class="line"></line><line x1="857" y1="1561" x2="857" y2="1541" class="line"></line><line x1="29" y1="1561" x2="29" y2="1629" class="line"></line><line x1="857" y1="1629" x2="857" y2="1561" class="line"></line><path d="M29 1629 Q29 1639 39 1639" class="line"></path><path d="M847 1639 Q857 1639 857 1629" class="line"></path><rect x="51" y="1625" width="48" height="32" rx="10"></rect><rect x="49" y="1623" width="48" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="1643">nvl2</text><line x1="39" y1="1639" x2="49" y2="1639" class="line"></line><line x1="97" y1="1639" x2="107" y2="1639" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="119" y="1625" width="56" height="32"></rect><rect x="117" y="1623" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="127" y="1643">FIELD</text></a><line x1="107" y1="1639" x2="117" y2="1639" class="line"></line><line x1="173" y1="1639" x2="183" y2="1639" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="195" y="1625" width="56" height="32"></rect><rect x="193" y="1623" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="203" y="1643">FIELD</text></a><line x1="183" y1="1639" x2="193" y2="1639" class="line"></line><line x1="249" y1="1639" x2="259" y2="1639" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="271" y="1625" width="56" height="32"></rect><rect x="269" y="1623" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="279" y="1643">FIELD</text></a><line x1="259" y1="1639" x2="269" y2="1639" class="line"></line><line x1="325" y1="1639" x2="335" y2="1639" class="line"></line><line x1="335" y1="1639" x2="847" y2="1639" class="line"></line><line x1="29" y1="1629" x2="29" y2="1649" class="line"></line><line x1="857" y1="1649" x2="857" y2="1629" class="line"></line><line x1="29" y1="1649" x2="29" y2="1673" class="line"></line><line x1="857" y1="1673" x2="857" y2="1649" class="line"></line><path d="M29 1673 Q29 1683 39 1683" class="line"></path><path d="M847 1683 Q857 1683 857 1673" class="line"></path><rect x="71" y="1669" width="58" height="32" rx="10"></rect><rect x="69" y="1667" width="58" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="1687">upper</text><line x1="59" y1="1683" x2="69" y2="1683" class="line"></line><line x1="127" y1="1683" x2="137" y2="1683" class="line"></line><line x1="137" y1="1683" x2="177" y2="1683" class="line"></line><line x1="39" y1="1683" x2="59" y2="1683" class="line"></line><line x1="177" y1="1683" x2="197" y2="1683" class="line"></line><path d="M39 1683 Q49 1683 49 1693" class="line"></path><path d="M187 1693 Q187 1683 197 1683" class="line"></path><line x1="49" y1="1693" x2="49" y2="1717" class="line"></line><line x1="187" y1="1717" x2="187" y2="1693" class="line"></line><path d="M49 1717 Q49 1727 59 1727" class="line"></path><path d="M177 1727 Q187 1727 187 1717" class="line"></path><rect x="71" y="1713" width="58" height="32" rx="10"></rect><rect x="69" y="1711" width="58" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="1731">lower</text><line x1="59" y1="1727" x2="69" y2="1727" class="line"></line><line x1="127" y1="1727" x2="137" y2="1727" class="line"></line><line x1="137" y1="1727" x2="177" y2="1727" class="line"></line><line x1="49" y1="1717" x2="49" y2="1737" class="line"></line><line x1="187" y1="1737" x2="187" y2="1717" class="line"></line><line x1="49" y1="1737" x2="49" y2="1761" class="line"></line><line x1="187" y1="1761" x2="187" y2="1737" class="line"></line><path d="M49 1761 Q49 1771 59 1771" class="line"></path><path d="M177 1771 Q187 1771 187 1761" class="line"></path><rect x="71" y="1757" width="46" height="32" rx="10"></rect><rect x="69" y="1755" width="46" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="1775">trim</text><line x1="59" y1="1771" x2="69" y2="1771" class="line"></line><line x1="115" y1="1771" x2="125" y2="1771" class="line"></line><line x1="125" y1="1771" x2="177" y2="1771" class="line"></line><line x1="49" y1="1761" x2="49" y2="1781" class="line"></line><line x1="187" y1="1781" x2="187" y2="1761" class="line"></line><line x1="49" y1="1781" x2="49" y2="1805" class="line"></line><line x1="187" y1="1805" x2="187" y2="1781" class="line"></line><path d="M49 1805 Q49 1815 59 1815" class="line"></path><path d="M177 1815 Q187 1815 187 1805" class="line"></path><rect x="71" y="1801" width="52" height="32" rx="10"></rect><rect x="69" y="1799" width="52" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="1819">rtrim</text><line x1="59" y1="1815" x2="69" y2="1815" class="line"></line><line x1="121" y1="1815" x2="131" y2="1815" class="line"></line><line x1="131" y1="1815" x2="177" y2="1815" class="line"></line><line x1="49" y1="1805" x2="49" y2="1825" class="line"></line><line x1="187" y1="1825" x2="187" y2="1805" class="line"></line><line x1="49" y1="1825" x2="49" y2="1849" class="line"></line><line x1="187" y1="1849" x2="187" y2="1825" class="line"></line><path d="M49 1849 Q49 1859 59 1859" class="line"></path><path d="M177 1859 Q187 1859 187 1849" class="line"></path><rect x="71" y="1845" width="50" height="32" rx="10"></rect><rect x="69" y="1843" width="50" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="1863">ltrim</text><line x1="59" y1="1859" x2="69" y2="1859" class="line"></line><line x1="119" y1="1859" x2="129" y2="1859" class="line"></line><line x1="129" y1="1859" x2="177" y2="1859" class="line"></line><line x1="49" y1="1849" x2="49" y2="1869" class="line"></line><line x1="187" y1="1869" x2="187" y2="1849" class="line"></line><line x1="49" y1="1869" x2="49" y2="1893" class="line"></line><line x1="187" y1="1893" x2="187" y2="1869" class="line"></line><path d="M49 1893 Q49 1903 59 1903" class="line"></path><path d="M177 1903 Q187 1903 187 1893" class="line"></path><rect x="71" y="1889" width="50" height="32" rx="10"></rect><rect x="69" y="1887" width="50" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="1907">ascii</text><line x1="59" y1="1903" x2="69" y2="1903" class="line"></line><line x1="119" y1="1903" x2="129" y2="1903" class="line"></line><line x1="129" y1="1903" x2="177" y2="1903" class="line"></line><line x1="49" y1="1893" x2="49" y2="1913" class="line"></line><line x1="187" y1="1913" x2="187" y2="1893" class="line"></line><line x1="49" y1="1913" x2="49" y2="1937" class="line"></line><line x1="187" y1="1937" x2="187" y2="1913" class="line"></line><path d="M49 1937 Q49 1947 59 1947" class="line"></path><path d="M177 1947 Q187 1947 187 1937" class="line"></path><rect x="71" y="1933" width="60" height="32" rx="10"></rect><rect x="69" y="1931" width="60" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="1951">length</text><line x1="59" y1="1947" x2="69" y2="1947" class="line"></line><line x1="129" y1="1947" x2="139" y2="1947" class="line"></line><line x1="139" y1="1947" x2="177" y2="1947" class="line"></line><line x1="49" y1="1937" x2="49" y2="1957" class="line"></line><line x1="187" y1="1957" x2="187" y2="1937" class="line"></line><line x1="49" y1="1957" x2="49" y2="1981" class="line"></line><line x1="187" y1="1981" x2="187" y2="1957" class="line"></line><path d="M49 1981 Q49 1991 59 1991" class="line"></path><path d="M177 1991 Q187 1991 187 1981" class="line"></path><rect x="71" y="1977" width="94" height="32" rx="10"></rect><rect x="69" y="1975" width="94" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="1995">charLength</text><line x1="59" y1="1991" x2="69" y2="1991" class="line"></line><line x1="163" y1="1991" x2="173" y2="1991" class="line"></line><line x1="173" y1="1991" x2="177" y2="1991" class="line"></line><line x1="49" y1="1981" x2="49" y2="2001" class="line"></line><line x1="187" y1="2001" x2="187" y2="1981" class="line"></line><line x1="49" y1="2001" x2="49" y2="2025" class="line"></line><line x1="187" y1="2025" x2="187" y2="2001" class="line"></line><path d="M49 2025 Q49 2035 59 2035" class="line"></path><path d="M177 2035 Q187 2035 187 2025" class="line"></path><rect x="71" y="2021" width="82" height="32" rx="10"></rect><rect x="69" y="2019" width="82" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="2039">bitLength</text><line x1="59" y1="2035" x2="69" y2="2035" class="line"></line><line x1="151" y1="2035" x2="161" y2="2035" class="line"></line><line x1="161" y1="2035" x2="177" y2="2035" class="line"></line><line x1="49" y1="2025" x2="49" y2="2045" class="line"></line><line x1="187" y1="2045" x2="187" y2="2025" class="line"></line><line x1="49" y1="2045" x2="49" y2="2069" class="line"></line><line x1="187" y1="2069" x2="187" y2="2045" class="line"></line><path d="M49 2069 Q49 2079 59 2079" class="line"></path><path d="M177 2079 Q187 2079 187 2069" class="line"></path><rect x="71" y="2065" width="98" height="32" rx="10"></rect><rect x="69" y="2063" width="98" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="2083">octetLength</text><line x1="59" y1="2079" x2="69" y2="2079" class="line"></line><line x1="167" y1="2079" x2="177" y2="2079" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="209" y="1669" width="56" height="32"></rect><rect x="207" y="1667" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="217" y="1687">FIELD</text></a><line x1="197" y1="1683" x2="207" y2="1683" class="line"></line><line x1="263" y1="1683" x2="273" y2="1683" class="line"></line><line x1="273" y1="1683" x2="847" y2="1683" class="line"></line><line x1="29" y1="1673" x2="29" y2="1693" class="line"></line><line x1="857" y1="1693" x2="857" y2="1673" class="line"></line><line x1="29" y1="1693" x2="29" y2="2113" class="line"></line><line x1="857" y1="2113" x2="857" y2="1693" class="line"></line><path d="M29 2113 Q29 2123 39 2123" class="line"></path><path d="M847 2123 Q857 2123 857 2113" class="line"></path><rect x="71" y="2109" width="50" height="32" rx="10"></rect><rect x="69" y="2107" width="50" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="2127">rpad</text><line x1="59" y1="2123" x2="69" y2="2123" class="line"></line><line x1="119" y1="2123" x2="129" y2="2123" class="line"></line><line x1="129" y1="2123" x2="159" y2="2123" class="line"></line><line x1="39" y1="2123" x2="59" y2="2123" class="line"></line><line x1="159" y1="2123" x2="179" y2="2123" class="line"></line><path d="M39 2123 Q49 2123 49 2133" class="line"></path><path d="M169 2133 Q169 2123 179 2123" class="line"></path><line x1="49" y1="2133" x2="49" y2="2157" class="line"></line><line x1="169" y1="2157" x2="169" y2="2133" class="line"></line><path d="M49 2157 Q49 2167 59 2167" class="line"></path><path d="M159 2167 Q169 2167 169 2157" class="line"></path><rect x="71" y="2153" width="48" height="32" rx="10"></rect><rect x="69" y="2151" width="48" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="2171">lpad</text><line x1="59" y1="2167" x2="69" y2="2167" class="line"></line><line x1="117" y1="2167" x2="127" y2="2167" class="line"></line><line x1="127" y1="2167" x2="159" y2="2167" class="line"></line><line x1="49" y1="2157" x2="49" y2="2177" class="line"></line><line x1="169" y1="2177" x2="169" y2="2157" class="line"></line><line x1="49" y1="2177" x2="49" y2="2201" class="line"></line><line x1="169" y1="2201" x2="169" y2="2177" class="line"></line><path d="M49 2201 Q49 2211 59 2211" class="line"></path><path d="M159 2211 Q169 2211 169 2201" class="line"></path><rect x="71" y="2197" width="68" height="32" rx="10"></rect><rect x="69" y="2195" width="68" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="2215">replace</text><line x1="59" y1="2211" x2="69" y2="2211" class="line"></line><line x1="137" y1="2211" x2="147" y2="2211" class="line"></line><line x1="147" y1="2211" x2="159" y2="2211" class="line"></line><line x1="49" y1="2201" x2="49" y2="2221" class="line"></line><line x1="169" y1="2221" x2="169" y2="2201" class="line"></line><line x1="49" y1="2221" x2="49" y2="2245" class="line"></line><line x1="169" y1="2245" x2="169" y2="2221" class="line"></line><path d="M49 2245 Q49 2255 59 2255" class="line"></path><path d="M159 2255 Q169 2255 169 2245" class="line"></path><rect x="71" y="2241" width="80" height="32" rx="10"></rect><rect x="69" y="2239" width="80" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="2259">substring</text><line x1="59" y1="2255" x2="69" y2="2255" class="line"></line><line x1="149" y1="2255" x2="159" y2="2255" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="191" y="2109" width="56" height="32"></rect><rect x="189" y="2107" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="199" y="2127">FIELD</text></a><line x1="179" y1="2123" x2="189" y2="2123" class="line"></line><line x1="245" y1="2123" x2="255" y2="2123" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="267" y="2109" width="56" height="32"></rect><rect x="265" y="2107" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="275" y="2127">FIELD</text></a><line x1="255" y1="2123" x2="265" y2="2123" class="line"></line><line x1="321" y1="2123" x2="331" y2="2123" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="363" y="2109" width="56" height="32"></rect><rect x="361" y="2107" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="371" y="2127">FIELD</text></a><line x1="351" y1="2123" x2="361" y2="2123" class="line"></line><line x1="417" y1="2123" x2="427" y2="2123" class="line"></line><line x1="331" y1="2123" x2="351" y2="2123" class="line"></line><line x1="427" y1="2123" x2="447" y2="2123" class="line"></line><path d="M331 2123 Q341 2123 341 2133" class="line"></path><path d="M437 2133 Q437 2123 447 2123" class="line"></path><line x1="341" y1="2133" x2="341" y2="2147" class="line"></line><line x1="437" y1="2147" x2="437" y2="2133" class="line"></line><path d="M341 2147 Q341 2157 351 2157" class="line"></path><path d="M427 2157 Q437 2157 437 2147" class="line"></path><line x1="351" y1="2157" x2="361" y2="2157" class="line"></line><line x1="361" y1="2157" x2="427" y2="2157" class="line"></line><line x1="447" y1="2123" x2="847" y2="2123" class="line"></line><line x1="29" y1="2113" x2="29" y2="2133" class="line"></line><line x1="857" y1="2133" x2="857" y2="2113" class="line"></line><line x1="29" y1="2133" x2="29" y2="2289" class="line"></line><line x1="857" y1="2289" x2="857" y2="2133" class="line"></line><path d="M29 2289 Q29 2299 39 2299" class="line"></path><path d="M847 2299 Q857 2299 857 2289" class="line"></path><rect x="71" y="2285" width="62" height="32" rx="10"></rect><rect x="69" y="2283" width="62" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="2303">repeat</text><line x1="59" y1="2299" x2="69" y2="2299" class="line"></line><line x1="131" y1="2299" x2="141" y2="2299" class="line"></line><line x1="141" y1="2299" x2="151" y2="2299" class="line"></line><line x1="39" y1="2299" x2="59" y2="2299" class="line"></line><line x1="151" y1="2299" x2="171" y2="2299" class="line"></line><path d="M39 2299 Q49 2299 49 2309" class="line"></path><path d="M161 2309 Q161 2299 171 2299" class="line"></path><line x1="49" y1="2309" x2="49" y2="2333" class="line"></line><line x1="161" y1="2333" x2="161" y2="2309" class="line"></line><path d="M49 2333 Q49 2343 59 2343" class="line"></path><path d="M151 2343 Q161 2343 161 2333" class="line"></path><rect x="71" y="2329" width="72" height="32" rx="10"></rect><rect x="69" y="2327" width="72" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="2347">position</text><line x1="59" y1="2343" x2="69" y2="2343" class="line"></line><line x1="141" y1="2343" x2="151" y2="2343" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="183" y="2285" width="56" height="32"></rect><rect x="181" y="2283" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="191" y="2303">FIELD</text></a><line x1="171" y1="2299" x2="181" y2="2299" class="line"></line><line x1="237" y1="2299" x2="247" y2="2299" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="259" y="2285" width="56" height="32"></rect><rect x="257" y="2283" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="267" y="2303">FIELD</text></a><line x1="247" y1="2299" x2="257" y2="2299" class="line"></line><line x1="313" y1="2299" x2="323" y2="2299" class="line"></line><line x1="323" y1="2299" x2="847" y2="2299" class="line"></line><line x1="29" y1="2289" x2="29" y2="2309" class="line"></line><line x1="857" y1="2309" x2="857" y2="2289" class="line"></line><line x1="29" y1="2309" x2="29" y2="2377" class="line"></line><line x1="857" y1="2377" x2="857" y2="2309" class="line"></line><path d="M29 2377 Q29 2387 39 2387" class="line"></path><path d="M847 2387 Q857 2387 857 2377" class="line"></path><rect x="51" y="2373" width="66" height="32" rx="10"></rect><rect x="49" y="2371" width="66" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="2391">extract</text><line x1="39" y1="2387" x2="49" y2="2387" class="line"></line><line x1="115" y1="2387" x2="125" y2="2387" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="137" y="2373" width="56" height="32"></rect><rect x="135" y="2371" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="145" y="2391">FIELD</text></a><line x1="125" y1="2387" x2="135" y2="2387" class="line"></line><line x1="191" y1="2387" x2="201" y2="2387" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="213" y="2373" width="56" height="32"></rect><rect x="211" y="2371" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="221" y="2391">FIELD</text></a><line x1="201" y1="2387" x2="211" y2="2387" class="line"></line><line x1="267" y1="2387" x2="277" y2="2387" class="line"></line><line x1="277" y1="2387" x2="847" y2="2387" class="line"></line><line x1="29" y1="2377" x2="29" y2="2397" class="line"></line><line x1="857" y1="2397" x2="857" y2="2377" class="line"></line><line x1="29" y1="2397" x2="29" y2="2421" class="line"></line><line x1="857" y1="2421" x2="857" y2="2397" class="line"></line><path d="M29 2421 Q29 2431 39 2431" class="line"></path><path d="M847 2431 Q857 2431 857 2421" class="line"></path><rect x="71" y="2417" width="74" height="32" rx="10"></rect><rect x="69" y="2415" width="74" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="2435">bitCount</text><line x1="59" y1="2431" x2="69" y2="2431" class="line"></line><line x1="143" y1="2431" x2="153" y2="2431" class="line"></line><line x1="39" y1="2431" x2="59" y2="2431" class="line"></line><line x1="153" y1="2431" x2="173" y2="2431" class="line"></line><path d="M39 2431 Q49 2431 49 2441" class="line"></path><path d="M163 2441 Q163 2431 173 2431" class="line"></path><line x1="49" y1="2441" x2="49" y2="2465" class="line"></line><line x1="163" y1="2465" x2="163" y2="2441" class="line"></line><path d="M49 2465 Q49 2475 59 2475" class="line"></path><path d="M153 2475 Q163 2475 163 2465" class="line"></path><rect x="71" y="2461" width="60" height="32" rx="10"></rect><rect x="69" y="2459" width="60" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="2479">bitNot</text><line x1="59" y1="2475" x2="69" y2="2475" class="line"></line><line x1="129" y1="2475" x2="139" y2="2475" class="line"></line><line x1="139" y1="2475" x2="153" y2="2475" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="185" y="2417" width="56" height="32"></rect><rect x="183" y="2415" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="193" y="2435">FIELD</text></a><line x1="173" y1="2431" x2="183" y2="2431" class="line"></line><line x1="239" y1="2431" x2="249" y2="2431" class="line"></line><line x1="249" y1="2431" x2="847" y2="2431" class="line"></line><line x1="29" y1="2421" x2="29" y2="2441" class="line"></line><line x1="857" y1="2441" x2="857" y2="2421" class="line"></line><line x1="29" y1="2441" x2="29" y2="2509" class="line"></line><line x1="857" y1="2509" x2="857" y2="2441" class="line"></line><path d="M29 2509 Q29 2519 39 2519" class="line"></path><path d="M847 2519 Q857 2519 857 2509" class="line"></path><rect x="71" y="2505" width="62" height="32" rx="10"></rect><rect x="69" y="2503" width="62" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="2523">bitAnd</text><line x1="59" y1="2519" x2="69" y2="2519" class="line"></line><line x1="131" y1="2519" x2="141" y2="2519" class="line"></line><line x1="141" y1="2519" x2="149" y2="2519" class="line"></line><line x1="39" y1="2519" x2="59" y2="2519" class="line"></line><line x1="149" y1="2519" x2="169" y2="2519" class="line"></line><path d="M39 2519 Q49 2519 49 2529" class="line"></path><path d="M159 2529 Q159 2519 169 2519" class="line"></path><line x1="49" y1="2529" x2="49" y2="2553" class="line"></line><line x1="159" y1="2553" x2="159" y2="2529" class="line"></line><path d="M49 2553 Q49 2563 59 2563" class="line"></path><path d="M149 2563 Q159 2563 159 2553" class="line"></path><rect x="71" y="2549" width="70" height="32" rx="10"></rect><rect x="69" y="2547" width="70" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="2567">bitNand</text><line x1="59" y1="2563" x2="69" y2="2563" class="line"></line><line x1="139" y1="2563" x2="149" y2="2563" class="line"></line><line x1="49" y1="2553" x2="49" y2="2573" class="line"></line><line x1="159" y1="2573" x2="159" y2="2553" class="line"></line><line x1="49" y1="2573" x2="49" y2="2597" class="line"></line><line x1="159" y1="2597" x2="159" y2="2573" class="line"></line><path d="M49 2597 Q49 2607 59 2607" class="line"></path><path d="M149 2607 Q159 2607 159 2597" class="line"></path><rect x="71" y="2593" width="54" height="32" rx="10"></rect><rect x="69" y="2591" width="54" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="2611">bitOr</text><line x1="59" y1="2607" x2="69" y2="2607" class="line"></line><line x1="123" y1="2607" x2="133" y2="2607" class="line"></line><line x1="133" y1="2607" x2="149" y2="2607" class="line"></line><line x1="49" y1="2597" x2="49" y2="2617" class="line"></line><line x1="159" y1="2617" x2="159" y2="2597" class="line"></line><line x1="49" y1="2617" x2="49" y2="2641" class="line"></line><line x1="159" y1="2641" x2="159" y2="2617" class="line"></line><path d="M49 2641 Q49 2651 59 2651" class="line"></path><path d="M149 2651 Q159 2651 159 2641" class="line"></path><rect x="71" y="2637" width="60" height="32" rx="10"></rect><rect x="69" y="2635" width="60" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="2655">bitNor</text><line x1="59" y1="2651" x2="69" y2="2651" class="line"></line><line x1="129" y1="2651" x2="139" y2="2651" class="line"></line><line x1="139" y1="2651" x2="149" y2="2651" class="line"></line><line x1="49" y1="2641" x2="49" y2="2661" class="line"></line><line x1="159" y1="2661" x2="159" y2="2641" class="line"></line><line x1="49" y1="2661" x2="49" y2="2685" class="line"></line><line x1="159" y1="2685" x2="159" y2="2661" class="line"></line><path d="M49 2685 Q49 2695 59 2695" class="line"></path><path d="M149 2695 Q159 2695 159 2685" class="line"></path><rect x="71" y="2681" width="60" height="32" rx="10"></rect><rect x="69" y="2679" width="60" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="2699">bitXor</text><line x1="59" y1="2695" x2="69" y2="2695" class="line"></line><line x1="129" y1="2695" x2="139" y2="2695" class="line"></line><line x1="139" y1="2695" x2="149" y2="2695" class="line"></line><line x1="49" y1="2685" x2="49" y2="2705" class="line"></line><line x1="159" y1="2705" x2="159" y2="2685" class="line"></line><line x1="49" y1="2705" x2="49" y2="2729" class="line"></line><line x1="159" y1="2729" x2="159" y2="2705" class="line"></line><path d="M49 2729 Q49 2739 59 2739" class="line"></path><path d="M149 2739 Q159 2739 159 2729" class="line"></path><rect x="71" y="2725" width="70" height="32" rx="10"></rect><rect x="69" y="2723" width="70" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="2743">bitXNor</text><line x1="59" y1="2739" x2="69" y2="2739" class="line"></line><line x1="139" y1="2739" x2="149" y2="2739" class="line"></line><line x1="49" y1="2729" x2="49" y2="2749" class="line"></line><line x1="159" y1="2749" x2="159" y2="2729" class="line"></line><line x1="49" y1="2749" x2="49" y2="2773" class="line"></line><line x1="159" y1="2773" x2="159" y2="2749" class="line"></line><path d="M49 2773 Q49 2783 59 2783" class="line"></path><path d="M149 2783 Q159 2783 159 2773" class="line"></path><rect x="71" y="2769" width="38" height="32" rx="10"></rect><rect x="69" y="2767" width="38" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="2787">shl</text><line x1="59" y1="2783" x2="69" y2="2783" class="line"></line><line x1="107" y1="2783" x2="117" y2="2783" class="line"></line><line x1="117" y1="2783" x2="149" y2="2783" class="line"></line><line x1="49" y1="2773" x2="49" y2="2793" class="line"></line><line x1="159" y1="2793" x2="159" y2="2773" class="line"></line><line x1="49" y1="2793" x2="49" y2="2817" class="line"></line><line x1="159" y1="2817" x2="159" y2="2793" class="line"></line><path d="M49 2817 Q49 2827 59 2827" class="line"></path><path d="M149 2827 Q159 2827 159 2817" class="line"></path><rect x="71" y="2813" width="40" height="32" rx="10"></rect><rect x="69" y="2811" width="40" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="2831">shr</text><line x1="59" y1="2827" x2="69" y2="2827" class="line"></line><line x1="109" y1="2827" x2="119" y2="2827" class="line"></line><line x1="119" y1="2827" x2="149" y2="2827" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="181" y="2505" width="56" height="32"></rect><rect x="179" y="2503" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="189" y="2523">FIELD</text></a><line x1="169" y1="2519" x2="179" y2="2519" class="line"></line><line x1="235" y1="2519" x2="245" y2="2519" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="257" y="2505" width="56" height="32"></rect><rect x="255" y="2503" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="265" y="2523">FIELD</text></a><line x1="245" y1="2519" x2="255" y2="2519" class="line"></line><line x1="311" y1="2519" x2="321" y2="2519" class="line"></line><line x1="321" y1="2519" x2="847" y2="2519" class="line"></line><line x1="29" y1="2509" x2="29" y2="2529" class="line"></line><line x1="857" y1="2529" x2="857" y2="2509" class="line"></line><line x1="29" y1="2529" x2="29" y2="2861" class="line"></line><line x1="857" y1="2861" x2="857" y2="2529" class="line"></line><path d="M29 2861 Q29 2871 39 2871" class="line"></path><path d="M847 2871 Q857 2871 857 2861" class="line"></path><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="51" y="2857" width="56" height="32"></rect><rect x="49" y="2855" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="59" y="2875">FIELD</text></a><line x1="39" y1="2871" x2="49" y2="2871" class="line"></line><line x1="105" y1="2871" x2="115" y2="2871" class="line"></line><rect x="127" y="2857" width="44" height="32" rx="10"></rect><rect x="125" y="2855" width="44" height="32" class="terminal" rx="10"></rect><text class="terminal" x="135" y="2875">neg</text><line x1="115" y1="2871" x2="125" y2="2871" class="line"></line><line x1="169" y1="2871" x2="179" y2="2871" class="line"></line><line x1="179" y1="2871" x2="847" y2="2871" class="line"></line><line x1="29" y1="2861" x2="29" y2="2881" class="line"></line><line x1="857" y1="2881" x2="857" y2="2861" class="line"></line><line x1="29" y1="2881" x2="29" y2="2905" class="line"></line><line x1="857" y1="2905" x2="857" y2="2881" class="line"></line><path d="M29 2905 Q29 2915 39 2915" class="line"></path><path d="M847 2915 Q857 2915 857 2905" class="line"></path><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="51" y="2901" width="56" height="32"></rect><rect x="49" y="2899" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="59" y="2919">FIELD</text></a><line x1="39" y1="2915" x2="49" y2="2915" class="line"></line><line x1="105" y1="2915" x2="115" y2="2915" class="line"></line><rect x="147" y="2901" width="44" height="32" rx="10"></rect><rect x="145" y="2899" width="44" height="32" class="terminal" rx="10"></rect><text class="terminal" x="155" y="2919">add</text><line x1="135" y1="2915" x2="145" y2="2915" class="line"></line><line x1="189" y1="2915" x2="199" y2="2915" class="line"></line><line x1="199" y1="2915" x2="203" y2="2915" class="line"></line><line x1="115" y1="2915" x2="135" y2="2915" class="line"></line><line x1="203" y1="2915" x2="223" y2="2915" class="line"></line><path d="M115 2915 Q125 2915 125 2925" class="line"></path><path d="M213 2925 Q213 2915 223 2915" class="line"></path><line x1="125" y1="2925" x2="125" y2="2949" class="line"></line><line x1="213" y1="2949" x2="213" y2="2925" class="line"></line><path d="M125 2949 Q125 2959 135 2959" class="line"></path><path d="M203 2959 Q213 2959 213 2949" class="line"></path><rect x="147" y="2945" width="42" height="32" rx="10"></rect><rect x="145" y="2943" width="42" height="32" class="terminal" rx="10"></rect><text class="terminal" x="155" y="2963">sub</text><line x1="135" y1="2959" x2="145" y2="2959" class="line"></line><line x1="187" y1="2959" x2="197" y2="2959" class="line"></line><line x1="197" y1="2959" x2="203" y2="2959" class="line"></line><line x1="125" y1="2949" x2="125" y2="2969" class="line"></line><line x1="213" y1="2969" x2="213" y2="2949" class="line"></line><line x1="125" y1="2969" x2="125" y2="2993" class="line"></line><line x1="213" y1="2993" x2="213" y2="2969" class="line"></line><path d="M125 2993 Q125 3003 135 3003" class="line"></path><path d="M203 3003 Q213 3003 213 2993" class="line"></path><rect x="147" y="2989" width="44" height="32" rx="10"></rect><rect x="145" y="2987" width="44" height="32" class="terminal" rx="10"></rect><text class="terminal" x="155" y="3007">mul</text><line x1="135" y1="3003" x2="145" y2="3003" class="line"></line><line x1="189" y1="3003" x2="199" y2="3003" class="line"></line><line x1="199" y1="3003" x2="203" y2="3003" class="line"></line><line x1="125" y1="2993" x2="125" y2="3013" class="line"></line><line x1="213" y1="3013" x2="213" y2="2993" class="line"></line><line x1="125" y1="3013" x2="125" y2="3037" class="line"></line><line x1="213" y1="3037" x2="213" y2="3013" class="line"></line><path d="M125 3037 Q125 3047 135 3047" class="line"></path><path d="M203 3047 Q213 3047 213 3037" class="line"></path><rect x="147" y="3033" width="40" height="32" rx="10"></rect><rect x="145" y="3031" width="40" height="32" class="terminal" rx="10"></rect><text class="terminal" x="155" y="3051">div</text><line x1="135" y1="3047" x2="145" y2="3047" class="line"></line><line x1="185" y1="3047" x2="195" y2="3047" class="line"></line><line x1="195" y1="3047" x2="203" y2="3047" class="line"></line><line x1="125" y1="3037" x2="125" y2="3057" class="line"></line><line x1="213" y1="3057" x2="213" y2="3037" class="line"></line><line x1="125" y1="3057" x2="125" y2="3081" class="line"></line><line x1="213" y1="3081" x2="213" y2="3057" class="line"></line><path d="M125 3081 Q125 3091 135 3091" class="line"></path><path d="M203 3091 Q213 3091 213 3081" class="line"></path><rect x="147" y="3077" width="48" height="32" rx="10"></rect><rect x="145" y="3075" width="48" height="32" class="terminal" rx="10"></rect><text class="terminal" x="155" y="3095">mod</text><line x1="135" y1="3091" x2="145" y2="3091" class="line"></line><line x1="193" y1="3091" x2="203" y2="3091" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="235" y="2901" width="56" height="32"></rect><rect x="233" y="2899" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="243" y="2919">FIELD</text></a><line x1="223" y1="2915" x2="233" y2="2915" class="line"></line><line x1="289" y1="2915" x2="299" y2="2915" class="line"></line><line x1="299" y1="2915" x2="847" y2="2915" class="line"></line><line x1="29" y1="2905" x2="29" y2="2925" class="line"></line><line x1="857" y1="2925" x2="857" y2="2905" class="line"></line><line x1="29" y1="2925" x2="29" y2="3125" class="line"></line><line x1="857" y1="3125" x2="857" y2="2925" class="line"></line><path d="M29 3125 Q29 3135 39 3135" class="line"></path><path d="M847 3135 Q857 3135 857 3125" class="line"></path><rect x="71" y="3121" width="46" height="32" rx="10"></rect><rect x="69" y="3119" width="46" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="3139">sign</text><line x1="59" y1="3135" x2="69" y2="3135" class="line"></line><line x1="115" y1="3135" x2="125" y2="3135" class="line"></line><line x1="125" y1="3135" x2="129" y2="3135" class="line"></line><line x1="39" y1="3135" x2="59" y2="3135" class="line"></line><line x1="129" y1="3135" x2="149" y2="3135" class="line"></line><path d="M39 3135 Q49 3135 49 3145" class="line"></path><path d="M139 3145 Q139 3135 149 3135" class="line"></path><line x1="49" y1="3145" x2="49" y2="3169" class="line"></line><line x1="139" y1="3169" x2="139" y2="3145" class="line"></line><path d="M49 3169 Q49 3179 59 3179" class="line"></path><path d="M129 3179 Q139 3179 139 3169" class="line"></path><rect x="71" y="3165" width="42" height="32" rx="10"></rect><rect x="69" y="3163" width="42" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="3183">abs</text><line x1="59" y1="3179" x2="69" y2="3179" class="line"></line><line x1="111" y1="3179" x2="121" y2="3179" class="line"></line><line x1="121" y1="3179" x2="129" y2="3179" class="line"></line><line x1="49" y1="3169" x2="49" y2="3189" class="line"></line><line x1="139" y1="3189" x2="139" y2="3169" class="line"></line><line x1="49" y1="3189" x2="49" y2="3213" class="line"></line><line x1="139" y1="3213" x2="139" y2="3189" class="line"></line><path d="M49 3213 Q49 3223 59 3223" class="line"></path><path d="M129 3223 Q139 3223 139 3213" class="line"></path><rect x="71" y="3209" width="50" height="32" rx="10"></rect><rect x="69" y="3207" width="50" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="3227">floor</text><line x1="59" y1="3223" x2="69" y2="3223" class="line"></line><line x1="119" y1="3223" x2="129" y2="3223" class="line"></line><line x1="49" y1="3213" x2="49" y2="3233" class="line"></line><line x1="139" y1="3233" x2="139" y2="3213" class="line"></line><line x1="49" y1="3233" x2="49" y2="3257" class="line"></line><line x1="139" y1="3257" x2="139" y2="3233" class="line"></line><path d="M49 3257 Q49 3267 59 3267" class="line"></path><path d="M129 3267 Q139 3267 139 3257" class="line"></path><rect x="71" y="3253" width="42" height="32" rx="10"></rect><rect x="69" y="3251" width="42" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="3271">ceil</text><line x1="59" y1="3267" x2="69" y2="3267" class="line"></line><line x1="111" y1="3267" x2="121" y2="3267" class="line"></line><line x1="121" y1="3267" x2="129" y2="3267" class="line"></line><line x1="49" y1="3257" x2="49" y2="3277" class="line"></line><line x1="139" y1="3277" x2="139" y2="3257" class="line"></line><line x1="49" y1="3277" x2="49" y2="3301" class="line"></line><line x1="139" y1="3301" x2="139" y2="3277" class="line"></line><path d="M49 3301 Q49 3311 59 3311" class="line"></path><path d="M129 3311 Q139 3311 139 3301" class="line"></path><rect x="71" y="3297" width="46" height="32" rx="10"></rect><rect x="69" y="3295" width="46" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="3315">sqrt</text><line x1="59" y1="3311" x2="69" y2="3311" class="line"></line><line x1="115" y1="3311" x2="125" y2="3311" class="line"></line><line x1="125" y1="3311" x2="129" y2="3311" class="line"></line><line x1="49" y1="3301" x2="49" y2="3321" class="line"></line><line x1="139" y1="3321" x2="139" y2="3301" class="line"></line><line x1="49" y1="3321" x2="49" y2="3345" class="line"></line><line x1="139" y1="3345" x2="139" y2="3321" class="line"></line><path d="M49 3345 Q49 3355 59 3355" class="line"></path><path d="M129 3355 Q139 3355 139 3345" class="line"></path><rect x="71" y="3341" width="44" height="32" rx="10"></rect><rect x="69" y="3339" width="44" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="3359">exp</text><line x1="59" y1="3355" x2="69" y2="3355" class="line"></line><line x1="113" y1="3355" x2="123" y2="3355" class="line"></line><line x1="123" y1="3355" x2="129" y2="3355" class="line"></line><line x1="49" y1="3345" x2="49" y2="3365" class="line"></line><line x1="139" y1="3365" x2="139" y2="3345" class="line"></line><line x1="49" y1="3365" x2="49" y2="3389" class="line"></line><line x1="139" y1="3389" x2="139" y2="3365" class="line"></line><path d="M49 3389 Q49 3399 59 3399" class="line"></path><path d="M129 3399 Q139 3399 139 3389" class="line"></path><rect x="71" y="3385" width="32" height="32" rx="10"></rect><rect x="69" y="3383" width="32" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="3403">ln</text><line x1="59" y1="3399" x2="69" y2="3399" class="line"></line><line x1="101" y1="3399" x2="111" y2="3399" class="line"></line><line x1="111" y1="3399" x2="129" y2="3399" class="line"></line><line x1="49" y1="3389" x2="49" y2="3409" class="line"></line><line x1="139" y1="3409" x2="139" y2="3389" class="line"></line><line x1="49" y1="3409" x2="49" y2="3433" class="line"></line><line x1="139" y1="3433" x2="139" y2="3409" class="line"></line><path d="M49 3433 Q49 3443 59 3443" class="line"></path><path d="M129 3443 Q139 3443 139 3433" class="line"></path><rect x="71" y="3429" width="50" height="32" rx="10"></rect><rect x="69" y="3427" width="50" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="3447">acos</text><line x1="59" y1="3443" x2="69" y2="3443" class="line"></line><line x1="119" y1="3443" x2="129" y2="3443" class="line"></line><line x1="49" y1="3433" x2="49" y2="3453" class="line"></line><line x1="139" y1="3453" x2="139" y2="3433" class="line"></line><line x1="49" y1="3453" x2="49" y2="3477" class="line"></line><line x1="139" y1="3477" x2="139" y2="3453" class="line"></line><path d="M49 3477 Q49 3487 59 3487" class="line"></path><path d="M129 3487 Q139 3487 139 3477" class="line"></path><rect x="71" y="3473" width="46" height="32" rx="10"></rect><rect x="69" y="3471" width="46" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="3491">asin</text><line x1="59" y1="3487" x2="69" y2="3487" class="line"></line><line x1="115" y1="3487" x2="125" y2="3487" class="line"></line><line x1="125" y1="3487" x2="129" y2="3487" class="line"></line><line x1="49" y1="3477" x2="49" y2="3497" class="line"></line><line x1="139" y1="3497" x2="139" y2="3477" class="line"></line><line x1="49" y1="3497" x2="49" y2="3521" class="line"></line><line x1="139" y1="3521" x2="139" y2="3497" class="line"></line><path d="M49 3521 Q49 3531 59 3531" class="line"></path><path d="M129 3531 Q139 3531 139 3521" class="line"></path><rect x="71" y="3517" width="48" height="32" rx="10"></rect><rect x="69" y="3515" width="48" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="3535">atan</text><line x1="59" y1="3531" x2="69" y2="3531" class="line"></line><line x1="117" y1="3531" x2="127" y2="3531" class="line"></line><line x1="127" y1="3531" x2="129" y2="3531" class="line"></line><line x1="49" y1="3521" x2="49" y2="3541" class="line"></line><line x1="139" y1="3541" x2="139" y2="3521" class="line"></line><line x1="49" y1="3541" x2="49" y2="3565" class="line"></line><line x1="139" y1="3565" x2="139" y2="3541" class="line"></line><path d="M49 3565 Q49 3575 59 3575" class="line"></path><path d="M129 3575 Q139 3575 139 3565" class="line"></path><rect x="71" y="3561" width="42" height="32" rx="10"></rect><rect x="69" y="3559" width="42" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="3579">cos</text><line x1="59" y1="3575" x2="69" y2="3575" class="line"></line><line x1="111" y1="3575" x2="121" y2="3575" class="line"></line><line x1="121" y1="3575" x2="129" y2="3575" class="line"></line><line x1="49" y1="3565" x2="49" y2="3585" class="line"></line><line x1="139" y1="3585" x2="139" y2="3565" class="line"></line><line x1="49" y1="3585" x2="49" y2="3609" class="line"></line><line x1="139" y1="3609" x2="139" y2="3585" class="line"></line><path d="M49 3609 Q49 3619 59 3619" class="line"></path><path d="M129 3619 Q139 3619 139 3609" class="line"></path><rect x="71" y="3605" width="38" height="32" rx="10"></rect><rect x="69" y="3603" width="38" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="3623">sin</text><line x1="59" y1="3619" x2="69" y2="3619" class="line"></line><line x1="107" y1="3619" x2="117" y2="3619" class="line"></line><line x1="117" y1="3619" x2="129" y2="3619" class="line"></line><line x1="49" y1="3609" x2="49" y2="3629" class="line"></line><line x1="139" y1="3629" x2="139" y2="3609" class="line"></line><line x1="49" y1="3629" x2="49" y2="3653" class="line"></line><line x1="139" y1="3653" x2="139" y2="3629" class="line"></line><path d="M49 3653 Q49 3663 59 3663" class="line"></path><path d="M129 3663 Q139 3663 139 3653" class="line"></path><rect x="71" y="3649" width="40" height="32" rx="10"></rect><rect x="69" y="3647" width="40" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="3667">tan</text><line x1="59" y1="3663" x2="69" y2="3663" class="line"></line><line x1="109" y1="3663" x2="119" y2="3663" class="line"></line><line x1="119" y1="3663" x2="129" y2="3663" class="line"></line><line x1="49" y1="3653" x2="49" y2="3673" class="line"></line><line x1="139" y1="3673" x2="139" y2="3653" class="line"></line><line x1="49" y1="3673" x2="49" y2="3697" class="line"></line><line x1="139" y1="3697" x2="139" y2="3673" class="line"></line><path d="M49 3697 Q49 3707 59 3707" class="line"></path><path d="M129 3707 Q139 3707 139 3697" class="line"></path><rect x="71" y="3693" width="40" height="32" rx="10"></rect><rect x="69" y="3691" width="40" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="3711">cot</text><line x1="59" y1="3707" x2="69" y2="3707" class="line"></line><line x1="109" y1="3707" x2="119" y2="3707" class="line"></line><line x1="119" y1="3707" x2="129" y2="3707" class="line"></line><line x1="49" y1="3697" x2="49" y2="3717" class="line"></line><line x1="139" y1="3717" x2="139" y2="3697" class="line"></line><line x1="49" y1="3717" x2="49" y2="3741" class="line"></line><line x1="139" y1="3741" x2="139" y2="3717" class="line"></line><path d="M49 3741 Q49 3751 59 3751" class="line"></path><path d="M129 3751 Q139 3751 139 3741" class="line"></path><rect x="71" y="3737" width="46" height="32" rx="10"></rect><rect x="69" y="3735" width="46" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="3755">sinh</text><line x1="59" y1="3751" x2="69" y2="3751" class="line"></line><line x1="115" y1="3751" x2="125" y2="3751" class="line"></line><line x1="125" y1="3751" x2="129" y2="3751" class="line"></line><line x1="49" y1="3741" x2="49" y2="3761" class="line"></line><line x1="139" y1="3761" x2="139" y2="3741" class="line"></line><line x1="49" y1="3761" x2="49" y2="3785" class="line"></line><line x1="139" y1="3785" x2="139" y2="3761" class="line"></line><path d="M49 3785 Q49 3795 59 3795" class="line"></path><path d="M129 3795 Q139 3795 139 3785" class="line"></path><rect x="71" y="3781" width="50" height="32" rx="10"></rect><rect x="69" y="3779" width="50" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="3799">cosh</text><line x1="59" y1="3795" x2="69" y2="3795" class="line"></line><line x1="119" y1="3795" x2="129" y2="3795" class="line"></line><line x1="49" y1="3785" x2="49" y2="3805" class="line"></line><line x1="139" y1="3805" x2="139" y2="3785" class="line"></line><line x1="49" y1="3805" x2="49" y2="3829" class="line"></line><line x1="139" y1="3829" x2="139" y2="3805" class="line"></line><path d="M49 3829 Q49 3839 59 3839" class="line"></path><path d="M129 3839 Q139 3839 139 3829" class="line"></path><rect x="71" y="3825" width="48" height="32" rx="10"></rect><rect x="69" y="3823" width="48" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="3843">tanh</text><line x1="59" y1="3839" x2="69" y2="3839" class="line"></line><line x1="117" y1="3839" x2="127" y2="3839" class="line"></line><line x1="127" y1="3839" x2="129" y2="3839" class="line"></line><line x1="49" y1="3829" x2="49" y2="3849" class="line"></line><line x1="139" y1="3849" x2="139" y2="3829" class="line"></line><line x1="49" y1="3849" x2="49" y2="3873" class="line"></line><line x1="139" y1="3873" x2="139" y2="3849" class="line"></line><path d="M49 3873 Q49 3883 59 3883" class="line"></path><path d="M129 3883 Q139 3883 139 3873" class="line"></path><rect x="71" y="3869" width="48" height="32" rx="10"></rect><rect x="69" y="3867" width="48" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="3887">coth</text><line x1="59" y1="3883" x2="69" y2="3883" class="line"></line><line x1="117" y1="3883" x2="127" y2="3883" class="line"></line><line x1="127" y1="3883" x2="129" y2="3883" class="line"></line><line x1="49" y1="3873" x2="49" y2="3893" class="line"></line><line x1="139" y1="3893" x2="139" y2="3873" class="line"></line><line x1="49" y1="3893" x2="49" y2="3917" class="line"></line><line x1="139" y1="3917" x2="139" y2="3893" class="line"></line><path d="M49 3917 Q49 3927 59 3927" class="line"></path><path d="M129 3927 Q139 3927 139 3917" class="line"></path><rect x="71" y="3913" width="44" height="32" rx="10"></rect><rect x="69" y="3911" width="44" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="3931">deg</text><line x1="59" y1="3927" x2="69" y2="3927" class="line"></line><line x1="113" y1="3927" x2="123" y2="3927" class="line"></line><line x1="123" y1="3927" x2="129" y2="3927" class="line"></line><line x1="49" y1="3917" x2="49" y2="3937" class="line"></line><line x1="139" y1="3937" x2="139" y2="3917" class="line"></line><line x1="49" y1="3937" x2="49" y2="3961" class="line"></line><line x1="139" y1="3961" x2="139" y2="3937" class="line"></line><path d="M49 3961 Q49 3971 59 3971" class="line"></path><path d="M129 3971 Q139 3971 139 3961" class="line"></path><rect x="71" y="3957" width="42" height="32" rx="10"></rect><rect x="69" y="3955" width="42" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="3975">rad</text><line x1="59" y1="3971" x2="69" y2="3971" class="line"></line><line x1="111" y1="3971" x2="121" y2="3971" class="line"></line><line x1="121" y1="3971" x2="129" y2="3971" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="161" y="3121" width="56" height="32"></rect><rect x="159" y="3119" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="169" y="3139">FIELD</text></a><line x1="149" y1="3135" x2="159" y2="3135" class="line"></line><line x1="215" y1="3135" x2="225" y2="3135" class="line"></line><line x1="225" y1="3135" x2="847" y2="3135" class="line"></line><line x1="29" y1="3125" x2="29" y2="3145" class="line"></line><line x1="857" y1="3145" x2="857" y2="3125" class="line"></line><line x1="29" y1="3145" x2="29" y2="4005" class="line"></line><line x1="857" y1="4005" x2="857" y2="3145" class="line"></line><path d="M29 4005 Q29 4015 39 4015" class="line"></path><path d="M847 4015 Q857 4015 857 4005" class="line"></path><rect x="71" y="4001" width="40" height="32" rx="10"></rect><rect x="69" y="3999" width="40" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="4019">log</text><line x1="59" y1="4015" x2="69" y2="4015" class="line"></line><line x1="109" y1="4015" x2="119" y2="4015" class="line"></line><line x1="119" y1="4015" x2="141" y2="4015" class="line"></line><line x1="39" y1="4015" x2="59" y2="4015" class="line"></line><line x1="141" y1="4015" x2="161" y2="4015" class="line"></line><path d="M39 4015 Q49 4015 49 4025" class="line"></path><path d="M151 4025 Q151 4015 161 4015" class="line"></path><line x1="49" y1="4025" x2="49" y2="4049" class="line"></line><line x1="151" y1="4049" x2="151" y2="4025" class="line"></line><path d="M49 4049 Q49 4059 59 4059" class="line"></path><path d="M141 4059 Q151 4059 151 4049" class="line"></path><rect x="71" y="4045" width="62" height="32" rx="10"></rect><rect x="69" y="4043" width="62" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="4063">power</text><line x1="59" y1="4059" x2="69" y2="4059" class="line"></line><line x1="131" y1="4059" x2="141" y2="4059" class="line"></line><line x1="49" y1="4049" x2="49" y2="4069" class="line"></line><line x1="151" y1="4069" x2="151" y2="4049" class="line"></line><line x1="49" y1="4069" x2="49" y2="4093" class="line"></line><line x1="151" y1="4093" x2="151" y2="4069" class="line"></line><path d="M49 4093 Q49 4103 59 4103" class="line"></path><path d="M141 4103 Q151 4103 151 4093" class="line"></path><rect x="71" y="4089" width="58" height="32" rx="10"></rect><rect x="69" y="4087" width="58" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="4107">atan2</text><line x1="59" y1="4103" x2="69" y2="4103" class="line"></line><line x1="127" y1="4103" x2="137" y2="4103" class="line"></line><line x1="137" y1="4103" x2="141" y2="4103" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="173" y="4001" width="56" height="32"></rect><rect x="171" y="3999" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="181" y="4019">FIELD</text></a><line x1="161" y1="4015" x2="171" y2="4015" class="line"></line><line x1="227" y1="4015" x2="237" y2="4015" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="249" y="4001" width="56" height="32"></rect><rect x="247" y="3999" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="257" y="4019">FIELD</text></a><line x1="237" y1="4015" x2="247" y2="4015" class="line"></line><line x1="303" y1="4015" x2="313" y2="4015" class="line"></line><line x1="313" y1="4015" x2="847" y2="4015" class="line"></line><line x1="29" y1="4005" x2="29" y2="4025" class="line"></line><line x1="857" y1="4025" x2="857" y2="4005" class="line"></line><line x1="29" y1="4025" x2="29" y2="4137" class="line"></line><line x1="857" y1="4137" x2="857" y2="4025" class="line"></line><path d="M29 4137 Q29 4147 39 4147" class="line"></path><path d="M847 4147 Q857 4147 857 4137" class="line"></path><rect x="51" y="4133" width="58" height="32" rx="10"></rect><rect x="49" y="4131" width="58" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="4151">round</text><line x1="39" y1="4147" x2="49" y2="4147" class="line"></line><line x1="107" y1="4147" x2="117" y2="4147" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="129" y="4133" width="56" height="32"></rect><rect x="127" y="4131" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="137" y="4151">FIELD</text></a><line x1="117" y1="4147" x2="127" y2="4147" class="line"></line><line x1="183" y1="4147" x2="193" y2="4147" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="225" y="4133" width="56" height="32"></rect><rect x="223" y="4131" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="233" y="4151">FIELD</text></a><line x1="213" y1="4147" x2="223" y2="4147" class="line"></line><line x1="279" y1="4147" x2="289" y2="4147" class="line"></line><line x1="193" y1="4147" x2="213" y2="4147" class="line"></line><line x1="289" y1="4147" x2="309" y2="4147" class="line"></line><path d="M193 4147 Q203 4147 203 4157" class="line"></path><path d="M299 4157 Q299 4147 309 4147" class="line"></path><line x1="203" y1="4157" x2="203" y2="4171" class="line"></line><line x1="299" y1="4171" x2="299" y2="4157" class="line"></line><path d="M203 4171 Q203 4181 213 4181" class="line"></path><path d="M289 4181 Q299 4181 299 4171" class="line"></path><line x1="213" y1="4181" x2="223" y2="4181" class="line"></line><line x1="223" y1="4181" x2="289" y2="4181" class="line"></line><line x1="309" y1="4147" x2="847" y2="4147" class="line"></line><line x1="29" y1="4137" x2="29" y2="4157" class="line"></line><line x1="857" y1="4157" x2="857" y2="4137" class="line"></line><line x1="29" y1="4157" x2="29" y2="4203" class="line"></line><line x1="857" y1="4203" x2="857" y2="4157" class="line"></line><path d="M29 4203 Q29 4213 39 4213" class="line"></path><path d="M847 4213 Q857 4213 857 4203" class="line"></path><a xlink:href="#AGGREGATE_FUNCTION" xlink:title="AGGREGATE_FUNCTION"><rect x="51" y="4199" width="166" height="32"></rect><rect x="49" y="4197" width="166" height="32" class="nonterminal"></rect><text class="nonterminal" x="59" y="4217">AGGREGATE_FUNCTION</text></a><line x1="39" y1="4213" x2="49" y2="4213" class="line"></line><line x1="215" y1="4213" x2="225" y2="4213" class="line"></line><rect x="257" y="4199" width="50" height="32" rx="10"></rect><rect x="255" y="4197" width="50" height="32" class="terminal" rx="10"></rect><text class="terminal" x="265" y="4217">over</text><line x1="245" y1="4213" x2="255" y2="4213" class="line"></line><line x1="305" y1="4213" x2="315" y2="4213" class="line"></line><a xlink:href="#PARTITION_CLAUSE" xlink:title="PARTITION_CLAUSE"><rect x="327" y="4199" width="144" height="32"></rect><rect x="325" y="4197" width="144" height="32" class="nonterminal"></rect><text class="nonterminal" x="335" y="4217">PARTITION_CLAUSE</text></a><line x1="315" y1="4213" x2="325" y2="4213" class="line"></line><line x1="469" y1="4213" x2="479" y2="4213" class="line"></line><line x1="225" y1="4213" x2="245" y2="4213" class="line"></line><line x1="479" y1="4213" x2="499" y2="4213" class="line"></line><path d="M225 4213 Q235 4213 235 4223" class="line"></path><path d="M489 4223 Q489 4213 499 4213" class="line"></path><line x1="235" y1="4223" x2="235" y2="4237" class="line"></line><line x1="489" y1="4237" x2="489" y2="4223" class="line"></line><path d="M235 4237 Q235 4247 245 4247" class="line"></path><path d="M479 4247 Q489 4247 489 4237" class="line"></path><line x1="245" y1="4247" x2="255" y2="4247" class="line"></line><line x1="255" y1="4247" x2="479" y2="4247" class="line"></line><line x1="499" y1="4213" x2="847" y2="4213" class="line"></line><line x1="870" y1="17" x2="867" y2="17" class="line"></line><polygon points="877 17 885 13 885 21" class="filled"></polygon><polygon points="877 17 869 13 869 21" class="filled"></polygon></svg><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">referenced by:<xhtml:ul><xhtml:li><xhtml:a href="#AGGREGATE_FUNCTION" title="AGGREGATE_FUNCTION">AGGREGATE_FUNCTION</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#CONDITION" title="CONDITION">CONDITION</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#FIELD" title="FIELD">FIELD</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#GROUP_FIELD" title="GROUP_FIELD">GROUP_FIELD</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#INSERT" title="INSERT">INSERT</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#MERGE" title="MERGE">MERGE</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#PARTITION_CLAUSE" title="PARTITION_CLAUSE">PARTITION_CLAUSE</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#SELECT" title="SELECT">SELECT</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#SORT_FIELD" title="SORT_FIELD">SORT_FIELD</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#TABLE" title="TABLE">TABLE</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#UPDATE" title="UPDATE">UPDATE</xhtml:a></xhtml:li></xhtml:ul></xhtml:p><xhtml:br xmlns:xhtml="http://www.w3.org/1999/xhtml"></xhtml:br><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml" style="font-size: 14px; font-weight:bold"><xhtml:a name="AGGREGATE_FUNCTION">AGGREGATE_FUNCTION:</xhtml:a></xhtml:p><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="680" height="960"><defs><style type="text/css">
    -
    -    @namespace "http://www.w3.org/2000/svg";
    -    .line                 {fill: none; stroke: #332900;}
    -    filled                {fill: #332900; stroke: none;}
    -    text                  {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                          }
    -    text.terminal         {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                            font-weight: bold;
    -                          }
    -    rect, circle, polygon {fill: #332900; stroke: #332900;}
    -    rect.terminal         {fill: #FFCC00; stroke: #332900;}
    -    rect.nonterminal      {fill: #FFEB99; stroke: #332900;}
    -    rect.text             {fill: none; stroke: none;}    
    -    polygon.regexp        {fill: #FFF5CC; stroke: #332900;}
    -  </style></defs><polygon points="9 17 1 13 1 21" class="filled"></polygon><polygon points="17 17 9 13 9 21" class="filled"></polygon><line x1="17" y1="17" x2="19" y2="17" class="line"></line><rect x="51" y="3" width="56" height="32" rx="10"></rect><rect x="49" y="1" width="56" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="21">count</text><line x1="39" y1="17" x2="49" y2="17" class="line"></line><line x1="105" y1="17" x2="115" y2="17" class="line"></line><line x1="115" y1="17" x2="641" y2="17" class="line"></line><line x1="19" y1="17" x2="39" y2="17" class="line"></line><line x1="641" y1="17" x2="661" y2="17" class="line"></line><path d="M19 17 Q29 17 29 27" class="line"></path><path d="M651 27 Q651 17 661 17" class="line"></path><line x1="29" y1="27" x2="29" y2="51" class="line"></line><line x1="651" y1="51" x2="651" y2="27" class="line"></line><path d="M29 51 Q29 61 39 61" class="line"></path><path d="M641 61 Q651 61 651 51" class="line"></path><rect x="51" y="47" width="98" height="32" rx="10"></rect><rect x="49" y="45" width="98" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="65">rowNumber</text><line x1="39" y1="61" x2="49" y2="61" class="line"></line><line x1="147" y1="61" x2="157" y2="61" class="line"></line><line x1="157" y1="61" x2="641" y2="61" class="line"></line><line x1="29" y1="51" x2="29" y2="71" class="line"></line><line x1="651" y1="71" x2="651" y2="51" class="line"></line><line x1="29" y1="71" x2="29" y2="95" class="line"></line><line x1="651" y1="95" x2="651" y2="71" class="line"></line><path d="M29 95 Q29 105 39 105" class="line"></path><path d="M641 105 Q651 105 651 95" class="line"></path><rect x="51" y="91" width="50" height="32" rx="10"></rect><rect x="49" y="89" width="50" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="109">rank</text><line x1="39" y1="105" x2="49" y2="105" class="line"></line><line x1="99" y1="105" x2="109" y2="105" class="line"></line><line x1="109" y1="105" x2="641" y2="105" class="line"></line><line x1="29" y1="95" x2="29" y2="115" class="line"></line><line x1="651" y1="115" x2="651" y2="95" class="line"></line><line x1="29" y1="115" x2="29" y2="139" class="line"></line><line x1="651" y1="139" x2="651" y2="115" class="line"></line><path d="M29 139 Q29 149 39 149" class="line"></path><path d="M641 149 Q651 149 651 139" class="line"></path><rect x="51" y="135" width="92" height="32" rx="10"></rect><rect x="49" y="133" width="92" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="153">denseRank</text><line x1="39" y1="149" x2="49" y2="149" class="line"></line><line x1="141" y1="149" x2="151" y2="149" class="line"></line><line x1="151" y1="149" x2="641" y2="149" class="line"></line><line x1="29" y1="139" x2="29" y2="159" class="line"></line><line x1="651" y1="159" x2="651" y2="139" class="line"></line><line x1="29" y1="159" x2="29" y2="183" class="line"></line><line x1="651" y1="183" x2="651" y2="159" class="line"></line><path d="M29 183 Q29 193 39 193" class="line"></path><path d="M641 193 Q651 193 651 183" class="line"></path><rect x="51" y="179" width="102" height="32" rx="10"></rect><rect x="49" y="177" width="102" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="197">percentRank</text><line x1="39" y1="193" x2="49" y2="193" class="line"></line><line x1="151" y1="193" x2="161" y2="193" class="line"></line><line x1="161" y1="193" x2="641" y2="193" class="line"></line><line x1="29" y1="183" x2="29" y2="203" class="line"></line><line x1="651" y1="203" x2="651" y2="183" class="line"></line><line x1="29" y1="203" x2="29" y2="227" class="line"></line><line x1="651" y1="227" x2="651" y2="203" class="line"></line><path d="M29 227 Q29 237 39 237" class="line"></path><path d="M641 237 Q651 237 651 227" class="line"></path><rect x="51" y="223" width="80" height="32" rx="10"></rect><rect x="49" y="221" width="80" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="241">cumeDist</text><line x1="39" y1="237" x2="49" y2="237" class="line"></line><line x1="129" y1="237" x2="139" y2="237" class="line"></line><line x1="139" y1="237" x2="641" y2="237" class="line"></line><line x1="29" y1="227" x2="29" y2="247" class="line"></line><line x1="651" y1="247" x2="651" y2="227" class="line"></line><line x1="29" y1="247" x2="29" y2="271" class="line"></line><line x1="651" y1="271" x2="651" y2="247" class="line"></line><path d="M29 271 Q29 281 39 281" class="line"></path><path d="M641 281 Q651 281 651 271" class="line"></path><rect x="71" y="267" width="56" height="32" rx="10"></rect><rect x="69" y="265" width="56" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="285">count</text><line x1="59" y1="281" x2="69" y2="281" class="line"></line><line x1="125" y1="281" x2="135" y2="281" class="line"></line><line x1="135" y1="281" x2="185" y2="281" class="line"></line><line x1="39" y1="281" x2="59" y2="281" class="line"></line><line x1="185" y1="281" x2="205" y2="281" class="line"></line><path d="M39 281 Q49 281 49 291" class="line"></path><path d="M195 291 Q195 281 205 281" class="line"></path><line x1="49" y1="291" x2="49" y2="315" class="line"></line><line x1="195" y1="315" x2="195" y2="291" class="line"></line><path d="M49 315 Q49 325 59 325" class="line"></path><path d="M185 325 Q195 325 195 315" class="line"></path><rect x="71" y="311" width="106" height="32" rx="10"></rect><rect x="69" y="309" width="106" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="329">countDistinct</text><line x1="59" y1="325" x2="69" y2="325" class="line"></line><line x1="175" y1="325" x2="185" y2="325" class="line"></line><line x1="49" y1="315" x2="49" y2="335" class="line"></line><line x1="195" y1="335" x2="195" y2="315" class="line"></line><line x1="49" y1="335" x2="49" y2="359" class="line"></line><line x1="195" y1="359" x2="195" y2="335" class="line"></line><path d="M49 359 Q49 369 59 369" class="line"></path><path d="M185 369 Q195 369 195 359" class="line"></path><rect x="71" y="355" width="48" height="32" rx="10"></rect><rect x="69" y="353" width="48" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="373">max</text><line x1="59" y1="369" x2="69" y2="369" class="line"></line><line x1="117" y1="369" x2="127" y2="369" class="line"></line><line x1="127" y1="369" x2="185" y2="369" class="line"></line><line x1="49" y1="359" x2="49" y2="379" class="line"></line><line x1="195" y1="379" x2="195" y2="359" class="line"></line><line x1="49" y1="379" x2="49" y2="403" class="line"></line><line x1="195" y1="403" x2="195" y2="379" class="line"></line><path d="M49 403 Q49 413 59 413" class="line"></path><path d="M185 413 Q195 413 195 403" class="line"></path><rect x="71" y="399" width="44" height="32" rx="10"></rect><rect x="69" y="397" width="44" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="417">min</text><line x1="59" y1="413" x2="69" y2="413" class="line"></line><line x1="113" y1="413" x2="123" y2="413" class="line"></line><line x1="123" y1="413" x2="185" y2="413" class="line"></line><line x1="49" y1="403" x2="49" y2="423" class="line"></line><line x1="195" y1="423" x2="195" y2="403" class="line"></line><line x1="49" y1="423" x2="49" y2="447" class="line"></line><line x1="195" y1="447" x2="195" y2="423" class="line"></line><path d="M49 447 Q49 457 59 457" class="line"></path><path d="M185 457 Q195 457 195 447" class="line"></path><rect x="71" y="443" width="46" height="32" rx="10"></rect><rect x="69" y="441" width="46" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="461">sum</text><line x1="59" y1="457" x2="69" y2="457" class="line"></line><line x1="115" y1="457" x2="125" y2="457" class="line"></line><line x1="125" y1="457" x2="185" y2="457" class="line"></line><line x1="49" y1="447" x2="49" y2="467" class="line"></line><line x1="195" y1="467" x2="195" y2="447" class="line"></line><line x1="49" y1="467" x2="49" y2="491" class="line"></line><line x1="195" y1="491" x2="195" y2="467" class="line"></line><path d="M49 491 Q49 501 59 501" class="line"></path><path d="M185 501 Q195 501 195 491" class="line"></path><rect x="71" y="487" width="44" height="32" rx="10"></rect><rect x="69" y="485" width="44" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="505">avg</text><line x1="59" y1="501" x2="69" y2="501" class="line"></line><line x1="113" y1="501" x2="123" y2="501" class="line"></line><line x1="123" y1="501" x2="185" y2="501" class="line"></line><line x1="49" y1="491" x2="49" y2="511" class="line"></line><line x1="195" y1="511" x2="195" y2="491" class="line"></line><line x1="49" y1="511" x2="49" y2="535" class="line"></line><line x1="195" y1="535" x2="195" y2="511" class="line"></line><path d="M49 535 Q49 545 59 545" class="line"></path><path d="M185 545 Q195 545 195 535" class="line"></path><rect x="71" y="531" width="68" height="32" rx="10"></rect><rect x="69" y="529" width="68" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="549">median</text><line x1="59" y1="545" x2="69" y2="545" class="line"></line><line x1="137" y1="545" x2="147" y2="545" class="line"></line><line x1="147" y1="545" x2="185" y2="545" class="line"></line><line x1="49" y1="535" x2="49" y2="555" class="line"></line><line x1="195" y1="555" x2="195" y2="535" class="line"></line><line x1="49" y1="555" x2="49" y2="579" class="line"></line><line x1="195" y1="579" x2="195" y2="555" class="line"></line><path d="M49 579 Q49 589 59 589" class="line"></path><path d="M185 589 Q195 589 195 579" class="line"></path><rect x="71" y="575" width="88" height="32" rx="10"></rect><rect x="69" y="573" width="88" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="593">stddevPop</text><line x1="59" y1="589" x2="69" y2="589" class="line"></line><line x1="157" y1="589" x2="167" y2="589" class="line"></line><line x1="167" y1="589" x2="185" y2="589" class="line"></line><line x1="49" y1="579" x2="49" y2="599" class="line"></line><line x1="195" y1="599" x2="195" y2="579" class="line"></line><line x1="49" y1="599" x2="49" y2="623" class="line"></line><line x1="195" y1="623" x2="195" y2="599" class="line"></line><path d="M49 623 Q49 633 59 633" class="line"></path><path d="M185 633 Q195 633 195 623" class="line"></path><rect x="71" y="619" width="100" height="32" rx="10"></rect><rect x="69" y="617" width="100" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="637">stddevSamp</text><line x1="59" y1="633" x2="69" y2="633" class="line"></line><line x1="169" y1="633" x2="179" y2="633" class="line"></line><line x1="179" y1="633" x2="185" y2="633" class="line"></line><line x1="49" y1="623" x2="49" y2="643" class="line"></line><line x1="195" y1="643" x2="195" y2="623" class="line"></line><line x1="49" y1="643" x2="49" y2="667" class="line"></line><line x1="195" y1="667" x2="195" y2="643" class="line"></line><path d="M49 667 Q49 677 59 677" class="line"></path><path d="M185 677 Q195 677 195 667" class="line"></path><rect x="71" y="663" width="66" height="32" rx="10"></rect><rect x="69" y="661" width="66" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="681">varPop</text><line x1="59" y1="677" x2="69" y2="677" class="line"></line><line x1="135" y1="677" x2="145" y2="677" class="line"></line><line x1="145" y1="677" x2="185" y2="677" class="line"></line><line x1="49" y1="667" x2="49" y2="687" class="line"></line><line x1="195" y1="687" x2="195" y2="667" class="line"></line><line x1="49" y1="687" x2="49" y2="711" class="line"></line><line x1="195" y1="711" x2="195" y2="687" class="line"></line><path d="M49 711 Q49 721 59 721" class="line"></path><path d="M185 721 Q195 721 195 711" class="line"></path><rect x="71" y="707" width="78" height="32" rx="10"></rect><rect x="69" y="705" width="78" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="725">varSamp</text><line x1="59" y1="721" x2="69" y2="721" class="line"></line><line x1="147" y1="721" x2="157" y2="721" class="line"></line><line x1="157" y1="721" x2="185" y2="721" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="217" y="267" width="56" height="32"></rect><rect x="215" y="265" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="225" y="285">FIELD</text></a><line x1="205" y1="281" x2="215" y2="281" class="line"></line><line x1="271" y1="281" x2="281" y2="281" class="line"></line><line x1="281" y1="281" x2="641" y2="281" class="line"></line><line x1="29" y1="271" x2="29" y2="291" class="line"></line><line x1="651" y1="291" x2="651" y2="271" class="line"></line><line x1="29" y1="291" x2="29" y2="755" class="line"></line><line x1="651" y1="755" x2="651" y2="291" class="line"></line><path d="M29 755 Q29 765 39 765" class="line"></path><path d="M641 765 Q651 765 651 755" class="line"></path><rect x="51" y="751" width="48" height="32" rx="10"></rect><rect x="49" y="749" width="48" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="769">ntile</text><line x1="39" y1="765" x2="49" y2="765" class="line"></line><line x1="97" y1="765" x2="107" y2="765" class="line"></line><a xlink:href="#INT" xlink:title="INT"><rect x="119" y="751" width="40" height="32"></rect><rect x="117" y="749" width="40" height="32" class="nonterminal"></rect><text class="nonterminal" x="127" y="769">INT</text></a><line x1="107" y1="765" x2="117" y2="765" class="line"></line><line x1="157" y1="765" x2="167" y2="765" class="line"></line><line x1="167" y1="765" x2="641" y2="765" class="line"></line><line x1="29" y1="755" x2="29" y2="775" class="line"></line><line x1="651" y1="775" x2="651" y2="755" class="line"></line><line x1="29" y1="775" x2="29" y2="799" class="line"></line><line x1="651" y1="799" x2="651" y2="775" class="line"></line><path d="M29 799 Q29 809 39 809" class="line"></path><path d="M641 809 Q651 809 651 799" class="line"></path><rect x="91" y="795" width="84" height="32" rx="10"></rect><rect x="89" y="793" width="84" height="32" class="terminal" rx="10"></rect><text class="terminal" x="99" y="813">firstValue</text><line x1="79" y1="809" x2="89" y2="809" class="line"></line><line x1="173" y1="809" x2="183" y2="809" class="line"></line><line x1="59" y1="809" x2="79" y2="809" class="line"></line><line x1="183" y1="809" x2="203" y2="809" class="line"></line><path d="M59 809 Q69 809 69 819" class="line"></path><path d="M193 819 Q193 809 203 809" class="line"></path><line x1="69" y1="819" x2="69" y2="843" class="line"></line><line x1="193" y1="843" x2="193" y2="819" class="line"></line><path d="M69 843 Q69 853 79 853" class="line"></path><path d="M183 853 Q193 853 193 843" class="line"></path><rect x="91" y="839" width="80" height="32" rx="10"></rect><rect x="89" y="837" width="80" height="32" class="terminal" rx="10"></rect><text class="terminal" x="99" y="857">lastValue</text><line x1="79" y1="853" x2="89" y2="853" class="line"></line><line x1="169" y1="853" x2="179" y2="853" class="line"></line><line x1="179" y1="853" x2="183" y2="853" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="215" y="795" width="56" height="32"></rect><rect x="213" y="793" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="223" y="813">FIELD</text></a><line x1="203" y1="809" x2="213" y2="809" class="line"></line><line x1="269" y1="809" x2="279" y2="809" class="line"></line><line x1="279" y1="809" x2="459" y2="809" class="line"></line><line x1="39" y1="809" x2="59" y2="809" class="line"></line><line x1="459" y1="809" x2="479" y2="809" class="line"></line><path d="M39 809 Q49 809 49 819" class="line"></path><path d="M469 819 Q469 809 479 809" class="line"></path><line x1="49" y1="819" x2="49" y2="887" class="line"></line><line x1="469" y1="887" x2="469" y2="819" class="line"></line><path d="M49 887 Q49 897 59 897" class="line"></path><path d="M459 897 Q469 897 469 887" class="line"></path><rect x="91" y="883" width="48" height="32" rx="10"></rect><rect x="89" y="881" width="48" height="32" class="terminal" rx="10"></rect><text class="terminal" x="99" y="901">lead</text><line x1="79" y1="897" x2="89" y2="897" class="line"></line><line x1="137" y1="897" x2="147" y2="897" class="line"></line><line x1="59" y1="897" x2="79" y2="897" class="line"></line><line x1="147" y1="897" x2="167" y2="897" class="line"></line><path d="M59 897 Q69 897 69 907" class="line"></path><path d="M157 907 Q157 897 167 897" class="line"></path><line x1="69" y1="907" x2="69" y2="931" class="line"></line><line x1="157" y1="931" x2="157" y2="907" class="line"></line><path d="M69 931 Q69 941 79 941" class="line"></path><path d="M147 941 Q157 941 157 931" class="line"></path><rect x="91" y="927" width="40" height="32" rx="10"></rect><rect x="89" y="925" width="40" height="32" class="terminal" rx="10"></rect><text class="terminal" x="99" y="945">lag</text><line x1="79" y1="941" x2="89" y2="941" class="line"></line><line x1="129" y1="941" x2="139" y2="941" class="line"></line><line x1="139" y1="941" x2="147" y2="941" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="179" y="883" width="56" height="32"></rect><rect x="177" y="881" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="187" y="901">FIELD</text></a><line x1="167" y1="897" x2="177" y2="897" class="line"></line><line x1="233" y1="897" x2="243" y2="897" class="line"></line><a xlink:href="#INT" xlink:title="INT"><rect x="275" y="883" width="40" height="32"></rect><rect x="273" y="881" width="40" height="32" class="nonterminal"></rect><text class="nonterminal" x="283" y="901">INT</text></a><line x1="263" y1="897" x2="273" y2="897" class="line"></line><line x1="313" y1="897" x2="323" y2="897" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="355" y="883" width="56" height="32"></rect><rect x="353" y="881" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="363" y="901">FIELD</text></a><line x1="343" y1="897" x2="353" y2="897" class="line"></line><line x1="409" y1="897" x2="419" y2="897" class="line"></line><line x1="323" y1="897" x2="343" y2="897" class="line"></line><line x1="419" y1="897" x2="439" y2="897" class="line"></line><path d="M323 897 Q333 897 333 907" class="line"></path><path d="M429 907 Q429 897 439 897" class="line"></path><line x1="333" y1="907" x2="333" y2="921" class="line"></line><line x1="429" y1="921" x2="429" y2="907" class="line"></line><path d="M333 921 Q333 931 343 931" class="line"></path><path d="M419 931 Q429 931 429 921" class="line"></path><line x1="343" y1="931" x2="353" y2="931" class="line"></line><line x1="353" y1="931" x2="419" y2="931" class="line"></line><line x1="243" y1="897" x2="263" y2="897" class="line"></line><line x1="439" y1="897" x2="459" y2="897" class="line"></line><path d="M243 897 Q253 897 253 907" class="line"></path><path d="M449 907 Q449 897 459 897" class="line"></path><line x1="253" y1="907" x2="253" y2="937" class="line"></line><line x1="449" y1="937" x2="449" y2="907" class="line"></line><path d="M253 937 Q253 947 263 947" class="line"></path><path d="M439 947 Q449 947 449 937" class="line"></path><line x1="263" y1="947" x2="273" y2="947" class="line"></line><line x1="273" y1="947" x2="439" y2="947" class="line"></line><rect x="511" y="795" width="94" height="32" rx="10"></rect><rect x="509" y="793" width="94" height="32" class="terminal" rx="10"></rect><text class="terminal" x="519" y="813">ignoreNulls</text><line x1="499" y1="809" x2="509" y2="809" class="line"></line><line x1="603" y1="809" x2="613" y2="809" class="line"></line><line x1="613" y1="809" x2="621" y2="809" class="line"></line><line x1="479" y1="809" x2="499" y2="809" class="line"></line><line x1="621" y1="809" x2="641" y2="809" class="line"></line><path d="M479 809 Q489 809 489 819" class="line"></path><path d="M631 819 Q631 809 641 809" class="line"></path><line x1="489" y1="819" x2="489" y2="843" class="line"></line><line x1="631" y1="843" x2="631" y2="819" class="line"></line><path d="M489 843 Q489 853 499 853" class="line"></path><path d="M621 853 Q631 853 631 843" class="line"></path><rect x="511" y="839" width="102" height="32" rx="10"></rect><rect x="509" y="837" width="102" height="32" class="terminal" rx="10"></rect><text class="terminal" x="519" y="857">respectNulls</text><line x1="499" y1="853" x2="509" y2="853" class="line"></line><line x1="611" y1="853" x2="621" y2="853" class="line"></line><line x1="489" y1="843" x2="489" y2="863" class="line"></line><line x1="631" y1="863" x2="631" y2="843" class="line"></line><line x1="489" y1="863" x2="489" y2="877" class="line"></line><line x1="631" y1="877" x2="631" y2="863" class="line"></line><path d="M489 877 Q489 887 499 887" class="line"></path><path d="M621 887 Q631 887 631 877" class="line"></path><line x1="499" y1="887" x2="509" y2="887" class="line"></line><line x1="509" y1="887" x2="621" y2="887" class="line"></line><line x1="664" y1="17" x2="661" y2="17" class="line"></line><polygon points="671 17 679 13 679 21" class="filled"></polygon><polygon points="671 17 663 13 663 21" class="filled"></polygon></svg><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">referenced by:<xhtml:ul><xhtml:li><xhtml:a href="#FIELD" title="FIELD">FIELD</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#TABLE" title="TABLE">TABLE</xhtml:a></xhtml:li></xhtml:ul></xhtml:p><xhtml:br xmlns:xhtml="http://www.w3.org/1999/xhtml"></xhtml:br><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml" style="font-size: 14px; font-weight:bold"><xhtml:a name="PARTITION_CLAUSE">PARTITION_CLAUSE:</xhtml:a></xhtml:p><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="954" height="622"><defs><style type="text/css">
    -
    -    @namespace "http://www.w3.org/2000/svg";
    -    .line                 {fill: none; stroke: #332900;}
    -    filled                {fill: #332900; stroke: none;}
    -    text                  {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                          }
    -    text.terminal         {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                            font-weight: bold;
    -                          }
    -    rect, circle, polygon {fill: #332900; stroke: #332900;}
    -    rect.terminal         {fill: #FFCC00; stroke: #332900;}
    -    rect.nonterminal      {fill: #FFEB99; stroke: #332900;}
    -    rect.text             {fill: none; stroke: none;}    
    -    polygon.regexp        {fill: #FFF5CC; stroke: #332900;}
    -  </style></defs><polygon points="11 33 3 29 3 37" class="filled"></polygon><polygon points="19 33 11 29 11 37" class="filled"></polygon><line x1="19" y1="33" x2="21" y2="33" class="line"></line><rect x="53" y="19" width="92" height="32" rx="10"></rect><rect x="51" y="17" width="92" height="32" class="terminal" rx="10"></rect><text class="terminal" x="61" y="37">partitionBy</text><line x1="41" y1="33" x2="51" y2="33" class="line"></line><line x1="143" y1="33" x2="153" y2="33" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="185" y="19" width="56" height="32"></rect><rect x="183" y="17" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="193" y="37">FIELD</text></a><line x1="173" y1="33" x2="183" y2="33" class="line"></line><line x1="239" y1="33" x2="249" y2="33" class="line"></line><path d="M153 33 L173 33 M172 33 Q163 33 163 23 L163 11 Q163 1 173 1" class="line"></path><path d="M249 33 L269 33 M249 33 Q259 33 259 23 L259 11 Q259 1 249 1" class="line"></path><line x1="173" y1="1" x2="183" y2="1" class="line"></line><line x1="183" y1="1" x2="249" y2="1" class="line"></line><line x1="21" y1="33" x2="41" y2="33" class="line"></line><line x1="269" y1="33" x2="289" y2="33" class="line"></line><path d="M21 33 Q31 33 31 43" class="line"></path><path d="M279 43 Q279 33 289 33" class="line"></path><line x1="31" y1="43" x2="31" y2="67" class="line"></line><line x1="279" y1="67" x2="279" y2="43" class="line"></line><path d="M31 67 Q31 77 41 77" class="line"></path><path d="M269 77 Q279 77 279 67" class="line"></path><rect x="53" y="63" width="120" height="32" rx="10"></rect><rect x="51" y="61" width="120" height="32" class="terminal" rx="10"></rect><text class="terminal" x="61" y="81">partitionByOne</text><line x1="41" y1="77" x2="51" y2="77" class="line"></line><line x1="171" y1="77" x2="181" y2="77" class="line"></line><line x1="181" y1="77" x2="269" y2="77" class="line"></line><line x1="31" y1="67" x2="31" y2="87" class="line"></line><line x1="279" y1="87" x2="279" y2="67" class="line"></line><line x1="31" y1="87" x2="31" y2="101" class="line"></line><line x1="279" y1="101" x2="279" y2="87" class="line"></line><path d="M31 101 Q31 111 41 111" class="line"></path><path d="M269 111 Q279 111 279 101" class="line"></path><line x1="41" y1="111" x2="51" y2="111" class="line"></line><line x1="51" y1="111" x2="269" y2="111" class="line"></line><path class="line" d="M291 33 L293 33 M295 33 L297 33 M299 33 L301 33 M1 175 L3 175 M5 175 L7 175 M9 175 L11 175"></path><rect x="45" y="161" width="72" height="32" rx="10"></rect><rect x="43" y="159" width="72" height="32" class="terminal" rx="10"></rect><text class="terminal" x="53" y="179">orderBy</text><line x1="33" y1="175" x2="43" y2="175" class="line"></line><line x1="115" y1="175" x2="125" y2="175" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="177" y="161" width="56" height="32"></rect><rect x="175" y="159" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="185" y="179">FIELD</text></a><line x1="165" y1="175" x2="175" y2="175" class="line"></line><line x1="231" y1="175" x2="241" y2="175" class="line"></line><path d="M145 175 L165 175 M164 175 Q155 175 155 165 L155 153 Q155 143 165 143" class="line"></path><path d="M241 175 L261 175 M241 175 Q251 175 251 165 L251 153 Q251 143 241 143" class="line"></path><line x1="165" y1="143" x2="175" y2="143" class="line"></line><line x1="175" y1="143" x2="241" y2="143" class="line"></line><line x1="261" y1="175" x2="301" y2="175" class="line"></line><line x1="125" y1="175" x2="145" y2="175" class="line"></line><line x1="301" y1="175" x2="321" y2="175" class="line"></line><path d="M125 175 Q135 175 135 185" class="line"></path><path d="M311 185 Q311 175 321 175" class="line"></path><line x1="135" y1="185" x2="135" y2="231" class="line"></line><line x1="311" y1="231" x2="311" y2="185" class="line"></line><path d="M135 231 Q135 241 145 241" class="line"></path><path d="M301 241 Q311 241 311 231" class="line"></path><a xlink:href="#SORT_FIELD" xlink:title="SORT_FIELD"><rect x="177" y="227" width="96" height="32"></rect><rect x="175" y="225" width="96" height="32" class="nonterminal"></rect><text class="nonterminal" x="185" y="245">SORT_FIELD</text></a><line x1="165" y1="241" x2="175" y2="241" class="line"></line><line x1="271" y1="241" x2="281" y2="241" class="line"></line><path d="M145 241 L165 241 M164 241 Q155 241 155 231 L155 219 Q155 209 165 209" class="line"></path><path d="M281 241 L301 241 M281 241 Q291 241 291 231 L291 219 Q291 209 281 209" class="line"></path><line x1="165" y1="209" x2="175" y2="209" class="line"></line><line x1="175" y1="209" x2="281" y2="209" class="line"></line><rect x="353" y="161" width="192" height="32" rx="10"></rect><rect x="351" y="159" width="192" height="32" class="terminal" rx="10"></rect><text class="terminal" x="361" y="179">rowsUnboundedPreceding</text><line x1="341" y1="175" x2="351" y2="175" class="line"></line><line x1="543" y1="175" x2="553" y2="175" class="line"></line><line x1="553" y1="175" x2="895" y2="175" class="line"></line><line x1="321" y1="175" x2="341" y2="175" class="line"></line><line x1="895" y1="175" x2="915" y2="175" class="line"></line><path d="M321 175 Q331 175 331 185" class="line"></path><path d="M905 185 Q905 175 915 175" class="line"></path><line x1="331" y1="185" x2="331" y2="209" class="line"></line><line x1="905" y1="209" x2="905" y2="185" class="line"></line><path d="M331 209 Q331 219 341 219" class="line"></path><path d="M895 219 Q905 219 905 209" class="line"></path><rect x="353" y="205" width="118" height="32" rx="10"></rect><rect x="351" y="203" width="118" height="32" class="terminal" rx="10"></rect><text class="terminal" x="361" y="223">rowsPreceding</text><line x1="341" y1="219" x2="351" y2="219" class="line"></line><line x1="469" y1="219" x2="479" y2="219" class="line"></line><a xlink:href="#INT" xlink:title="INT"><rect x="491" y="205" width="40" height="32"></rect><rect x="489" y="203" width="40" height="32" class="nonterminal"></rect><text class="nonterminal" x="499" y="223">INT</text></a><line x1="479" y1="219" x2="489" y2="219" class="line"></line><line x1="529" y1="219" x2="539" y2="219" class="line"></line><line x1="539" y1="219" x2="895" y2="219" class="line"></line><line x1="331" y1="209" x2="331" y2="229" class="line"></line><line x1="905" y1="229" x2="905" y2="209" class="line"></line><line x1="331" y1="229" x2="331" y2="253" class="line"></line><line x1="905" y1="253" x2="905" y2="229" class="line"></line><path d="M331 253 Q331 263 341 263" class="line"></path><path d="M895 263 Q905 263 905 253" class="line"></path><rect x="353" y="249" width="132" height="32" rx="10"></rect><rect x="351" y="247" width="132" height="32" class="terminal" rx="10"></rect><text class="terminal" x="361" y="267">rowsCurrentRow</text><line x1="341" y1="263" x2="351" y2="263" class="line"></line><line x1="483" y1="263" x2="493" y2="263" class="line"></line><line x1="493" y1="263" x2="895" y2="263" class="line"></line><line x1="331" y1="253" x2="331" y2="273" class="line"></line><line x1="905" y1="273" x2="905" y2="253" class="line"></line><line x1="331" y1="273" x2="331" y2="297" class="line"></line><line x1="905" y1="297" x2="905" y2="273" class="line"></line><path d="M331 297 Q331 307 341 307" class="line"></path><path d="M895 307 Q905 307 905 297" class="line"></path><rect x="353" y="293" width="190" height="32" rx="10"></rect><rect x="351" y="291" width="190" height="32" class="terminal" rx="10"></rect><text class="terminal" x="361" y="311">rowsUnboundedFollowing</text><line x1="341" y1="307" x2="351" y2="307" class="line"></line><line x1="541" y1="307" x2="551" y2="307" class="line"></line><line x1="551" y1="307" x2="895" y2="307" class="line"></line><line x1="331" y1="297" x2="331" y2="317" class="line"></line><line x1="905" y1="317" x2="905" y2="297" class="line"></line><line x1="331" y1="317" x2="331" y2="341" class="line"></line><line x1="905" y1="341" x2="905" y2="317" class="line"></line><path d="M331 341 Q331 351 341 351" class="line"></path><path d="M895 351 Q905 351 905 341" class="line"></path><rect x="353" y="337" width="116" height="32" rx="10"></rect><rect x="351" y="335" width="116" height="32" class="terminal" rx="10"></rect><text class="terminal" x="361" y="355">rowsFollowing</text><line x1="341" y1="351" x2="351" y2="351" class="line"></line><line x1="467" y1="351" x2="477" y2="351" class="line"></line><a xlink:href="#INT" xlink:title="INT"><rect x="489" y="337" width="40" height="32"></rect><rect x="487" y="335" width="40" height="32" class="nonterminal"></rect><text class="nonterminal" x="497" y="355">INT</text></a><line x1="477" y1="351" x2="487" y2="351" class="line"></line><line x1="527" y1="351" x2="537" y2="351" class="line"></line><line x1="537" y1="351" x2="895" y2="351" class="line"></line><line x1="331" y1="341" x2="331" y2="361" class="line"></line><line x1="905" y1="361" x2="905" y2="341" class="line"></line><line x1="331" y1="361" x2="331" y2="385" class="line"></line><line x1="905" y1="385" x2="905" y2="361" class="line"></line><path d="M331 385 Q331 395 341 395" class="line"></path><path d="M895 395 Q905 395 905 385" class="line"></path><rect x="373" y="381" width="250" height="32" rx="10"></rect><rect x="371" y="379" width="250" height="32" class="terminal" rx="10"></rect><text class="terminal" x="381" y="399">rowsBetweenUnboundedPreceding</text><line x1="361" y1="395" x2="371" y2="395" class="line"></line><line x1="621" y1="395" x2="631" y2="395" class="line"></line><line x1="341" y1="395" x2="361" y2="395" class="line"></line><line x1="631" y1="395" x2="651" y2="395" class="line"></line><path d="M341 395 Q351 395 351 405" class="line"></path><path d="M641 405 Q641 395 651 395" class="line"></path><line x1="351" y1="405" x2="351" y2="429" class="line"></line><line x1="641" y1="429" x2="641" y2="405" class="line"></line><path d="M351 429 Q351 439 361 439" class="line"></path><path d="M631 439 Q641 439 641 429" class="line"></path><rect x="373" y="425" width="176" height="32" rx="10"></rect><rect x="371" y="423" width="176" height="32" class="terminal" rx="10"></rect><text class="terminal" x="381" y="443">rowsBetweenPreceding</text><line x1="361" y1="439" x2="371" y2="439" class="line"></line><line x1="547" y1="439" x2="557" y2="439" class="line"></line><a xlink:href="#INT" xlink:title="INT"><rect x="569" y="425" width="40" height="32"></rect><rect x="567" y="423" width="40" height="32" class="nonterminal"></rect><text class="nonterminal" x="577" y="443">INT</text></a><line x1="557" y1="439" x2="567" y2="439" class="line"></line><line x1="607" y1="439" x2="617" y2="439" class="line"></line><line x1="617" y1="439" x2="631" y2="439" class="line"></line><line x1="351" y1="429" x2="351" y2="449" class="line"></line><line x1="641" y1="449" x2="641" y2="429" class="line"></line><line x1="351" y1="449" x2="351" y2="473" class="line"></line><line x1="641" y1="473" x2="641" y2="449" class="line"></line><path d="M351 473 Q351 483 361 483" class="line"></path><path d="M631 483 Q641 483 641 473" class="line"></path><rect x="373" y="469" width="190" height="32" rx="10"></rect><rect x="371" y="467" width="190" height="32" class="terminal" rx="10"></rect><text class="terminal" x="381" y="487">rowsBetweenCurrentRow</text><line x1="361" y1="483" x2="371" y2="483" class="line"></line><line x1="561" y1="483" x2="571" y2="483" class="line"></line><line x1="571" y1="483" x2="631" y2="483" class="line"></line><line x1="351" y1="473" x2="351" y2="493" class="line"></line><line x1="641" y1="493" x2="641" y2="473" class="line"></line><line x1="351" y1="493" x2="351" y2="517" class="line"></line><line x1="641" y1="517" x2="641" y2="493" class="line"></line><path d="M351 517 Q351 527 361 527" class="line"></path><path d="M631 527 Q641 527 641 517" class="line"></path><rect x="373" y="513" width="248" height="32" rx="10"></rect><rect x="371" y="511" width="248" height="32" class="terminal" rx="10"></rect><text class="terminal" x="381" y="531">rowsBetweenUnboundedFollowing</text><line x1="361" y1="527" x2="371" y2="527" class="line"></line><line x1="619" y1="527" x2="629" y2="527" class="line"></line><line x1="629" y1="527" x2="631" y2="527" class="line"></line><line x1="351" y1="517" x2="351" y2="537" class="line"></line><line x1="641" y1="537" x2="641" y2="517" class="line"></line><line x1="351" y1="537" x2="351" y2="561" class="line"></line><line x1="641" y1="561" x2="641" y2="537" class="line"></line><path d="M351 561 Q351 571 361 571" class="line"></path><path d="M631 571 Q641 571 641 561" class="line"></path><rect x="373" y="557" width="174" height="32" rx="10"></rect><rect x="371" y="555" width="174" height="32" class="terminal" rx="10"></rect><text class="terminal" x="381" y="575">rowsBetweenFollowing</text><line x1="361" y1="571" x2="371" y2="571" class="line"></line><line x1="545" y1="571" x2="555" y2="571" class="line"></line><a xlink:href="#INT" xlink:title="INT"><rect x="567" y="557" width="40" height="32"></rect><rect x="565" y="555" width="40" height="32" class="nonterminal"></rect><text class="nonterminal" x="575" y="575">INT</text></a><line x1="555" y1="571" x2="565" y2="571" class="line"></line><line x1="605" y1="571" x2="615" y2="571" class="line"></line><line x1="615" y1="571" x2="631" y2="571" class="line"></line><rect x="683" y="381" width="184" height="32" rx="10"></rect><rect x="681" y="379" width="184" height="32" class="terminal" rx="10"></rect><text class="terminal" x="691" y="399">andUnboundedPreceding</text><line x1="671" y1="395" x2="681" y2="395" class="line"></line><line x1="865" y1="395" x2="875" y2="395" class="line"></line><line x1="651" y1="395" x2="671" y2="395" class="line"></line><line x1="875" y1="395" x2="895" y2="395" class="line"></line><path d="M651 395 Q661 395 661 405" class="line"></path><path d="M885 405 Q885 395 895 395" class="line"></path><line x1="661" y1="405" x2="661" y2="429" class="line"></line><line x1="885" y1="429" x2="885" y2="405" class="line"></line><path d="M661 429 Q661 439 671 439" class="line"></path><path d="M875 439 Q885 439 885 429" class="line"></path><rect x="683" y="425" width="110" height="32" rx="10"></rect><rect x="681" y="423" width="110" height="32" class="terminal" rx="10"></rect><text class="terminal" x="691" y="443">andPreceding</text><line x1="671" y1="439" x2="681" y2="439" class="line"></line><line x1="791" y1="439" x2="801" y2="439" class="line"></line><a xlink:href="#INT" xlink:title="INT"><rect x="813" y="425" width="40" height="32"></rect><rect x="811" y="423" width="40" height="32" class="nonterminal"></rect><text class="nonterminal" x="821" y="443">INT</text></a><line x1="801" y1="439" x2="811" y2="439" class="line"></line><line x1="851" y1="439" x2="861" y2="439" class="line"></line><line x1="861" y1="439" x2="875" y2="439" class="line"></line><line x1="661" y1="429" x2="661" y2="449" class="line"></line><line x1="885" y1="449" x2="885" y2="429" class="line"></line><line x1="661" y1="449" x2="661" y2="473" class="line"></line><line x1="885" y1="473" x2="885" y2="449" class="line"></line><path d="M661 473 Q661 483 671 483" class="line"></path><path d="M875 483 Q885 483 885 473" class="line"></path><rect x="683" y="469" width="122" height="32" rx="10"></rect><rect x="681" y="467" width="122" height="32" class="terminal" rx="10"></rect><text class="terminal" x="691" y="487">andCurrentRow</text><line x1="671" y1="483" x2="681" y2="483" class="line"></line><line x1="803" y1="483" x2="813" y2="483" class="line"></line><line x1="813" y1="483" x2="875" y2="483" class="line"></line><line x1="661" y1="473" x2="661" y2="493" class="line"></line><line x1="885" y1="493" x2="885" y2="473" class="line"></line><line x1="661" y1="493" x2="661" y2="517" class="line"></line><line x1="885" y1="517" x2="885" y2="493" class="line"></line><path d="M661 517 Q661 527 671 527" class="line"></path><path d="M875 527 Q885 527 885 517" class="line"></path><rect x="683" y="513" width="182" height="32" rx="10"></rect><rect x="681" y="511" width="182" height="32" class="terminal" rx="10"></rect><text class="terminal" x="691" y="531">andUnboundedFollowing</text><line x1="671" y1="527" x2="681" y2="527" class="line"></line><line x1="863" y1="527" x2="873" y2="527" class="line"></line><line x1="873" y1="527" x2="875" y2="527" class="line"></line><line x1="661" y1="517" x2="661" y2="537" class="line"></line><line x1="885" y1="537" x2="885" y2="517" class="line"></line><line x1="661" y1="537" x2="661" y2="561" class="line"></line><line x1="885" y1="561" x2="885" y2="537" class="line"></line><path d="M661 561 Q661 571 671 571" class="line"></path><path d="M875 571 Q885 571 885 561" class="line"></path><rect x="683" y="557" width="108" height="32" rx="10"></rect><rect x="681" y="555" width="108" height="32" class="terminal" rx="10"></rect><text class="terminal" x="691" y="575">andFollowing</text><line x1="671" y1="571" x2="681" y2="571" class="line"></line><line x1="789" y1="571" x2="799" y2="571" class="line"></line><a xlink:href="#INT" xlink:title="INT"><rect x="811" y="557" width="40" height="32"></rect><rect x="809" y="555" width="40" height="32" class="nonterminal"></rect><text class="nonterminal" x="819" y="575">INT</text></a><line x1="799" y1="571" x2="809" y2="571" class="line"></line><line x1="849" y1="571" x2="859" y2="571" class="line"></line><line x1="859" y1="571" x2="875" y2="571" class="line"></line><line x1="331" y1="385" x2="331" y2="405" class="line"></line><line x1="905" y1="405" x2="905" y2="385" class="line"></line><line x1="331" y1="405" x2="331" y2="595" class="line"></line><line x1="905" y1="595" x2="905" y2="405" class="line"></line><path d="M331 595 Q331 605 341 605" class="line"></path><path d="M895 605 Q905 605 905 595" class="line"></path><line x1="341" y1="605" x2="351" y2="605" class="line"></line><line x1="351" y1="605" x2="895" y2="605" class="line"></line><line x1="13" y1="175" x2="33" y2="175" class="line"></line><line x1="915" y1="175" x2="935" y2="175" class="line"></line><path d="M13 175 Q23 175 23 185" class="line"></path><path d="M925 185 Q925 175 935 175" class="line"></path><line x1="23" y1="185" x2="23" y2="611" class="line"></line><line x1="925" y1="611" x2="925" y2="185" class="line"></line><path d="M23 611 Q23 621 33 621" class="line"></path><path d="M915 621 Q925 621 925 611" class="line"></path><line x1="33" y1="621" x2="43" y2="621" class="line"></line><line x1="43" y1="621" x2="915" y2="621" class="line"></line><line x1="938" y1="175" x2="935" y2="175" class="line"></line><polygon points="945 175 953 171 953 179" class="filled"></polygon><polygon points="945 175 937 171 937 179" class="filled"></polygon></svg><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">referenced by:<xhtml:ul><xhtml:li><xhtml:a href="#FIELD" title="FIELD">FIELD</xhtml:a></xhtml:li></xhtml:ul></xhtml:p><xhtml:br xmlns:xhtml="http://www.w3.org/1999/xhtml"></xhtml:br><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml" style="font-size: 14px; font-weight:bold"><xhtml:a name="GROUP_FIELD">GROUP_FIELD:</xhtml:a></xhtml:p><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="492" height="316"><defs><style type="text/css">
    -
    -    @namespace "http://www.w3.org/2000/svg";
    -    .line                 {fill: none; stroke: #332900;}
    -    filled                {fill: #332900; stroke: none;}
    -    text                  {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                          }
    -    text.terminal         {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                            font-weight: bold;
    -                          }
    -    rect, circle, polygon {fill: #332900; stroke: #332900;}
    -    rect.terminal         {fill: #FFCC00; stroke: #332900;}
    -    rect.nonterminal      {fill: #FFEB99; stroke: #332900;}
    -    rect.text             {fill: none; stroke: none;}    
    -    polygon.regexp        {fill: #FFF5CC; stroke: #332900;}
    -  </style></defs><polygon points="9 17 1 13 1 21" class="filled"></polygon><polygon points="17 17 9 13 9 21" class="filled"></polygon><line x1="17" y1="17" x2="19" y2="17" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="51" y="3" width="56" height="32"></rect><rect x="49" y="1" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="59" y="21">FIELD</text></a><line x1="39" y1="17" x2="49" y2="17" class="line"></line><line x1="105" y1="17" x2="115" y2="17" class="line"></line><line x1="115" y1="17" x2="453" y2="17" class="line"></line><line x1="19" y1="17" x2="39" y2="17" class="line"></line><line x1="453" y1="17" x2="473" y2="17" class="line"></line><path d="M19 17 Q29 17 29 27" class="line"></path><path d="M463 27 Q463 17 473 17" class="line"></path><line x1="29" y1="27" x2="29" y2="73" class="line"></line><line x1="463" y1="73" x2="463" y2="27" class="line"></line><path d="M29 73 Q29 83 39 83" class="line"></path><path d="M453 83 Q463 83 463 73" class="line"></path><rect x="51" y="69" width="58" height="32" rx="10"></rect><rect x="49" y="67" width="58" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="87">rollup</text><line x1="39" y1="83" x2="49" y2="83" class="line"></line><line x1="107" y1="83" x2="117" y2="83" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="149" y="69" width="56" height="32"></rect><rect x="147" y="67" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="157" y="87">FIELD</text></a><line x1="137" y1="83" x2="147" y2="83" class="line"></line><line x1="203" y1="83" x2="213" y2="83" class="line"></line><path d="M117 83 L137 83 M136 83 Q127 83 127 73 L127 61 Q127 51 137 51" class="line"></path><path d="M213 83 L233 83 M213 83 Q223 83 223 73 L223 61 Q223 51 213 51" class="line"></path><line x1="137" y1="51" x2="147" y2="51" class="line"></line><line x1="147" y1="51" x2="213" y2="51" class="line"></line><line x1="233" y1="83" x2="453" y2="83" class="line"></line><line x1="29" y1="73" x2="29" y2="93" class="line"></line><line x1="463" y1="93" x2="463" y2="73" class="line"></line><line x1="29" y1="93" x2="29" y2="139" class="line"></line><line x1="463" y1="139" x2="463" y2="93" class="line"></line><path d="M29 139 Q29 149 39 149" class="line"></path><path d="M453 149 Q463 149 463 139" class="line"></path><rect x="51" y="135" width="50" height="32" rx="10"></rect><rect x="49" y="133" width="50" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="153">cube</text><line x1="39" y1="149" x2="49" y2="149" class="line"></line><line x1="99" y1="149" x2="109" y2="149" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="141" y="135" width="56" height="32"></rect><rect x="139" y="133" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="149" y="153">FIELD</text></a><line x1="129" y1="149" x2="139" y2="149" class="line"></line><line x1="195" y1="149" x2="205" y2="149" class="line"></line><path d="M109 149 L129 149 M128 149 Q119 149 119 139 L119 127 Q119 117 129 117" class="line"></path><path d="M205 149 L225 149 M205 149 Q215 149 215 139 L215 127 Q215 117 205 117" class="line"></path><line x1="129" y1="117" x2="139" y2="117" class="line"></line><line x1="139" y1="117" x2="205" y2="117" class="line"></line><line x1="225" y1="149" x2="453" y2="149" class="line"></line><line x1="29" y1="139" x2="29" y2="159" class="line"></line><line x1="463" y1="159" x2="463" y2="139" class="line"></line><line x1="29" y1="159" x2="29" y2="205" class="line"></line><line x1="463" y1="205" x2="463" y2="159" class="line"></line><path d="M29 205 Q29 215 39 215" class="line"></path><path d="M453 215 Q463 215 463 205" class="line"></path><rect x="51" y="201" width="106" height="32" rx="10"></rect><rect x="49" y="199" width="106" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="219">groupingSets</text><line x1="39" y1="215" x2="49" y2="215" class="line"></line><line x1="155" y1="215" x2="165" y2="215" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="217" y="201" width="56" height="32"></rect><rect x="215" y="199" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="225" y="219">FIELD</text></a><line x1="205" y1="215" x2="215" y2="215" class="line"></line><line x1="271" y1="215" x2="281" y2="215" class="line"></line><path d="M185 215 L205 215 M204 215 Q195 215 195 205 L195 193 Q195 183 205 183" class="line"></path><path d="M281 215 L301 215 M281 215 Q291 215 291 205 L291 193 Q291 183 281 183" class="line"></path><line x1="205" y1="183" x2="215" y2="183" class="line"></line><line x1="215" y1="183" x2="281" y2="183" class="line"></line><line x1="301" y1="215" x2="433" y2="215" class="line"></line><line x1="165" y1="215" x2="185" y2="215" class="line"></line><line x1="433" y1="215" x2="453" y2="215" class="line"></line><path d="M165 215 Q175 215 175 225" class="line"></path><path d="M443 225 Q443 215 453 215" class="line"></path><line x1="175" y1="225" x2="175" y2="287" class="line"></line><line x1="443" y1="287" x2="443" y2="225" class="line"></line><path d="M175 287 Q175 297 185 297" class="line"></path><path d="M433 297 Q443 297 443 287" class="line"></path><rect x="217" y="283" width="26" height="32" rx="10"></rect><rect x="215" y="281" width="26" height="32" class="terminal" rx="10"></rect><text class="terminal" x="225" y="301">[</text><line x1="205" y1="297" x2="215" y2="297" class="line"></line><line x1="241" y1="297" x2="251" y2="297" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="283" y="283" width="56" height="32"></rect><rect x="281" y="281" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="291" y="301">FIELD</text></a><line x1="271" y1="297" x2="281" y2="297" class="line"></line><line x1="337" y1="297" x2="347" y2="297" class="line"></line><path d="M251 297 L271 297 M270 297 Q261 297 261 287 L261 275 Q261 265 271 265" class="line"></path><path d="M347 297 L367 297 M347 297 Q357 297 357 287 L357 275 Q357 265 347 265" class="line"></path><line x1="271" y1="265" x2="281" y2="265" class="line"></line><line x1="281" y1="265" x2="347" y2="265" class="line"></line><rect x="379" y="283" width="26" height="32" rx="10"></rect><rect x="377" y="281" width="26" height="32" class="terminal" rx="10"></rect><text class="terminal" x="387" y="301">]</text><line x1="367" y1="297" x2="377" y2="297" class="line"></line><line x1="403" y1="297" x2="413" y2="297" class="line"></line><path d="M185 297 L205 297 M204 297 Q195 297 195 287 L195 259 Q195 249 205 249" class="line"></path><path d="M413 297 L433 297 M413 297 Q423 297 423 287 L423 259 Q423 249 413 249" class="line"></path><line x1="205" y1="249" x2="215" y2="249" class="line"></line><line x1="215" y1="249" x2="413" y2="249" class="line"></line><line x1="476" y1="17" x2="473" y2="17" class="line"></line><polygon points="483 17 491 13 491 21" class="filled"></polygon><polygon points="483 17 475 13 475 21" class="filled"></polygon></svg><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">referenced by:<xhtml:ul><xhtml:li><xhtml:a href="#SELECT" title="SELECT">SELECT</xhtml:a></xhtml:li></xhtml:ul></xhtml:p><xhtml:br xmlns:xhtml="http://www.w3.org/1999/xhtml"></xhtml:br><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml" style="font-size: 14px; font-weight:bold"><xhtml:a name="SORT_FIELD">SORT_FIELD:</xhtml:a></xhtml:p><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="526" height="256"><defs><style type="text/css">
    -    @namespace "http://www.w3.org/2000/svg";
    -    .line                 {fill: none; stroke: #332900;}
    -    filled                {fill: #332900; stroke: none;}
    -    text                  {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                          }
    -    text.terminal         {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                            font-weight: bold;
    -                          }
    -    rect, circle, polygon {fill: #332900; stroke: #332900;}
    -    rect.terminal         {fill: #FFCC00; stroke: #332900;}
    -    rect.nonterminal      {fill: #FFEB99; stroke: #332900;}
    -    rect.text             {fill: none; stroke: none;}    
    -    polygon.regexp        {fill: #FFF5CC; stroke: #332900;}
    -  </style></defs><polygon points="9 17 1 13 1 21" class="filled"></polygon><polygon points="17 17 9 13 9 21" class="filled"></polygon><line x1="17" y1="17" x2="19" y2="17" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="31" y="3" width="56" height="32"></rect><rect x="29" y="1" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="39" y="21">FIELD</text></a><line x1="19" y1="17" x2="29" y2="17" class="line"></line><line x1="85" y1="17" x2="95" y2="17" class="line"></line><rect x="127" y="3" width="42" height="32" rx="10"></rect><rect x="125" y="1" width="42" height="32" class="terminal" rx="10"></rect><text class="terminal" x="135" y="21">asc</text><line x1="115" y1="17" x2="125" y2="17" class="line"></line><line x1="167" y1="17" x2="177" y2="17" class="line"></line><line x1="177" y1="17" x2="347" y2="17" class="line"></line><line x1="95" y1="17" x2="115" y2="17" class="line"></line><line x1="347" y1="17" x2="367" y2="17" class="line"></line><path d="M95 17 Q105 17 105 27" class="line"></path><path d="M357 27 Q357 17 367 17" class="line"></path><line x1="105" y1="27" x2="105" y2="51" class="line"></line><line x1="357" y1="51" x2="357" y2="27" class="line"></line><path d="M105 51 Q105 61 115 61" class="line"></path><path d="M347 61 Q357 61 357 51" class="line"></path><rect x="127" y="47" width="50" height="32" rx="10"></rect><rect x="125" y="45" width="50" height="32" class="terminal" rx="10"></rect><text class="terminal" x="135" y="65">desc</text><line x1="115" y1="61" x2="125" y2="61" class="line"></line><line x1="175" y1="61" x2="185" y2="61" class="line"></line><line x1="185" y1="61" x2="347" y2="61" class="line"></line><line x1="105" y1="51" x2="105" y2="71" class="line"></line><line x1="357" y1="71" x2="357" y2="51" class="line"></line><line x1="105" y1="71" x2="105" y2="117" class="line"></line><line x1="357" y1="117" x2="357" y2="71" class="line"></line><path d="M105 117 Q105 127 115 127" class="line"></path><path d="M347 127 Q357 127 357 117" class="line"></path><rect x="127" y="113" width="68" height="32" rx="10"></rect><rect x="125" y="111" width="68" height="32" class="terminal" rx="10"></rect><text class="terminal" x="135" y="131">sortAsc</text><line x1="115" y1="127" x2="125" y2="127" class="line"></line><line x1="193" y1="127" x2="203" y2="127" class="line"></line><a xlink:href="#BINDING" xlink:title="BINDING"><rect x="235" y="113" width="74" height="32"></rect><rect x="233" y="111" width="74" height="32" class="nonterminal"></rect><text class="nonterminal" x="243" y="131">BINDING</text></a><line x1="223" y1="127" x2="233" y2="127" class="line"></line><line x1="307" y1="127" x2="317" y2="127" class="line"></line><path d="M203 127 L223 127 M222 127 Q213 127 213 117 L213 105 Q213 95 223 95" class="line"></path><path d="M317 127 L337 127 M317 127 Q327 127 327 117 L327 105 Q327 95 317 95" class="line"></path><line x1="223" y1="95" x2="233" y2="95" class="line"></line><line x1="233" y1="95" x2="317" y2="95" class="line"></line><line x1="337" y1="127" x2="347" y2="127" class="line"></line><line x1="105" y1="117" x2="105" y2="137" class="line"></line><line x1="357" y1="137" x2="357" y2="117" class="line"></line><line x1="105" y1="137" x2="105" y2="183" class="line"></line><line x1="357" y1="183" x2="357" y2="137" class="line"></line><path d="M105 183 Q105 193 115 193" class="line"></path><path d="M347 193 Q357 193 357 183" class="line"></path><rect x="127" y="179" width="78" height="32" rx="10"></rect><rect x="125" y="177" width="78" height="32" class="terminal" rx="10"></rect><text class="terminal" x="135" y="197">sortDesc</text><line x1="115" y1="193" x2="125" y2="193" class="line"></line><line x1="203" y1="193" x2="213" y2="193" class="line"></line><a xlink:href="#BINDING" xlink:title="BINDING"><rect x="245" y="179" width="74" height="32"></rect><rect x="243" y="177" width="74" height="32" class="nonterminal"></rect><text class="nonterminal" x="253" y="197">BINDING</text></a><line x1="233" y1="193" x2="243" y2="193" class="line"></line><line x1="317" y1="193" x2="327" y2="193" class="line"></line><path d="M213 193 L233 193 M232 193 Q223 193 223 183 L223 171 Q223 161 233 161" class="line"></path><path d="M327 193 L347 193 M327 193 Q337 193 337 183 L337 171 Q337 161 327 161" class="line"></path><line x1="233" y1="161" x2="243" y2="161" class="line"></line><line x1="243" y1="161" x2="327" y2="161" class="line"></line><line x1="105" y1="183" x2="105" y2="203" class="line"></line><line x1="357" y1="203" x2="357" y2="183" class="line"></line><line x1="105" y1="203" x2="105" y2="227" class="line"></line><line x1="357" y1="227" x2="357" y2="203" class="line"></line><path d="M105 227 Q105 237 115 237" class="line"></path><path d="M347 237 Q357 237 357 227" class="line"></path><rect x="127" y="223" width="46" height="32" rx="10"></rect><rect x="125" y="221" width="46" height="32" class="terminal" rx="10"></rect><text class="terminal" x="135" y="241">sort</text><line x1="115" y1="237" x2="125" y2="237" class="line"></line><line x1="171" y1="237" x2="181" y2="237" class="line"></line><a xlink:href="#BINDING_MAP" xlink:title="BINDING_MAP"><rect x="193" y="223" width="108" height="32"></rect><rect x="191" y="221" width="108" height="32" class="nonterminal"></rect><text class="nonterminal" x="201" y="241">BINDING_MAP</text></a><line x1="181" y1="237" x2="191" y2="237" class="line"></line><line x1="299" y1="237" x2="309" y2="237" class="line"></line><line x1="309" y1="237" x2="347" y2="237" class="line"></line><rect x="399" y="3" width="80" height="32" rx="10"></rect><rect x="397" y="1" width="80" height="32" class="terminal" rx="10"></rect><text class="terminal" x="407" y="21">nullsFirst</text><line x1="387" y1="17" x2="397" y2="17" class="line"></line><line x1="477" y1="17" x2="487" y2="17" class="line"></line><line x1="367" y1="17" x2="387" y2="17" class="line"></line><line x1="487" y1="17" x2="507" y2="17" class="line"></line><path d="M367 17 Q377 17 377 27" class="line"></path><path d="M497 27 Q497 17 507 17" class="line"></path><line x1="377" y1="27" x2="377" y2="51" class="line"></line><line x1="497" y1="51" x2="497" y2="27" class="line"></line><path d="M377 51 Q377 61 387 61" class="line"></path><path d="M487 61 Q497 61 497 51" class="line"></path><rect x="399" y="47" width="78" height="32" rx="10"></rect><rect x="397" y="45" width="78" height="32" class="terminal" rx="10"></rect><text class="terminal" x="407" y="65">nullsLast</text><line x1="387" y1="61" x2="397" y2="61" class="line"></line><line x1="475" y1="61" x2="485" y2="61" class="line"></line><line x1="485" y1="61" x2="487" y2="61" class="line"></line><line x1="377" y1="51" x2="377" y2="71" class="line"></line><line x1="497" y1="71" x2="497" y2="51" class="line"></line><line x1="377" y1="71" x2="377" y2="85" class="line"></line><line x1="497" y1="85" x2="497" y2="71" class="line"></line><path d="M377 85 Q377 95 387 95" class="line"></path><path d="M487 95 Q497 95 497 85" class="line"></path><line x1="387" y1="95" x2="397" y2="95" class="line"></line><line x1="397" y1="95" x2="487" y2="95" class="line"></line><line x1="510" y1="17" x2="507" y2="17" class="line"></line><polygon points="517 17 525 13 525 21" class="filled"></polygon><polygon points="517 17 509 13 509 21" class="filled"></polygon></svg><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">referenced by:<xhtml:ul><xhtml:li><xhtml:a href="#PARTITION_CLAUSE" title="PARTITION_CLAUSE">PARTITION_CLAUSE</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#SELECT" title="SELECT">SELECT</xhtml:a></xhtml:li></xhtml:ul></xhtml:p><xhtml:br xmlns:xhtml="http://www.w3.org/1999/xhtml"></xhtml:br><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml" style="font-size: 14px; font-weight:bold"><xhtml:a name="INT">INT:</xhtml:a></xhtml:p><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="158" height="52"><defs><style type="text/css">
    -
    -    @namespace "http://www.w3.org/2000/svg";
    -    .line                 {fill: none; stroke: #332900;}
    -    filled                {fill: #332900; stroke: none;}
    -    text                  {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                          }
    -    text.terminal         {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                            font-weight: bold;
    -                          }
    -    rect, circle, polygon {fill: #332900; stroke: #332900;}
    -    rect.terminal         {fill: #FFCC00; stroke: #332900;}
    -    rect.nonterminal      {fill: #FFEB99; stroke: #332900;}
    -    rect.text             {fill: none; stroke: none;}    
    -    polygon.regexp        {fill: #FFF5CC; stroke: #332900;}
    -  </style></defs><polygon points="9 33 1 29 1 37" class="filled"></polygon><polygon points="17 33 9 29 9 37" class="filled"></polygon><line x1="17" y1="33" x2="19" y2="33" class="line"></line><polygon points="51 35 58 19 104 19 111 35 104 51 58 51"></polygon><polygon points="49 33 56 17 102 17 109 33 102 49 56 49" class="regexp"></polygon><text class="regexp" x="64" y="37">[0-9]</text><line x1="39" y1="33" x2="49" y2="33" class="line"></line><line x1="109" y1="33" x2="119" y2="33" class="line"></line><path d="M19 33 L39 33 M38 33 Q29 33 29 23 L29 11 Q29 1 39 1" class="line"></path><path d="M119 33 L139 33 M119 33 Q129 33 129 23 L129 11 Q129 1 119 1" class="line"></path><line x1="39" y1="1" x2="49" y2="1" class="line"></line><line x1="49" y1="1" x2="119" y2="1" class="line"></line><line x1="142" y1="33" x2="139" y2="33" class="line"></line><polygon points="149 33 157 29 157 37" class="filled"></polygon><polygon points="149 33 141 29 141 37" class="filled"></polygon></svg><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">referenced by:<xhtml:ul><xhtml:li><xhtml:a href="#AGGREGATE_FUNCTION" title="AGGREGATE_FUNCTION">AGGREGATE_FUNCTION</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#PARTITION_CLAUSE" title="PARTITION_CLAUSE">PARTITION_CLAUSE</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#SELECT" title="SELECT">SELECT</xhtml:a></xhtml:li></xhtml:ul></xhtml:p><xhtml:br xmlns:xhtml="http://www.w3.org/1999/xhtml"></xhtml:br><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml" style="font-size: 14px; font-weight:bold"><xhtml:a name="NAME">NAME:</xhtml:a></xhtml:p><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="198" height="140"><defs><style type="text/css">
    -    @namespace "http://www.w3.org/2000/svg";
    -    .line                 {fill: none; stroke: #332900;}
    -    filled                {fill: #332900; stroke: none;}
    -    text                  {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                          }
    -    text.terminal         {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                            font-weight: bold;
    -                          }
    -    rect, circle, polygon {fill: #332900; stroke: #332900;}
    -    rect.terminal         {fill: #FFCC00; stroke: #332900;}
    -    rect.nonterminal      {fill: #FFEB99; stroke: #332900;}
    -    rect.text             {fill: none; stroke: none;}    
    -    polygon.regexp        {fill: #FFF5CC; stroke: #332900;}
    -  </style></defs><polygon points="9 33 1 29 1 37" class="filled"></polygon><polygon points="17 33 9 29 9 37" class="filled"></polygon><line x1="17" y1="33" x2="19" y2="33" class="line"></line><polygon points="71 35 78 19 124 19 131 35 124 51 78 51"></polygon><polygon points="69 33 76 17 122 17 129 33 122 49 76 49" class="regexp"></polygon><text class="regexp" x="84" y="37">[A-Z]</text><line x1="59" y1="33" x2="69" y2="33" class="line"></line><line x1="129" y1="33" x2="139" y2="33" class="line"></line><line x1="39" y1="33" x2="59" y2="33" class="line"></line><line x1="139" y1="33" x2="159" y2="33" class="line"></line><path d="M39 33 Q49 33 49 43" class="line"></path><path d="M149 43 Q149 33 159 33" class="line"></path><line x1="49" y1="43" x2="49" y2="67" class="line"></line><line x1="149" y1="67" x2="149" y2="43" class="line"></line><path d="M49 67 Q49 77 59 77" class="line"></path><path d="M139 77 Q149 77 149 67" class="line"></path><polygon points="71 79 78 63 124 63 131 79 124 95 78 95"></polygon><polygon points="69 77 76 61 122 61 129 77 122 93 76 93" class="regexp"></polygon><text class="regexp" x="84" y="81">[a-z]</text><line x1="59" y1="77" x2="69" y2="77" class="line"></line><line x1="129" y1="77" x2="139" y2="77" class="line"></line><line x1="49" y1="67" x2="49" y2="87" class="line"></line><line x1="149" y1="87" x2="149" y2="67" class="line"></line><line x1="49" y1="87" x2="49" y2="111" class="line"></line><line x1="149" y1="111" x2="149" y2="87" class="line"></line><path d="M49 111 Q49 121 59 121" class="line"></path><path d="M139 121 Q149 121 149 111" class="line"></path><polygon points="71 123 78 107 124 107 131 123 124 139 78 139"></polygon><polygon points="69 121 76 105 122 105 129 121 122 137 76 137" class="regexp"></polygon><text class="regexp" x="84" y="125">[0-9]</text><line x1="59" y1="121" x2="69" y2="121" class="line"></line><line x1="129" y1="121" x2="139" y2="121" class="line"></line><path d="M19 33 L39 33 M38 33 Q29 33 29 23 L29 11 Q29 1 39 1" class="line"></path><path d="M159 33 L179 33 M159 33 Q169 33 169 23 L169 11 Q169 1 159 1" class="line"></path><line x1="39" y1="1" x2="49" y2="1" class="line"></line><line x1="49" y1="1" x2="159" y2="1" class="line"></line><line x1="182" y1="33" x2="179" y2="33" class="line"></line><polygon points="189 33 197 29 197 37" class="filled"></polygon><polygon points="189 33 181 29 181 37" class="filled"></polygon></svg><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">referenced by:<xhtml:ul><xhtml:li><xhtml:a href="#FIELD" title="FIELD">FIELD</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#TABLE" title="TABLE">TABLE</xhtml:a></xhtml:li></xhtml:ul></xhtml:p><xhtml:br xmlns:xhtml="http://www.w3.org/1999/xhtml"></xhtml:br><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml" style="font-size: 14px; font-weight:bold"><xhtml:a name="TABLE">TABLE:</xhtml:a></xhtml:p><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="710" height="410"><defs><style type="text/css">
    -
    -    @namespace "http://www.w3.org/2000/svg";
    -    .line                 {fill: none; stroke: #332900;}
    -    filled                {fill: #332900; stroke: none;}
    -    text                  {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                          }
    -    text.terminal         {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                            font-weight: bold;
    -                          }
    -    rect, circle, polygon {fill: #332900; stroke: #332900;}
    -    rect.terminal         {fill: #FFCC00; stroke: #332900;}
    -    rect.nonterminal      {fill: #FFEB99; stroke: #332900;}
    -    rect.text             {fill: none; stroke: none;}    
    -    polygon.regexp        {fill: #FFF5CC; stroke: #332900;}
    -  </style></defs><polygon points="9 17 1 13 1 21" class="filled"></polygon><polygon points="17 17 9 13 9 21" class="filled"></polygon><line x1="17" y1="17" x2="19" y2="17" class="line"></line><rect x="51" y="3" width="168" height="32" rx="10"></rect><rect x="49" y="1" width="168" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="21">jOOQ generated Table</text><line x1="39" y1="17" x2="49" y2="17" class="line"></line><line x1="217" y1="17" x2="227" y2="17" class="line"></line><line x1="227" y1="17" x2="671" y2="17" class="line"></line><line x1="19" y1="17" x2="39" y2="17" class="line"></line><line x1="671" y1="17" x2="691" y2="17" class="line"></line><path d="M19 17 Q29 17 29 27" class="line"></path><path d="M681 27 Q681 17 691 17" class="line"></path><line x1="29" y1="27" x2="29" y2="51" class="line"></line><line x1="681" y1="51" x2="681" y2="27" class="line"></line><path d="M29 51 Q29 61 39 61" class="line"></path><path d="M671 61 Q681 61 681 51" class="line"></path><rect x="51" y="47" width="104" height="32" rx="10"></rect><rect x="49" y="45" width="104" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="65">CustomTable</text><line x1="39" y1="61" x2="49" y2="61" class="line"></line><line x1="153" y1="61" x2="163" y2="61" class="line"></line><line x1="163" y1="61" x2="671" y2="61" class="line"></line><line x1="29" y1="51" x2="29" y2="71" class="line"></line><line x1="681" y1="71" x2="681" y2="51" class="line"></line><line x1="29" y1="71" x2="29" y2="95" class="line"></line><line x1="681" y1="95" x2="681" y2="71" class="line"></line><path d="M29 95 Q29 105 39 105" class="line"></path><path d="M671 105 Q681 105 681 95" class="line"></path><rect x="51" y="91" width="52" height="32" rx="10"></rect><rect x="49" y="89" width="52" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="109">table</text><line x1="39" y1="105" x2="49" y2="105" class="line"></line><line x1="101" y1="105" x2="111" y2="105" class="line"></line><a xlink:href="#SQL" xlink:title="SQL"><rect x="143" y="91" width="44" height="32"></rect><rect x="141" y="89" width="44" height="32" class="nonterminal"></rect><text class="nonterminal" x="151" y="109">SQL</text></a><line x1="131" y1="105" x2="141" y2="105" class="line"></line><line x1="185" y1="105" x2="195" y2="105" class="line"></line><line x1="195" y1="105" x2="217" y2="105" class="line"></line><line x1="111" y1="105" x2="131" y2="105" class="line"></line><line x1="217" y1="105" x2="237" y2="105" class="line"></line><path d="M111 105 Q121 105 121 115" class="line"></path><path d="M227 115 Q227 105 237 105" class="line"></path><line x1="121" y1="115" x2="121" y2="139" class="line"></line><line x1="227" y1="139" x2="227" y2="115" class="line"></line><path d="M121 139 Q121 149 131 149" class="line"></path><path d="M217 149 Q227 149 227 139" class="line"></path><a xlink:href="#SELECT" xlink:title="SELECT"><rect x="143" y="135" width="66" height="32"></rect><rect x="141" y="133" width="66" height="32" class="nonterminal"></rect><text class="nonterminal" x="151" y="153">SELECT</text></a><line x1="131" y1="149" x2="141" y2="149" class="line"></line><line x1="207" y1="149" x2="217" y2="149" class="line"></line><line x1="237" y1="105" x2="671" y2="105" class="line"></line><line x1="29" y1="95" x2="29" y2="115" class="line"></line><line x1="681" y1="115" x2="681" y2="95" class="line"></line><line x1="29" y1="115" x2="29" y2="183" class="line"></line><line x1="681" y1="183" x2="681" y2="115" class="line"></line><path d="M29 183 Q29 193 39 193" class="line"></path><path d="M671 193 Q681 193 681 183" class="line"></path><rect x="71" y="179" width="52" height="32" rx="10"></rect><rect x="69" y="177" width="52" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="197">table</text><line x1="59" y1="193" x2="69" y2="193" class="line"></line><line x1="121" y1="193" x2="131" y2="193" class="line"></line><line x1="131" y1="193" x2="143" y2="193" class="line"></line><line x1="39" y1="193" x2="59" y2="193" class="line"></line><line x1="143" y1="193" x2="163" y2="193" class="line"></line><path d="M39 193 Q49 193 49 203" class="line"></path><path d="M153 203 Q153 193 163 193" class="line"></path><line x1="49" y1="203" x2="49" y2="227" class="line"></line><line x1="153" y1="227" x2="153" y2="203" class="line"></line><path d="M49 227 Q49 237 59 237" class="line"></path><path d="M143 237 Q153 237 153 227" class="line"></path><rect x="71" y="223" width="64" height="32" rx="10"></rect><rect x="69" y="221" width="64" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="241">unnest</text><line x1="59" y1="237" x2="69" y2="237" class="line"></line><line x1="133" y1="237" x2="143" y2="237" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="195" y="179" width="56" height="32"></rect><rect x="193" y="177" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="203" y="197">FIELD</text></a><line x1="183" y1="193" x2="193" y2="193" class="line"></line><line x1="249" y1="193" x2="259" y2="193" class="line"></line><line x1="259" y1="193" x2="317" y2="193" class="line"></line><line x1="163" y1="193" x2="183" y2="193" class="line"></line><line x1="317" y1="193" x2="337" y2="193" class="line"></line><path d="M163 193 Q173 193 173 203" class="line"></path><path d="M327 203 Q327 193 337 193" class="line"></path><line x1="173" y1="203" x2="173" y2="249" class="line"></line><line x1="327" y1="249" x2="327" y2="203" class="line"></line><path d="M173 249 Q173 259 183 259" class="line"></path><path d="M317 259 Q327 259 327 249" class="line"></path><a xlink:href="#BINDING" xlink:title="BINDING"><rect x="215" y="245" width="74" height="32"></rect><rect x="213" y="243" width="74" height="32" class="nonterminal"></rect><text class="nonterminal" x="223" y="263">BINDING</text></a><line x1="203" y1="259" x2="213" y2="259" class="line"></line><line x1="287" y1="259" x2="297" y2="259" class="line"></line><path d="M183 259 L203 259 M202 259 Q193 259 193 249 L193 237 Q193 227 203 227" class="line"></path><path d="M297 259 L317 259 M297 259 Q307 259 307 249 L307 237 Q307 227 297 227" class="line"></path><line x1="203" y1="227" x2="213" y2="227" class="line"></line><line x1="213" y1="227" x2="297" y2="227" class="line"></line><line x1="173" y1="249" x2="173" y2="269" class="line"></line><line x1="327" y1="269" x2="327" y2="249" class="line"></line><line x1="173" y1="269" x2="173" y2="283" class="line"></line><line x1="327" y1="283" x2="327" y2="269" class="line"></line><path d="M173 283 Q173 293 183 293" class="line"></path><path d="M317 293 Q327 293 327 283" class="line"></path><line x1="183" y1="293" x2="193" y2="293" class="line"></line><line x1="193" y1="293" x2="317" y2="293" class="line"></line><line x1="337" y1="193" x2="671" y2="193" class="line"></line><line x1="29" y1="183" x2="29" y2="203" class="line"></line><line x1="681" y1="203" x2="681" y2="183" class="line"></line><line x1="29" y1="203" x2="29" y2="315" class="line"></line><line x1="681" y1="315" x2="681" y2="203" class="line"></line><path d="M29 315 Q29 325 39 325" class="line"></path><path d="M671 325 Q681 325 681 315" class="line"></path><a xlink:href="#TABLE" xlink:title="TABLE"><rect x="51" y="311" width="58" height="32"></rect><rect x="49" y="309" width="58" height="32" class="nonterminal"></rect><text class="nonterminal" x="59" y="329">TABLE</text></a><line x1="39" y1="325" x2="49" y2="325" class="line"></line><line x1="107" y1="325" x2="117" y2="325" class="line"></line><rect x="129" y="311" width="34" height="32" rx="10"></rect><rect x="127" y="309" width="34" height="32" class="terminal" rx="10"></rect><text class="terminal" x="137" y="329">as</text><line x1="117" y1="325" x2="127" y2="325" class="line"></line><line x1="161" y1="325" x2="171" y2="325" class="line"></line><a xlink:href="#NAME" xlink:title="NAME"><rect x="183" y="311" width="54" height="32"></rect><rect x="181" y="309" width="54" height="32" class="nonterminal"></rect><text class="nonterminal" x="191" y="329">NAME</text></a><line x1="171" y1="325" x2="181" y2="325" class="line"></line><line x1="235" y1="325" x2="245" y2="325" class="line"></line><line x1="245" y1="325" x2="671" y2="325" class="line"></line><line x1="29" y1="315" x2="29" y2="335" class="line"></line><line x1="681" y1="335" x2="681" y2="315" class="line"></line><line x1="29" y1="335" x2="29" y2="381" class="line"></line><line x1="681" y1="381" x2="681" y2="335" class="line"></line><path d="M29 381 Q29 391 39 391" class="line"></path><path d="M671 391 Q681 391 681 381" class="line"></path><a xlink:href="#TABLE" xlink:title="TABLE"><rect x="51" y="377" width="58" height="32"></rect><rect x="49" y="375" width="58" height="32" class="nonterminal"></rect><text class="nonterminal" x="59" y="395">TABLE</text></a><line x1="39" y1="391" x2="49" y2="391" class="line"></line><line x1="107" y1="391" x2="117" y2="391" class="line"></line><rect x="129" y="377" width="52" height="32" rx="10"></rect><rect x="127" y="375" width="52" height="32" class="terminal" rx="10"></rect><text class="terminal" x="137" y="395">pivot</text><line x1="117" y1="391" x2="127" y2="391" class="line"></line><line x1="179" y1="391" x2="189" y2="391" class="line"></line><a xlink:href="#AGGREGATE_FUNCTION" xlink:title="AGGREGATE_FUNCTION"><rect x="201" y="377" width="166" height="32"></rect><rect x="199" y="375" width="166" height="32" class="nonterminal"></rect><text class="nonterminal" x="209" y="395">AGGREGATE_FUNCTION</text></a><line x1="189" y1="391" x2="199" y2="391" class="line"></line><line x1="365" y1="391" x2="375" y2="391" class="line"></line><rect x="387" y="377" width="32" height="32" rx="10"></rect><rect x="385" y="375" width="32" height="32" class="terminal" rx="10"></rect><text class="terminal" x="395" y="395">of</text><line x1="375" y1="391" x2="385" y2="391" class="line"></line><line x1="417" y1="391" x2="427" y2="391" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="439" y="377" width="56" height="32"></rect><rect x="437" y="375" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="447" y="395">FIELD</text></a><line x1="427" y1="391" x2="437" y2="391" class="line"></line><line x1="493" y1="391" x2="503" y2="391" class="line"></line><rect x="515" y="377" width="32" height="32" rx="10"></rect><rect x="513" y="375" width="32" height="32" class="terminal" rx="10"></rect><text class="terminal" x="523" y="395">in</text><line x1="503" y1="391" x2="513" y2="391" class="line"></line><line x1="545" y1="391" x2="555" y2="391" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="587" y="377" width="56" height="32"></rect><rect x="585" y="375" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="595" y="395">FIELD</text></a><line x1="575" y1="391" x2="585" y2="391" class="line"></line><line x1="641" y1="391" x2="651" y2="391" class="line"></line><path d="M555 391 L575 391 M574 391 Q565 391 565 381 L565 369 Q565 359 575 359" class="line"></path><path d="M651 391 L671 391 M651 391 Q661 391 661 381 L661 369 Q661 359 651 359" class="line"></path><line x1="575" y1="359" x2="585" y2="359" class="line"></line><line x1="585" y1="359" x2="651" y2="359" class="line"></line><line x1="694" y1="17" x2="691" y2="17" class="line"></line><polygon points="701 17 709 13 709 21" class="filled"></polygon><polygon points="701 17 693 13 693 21" class="filled"></polygon></svg><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">referenced by:<xhtml:ul><xhtml:li><xhtml:a href="#DELETE" title="DELETE">DELETE</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#INSERT" title="INSERT">INSERT</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#MERGE" title="MERGE">MERGE</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#RESULT" title="RESULT">RESULT</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#SELECT" title="SELECT">SELECT</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#TABLE" title="TABLE">TABLE</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#TRUNCATE" title="TRUNCATE">TRUNCATE</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#UPDATE" title="UPDATE">UPDATE</xhtml:a></xhtml:li></xhtml:ul></xhtml:p><xhtml:br xmlns:xhtml="http://www.w3.org/1999/xhtml"></xhtml:br><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml" style="font-size: 14px; font-weight:bold"><xhtml:a name="CONDITION">CONDITION:</xhtml:a></xhtml:p><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="498" height="1774"><defs><style type="text/css">
    -
    -    @namespace "http://www.w3.org/2000/svg";
    -    .line                 {fill: none; stroke: #332900;}
    -    filled                {fill: #332900; stroke: none;}
    -    text                  {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                          }
    -    text.terminal         {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                            font-weight: bold;
    -                          }
    -    rect, circle, polygon {fill: #332900; stroke: #332900;}
    -    rect.terminal         {fill: #FFCC00; stroke: #332900;}
    -    rect.nonterminal      {fill: #FFEB99; stroke: #332900;}
    -    rect.text             {fill: none; stroke: none;}    
    -    polygon.regexp        {fill: #FFF5CC; stroke: #332900;}
    -  </style></defs><polygon points="9 17 1 13 1 21" class="filled"></polygon><polygon points="17 17 9 13 9 21" class="filled"></polygon><line x1="17" y1="17" x2="19" y2="17" class="line"></line><a xlink:href="#CONDITION" xlink:title="CONDITION"><rect x="51" y="3" width="92" height="32"></rect><rect x="49" y="1" width="92" height="32" class="nonterminal"></rect><text class="nonterminal" x="59" y="21">CONDITION</text></a><line x1="39" y1="17" x2="49" y2="17" class="line"></line><line x1="141" y1="17" x2="151" y2="17" class="line"></line><a xlink:href="#MORE_CONDITIONS" xlink:title="MORE_CONDITIONS"><rect x="183" y="3" width="144" height="32"></rect><rect x="181" y="1" width="144" height="32" class="nonterminal"></rect><text class="nonterminal" x="191" y="21">MORE_CONDITIONS</text></a><line x1="171" y1="17" x2="181" y2="17" class="line"></line><line x1="325" y1="17" x2="335" y2="17" class="line"></line><line x1="151" y1="17" x2="171" y2="17" class="line"></line><line x1="335" y1="17" x2="355" y2="17" class="line"></line><path d="M151 17 Q161 17 161 27" class="line"></path><path d="M345 27 Q345 17 355 17" class="line"></path><line x1="161" y1="27" x2="161" y2="51" class="line"></line><line x1="345" y1="51" x2="345" y2="27" class="line"></line><path d="M161 51 Q161 61 171 61" class="line"></path><path d="M335 61 Q345 61 345 51" class="line"></path><rect x="183" y="47" width="40" height="32" rx="10"></rect><rect x="181" y="45" width="40" height="32" class="terminal" rx="10"></rect><text class="terminal" x="191" y="65">not</text><line x1="171" y1="61" x2="181" y2="61" class="line"></line><line x1="221" y1="61" x2="231" y2="61" class="line"></line><line x1="231" y1="61" x2="335" y2="61" class="line"></line><line x1="355" y1="17" x2="459" y2="17" class="line"></line><line x1="19" y1="17" x2="39" y2="17" class="line"></line><line x1="459" y1="17" x2="479" y2="17" class="line"></line><path d="M19 17 Q29 17 29 27" class="line"></path><path d="M469 27 Q469 17 479 17" class="line"></path><line x1="29" y1="27" x2="29" y2="95" class="line"></line><line x1="469" y1="95" x2="469" y2="27" class="line"></line><path d="M29 95 Q29 105 39 105" class="line"></path><path d="M459 105 Q469 105 469 95" class="line"></path><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="51" y="91" width="56" height="32"></rect><rect x="49" y="89" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="59" y="109">FIELD</text></a><line x1="39" y1="105" x2="49" y2="105" class="line"></line><line x1="105" y1="105" x2="115" y2="105" class="line"></line><rect x="147" y="91" width="56" height="32" rx="10"></rect><rect x="145" y="89" width="56" height="32" class="terminal" rx="10"></rect><text class="terminal" x="155" y="109">isNull</text><line x1="135" y1="105" x2="145" y2="105" class="line"></line><line x1="201" y1="105" x2="211" y2="105" class="line"></line><line x1="211" y1="105" x2="439" y2="105" class="line"></line><line x1="115" y1="105" x2="135" y2="105" class="line"></line><line x1="439" y1="105" x2="459" y2="105" class="line"></line><path d="M115 105 Q125 105 125 115" class="line"></path><path d="M449 115 Q449 105 459 105" class="line"></path><line x1="125" y1="115" x2="125" y2="139" class="line"></line><line x1="449" y1="139" x2="449" y2="115" class="line"></line><path d="M125 139 Q125 149 135 149" class="line"></path><path d="M439 149 Q449 149 449 139" class="line"></path><rect x="147" y="135" width="80" height="32" rx="10"></rect><rect x="145" y="133" width="80" height="32" class="terminal" rx="10"></rect><text class="terminal" x="155" y="153">isNotNull</text><line x1="135" y1="149" x2="145" y2="149" class="line"></line><line x1="225" y1="149" x2="235" y2="149" class="line"></line><line x1="235" y1="149" x2="439" y2="149" class="line"></line><line x1="125" y1="139" x2="125" y2="159" class="line"></line><line x1="449" y1="159" x2="449" y2="139" class="line"></line><line x1="125" y1="159" x2="125" y2="183" class="line"></line><line x1="449" y1="183" x2="449" y2="159" class="line"></line><path d="M125 183 Q125 193 135 193" class="line"></path><path d="M439 193 Q449 193 449 183" class="line"></path><rect x="147" y="179" width="60" height="32" rx="10"></rect><rect x="145" y="177" width="60" height="32" class="terminal" rx="10"></rect><text class="terminal" x="155" y="197">isTrue</text><line x1="135" y1="193" x2="145" y2="193" class="line"></line><line x1="205" y1="193" x2="215" y2="193" class="line"></line><line x1="215" y1="193" x2="439" y2="193" class="line"></line><line x1="125" y1="183" x2="125" y2="203" class="line"></line><line x1="449" y1="203" x2="449" y2="183" class="line"></line><line x1="125" y1="203" x2="125" y2="227" class="line"></line><line x1="449" y1="227" x2="449" y2="203" class="line"></line><path d="M125 227 Q125 237 135 237" class="line"></path><path d="M439 237 Q449 237 449 227" class="line"></path><rect x="147" y="223" width="66" height="32" rx="10"></rect><rect x="145" y="221" width="66" height="32" class="terminal" rx="10"></rect><text class="terminal" x="155" y="241">isFalse</text><line x1="135" y1="237" x2="145" y2="237" class="line"></line><line x1="211" y1="237" x2="221" y2="237" class="line"></line><line x1="221" y1="237" x2="439" y2="237" class="line"></line><line x1="125" y1="227" x2="125" y2="247" class="line"></line><line x1="449" y1="247" x2="449" y2="227" class="line"></line><line x1="125" y1="247" x2="125" y2="271" class="line"></line><line x1="449" y1="271" x2="449" y2="247" class="line"></line><path d="M125 271 Q125 281 135 281" class="line"></path><path d="M439 281 Q449 281 449 271" class="line"></path><rect x="147" y="267" width="76" height="32" rx="10"></rect><rect x="145" y="265" width="76" height="32" class="terminal" rx="10"></rect><text class="terminal" x="155" y="285">between</text><line x1="135" y1="281" x2="145" y2="281" class="line"></line><line x1="221" y1="281" x2="231" y2="281" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="243" y="267" width="56" height="32"></rect><rect x="241" y="265" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="251" y="285">FIELD</text></a><line x1="231" y1="281" x2="241" y2="281" class="line"></line><line x1="297" y1="281" x2="307" y2="281" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="319" y="267" width="56" height="32"></rect><rect x="317" y="265" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="327" y="285">FIELD</text></a><line x1="307" y1="281" x2="317" y2="281" class="line"></line><line x1="373" y1="281" x2="383" y2="281" class="line"></line><line x1="383" y1="281" x2="439" y2="281" class="line"></line><line x1="125" y1="271" x2="125" y2="291" class="line"></line><line x1="449" y1="291" x2="449" y2="271" class="line"></line><line x1="125" y1="291" x2="125" y2="315" class="line"></line><line x1="449" y1="315" x2="449" y2="291" class="line"></line><path d="M125 315 Q125 325 135 325" class="line"></path><path d="M439 325 Q449 325 449 315" class="line"></path><rect x="167" y="311" width="44" height="32" rx="10"></rect><rect x="165" y="309" width="44" height="32" class="terminal" rx="10"></rect><text class="terminal" x="175" y="329">like</text><line x1="155" y1="325" x2="165" y2="325" class="line"></line><line x1="209" y1="325" x2="219" y2="325" class="line"></line><line x1="219" y1="325" x2="297" y2="325" class="line"></line><line x1="135" y1="325" x2="155" y2="325" class="line"></line><line x1="297" y1="325" x2="317" y2="325" class="line"></line><path d="M135 325 Q145 325 145 335" class="line"></path><path d="M307 335 Q307 325 317 325" class="line"></path><line x1="145" y1="335" x2="145" y2="359" class="line"></line><line x1="307" y1="359" x2="307" y2="335" class="line"></line><path d="M145 359 Q145 369 155 369" class="line"></path><path d="M297 369 Q307 369 307 359" class="line"></path><rect x="167" y="355" width="68" height="32" rx="10"></rect><rect x="165" y="353" width="68" height="32" class="terminal" rx="10"></rect><text class="terminal" x="175" y="373">notLike</text><line x1="155" y1="369" x2="165" y2="369" class="line"></line><line x1="233" y1="369" x2="243" y2="369" class="line"></line><line x1="243" y1="369" x2="297" y2="369" class="line"></line><line x1="145" y1="359" x2="145" y2="379" class="line"></line><line x1="307" y1="379" x2="307" y2="359" class="line"></line><line x1="145" y1="379" x2="145" y2="403" class="line"></line><line x1="307" y1="403" x2="307" y2="379" class="line"></line><path d="M145 403 Q145 413 155 413" class="line"></path><path d="M297 413 Q307 413 307 403" class="line"></path><rect x="167" y="399" width="56" height="32" rx="10"></rect><rect x="165" y="397" width="56" height="32" class="terminal" rx="10"></rect><text class="terminal" x="175" y="417">equal</text><line x1="155" y1="413" x2="165" y2="413" class="line"></line><line x1="221" y1="413" x2="231" y2="413" class="line"></line><line x1="231" y1="413" x2="297" y2="413" class="line"></line><line x1="145" y1="403" x2="145" y2="423" class="line"></line><line x1="307" y1="423" x2="307" y2="403" class="line"></line><line x1="145" y1="423" x2="145" y2="447" class="line"></line><line x1="307" y1="447" x2="307" y2="423" class="line"></line><path d="M145 447 Q145 457 155 457" class="line"></path><path d="M297 457 Q307 457 307 447" class="line"></path><rect x="167" y="443" width="76" height="32" rx="10"></rect><rect x="165" y="441" width="76" height="32" class="terminal" rx="10"></rect><text class="terminal" x="175" y="461">notEqual</text><line x1="155" y1="457" x2="165" y2="457" class="line"></line><line x1="241" y1="457" x2="251" y2="457" class="line"></line><line x1="251" y1="457" x2="297" y2="457" class="line"></line><line x1="145" y1="447" x2="145" y2="467" class="line"></line><line x1="307" y1="467" x2="307" y2="447" class="line"></line><line x1="145" y1="467" x2="145" y2="491" class="line"></line><line x1="307" y1="491" x2="307" y2="467" class="line"></line><path d="M145 491 Q145 501 155 501" class="line"></path><path d="M297 501 Q307 501 307 491" class="line"></path><rect x="167" y="487" width="78" height="32" rx="10"></rect><rect x="165" y="485" width="78" height="32" class="terminal" rx="10"></rect><text class="terminal" x="175" y="505">lessThan</text><line x1="155" y1="501" x2="165" y2="501" class="line"></line><line x1="243" y1="501" x2="253" y2="501" class="line"></line><line x1="253" y1="501" x2="297" y2="501" class="line"></line><line x1="145" y1="491" x2="145" y2="511" class="line"></line><line x1="307" y1="511" x2="307" y2="491" class="line"></line><line x1="145" y1="511" x2="145" y2="535" class="line"></line><line x1="307" y1="535" x2="307" y2="511" class="line"></line><path d="M145 535 Q145 545 155 545" class="line"></path><path d="M297 545 Q307 545 307 535" class="line"></path><rect x="167" y="531" width="98" height="32" rx="10"></rect><rect x="165" y="529" width="98" height="32" class="terminal" rx="10"></rect><text class="terminal" x="175" y="549">lessOrEqual</text><line x1="155" y1="545" x2="165" y2="545" class="line"></line><line x1="263" y1="545" x2="273" y2="545" class="line"></line><line x1="273" y1="545" x2="297" y2="545" class="line"></line><line x1="145" y1="535" x2="145" y2="555" class="line"></line><line x1="307" y1="555" x2="307" y2="535" class="line"></line><line x1="145" y1="555" x2="145" y2="579" class="line"></line><line x1="307" y1="579" x2="307" y2="555" class="line"></line><path d="M145 579 Q145 589 155 589" class="line"></path><path d="M297 589 Q307 589 307 579" class="line"></path><rect x="167" y="575" width="100" height="32" rx="10"></rect><rect x="165" y="573" width="100" height="32" class="terminal" rx="10"></rect><text class="terminal" x="175" y="593">greaterThan</text><line x1="155" y1="589" x2="165" y2="589" class="line"></line><line x1="265" y1="589" x2="275" y2="589" class="line"></line><line x1="275" y1="589" x2="297" y2="589" class="line"></line><line x1="145" y1="579" x2="145" y2="599" class="line"></line><line x1="307" y1="599" x2="307" y2="579" class="line"></line><line x1="145" y1="599" x2="145" y2="623" class="line"></line><line x1="307" y1="623" x2="307" y2="599" class="line"></line><path d="M145 623 Q145 633 155 633" class="line"></path><path d="M297 633 Q307 633 307 623" class="line"></path><rect x="167" y="619" width="122" height="32" rx="10"></rect><rect x="165" y="617" width="122" height="32" class="terminal" rx="10"></rect><text class="terminal" x="175" y="637">greaterOrEqual</text><line x1="155" y1="633" x2="165" y2="633" class="line"></line><line x1="287" y1="633" x2="297" y2="633" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="329" y="311" width="56" height="32"></rect><rect x="327" y="309" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="337" y="329">FIELD</text></a><line x1="317" y1="325" x2="327" y2="325" class="line"></line><line x1="383" y1="325" x2="393" y2="325" class="line"></line><line x1="393" y1="325" x2="439" y2="325" class="line"></line><line x1="125" y1="315" x2="125" y2="335" class="line"></line><line x1="449" y1="335" x2="449" y2="315" class="line"></line><line x1="125" y1="335" x2="125" y2="689" class="line"></line><line x1="449" y1="689" x2="449" y2="335" class="line"></line><path d="M125 689 Q125 699 135 699" class="line"></path><path d="M439 699 Q449 699 449 689" class="line"></path><rect x="167" y="685" width="32" height="32" rx="10"></rect><rect x="165" y="683" width="32" height="32" class="terminal" rx="10"></rect><text class="terminal" x="175" y="703">in</text><line x1="155" y1="699" x2="165" y2="699" class="line"></line><line x1="197" y1="699" x2="207" y2="699" class="line"></line><line x1="207" y1="699" x2="229" y2="699" class="line"></line><line x1="135" y1="699" x2="155" y2="699" class="line"></line><line x1="229" y1="699" x2="249" y2="699" class="line"></line><path d="M135 699 Q145 699 145 709" class="line"></path><path d="M239 709 Q239 699 249 699" class="line"></path><line x1="145" y1="709" x2="145" y2="733" class="line"></line><line x1="239" y1="733" x2="239" y2="709" class="line"></line><path d="M145 733 Q145 743 155 743" class="line"></path><path d="M229 743 Q239 743 239 733" class="line"></path><rect x="167" y="729" width="54" height="32" rx="10"></rect><rect x="165" y="727" width="54" height="32" class="terminal" rx="10"></rect><text class="terminal" x="175" y="747">notIn</text><line x1="155" y1="743" x2="165" y2="743" class="line"></line><line x1="219" y1="743" x2="229" y2="743" class="line"></line><a xlink:href="#FIELD" xlink:title="FIELD"><rect x="301" y="685" width="56" height="32"></rect><rect x="299" y="683" width="56" height="32" class="nonterminal"></rect><text class="nonterminal" x="309" y="703">FIELD</text></a><line x1="289" y1="699" x2="299" y2="699" class="line"></line><line x1="355" y1="699" x2="365" y2="699" class="line"></line><path d="M269 699 L289 699 M288 699 Q279 699 279 689 L279 677 Q279 667 289 667" class="line"></path><path d="M365 699 L385 699 M365 699 Q375 699 375 689 L375 677 Q375 667 365 667" class="line"></path><line x1="289" y1="667" x2="299" y2="667" class="line"></line><line x1="299" y1="667" x2="365" y2="667" class="line"></line><line x1="249" y1="699" x2="269" y2="699" class="line"></line><line x1="385" y1="699" x2="405" y2="699" class="line"></line><path d="M249 699 Q259 699 259 709" class="line"></path><path d="M395 709 Q395 699 405 699" class="line"></path><line x1="259" y1="709" x2="259" y2="733" class="line"></line><line x1="395" y1="733" x2="395" y2="709" class="line"></line><path d="M259 733 Q259 743 269 743" class="line"></path><path d="M385 743 Q395 743 395 733" class="line"></path><a xlink:href="#SELECT" xlink:title="SELECT"><rect x="281" y="729" width="66" height="32"></rect><rect x="279" y="727" width="66" height="32" class="nonterminal"></rect><text class="nonterminal" x="289" y="747">SELECT</text></a><line x1="269" y1="743" x2="279" y2="743" class="line"></line><line x1="345" y1="743" x2="355" y2="743" class="line"></line><line x1="355" y1="743" x2="385" y2="743" class="line"></line><line x1="405" y1="699" x2="439" y2="699" class="line"></line><line x1="125" y1="689" x2="125" y2="709" class="line"></line><line x1="449" y1="709" x2="449" y2="689" class="line"></line><line x1="125" y1="709" x2="125" y2="777" class="line"></line><line x1="449" y1="777" x2="449" y2="709" class="line"></line><path d="M125 777 Q125 787 135 787" class="line"></path><path d="M439 787 Q449 787 449 777" class="line"></path><rect x="167" y="773" width="80" height="32" rx="10"></rect><rect x="165" y="771" width="80" height="32" class="terminal" rx="10"></rect><text class="terminal" x="175" y="791">equalAny</text><line x1="155" y1="787" x2="165" y2="787" class="line"></line><line x1="245" y1="787" x2="255" y2="787" class="line"></line><line x1="255" y1="787" x2="333" y2="787" class="line"></line><line x1="135" y1="787" x2="155" y2="787" class="line"></line><line x1="333" y1="787" x2="353" y2="787" class="line"></line><path d="M135 787 Q145 787 145 797" class="line"></path><path d="M343 797 Q343 787 353 787" class="line"></path><line x1="145" y1="797" x2="145" y2="821" class="line"></line><line x1="343" y1="821" x2="343" y2="797" class="line"></line><path d="M145 821 Q145 831 155 831" class="line"></path><path d="M333 831 Q343 831 343 821" class="line"></path><rect x="167" y="817" width="92" height="32" rx="10"></rect><rect x="165" y="815" width="92" height="32" class="terminal" rx="10"></rect><text class="terminal" x="175" y="835">equalSome</text><line x1="155" y1="831" x2="165" y2="831" class="line"></line><line x1="257" y1="831" x2="267" y2="831" class="line"></line><line x1="267" y1="831" x2="333" y2="831" class="line"></line><line x1="145" y1="821" x2="145" y2="841" class="line"></line><line x1="343" y1="841" x2="343" y2="821" class="line"></line><line x1="145" y1="841" x2="145" y2="865" class="line"></line><line x1="343" y1="865" x2="343" y2="841" class="line"></line><path d="M145 865 Q145 875 155 875" class="line"></path><path d="M333 875 Q343 875 343 865" class="line"></path><rect x="167" y="861" width="72" height="32" rx="10"></rect><rect x="165" y="859" width="72" height="32" class="terminal" rx="10"></rect><text class="terminal" x="175" y="879">equalAll</text><line x1="155" y1="875" x2="165" y2="875" class="line"></line><line x1="237" y1="875" x2="247" y2="875" class="line"></line><line x1="247" y1="875" x2="333" y2="875" class="line"></line><line x1="145" y1="865" x2="145" y2="885" class="line"></line><line x1="343" y1="885" x2="343" y2="865" class="line"></line><line x1="145" y1="885" x2="145" y2="909" class="line"></line><line x1="343" y1="909" x2="343" y2="885" class="line"></line><path d="M145 909 Q145 919 155 919" class="line"></path><path d="M333 919 Q343 919 343 909" class="line"></path><rect x="167" y="905" width="102" height="32" rx="10"></rect><rect x="165" y="903" width="102" height="32" class="terminal" rx="10"></rect><text class="terminal" x="175" y="923">notEqualAny</text><line x1="155" y1="919" x2="165" y2="919" class="line"></line><line x1="267" y1="919" x2="277" y2="919" class="line"></line><line x1="277" y1="919" x2="333" y2="919" class="line"></line><line x1="145" y1="909" x2="145" y2="929" class="line"></line><line x1="343" y1="929" x2="343" y2="909" class="line"></line><line x1="145" y1="929" x2="145" y2="953" class="line"></line><line x1="343" y1="953" x2="343" y2="929" class="line"></line><path d="M145 953 Q145 963 155 963" class="line"></path><path d="M333 963 Q343 963 343 953" class="line"></path><rect x="167" y="949" width="114" height="32" rx="10"></rect><rect x="165" y="947" width="114" height="32" class="terminal" rx="10"></rect><text class="terminal" x="175" y="967">notEqualSome</text><line x1="155" y1="963" x2="165" y2="963" class="line"></line><line x1="279" y1="963" x2="289" y2="963" class="line"></line><line x1="289" y1="963" x2="333" y2="963" class="line"></line><line x1="145" y1="953" x2="145" y2="973" class="line"></line><line x1="343" y1="973" x2="343" y2="953" class="line"></line><line x1="145" y1="973" x2="145" y2="997" class="line"></line><line x1="343" y1="997" x2="343" y2="973" class="line"></line><path d="M145 997 Q145 1007 155 1007" class="line"></path><path d="M333 1007 Q343 1007 343 997" class="line"></path><rect x="167" y="993" width="94" height="32" rx="10"></rect><rect x="165" y="991" width="94" height="32" class="terminal" rx="10"></rect><text class="terminal" x="175" y="1011">notEqualAll</text><line x1="155" y1="1007" x2="165" y2="1007" class="line"></line><line x1="259" y1="1007" x2="269" y2="1007" class="line"></line><line x1="269" y1="1007" x2="333" y2="1007" class="line"></line><line x1="145" y1="997" x2="145" y2="1017" class="line"></line><line x1="343" y1="1017" x2="343" y2="997" class="line"></line><line x1="145" y1="1017" x2="145" y2="1041" class="line"></line><line x1="343" y1="1041" x2="343" y2="1017" class="line"></line><path d="M145 1041 Q145 1051 155 1051" class="line"></path><path d="M333 1051 Q343 1051 343 1041" class="line"></path><rect x="167" y="1037" width="102" height="32" rx="10"></rect><rect x="165" y="1035" width="102" height="32" class="terminal" rx="10"></rect><text class="terminal" x="175" y="1055">lessThanAny</text><line x1="155" y1="1051" x2="165" y2="1051" class="line"></line><line x1="267" y1="1051" x2="277" y2="1051" class="line"></line><line x1="277" y1="1051" x2="333" y2="1051" class="line"></line><line x1="145" y1="1041" x2="145" y2="1061" class="line"></line><line x1="343" y1="1061" x2="343" y2="1041" class="line"></line><line x1="145" y1="1061" x2="145" y2="1085" class="line"></line><line x1="343" y1="1085" x2="343" y2="1061" class="line"></line><path d="M145 1085 Q145 1095 155 1095" class="line"></path><path d="M333 1095 Q343 1095 343 1085" class="line"></path><rect x="167" y="1081" width="114" height="32" rx="10"></rect><rect x="165" y="1079" width="114" height="32" class="terminal" rx="10"></rect><text class="terminal" x="175" y="1099">lessThanSome</text><line x1="155" y1="1095" x2="165" y2="1095" class="line"></line><line x1="279" y1="1095" x2="289" y2="1095" class="line"></line><line x1="289" y1="1095" x2="333" y2="1095" class="line"></line><line x1="145" y1="1085" x2="145" y2="1105" class="line"></line><line x1="343" y1="1105" x2="343" y2="1085" class="line"></line><line x1="145" y1="1105" x2="145" y2="1129" class="line"></line><line x1="343" y1="1129" x2="343" y2="1105" class="line"></line><path d="M145 1129 Q145 1139 155 1139" class="line"></path><path d="M333 1139 Q343 1139 343 1129" class="line"></path><rect x="167" y="1125" width="94" height="32" rx="10"></rect><rect x="165" y="1123" width="94" height="32" class="terminal" rx="10"></rect><text class="terminal" x="175" y="1143">lessThanAll</text><line x1="155" y1="1139" x2="165" y2="1139" class="line"></line><line x1="259" y1="1139" x2="269" y2="1139" class="line"></line><line x1="269" y1="1139" x2="333" y2="1139" class="line"></line><line x1="145" y1="1129" x2="145" y2="1149" class="line"></line><line x1="343" y1="1149" x2="343" y2="1129" class="line"></line><line x1="145" y1="1149" x2="145" y2="1173" class="line"></line><line x1="343" y1="1173" x2="343" y2="1149" class="line"></line><path d="M145 1173 Q145 1183 155 1183" class="line"></path><path d="M333 1183 Q343 1183 343 1173" class="line"></path><rect x="167" y="1169" width="124" height="32" rx="10"></rect><rect x="165" y="1167" width="124" height="32" class="terminal" rx="10"></rect><text class="terminal" x="175" y="1187">lessOrEqualAny</text><line x1="155" y1="1183" x2="165" y2="1183" class="line"></line><line x1="289" y1="1183" x2="299" y2="1183" class="line"></line><line x1="299" y1="1183" x2="333" y2="1183" class="line"></line><line x1="145" y1="1173" x2="145" y2="1193" class="line"></line><line x1="343" y1="1193" x2="343" y2="1173" class="line"></line><line x1="145" y1="1193" x2="145" y2="1217" class="line"></line><line x1="343" y1="1217" x2="343" y2="1193" class="line"></line><path d="M145 1217 Q145 1227 155 1227" class="line"></path><path d="M333 1227 Q343 1227 343 1217" class="line"></path><rect x="167" y="1213" width="136" height="32" rx="10"></rect><rect x="165" y="1211" width="136" height="32" class="terminal" rx="10"></rect><text class="terminal" x="175" y="1231">lessOrEqualSome</text><line x1="155" y1="1227" x2="165" y2="1227" class="line"></line><line x1="301" y1="1227" x2="311" y2="1227" class="line"></line><line x1="311" y1="1227" x2="333" y2="1227" class="line"></line><line x1="145" y1="1217" x2="145" y2="1237" class="line"></line><line x1="343" y1="1237" x2="343" y2="1217" class="line"></line><line x1="145" y1="1237" x2="145" y2="1261" class="line"></line><line x1="343" y1="1261" x2="343" y2="1237" class="line"></line><path d="M145 1261 Q145 1271 155 1271" class="line"></path><path d="M333 1271 Q343 1271 343 1261" class="line"></path><rect x="167" y="1257" width="116" height="32" rx="10"></rect><rect x="165" y="1255" width="116" height="32" class="terminal" rx="10"></rect><text class="terminal" x="175" y="1275">lessOrEqualAll</text><line x1="155" y1="1271" x2="165" y2="1271" class="line"></line><line x1="281" y1="1271" x2="291" y2="1271" class="line"></line><line x1="291" y1="1271" x2="333" y2="1271" class="line"></line><line x1="145" y1="1261" x2="145" y2="1281" class="line"></line><line x1="343" y1="1281" x2="343" y2="1261" class="line"></line><line x1="145" y1="1281" x2="145" y2="1305" class="line"></line><line x1="343" y1="1305" x2="343" y2="1281" class="line"></line><path d="M145 1305 Q145 1315 155 1315" class="line"></path><path d="M333 1315 Q343 1315 343 1305" class="line"></path><rect x="167" y="1301" width="126" height="32" rx="10"></rect><rect x="165" y="1299" width="126" height="32" class="terminal" rx="10"></rect><text class="terminal" x="175" y="1319">greaterThanAny</text><line x1="155" y1="1315" x2="165" y2="1315" class="line"></line><line x1="291" y1="1315" x2="301" y2="1315" class="line"></line><line x1="301" y1="1315" x2="333" y2="1315" class="line"></line><line x1="145" y1="1305" x2="145" y2="1325" class="line"></line><line x1="343" y1="1325" x2="343" y2="1305" class="line"></line><line x1="145" y1="1325" x2="145" y2="1349" class="line"></line><line x1="343" y1="1349" x2="343" y2="1325" class="line"></line><path d="M145 1349 Q145 1359 155 1359" class="line"></path><path d="M333 1359 Q343 1359 343 1349" class="line"></path><rect x="167" y="1345" width="138" height="32" rx="10"></rect><rect x="165" y="1343" width="138" height="32" class="terminal" rx="10"></rect><text class="terminal" x="175" y="1363">greaterThanSome</text><line x1="155" y1="1359" x2="165" y2="1359" class="line"></line><line x1="303" y1="1359" x2="313" y2="1359" class="line"></line><line x1="313" y1="1359" x2="333" y2="1359" class="line"></line><line x1="145" y1="1349" x2="145" y2="1369" class="line"></line><line x1="343" y1="1369" x2="343" y2="1349" class="line"></line><line x1="145" y1="1369" x2="145" y2="1393" class="line"></line><line x1="343" y1="1393" x2="343" y2="1369" class="line"></line><path d="M145 1393 Q145 1403 155 1403" class="line"></path><path d="M333 1403 Q343 1403 343 1393" class="line"></path><rect x="167" y="1389" width="118" height="32" rx="10"></rect><rect x="165" y="1387" width="118" height="32" class="terminal" rx="10"></rect><text class="terminal" x="175" y="1407">greaterThanAll</text><line x1="155" y1="1403" x2="165" y2="1403" class="line"></line><line x1="283" y1="1403" x2="293" y2="1403" class="line"></line><line x1="293" y1="1403" x2="333" y2="1403" class="line"></line><line x1="145" y1="1393" x2="145" y2="1413" class="line"></line><line x1="343" y1="1413" x2="343" y2="1393" class="line"></line><line x1="145" y1="1413" x2="145" y2="1437" class="line"></line><line x1="343" y1="1437" x2="343" y2="1413" class="line"></line><path d="M145 1437 Q145 1447 155 1447" class="line"></path><path d="M333 1447 Q343 1447 343 1437" class="line"></path><rect x="167" y="1433" width="146" height="32" rx="10"></rect><rect x="165" y="1431" width="146" height="32" class="terminal" rx="10"></rect><text class="terminal" x="175" y="1451">greaterOrEqualAny</text><line x1="155" y1="1447" x2="165" y2="1447" class="line"></line><line x1="311" y1="1447" x2="321" y2="1447" class="line"></line><line x1="321" y1="1447" x2="333" y2="1447" class="line"></line><line x1="145" y1="1437" x2="145" y2="1457" class="line"></line><line x1="343" y1="1457" x2="343" y2="1437" class="line"></line><line x1="145" y1="1457" x2="145" y2="1481" class="line"></line><line x1="343" y1="1481" x2="343" y2="1457" class="line"></line><path d="M145 1481 Q145 1491 155 1491" class="line"></path><path d="M333 1491 Q343 1491 343 1481" class="line"></path><rect x="167" y="1477" width="158" height="32" rx="10"></rect><rect x="165" y="1475" width="158" height="32" class="terminal" rx="10"></rect><text class="terminal" x="175" y="1495">greaterOrEqualSome</text><line x1="155" y1="1491" x2="165" y2="1491" class="line"></line><line x1="323" y1="1491" x2="333" y2="1491" class="line"></line><line x1="145" y1="1481" x2="145" y2="1501" class="line"></line><line x1="343" y1="1501" x2="343" y2="1481" class="line"></line><line x1="145" y1="1501" x2="145" y2="1525" class="line"></line><line x1="343" y1="1525" x2="343" y2="1501" class="line"></line><path d="M145 1525 Q145 1535 155 1535" class="line"></path><path d="M333 1535 Q343 1535 343 1525" class="line"></path><rect x="167" y="1521" width="138" height="32" rx="10"></rect><rect x="165" y="1519" width="138" height="32" class="terminal" rx="10"></rect><text class="terminal" x="175" y="1539">greaterOrEqualAll</text><line x1="155" y1="1535" x2="165" y2="1535" class="line"></line><line x1="303" y1="1535" x2="313" y2="1535" class="line"></line><line x1="313" y1="1535" x2="333" y2="1535" class="line"></line><a xlink:href="#SELECT" xlink:title="SELECT"><rect x="365" y="773" width="66" height="32"></rect><rect x="363" y="771" width="66" height="32" class="nonterminal"></rect><text class="nonterminal" x="373" y="791">SELECT</text></a><line x1="353" y1="787" x2="363" y2="787" class="line"></line><line x1="429" y1="787" x2="439" y2="787" class="line"></line><line x1="29" y1="95" x2="29" y2="115" class="line"></line><line x1="469" y1="115" x2="469" y2="95" class="line"></line><line x1="29" y1="115" x2="29" y2="1569" class="line"></line><line x1="469" y1="1569" x2="469" y2="115" class="line"></line><path d="M29 1569 Q29 1579 39 1579" class="line"></path><path d="M459 1579 Q469 1579 469 1569" class="line"></path><rect x="51" y="1565" width="80" height="32" rx="10"></rect><rect x="49" y="1563" width="80" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="1583">condition</text><line x1="39" y1="1579" x2="49" y2="1579" class="line"></line><line x1="129" y1="1579" x2="139" y2="1579" class="line"></line><a xlink:href="#SQL" xlink:title="SQL"><rect x="151" y="1565" width="44" height="32"></rect><rect x="149" y="1563" width="44" height="32" class="nonterminal"></rect><text class="nonterminal" x="159" y="1583">SQL</text></a><line x1="139" y1="1579" x2="149" y2="1579" class="line"></line><line x1="193" y1="1579" x2="203" y2="1579" class="line"></line><line x1="203" y1="1579" x2="459" y2="1579" class="line"></line><line x1="29" y1="1569" x2="29" y2="1589" class="line"></line><line x1="469" y1="1589" x2="469" y2="1569" class="line"></line><line x1="29" y1="1589" x2="29" y2="1613" class="line"></line><line x1="469" y1="1613" x2="469" y2="1589" class="line"></line><path d="M29 1613 Q29 1623 39 1623" class="line"></path><path d="M459 1623 Q469 1623 469 1613" class="line"></path><rect x="51" y="1609" width="108" height="32" rx="10"></rect><rect x="49" y="1607" width="108" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="1627">trueCondition</text><line x1="39" y1="1623" x2="49" y2="1623" class="line"></line><line x1="157" y1="1623" x2="167" y2="1623" class="line"></line><line x1="167" y1="1623" x2="459" y2="1623" class="line"></line><line x1="29" y1="1613" x2="29" y2="1633" class="line"></line><line x1="469" y1="1633" x2="469" y2="1613" class="line"></line><line x1="29" y1="1633" x2="29" y2="1657" class="line"></line><line x1="469" y1="1657" x2="469" y2="1633" class="line"></line><path d="M29 1657 Q29 1667 39 1667" class="line"></path><path d="M459 1667 Q469 1667 469 1657" class="line"></path><rect x="51" y="1653" width="114" height="32" rx="10"></rect><rect x="49" y="1651" width="114" height="32" class="terminal" rx="10"></rect><text class="terminal" x="59" y="1671">falseCondition</text><line x1="39" y1="1667" x2="49" y2="1667" class="line"></line><line x1="163" y1="1667" x2="173" y2="1667" class="line"></line><line x1="173" y1="1667" x2="459" y2="1667" class="line"></line><line x1="29" y1="1657" x2="29" y2="1677" class="line"></line><line x1="469" y1="1677" x2="469" y2="1657" class="line"></line><line x1="29" y1="1677" x2="29" y2="1701" class="line"></line><line x1="469" y1="1701" x2="469" y2="1677" class="line"></line><path d="M29 1701 Q29 1711 39 1711" class="line"></path><path d="M459 1711 Q469 1711 469 1701" class="line"></path><rect x="71" y="1697" width="58" height="32" rx="10"></rect><rect x="69" y="1695" width="58" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="1715">exists</text><line x1="59" y1="1711" x2="69" y2="1711" class="line"></line><line x1="127" y1="1711" x2="137" y2="1711" class="line"></line><line x1="137" y1="1711" x2="159" y2="1711" class="line"></line><line x1="39" y1="1711" x2="59" y2="1711" class="line"></line><line x1="159" y1="1711" x2="179" y2="1711" class="line"></line><path d="M39 1711 Q49 1711 49 1721" class="line"></path><path d="M169 1721 Q169 1711 179 1711" class="line"></path><line x1="49" y1="1721" x2="49" y2="1745" class="line"></line><line x1="169" y1="1745" x2="169" y2="1721" class="line"></line><path d="M49 1745 Q49 1755 59 1755" class="line"></path><path d="M159 1755 Q169 1755 169 1745" class="line"></path><rect x="71" y="1741" width="80" height="32" rx="10"></rect><rect x="69" y="1739" width="80" height="32" class="terminal" rx="10"></rect><text class="terminal" x="79" y="1759">notExists</text><line x1="59" y1="1755" x2="69" y2="1755" class="line"></line><line x1="149" y1="1755" x2="159" y2="1755" class="line"></line><a xlink:href="#SELECT" xlink:title="SELECT"><rect x="191" y="1697" width="66" height="32"></rect><rect x="189" y="1695" width="66" height="32" class="nonterminal"></rect><text class="nonterminal" x="199" y="1715">SELECT</text></a><line x1="179" y1="1711" x2="189" y2="1711" class="line"></line><line x1="255" y1="1711" x2="265" y2="1711" class="line"></line><line x1="265" y1="1711" x2="459" y2="1711" class="line"></line><line x1="482" y1="17" x2="479" y2="17" class="line"></line><polygon points="489 17 497 13 497 21" class="filled"></polygon><polygon points="489 17 481 13 481 21" class="filled"></polygon></svg><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">referenced by:<xhtml:ul><xhtml:li><xhtml:a href="#CONDITION" title="CONDITION">CONDITION</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#DELETE" title="DELETE">DELETE</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#FIELD" title="FIELD">FIELD</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#MERGE" title="MERGE">MERGE</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#MORE_CONDITIONS" title="MORE_CONDITIONS">MORE_CONDITIONS</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#RESULT" title="RESULT">RESULT</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#SELECT" title="SELECT">SELECT</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#UPDATE" title="UPDATE">UPDATE</xhtml:a></xhtml:li></xhtml:ul></xhtml:p><xhtml:br xmlns:xhtml="http://www.w3.org/1999/xhtml"></xhtml:br><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml" style="font-size: 14px; font-weight:bold"><xhtml:a name="MORE_CONDITIONS">MORE_CONDITIONS:</xhtml:a></xhtml:p><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="374" height="360"><defs><style type="text/css">
    -
    -    @namespace "http://www.w3.org/2000/svg";
    -    .line                 {fill: none; stroke: #332900;}
    -    filled                {fill: #332900; stroke: none;}
    -    text                  {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                          }
    -    text.terminal         {font-family: Verdana, Sans-serif;
    -                            font-size: 12px;
    -                            fill: #4D3D00;
    -                            font-weight: bold;
    -                          }
    -    rect, circle, polygon {fill: #332900; stroke: #332900;}
    -    rect.terminal         {fill: #FFCC00; stroke: #332900;}
    -    rect.nonterminal      {fill: #FFEB99; stroke: #332900;}
    -    rect.text             {fill: none; stroke: none;}    
    -    polygon.regexp        {fill: #FFF5CC; stroke: #332900;}
    -  </style></defs><polygon points="9 33 1 29 1 37" class="filled"></polygon><polygon points="17 33 9 29 9 37" class="filled"></polygon><line x1="17" y1="33" x2="19" y2="33" class="line"></line><rect x="91" y="19" width="44" height="32" rx="10"></rect><rect x="89" y="17" width="44" height="32" class="terminal" rx="10"></rect><text class="terminal" x="99" y="37">and</text><line x1="79" y1="33" x2="89" y2="33" class="line"></line><line x1="133" y1="33" x2="143" y2="33" class="line"></line><line x1="59" y1="33" x2="79" y2="33" class="line"></line><line x1="143" y1="33" x2="163" y2="33" class="line"></line><path d="M59 33 Q69 33 69 43" class="line"></path><path d="M153 43 Q153 33 163 33" class="line"></path><line x1="69" y1="43" x2="69" y2="67" class="line"></line><line x1="153" y1="67" x2="153" y2="43" class="line"></line><path d="M69 67 Q69 77 79 77" class="line"></path><path d="M143 77 Q153 77 153 67" class="line"></path><rect x="91" y="63" width="34" height="32" rx="10"></rect><rect x="89" y="61" width="34" height="32" class="terminal" rx="10"></rect><text class="terminal" x="99" y="81">or</text><line x1="79" y1="77" x2="89" y2="77" class="line"></line><line x1="123" y1="77" x2="133" y2="77" class="line"></line><line x1="133" y1="77" x2="143" y2="77" class="line"></line><a xlink:href="#CONDITION" xlink:title="CONDITION"><rect x="195" y="19" width="92" height="32"></rect><rect x="193" y="17" width="92" height="32" class="nonterminal"></rect><text class="nonterminal" x="203" y="37">CONDITION</text></a><line x1="183" y1="33" x2="193" y2="33" class="line"></line><line x1="285" y1="33" x2="295" y2="33" class="line"></line><line x1="163" y1="33" x2="183" y2="33" class="line"></line><line x1="295" y1="33" x2="315" y2="33" class="line"></line><path d="M163 33 Q173 33 173 43" class="line"></path><path d="M305 43 Q305 33 315 33" class="line"></path><line x1="173" y1="43" x2="173" y2="67" class="line"></line><line x1="305" y1="67" x2="305" y2="43" class="line"></line><path d="M173 67 Q173 77 183 77" class="line"></path><path d="M295 77 Q305 77 305 67" class="line"></path><a xlink:href="#SQL" xlink:title="SQL"><rect x="195" y="63" width="44" height="32"></rect><rect x="193" y="61" width="44" height="32" class="nonterminal"></rect><text class="nonterminal" x="203" y="81">SQL</text></a><line x1="183" y1="77" x2="193" y2="77" class="line"></line><line x1="237" y1="77" x2="247" y2="77" class="line"></line><line x1="247" y1="77" x2="295" y2="77" class="line"></line><line x1="39" y1="33" x2="59" y2="33" class="line"></line><line x1="315" y1="33" x2="335" y2="33" class="line"></line><path d="M39 33 Q49 33 49 43" class="line"></path><path d="M325 43 Q325 33 335 33" class="line"></path><line x1="49" y1="43" x2="49" y2="111" class="line"></line><line x1="325" y1="111" x2="325" y2="43" class="line"></line><path d="M49 111 Q49 121 59 121" class="line"></path><path d="M315 121 Q325 121 325 111" class="line"></path><rect x="91" y="107" width="66" height="32" rx="10"></rect><rect x="89" y="105" width="66" height="32" class="terminal" rx="10"></rect><text class="terminal" x="99" y="125">andNot</text><line x1="79" y1="121" x2="89" y2="121" class="line"></line><line x1="155" y1="121" x2="165" y2="121" class="line"></line><line x1="59" y1="121" x2="79" y2="121" class="line"></line><line x1="165" y1="121" x2="185" y2="121" class="line"></line><path d="M59 121 Q69 121 69 131" class="line"></path><path d="M175 131 Q175 121 185 121" class="line"></path><line x1="69" y1="131" x2="69" y2="155" class="line"></line><line x1="175" y1="155" x2="175" y2="131" class="line"></line><path d="M69 155 Q69 165 79 165" class="line"></path><path d="M165 165 Q175 165 175 155" class="line"></path><rect x="91" y="151" width="56" height="32" rx="10"></rect><rect x="89" y="149" width="56" height="32" class="terminal" rx="10"></rect><text class="terminal" x="99" y="169">orNot</text><line x1="79" y1="165" x2="89" y2="165" class="line"></line><line x1="145" y1="165" x2="155" y2="165" class="line"></line><line x1="155" y1="165" x2="165" y2="165" class="line"></line><a xlink:href="#CONDITION" xlink:title="CONDITION"><rect x="197" y="107" width="92" height="32"></rect><rect x="195" y="105" width="92" height="32" class="nonterminal"></rect><text class="nonterminal" x="205" y="125">CONDITION</text></a><line x1="185" y1="121" x2="195" y2="121" class="line"></line><line x1="287" y1="121" x2="297" y2="121" class="line"></line><line x1="297" y1="121" x2="315" y2="121" class="line"></line><line x1="49" y1="111" x2="49" y2="131" class="line"></line><line x1="325" y1="131" x2="325" y2="111" class="line"></line><line x1="49" y1="131" x2="49" y2="199" class="line"></line><line x1="325" y1="199" x2="325" y2="131" class="line"></line><path d="M49 199 Q49 209 59 209" class="line"></path><path d="M315 209 Q325 209 325 199" class="line"></path><rect x="91" y="195" width="82" height="32" rx="10"></rect><rect x="89" y="193" width="82" height="32" class="terminal" rx="10"></rect><text class="terminal" x="99" y="213">andExists</text><line x1="79" y1="209" x2="89" y2="209" class="line"></line><line x1="171" y1="209" x2="181" y2="209" class="line"></line><line x1="181" y1="209" x2="205" y2="209" class="line"></line><line x1="59" y1="209" x2="79" y2="209" class="line"></line><line x1="205" y1="209" x2="225" y2="209" class="line"></line><path d="M59 209 Q69 209 69 219" class="line"></path><path d="M215 219 Q215 209 225 209" class="line"></path><line x1="69" y1="219" x2="69" y2="243" class="line"></line><line x1="215" y1="243" x2="215" y2="219" class="line"></line><path d="M69 243 Q69 253 79 253" class="line"></path><path d="M205 253 Q215 253 215 243" class="line"></path><rect x="91" y="239" width="106" height="32" rx="10"></rect><rect x="89" y="237" width="106" height="32" class="terminal" rx="10"></rect><text class="terminal" x="99" y="257">andNotExists</text><line x1="79" y1="253" x2="89" y2="253" class="line"></line><line x1="195" y1="253" x2="205" y2="253" class="line"></line><line x1="69" y1="243" x2="69" y2="263" class="line"></line><line x1="215" y1="263" x2="215" y2="243" class="line"></line><line x1="69" y1="263" x2="69" y2="287" class="line"></line><line x1="215" y1="287" x2="215" y2="263" class="line"></line><path d="M69 287 Q69 297 79 297" class="line"></path><path d="M205 297 Q215 297 215 287" class="line"></path><rect x="91" y="283" width="72" height="32" rx="10"></rect><rect x="89" y="281" width="72" height="32" class="terminal" rx="10"></rect><text class="terminal" x="99" y="301">orExists</text><line x1="79" y1="297" x2="89" y2="297" class="line"></line><line x1="161" y1="297" x2="171" y2="297" class="line"></line><line x1="171" y1="297" x2="205" y2="297" class="line"></line><line x1="69" y1="287" x2="69" y2="307" class="line"></line><line x1="215" y1="307" x2="215" y2="287" class="line"></line><line x1="69" y1="307" x2="69" y2="331" class="line"></line><line x1="215" y1="331" x2="215" y2="307" class="line"></line><path d="M69 331 Q69 341 79 341" class="line"></path><path d="M205 341 Q215 341 215 331" class="line"></path><rect x="91" y="327" width="96" height="32" rx="10"></rect><rect x="89" y="325" width="96" height="32" class="terminal" rx="10"></rect><text class="terminal" x="99" y="345">orNotExists</text><line x1="79" y1="341" x2="89" y2="341" class="line"></line><line x1="185" y1="341" x2="195" y2="341" class="line"></line><line x1="195" y1="341" x2="205" y2="341" class="line"></line><a xlink:href="#SELECT" xlink:title="SELECT"><rect x="237" y="195" width="66" height="32"></rect><rect x="235" y="193" width="66" height="32" class="nonterminal"></rect><text class="nonterminal" x="245" y="213">SELECT</text></a><line x1="225" y1="209" x2="235" y2="209" class="line"></line><line x1="301" y1="209" x2="311" y2="209" class="line"></line><line x1="311" y1="209" x2="315" y2="209" class="line"></line><path d="M19 33 L39 33 M38 33 Q29 33 29 23 L29 11 Q29 1 39 1" class="line"></path><path d="M335 33 L355 33 M335 33 Q345 33 345 23 L345 11 Q345 1 335 1" class="line"></path><line x1="39" y1="1" x2="49" y2="1" class="line"></line><line x1="49" y1="1" x2="335" y2="1" class="line"></line><line x1="358" y1="33" x2="355" y2="33" class="line"></line><polygon points="365 33 373 29 373 37" class="filled"></polygon><polygon points="365 33 357 29 357 37" class="filled"></polygon></svg><xhtml:p xmlns:xhtml="http://www.w3.org/1999/xhtml">referenced by:<xhtml:ul><xhtml:li><xhtml:a href="#CONDITION" title="CONDITION">CONDITION</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#DELETE" title="DELETE">DELETE</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#MERGE" title="MERGE">MERGE</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#SELECT" title="SELECT">SELECT</xhtml:a></xhtml:li><xhtml:li><xhtml:a href="#UPDATE" title="UPDATE">UPDATE</xhtml:a></xhtml:li></xhtml:ul></xhtml:p><xhtml:br xmlns:xhtml="http://www.w3.org/1999/xhtml"></xhtml:br></body></html>
    \ No newline at end of file
    diff --git a/jOOQ-website/sql-as-seen-by-jooq.txt b/jOOQ-website/sql-as-seen-by-jooq.txt
    deleted file mode 100644
    index 86568e6a01..0000000000
    --- a/jOOQ-website/sql-as-seen-by-jooq.txt
    +++ /dev/null
    @@ -1,214 +0,0 @@
    -QUERY ::= ( SELECT | 
    -            RESULT_QUERY |
    -            UPDATE |
    -            INSERT |
    -            DELETE |
    -            MERGE |
    -            TRUNCATE |
    -            'query' SQL )
    -
    -RESULT_QUERY ::= ( SELECT |
    -                   'resultQuery' SQL )
    -
    -RESULT ::=   ( 'fetch' | 'fetchMany' | 'fetchOne' ) SQL |
    -             ( 'fetch' | 'fetchOne' ) TABLE CONDITION? |
    -             ( 'fetchAny' TABLE ) |
    -             ( 'fetch' 'JDBC ResultSet' ) |
    -             RESULT_QUERY
    -             ( 'fetch' |
    -               'fetchMany' |
    -               'fetchOne' |
    -               'fetchAny' |
    -               'fetchMaps' |
    -               'fetchOneMap' |
    -               'fetchMap' |
    -               'fetchArrays' |
    -               'fetchArray' |
    -               'fetchOneArray' |
    -               'fetchInto' |
    -               'fetchLater' |
    -               'execute' 'getResult' )
    -
    -CURSOR ::= ( RESULT_QUERY 'fetchLazy' )
    -
    -SELECT ::= ( ( 'select' | 'selectDistinct' ) FIELD* |
    -               'selectOne' |
    -               'selectZero' |
    -               'selectCount' )
    -             ( 'select' FIELD* )* 
    -             ( 'hint' SQL )*
    -             ( 'from' ( TABLE+ | SQL )
    -               ( ( 'join' | 'leftOuterJoin' | 'rightOuterJoin' | 'fullOuterJoin' )
    -                 ( TABLE | SQL ) 
    -                 ( 'on' ( CONDITION+ | SQL ) MORE_CONDITIONS? |
    -                   'using' FIELD+ ) |
    -                 ( 'crossJoin' | 'naturalJoin' | 'naturalLeftOuterJoin' | 'naturalRightOuterJoin' )
    -               ( TABLE | SQL ) )* )?
    -             ( ( 'where' ( CONDITION+ | SQL ) | 
    -                 ( 'whereExists' | 'whereNotExists' ) SELECT ) MORE_CONDITIONS? )?
    -             ( ( 'connectBy' | 'connectByNoCycle' )
    -               ( CONDITION | SQL )
    -               ( 'and' ( CONDITION | SQL ) )* 
    -               ( 'startWith' ( CONDITION | SQL ) )? )?
    -             ( 'groupBy' GROUP_FIELD+ )?
    -             ( 'having' ( CONDITION+ | SQL ) MORE_CONDITIONS? )?
    -             ( 'orderBy' ( FIELD+ | SORT_FIELD+ | INT+ ) )?
    -             ( ( 'limit' INT ( 'offset' INT | INT )? ) |
    -               ( ( 'forUpdate' 
    -                   ( 'of' ( FIELD+ | TABLE+ ) )? 
    -                   ( 'wait' INT |
    -                     'noWait' |
    -                     'skipLocked' )? ) |
    -                 'forShare' ) )?
    -           ( ( 'union' | 'unionAll' | 'except' | 'intersect' ) SELECT )*
    -
    -UPDATE ::=  ( 'update' TABLE )
    -            ( 'set' FIELD FIELD )+
    -            ( ( 'where' ( CONDITION+ | SQL ) | 
    -            ( 'whereExists' | 'whereNotExists' ) SELECT ) MORE_CONDITIONS? )?
    -
    -INSERT ::=  ( 'insertInto' )
    -            ( SELECT | 
    -              TABLE 
    -              ( ( ( 'set' FIELD FIELD )+ ( 'newRecord' ( 'set' FIELD FIELD )+ )* | 
    -                        ( 'values' FIELD+ )+ ) |
    -                FIELD+ ( 'values' FIELD+ )+ ) 
    -              ( ( 'onDuplicateKeyUpdate' ( 'set' FIELD FIELD )+ ) | 
    -                ( 'returning' FIELD* ) )? )
    -
    -DELETE ::=  ( 'delete' TABLE )
    -            ( ( 'where' ( CONDITION+ | SQL ) | 
    -            ( 'whereExists' | 'whereNotExists' ) SELECT ) MORE_CONDITIONS? )?
    -
    -MERGE ::= ( 'mergeInto' TABLE )
    -          ( 'using' TABLE | 'usingDual' )
    -          ( 'on' ( CONDITION+ | SQL ) MORE_CONDITIONS? )
    -          ( 'whenMatchedThenUpdate' 
    -            ( 'set' FIELD FIELD )+ 
    -            ( 'where' CONDITION 
    -              ( 'deleteWhere' CONDITION )? )? )?
    -          ( 'whenNotMatchedThenInsert' 
    -            ( ( 'set' FIELD FIELD )+ | 
    -              ( FIELD+ 'values' FIELD+) ) 
    -            ( 'where' CONDITION )? )?
    -
    -TRUNCATE ::= 'truncate' TABLE
    -
    -SQL ::= 'SQL String' BINDING*
    -
    -BINDING ::= 'Any Java Object'
    -BINDING_MAP ::= 'A map of bind values'
    -
    -FIELD ::= ( 'jOOQ generated Field' ) |
    -          ( 'CustomField' ) |
    -          ( ( 'val' | 'value' ) BINDING ) |
    -          ( 'param' NAME BINDING? ) |
    -          ( 'literal' BINDING ) |
    -          FIELD 'as' NAME |
    -          FIELD 'cast' TYPE |
    -          ( 'zero' | 'one' | 'two' | 'pi' | 'e' ) |
    -          ( 'currentDate' | 'currentTime' | 'currentTimestamp' | 'currentUser' ) |
    -          ( 'rand' ) |
    -          ( 'field' SQL ) |
    -          ( 'function' NAME FIELD* ) |
    -          ( ( 'decode' )
    -            ( ( ( ( 'value' FIELD )
    -                  ( 'when' FIELD FIELD )+ ) |
    -                  ( 'when' CONDITION FIELD )+ )
    -              ( 'otherwise' FIELD )? | 
    -              ( FIELD+ ) ) ) |
    -          ( 'grouping' FIELD ) |
    -          ( 'groupingId' FIELD+ ) |
    -          ( 'cast' BINDING TYPE ) |
    -          ( 'castNull' TYPE ) |
    -          ( ( 'coalesce' | 'concat' | 'greatest' | 'least' ) FIELD+ ) |
    -          ( ( 'nvl' | 'nullif' ) FIELD FIELD ) |
    -          ( 'nvl2' FIELD FIELD FIELD ) |
    -          ( ( 'upper' | 'lower' | 'trim' | 'rtrim' | 'ltrim' | 
    -              'ascii' | 'length' | 'charLength' | 'bitLength' | 'octetLength' ) FIELD ) |
    -          ( ( 'rpad' | 'lpad' | 'replace' | 'substring' ) FIELD FIELD FIELD? ) |
    -          ( ( 'repeat' | 'position' ) FIELD FIELD ) |
    -          ( 'extract' FIELD FIELD ) |
    -          ( ( 'bitCount' | 'bitNot' ) FIELD ) |
    -          ( ( 'bitAnd' | 'bitNand' | 'bitOr' | 'bitNor' | 'bitXor' | 'bitXNor' | 'shl' | 'shr' ) FIELD FIELD ) |
    -          ( FIELD 'neg' ) |
    -          ( FIELD ( 'add' | 'sub' | 'mul' | 'div' | 'mod' ) FIELD ) |
    -          ( ( 'sign' | 'abs' | 'floor' | 'ceil' | 'sqrt' | 'exp' | 'ln' | 
    -              'acos' | 'asin' | 'atan' | 'cos' | 'sin' | 'tan' | 'cot' |
    -              'sinh' | 'cosh' | 'tanh' | 'coth' | 'deg' | 'rad' ) FIELD ) |
    -          ( ( 'log' | 'power' | 'atan2' ) FIELD FIELD ) |
    -          ( 'round' FIELD FIELD? ) |
    -          AGGREGATE_FUNCTION ( 'over' PARTITION_CLAUSE )?
    -
    -AGGREGATE_FUNCTION ::=           
    -              'count' | 'rowNumber' | 'rank' | 'denseRank' | 'percentRank' | 'cumeDist' |
    -              ( ( 'count' | 'countDistinct' | 
    -			      'max' | 'maxDistinct' |
    -				  'min' | 'minDistinct' |
    -				  'sum' | 'sumDistinct' |
    -				  'avg' | 'avgDistinct' |
    -				  'median' | 
    -                  'stddevPop' | 'stddevSamp' | 'varPop' | 'varSamp' ) FIELD ) |
    -              ( 'ntile' INT ) | 
    -              ( ( ( 'firstValue' | 'lastValue' ) FIELD |
    -                  ( ( 'lead' | 'lag' ) FIELD ( INT FIELD? )? ) ) 
    -                ( 'ignoreNulls' | 'respectNulls' )? )
    -
    -PARTITION_CLAUSE ::= ( 'partitionBy' FIELD+ | 'partitionByOne' )?
    -                     ( 'orderBy' ( FIELD+ | SORT_FIELD+ )
    -                       ( 'rowsUnboundedPreceding' | 
    -                         'rowsPreceding' INT | 
    -                         'rowsCurrentRow' |
    -                         'rowsUnboundedFollowing' |
    -                         'rowsFollowing' INT | 
    -                         ( 'rowsBetweenUnboundedPreceding' | 
    -                           'rowsBetweenPreceding' INT |
    -                           'rowsBetweenCurrentRow' |
    -                           'rowsBetweenUnboundedFollowing' |
    -                           'rowsBetweenFollowing' INT ) 
    -                         ( 'andUnboundedPreceding' |
    -                           'andPreceding' INT |
    -                           'andCurrentRow' |
    -                           'andUnboundedFollowing' |
    -                           'andFollowing' INT ) )? )?
    -           
    -GROUP_FIELD ::= ( FIELD | 
    -                  'rollup' FIELD+ |
    -                  'cube' FIELD+ |
    -                  'groupingSets' ( FIELD+ | ( '[' FIELD+ ']' )+ ) )
    -
    -
    -SORT_FIELD ::= FIELD ( 'asc' | 'desc' | 'sortAsc' BINDING+ | 'sortDesc' BINDING+ | 'sort' BINDING_MAP )
    -                     ( 'nullsFirst' | 'nullsLast' )?
    -INT ::= [0-9]+ /* ws: explicit */
    -NAME ::= [A-Za-z0-9]+ /* ws: explicit */
    -TABLE ::= ( 'jOOQ generated Table' ) |
    -          ( 'CustomTable' ) |
    -          ( 'table' ( SQL | SELECT ) ) |
    -          ( ( 'table' | 'unnest' ) ( FIELD | BINDING* ) ) |
    -		  ( TABLE 'as' NAME ) |
    -		  ( TABLE 'pivot' AGGREGATE_FUNCTION+ 'on' FIELD 'in' FIELD+ )
    -
    -CONDITION ::= ( CONDITION ( MORE_CONDITIONS | 'not' ) ) |
    -              ( FIELD ( 'isNull' | 
    -                        'isNotNull' | 
    -                        'isTrue' | 
    -                        'isFalse' | 
    -                        'between' FIELD FIELD |
    -                        ( 'like' | 'notLike' | 'equal' | 'notEqual' |
    -                          'lessThan' | 'lessOrEqual' | 'greaterThan' | 'greaterOrEqual' ) FIELD |
    -                        ( 'in' | 'notIn' ) ( FIELD+ | SELECT ) |
    -                        ( 'equalAny' | 'equalSome' | 'equalAll' | 
    -                          'notEqualAny' | 'notEqualSome' | 'notEqualAll' |
    -                          'lessThanAny' | 'lessThanSome' | 'lessThanAll' |
    -                          'lessOrEqualAny' | 'lessOrEqualSome' | 'lessOrEqualAll' |
    -                          'greaterThanAny' | 'greaterThanSome' | 'greaterThanAll' |
    -                          'greaterOrEqualAny' | 'greaterOrEqualSome' | 'greaterOrEqualAll' ) SELECT ) ) |
    -              ( 'condition' SQL ) |
    -              ( 'trueCondition' | 'falseCondition' ) |
    -              ( 'exists' | 'notExists' ) SELECT
    -
    -MORE_CONDITIONS ::= ( ( 'and' | 'or') ( CONDITION | SQL ) | 
    -                      ( 'andNot' | 'orNot' ) CONDITION |
    -                      ( 'andExists' | 'andNotExists' | 'orExists' | 'orNotExists' ) SELECT )+
    -
    diff --git a/jOOQ-website/src/main/java/Transform.java b/jOOQ-website/src/main/java/Transform.java
    deleted file mode 100644
    index 0a0c961614..0000000000
    --- a/jOOQ-website/src/main/java/Transform.java
    +++ /dev/null
    @@ -1,424 +0,0 @@
    -/**
    - * Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com)
    - * All rights reserved.
    - *
    - * This work is dual-licensed
    - * - under the Apache Software License 2.0 (the "ASL")
    - * - under the jOOQ License and Maintenance Agreement (the "jOOQ License")
    - * =============================================================================
    - * You may choose which license applies to you:
    - *
    - * - If you're using this work with Open Source databases, you may choose
    - *   either ASL or jOOQ License.
    - * - If you're using this work with at least one commercial database, you must
    - *   choose jOOQ License
    - *
    - * For more information, please visit http://www.jooq.org/licenses
    - *
    - * Apache Software License 2.0:
    - * -----------------------------------------------------------------------------
    - * Licensed under the Apache License, Version 2.0 (the "License");
    - * you may not use this file except in compliance with the License.
    - * You may obtain a copy of the License at
    - *
    - *  http://www.apache.org/licenses/LICENSE-2.0
    - *
    - * Unless required by applicable law or agreed to in writing, software
    - * distributed under the License is distributed on an "AS IS" BASIS,
    - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    - * See the License for the specific language governing permissions and
    - * limitations under the License.
    - *
    - * jOOQ License and Maintenance Agreement:
    - * -----------------------------------------------------------------------------
    - * Data Geekery grants the Customer the non-exclusive, timely limited and
    - * non-transferable license to install and use the Software under the terms of
    - * the jOOQ License and Maintenance Agreement.
    - *
    - * This library is distributed with a LIMITED WARRANTY. See the jOOQ License
    - * and Maintenance Agreement for more details: http://www.jooq.org/licensing
    - */
    -import static org.joox.JOOX.$;
    -
    -import java.io.BufferedOutputStream;
    -import java.io.File;
    -import java.io.FileOutputStream;
    -import java.io.InputStream;
    -import java.io.OutputStream;
    -import java.io.PrintStream;
    -import java.io.PrintWriter;
    -import java.util.ArrayList;
    -import java.util.Arrays;
    -import java.util.Collections;
    -import java.util.HashSet;
    -import java.util.List;
    -import java.util.regex.Matcher;
    -import java.util.regex.Pattern;
    -
    -import javax.xml.transform.Result;
    -import javax.xml.transform.Source;
    -import javax.xml.transform.Transformer;
    -import javax.xml.transform.TransformerFactory;
    -import javax.xml.transform.dom.DOMSource;
    -import javax.xml.transform.sax.SAXResult;
    -import javax.xml.transform.stream.StreamResult;
    -import javax.xml.transform.stream.StreamSource;
    -
    -import org.jooq.Constants;
    -
    -import org.apache.commons.lang3.StringUtils;
    -import org.apache.fop.apps.FOUserAgent;
    -import org.apache.fop.apps.Fop;
    -import org.apache.fop.apps.FopFactory;
    -import org.apache.fop.apps.MimeConstants;
    -import org.joox.Context;
    -import org.joox.Each;
    -import org.joox.Filter;
    -import org.joox.Match;
    -
    -/**
    - * XSL transformation utility for HTML pages
    - *
    - * @author Lukas Eder
    - */
    -public class Transform {
    -
    -    private static final FopFactory fopFactory   = FopFactory.newInstance();
    -    private static final String     minorVersion = Constants.MINOR_VERSION;
    -    private static final String     version      = Constants.FULL_VERSION;
    -    private static final String     codegenXSDVersion;
    -    private static final String     exportXSDVersion;
    -    private static final String     runtimeXSDVersion;
    -    private static final String     baseDir      = "";
    -
    -    static {
    -        File xsdDir = new File("./xsd");
    -        String[] files = xsdDir.list();
    -
    -        List<String> codegenXSDVersions = new ArrayList<String>();
    -        List<String> exportXSDVersions = new ArrayList<String>();
    -        List<String> runtimeXSDVersions = new ArrayList<String>();
    -
    -        Pattern p = Pattern.compile("jooq-(\\w+)-(\\d+\\.\\d+\\.\\d+).xsd");
    -
    -        for (String file : files) {
    -            Matcher m = p.matcher(file);
    -
    -            if (m.matches()) {
    -                if ("codegen".equals(m.group(1))) {
    -                    codegenXSDVersions.add(m.group(2));
    -                }
    -                else if ("export".equals(m.group(1))) {
    -                    exportXSDVersions.add(m.group(2));
    -                }
    -                else if ("runtime".equals(m.group(1))) {
    -                    runtimeXSDVersions.add(m.group(2));
    -                }
    -            }
    -        }
    -
    -        codegenXSDVersions.add(version);
    -        exportXSDVersions.add(version);
    -        runtimeXSDVersions.add(version);
    -
    -        Collections.sort(codegenXSDVersions);
    -        Collections.sort(exportXSDVersions);
    -        Collections.sort(runtimeXSDVersions);
    -
    -        codegenXSDVersion = codegenXSDVersions.get(codegenXSDVersions.lastIndexOf(version) - 1);
    -        exportXSDVersion = exportXSDVersions.get(exportXSDVersions.lastIndexOf(version) - 1);
    -        runtimeXSDVersion = runtimeXSDVersions.get(runtimeXSDVersions.lastIndexOf(version) - 1);
    -    }
    -
    -    public static void main(String[] args) throws Exception {
    -        System.out.println("Transforming manual: " + file("manual.xml"));
    -        System.out.println();
    -
    -//        System.out.println("Transforming multi-page manual");
    -//        System.out.println("------------------------------");
    -//        multiplePages();
    -//
    -//        System.out.println();
    -//        System.out.println("Transforming single-page manual");
    -//        System.out.println("-------------------------------");
    -//        singlePage();
    -
    -        System.out.println();
    -        System.out.println("Transforming PDF manual");
    -        System.out.println("-------------------------------");
    -        pdf();
    -    }
    -
    -    private static String file(String name) {
    -        if (minorVersion == null || minorVersion.equals("")) {
    -            return name;
    -        }
    -
    -        return name.replaceAll("\\.\\w{3}$", "-" + minorVersion + "$0");
    -    }
    -
    -    private static String path(String path) {
    -        return root() + path;
    -    }
    -
    -    private static String root() {
    -        if (minorVersion == null || minorVersion.equals("")) {
    -            return "";
    -        }
    -
    -        return "doc/" + minorVersion + "/";
    -    }
    -
    -    private static String relative(String path) {
    -        return StringUtils.join(Collections.nCopies(path.split("/").length, ".."), "/") + "/";
    -    }
    -
    -    private static void replaceVariables(Match manual) {
    -        manual.find("content").add(manual.find("title")).each(new Each() {
    -            @Override
    -            public void each(Context context) {
    -                String content = $(context.element()).content();
    -
    -                // Work around a jOOX bug
    -                content = content.replaceAll("^<content>((?s:.*))</content>$", "$1");
    -                boolean changed = false;
    -
    -                if (content.contains("{jooq-minor-version}")) {
    -                    content = content.replace("{jooq-minor-version}", minorVersion + ".0");
    -                    changed = true;
    -                }
    -
    -                if (content.contains("{jooq-version}")) {
    -                    content = content.replace("{jooq-version}", version);
    -                    changed = true;
    -                }
    -
    -                if (content.contains("{max-row-degree}")) {
    -                    content = content.replace("{max-row-degree}", "" + Constants.MAX_ROW_DEGREE);
    -                    changed = true;
    -                }
    -
    -                if (content.contains("{codegen-xsd-version}")) {
    -                    content = content.replace("{codegen-xsd-version}", codegenXSDVersion);
    -                    changed = true;
    -                }
    -
    -                if (content.contains("{export-xsd-version}")) {
    -                    content = content.replace("{export-xsd-version}", exportXSDVersion);
    -                    changed = true;
    -                }
    -
    -                if (content.contains("{runtime-xsd-version}")) {
    -                    content = content.replace("{runtime-xsd-version}", runtimeXSDVersion);
    -                    changed = true;
    -                }
    -
    -                if (changed) {
    -                    $(context.element()).content(content);
    -                }
    -            }
    -        });
    -    }
    -
    -    public static void multiplePages() throws Exception {
    -        InputStream isXML = Transform.class.getResourceAsStream(file("manual.xml"));
    -        InputStream isXSL = Transform.class.getResourceAsStream("html-pages.xsl");
    -
    -        StreamSource xsl = new StreamSource(isXSL);
    -        TransformerFactory factory = TransformerFactory.newInstance();
    -        Transformer transformer = factory.newTransformer(xsl);
    -
    -        Match manual = $(isXML);
    -        replaceVariables(manual);
    -
    -        List<String> ids = manual.find("section").ids();
    -        HashSet<String> uniqueIds = new HashSet<String>(ids);
    -
    -        if (ids.size() != uniqueIds.size()) {
    -            for (String id : uniqueIds) {
    -                ids.remove(id);
    -            }
    -
    -            throw new Exception("Duplicate section ids found! " + ids);
    -        }
    -
    -        int blanks = 0, completed = 0;
    -
    -        Filter f = new Filter() {
    -            @Override
    -            public boolean filter(Context arg0) {
    -                return Arrays.asList("section", "redirect").contains($(arg0.element()).tag());
    -            }
    -        };
    -
    -        for (Match section : manual.xpath("//section | //redirect").each()) {
    -            Match sections = section.add(section.parents(f)).reverse();
    -
    -            String path = path(StringUtils.join(sections.ids(), "/"));
    -            String relativePath = relative(path);
    -            String root = root();
    -            File dir = new File(baseDir + path);
    -            dir.mkdirs();
    -
    -            File file = new File(dir, "index.php");
    -            file.delete();
    -            FileOutputStream out = new FileOutputStream(file);
    -
    -            // A redirection section
    -            if ("redirect".equals(section.tag())) {
    -                Match redirectSection = manual.xpath("//section[@id='" + section.attr("redirect-to") + "']");
    -                Match redirectSections = redirectSection.add(redirectSection.parents("section")).reverse();
    -
    -                String redirectPath = path(StringUtils.join(redirectSections.ids(), "/"));
    -
    -                PrintWriter o = new PrintWriter(out);
    -                o.println("<?php header('Location: " + relativePath + redirectPath + "'); ?>");
    -                o.flush();
    -
    -                System.out.println("[r] Redirecting  section " + path + " to " + redirectPath);
    -            }
    -
    -            // A regular section (without redirection)
    -            else {
    -                PrintStream stream = System.out;
    -                boolean blank = StringUtils.isBlank(section.find("content").text());
    -                if (blank) {
    -                    blanks++;
    -                    stream = System.err;
    -                }
    -                else {
    -                    completed++;
    -                }
    -
    -                stream.print("[");
    -                stream.print(blank ? " " : "x");
    -                stream.println("] Transforming section " + path);
    -
    -                Source source = new DOMSource(manual.document());
    -                Result target = new StreamResult(out);
    -
    -                transformer.setParameter("sectionID", section.id());
    -                transformer.setParameter("relativePath", relativePath);
    -                transformer.setParameter("root", root);
    -                transformer.transform(source, target);
    -            }
    -
    -            out.close();
    -        }
    -        System.out.println("    Completed sections : " + completed + " / " + (blanks + completed) + " (" + (100 * completed / (blanks + completed)) + "%)");
    -    }
    -
    -    public static void singlePage() throws Exception {
    -        InputStream isXML = Transform.class.getResourceAsStream(file("manual.xml"));
    -        InputStream isXSL = Transform.class.getResourceAsStream("html-page.xsl");
    -
    -        StreamSource xsl = new StreamSource(isXSL);
    -        TransformerFactory factory = TransformerFactory.newInstance();
    -        Transformer transformer = factory.newTransformer(xsl);
    -
    -        String relativePath = relative(path("manual-single-page"));
    -        String root = root();
    -        Match manual = $(isXML);
    -        replaceVariables(manual);
    -
    -        File dir = new File(baseDir + path("manual-single-page"));
    -        dir.mkdirs();
    -
    -        System.out.println("Transforming manual");
    -        File file = new File(dir, "index.php");
    -        file.delete();
    -        FileOutputStream out = new FileOutputStream(file);
    -
    -        Source source = new DOMSource(manual.document());
    -        Result target = new StreamResult(out);
    -
    -        transformer.setParameter("relativePath", relativePath);
    -        transformer.setParameter("root", root);
    -        transformer.transform(source, target);
    -
    -        out.close();
    -    }
    -
    -    public static void pdf() throws Exception {
    -
    -        // XML -> FO
    -        // ---------------------------------------------------------------------
    -        System.out.println("Transforming XML -> FO");
    -        InputStream isXML = Transform.class.getResourceAsStream(file("manual.xml"));
    -        InputStream isXSL = Transform.class.getResourceAsStream("pdf.xsl");
    -
    -        StreamSource xsl = new StreamSource(isXSL);
    -        TransformerFactory factory = TransformerFactory.newInstance();
    -        Transformer transformer = factory.newTransformer(xsl);
    -
    -        Match manual = $(isXML);
    -        replaceVariables(manual);
    -        checkCodeBlockLengths(manual);
    -
    -        File dir = new File(baseDir + path("manual-pdf"));
    -        dir.mkdirs();
    -        FileOutputStream fout = new FileOutputStream(new File(dir, file("jOOQ-manual.fo.xml")));
    -
    -        Source source = new DOMSource(manual.document());
    -        Result target = new StreamResult(fout);
    -
    -        transformer.transform(source, target);
    -        fout.close();
    -
    -        // FO -> PDF
    -        // ---------------------------------------------------------------------
    -        // See an example about how to do it here:
    -        // http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/examples/embedding/java/embedding/ExampleFO2PDF.java?view=markup
    -        System.out.println("Transforming FO -> PDF");
    -
    -        OutputStream out = null;
    -
    -        fopFactory.setUserConfig(new File(Transform.class.getResource("/fop.config.xml").toURI()));
    -        FOUserAgent foUserAgent = fopFactory.newFOUserAgent();
    -        // configure foUserAgent as desired
    -
    -        // Setup output stream.  Note: Using BufferedOutputStream
    -        // for performance reasons (helpful with FileOutputStreams).
    -        File file = new File(dir, file("jOOQ-manual.pdf"));
    -        out = new FileOutputStream(file);
    -        out = new BufferedOutputStream(out);
    -
    -        // Construct fop with desired output format
    -        Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, foUserAgent, out);
    -
    -        // Setup JAXP using identity transformer
    -        transformer = factory.newTransformer(); // identity transformer
    -
    -        // Setup input stream
    -        Source src = new StreamSource(new File(dir, file("jOOQ-manual.fo.xml")));
    -
    -        // Resulting SAX events (the generated FO) must be piped through to FOP
    -        Result res = new SAXResult(fop.getDefaultHandler());
    -
    -        // Start XSLT transformation and FOP processing
    -        transformer.transform(src, res);
    -
    -        out.flush();
    -        out.close();
    -
    -        // Open the PDF and check it
    -        Runtime.getRuntime().exec(new String[] {
    -                "C:\\Program Files (x86)\\Adobe\\Reader 11.0\\Reader\\AcroRd32.exe",
    -                file.getAbsolutePath() });
    -    }
    -
    -    private static void checkCodeBlockLengths(Match manual) {
    -        manual.xpath("//pre|//java|//sql|//text|//xml|//config").each(new Each() {
    -            @Override
    -            public void each(Context context) {
    -                String content = $(context.element()).content();
    -
    -                for (String line : content.split("[\\r\\n]")) {
    -                    if (line.length() > 128) {
    -                        System.out.println("WARNING: Code block line length exceeds 128 characters : (" + line.length() + ") " + line);
    -                    }
    -                }
    -            }
    -        });
    -    }
    -}
    diff --git a/jOOQ-website/src/main/resources/OPENSANS-LIGHT.TTF b/jOOQ-website/src/main/resources/OPENSANS-LIGHT.TTF
    deleted file mode 100644
    index 0d381897da20345fa63112f19042561f44ee3aa0..0000000000000000000000000000000000000000
    GIT binary patch
    literal 0
    HcmV?d00001
    
    literal 222412
    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%0AG%b#%#Weyp=oz<}IGPqm
    z)8c4aT%)1Wt!Z(MiMFk2@iJ>#98HU(X>l|yj;6)Yv^bg;N7LeHS{zM_Yxd#ySkvN~
    zeHg82+}<U$rg3|h(3-~WT|#SGTqCldx2DC>v^bg;*NE&CYg!yli=%0AG%c<X*}t-;
    z#nH4lnifaX;%HhNO^a(p_A}PBIGPqm)8f8YLMhg?IGPsMT*=Q^)8c4aTw}LwYg$|*
    zxNU1%T;sS?tZ8wL=C-YAagFJ=t!Z(M?6$3GaWpNCrp3{;xJGuTThrobS{zM_qiNh(
    zrgUo>H<t;mY205Xw5G-N|0yatnikjpr`Wcpal4t&n#LVxLTg$aO^Yiwux(9?D?+es
    zO^XNCw0K}mi=%0AG%c=t)H2buIGPqm)8c4a98HU(X>osL)|1w>IGPqm)8c4a98HU(
    zY234>XK0^jS{zM_2iCMWnifaX;t^|FJYr3YqiJz8Esmze(X=?47Dv<KXj&Xii=%0A
    zG%b#%#nH4lnifaX;%Hi2agIETro|QQ*tVv{(X=?47FXosbZc51O^c&xaYaE+x2DC>
    zv^bg;N7LeHS{zM_qiJz8Esmze(X=?47H4HFj;3+zoZe<li=%0A#YncTY1}|3q!*)U
    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
    Lc}I)-BE$H9jZEy0
    
    diff --git a/jOOQ-website/src/main/resources/ROBOTO-LIGHT.TTF b/jOOQ-website/src/main/resources/ROBOTO-LIGHT.TTF
    deleted file mode 100644
    index 664e1b2f9dbafbf6280305123d2df7fa0c66cee9..0000000000000000000000000000000000000000
    GIT binary patch
    literal 0
    HcmV?d00001
    
    literal 140276
    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
    
    diff --git a/jOOQ-website/src/main/resources/fop.config.xml b/jOOQ-website/src/main/resources/fop.config.xml
    deleted file mode 100644
    index 8594a42243..0000000000
    --- a/jOOQ-website/src/main/resources/fop.config.xml
    +++ /dev/null
    @@ -1,65 +0,0 @@
    -<?xml version="1.0" encoding="UTF-8"?>
    -<!-- 
    -  * Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com)
    -  * All rights reserved.
    -  *
    -  * This work is dual-licensed
    -  * - under the Apache Software License 2.0 (the "ASL")
    -  * - under the jOOQ License and Maintenance Agreement (the "jOOQ License")
    -  * ===========================================================================
    -  * You may choose which license applies to you:
    -  *
    -  * - If you're using this work with Open Source databases, you may choose
    -  *   either ASL or jOOQ License.
    -  * - If you're using this work with at least one commercial database, you must
    -  *   choose jOOQ License
    -  *
    -  * For more information, please visit http://www.jooq.org/licenses
    -  *
    -  * Apache Software License 2.0:
    -  * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -  * Licensed under the Apache License, Version 2.0 (the "License");
    -  * you may not use this file except in compliance with the License.
    -  * You may obtain a copy of the License at
    -  *
    -  *  http://www.apache.org/licenses/LICENSE-2.0
    -  *
    -  * Unless required by applicable law or agreed to in writing, software
    -  * distributed under the License is distributed on an "AS IS" BASIS,
    -  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  * See the License for the specific language governing permissions and
    -  * limitations under the License.
    -  *
    -  * jOOQ License and Maintenance Agreement:
    -  * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -  * Data Geekery grants the Customer the non-exclusive, timely limited and
    -  * non-transferable license to install and use the Software under the terms of
    -  * the jOOQ License and Maintenance Agreement.
    -  *
    -  * This library is distributed with a LIMITED WARRANTY. See the jOOQ License
    -  * and Maintenance Agreement for more details: http://www.jooq.org/licensing
    -  -->
    -<fop version="1.0">
    -	<renderers>
    -		<renderer mime="application/pdf">
    -			<filterList>
    -				<!-- provides compression using zlib flate (default is on) -->
    -				<value>flate</value>
    -			</filterList>
    -			<fonts>
    -				<font
    -					metrics-url="C:/Users/lukas/workspace/jOOQ/jOOQ-website/src/main/resources/roboto.xml"
    -					embed-url="C:/Users/lukas/workspace/jOOQ/jOOQ-website/src/main/resources/ROBOTO-LIGHT.TTF"
    -					kerning="yes">
    -					<font-triplet name="Roboto" style="normal" weight="normal" />
    -				</font>
    -				<font
    -					metrics-url="C:/Users/lukas/workspace/jOOQ/jOOQ-website/src/main/resources/opensans.xml"
    -					embed-url="C:/Users/lukas/workspace/jOOQ/jOOQ-website/src/main/resources/OPENSANS-LIGHT.TTF"
    -					kerning="yes">
    -					<font-triplet name="Open Sans" style="normal" weight="normal" />
    -				</font>
    -			</fonts>
    -		</renderer>
    -	</renderers>
    -</fop>
    \ No newline at end of file
    diff --git a/jOOQ-website/src/main/resources/html-page.xsl b/jOOQ-website/src/main/resources/html-page.xsl
    deleted file mode 100644
    index f1e77664bd..0000000000
    --- a/jOOQ-website/src/main/resources/html-page.xsl
    +++ /dev/null
    @@ -1,128 +0,0 @@
    -<?xml version="1.0" encoding="UTF-8"?>
    -<!-- 
    -  * Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com)
    -  * All rights reserved.
    -  *
    -  * This work is dual-licensed
    -  * - under the Apache Software License 2.0 (the "ASL")
    -  * - under the jOOQ License and Maintenance Agreement (the "jOOQ License")
    -  * ===========================================================================
    -  * You may choose which license applies to you:
    -  *
    -  * - If you're using this work with Open Source databases, you may choose
    -  *   either ASL or jOOQ License.
    -  * - If you're using this work with at least one commercial database, you must
    -  *   choose jOOQ License
    -  *
    -  * For more information, please visit http://www.jooq.org/licenses
    -  *
    -  * Apache Software License 2.0:
    -  * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -  * Licensed under the Apache License, Version 2.0 (the "License");
    -  * you may not use this file except in compliance with the License.
    -  * You may obtain a copy of the License at
    -  *
    -  *  http://www.apache.org/licenses/LICENSE-2.0
    -  *
    -  * Unless required by applicable law or agreed to in writing, software
    -  * distributed under the License is distributed on an "AS IS" BASIS,
    -  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  * See the License for the specific language governing permissions and
    -  * limitations under the License.
    -  *
    -  * jOOQ License and Maintenance Agreement:
    -  * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -  * Data Geekery grants the Customer the non-exclusive, timely limited and
    -  * non-transferable license to install and use the Software under the terms of
    -  * the jOOQ License and Maintenance Agreement.
    -  *
    -  * This library is distributed with a LIMITED WARRANTY. See the jOOQ License
    -  * and Maintenance Agreement for more details: http://www.jooq.org/licensing
    -  -->
    -<xsl:stylesheet version="1.0"
    -	xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    -
    -	<xsl:import href="src/main/resources/html-util.xsl"/>
    -
    -	<xsl:output encoding="UTF-8" method="html" omit-xml-declaration="yes" indent="yes"/>
    -
    -	<xsl:variable name="apos">&apos;</xsl:variable>
    -	<xsl:param name="relativePath"/>
    -	<xsl:param name="root"/>
    -
    -	<!-- Main match -->
    -
    -	<xsl:template match="/">
    -		<xsl:text disable-output-escaping="yes">
    -&lt;?php
    -// The following content has been XSL transformed from manual.xml using html-page.xsl
    -// Please do not edit this content manually
    -require '</xsl:text><xsl:value-of select="$relativePath"/><xsl:text disable-output-escaping="yes">frame.php';
    -function getH1() {
    -    return "The jOOQ User Manual. Single Page";
    -}
    -function getActiveMenu() {
    -    return "learn";
    -}
    -function printTheme() {
    -    noTheme();
    -}
    -function printContent() {
    -    global $root;
    -?&gt;
    -</xsl:text>
    -
    -        <div id="manual">
    -		<!-- Display the main section's content -->
    -        <div class="row col col-100 col-white">
    -		<xsl:apply-templates select="/manual/section/content"/>
    -        </div>
    -
    -		<!-- Display the overall table of contents -->
    -        <div class="row col col-100 col-white">
    -		<h2 id="toc"><a href="#toc" name="toc">Table of contents</a></h2>
    -		<xsl:apply-templates select="/manual/section" mode="toc"/>
    -        </div>
    -        
    -		<xsl:for-each select="/manual/section//section">
    -            <xsl:variable name="id" select="@id"/>
    -            
    -            <section>
    -                <div class="row col col-100 col-white">
    -        			<h2 id="{@id}">
    -                        <xsl:for-each select="//redirect[@redirect-to = $id]">
    -                            <a id="{@id}" name="{@id}"/>
    -                        </xsl:for-each>
    -                        
    -        				<a name="{@id}" href="#{@id}">
    -            				<xsl:apply-templates select="." mode="chapter-number"/>
    -            				<xsl:text> </xsl:text>
    -            				<xsl:value-of select="title"/>
    -                        </a>
    -        			</h2>
    -                </div>
    -                    
    -    			<xsl:apply-templates select="content" />
    -            </section>
    -		</xsl:for-each>
    -
    -        </div>
    -		<xsl:text disable-output-escaping="yes">
    -&lt;?php
    -}
    -?&gt;
    -</xsl:text>
    -	</xsl:template>
    -
    -	<!-- matching templates -->
    -
    -	<xsl:template match="//section" mode="content">
    -		<xsl:value-of select="@id"/>
    -		<br/>
    -	</xsl:template>
    -
    -	<xsl:template match="section" mode="href">
    -		<xsl:text>#</xsl:text>
    -		<xsl:value-of select="@id"/>
    -	</xsl:template>
    -</xsl:stylesheet>
    \ No newline at end of file
    diff --git a/jOOQ-website/src/main/resources/html-pages.xsl b/jOOQ-website/src/main/resources/html-pages.xsl
    deleted file mode 100644
    index a4778f0a0c..0000000000
    --- a/jOOQ-website/src/main/resources/html-pages.xsl
    +++ /dev/null
    @@ -1,223 +0,0 @@
    -<?xml version="1.0" encoding="UTF-8"?>
    -<!-- 
    -  * Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com)
    -  * All rights reserved.
    -  *
    -  * This work is dual-licensed
    -  * - under the Apache Software License 2.0 (the "ASL")
    -  * - under the jOOQ License and Maintenance Agreement (the "jOOQ License")
    -  * ===========================================================================
    -  * You may choose which license applies to you:
    -  *
    -  * - If you're using this work with Open Source databases, you may choose
    -  *   either ASL or jOOQ License.
    -  * - If you're using this work with at least one commercial database, you must
    -  *   choose jOOQ License
    -  *
    -  * For more information, please visit http://www.jooq.org/licenses
    -  *
    -  * Apache Software License 2.0:
    -  * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -  * Licensed under the Apache License, Version 2.0 (the "License");
    -  * you may not use this file except in compliance with the License.
    -  * You may obtain a copy of the License at
    -  *
    -  *  http://www.apache.org/licenses/LICENSE-2.0
    -  *
    -  * Unless required by applicable law or agreed to in writing, software
    -  * distributed under the License is distributed on an "AS IS" BASIS,
    -  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  * See the License for the specific language governing permissions and
    -  * limitations under the License.
    -  *
    -  * jOOQ License and Maintenance Agreement:
    -  * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -  * Data Geekery grants the Customer the non-exclusive, timely limited and
    -  * non-transferable license to install and use the Software under the terms of
    -  * the jOOQ License and Maintenance Agreement.
    -  *
    -  * This library is distributed with a LIMITED WARRANTY. See the jOOQ License
    -  * and Maintenance Agreement for more details: http://www.jooq.org/licensing
    -  -->
    -<xsl:stylesheet version="1.0"
    -    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    -
    -    <xsl:import href="src/main/resources/html-util.xsl"/>
    -
    -    <xsl:output encoding="UTF-8" method="html" omit-xml-declaration="yes" indent="yes"/>
    -    <xsl:param name="sectionID"/>
    -    <xsl:param name="relativePath"/>
    -    <xsl:param name="root"/>
    -
    -    <xsl:variable name="apos">&apos;</xsl:variable>
    -
    -    <!-- Main match -->
    -
    -    <xsl:template match="/">
    -        <xsl:text disable-output-escaping="yes">
    -&lt;?php
    -// The following content has been XSL transformed from manual.xml using html-pages.xsl
    -// Please do not edit this content manually
    -require '</xsl:text>
    -        <xsl:value-of select="$relativePath"/>
    -<xsl:text disable-output-escaping="yes">frame.php';
    -function getH1() {
    -    return "</xsl:text>
    -    <xsl:value-of select="//section[@id = $sectionID]/title"/>
    -<xsl:text disable-output-escaping="yes">";
    -}
    -function getActiveMenu() {
    -    return "learn";
    -}
    -function printTheme() {
    -    noTheme();
    -}
    -function printContent() {
    -    global $root;
    -?&gt;
    -</xsl:text>
    -        <div id="manual">
    -        <xsl:apply-templates select="//section[@id = $sectionID]" mode="content"/>
    -        </div>
    -        <xsl:text disable-output-escaping="yes">
    -&lt;?php
    -}
    -?&gt;
    -</xsl:text>
    -    </xsl:template>
    -
    -    <!-- matching templates -->
    -
    -    <xsl:template match="h3" mode="content">
    -        <xsl:variable name="id" select="generate-id(.)"/>
    -
    -        <h2 id="{$id}">
    -            <a href="#{$id}" name="{$id}">
    -                <xsl:apply-templates mode="content"/>
    -            </a>
    -        </h2>
    -    </xsl:template>
    -
    -    <xsl:template match="//section[@id = $sectionID]" mode="content">
    -        <section>
    -            <div class="row col col-100 col-white">
    -                <xsl:apply-templates select="." mode="navigation"/>
    -            </div>
    -            
    -            <xsl:apply-templates select="content"/>
    -        
    -            <div class="row col col-100 col-white">
    -                <xsl:if test="count(sections/section) &gt; 0">
    -                    <h2 id="toc"><a href="#toc" name="toc">Table of contents</a></h2>
    -                </xsl:if>
    -                <xsl:apply-templates select="." mode="toc"/>
    -        
    -                <br/>
    -                <xsl:apply-templates select="." mode="navigation"/>
    -            </div>
    -        </section>
    -    </xsl:template>
    -
    -    <xsl:template match="section" mode="navigation">
    -        <table cellpadding="0" cellspacing="0" border="0" width="936">
    -            <tr>
    -                <td align="left" valign="top">
    -                    <xsl:apply-templates select="." mode="breadcrumb"/>
    -                </td>
    -                <td align="right" valign="top" style="white-space: nowrap">
    -                    <xsl:apply-templates select="." mode="prev-next"/>
    -                </td>
    -            </tr>
    -        </table>
    -    </xsl:template>
    -
    -    <xsl:template match="section" mode="breadcrumb">
    -        <xsl:if test="name(../..) = 'section'">
    -            <xsl:apply-templates select="../.." mode="breadcrumb"/>
    -            <xsl:text> : </xsl:text>
    -        </xsl:if>
    -
    -        <xsl:variable name="href">
    -            <xsl:apply-templates select="." mode="href"/>
    -        </xsl:variable>
    -
    -        <a href="{$href}">
    -            <xsl:value-of select="title"/>
    -        </a>
    -    </xsl:template>
    -
    -    <xsl:template match="section" mode="href">
    -        <xsl:choose>
    -            <xsl:when test="name(../..) = 'section'">
    -                <xsl:apply-templates select="../.." mode="href"/>
    -            </xsl:when>
    -            <xsl:otherwise>
    -                <xsl:text>&lt;?=$root?&gt;/</xsl:text>
    -                <xsl:value-of select="$root"/>
    -            </xsl:otherwise>
    -        </xsl:choose>
    -
    -        <xsl:value-of select="@id"/>
    -        <xsl:text>/</xsl:text>
    -    </xsl:template>
    -
    -    <xsl:template match="section" mode="prev-next">
    -        <xsl:variable name="prev" select="(preceding::section | ancestor::section)[last()]"/>
    -        <xsl:variable name="prevhref">
    -            <xsl:apply-templates select="$prev" mode="href"/>
    -        </xsl:variable>
    -
    -        <xsl:variable name="next" select="(following::section | descendant::section)[1]"/>
    -        <xsl:variable name="nexthref">
    -            <xsl:apply-templates select="$next" mode="href"/>
    -        </xsl:variable>
    -
    -        <xsl:if test="$prev">
    -            <a href="{$prevhref}" title="Previous section: {$prev/title}">previous</a>
    -        </xsl:if>
    -
    -        <xsl:if test="$prev and $next">
    -            <xsl:text> : </xsl:text>
    -        </xsl:if>
    -
    -        <xsl:if test="$next">
    -            <a href="{$nexthref}" title="Next section: {$next/title}">next</a>
    -        </xsl:if>
    -    </xsl:template>
    -
    -    <xsl:template match="section" mode="prev-id">
    -        <xsl:variable name="id" select="@id"/>
    -
    -        <xsl:variable name="position">
    -            <xsl:for-each select="//section">
    -                <xsl:if test="@id = $id">
    -                    <xsl:value-of select="position()"/>
    -                </xsl:if>
    -            </xsl:for-each>
    -        </xsl:variable>
    -
    -        <xsl:for-each select="//section">
    -            <xsl:if test="position() = $position - 1">
    -                <xsl:value-of select="@id"/>
    -            </xsl:if>
    -        </xsl:for-each>
    -    </xsl:template>
    -
    -    <xsl:template match="section" mode="next-id">
    -        <xsl:variable name="id" select="@id"/>
    -
    -        <xsl:variable name="position">
    -            <xsl:for-each select="//section">
    -                <xsl:if test="@id = $id">
    -                    <xsl:value-of select="position()"/>
    -                </xsl:if>
    -            </xsl:for-each>
    -        </xsl:variable>
    -
    -        <xsl:for-each select="//section">
    -            <xsl:if test="position() = $position + 1">
    -                <xsl:value-of select="@id"/>
    -            </xsl:if>
    -        </xsl:for-each>
    -    </xsl:template>
    -</xsl:stylesheet>
    \ No newline at end of file
    diff --git a/jOOQ-website/src/main/resources/html-util.xsl b/jOOQ-website/src/main/resources/html-util.xsl
    deleted file mode 100644
    index 18c407d7d3..0000000000
    --- a/jOOQ-website/src/main/resources/html-util.xsl
    +++ /dev/null
    @@ -1,276 +0,0 @@
    -<?xml version="1.0" encoding="UTF-8"?>
    -<!-- 
    -  * Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com)
    -  * All rights reserved.
    -  *
    -  * This work is dual-licensed
    -  * - under the Apache Software License 2.0 (the "ASL")
    -  * - under the jOOQ License and Maintenance Agreement (the "jOOQ License")
    -  * ===========================================================================
    -  * You may choose which license applies to you:
    -  *
    -  * - If you're using this work with Open Source databases, you may choose
    -  *   either ASL or jOOQ License.
    -  * - If you're using this work with at least one commercial database, you must
    -  *   choose jOOQ License
    -  *
    -  * For more information, please visit http://www.jooq.org/licenses
    -  *
    -  * Apache Software License 2.0:
    -  * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -  * Licensed under the Apache License, Version 2.0 (the "License");
    -  * you may not use this file except in compliance with the License.
    -  * You may obtain a copy of the License at
    -  *
    -  *  http://www.apache.org/licenses/LICENSE-2.0
    -  *
    -  * Unless required by applicable law or agreed to in writing, software
    -  * distributed under the License is distributed on an "AS IS" BASIS,
    -  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  * See the License for the specific language governing permissions and
    -  * limitations under the License.
    -  *
    -  * jOOQ License and Maintenance Agreement:
    -  * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -  * Data Geekery grants the Customer the non-exclusive, timely limited and
    -  * non-transferable license to install and use the Software under the terms of
    -  * the jOOQ License and Maintenance Agreement.
    -  *
    -  * This library is distributed with a LIMITED WARRANTY. See the jOOQ License
    -  * and Maintenance Agreement for more details: http://www.jooq.org/licensing
    -  -->
    -<xsl:stylesheet version="1.0"
    -    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    -
    -    <xsl:output encoding="UTF-8" method="html" omit-xml-declaration="yes" indent="yes"/>
    -
    -    <xsl:template match="html-only" mode="content">
    -        <xsl:apply-templates mode="content"/>
    -    </xsl:template>
    -
    -    <xsl:template match="section" mode="toc">
    -        <xsl:if test="count(sections/section) &gt; 0">
    -            <dl class="toc">
    -                <xsl:apply-templates select="." mode="toc-contents"/>
    -            </dl>
    -        </xsl:if>
    -    </xsl:template>
    -    
    -    <xsl:template match="section" mode="toc-contents">
    -        <xsl:if test="count(sections/section) &gt; 0">
    -            <xsl:for-each select="sections/section">
    -                <xsl:variable name="class">
    -                    <xsl:if test="../../@id = 'manual'">toc-main</xsl:if>
    -                </xsl:variable>
    -                
    -                <dt class="{$class}">
    -                    <xsl:apply-templates select="." mode="chapter-number"/>
    -                </dt>
    -                
    -                <dd class="{$class}">
    -                    <xsl:variable name="href">
    -                        <xsl:apply-templates select="." mode="href"/>
    -                    </xsl:variable>
    -
    -                    <a href="{$href}" title="{title}">
    -                        <xsl:value-of select="title"/>
    -                    </a>
    -                </dd>
    -                
    -                <xsl:apply-templates select="." mode="toc-contents"/>
    -            </xsl:for-each>
    -        </xsl:if>
    -    </xsl:template>
    -
    -    <xsl:template match="content">
    -        <xsl:apply-templates select="@*|node()" mode="content"/>
    -    </xsl:template>
    -    
    -    <xsl:template match="html" mode="content">
    -        <div class="row col col-100 col-white">
    -            <xsl:copy>
    -                <xsl:apply-templates select="@*|node()" mode="content"/>
    -            </xsl:copy>
    -        </div>
    -    </xsl:template>
    -
    -    <xsl:template match="@*|node()" mode="content">
    -        <xsl:param name="colwidth" select="'100'"/>
    -        <xsl:param name="col1" select="false()"/>
    -        <xsl:param name="col2" select="false()"/>
    -        
    -        <xsl:choose>
    -            <xsl:when test="name(.) = 'reference'">
    -                <xsl:variable name="id" select="@id"/>
    -
    -                <a>
    -                    <xsl:attribute name="href">
    -                        <xsl:choose>
    -                            <xsl:when test="@id">
    -                                <xsl:apply-templates select="//section[@id = $id]" mode="href"/>
    -                                <xsl:value-of select="@anchor"/>
    -
    -                                <xsl:if test="not(//section[@id = $id])">
    -                                    <xsl:message>
    -                                        <xsl:text>Reference not found: </xsl:text>
    -                                        <xsl:value-of select="$id"/>
    -                                    </xsl:message>
    -                                </xsl:if>
    -                            </xsl:when>
    -
    -                            <xsl:when test="@class and starts-with(@class, 'org.jooq.test')">
    -                                <xsl:text>https://github.com/jOOQ/jOOQ/blob/master/jOOQ-test/src/</xsl:text>
    -                                <xsl:value-of select="translate(@class, '.', '/')"/>
    -                                <xsl:text>.java</xsl:text>
    -                                <xsl:value-of select="@anchor"/>
    -                            </xsl:when>
    -
    -                            <xsl:when test="@class and starts-with(@class, 'org.jooq.debug')">
    -                                <xsl:text>https://github.com/jOOQ/jOOQ/blob/master/jOOQ-console/src/main/java/</xsl:text>
    -                                <xsl:value-of select="translate(@class, '.', '/')"/>
    -                                <xsl:text>.java</xsl:text>
    -                                <xsl:value-of select="@anchor"/>
    -                            </xsl:when>
    -
    -                            <xsl:when test="@class and starts-with(@class, 'org.jooq')">
    -                                <xsl:text>http://www.jooq.org/javadoc/latest/</xsl:text>
    -                                <xsl:value-of select="translate(@class, '.', '/')"/>
    -                                <xsl:text>.html</xsl:text>
    -                                <xsl:value-of select="@anchor"/>
    -                            </xsl:when>
    -
    -                            <xsl:when test="@class and (starts-with(@class, 'javax.persistence'))">
    -                                <xsl:text>http://docs.oracle.com/javaee/6/api/</xsl:text>
    -                                <xsl:value-of select="translate(@class, '.', '/')"/>
    -                                <xsl:text>.html</xsl:text>
    -                                <xsl:value-of select="@anchor"/>
    -                            </xsl:when>
    -
    -                            <xsl:when test="@class and (starts-with(@class, 'java') or starts-with(@class, 'org.w3c.dom'))">
    -                                <xsl:text>http://download.oracle.com/javase/6/docs/api/</xsl:text>
    -                                <xsl:value-of select="translate(@class, '.', '/')"/>
    -                                <xsl:text>.html</xsl:text>
    -                                <xsl:value-of select="@anchor"/>
    -                            </xsl:when>
    -
    -                            <xsl:when test="@ticket">
    -                                <xsl:text>https://github.com/jOOQ/jOOQ/issues/</xsl:text>
    -                                <xsl:value-of select="@ticket"/>
    -                                <xsl:value-of select="@anchor"/>
    -                            </xsl:when>
    -
    -                            <xsl:otherwise>
    -                                <xsl:message>
    -                                    <xsl:text>Reference not supported</xsl:text>
    -                                </xsl:message>
    -                            </xsl:otherwise>
    -                        </xsl:choose>
    -                    </xsl:attribute>
    -
    -                    <xsl:attribute name="title">
    -                        <xsl:choose>
    -                            <xsl:when test="@id">
    -                                <xsl:text>jOOQ Manual reference: </xsl:text>
    -                                <xsl:value-of select="//section[@id = $id]/title"/>
    -                            </xsl:when>
    -                            <xsl:when test="@class and starts-with(@class, 'org.jooq')">
    -                                <xsl:text>Internal API reference: </xsl:text>
    -                                <xsl:value-of select="@class"/>
    -                            </xsl:when>
    -                            <xsl:when test="@class and starts-with(@class, 'java')">
    -                                <xsl:text>External API reference: </xsl:text>
    -                                <xsl:value-of select="@class"/>
    -                            </xsl:when>
    -                            <xsl:when test="@ticket">
    -                                <xsl:text>GitHub issue: #</xsl:text>
    -                                <xsl:value-of select="@ticket"/>
    -                            </xsl:when>
    -                        </xsl:choose>
    -                    </xsl:attribute>
    -
    -                    <xsl:choose>
    -                        <xsl:when test="@title">
    -                            <xsl:value-of select="@title"/>
    -                        </xsl:when>
    -                        <xsl:when test="@id">
    -                            <xsl:value-of select="//section[@id = $id]/title"/>
    -                        </xsl:when>
    -                        <xsl:when test="@class">
    -                            <xsl:value-of select="@class"/>
    -                        </xsl:when>
    -                        <xsl:when test="@ticket">
    -                            <xsl:text>#</xsl:text>
    -                            <xsl:value-of select="@ticket"/>
    -                        </xsl:when>
    -                    </xsl:choose>
    -                </a>
    -            </xsl:when>
    -            <xsl:when test="name(.) = 'java'">
    -                <div class="row col col-{$colwidth} col-black">
    -                    <pre class="prettyprint lang-java">
    -                        <xsl:value-of select="text()"/>
    -                    </pre>
    -                </div>
    -            </xsl:when>
    -            <xsl:when test="name(.) = 'scala'">
    -                <div class="row col col-{$colwidth} col-black">
    -                    <pre class="prettyprint lang-scala">
    -                        <xsl:value-of select="text()"/>
    -                    </pre>
    -                </div>
    -            </xsl:when>
    -            <xsl:when test="name(.) = 'sql'">
    -                <div class="row col col-{$colwidth} col-black">
    -                    <pre class="prettyprint lang-sql">
    -                        <xsl:value-of select="text()"/>
    -                    </pre>
    -                </div>
    -            </xsl:when>
    -            <xsl:when test="name(.) = 'xml'">
    -                <div class="row col col-{$colwidth} col-black">
    -                    <pre class="prettyprint lang-xml">
    -                        <xsl:value-of select="text()"/>
    -                    </pre>
    -                </div>
    -            </xsl:when>
    -            <xsl:when test="name(.) = 'config'">
    -                <div class="row col col-{$colwidth} col-black">
    -                    <pre class="prettyprint">
    -                        <xsl:value-of select="text()"/>
    -                    </pre>
    -                </div>
    -            </xsl:when>
    -            <xsl:when test="name(.) = 'text'">
    -                <div class="row col col-{$colwidth} col-red">
    -                    <pre>
    -                        <xsl:value-of select="text()"/>
    -                    </pre>
    -                </div>
    -            </xsl:when>
    -            <xsl:when test="name(.) = 'code-pair'">
    -                <xsl:apply-templates select="./*[position() = 1]" mode="content">
    -                    <xsl:with-param name="colwidth" select="'50'"/>
    -                    <xsl:with-param name="col1" select="true()"/>
    -                </xsl:apply-templates>
    -                <xsl:apply-templates select="./*[position() = 2]" mode="content">
    -                    <xsl:with-param name="colwidth" select="'50'"/>
    -                    <xsl:with-param name="col2" select="true()"/>
    -                </xsl:apply-templates>
    -            </xsl:when>
    -            <xsl:otherwise>
    -                <xsl:copy>
    -                    <xsl:apply-templates select="@*|node()" mode="content"/>
    -                </xsl:copy>
    -            </xsl:otherwise>
    -        </xsl:choose>
    -    </xsl:template>
    -    
    -    <xsl:template match="section" mode="chapter-number">
    -        <xsl:if test="@id != 'manual'">
    -            <xsl:apply-templates select="../.." mode="chapter-number"/>
    -
    -            <xsl:value-of select="count(preceding-sibling::section) + 1"/>
    -            <xsl:text>.</xsl:text>
    -        </xsl:if>
    -    </xsl:template>
    -</xsl:stylesheet>
    \ No newline at end of file
    diff --git a/jOOQ-website/src/main/resources/manual-2.5.xml b/jOOQ-website/src/main/resources/manual-2.5.xml
    deleted file mode 100644
    index fa418092c9..0000000000
    --- a/jOOQ-website/src/main/resources/manual-2.5.xml
    +++ /dev/null
    @@ -1,8516 +0,0 @@
    -<?xml version="1.0" encoding="UTF-8"?>
    -<!-- 
    -  - Copyright (c) 2009-2013, Lukas Eder, lukas.eder@gmail.com
    -  - All rights reserved.
    -  -
    -  - This software is licensed to you under the Apache License, Version 2.0
    -  - (the "License"); You may obtain a copy of the License at
    -  -
    -  -   http://www.apache.org/licenses/LICENSE-2.0
    -  -
    -  - Redistribution and use in source and binary forms, with or without
    -  - modification, are permitted provided that the following conditions are met:
    -  -
    -  - . Redistributions of source code must retain the above copyright notice, this
    -  -   list of conditions and the following disclaimer.
    -  -
    -  - . Redistributions in binary form must reproduce the above copyright notice,
    -  -   this list of conditions and the following disclaimer in the documentation
    -  -   and/or other materials provided with the distribution.
    -  -
    -  - . Neither the name "jOOQ" nor the names of its contributors may be
    -  -   used to endorse or promote products derived from this software without
    -  -   specific prior written permission.
    -  -
    -  - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    -  - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -  - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -  - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -  - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -  - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -  - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -  - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -  - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -  - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -  - POSSIBILITY OF SUCH DAMAGE.
    -  -->
    -<manual>
    -	<section id="manual">
    -		<title>The jOOQ User Manual. Multiple Pages</title>
    -		<content><html>
    -			<h2 id="Overview"><a href="#Overview" name="Overview">#</a> Overview</h2>
    -			<p>This manual is divided into six main sections:</p>
    -
    -			<ul>
    -				<li>
    -					<reference id="getting-started"/>
    -					<p>
    -						This section will get you started with jOOQ quickly. It contains
    -						simple explanations about what jOOQ is, what jOOQ isn't and how
    -						to set it up for the first time
    -					</p>
    -				</li>
    -				<li>
    -					<reference id="sql-building"/>
    -					<p>
    -						This section explains all about the jOOQ syntax used for building
    -						queries. It explains the central factories, the supported SQL
    -						statements and various other syntax elements
    -					</p>
    -				</li>
    -				<li>
    -					<reference id="code-generation"/>
    -					<p>
    -						This section explains how to configure and use the built-in source code
    -						generator
    -					</p>
    -				</li>
    -				<li>
    -					<reference id="sql-execution"/>
    -					<p>
    -						This section will get you through the specifics of what can be done
    -						with jOOQ at runtime, in order to execute queries, perform CRUD
    -						operations, import and export data, and hook into the jOOQ execution
    -						lifecycle for debugging
    -					</p>
    -				</li>
    -				<li>
    -					<reference id="tools"/>
    -					<p>
    -						This section is dedicated to tools that ship with jOOQ, such as the
    -						jOOQ console
    -					</p>
    -				</li>
    -				<li>
    -					<reference id="reference"/>
    -					<p>
    -						This section is a reference for elements in this manual
    -					</p>
    -				</li>
    -			</ul>
    -		</html></content>
    -
    -		<sections>
    -			<section id="preface">
    -				<title>Preface</title>
    -				<content><html>
    -					<h3>jOOQ's reason of being - compared to JPA</h3>
    -					<p>
    -						Java and SQL have come a long way. SQL is an "ancient", yet established and well-understood technology. Java is a legacy too, although its platform JVM allows for many new and contemporary languages built on top of it. Yet, after all these years, libraries dealing with the interface between SQL and Java have come and gone, leaving JPA to be a standard that is accepted only with doubts, short of any surviving options.
    -					</p>
    -					<p>
    -						So far, there had been only few database abstraction frameworks or libraries, that truly respected SQL as a first class citizen among languages. Most frameworks, including the industry standards JPA, EJB, Hibernate, JDO, Criteria Query, and many others try to hide SQL itself, minimising its scope to things called JPQL, HQL, JDOQL and various other inferior query languages
    -					</p>
    -					<p>
    -						jOOQ has come to fill this gap.
    -					</p>
    -
    -					<h3>jOOQ's reason of being - compared to LINQ</h3>
    -					<p>
    -						Other platforms incorporate ideas such as LINQ (with LINQ-to-SQL), or Scala's SLICK, or also Java's QueryDSL to better integrate querying as a concept into their respective language. By querying, they understand querying of arbitrary targets, such as SQL, XML, Collections and other heterogeneous data stores. jOOQ claims that this is going the wrong way too.
    -					</p>
    -					<p>
    - 						In more advanced querying use-cases (more than simple CRUD and the occasional JOIN), people will want to profit from the expressivity of SQL. Due to the relational nature of SQL, this is quite different from what object-oriented and partially functional languages such as C#, Scala, or Java can offer.
    - 					</p>
    - 					<p>
    - 						It is very hard to formally express and validate joins and the ad-hoc table expression types they create. It gets even harder when you want support for more advanced table expressions, such as pivot tables, unnested cursors, or just arbitrary projections from derived tables. With a very strong object-oriented typing model, these features will probably stay out of scope.
    - 					</p>
    - 					<p>
    - 						In essence, the decision of creating an API that looks like SQL or one that looks like C#, Scala, Java is a definite decision in favour of one or the other platform. While it will be easier to evolve SLICK in similar ways as LINQ (or QueryDSL in the Java world), SQL feature scope that clearly communicates its underlying intent will be very hard to add, later on (e.g. how would you model Oracle's partitioned outer join syntax? How would you model ANSI/ISO SQL:1999 grouping sets? How can you support scalar subquery caching? etc...).					
    -					</p>
    -					<p>
    -						jOOQ has come to fill this gap.
    -					</p>
    -					
    -					<h3>jOOQ is different</h3>
    -					<p>
    -						SQL was never meant to be abstracted. To be confined in the narrow boundaries of heavy mappers, hiding the beauty and simplicity of relational data. SQL was never meant to be object-oriented. SQL was never meant to be anything other than... SQL!
    -					</p>					
    -				</html></content>
    -			</section>
    -			
    -			<section id="getting-started">
    -				<title>Getting started with jOOQ</title>
    -				<content><html>
    -					<p>
    -						These chapters contain a quick overview of how to get started with this manual and with jOOQ. While the subsequent chapters contain a lot of reference information, this chapter here just wraps up the essentials.
    -					</p>
    -				</html></content>
    -
    -				<sections>
    -					<section id="the-manual">
    -					    <title>How to read this manual</title>
    -						<content><html>
    -							<p>
    -								This section helps you correctly interpret this manual in the context of jOOQ.
    -							</p>
    -							
    -							<h3>Code blocks</h3>
    -							<p>
    -								The following are code blocks:
    -							</p>
    -							
    -</html><sql><![CDATA[-- A SQL code block
    -SELECT 1 FROM DUAL]]></sql><java><![CDATA[// A Java code block
    -for (int i = 0; i < 10; i++);]]></java><xml><![CDATA[<!-- An XML code block -->
    -<hello what="world"></hello>]]></xml><config><![CDATA[# A config file code block
    -org.jooq.property=value]]></config><html>		
    -
    -							<p>
    -								These are useful to provide examples in code. Often, with jOOQ, it is even more useful to compare SQL code with its corresponding Java/jOOQ code. When this is done, the blocks are aligned side-by-side, with SQL usually being on the left, and Java usually being on the right:
    -							</p>					
    -							
    -</html><code-pair>
    -<sql><![CDATA[-- In SQL:
    -SELECT 1 FROM DUAL]]></sql><java><![CDATA[// Using jOOQ:
    -create.select()]]></java>
    -</code-pair><html>
    -
    -							<h3>Code block contents</h3>
    -							<p>
    -								The contents of code blocks follow conventions, too. If nothing else is mentioned next to any given code block, then the following can be assumed:
    -							</p>
    -							
    -							
    -</html><sql><![CDATA[-- SQL assumptions
    -------------------
    -
    --- If nothing else is specified, assume that the Oracle syntax is used 
    -SELECT 1 FROM DUAL]]></sql><java><![CDATA[// Java assumptions
    -// ----------------
    - 
    -// Whenever you see "standalone functions", assume they were static imported from org.jooq.impl.Factory 
    -exists(); max(); min(); val(); inline(); // correspond to Factory.exists(); Factory.max(); Factory.min(); etc...
    -
    -// Whenever you see BOOK/Book, AUTHOR/Author and similar entities, assume they were (static) imported from the generated schema
    -BOOK.TITLE, AUTHOR.LAST_NAME // correspond to com.example.generated.Tables.BOOK.TITLE, com.example.generated.Tables.BOOK.TITLE
    -
    -// Whenever you see "create" being used in Java code, assume that this is an instance of org.jooq.impl.Factory:
    -Factory create = new Factory(connection, SQLDialect.ORACLE);]]></java><html>
    -
    -							<h3>Settings</h3>
    -							<p>
    -								jOOQ allows to override runtime behaviour using <reference class="org.jooq.conf.Settings"/>. If nothing is specified, the default runtime settings are assumed.
    -							</p>
    -							
    -							<h3>Sample database</h3>
    -							<p>
    -								See the manual's section about <reference id="sample-database" title="the sample database used in this manual"/> to learn more about the sample database.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -					<section id="sample-database">
    -					    <title>The sample database used in this manual</title>
    -						<content><html>
    -							<p>
    -							For the examples in this manual, the same database will always be referred to. It essentially consists of these entities created using the Oracle dialect
    -							</p>
    -</html><sql>CREATE TABLE language (
    -  id              NUMBER(7)     NOT NULL PRIMARY KEY,
    -  cd              CHAR(2)       NOT NULL,
    -  description     VARCHAR2(50)
    -)
    -
    -CREATE TABLE author (
    -  id              NUMBER(7)     NOT NULL PRIMARY KEY,
    -  first_name      VARCHAR2(50),
    -  last_name       VARCHAR2(50)  NOT NULL,
    -  date_of_birth   DATE,
    -  year_of_birth   NUMBER(7),
    -  distinguished   NUMBER(1)
    -)
    -
    -CREATE TABLE book (
    -  id              NUMBER(7)     NOT NULL PRIMARY KEY,
    -  author_id       NUMBER(7)     NOT NULL,
    -  title           VARCHAR2(400) NOT NULL,
    -  published_in    NUMBER(7)     NOT NULL,
    -  language_id     NUMBER(7)     NOT NULL,
    -  
    -  CONSTRAINT fk_book_author     FOREIGN KEY (author_id)   REFERENCES author(id),
    -  CONSTRAINT fk_book_language   FOREIGN KEY (language_id) REFERENCES language(id)
    -)
    -
    -CREATE TABLE book_store (
    -  name            VARCHAR2(400) NOT NULL UNIQUE
    -)
    -
    -CREATE TABLE book_to_book_store (
    -  name            VARCHAR2(400) NOT NULL,
    -  book_id         INTEGER       NOT NULL,
    -  stock           INTEGER,
    -  
    -  PRIMARY KEY(name, book_id),
    -  CONSTRAINT fk_b2bs_book_store FOREIGN KEY (name)        REFERENCES book_store (name) ON DELETE CASCADE,
    -  CONSTRAINT fk_b2bs_book       FOREIGN KEY (book_id)     REFERENCES book (id)         ON DELETE CASCADE
    -)</sql><html>
    -							<p>
    -								More entities, types (e.g. UDT's, ARRAY types, ENUM types, etc), stored procedures and packages are introduced for specific examples
    -							</p>
    -						</html></content>
    -					</section>
    -
    -					<section id="use-cases">
    -						<title>Different use cases for jOOQ</title>
    -						<content><html>
    -							<p>
    -								jOOQ has originally been created as a library for complete abstraction of JDBC and all database interaction. Various best practices that are frequently encountered in pre-existing software products are applied to this library. This includes:
    -							</p>
    -							<ul>
    -								<li>Typesafe database object referencing through generated schema, table, column, record, procedure, type, dao, pojo artefacts (see the chapter about <reference id="code-generation" title="code generation"/>)</li>
    -								<li>Typesafe SQL construction through a complete API modelling SQL as a domain specific language in Java (see the chapter about <reference id="dsl-and-non-dsl" title="the DSL API"/>)</li>
    -								<li>Convenient query execution through an improved API for result fetching (see the chapters about <reference id="fetching" title="the various types of data fetching"/>)</li>
    -								<li>SQL dialect abstraction and SQL clause simulation to improve cross-database compatibility and to enable missing features in simpler databases (see the chapter about <reference id="sql-dialects" title="SQL dialects"/>)</li>
    -								<li>SQL logging and debugging using jOOQ as an integral part of your development process (see the chapters about <reference id="logging" title="logging"/> and about the <reference id="jooq-console" title="jOOQ Console"/>)</li>
    -							</ul>
    -							<p>
    -								Effectively, jOOQ was originally designed to replace any other database abstraction framework short of the ones handling connection pooling and transaction management (see also the <reference id="reference-credits" title="credits for other database abstraction libraries"/>)
    -							</p>
    -							
    -							<h3>Use jOOQ the way you prefer</h3>
    -							<p>
    -								... but open source is community-driven. And the community has shown various ways of using jOOQ that diverge from its original intent. Some use cases encountered are:
    -							</p>
    -							<ul>
    -								<li>Using Hibernate for 70% of the queries (i.e. <reference id="crud-with-updatablerecords" title="CRUD"/>) and jOOQ for the remaining 30% where SQL is really needed</li>
    -								<li>Using jOOQ for SQL building and JDBC for SQL execution</li> 
    -								<li>Using jOOQ for SQL building and Spring Data for SQL execution</li>
    -								<li>Using jOOQ without the <reference id="code-generation" title="source code generator"/> to build the basis of a framework for dynamic SQL execution.</li> 
    -							</ul>
    -							
    -							<p>
    -								The following sections explain about various use cases for using jOOQ in your application.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="jooq-as-a-standalone-sql-builder">
    -								<title>jOOQ as a SQL builder</title>
    -								<content><html>
    -									<p>
    -										This is the most simple of all use cases, allowing for construction of valid SQL for any database. In this use case, you will not use <reference id="jooq-as-a-sql-builder-with-code-generation" title="jOOQ's code generator"/> and probably not even <reference id="jooq-as-a-sql-executor" title="jOOQ's query execution facilities"/>. Instead, you'll use jOOQ to wrap strings, literals and other user-defined objects into an object-oriented, type-safe AST modelling your SQL statements. An example is given here: 
    -									</p>
    -									
    -</html><java><![CDATA[// Fetch a SQL string from a jOOQ Query in order to manually execute it with another tool.
    -String sql = create.select(fieldByName("BOOK","TITLE"), fieldByName("AUTHOR","FIRST_NAME"), fieldByName("AUTHOR","LAST_NAME"))
    -                   .from(tableByName("BOOK"))
    -                   .join(tableByName("AUTHOR"))
    -                   .on(fieldByName("BOOK", "AUTHOR_ID").equal("AUTHOR", "ID"))
    -                   .where(fieldByName("BOOK", "PUBLISHED_IN").equal(1948))
    -                   .getSQL();]]></java><html>
    -                   
    -                   					<p>
    -                   						The SQL string that you can generate as such can then be executed using JDBC directly, using Spring's JdbcTemplate, using Apache DbUtils and many other tools.
    -                   					</p>
    -                   					<p>
    -                   						If you wish to use jOOQ only as a SQL builder, the following sections of the manual will be of interest to you:
    -                  					</p>
    -                  					<ul>
    -                  						<li><reference id="sql-building" title="SQL building"/>: This section contains a lot of information about creating SQL statements using the jOOQ API</li>
    -                  						<li><reference id="plain-sql" title="Plain SQL"/>: This section contains information useful in particular to those that want to supply <reference id="table-expressions" title="table expressions"/>, <reference id="column-expressions" title="column expressions"/>, etc. as plain SQL to jOOQ, rather than through generated artefacts</li>
    -                  					</ul>
    -								</html></content>
    -							</section>
    -
    -							<section id="jooq-as-a-sql-builder-with-code-generation">
    -								<title>jOOQ as a SQL builder with code generation</title>
    -								<content><html>
    -									<p>
    -										In addition to using jOOQ as a <reference id="jooq-as-a-standalone-sql-builder" title="standalone SQL builder"/>, you can also use jOOQ's code generation features in order to compile your SQL statements using a Java compiler against an actual database schema. This adds a lot of power and expressiveness to just simply constructing SQL using custom strings and literals, as you can be sure that all database artefacts actually exist in the database, and that their type is correct. An example is given here: 
    -									</p>
    -
    -</html><java><![CDATA[// Fetch a SQL string from a jOOQ Query in order to manually execute it with another tool.
    -String sql = create.select(BOOK.TITLE, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -                   .from(BOOK)
    -                   .join(AUTHOR)
    -                   .on(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -                   .where(BOOK.PUBLISHED_IN.equal(1948))
    -                   .getSQL();]]></java><html>
    -                   
    -                   					<p>
    -                   						The SQL string that you can generate as such can then be executed using JDBC directly, using Spring's JdbcTemplate, using Apache DbUtils and many other tools.
    -                   					</p>
    -                   					<p>
    -                   						If you wish to use jOOQ only as a SQL builder with code generation, the following sections of the manual will be of interest to you:
    -                  					</p>
    -                  					<ul>
    -                  						<li><reference id="sql-building" title="SQL building"/>: This section contains a lot of information about creating SQL statements using the jOOQ API</li>
    -                  						<li><reference id="code-generation" title="Code generation"/>: This section contains the necessary information to run jOOQ's code generator against your developer database</li>
    -                  					</ul>
    -								</html></content>
    -							</section>
    -
    -							<section id="jooq-as-a-sql-executor">
    -								<title>jOOQ as a SQL executor</title>
    -								<content><html>
    -									<p>
    -										Instead of any tool mentioned in the previous chapters, you can also use jOOQ directly to execute your jOOQ-generated SQL statements. This will add a lot of convenience on top of the previously discussed API for typesafe SQL construction, when you can re-use the information from generated classes to fetch records and custom data types. An example is given here:
    -									</p>
    -									
    -</html><java><![CDATA[// Execute the SQL statement directly with jOOQ
    -Result<Record> result = create.select(BOOK.TITLE, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -			                  .from(BOOK)
    -			                  .join(AUTHOR)
    -			                  .on(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -			                  .where(BOOK.PUBLISHED_IN.equal(1948))
    -			                  .fetch();]]></java><html>
    -
    -									<p>
    -										jOOQ doesn't stop here, though! You can execute any SQL with jOOQ. In other words, you can use any other SQL building tool and run the SQL statements with jOOQ. An example is given here:
    -									</p>
    -
    -</html><java><![CDATA[// Use your favourite tool to construct SQL strings:
    -String sql = "SELECT title, first_name, last_name FROM book JOIN author ON book.author_id = author.id " +
    -             "WHERE book.published_in = 1984";
    -
    -// Fetch results using jOOQ
    -Result<Record> result = create.fetch(sql);
    -
    -// Or execute that SQL with JDBC, fetching the ResultSet with jOOQ:
    -ResultSet rs = connection.createStatement().executeQuery(sql);
    -Result<Record> result = create.fetch(rs);]]></java><html>
    -
    -									<p>
    -                   						If you wish to use jOOQ as a SQL executor with (or without) code generation, the following sections of the manual will be of interest to you:
    -                  					</p>
    -                  					<ul>
    -                  						<li><reference id="sql-building" title="SQL building"/>: This section contains a lot of information about creating SQL statements using the jOOQ API</li>
    -                  						<li><reference id="code-generation" title="Code generation"/>: This section contains the necessary information to run jOOQ's code generator against your developer database</li>
    -                  						<li><reference id="sql-execution" title="SQL execution"/>: This section contains a lot of information about executing SQL statements using the jOOQ API</li>
    -                  						<li><reference id="fetching"/>: This section contains some useful information about the various ways of fetching data with jOOQ</li>
    -                  					</ul>
    -								</html></content>
    -							</section>
    -
    -							<section id="jooq-for-crud">
    -								<title>jOOQ for CRUD</title>
    -								<content><html>
    -									<p>
    -										This is probably the most complete use-case for jOOQ: Use all of jOOQ's features. Apart from jOOQ's fluent API for query construction, jOOQ can also help you execute everyday CRUD operations. An example is given here:
    -									</p>
    -
    -</html><java><![CDATA[// Fetch all authors
    -for (AuthorRecord author : create.fetch(AUTHOR)) {
    -
    -    // Skip previously distinguished authors  
    -    if ((int) author.getDistinguished() == 1)
    -        continue;
    -  
    -    // Check if the author has written more than 5 books
    -    if (author.fetchChildren(FK_BOOK_AUTHOR).size() > 5) {
    -    
    -        // Mark the author as a "distinguished" author
    -        author.setDistinguished(1);
    -        author.store();
    -    }
    -}]]></java><html>
    -
    -									<p>
    -                   						If you wish to use all of jOOQ's features, the following sections of the manual will be of interest to you (including all sub-sections):
    -                  					</p>
    -                  					<ul>
    -                  						<li><reference id="sql-building" title="SQL building"/>: This section contains a lot of information about creating SQL statements using the jOOQ API</li>
    -                  						<li><reference id="code-generation" title="Code generation"/>: This section contains the necessary information to run jOOQ's code generator against your developer database</li>
    -                  						<li><reference id="sql-execution" title="SQL execution"/>: This section contains a lot of information about executing SQL statements using the jOOQ API</li>
    -                  					</ul>
    -								</html></content>
    -							</section>
    -							
    -							<section id="jooq-for-pros">
    -								<title>jOOQ for PROs</title>
    -								<content><html>
    -									<p>
    -										jOOQ isn't just a library that helps you <reference id="sql-building" title="build"/> and <reference id="sql-execution" title="execute"/> SQL against your <reference id="code-generation" title="generated, compilable schema"/>. jOOQ ships with a lot of tools. Here are some of the most important tools shipped with jOOQ:
    -									</p>
    -									<ul>
    -										<li><reference id="jooq-console" title="jOOQ Console"/>: This small application hooks into jOOQ's execute listener support to allow for tracing, debugging and introspecting any SQL statement executed through the jOOQ API. This includes setting breakpoints, introspecting bind values, running probe SQL statements, ad-hoc patching of SQL, measuring execution times, exporting stack traces. Use this tool to better know your SQL!</li>
    -										<li><reference id="execute-listeners" title="jOOQ's Execute Listeners"/>: jOOQ allows you to hook your custom execute listeners into jOOQ's SQL statement execution lifecycle in order to centrally coordinate any arbitrary operation performed on SQL being executed. Use this for logging, identity generation, SQL tracing, performance measurements, etc.</li>
    -										<li><reference id="logging" title="Logging"/>: jOOQ has a standard DEBUG logger built-in, for logging and tracing all your executed SQL statements and fetched result sets</li>
    -										<li><reference id="stored-procedures" title="Stored Procedures"/>: jOOQ supports stored procedures and functions of your favourite database. All routines and user-defined types are generated and can be included in jOOQ's SQL building API as function references.</li>
    -										<li><reference id="exporting" title="Exporting"/> and <reference id="importing" title="Importing"/>: jOOQ ships with an API to easily export/import data in various formats</li>
    -									</ul>
    -									<p>
    -										If you're a power user of your favourite, feature-rich database, jOOQ will help you access all of your database's vendor-specific features, such as OLAP features, stored procedures, user-defined types, vendor-specific SQL, functions, etc. Examples are given throughout this manual.
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="tutorials">
    -						<title>Tutorials</title>
    -						<content><html>
    -							<p>
    -								Don't have time to read the full manual? Here are a couple of tutorials that will get you into the most essential parts of jOOQ as quick as possible.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="jooq-in-7-steps">
    -								<title>jOOQ in 7 easy steps</title>
    -								<content><html>
    -									<p>
    -										This manual section is intended for new users, to help them get a running application with jOOQ, quickly.
    -									</p>
    -								</html></content>
    -								
    -								<sections>
    -									<section id="jooq-in-7-steps-step1">
    -										<title>Step 1: Preparation</title>
    -										<content><html>
    -											<p>
    -												If you haven't already downloaded it, download jOOQ:<br/>
    -												<a href="https://sourceforge.net/projects/jooq/files/Release/" title="jOOQ download">https://sourceforge.net/projects/jooq/files/Release/</a>
    -											</p>
    -											
    -											<p>
    -												Alternatively, you can create a Maven dependency:
    -											</p>
    -</html><xml><![CDATA[<dependency>
    -  <groupId>org.jooq</groupId>
    -  <!-- artefacts are jooq, jooq-meta, jooq-codegen -->
    -  <artifactId>jooq</artifactId>
    -  <version>{jooq-version}</version>
    -</dependency>]]></xml><html>
    -
    -											<p>
    -												For this example, we'll be using MySQL. If you haven't already downloaded MySQL Connector/J, download it here:<br/>
    -												<a href="http://dev.mysql.com/downloads/connector/j/" target="_blank" title="MySQL JDBC driver">http://dev.mysql.com/downloads/connector/j/</a>
    -											</p>
    -
    -											<p>
    -												If you don't have a MySQL instance up and running yet, get <a href="http://www.apachefriends.org/en/xampp.html" title="XAMPP">XAMPP</a> now! XAMPP is a simple installation bundle for Apache, MySQL, PHP and Perl
    -											</p>
    -										</html></content>
    -									</section>
    -									
    -									<section id="jooq-in-7-steps-step2">
    -										<title>Step 2: Your database</title>
    -										<content><html>
    -											<p>
    -												We're going to create a database called "guestbook" and a corresponding "posts" table. Connect to MySQL via your command line client and type the following:
    -											</p>
    -											
    -</html><sql>CREATE DATABASE guestbook;
    -
    -CREATE TABLE `posts` (
    -  `id` bigint(20) NOT NULL,
    -  `body` varchar(255) DEFAULT NULL,
    -  `timestamp` datetime DEFAULT NULL,
    -  `title` varchar(255) DEFAULT NULL,
    -  PRIMARY KEY (`id`)
    -);
    -</sql></content>
    -									</section>
    -									
    -									<section id="jooq-in-7-steps-step3">
    -										<title>Step 3: Code generation</title>
    -										<content><html>
    -											<p>
    -												In this step, we're going to use jOOQ's command line tools to generate classes that map to the Posts table we just created. More detailed information about how to set up the jOOQ code generator can be found here:<br/>
    -												<reference id="code-generation" title="jOOQ manual pages about setting up the code generator"/>
    -											</p>
    -
    -											<p>
    -												The easiest way to generate a schema is to copy the jOOQ jar files (there should be 3) and the MySQL Connector jar file to a temporary directory. Then, create a guestbook.xml that looks like this:
    -											</p>
    -											
    -</html><xml><![CDATA[<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    -<configuration xmlns="http://www.jooq.org/xsd/jooq-codegen-2.5.0.xsd">
    -  <!-- Configure the database connection here -->
    -  <jdbc>
    -    <driver>com.mysql.jdbc.Driver</driver>
    -    <url>jdbc:mysql://localhost:3306/guestbook</url>
    -    <user>root</user>
    -    <password></password>
    -  </jdbc>
    -
    -  <generator>
    -    <!-- The default code generator. You can override this one, to generate your own code style
    -         Defaults to org.jooq.util.DefaultGenerator -->
    -    <name>org.jooq.util.DefaultGenerator</name>
    -
    -    <database>
    -      <!-- The database type. The format here is:
    -           org.util.[database].[database]Database -->
    -      <name>org.jooq.util.mysql.MySQLDatabase</name>
    -
    -      <!-- The database schema (or in the absence of schema support, in your RDBMS this
    -           can be the owner, user, database name) to be generated -->
    -      <inputSchema>guestbook</inputSchema>
    -
    -      <!-- All elements that are generated from your schema (several Java regular expressions, separated by comma)
    -           Watch out for case-sensitivity. Depending on your database, this might be important! -->
    -      <includes>.*</includes>
    -
    -      <!-- All elements that are excluded from your schema (several Java regular expressions, separated by comma).
    -              Excludes match before includes -->
    -      <excludes></excludes>
    -    </database>
    -
    -    <target>
    -      <!-- The destination package of your generated classes (within the destination directory) -->
    -      <packageName>test.generated</packageName>
    -
    -      <!-- The destination directory of your generated classes -->
    -      <directory>C:/workspace/MySQLTest/src</directory>
    -    </target>
    -  </generator>
    -</configuration>]]></xml><html>
    -											<p>
    -												Replace the username with whatever user has the appropriate privileges to query the database meta data. You'll also want to look at the other values and replace as necessary. Here are the two interesting properties:
    -											</p>
    -											<p>
    -												<code>generator.target.package</code> - set this to the parent package you want to create for the generated classes. The setting of <code>test.generated</code> will cause the <code>test.generated.Posts</code> and <code>test.generated.PostsRecord</code> to be created
    -											</p>
    -											<p>
    -												<code>generator.target.directory</code> - the directory to output to.
    -											</p>
    -											
    -											<p>
    -												Once you have the JAR files and guestbook.xml in your temp directory, type this (use colons instead of semi-colons on UNIX/Linux systems):
    -											</p>
    -
    -</html><text>java -classpath jooq-{jooq-version}.jar;jooq-meta-{jooq-version}.jar;jooq-codegen-{jooq-version}.jar;mysql-connector-java-5.1.18-bin.jar;. 
    -  org.jooq.util.GenerationTool /guestbook.xml
    -</text><html>
    -
    -											<p>
    -												Note the prefix slash before guestbook.xml. Even though it's in our working directory, we need to prepend a slash, as the configuration file is loaded from the classpath. Replace the filenames with your filenames. In this example, jOOQ {jooq-version} is being used. If everything has worked, you should see this in your console output:
    -											</p>
    -
    -</html><text>Nov 1, 2011 7:25:06 PM org.jooq.impl.JooqLogger info
    -INFO: Initialising properties  : /guestbook.xml
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Database parameters
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: ----------------------------------------------------------
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO:   dialect                : MYSQL
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO:   schema                 : guestbook
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO:   target dir             : /Users/jOOQ/Documents/workspace/MySQLTest/src
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO:   target package         : test.generated
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: ----------------------------------------------------------
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Emptying                 : /Users/jOOQ/workspace/MySQLTest/src/test/generated
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Generating classes in    : /Users/jOOQ/workspace/MySQLTest/src/test/generated
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Generating schema        : Guestbook.java
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Generating factory       : GuestbookFactory.java
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Schema generated         : Total: 122.18ms
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Sequences fetched        : 0 (0 included, 0 excluded)
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Masterdata tables fetched: 0 (0 included, 0 excluded)
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Tables fetched           : 5 (5 included, 0 excluded)
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Generating tables        : /Users/jOOQ/workspace/MySQLTest/src/test/generated/tables
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: ARRAYs fetched           : 0 (0 included, 0 excluded)
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Enums fetched            : 0 (0 included, 0 excluded)
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: UDTs fetched             : 0 (0 included, 0 excluded)
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Generating table         : Posts.java
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Tables generated         : Total: 680.464ms, +558.284ms
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Generating Keys          : /Users/jOOQ/workspace/MySQLTest/src/test/generated/tables
    -Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info
    -INFO: Keys generated           : Total: 718.621ms, +38.157ms
    -Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info
    -INFO: Generating records       : /Users/jOOQ/workspace/MySQLTest/src/test/generated/tables/records
    -Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info
    -INFO: Generating record        : PostsRecord.java
    -Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info
    -INFO: Table records generated  : Total: 782.545ms, +63.924ms
    -Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info
    -INFO: Routines fetched         : 0 (0 included, 0 excluded)
    -Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info
    -INFO: Packages fetched         : 0 (0 included, 0 excluded)
    -Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info
    -INFO: GENERATION FINISHED!     : Total: 791.688ms, +9.143ms
    -</text></content>
    -									</section>
    -									
    -									<section id="jooq-in-7-steps-step4">
    -										<title>Step 4: Connect to your database</title>
    -										<content><html>
    -											<p>
    -												Let's just write a vanilla main class in the project containing the generated classes:
    -											</p>
    -											
    -</html><java><![CDATA[// For convenience, always static import your generated tables and jOOQ functions to decrease verbosity:
    -import static test.generated.Tables.*;
    -import static org.jooq.impl.Factory.*;
    -
    -public class Main {
    -    public static void main(String[] args) {
    -        Connection conn = null;
    -
    -        String userName = "root";
    -        String password = "";
    -        String url = "jdbc:mysql://localhost:3306/guestbook";
    -
    -        try {
    -            Class.forName("com.mysql.jdbc.Driver").newInstance();
    -            conn = DriverManager.getConnection(url, userName, password);
    -        } catch (Exception e) {
    -            // For the sake of this tutorial, let's keep exception handling simple
    -            e.printStackTrace();
    -        } finally {
    -            if (conn != null) {
    -                try {
    -                    conn.close();
    -                } catch (SQLException ignore) {
    -                }
    -            }
    -        }
    -    }
    -}]]></java><html>
    -
    -											<p>
    -												This is pretty standard code for establishing a MySQL connection.
    -											</p>
    -										</html></content>
    -									</section>
    -									
    -									<section id="jooq-in-7-steps-step5">
    -										<title>Step 5: Querying</title>
    -										<content><html>
    -											<p>
    -												Let's add a simple query:
    -											</p>
    -											
    -</html><java><![CDATA[Factory create = new Factory(conn, SQLDialect.MYSQL);
    -Result<Record> result = create.select().from(POSTS).fetch();]]></java><html>
    -
    -											<p>
    -												First get an instance of <code>Factory</code> so we can write a simple <code>SELECT</code> query. We pass an instance of the MySQL connection to <code>Factory</code>. Note that the factory doesn't close the connection. We'll have to do that ourselves.
    -											</p>
    -											<p>
    -												We then use jOOQ's DSL to return an instance of Result. We'll be using this result in the next step.
    -											</p>
    -										</html></content>
    -									</section>
    -									
    -									<section id="jooq-in-7-steps-step6">
    -										<title>Step 6: Iterating</title>
    -										<content><html>
    -											<p>
    -												After the line where we retrieve the results, let's iterate over the results and print out the data:
    -											</p>
    -
    -</html><java><![CDATA[for (Record r : result) {
    -    Long id = r.getValue(POSTS.ID);
    -    String title = r.getValue(POSTS.TITLE);
    -    String description = r.getValue(POSTS.BODY);
    -
    -    System.out.println("ID: " + id + " title: " + title + " desciption: " + description);
    -}]]></java><html>
    -
    -											<p>
    -												The full program should now look like this:
    -											</p>
    -											
    -</html><java><![CDATA[package test;
    -
    -// For convenience, always static import your generated tables and
    -// jOOQ functions to decrease verbosity:
    -import static test.generated.Tables.*;
    -import static org.jooq.impl.Factory.*;
    -
    -import java.sql.Connection;
    -import java.sql.DriverManager;
    -import java.sql.ResultSet;
    -import java.sql.Statement;
    -
    -import org.jooq.Record;
    -import org.jooq.Result;
    -
    -import test.generated.GuestbookFactory;
    -import test.generated.tables.Posts;
    -
    -public class Main {
    -
    -    /**
    -     * @param args
    -     */
    -    public static void main(String[] args) {
    -        Connection conn = null;
    -
    -        String userName = "root";
    -        String password = "";
    -        String url = "jdbc:mysql://localhost:3306/guestbook";
    -
    -        try {
    -            Class.forName("com.mysql.jdbc.Driver").newInstance();
    -            conn = DriverManager.getConnection(url, userName, password);
    -
    -            GuestbookFactory create = new GuestbookFactory(conn);
    -            Result<Record> result = create.select().from(POSTS).fetch();
    -
    -            for (Record r : result) {
    -                Long id = r.getValue(POSTS.ID);
    -                String title = r.getValue(POSTS.TITLE);
    -                String description = r.getValue(POSTS.BODY);
    -
    -                System.out.println("ID: " + id + " title: " + title + " desciption: " + description);
    -            }
    -        } catch (Exception e) {
    -            // For the sake of this tutorial, let's keep exception handling simple
    -            e.printStackTrace();
    -        } finally {
    -            if (conn != null) {
    -                try {
    -                    conn.close();
    -                } catch (SQLException ignore) {
    -                }
    -            }
    -        }
    -    }
    -}]]></java></content>
    -									</section>
    -									
    -									<section id="jooq-in-7-steps-step7">
    -										<title>Step 7: Explore!</title>
    -										<content><html>
    -											<p>
    -												jOOQ has grown to be a comprehensive SQL library. For more information, please consider the manual:<br/>
    -												<a href="http://www.jooq.org/manual/" title="jOOQ Manual">http://www.jooq.org/manual/</a>
    -											</p>
    -											<p>
    -												... explore the Javadoc:<br/>
    -												<a href="http://www.jooq.org/javadoc/latest/" title="jOOQ Javadoc">http://www.jooq.org/javadoc/latest/</a>
    -											</p>
    -											<p>
    -												... or join the news group:<br/>
    -												<a href="https://groups.google.com/forum/#!forum/jooq-user" title="jOOQ news group">https://groups.google.com/forum/#!forum/jooq-user</a>
    -											</p>
    -											<p>
    -											    This tutorial is the courtesy of Ikai Lan. See the original source here:<br/>
    -											    <a href="http://ikaisays.com/2011/11/01/getting-started-with-jooq-a-tutorial/" target="_blank" title="Ikai Lan's jOOQ tutorial">http://ikaisays.com/2011/11/01/getting-started-with-jooq-a-tutorial/</a>
    -											</p>
    -										</html></content>
    -									</section>
    -								</sections>
    -							</section>
    -
    -							<section id="jooq-in-modern-ides">
    -								<title>Using jOOQ in modern IDEs</title>
    -								<content><html>
    -									<p>Feel free to contribute a tutorial!</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="jooq-with-spring">
    -								<title>Using jOOQ with Spring</title>
    -								<content><html>
    -									<p>Feel free to contribute a tutorial!</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="a-simple-web-application">
    -								<title>A simple web application with jOOQ</title>
    -								<content><html>
    -									<p>Feel free to contribute a tutorial!</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -					
    -					<section id="dependencies">
    -						<title>Dependencies</title>
    -						<content><html>
    -							<p>
    -								jOOQ has no dependencies on any third-party libraries. This rule has some exceptions:
    -							</p>
    -							<ul>
    -								<li><reference id="logging" title="logging APIs"/> are referenced as "optional dependencies". jOOQ tries to find slf4j or log4j on the classpath. If it fails, it will use the <reference class="java.util.logging.Logger"/></li>
    -								<li>Oracle ojdbc types used for array creation are loaded using reflection.</li>
    -								<li>Small libraries with compatible licenses are incorporated into jOOQ (<a href="http://code.google.com/p/joor/">jOOR</a>, <a href="http://code.google.com/p/joou/">jOOU</a>, <a href="http://opencsv.sourceforge.net/">OpenCSV</a>, <a href="http://code.google.com/p/json-simple/">json simple</a>, <a href="http://commons.apache.org/lang/">commons-lang</a>)</li>
    -								<li>javax.persistence and javax.validation will be needed if you activate the relevant <reference id="code-generation" title="code generation flags"/></li>
    -							</ul>
    -							
    -							<h3>Build your own</h3>
    -							<p>
    -								In order to build jOOQ, please download the sources from <a href="https://github.com/jOOQ/jOOQ">https://github.com/jOOQ/jOOQ</a> and use Maven to build it, preferably in Eclipse.
    -							</p>
    -						</html></content>
    -					</section>
    -				</sections>
    -			</section>
    -
    -			<section id="sql-building">
    -				<title>SQL building</title>
    -				<content><html>
    -					<p>
    -					    SQL is a declarative language that is hard to integrate into procedural, object-oriented, functional or any other type of programming languages. jOOQ's philosophy is to give SQL the credit it deserves and integrate SQL itself as an <a href="http://en.wikipedia.org/wiki/Domain_Specific_Language">"internal domain specific language"</a> directly into Java.
    -					</p>
    -					<p>
    -						With this philosophy in mind, SQL building is the main feature of jOOQ. All other features (such as <reference id="sql-execution"/> and <reference id="code-generation"/>) are mere convenience built on top of jOOQ's SQL building capabilities.
    -					</p>
    -					<p>
    -						This section explains all about the various syntax elements involved with jOOQ's SQL building capabilities. For a complete overview of all syntax elements, please refer to the manual's section about <reference id="reference-bnf-notation"/>
    -					</p>
    -				</html></content>
    -
    -				<sections>
    -					<section id="factory">
    -						<title>The Factory class</title>
    -						<content><html>
    -							<p>
    -								jOOQ exposes a lot of interfaces and hides most implementation facts from client code. The reasons for this are:
    -							</p>
    -							<ul>
    -								<li>Interface-driven design. This allows for modelling queries in a fluent API most efficiently</li>
    -								<li>Reduction of complexity for client code.</li>
    -								<li>API guarantee. You only depend on the exposed interfaces, not concrete (potentially dialect-specific) implementations.</li>
    -							</ul>
    -							<p>
    -								The <reference class="org.jooq.impl.Factory"/> class is the main class from where you will create all jOOQ objects.	The Factory serves two types of purposes:
    -							</p>
    -							<ul>
    -								<li>It serves as a static factory for <reference id="table-expressions" title="table expressions"/>, <reference id="column-expressions" title="column expressions"/> (or "fields"), <reference id="conditional-expressions" title="conditional expressions"/> and many other <reference id="queryparts" title="QueryParts"/>.</li>
    -								<li>It implements <reference class="org.jooq.Configuration"/>, an object that configures jOOQ's behaviour when executing queries (see <reference id="sql-execution"/> for more details). Factories allow for creating <reference id="sql-statements" title="SQL statements"/> that are already "configured" and ready for execution.</li>
    -							</ul>
    -
    -							<h3>The static Factory API</h3>
    -							<p>
    -								With jOOQ 2.0, static factory methods have been introduced in order to make client code look more like SQL. Ideally, when working with jOOQ, you will simply static import all methods from the Factory class:
    -							</p>
    -							</html><java>import static org.jooq.impl.Factory.*;</java><html>
    -							<p>
    -							    Note, that when working with Eclipse, you could also add the Factory to your favourites. This will allow to access functions even more fluently:
    -							</p>
    -</html><java>concat(trim(FIRST_NAME), trim(LAST_NAME));
    -// ... which is in fact the same as:
    -Factory.concat(Factory.trim(FIRST_NAME), Factory.trim(LAST_NAME));</java><html>
    -
    -							<h3>The Factory as a Configuration object</h3>
    -							<p>
    -							    As any Configuration object, a Factory can be supplied with these objects:
    -							</p>
    -							<ul>
    -								<li><reference class="org.jooq.SQLDialect"/> : The dialect of your database. This may be any of the currently supported database types (see <reference id="sql-dialects"/> for more details)</li>
    -								<li><reference class="java.sql.Connection"/> : An optional JDBC Connection that will be re-used for the whole lifecycle of your Factory (see <reference id="connection-vs-datasource"/> for more details)</li>
    -    							<li><reference class="java.sql.DataSource"/> : An optional JDBC DataSource that will be re-used for the whole lifecycle of your Factory. If you prefer using DataSources over Connections, jOOQ will internally fetch new Connections from your DataSource, conveniently closing them again after query execution. This is particularly useful in J2EE or Spring contexts (see <reference id="connection-vs-datasource"/> for more details)</li>
    -    							<li><reference class="org.jooq.conf.Settings"/> : An optional runtime configuration (see <reference id="custom-settings"/> for more details)</li>
    -							</ul>
    -							<p>
    -								As a Configuration object, a Factory can construct <reference id="sql-statements" title="statements"/>, for later <reference id="sql-execution" title="execution"/>. An example is given here:
    -							</p>
    -</html><java><![CDATA[// The Factory is "configured" with a Connection and a SQLDialect
    -Factory create = new Factory(connection, dialect);
    -
    -// This select statement contains an internal reference to the Factory:
    -Select<?> select = create.selectOne();
    -
    -// Using the internally referenced Factory, the select statement can now be executed:
    -Result<?> result = select.fetch();]]></java></content>
    -
    -						<sections>
    -							<section id="sql-dialects">
    -								<title>SQL Dialect</title>
    -								<content><html>
    -									<p>
    -										While jOOQ tries to represent the SQL standard as much as possible, many features are vendor-specific to a given database and to its "SQL dialect". jOOQ models this using the <reference class="org.jooq.SQLDialect"/> enum type.
    -									</p>
    -									<p>
    -										The SQL dialect is one of the main attributes of a <reference id="factory" title="Factory"/>. Queries created from such factories will assume dialect-specific behaviour when <reference id="sql-rendering" title="rendering SQL"/> and <reference id="variable-binding" title="binding bind values"/>.
    -									</p>
    -									<p>
    -										Some parts of the jOOQ API are officially supported only by a given subset of the supported SQL dialects. For instance, the <reference id="connect-by-clause" title="Oracle CONNECT BY clause"/>, which is supported by the Oracle and CUBRID databases, is annotated with a <reference class="org.jooq.Support"/> annotation, as such:
    -									</p>
    -</html><java><![CDATA[/**
    - * Add an Oracle-specific <code>CONNECT BY</code> clause to the query
    - */
    -@Support({ CUBRID, ORACLE })
    -SelectConnectByConditionStep connectBy(Condition condition);]]></java><html>
    -									<p>
    -									    jOOQ API methods which are not annotated with the <reference class="org.jooq.Support"/> annotation, or which are annotated with the Support annotation, but without any SQL dialects can be safely used in all SQL dialects. An example for this is the <reference id="select-statement" title="SELECT statement"/> factory method:
    -									</p>
    -</html><java><![CDATA[/**
    - * Create a new DSL select statement.
    - */
    -@Support
    -SelectSelectStep select(Field<?>... fields);]]></java><html>
    -
    -									<h3>jOOQ's SQL clause simulation capabilities</h3>
    -									<p>
    -										The aforementioned Support annotation does not only designate, which databases natively support a feature. It also indicates that a feature is simulated by jOOQ for some databases lacking this feature. An example of this is the <reference id="distinct-predicate" title="DISTINCT predicate"/>, a predicate syntax defined by SQL:1999 and implemented only by H2, HSQLDB, and Postgres:
    -									</p>
    -
    -</html><sql><![CDATA[A IS DISTINCT FROM B]]></sql><html>
    -
    -									<p>
    -										Nevertheless, the <code>IS DISTINCT FROM</code> predicate is supported in all dialects, as its semantics can be expressed with an equivalent <reference id="case-expressions" title="CASE expression"/>. For more details, see the manual's section about the <reference id="distinct-predicate" title="DISTINCT predicate"/>.
    -									</p>
    -									
    -									<h3>jOOQ and the Oracle SQL dialect</h3>
    -									<p>
    -										Oracle SQL is much more expressive than many other SQL dialects. It features many unique keywords, clauses and functions that are out of scope for the SQL standard. Some examples for this are
    -									</p>
    -									<ul>
    -										<li>The <reference id="connect-by-clause" title="CONNECT BY clause"/>, for hierarchical queries</li>
    -										<li>The <reference id="pivot-tables" title="PIVOT"/> keyword for creating PIVOT tables</li>
    -										<li><reference id="oracle-packages" title="Packages"/>, <reference id="oracle-member-procedures" title="object-oriented user-defined types, member procedures"/> as described in the section about <reference id="stored-procedures" title="stored procedures and functions"/></li>
    -										<li>Advanced analytical functions as described in the section about <reference id="window-functions" title="window functions"/></li>
    -									</ul>
    -
    -									<p>
    -										jOOQ has a historic affinity to Oracle's SQL extensions. If something is supported in Oracle SQL, it has a high probability of making it into the jOOQ API
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="connection-vs-datasource">
    -								<title>Connection vs. DataSource</title>
    -								<content><html>
    -									<h3>Interact with JDBC Connections</h3>
    -									<p>
    -										While you can use jOOQ for <reference id="sql-building" title="SQL building"/> only, you can also run queries against a JDBC <reference class="java.sql.Connection"/>. Internally, jOOQ creates <reference class="java.sql.Statement"/> or <reference class="java.sql.PreparedStatement"/> objects from such a Connection, in order to execute statements. The normal operation mode is to provide a <reference id="factory" title="Factory"/> with a JDBC Connection, whose lifecycle you will control yourself. This means that jOOQ will not actively close connections, rollback or commit transactions.
    -									</p>
    -									<h3>Interact with JDBC DataSources</h3>
    -									<p>
    -										If you're in a J2EE or Spring context, however, you may wish to use a <reference class="javax.sql.DataSource"/> instead. Currently, Connections obtained from such a DataSource will be closed after query execution by jOOQ. The semantics of such a close operation should be the returning of the connection into a connection pool, not the actual closing of the underlying physical connection. Typically, this makes sense in an environment using distributed JTA transactions. An example of using DataSources with jOOQ can be seen in the tutorial section about <reference id="jooq-with-spring" title="using jOOQ with Spring"/>.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="custom-settings">
    -								<title>Custom Settings</title>
    -								<content><html>
    -									<p>
    -										The jOOQ Factory allows for some optional configuration elements to be used by advanced users. The <reference class="org.jooq.conf.Settings" /> class is a JAXB-annotated type, that can be provided to a Factory in several ways:
    -									</p>
    -									<ul>
    -										<li>In the constructor. This will override default settings below</li>
    -										<li>From a location specified by a JVM parameter: -Dorg.jooq.settings</li>
    -										<li>From the classpath at /jooq-settings.xml</li>
    -										<li>From the settings defaults, as specified in <a href="http://www.jooq.org/xsd/jooq-runtime-2.5.0.xsd" title="The jOOQ Runtime configuration XSD">http://www.jooq.org/xsd/jooq-runtime-2.5.0.xsd</a></li>
    -									</ul>
    -									<h3>Example</h3>
    -									<p>
    -										For example, if you want to indicate to jOOQ, that it should inline all bind variables, and execute static <reference class="java.sql.Statement"/> instead of binding its variables to <reference class="java.sql.PreparedStatement"/>, you can do so by using the following Factory:
    -									</p>
    -</html><java><![CDATA[Settings settings = new Settings();
    -settings.setStatementType(StatementType.STATIC_STATEMENT);
    -Factory create = new Factory(connection, dialect, settings);]]></java><html>
    -									<p>
    -										Subsequent sections of the manual contain some more in-depth explanations about these settings:
    -									</p>
    -									<ul>
    -										<li>
    -		     								<reference id="schema-mapping" title="Runtime schema and table mapping"/>
    -		   								</li>
    -		     							<li>
    -		     								<reference id="execute-listeners" title="Execute listeners and SQL tracing"/>
    -		     							</li>
    -		     							<li>
    -		     								<reference id="optimistic-locking" title="Execute CRUD with optimistic locking enabled"/>
    -		     							</li>
    -		     							<li>
    -		     								<reference id="logging" title="Enabling DEBUG logging of all executed SQL"/>
    -		     							</li>
    -		   							</ul>
    -		   							<p>
    -										Please refer to the jOOQ runtime configuration XSD for more details:<br/>
    -										<a href="http://www.jooq.org/xsd/jooq-runtime-2.5.0.xsd" title="The jOOQ Runtime configuration XSD">http://www.jooq.org/xsd/jooq-runtime-2.5.0.xsd</a>
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -							<section id="runtime-schema-mapping">
    -								<title>Runtime schema and table mapping</title>
    -								<content><html>
    -									<h3>Mapping your DEV schema to a productive environment</h3>
    -									<p>
    -										You may wish to design your database in a way that you have several instances of your schema. This is useful when you want to cleanly separate data belonging to several customers / organisation units / branches / users and put each of those entities' data in a separate database or schema.
    -									</p>
    -									
    -									<p>
    -										In our AUTHOR example this would mean that you provide a book reference database to several companies, such as My Book World and Books R Us. In that case, you'll probably have a schema setup like this:
    -									</p>
    -									<ul>
    -										<li>DEV: Your development schema. This will be the schema that you base code generation upon, with jOOQ </li>
    -										<li>MY_BOOK_WORLD: The schema instance for My Book World </li>
    -										<li>BOOKS_R_US: The schema instance for Books R Us </li>
    -									</ul>
    -
    -									<h3>Mapping DEV to MY_BOOK_WORLD with jOOQ</h3>
    -									<p>
    -										When a user from My Book World logs in, you want them to access the MY_BOOK_WORLD schema using classes generated from DEV. This can be achieved with the <reference class="org.jooq.conf.RenderMapping"/> class, that you can equip your Factory's <reference id="custom-settings" title="settings"/> with. Take the following example:
    -									</p>
    -
    -</html><java>Settings settings = new Settings()
    -    .withRenderMapping(new RenderMapping()
    -    .withSchemata(
    -        new MappedSchema().withInput("DEV")
    -                          .withOutput("MY_BOOK_WORLD")));
    -
    -// Add the settings to the factory
    -Factory create = new Factory(connection, SQLDialect.ORACLE, settings);
    -
    -// Run queries with the "mapped" factory
    -create.selectFrom(AUTHOR).fetch();</java><html>
    -
    -									<p>
    -										The query executed with a Factory equipped with the above mapping will in fact produce this SQL statement:
    -									</p>
    -									
    -</html><sql>SELECT * FROM MY_BOOK_WORLD.AUTHOR</sql><html>
    -									<p>
    -										Even if AUTHOR was generated from DEV.
    -									</p>
    -
    -									<h3>Mapping several schemata</h3>
    -									<p>
    -										Your development database may not be restricted to hold only one DEV schema. You may also have a LOG schema and a MASTER schema. Let's say the MASTER schema is shared among all customers, but each customer has their own LOG schema instance. Then you can enhance your RenderMapping like this (e.g. using an XML configuration file):
    -									</p>
    -
    -</html><xml><![CDATA[<settings xmlns="http://www.jooq.org/xsd/jooq-runtime-2.5.0.xsd">
    -  <renderMapping>
    -    <schemata>
    -      <schema>
    -        <input>DEV</input>
    -        <output>MY_BOOK_WORLD</output>
    -      </schema>
    -      <schema>
    -        <input>LOG</input>
    -        <output>MY_BOOK_WORLD_LOG</output>
    -      </schema>
    -    </schemata>
    -  </renderMapping>
    -</settings>]]></xml><html>
    -
    -                            		<p>
    -                            			Note, you can load the above XML file like this:
    -                           			</p>
    -
    -</html><java>Settings settings = JAXB.unmarshal(new File("jooq-runtime.xml"), Settings.class);</java><html>
    -
    -									<p>
    -										This will map generated classes from DEV to MY_BOOK_WORLD, from LOG to MY_BOOK_WORLD_LOG, but leave the MASTER schema alone. Whenever you want to change your mapping configuration, you will have to create a new Factory
    -									</p>
    -
    -
    -									<h3>Using a default schema</h3>
    -									<p>
    -										Another option to switch schema names is to use a default schema for the Factory's underlying Connection. Many RDBMS support a USE or SET SCHEMA command, which you can call like this:
    -									</p>
    -
    -</html><java>// Set the default schema
    -Schema MY_BOOK_WORLD = ...
    -create.use(MY_BOOK_WORLD);
    -
    -// Run queries with factory having a default schema
    -create.selectFrom(AUTHOR).fetch();</java><html>
    -
    -									<p>
    -										Queries generated from the above Factory will produce this kind of SQL statement:
    -									</p>
    -
    -</html><sql>-- the schema name is omitted from all SQL constructs.
    -SELECT * FROM AUTHOR</sql><html>
    -
    -                            		<p>
    -                            			If you wish not to render any schema name at all, use the following Settings property for this:
    -                           			</p>
    -
    -
    -</html><java>Settings settings = new Settings()
    -    .withRenderSchema(false);
    -
    -// Add the settings to the factory
    -Factory create = new Factory(connection, SQLDialect.ORACLE, settings);
    -
    -// Run queries that omit rendering schema names
    -create.selectFrom(AUTHOR).fetch();</java><html>
    -
    -									<h3>Mapping of tables</h3>
    -									<p>
    -										Not only schemata can be mapped, but also tables. If you are not the owner of the database your application connects to, you might need to install your schema with some sort of prefix to every table. In our examples, this might mean that you will have to map DEV.AUTHOR to something MY_BOOK_WORLD.MY_APP__AUTHOR, where MY_APP__ is a prefix applied to all of your tables. This can be achieved by creating the following mapping: 
    -									</p>
    -
    -</html><java>Settings settings = new Settings()
    -    .withRenderMapping(new RenderMapping()
    -    .withSchemata(
    -        new MappedSchema().withInput("DEV")
    -                          .withOutput("MY_BOOK_WORLD")
    -                          .withTables(
    -         new MappedTable().withInput("AUTHOR")
    -                          .withOutput("MY_APP__AUTHOR"))));
    -
    -// Add the settings to the factory
    -Factory create = new Factory(connection, SQLDialect.ORACLE, settings);
    -
    -// Run queries with the "mapped" factory
    -create.selectFrom(AUTHOR).fetch();</java><html>
    -
    -									<p>
    -										The query executed with a Factory equipped with the above mapping will in fact produce this SQL statement:
    -									</p>
    -									
    -</html><sql>SELECT * FROM MY_BOOK_WORLD.MY_APP__AUTHOR</sql><html>
    -
    -		                            <p>
    -		                           		Table mapping and schema mapping can be applied independently, by specifying several MappedSchema entries in the above configuration. jOOQ will process them in order of appearance and map at first match. Note that you can always omit a MappedSchema's output value, in case of which, only the table mapping is applied. If you omit a MappedSchema's input value, the table mapping is applied to all schemata!
    -		                            </p>
    -
    -									<h3>Hard-wiring mappings at code-generation time</h3>
    -									<p>
    -										Note that the manual's section about <reference id="schema-mapping" title="code generation schema mapping"/> explains how you can hard-wire your schema mappings at code generation time
    -									</p>									
    -								</html></content>
    -							</section>
    -
    -							<section id="factory-subclasses">
    -								<title>Factory subclasses</title>
    -								<content><html>
    -									<p>
    -										There are a couple of subclasses for the general Factory. Each SQL dialect has its own dialect-specific factory. For instance, if you're only using the MySQL dialect, you can choose to create a new Factory using any of the following types:
    -									</p>
    -</html><java>// A general, dialect-unspecific factory
    -Factory create = new Factory(connection, SQLDialect.MYSQL);
    -
    -// A MySQL-specific factory
    -MySQLFactory create = new MySQLFactory(connection);</java><html>
    -									<p>
    -										The advantage of using a dialect-specific Factory lies in the fact,	that you have access to more proprietary RDMBS functionality. This may include:
    -									</p>
    -									<ul>
    -		    							<li>MySQL's encryption functions</li>
    -		    							<li>PL/SQL constructs, pgplsql, or any other dialect's ROUTINE-language (maybe in the future)</li>
    -									</ul>
    -									<p>
    -										Another type of Factory subclasses are each generated schema's factories. If you generate your schema TEST, then you will have access to a TestFactory. By default, such a schema-specific Factory will not render the schema name.
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="sql-statements">
    -						<title>SQL Statements</title>
    -						<content><html>
    -							<p>
    -								jOOQ currently supports 6 types of SQL statements. All of these statements are constructed from a Factory instance with an optional <reference id="connection-vs-datasource" title="JDBC Connection or DataSource"/>. If supplied with a Connection or DataSource, they can be executed. Depending on the <reference id="query-vs-resultquery" title="query type"/>, executed queries can return results.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="dsl-and-non-dsl">
    -								<title>jOOQ's DSL and non-DSL API</title>
    -								<content><html>
    -									<p>
    -										jOOQ ships with its own DSL (or	<a href="http://en.wikipedia.org/wiki/Domain-specific_language" title="Domain Specific Language">Domain Specific Language</a>) that	simulates SQL in Java. This means, that you can	write SQL statements almost as if Java natively supported it, just like .NET's C# does with <a href="http://msdn.microsoft.com/en-us/library/bb425822.aspx">LINQ to SQL.</a>
    -									</p>
    -									<p>
    -										Here is an example to illustrate what that means:
    -									</p>
    -									
    -</html><code-pair><sql><![CDATA[-- Select all books by authors born after 1920,
    --- named "Paulo" from a catalogue:
    -SELECT *
    -  FROM author a
    -  JOIN book b ON a.id = b.author_id
    - WHERE a.year_of_birth > 1920
    -   AND a.first_name = 'Paulo'
    - ORDER BY b.title]]></sql><java><![CDATA[Result<Record> result =
    -create.select()
    -      .from(AUTHOR.as("a"))
    -      .join(BOOK.as("b")).on(a.ID.equal(b.AUTHOR_ID))
    -      .where(a.YEAR_OF_BIRTH.greaterThan(1920)
    -      .and(a.FIRST_NAME.equal("Paulo")))
    -      .orderBy(b.TITLE)
    -      .fetch();]]></java></code-pair><html>
    -
    -									<p>
    -										We'll see how the aliasing works later in the section about <reference id="aliased-tables" title="aliased tables"/>
    -									</p>
    -
    -									<h3>jOOQ as an internal domain specific language in Java (a.k.a. the DSL-API)</h3>
    -									<p>
    -										Many other frameworks have similar APIs with similar feature sets. Yet, what makes jOOQ special is its informal <reference id="reference-bnf-notation" title="BNF notation"/> modelling a unified SQL dialect suitable for many vendor-specific dialects, and implementing that BNF notation as a hierarchy of interfaces in Java. This concept is extremely powerful, when <reference id="jooq-in-modern-ides" title="using jOOQ in modern IDEs" /> with syntax completion. Not only can you code much faster, your SQL code will be compile-checked to a certain extent. An example of a DSL query equivalent to the previous one is given here:
    -									</p>
    -</html><java><![CDATA[Factory create = new Factory(connection, dialect);
    -Result<?> result = create.select()
    -                         .from(AUTHOR)
    -                         .join(BOOK).on(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -                         .fetch();]]></java><html>
    -
    -                         			<p>
    -                         				Unlike other, simpler frameworks that use <a href="http://en.wikipedia.org/wiki/Fluent_interface">"fluent APIs"</a> or <a href="http://en.wikipedia.org/wiki/Method_chaining">"method chaining"</a>, jOOQ's BNF-based interface hierarchy will not allow bad query syntax. The following will not compile, for instance:
    -                         			</p>
    -</html><java><![CDATA[Factory create = new Factory(connection, dialect);
    -Result<?> result = create.select()
    -                         .join(BOOK).on(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -                      //  ^^^^ "join" is not possible here
    -                         .from(AUTHOR)
    -                         .fetch();
    -
    -Result<?> result = create.select()
    -                         .from(AUTHOR)
    -                         .join(BOOK)
    -                         .fetch();
    -                      //  ^^^^^ "on" is missing here
    -
    -Result<?> result = create.select(rowNumber())
    -                      //         ^^^^^^^^^ "over()" is missing here
    -                         .from(AUTHOR)
    -                         .fetch();]]></java><html>
    -
    -									<h3>History of SQL building and incremental query building (a.k.a. the non-DSL API)</h3>
    -									<p>
    -										Historically, jOOQ started out as an object-oriented SQL builder library like any other. This meant that all queries and their syntactic components were modeled as so-called <reference id="queryparts" title="QueryParts"/>, which delegate <reference id="sql-rendering" title="SQL rendering"/> and <reference id="variable-binding" title="variable binding"/> to child components. This part of the API will be referred to as the non-DSL API, which is still maintained and used internally by jOOQ for incremental query building. An example of incremental query building is given here:
    -									</p>
    -</html><java><![CDATA[Factory create = new Factory(connection, dialect);
    -SelectQuery query = create.selectQuery();
    -query.addFrom(AUTHOR);
    -
    -// Join books only under certain circumstances
    -if (join) {
    -    query.addJoin(BOOK, BOOK.AUTHOR_ID.equal(AUTHOR.ID));
    -}
    -
    -Result<?> result = query.fetch();]]></java><html>
    -
    -									<p>
    -										This query is equivalent to the one shown before using the DSL syntax. In fact, internally, the DSL API constructs precisely this QueryObject. Note, that you can always access the SelectQuery object to switch between DSL and non-DSL APIs:
    -									</p>
    -
    -</html><java><![CDATA[Factory create = new Factory(connection, dialect);
    -SelectFinalStep select = create.select().from(AUTHOR);
    -
    -// Add the JOIN clause on the internal QueryObject representation
    -SelectQuery query = select.getQuery();
    -query.addJoin(BOOK, BOOK.AUTHOR_ID.equal(AUTHOR.ID));]]></java><html>
    -
    -									<h3>Mutability</h3>
    -									<p>
    -										Note, that for historic reasons, the DSL API mixes mutable and immutable behaviour with respect to the internal representation of the <reference id="queryparts" title="QueryPart"/> being constructed. While creating <reference id="conditional-expressions" title="conditional expressions"/>, <reference id="column-expressions" title="column expressions"/> (such as functions) assumes immutable behaviour, creating <reference id="sql-statements" title="SQL statements"/> does not. In other words, the following can be said:
    -									</p>
    -									
    -</html><java><![CDATA[// Conditional expressions (immutable)
    -// -----------------------------------
    -Condition a = BOOK.TITLE.equal("1984");
    -Condition b = BOOK.TITLE.equal("Animal Farm");
    -
    -// The following can be said
    -a       != a.or(b); // or() does not modify a
    -a.or(b) != a.or(b); // or() always creates new objects
    -
    -// Statements (mutable)
    -// --------------------
    -SelectFromStep s1 = create.select();
    -SelectJoinStep s2 = s1.from(BOOK);
    -SelectJoinStep s3 = s1.from(AUTHOR);
    -
    -// The following can be said
    -s1 == s2; // The internal object is always the same
    -s2 == s3; // The internal object is always the same]]></java><html>
    -
    -									<p>
    -										Mutability may be removed in a future version of jOOQ.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="select-statement">
    -								<title>The SELECT statement</title>
    -								<content><html>
    -									<p>
    -										When you don't just perform <reference id="crud-with-updatablerecords" title="CRUD"/> (i.e. SELECT * FROM your_table WHERE ID = ?), you're usually generating new record types using custom projections. With jOOQ, this is as intuitive, as if using SQL directly. A more or less complete example of the "standard" SQL syntax, plus some extensions, is provided by a query like this:
    -									</p>
    -</html><code-pair>
    -<sql><![CDATA[-- get all authors' first and last names, and the number
    --- of books they've written in German, if they have written
    --- more than five books in German in the last three years
    --- (from 2011), and sort those authors by last names
    --- limiting results to the second and third row, locking
    --- the rows for a subsequent update... whew!
    -
    -  SELECT AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME, COUNT(*)
    -    FROM AUTHOR
    -    JOIN BOOK ON AUTHOR.ID = BOOK.AUTHOR_ID
    -   WHERE BOOK.LANGUAGE = 'DE'
    -     AND BOOK.PUBLISHED > '2008-01-01'
    -GROUP BY AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME
    -  HAVING COUNT(*) > 5
    -ORDER BY AUTHOR.LAST_NAME ASC NULLS FIRST
    -   LIMIT 2
    -  OFFSET 1
    -     FOR UPDATE]]></sql><java><![CDATA[// And with jOOQ...
    -
    -
    -
    -
    -Factory create = new Factory(connection, dialect);
    -
    -create.select(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME, count())
    -      .from(AUTHOR)
    -      .join(BOOK).on(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -      .where(BOOK.LANGUAGE.equal("DE"))
    -      .and(BOOK.PUBLISHED.greaterThan("2008-01-01"))
    -      .groupBy(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .having(count().greaterThan(5))
    -      .orderBy(AUTHOR.LAST_NAME.asc().nullsFirst())
    -      .limit(1)
    -      .offset(2)
    -      .forUpdate();]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										Details about the various clauses of this query will be provided in subsequent sections
    -									</p>
    -
    -									<h3>SELECT from single physical tables</h3>
    -									<p>
    -										A very similar, but limited API is available, if you want to select from single physical tables in order to retrieve <reference id="crud-with-updatablerecords" title="TableRecords or even UpdatableRecords"/>. The decision, which type of select to create is already made at the very first step, when you create the SELECT statement with the Factory:
    -									</p>
    -
    -</html><java><![CDATA[public <R extends Record> SimpleSelectWhereStep<R> selectFrom(Table<R> table);]]></java><html>
    -									<p>
    -										As you can see, there is no way to further restrict/project the selected fields. This just selects all known TableFields in the supplied Table, and it also binds &lt;R extends Record&gt; to your Table's associated Record. An example of such a Query would then be:
    -									</p>
    -</html><java><![CDATA[BookRecord book = create.selectFrom(BOOK)
    -                        .where(BOOK.LANGUAGE.equal("DE"))
    -                        .orderBy(BOOK.TITLE)
    -                        .fetchAny();]]></java><html>
    -
    -                   					<p>
    -                   						The simple SELECT API is limited in the way that it does not support any of these clauses:
    -                   					</p>
    -                   					<ul>
    -                   						<li><reference id="select-clause"/></li>
    -                   						<li><reference id="join-clause"/></li>
    -                   						<li><reference id="group-by-clause"/></li>
    -                   						<li><reference id="having-clause"/></li>
    -                   					</ul>
    -                   					<p>
    -                   						In most parts of this manual, it is assumed that you do not use the simple SELECT API. For more information about the simple SELECT API, see the manual's section about <reference id="record-vs-tablerecord" title="fetching strongly or weakly typed records"/>.
    -                   					</p>
    -								</html></content>
    -
    -								<sections>
    -									<section id="select-clause">
    -										<title>The SELECT clause</title>
    -										<content><html>
    -											<p>
    -												The SELECT clause lets you project your own record types, referencing table fields, functions, arithmetic expressions, etc. The Factory provides several methods for expressing a SELECT clause:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- The SELECT clause
    -SELECT BOOK.ID, BOOK.TITLE
    -SELECT BOOK.ID, TRIM(BOOK.TITLE)
    -]]></sql><java><![CDATA[// Provide a varargs Fields list to the SELECT clause:
    -Select<?> s1 = create.select(BOOK.ID, BOOK.TITLE);
    -Select<?> s2 = create.select(BOOK.ID, trim(BOOK.TITLE));]]></java>
    -</code-pair><html>
    -
    -											<p>
    -												Some commonly used projections can be easily created using convenience methods:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- Simple SELECTs
    -SELECT COUNT(*)
    -SELECT 0 -- Not a bind variable
    -SELECT 1 -- Not a bind variable
    -]]></sql><java><![CDATA[// Select commonly used values
    -Select<?> select1 = create.selectCount();
    -Select<?> select2 = create.selectZero();
    -Select<?> select2 = create.selectOne();]]></java>
    -</code-pair><html>
    -
    -											<p>
    -												See more details about functions and expressions in the manual's section about <reference id="column-expressions"/>
    -											</p>
    -
    -											<h3>The SELECT DISTINCT clause</h3>
    -											<p>
    -												The DISTINCT keyword can be included in the method name, constructing a SELECT clause
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT DISTINCT BOOK.TITLE]]></sql><java><![CDATA[Select<?> select1 = create.selectDistinct(BOOK.TITLE);]]></java>
    -</code-pair><html>
    -										</html></content>
    -									</section>
    -
    -									<section id="from-clause">
    -										<title>The FROM clause</title>
    -										<content><html>
    -											<p>
    -												The SQL FROM clause allows for specifying any number of <reference id="table-expressions" title="table expressions"/> to select data from. The following are examples of how to form normal FROM clauses:
    -											</p>
    -
    -</html><code-pair>
    -	<sql><![CDATA[SELECT 1 FROM BOOK
    -SELECT 1 FROM BOOK, AUTHOR
    -SELECT 1 FROM BOOK "b", AUTHOR "a"]]></sql><java><![CDATA[create.selectOne().from(BOOK);
    -create.selectOne().from(BOOK, AUTHOR);
    -create.selectOne().from(BOOK.as("b"), AUTHOR.as("a"));]]></java>
    -</code-pair><html>
    -
    -											<p>
    -												Read more about aliasing in the manual's section about <reference id="aliased-tables" title="aliased tables"/>.
    -											</p>
    -											
    -											<h3>More advanced table expressions</h3>
    -											<p>
    -												Apart from simple tables, you can pass any arbitrary <reference id="table-expressions" title="table expression"/> to the jOOQ FROM clause. This may include <reference id="array-and-cursor-unnesting" title="unnested cursors"/> in Oracle:
    -											</p>
    -
    -</html><code-pair>
    -	<sql><![CDATA[SELECT *
    -FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(null, null, 'ALLSTATS'));]]></sql><java><![CDATA[create.select()
    -      .from(table(DbmsXplan.displayCursor(null, null, "ALLSTATS"));]]></java>
    -</code-pair><html>
    -
    -											<p>
    -												Note, in order to access the DbmsXplan package, you can use the <reference id="code-generation" title="code generator"/> to generate Oracle's SYS schema.
    -											</p>
    -
    -
    -											<h3>Selecting FROM DUAL with jOOQ</h3>
    -											<p>
    -												In many SQL dialects, FROM is a mandatory clause, in some it isn't. jOOQ allows you to omit the FROM clause, returning just one record. An example:
    -											</p>
    -
    -</html><code-pair>
    -	<sql><![CDATA[SELECT 1 FROM DUAL
    -SELECT 1]]></sql><java><![CDATA[new Factory(SQLDialect.ORACLE).selectOne().getSQL();
    -new Factory(SQLDialect.POSTGRES).selectOne().getSQL();]]></java>
    -</code-pair><html>
    -
    -											<p>
    -												Read more about dual or dummy tables in the manual's section about <reference id="dual" title="the DUAL table"/>. The following are examples of how to form normal FROM clauses:
    -											</p>
    -										</html></content>
    -									</section>
    -
    -									<section id="join-clause">
    -										<title>The JOIN clause</title>
    -										<content><html>
    -											<p>
    -												jOOQ supports many different types of standard SQL JOIN operations:
    -											</p>
    -											<ul>
    -												<li>[ INNER ] JOIN</li>
    -												<li>LEFT [ OUTER ] JOIN</li>
    -												<li>RIGHT [ OUTER ] JOIN</li>
    -												<li>FULL OUTER JOIN</li>
    -												<li>CROSS JOIN</li>
    -												<li>NATURAL JOIN</li>
    -												<li>NATURAL LEFT [ OUTER ] JOIN</li>
    -												<li>NATURAL RIGHT [ OUTER ] JOIN</li>
    -											</ul>
    -
    -											<p>
    -												All of these JOIN methods can be called on <reference class="org.jooq.Table"/> types, or directly after the FROM clause for convenience. The following example joins AUTHOR and BOOK
    -											</p>
    -
    -</html><java><![CDATA[Factory create = new Factory(connection, dialect);
    -
    -// Call "join" directly on the AUTHOR table
    -Result<?> result = create.select()
    -                         .from(AUTHOR.join(BOOK)
    -                                     .on(BOOK.AUTHOR_ID.equal(AUTHOR.ID)))
    -                         .fetch();
    -
    -// Call "join" on the type returned by "from"
    -Result<?> result = create.select()
    -                         .from(AUTHOR)
    -                         .join(BOOK)
    -                         .on(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -                         .fetch();]]></java><html>
    -
    -											<p>
    -												The two syntaxes will produce the same SQL statement. However, calling "join" on <reference class="org.jooq.Table"/> objects allows for more powerful, nested JOIN expressions (if you can handle the parentheses):
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM AUTHOR
    -LEFT OUTER JOIN (
    -  BOOK JOIN BOOK_TO_BOOK_STORE
    -       ON BOOK_TO_BOOK_STORE.BOOK_ID = BOOK.ID
    -)
    -ON BOOK.AUTHOR_ID = AUTHOR.ID]]></sql><java><![CDATA[// Nest joins and provide JOIN conditions only at the end
    -create.select()
    -      .from(AUTHOR
    -      .leftOuterJoin(BOOK
    -        .join(BOOK_TO_BOOK_STORE)
    -        .on(BOOK_TO_BOOK_STORE.BOOK_ID.equal(BOOK.ID)))
    -      .on(BOOK.AUTHOR_ID.equal(AUTHOR.ID)));]]></java></code-pair><html>
    -
    -      										<ul>
    -      											<li>See the section about <reference id="conditional-expressions" title="conditional expressions"/> to learn more about the many ways to create <reference class="org.jooq.Condition"/> objects in jOOQ.</li>
    -      											<li>See the section about <reference id="table-expressions" title="table expressions"/> to learn about the various ways of referencing <reference class="org.jooq.Table"/> objects in jOOQ</li>
    -      										</ul>
    -
    -											<h3>JOIN ON KEY, convenience provided by jOOQ</h3>
    -											<p>
    -												Surprisingly, SQL does not allow to formally JOIN on well-known foreign key relationship information. Naturally, when you join BOOK to AUTHOR, you will want to do that based on the BOOK.AUTHOR_ID foreign key to AUTHOR.ID primary key relation. Not being able to do this in SQL leads to a lot of repetitive code, re-writing the same JOIN predicate again and again - especially, when your foreign keys contain more than one column. With jOOQ, when you use <reference id="code-generation" title="code generation"/>, you can use foreign key constraint information in JOIN expressions as such:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM AUTHOR
    -JOIN BOOK ON BOOK.AUTHOR_ID = AUTHOR.ID]]></sql><java><![CDATA[create.select()
    -      .from(AUTHOR)
    -      .join(BOOK).onKey();]]></java></code-pair><html>
    -
    -      										<p>
    -      											In case of ambiguity, you can also supply field references for your foreign keys, or the generated foreign key reference to the onKey() method.
    -      										</p>
    -
    -											<h3>The JOIN USING syntax</h3>
    -											<p>
    -												Most often, you will provide jOOQ with JOIN conditions in the JOIN .. ON clause. SQL supports a different means of specifying how two tables are to be joined. This is the JOIN .. USING clause. Instead of a condition, you supply a set of fields whose names are common to both tables to the left and right of a JOIN operation. This can be useful when your database schema has a high degree of <a href="http://en.wikipedia.org/wiki/Database_normalization">relational normalisation</a>. An example:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- Assuming that both tables contain AUTHOR_ID columns
    -SELECT *
    -FROM AUTHOR
    -JOIN BOOK USING (AUTHOR_ID)]]></sql><java><![CDATA[// join(...).using(...)
    -create.select()
    -      .from(AUTHOR)
    -      .join(BOOK).using(AUTHOR.AUTHOR_ID);]]></java></code-pair><html>
    -
    -											<p>
    -												In schemas with high degrees of normalisation, you may also choose to use NATURAL JOIN, which takes no JOIN arguments as it joins using all fields that are common to the table expressions to the left and to the right of the JOIN operator. An example:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- Assuming that both tables contain AUTHOR_ID columns
    -SELECT *
    -FROM AUTHOR
    -NATURAL JOIN BOOK]]></sql><java><![CDATA[// naturalJoin(...)
    -create.select()
    -      .from(AUTHOR)
    -      .naturalJoin(BOOK);]]></java></code-pair><html>
    -
    -											<h3>Oracle's partitioned OUTER JOIN</h3>
    -											<p>
    -												Oracle SQL ships with a special syntax available for OUTER JOIN clauses. According to the <a href="http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_10002.htm#i2196190">Oracle documentation about partitioned outer joins</a> this can be used to fill gaps for simplified analytical calculations. jOOQ only supports putting the PARTITION BY clause to the right of the OUTER JOIN clause. The following example will create at least one record per AUTHOR and per existing value in BOOK.PUBLISHED_IN, regardless if an AUTHOR has actually published a book in that year.
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM AUTHOR
    -LEFT OUTER JOIN BOOK
    -PARTITION BY (PUBLISHED_IN)
    -ON BOOK.AUTHOR_ID = AUTHOR.ID]]></sql><java><![CDATA[create.select()
    -      .from(AUTHOR)
    -      .leftOuterJoin(BOOK)
    -      .partitionBy(BOOK.PUBLISHED_IN)
    -      .on(BOOK.AUTHOR_ID.equal(AUTHOR.ID));]]></java></code-pair><html>
    -
    -										</html></content>
    -									</section>
    -
    -									<section id="where-clause">
    -										<title>The WHERE clause</title>
    -										<content><html>
    -											<p>
    -												The WHERE clause can be used for JOIN or filter predicates, in order to restrict the data returned by the <reference id="table-expressions" title="table expressions"/> supplied to the previously specified <reference id="from-clause" title="from clause"/> and <reference id="join-clause" title="join clause"/>. Here is an example:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM BOOK
    -WHERE AUTHOR_ID = 1
    -AND TITLE = '1984']]></sql><java><![CDATA[create.select()
    -      .from(BOOK)
    -      .where(BOOK.AUTHOR_ID.equal(1))
    -      .and(BOOK.TITLE.equal("1984"));]]></java></code-pair><html>
    -
    -											<p>
    -												The above syntax is convenience provided by jOOQ, allowing you to connect the <reference class="org.jooq.Condition"/> supplied in the WHERE clause with another condition using an AND operator. You can of course also create a more complex condition and supply that to the WHERE clause directly (observe the different placing of parentheses). The results will be the same:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM BOOK
    -WHERE AUTHOR_ID = 1
    -AND TITLE = '1984']]></sql><java><![CDATA[create.select()
    -      .from(BOOK)
    -      .where(BOOK.AUTHOR_ID.equal(1).and(
    -             BOOK.TITLE.equal("1984")));]]></java></code-pair><html>
    -
    -											<p>
    -												You will find more information about creating <reference id="conditional-expressions" title="conditional expressions"/> later in the manual.
    -											</p>
    -										</html></content>
    -									</section>
    -
    -									<section id="connect-by-clause">
    -										<title>The CONNECT BY clause</title>
    -										<content><html>
    -											<p>
    -												The Oracle database knows a very succinct syntax for creating hierarchical queries: the CONNECT BY clause, which is fully supported by jOOQ, including all related functions and pseudo-columns. A more or less formal definition of this clause is given here:
    -											</p>
    -</html><sql>--   SELECT ..
    ---     FROM ..
    ---    WHERE ..
    - CONNECT BY [NOCYCLE] condition [AND condition, ...] [START WITH condition]
    --- GROUP BY ..</sql><html>
    -
    -											<p>
    -												An example for an iterative query, iterating through values between 1 and 5 is this:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT LEVEL
    -FROM DUAL
    -CONNECT BY LEVEL <= 5]]></sql><java><![CDATA[// Get a table with elements 1, 2, 3, 4, 5
    -create.select(level())
    -      .connectBy(level().lessOrEqual(5));]]></java></code-pair><html>
    -
    -											<p>
    -												Here's a more complex example where you can recursively fetch directories in your database, and concatenate them to a path:
    -											</p>
    -</html><code-pair>
    -<sql><![CDATA[SELECT 
    -  SUBSTR(SYS_CONNECT_BY_PATH(DIRECTORY.NAME, '/'), 2)
    -FROM DIRECTORY
    -CONNECT BY 
    -  PRIOR DIRECTORY.ID = DIRECTORY_PARENT_ID
    -START WITH DIRECTORY.PARENT_ID IS NULL
    -ORDER BY 1]]></sql><java><![CDATA[.select(
    -   sysConnectByPath(DIRECTORY.NAME, "/").substring(2))
    -.from(DIRECTORY)
    -.connectBy(
    -   prior(DIRECTORY.ID).equal(DIRECTORY.PARENT_ID))
    -.startWith(DIRECTORY.PARENT_ID.isNull())
    -.orderBy(1);]]></java>
    -</code-pair><html>
    -
    -    										<p>
    -    											The output might then look like this
    -   											</p>
    -
    -</html><text>+------------------------------------------------+
    -|substring                                       |
    -+------------------------------------------------+
    -|C:                                              |
    -|C:/eclipse                                      |
    -|C:/eclipse/configuration                        |
    -|C:/eclipse/dropins                              |
    -|C:/eclipse/eclipse.exe                          |
    -+------------------------------------------------+
    -|...21 record(s) truncated...
    -</text><html>
    -
    -											<p>
    -												Some of the supported functions and pseudo-columns are these (available from the <reference id="factory" title="Factory"/>):
    -											</p>
    -
    -											<ul>
    -												<li>LEVEL</li>
    -												<li>CONNECT_BY_IS_CYCLE</li>
    -												<li>CONNECT_BY_IS_LEAF</li>
    -												<li>CONNECT_BY_ROOT</li>
    -												<li>SYS_CONNECT_BY_PATH</li>
    -												<li>PRIOR</li>
    -											</ul>
    -
    -											<p>
    -												Note that this syntax is also supported in the CUBRID database.
    -											</p>
    -										</html></content>
    -									</section>
    -
    -									<section id="group-by-clause">
    -										<title>The GROUP BY clause</title>
    -										<content><html>
    -											<p>
    -												GROUP BY can be used to create unique groups of data, to form aggregations, to remove duplicates and for other reasons. It will transform your previously defined <reference id="table-expressions" title="set of table expressions"/>, and return only one record per unique group as specified in this clause. For instance, you can group books by BOOK.AUTHOR_ID:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT AUTHOR_ID, COUNT(*)
    -FROM BOOK
    -GROUP BY AUTHOR_ID]]></sql><java><![CDATA[create.select(BOOK.AUTHOR_ID, count())
    -      .from(BOOK)
    -      .groupBy(AUTHOR_ID);]]></java></code-pair><html>
    -
    -											<p>
    -												As defined in the SQL standard, when grouping, you may no longer project any columns that are not a formal part of the GROUP BY clause, or <reference id="aggregate-functions" title="aggregate functions"/>. The above example counts all books per author
    -											</p>
    -
    -											<h3>MySQL's deviation from the SQL standard</h3>
    -											<p>
    -												MySQL has a peculiar way of not adhering to this standard behaviour. This is documented in the <a href="http://dev.mysql.com/doc/refman/5.6/en/group-by-hidden-columns.html">MySQL manual</a>. In short, with MySQL, you can also project any other field that are not part of the GROUP BY clause. The projected values will just be arbitrary values from within the group. You cannot rely on any ordering. For example:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT AUTHOR_ID, TITLE
    -FROM BOOK
    -GROUP BY AUTHOR_ID]]></sql><java><![CDATA[create.select(BOOK.AUTHOR_ID, BOOK.TITLE)
    -      .from(BOOK)
    -      .groupBy(AUTHOR_ID);]]></java></code-pair><html>
    -
    -											<p>
    -												This will return an arbitrary title per author. jOOQ supports this syntax, as jOOQ is not doing any checks internally, about the consistence of tables/fields/functions that you provide it.
    -											</p>
    -
    -											<h3>Empty GROUP BY clauses</h3>
    -											<p>
    -												jOOQ supports empty <code>GROUP BY ()</code> clauses as well. This will result in <reference id="select-statement" title="SELECT statements"/> that return only one record.
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT COUNT(*)
    -FROM BOOK
    -GROUP BY ()]]></sql><java><![CDATA[create.selectCount()
    -      .from(BOOK)
    -      .groupBy();]]></java></code-pair><html>
    -
    -											
    -											<h3>ROLLUP(), CUBE() and GROUPING SETS()</h3>
    -											<p>
    -												Some databases support the SQL standard grouping functions and some extensions thereof. See the manual's section about <reference id="grouping-functions" title="grouping functions"/> for more details.
    -											</p>
    -										</html></content>
    -									</section>
    -
    -									<section id="having-clause">
    -										<title>The HAVING clause</title>
    -										<content><html>
    -											<p>
    -												The HAVING clause is commonly used to further restrict data resulting from a previously issued <reference id="group-by-clause" title="GROUP BY clause"/>. An example, selecting only those authors that have written at least two books:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT AUTHOR_ID, COUNT(*)
    -FROM BOOK
    -GROUP BY AUTHOR_ID
    -HAVING COUNT(*) >= 2]]></sql><java><![CDATA[create.select(BOOK.AUTHOR_ID, count(*))
    -      .from(BOOK)
    -      .groupBy(AUTHOR_ID)
    -      .having(count().greaterOrEqual(2));]]></java></code-pair><html>
    -
    -											<p>
    -												According to the SQL standard, you may omit the GROUP BY clause and still issue a HAVING clause. This will implicitly GROUP BY (). jOOQ also supports this syntax. The following example selects one record, only if there are at least 4 books in the books table:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT COUNT(*)
    -FROM BOOK
    -HAVING COUNT(*) >= 4]]></sql><java><![CDATA[create.select(count(*))
    -      .from(BOOK)
    -      .having(count().greaterOrEqual(4));]]></java></code-pair><html>
    -
    -										</html></content>
    -									</section>
    -
    -									<section id="order-by-clause">
    -										<title>The ORDER BY clause</title>
    -										<content><html>
    -											<p>
    -												Databases are allowed to return data in any arbitrary order, unless you explicitly declare that order in the ORDER BY clause. In jOOQ, this is straight-forward:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT AUTHOR_ID, TITLE
    -FROM BOOK
    -ORDER BY AUTHOR_ID ASC, TITLE DESC]]></sql><java><![CDATA[create.select(BOOK.AUTHOR_ID, BOOK.TITLE)
    -      .from(BOOK)
    -      .orderBy(BOOK.AUTHOR_ID.asc(), BOOK.TITLE.desc());]]></java></code-pair><html>
    -
    -											<p>
    -												Any jOOQ <reference id="column-expressions" title="column expression (or field)"/> can be transformed into an <reference class="org.jooq.SortField"/> by calling the asc() and desc() methods.
    -											</p>
    -
    -											<h3>Ordering by field index</h3>
    -											<p>
    -												The SQL standard allows for specifying integer literals (<reference id="inlined-parameters" title="literals"/>, not <reference id="bind-values" title="bind values"/>!) to reference column indexes from the projection (<reference id="select-clause" title="SELECT clause"/>). This may be useful if you do not want to repeat a lengthy expression, by which you want to order - although most databases also allow for referencing <reference id="aliased-columns" title="aliased column references"/> in the ORDER BY clause. An example of this is given here:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT AUTHOR_ID, TITLE
    -FROM BOOK
    -ORDER BY 1 ASC, 2 DESC]]></sql><java><![CDATA[create.select(BOOK.AUTHOR_ID, BOOK.TITLE)
    -      .from(BOOK)
    -      .orderBy(one().asc(), inline(2).desc());]]></java></code-pair><html>
    -
    -											<p>
    -												Note, how one() is used as a convenience short-cut for inline(1)
    -											</p>
    -
    -											<h3>Ordering and NULLS</h3>
    -											<p>
    -												A few databases support the SQL standard "null ordering" clause in sort specification lists, to define whether NULL values should come first or last in an ordered result.
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT 
    -  BOOK.AUTHOR_ID, 
    -  BOOK.CO_AUTHOR_ID, 
    -  BOOK.TITLE
    -FROM BOOK
    -ORDER BY AUTHOR_ID ASC,
    -         CO_AUTHOR_ID ASC NULLS LAST]]></sql><java><![CDATA[create.select(
    -         BOOK.AUTHOR_ID, 
    -         BOOK.CO_AUTHOR_ID, 
    -         BOOK.TITLE)
    -      .from(BOOK)
    -      .orderBy(BOOK.AUTHOR_ID.asc(),
    -               BOOK.CO_AUTHOR_ID.asc().nullsLast());]]></java></code-pair><html>
    -
    -											<p>
    -												If your database doesn't support this syntax, jOOQ simulates it using a <reference id="case-expressions" title="CASE expression"/> as follows
    -											</p>
    -</html><code-pair>
    -<sql><![CDATA[SELECT 
    -  BOOK.AUTHOR_ID, BOOK.CO_AUTHOR_ID, BOOK.TITLE
    -FROM BOOK
    -ORDER BY AUTHOR_ID ASC,
    -         CASE WHEN CO_AUTHOR_ID IS NULL 
    -              THEN 1 ELSE 0 END ASC,
    -         CO_AUTHOR_ID ASC]]></sql><java><![CDATA[create.select(
    -         BOOK.AUTHOR_ID, 
    -         BOOK.CO_AUTHOR_ID,
    -         BOOK.TITLE)
    -      .from(BOOK)
    -      .orderBy(BOOK.AUTHOR_ID.asc(),
    -               BOOK.CO_AUTHOR_ID.asc().nullsLast());]]></java></code-pair><html>
    -
    -											<h3>Ordering using CASE expressions</h3>
    -											<p>
    -												Using <reference id="case-expressions" title="CASE expressions"/> in SQL ORDER BY clauses is a common pattern, if you want to introduce some sort indirection / sort mapping into your queries. As with SQL, you can add any type of <reference id="column-expressions" title="column expression"/> into your ORDER BY clause. For instance, if you have two favourite books that you always want to appear on top, you could write:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM BOOK
    -ORDER BY CASE TITLE
    -         WHEN '1984' THEN 0
    -         WHEN 'Animal Farm' THEN 1
    -         ELSE 2 END ASC]]></sql><java><![CDATA[create.select()
    -      .from(BOOK)
    -      .orderBy(decode().value(BOOK.TITLE)
    -                       .when("1984", 0)
    -                       .when("Animal Farm", 1)
    -                       .otherwise(2).asc());]]></java></code-pair><html>
    -
    -											<p>
    -												But writing these things can become quite verbose. jOOQ supports a convenient syntax for specifying sort mappings. The same query can be written in jOOQ as such:
    -											</p>
    -
    -</html><java><![CDATA[create.select()
    -      .from(BOOK)
    -      .orderBy(BOOK.TITLE.sortAsc("1984", "Animal Farm"));]]></java><html>
    -
    -											<p>
    -												More complex sort indirections can be provided using a Map:
    -											</p>
    -
    -</html><java><![CDATA[create.select()
    -      .from(BOOK)
    -      .orderBy(BOOK.TITLE.sort(new HashMap<String, Integer>() {{
    -          put("1984", 1);
    -          put("Animal Farm", 13);
    -          put("The jOOQ book", 10);
    -      }}));]]></java><html>
    -
    -      										<p>
    -      											Of course, you can combine this feature with the previously discussed NULLS FIRST / NULLS LAST feature. So, if in fact these two books are the ones you like least, you can put all NULLS FIRST (all the other books):
    -      										</p>
    -
    -</html><java><![CDATA[create.select()
    -      .from(BOOK)
    -      .orderBy(BOOK.TITLE.sortAsc("1984", "Animal Farm").nullsFirst());]]></java><html>
    -
    -											<h3>jOOQ's understanding of SELECT .. ORDER BY</h3>
    -											<p>
    -												The SQL standard defines that a "query expression" can be ordered, and that query expressions can contain <reference id="union-clause" title="UNION, INTERSECT and EXCEPT clauses"/>, whose subqueries cannot be ordered. While this is defined as such in the SQL standard, many databases allowing for the non-standard <reference id="limit-clause" title="LIMIT clause"/> in one way or another, do not adhere to this part of the SQL standard. Hence, jOOQ allows for ordering all SELECT statements, regardless whether they are constructed as a part of a UNION or not. Corner-cases are handled internally by jOOQ, by introducing synthetic subselects to adhere to the correct syntax, where this is needed.
    -											</p>
    -										</html></content>
    -									</section>
    -
    -									<section id="limit-clause">
    -										<title>The LIMIT .. OFFSET clause</title>
    -										<content><html>
    -											<p>
    -												While being extremely useful for every application that does paging, or just to limit result sets to reasonable sizes, this clause is not yet part of any SQL standard (up until SQL:2008). Hence, there exist a variety of possible implementations in various SQL dialects, concerning this limit clause. jOOQ chose to implement the LIMIT .. OFFSET clause as understood and supported by MySQL, H2, HSQLDB, Postgres, and SQLite. Here is an example of how to apply limits with jOOQ:
    -											</p>
    -
    -</html><java><![CDATA[create.select().from(BOOK).limit(1).offset(2);]]></java><html>
    -
    -											<p>
    -												This will limit the result to 1 books starting with the 2nd book (starting at offset 0!). limit() is supported in all dialects, offset() in all but Sybase ASE, which has no reasonable means to simulate it. This is how jOOQ simulates the above query in various SQL dialects:
    -											</p>
    -
    -</html><sql><![CDATA[-- MySQL, H2, HSQLDB, Postgres, and SQLite
    -SELECT * FROM BOOK LIMIT 1 OFFSET 2
    -
    --- CUBRID supports a MySQL variant of the LIMIT .. OFFSET clause
    -SELECT * FROM BOOK LIMIT 2, 1
    -
    --- Derby
    -SELECT * FROM BOOK OFFSET 2 ROWS FETCH NEXT 1 ROWS ONLY
    -
    --- Ingres
    -SELECT * FROM BOOK OFFSET 2 FETCH FIRST 1 ROWS ONLY
    -
    --- Firebird
    -SELECT * FROM BOOK ROWS 2 TO 3
    -
    --- Sybase SQL Anywhere
    -SELECT TOP 1 ROWS START AT 3 * FROM BOOK
    -
    --- DB2 (without OFFSET)
    -SELECT * FROM BOOK FETCH FIRST 1 ROWS ONLY
    -
    --- Sybase ASE, SQL Server (without OFFSET)
    -SELECT TOP 1 * FROM BOOK
    -
    --- DB2 (with OFFSET), SQL Server (with OFFSET), Oracle (actual query may vary)
    -SELECT * FROM (
    -  SELECT LIMIT_98843777.*, ROW_NUMBER() OVER (ORDER BY ID ASC) AS ROWNUM_98843777
    -  FROM (
    -    SELECT TOP 100 PERCENT *
    -    FROM BOOK
    -    ORDER BY ID ASC
    -  ) AS LIMIT_98843777
    -) AS OUTER_LIMIT_98843777
    -WHERE ROWNUM_98843777 > 1
    -AND ROWNUM_98843777 <= 3
    -]]></sql><html>
    -
    -											<p>
    -												As you can see, jOOQ will take care of the incredibly painful ROW_NUMBER() OVER() (or ROWNUM for Oracle) filtering in subselects for you, you'll just have to write limit(1).offset(2) in any dialect.
    -											</p>
    -
    -											<h3>SQL Server's ORDER BY, TOP and subqueries</h3>
    -											<p>
    -												As can be seen in the above example, writing correct SQL can be quite tricky, depending on the SQL dialect. For instance, with SQL Server, you cannot have an ORDER BY clause in a subquery, unless you also have a TOP clause. This is illustrated by the fact that jOOQ renders a TOP 100 PERCENT clause for you. The same applies to the fact that ROW_NUMBER() OVER() needs an ORDER BY windowing clause, even if you don't provide one to the jOOQ query. By default, jOOQ adds ordering by the first column of your projection.
    -											</p>
    -										</html></content>
    -									</section>
    -
    -									<section id="for-update-clause">
    -										<title>The FOR UPDATE clause</title>
    -										<content><html>
    -											<p>
    -												For inter-process synchronisation and other reasons, you may choose to use the SELECT .. FOR UPDATE clause to indicate to the database, that a set of cells or records should be locked by a given transaction for subsequent updates. With jOOQ, this can be achieved as such:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM BOOK
    -WHERE ID = 3
    -FOR UPDATE]]></sql><java><![CDATA[create.select()
    -      .from(BOOK)
    -      .where(BOOK.ID.equal(3))
    -      .forUpdate();]]></java></code-pair><html>
    -
    -											<p>
    -												The above example will produce a record-lock, locking the whole record for updates. Some databases also support cell-locks using FOR UPDATE OF ..
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM BOOK
    -WHERE ID = 3
    -FOR UPDATE OF TITLE]]></sql><java><![CDATA[create.select()
    -      .from(BOOK)
    -      .where(BOOK.ID.equal(3))
    -      .forUpdate().of(BOOK.TITLE);]]></java></code-pair><html>
    -
    -											<p>
    -												Oracle goes a bit further and also allows to specify the actual locking behaviour. It features these additional clauses, which are all supported by jOOQ:
    -											</p>
    -											<ul>
    -												<li>FOR UPDATE NOWAIT: This is the default behaviour. If the lock cannot be acquired, the query fails immediately</li>
    -												<li>FOR UPDATE WAIT n: Try to wait for [n] seconds for the lock acquisition. The query will fail only afterwards</li>
    -												<li>FOR UPDATE SKIP LOCKED: This peculiar syntax will skip all locked records. This is particularly useful when implementing queue tables with multiple consumers</li>
    -											</ul>
    -											<p>
    -												With jOOQ, you can use those Oracle extensions as such:
    -											</p>
    -
    -</html><java><![CDATA[create.select().from(BOOK).where(BOOK.ID.equal(3)).forUpdate().nowait();
    -create.select().from(BOOK).where(BOOK.ID.equal(3)).forUpdate().wait(5);
    -create.select().from(BOOK).where(BOOK.ID.equal(3)).forUpdate().skipLocked();]]></java><html>
    -
    -											<h3>FOR UPDATE in CUBRID and SQL Server</h3>
    -											<p>
    -												The SQL standard specifies a FOR UPDATE clause to be applicable for cursors. Most databases interpret this as being applicable for all SELECT statements. An exception to this rule are the CUBRID and SQL Server databases, that do not allow for any FOR UPDATE clause in a regular SQL SELECT statement. jOOQ simulates the FOR UPDATE behaviour, by locking record by record with JDBC. JDBC allows for specifying the flags TYPE_SCROLL_SENSITIVE, CONCUR_UPDATABLE for any statement, and then using ResultSet.updateXXX() methods to produce a cell-lock / row-lock. Here's a simplified example in JDBC:
    -											</p>
    -</html><java><![CDATA[PreparedStatement stmt = connection.prepareStatement(
    -  "SELECT * FROM author WHERE id IN (3, 4, 5)",
    -  ResultSet.TYPE_SCROLL_SENSITIVE,
    -  ResultSet.CONCUR_UPDATABLE);
    -ResultSet rs = stmt.executeQuery();
    -
    -while (rs.next()) {
    -  // UPDATE the primary key for row-locks, or any other columns for cell-locks
    -  rs.updateObject(1, rs.getObject(1));
    -  rs.updateRow();
    -
    -  // Do more stuff with this record
    -}]]></java><html>
    -
    -											<p>
    -												The main drawback of this approach is the fact that the database has to maintain a scrollable cursor, whose records are locked one by one. This can cause a major risk of deadlocks or race conditions if the JDBC driver can recover from the unsuccessful locking, if two Java threads execute the following statements:
    -											</p>
    -
    -</html><sql><![CDATA[-- thread 1
    -SELECT * FROM author ORDER BY id ASC;
    -
    --- thread 2
    -SELECT * FROM author ORDER BY id DESC;]]></sql><html>
    -
    -											<p>
    -												So use this technique with care, possibly only ever locking single rows!
    -											</p>
    -
    -											<h3>Pessimistic (shared) locking with the FOR SHARE clause</h3>
    -											<p>
    -												Some databases (MySQL, Postgres) also allow to issue a non-exclusive lock explicitly using a FOR SHARE clause. This is also supported by jOOQ
    -											</p>
    -
    -											<h3>Optimistic locking in jOOQ</h3>
    -											<p>
    -												Note, that jOOQ also supports optimistic locking, if you're doing simple CRUD. This is documented in the section's manual about <reference id="optimistic-locking" title="optimistic locking"/>.
    -											</p>
    -										</html></content>
    -									</section>
    -
    -									<section id="union-clause">
    -										<title>UNION, INTERSECTION and EXCEPT</title>
    -										<content><html>
    -											<p>
    -												SQL allows to perform set operations as understood in standard set theory on result sets. These operations include unions, intersections, subtractions. For two subselects to be combinable by such a set operator, each subselect must return a <reference id="table-expressions" title="table expression"/> of the same arity and type.
    -											</p>
    -											
    -											<h3>UNION and UNION ALL</h3>
    -											<p>
    -												These operators combine two results into one. While UNION removes all duplicate records resulting from this combination, UNION ALL leaves subselect results as they are. Typically, you should prefer UNION ALL over UNION, if you don't really need to remove duplicates. The following example shows how to use such a UNION operation in jOOQ.
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT * FROM BOOK WHERE ID = 3
    -UNION ALL
    -SELECT * FROM BOOK WHERE ID = 5]]></sql><java><![CDATA[create.selectFrom(BOOK).where(BOOK.ID.equal(3))
    -      .unionAll(
    -create.selectFrom(BOOK).where(BOOK.ID.equal(5)));]]></java></code-pair><html>
    -											
    -											<h3>INTERSECT [ ALL ] and EXCEPT [ ALL ]</h3>
    -											<p>
    -												INTERSECT is the operation that produces only those tuples that are returned by both subselects. EXCEPT is the operation that returns only those tuples that are returned exclusively in the first subselect. Both operators will remove duplicates from their results. The SQL standard allows to specify the ALL keyword for both of these operators as well, but this is hardly supported in any database. jOOQ does not support INTERSECT ALL, EXEPT ALL operations either. 
    -											</p>
    -											
    -											<h3>jOOQ's set operators and how they're different from standard SQL</h3>
    -											<p>
    -												As previously mentioned in the manual's section about the <reference id="order-by-clause" title="ORDER BY clause"/>, jOOQ has slightly changed the semantics of these set operators. While in SQL, a subselect may not contain any <reference id="order-by-clause" title="ORDER BY clause"/> or <reference id="limit-clause" title="LIMIT clause"/> (unless you wrap the subselect into a <reference id="nested-selects" title="nested SELECT"/>), jOOQ allows you to do so. In order to select both the youngest and the oldest author from the database, you can issue the following statement with jOOQ (rendered to the MySQL dialect):
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[  (SELECT * FROM AUTHOR 
    -   ORDER BY DATE_OF_BIRTH ASC LIMIT 1)
    -UNION
    -  (SELECT * FROM AUTHOR 
    -   ORDER BY DATE_OF_BIRTH DESC LIMIT 1)]]></sql><java><![CDATA[create.selectFrom(AUTHOR)
    -      .orderBy(AUTHOR.DATE_OF_BIRTH.asc()).limit(1)
    -      .union(
    -create.selectFrom(AUTHOR)
    -      .orderBy(AUTHOR.DATE_OF_BIRTH.desc()).limit(1));]]></java></code-pair><html>
    -		
    -										</html></content>
    -									</section>
    -
    -									<section id="oracle-hints">
    -										<title>Oracle-style hints</title>
    -										<content><html>
    -											<p>
    -												If you are closely coupling your application to an Oracle (or CUBRID) database,	you might need to be able to pass hints of the form /*+HINT*/ with your SQL statements to the Oracle database. For example:
    -											</p>
    -
    -</html><sql>SELECT /*+ALL_ROWS*/ FIRST_NAME, LAST_NAME
    -  FROM AUTHOR</sql><html>
    -
    -				  							<p>
    -				  								This can be done in jOOQ using the .hint() clause in your SELECT statement:
    -			  								</p>
    -
    -</html><java>create.select(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .hint("/*+ALL_ROWS*/")
    -      .from(AUTHOR);</java><html>
    -
    -											<p>
    -												Note that you can pass any string in the .hint() clause. If you use that clause, the passed string will always be put in between the SELECT [DISTINCT] keywords and the actual projection list
    -											</p>
    -										</html></content>
    -									</section>
    -								</sections>
    -							</section>
    -
    -							<section id="insert-statement">
    -								<title>The INSERT statement</title>
    -								<content><html>
    -									<p>
    -										The INSERT statement is used to insert new records into a database table. Records can either be supplied using a VALUES() constructor, or a SELECT statement. jOOQ supports both types of INSERT statements. An example of an INSERT statement using a VALUES() constructor is given here:
    -									</p>
    -
    -
    -</html><code-pair>
    -<sql>INSERT INTO AUTHOR 
    -       (ID, FIRST_NAME, LAST_NAME)
    -VALUES (100, 'Hermann', 'Hesse');</sql><java>create.insertInto(AUTHOR,
    -        AUTHOR.ID, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .values(100, "Hermann", "Hesse");</java></code-pair><html>
    -
    -									<h3>INSERT multiple rows with the VALUES() constructor</h3>
    -									<p>
    -										The SQL standard specifies that multiple rows can be supplied to the VALUES() constructor in an INSERT statement. Here's an example of a multi-record INSERT
    -									</p>
    -</html><code-pair>
    -<sql>INSERT INTO AUTHOR
    -       (ID, FIRST_NAME, LAST_NAME)
    -VALUES (100, 'Hermann', 'Hesse'),
    -       (101, 'Alfred', 'Döblin');</sql><java>create.insertInto(AUTHOR,
    -        AUTHOR.ID, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .values(100, "Hermann", "Hesse")
    -      .values(101, "Alfred", "Döblin");</java></code-pair><html>
    -
    -									<p>
    -										jOOQ tries to stay close to actual SQL. In detail, however, Java's expressiveness is limited. That's why the values() clause is repeated for every record in multi-record inserts. 
    -									</p>
    -									<p> 
    -										Some RDBMS do not support inserting several records in a single statement. In those cases, jOOQ simulates multi-record INSERTs using the following SQL:
    -									</p>
    -
    -</html><code-pair>
    -<sql>INSERT INTO AUTHOR
    -    (ID, FIRST_NAME, LAST_NAME)
    -SELECT 100, 'Hermann', 'Hesse' FROM DUAL UNION ALL
    -SELECT 101, 'Alfred', 'Döblin' FROM DUAL;</sql><java>create.insertInto(AUTHOR,
    -        AUTHOR.ID, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .values(100, "Hermann", "Hesse")
    -      .values(101, "Alfred", "Döblin");
    -</java></code-pair><html>
    -
    -									<h3>INSERT using jOOQ's alternative syntax</h3>
    -									<p>
    -										MySQL (and some other RDBMS) allow for using a non-SQL-standard, UPDATE-like syntax for INSERT statements. This is also supported in jOOQ, should you prefer that syntax. The above INSERT statement can also be expressed as follows:
    -									</p>
    -
    -</html><java>create.insertInto(AUTHOR)
    -      .set(AUTHOR.ID, 100)
    -      .set(AUTHOR.FIRST_NAME, "Hermann")
    -      .set(AUTHOR.LAST_NAME, "Hesse")
    -      .newRecord()
    -      .set(AUTHOR.ID, 101)
    -      .set(AUTHOR.FIRST_NAME, "Alfred")
    -      .set(AUTHOR.LAST_NAME, "Döblin");</java><html>
    -      
    -									<p>
    -										As you can see, this syntax is a bit more verbose, but also more type-safe, as every field can be matched with its value. Internally, the two syntaxes are strictly equivalent.
    -									</p>
    -
    -									<h3>MySQL's INSERT .. ON DUPLICATE KEY UPDATE</h3>
    -									<p>
    -										The MySQL database supports a very convenient way to INSERT or UPDATE a record. This is a non-standard extension to the SQL syntax, which is supported by jOOQ and simulated in other RDBMS, where this is possible (i.e. if they support the SQL standard <reference id="merge-statement" title="MERGE statement"/>). Here is an example how to use the ON DUPLICATE KEY UPDATE clause:
    -									</p>
    -									
    -</html><java>// Add a new author called "Koontz" with ID 3.
    -// If that ID is already present, update the author's name
    -create.insertInto(AUTHOR, AUTHOR.ID, AUTHOR.LAST_NAME)
    -      .values(3, "Koontz")
    -      .onDuplicateKeyUpdate()
    -      .set(AUTHOR.LAST_NAME, "Koontz");</java><html>
    -
    -									<h3>The synthetic ON DUPLICATE KEY IGNORE clause</h3>
    -							
    -									<p>
    -										The MySQL database also supports an INSERT IGNORE INTO clause. This is supported by jOOQ using the more convenient SQL syntax variant of ON DUPLICATE KEY IGNORE, which can be equally simulated in other databases using a <reference id="merge-statement" title="MERGE statement"/>:
    -									</p>
    -									
    -</html><java>// Add a new author called "Koontz" with ID 3.
    -// If that ID is already present, ignore the INSERT statement
    -create.insertInto(AUTHOR, AUTHOR.ID, AUTHOR.LAST_NAME)
    -      .values(3, "Koontz")
    -      .onDuplicateKeyIgnore();</java><html>
    -
    -      								<h3>Postgres's INSERT .. RETURNING</h3>
    -									<p>
    -										The Postgres database has native support for an INSERT .. RETURNING clause. This is a very powerful concept that is simulated for all other dialects using JDBC's <reference class="java.sql.Statement" anchor="#getGeneratedKeys()" title="getGeneratedKeys()"/> method. Take this example:
    -									</p>
    -
    -</html><java><![CDATA[// Add another author, with a generated ID
    -Record<?> record =
    -create.insertInto(AUTHOR, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .values("Charlotte", "Roche")
    -      .returning(AUTHOR.ID)
    -      .fetchOne();
    -
    -System.out.println(record.getValue(AUTHOR.ID));
    -
    -// For some RDBMS, this also works when inserting several values
    -// The following should return a 2x2 table
    -Result<?> result =
    -create.insertInto(AUTHOR, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .values("Johann Wolfgang", "von Goethe")
    -      .values("Friedrich", "Schiller")
    -      // You can request any field. Also trigger-generated values
    -      .returning(AUTHOR.ID, AUTHOR.CREATION_DATE)
    -      .fetch();]]></java><html>
    -
    -		      						<p>
    -		      							Some databases have poor support for returning generated keys after INSERTs. In those cases, jOOQ might need to issue another <reference id="select-statement" title="SELECT statement"/> in order to fetch an @@identity value. Be aware, that this can lead to race-conditions in those databases that cannot properly return generated ID values. For more information, please consider the jOOQ Javadoc for the returning() clause.
    -		      						</p>
    -
    -									<h3>The INSERT SELECT statement</h3>
    -							
    -									<p>
    -										In some occasions, you may prefer the INSERT SELECT syntax, for instance, when you copy records from one table to another:
    -									</p>
    -									
    -</html><java>create.insertInto(AUTHOR_ARCHIVE)
    -      .select(create.selectFrom(AUTHOR).where(AUTHOR.DECEASED.isTrue()));</java></content>
    -							</section>
    -
    -							<section id="update-statement">
    -								<title>The UPDATE statement</title>
    -								<content><html>
    -									<p>
    -										The UPDATE statement is used to modify one or several pre-existing records in a database table. UPDATE statements are only possible on single tables. Support for multi-table updates will be implemented in the near future. An example update query is given here:
    -									</p>
    -
    -</html><code-pair>
    -<sql>UPDATE AUTHOR
    -   SET FIRST_NAME = 'Hermann',
    -       LAST_NAME = 'Hesse'
    - WHERE ID = 3;</sql><java>create.update(AUTHOR)
    -      .set(AUTHOR.FIRST_NAME, "Hermann")
    -      .set(AUTHOR.LAST_NAME, "Hesse")
    -      .where(AUTHOR.ID.equal(3));</java>
    -</code-pair><html>
    -								
    -								</html></content>
    -							</section>
    -
    -							<section id="delete-statement">
    -								<title>The DELETE statement</title>
    -								<content><html>
    -									<p>
    -										The DELETE statement physically removes records from a database table. DELETE statements are only possible on single tables. Support for multi-table deletes will be implemented in the near future. An example delete query is given here:
    -									</p>
    -
    -</html><code-pair>
    -<sql>DELETE AUTHOR
    - WHERE ID = 100;</sql><java>create.delete(AUTHOR)
    -      .where(AUTHOR.ID.equal(100));</java>
    -</code-pair><html>
    -
    -								</html></content>
    -							</section>
    -
    -							<section id="merge-statement">
    -								<title>The MERGE statement</title>
    -								<content><html>
    -									<p>
    -										The MERGE statement is one of the most advanced standardised SQL constructs, which is supported by DB2, HSQLDB, Oracle, SQL Server and Sybase (MySQL has the similar INSERT .. ON DUPLICATE KEY UPDATE construct)
    -									</p>
    -									<p>
    -										The point of the standard MERGE statement is to take a TARGET table, and merge (INSERT, UPDATE) data from a SOURCE table into it. DB2, Oracle, SQL Server and Sybase also allow for DELETING some data and for adding many additional clauses. With jOOQ {jooq-version}, only Oracle's MERGE extensions are supported. Here is an example:
    -									</p>
    -
    -</html><code-pair>
    -<sql>-- Check if there is already an author called 'Hitchcock'
    --- If there is, rename him to John. If there isn't add him.
    -MERGE INTO AUTHOR
    -USING (SELECT 1 FROM DUAL)
    -ON (LAST_NAME = 'Hitchcock')
    -WHEN MATCHED THEN UPDATE SET FIRST_NAME = 'John'
    -WHEN NOT MATCHED THEN INSERT (LAST_NAME) VALUES ('Hitchcock')</sql><java>create.mergeInto(AUTHOR)
    -      .using(create().selectOne())
    -      .on(AUTHOR.LAST_NAME.equal("Hitchcock"))
    -      .whenMatchedThenUpdate()
    -      .set(AUTHOR.FIRST_NAME, "John")
    -      .whenNotMatchedThenInsert(AUTHOR.LAST_NAME)
    -      .values("Hitchcock");
    -
    -</java></code-pair><html>
    -
    -		                            <h3>MERGE Statement (H2-specific syntax)</h3>
    -									<p>
    -									    The H2 database ships with a somewhat less powerful but a little more intuitive syntax for its own version of the MERGE statement. An example more or less equivalent to the previous one can be seen here:
    -									</p>
    -									
    -</html><code-pair>
    -<sql>-- Check if there is already an author called 'Hitchcock'
    --- If there is, rename him to John. If there isn't add him.
    -
    -MERGE INTO AUTHOR (FIRST_NAME, LAST_NAME)
    -KEY (LAST_NAME)
    -VALUES ('John', 'Hitchcock')</sql><java>create.mergeInto(AUTHOR,
    -                 AUTHOR.FIRST_NAME,
    -                 AUTHOR.LAST_NAME)
    -      .key(AUTHOR.LAST_NAME)
    -      .values("John", "Hitchcock")
    -      .execute();
    -</java></code-pair><html>
    -
    -		                            <p>
    -		                                This syntax can be fully simulated by jOOQ for all other databases that support the SQL standard. For more information about the H2 MERGE syntax, see the documentation here:<br/>
    -		                                <a href="http://www.h2database.com/html/grammar.html#merge">http://www.h2database.com/html/grammar.html#merge</a>
    -		                            </p>
    -								
    -								</html></content>
    -							</section>
    -
    -							<section id="truncate-statement">
    -								<title>The TRUNCATE statement</title>
    -								<content><html>
    -									<p>
    -										The TRUNCATE statement is the only DDL statement supported by jOOQ so far. It is popular in many databases when you want to bypass constraints for table truncation. Databases may behave differently, when a truncated table is referenced by other tables. For instance, they may fail if records from a truncated table are referenced, even with ON DELETE CASCADE clauses in place. Please, consider your database manual to learn more about its TRUNCATE implementation.
    -									</p>
    -									<p>
    -										The TRUNCATE syntax is trivial:
    -									</p>
    -
    -</html><code-pair>
    -	<sql>TRUNCATE TABLE AUTHOR;</sql><java>create.truncate(AUTHOR).execute();</java>
    -</code-pair><html>
    -									
    -									<p>
    -										TRUNCATE is not supported by Ingres and SQLite. jOOQ will execute a DELETE FROM AUTHOR statement instead.
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="table-expressions">
    -						<title>Table expressions</title>
    -						<content><html>
    -							<p>
    -								The following sections explain the various types of table expressions supported by jOOQ
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="generated-tables">
    -								<title>Generated Tables</title>
    -								<content><html>
    -									<p>
    -										Most of the times, when thinking about a <reference id="table-expressions" title="table expression"/> you're probably thinking about an actual physical table in your database schema. If you're using jOOQ's <reference id="code-generation" title="code generator"/>, you will have all tables from your database schema available to you as type safe Java objects. You can then use these tables in SQL <reference id="from-clause" title="FROM clauses"/>, <reference id="join-clause" title="JOIN clauses"/> or in other <reference id="sql-statements" title="SQL statements"/>, just like any other table expression. An example is given here:
    -									</p>
    -							
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM AUTHOR -- Table expression AUTHOR
    -JOIN BOOK   -- Table expression BOOK
    -ON (AUTHOR.ID = BOOK.AUTHOR_ID)]]></sql><java><![CDATA[create.select()
    -      .from(AUTHOR) // Table expression AUTHOR
    -      .join(BOOK)   // Table expression BOOK
    -      .on(AUTHOR.ID.equal(BOOK.AUTHOR_ID));]]></java></code-pair><html>
    -							
    -									<p>
    -										The above example shows how AUTHOR and BOOK tables are joined in a <reference id="select-statement" title="SELECT statement"/>. It also shows how you can access physical <reference id="table-columns" title="table columns"/> by dereferencing the relevant Java attributes of their tables.
    -									</p>
    -									<p>
    -										See the manual's section about <reference id="codegen-tables" title="generated tables"/> for more information about what is really generated by the <reference id="code-generation" title="code generator"/>
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="aliased-tables">
    -								<title>Aliased Tables</title>
    -								<content><html>
    -									<p>
    -										The strength of jOOQ's <reference id="code-generation" title="code generator"/> becomes more obvious when you perform table aliasing and dereference fields from generated aliased tables. This can best be shown by example:
    -									</p>
    -
    -</html><code-pair><sql><![CDATA[-- Select all books by authors born after 1920,
    --- named "Paulo" from a catalogue:
    -
    -
    -
    -SELECT *
    -  FROM author a
    -  JOIN book b ON a.id = b.author_id
    - WHERE a.year_of_birth > 1920
    -   AND a.first_name = 'Paulo'
    - ORDER BY b.title]]></sql><java><![CDATA[// Declare your aliases before using them in SQL:
    -Author a = AUTHOR.as("a");
    -Book b = BOOK.as("b");
    -
    -// Use aliased tables in your statement
    -create.select()
    -      .from(a)
    -      .join(b).on(a.ID.equal(b.AUTHOR_ID))
    -      .where(a.YEAR_OF_BIRTH.greaterThan(1920)
    -      .and(a.FIRST_NAME.equal("Paulo")))
    -      .orderBy(b.TITLE);]]></java></code-pair><html>
    -								
    -									<p>
    -										As you can see in the above example, calling as() on generated tables returns an object of the same type as the table. This means that the resulting object can be used to dereference fields from the aliased table. This is quite powerful in terms of having your Java compiler check the syntax of your SQL statements. If you remove a column from a table, dereferencing that column from that table alias will cause compilation errors.
    -									</p>
    -									
    -									<h3>Dereferencing columns from other table expressions</h3>
    -									<p>
    -										TODO document this
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="joined-tables">
    -								<title>Joined tables</title>
    -								<content><html>
    -									<p>
    -										The <reference id="join-clause" title="JOIN operators"/> that can be used in <reference id="select-statement" title="SQL SELECT statements"/> are the most powerful and best supported means of creating new <reference id="table-expressions" title="table expressions"/> in SQL. Informally, the following can be said:
    -									</p>
    -									
    -</html><text>A(colA1, ..., colAn) "join" B(colB1, ..., colBm) "produces" C(colA1, ..., colAn, colB1, ..., colBm)</text><html>
    -
    -									<p>
    -										SQL and relational algebra distinguish between at least the following JOIN types (upper-case: SQL, lower-case: relational algebra):
    -									</p>
    -									<ul>
    -										<li><strong>CROSS JOIN or cartesian product</strong>: The basic JOIN in SQL, producing a relational cross product, combining every record of table A with every record of table B. Note that cartesian products can also be produced by listing comma-separated <reference id="table-expressions" title="table expressions"/> in the <reference id="from-clause" title="FROM clause"/> of a <reference id="select-statement" title="SELECT statement"/></li>
    -										<li><strong>NATURAL JOIN</strong>: The basic JOIN in relational algebra, yet a rarely used JOIN in databases with everyday degree of normalisation. This JOIN type unconditionally equi-joins two tables by all columns with the same name (requiring foreign keys and primary keys to share the same name). Note that the JOIN columns will only figure once in the resulting <reference id="table-expressions" title="table expression"/>.</li>
    -										<li><strong>INNER JOIN or equi-join</strong>: This JOIN operation performs a cartesian product (CROSS JOIN) with a <reference id="conditional-expressions" title="filtering predicate"/> being applied to the resulting <reference id="table-expressions" title="table expression"/>. Most often, a <reference id="comparison-predicate" title="equal comparison predicate"/> comparing foreign keys and primary keys will be applied as a filter, but any other predicate will work, too.</li>
    -										<li><strong>OUTER JOIN</strong>: This JOIN operation performs a cartesian product (CROSS JOIN) with a <reference id="conditional-expressions" title="filtering predicate"/> being applied to the resulting <reference id="table-expressions" title="table expression"/>. Most often, a <reference id="comparison-predicate" title="equal comparison predicate"/> comparing foreign keys and primary keys will be applied as a filter, but any other predicate will work, too. Unlike the INNER JOIN, an OUTER JOIN will add "empty records" to the left (table A) or right (table B) or both tables, in case the conditional expression fails to produce a tuple.</li>										
    -										<li><strong>semi-join</strong>: In SQL, this JOIN operation can only be expressed implicitly using <reference id="in-predicate" title="IN predicates"/> or <reference id="exists-predicate" title="EXISTS predicates"/>. The <reference id="table-expressions" title="table expression"/> resulting from a semi-join will only contain the left-hand side table A</li>										
    -										<li><strong>anti-join</strong>: In SQL, this JOIN operation can only be expressed implicitly using <reference id="in-predicate" title="NOT IN predicates"/> or <reference id="exists-predicate" title="NOT EXISTS predicates"/>. The <reference id="table-expressions" title="table expression"/> resulting from a semi-join will only contain the left-hand side table A</li>
    -										<li><strong>division</strong>: This JOIN operation is hard to express at all, in SQL. See the manual's chapter about <reference id="relational-division" title="relational division"/> for details on how jOOQ simulates this operation.</li>
    -									</ul>									
    -									<p>
    -										jOOQ supports all of these JOIN types (except semi-join and anti-join) directly on any <reference id="table-expressions" title="table expression"/>:
    -									</p>
    -									
    -</html><java><![CDATA[// jOOQ's relational division convenience syntax 
    -DivideByOnStep divideBy(Table<?> table)
    -
    -// Various overloaded INNER JOINs
    -TableOnStep join(TableLike<?>)
    -TableOnStep join(String)
    -TableOnStep join(String, Object...)
    -TableOnStep join(String, QueryPart...)
    -
    -// Various overloaded OUTER JOINs (supporting Oracle's partitioned OUTER JOIN)
    -// Overloading is similar to that of INNER JOIN
    -TablePartitionByStep leftOuterJoin(TableLike<?>)
    -TablePartitionByStep rightOuterJoin(TableLike<?>)
    -
    -// Various overloaded FULL OUTER JOINs
    -TableOnStep fullOuterJoin(TableLike<?>)
    -
    -// Various overloaded CROSS JOINs
    -Table<Record> crossJoin(TableLike<?>)
    -
    -// Various overloaded NATURAL JOINs
    -Table<Record> naturalJoin(TableLike<?>)
    -Table<Record> naturalLeftOuterJoin(TableLike<?>)
    -Table<Record> naturalRightOuterJoin(TableLike<?>)]]></java><html>							
    -
    -									<p>
    -										Note that most of jOOQ's JOIN operations give way to a similar DSL API hierarchy as previously seen in the manual's section about the <reference id="join-clause" title="JOIN clause"/>
    -									</p>		
    -								</html></content>
    -							</section>
    -
    -							<section id="nested-selects">
    -								<title>Nested SELECTs</title>
    -								<content><html>
    -									<p>
    -										A <reference id="select-statement" title="SELECT statement"/> can appear almost anywhere a <reference id="table-expressions" title="table expression"/> can. Such a "nested SELECT" is often called a "derived table". Apart from many convenience methods accepting <reference class="org.jooq.Select"/> objects directly, a SELECT statement can always be transformed into a <reference class="org.jooq.Table"/> object using the asTable() method.
    -									</p>
    -									
    -									<h3>Example: Scalar subquery</h3>
    -									
    -</html><code-pair>
    -<sql>SELECT *
    -  FROM BOOK
    - WHERE BOOK.AUTHOR_ID = (
    - 		SELECT ID
    -          FROM AUTHOR
    -         WHERE LAST_NAME = 'Orwell')</sql><java>create.select()
    -      .from(BOOK)
    -      .where(BOOK.AUTHOR_ID.equal(create
    -             .select(AUTHOR.ID)
    -             .from(AUTHOR)
    -             .where(AUTHOR.LAST_NAME.equal("Orwell"))));</java>
    -</code-pair><html>
    -
    -									<h3>Example: Derived table</h3>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT nested.* FROM (
    -      SELECT AUTHOR_ID, count(*) books
    -        FROM BOOK
    -    GROUP BY AUTHOR_ID
    -) nested
    -ORDER BY nested.books DESC
    -
    -
    -
    -]]></sql><java><![CDATA[Table<Record> nested =
    -    create.select(BOOK.AUTHOR_ID, count().as("books"))
    -          .from(BOOK)
    -          .groupBy(BOOK.AUTHOR_ID).asTable("nested");
    -
    -create.select(nested.getFields())
    -      .from(nested)
    -      .orderBy(nested.getField("books"));]]></java>
    -</code-pair><html>
    -
    -									<h3>Example: Correlated subquery</h3>
    -</html><code-pair>
    -<sql><![CDATA[  SELECT LAST_NAME, (
    -      SELECT COUNT(*)
    -       FROM BOOK
    -      WHERE BOOK.AUTHOR_ID = AUTHOR.ID) books
    -    FROM AUTHOR
    -ORDER BY books DESC
    -
    -
    -
    -]]></sql><java><![CDATA[// The type of books cannot be inferred from the Select<?>
    -Field<Object> books =
    -    create.selectCount()
    -          .from(BOOK)
    -          .where(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -          .asField("books");
    -create.select(AUTHOR.ID, books)
    -      .from(AUTHOR)
    -      .orderBy(books, AUTHOR.ID));]]></java>
    -</code-pair><html>									
    -								</html></content>
    -							</section>
    -
    -							<section id="pivot-tables">
    -								<title>The Oracle 11g PIVOT clause</title>
    -								<content><html>
    -									<p>
    -										If you are closely coupling your application to an Oracle database, you can take advantage of some Oracle-specific features, such as the PIVOT clause, used for statistical analyses. The formal syntax definition is as follows:
    -									</p>
    -									
    -</html><sql>-- SELECT ..
    -     FROM table PIVOT (aggregateFunction [, aggregateFunction] FOR column IN (expression [, expression]))
    ---  WHERE ..</sql><html>
    -		
    -									<p>
    -										The PIVOT clause is available from the <reference class="org.jooq.Table"/> type, as pivoting is done directly on a table. Currently, only Oracle's PIVOT clause is supported. Support for SQL Server's slightly different PIVOT clause will be added later. Also, jOOQ may simulate PIVOT for other dialects in the future.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="relational-division">
    -								<title>jOOQ's relational division syntax</title>
    -								<content><html>
    -									<p>
    -									    There is one operation in relational algebra that is not given a lot of attention, because it is rarely used in real-world applications. It is the relational division, the opposite operation of the cross product (or, relational multiplication). The following is an approximate definition of a relational division:
    -									</p>
    -
    -</html><config>Assume the following cross join / cartesian product
    -C = A × B
    -
    -Then it can be said that
    -A = C ÷ B
    -B = C ÷ A</config><html>
    -
    -									<p>
    -									   With jOOQ, you can simplify using relational divisions by using the following syntax:
    -									</p>
    -
    -</html><java>C.divideBy(B).on(C.ID.equal(B.C_ID)).returning(C.TEXT)</java><html>
    -
    -									<p>
    -										The above roughly translates to
    -									</p>
    -
    -</html><sql>SELECT DISTINCT C.TEXT FROM C "c1"
    -WHERE NOT EXISTS (
    -  SELECT 1 FROM B
    -  WHERE NOT EXISTS (
    -    SELECT 1 FROM C "c2"
    -    WHERE "c2".TEXT = "c1".TEXT
    -    AND "c2".ID = B.C_ID
    -  )
    -)</sql><html>
    -
    -									<p>
    -										Or in plain text: Find those TEXT values in C whose ID's correspond to all ID's in B. Note that from the above SQL statement, it is immediately clear that proper indexing is of the essence. Be sure to have indexes on all columns referenced from the on(...) and returning(...) clauses.
    -									</p>
    -
    -									<p>
    -										For more information about relational division and some nice, real-life examples, see
    -									</p>
    -
    -									<ul>
    -										<li><a href="http://en.wikipedia.org/wiki/Relational_algebra#Division" title="Wikipedia article on relational division">http://en.wikipedia.org/wiki/Relational_algebra#Division</a></li>
    -										<li><a href="http://www.simple-talk.com/sql/t-sql-programming/divided-we-stand-the-sql-of-relational-division/" title="A nice summary of what relational division is and how it is best implemented in SQL">http://www.simple-talk.com/sql/t-sql-programming/divided-we-stand-the-sql-of-relational-division/</a></li>
    -									</ul>
    -								</html></content>
    -
    -							</section>
    -
    -							<section id="array-and-cursor-unnesting">
    -								<title>Array and cursor unnesting</title>
    -								<content><html>
    -									<p>
    -										The SQL standard specifies how SQL databases should implement ARRAY and TABLE types, as well as CURSOR types. Put simply, a CURSOR is a pointer to any materialised <reference id="table-expressions" title="table expression"/>. Depending on the cursor's features, this table expression can be scrolled through in both directions, records can be locked, updated, removed, inserted, etc. Often, CURSOR types contain tuples, whereas ARRAY and TABLE types contain simple scalar values, although that is not a requirement
    -									</p>
    -									
    -									<p>
    -										ARRAY types in SQL are similar to Java's array types. They contain a "component type" or "element type" and a "dimension". This sort of ARRAY type is implemented in H2, HSQLDB and Postgres and supported by jOOQ as such. Oracle uses strongly-typed arrays, which means that an ARRAY type (VARRAY or TABLE type) has a name and possibly a maximum capacity associated with it.
    -									</p>
    -
    -									<h3>Unnesting array and cursor types</h3>									
    -									<p>
    -										The real power of these types become more obvious when you fetch them from <reference id="stored-procedures" title="stored procedures"/> to unnest them as <reference id="table-expressions" title="table expressions"/> and use them in your <reference id="from-clause" title="FROM clause"/>. An example is given here, where Oracle's DBMS_XPLAN package is used to fetch a cursor containing data about the most recent execution plan:
    -									</p>									
    -
    -</html><code-pair>
    -	<sql><![CDATA[SELECT *
    -FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(null, null, 'ALLSTATS'));]]></sql><java><![CDATA[create.select()
    -      .from(table(DbmsXplan.displayCursor(null, null, "ALLSTATS"));]]></java>
    -</code-pair><html>
    -									<p>
    -										Note, in order to access the DbmsXplan package, you can use the <reference id="code-generation" title="code generator"/> to generate Oracle's SYS schema.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="dual">
    -								<title>The DUAL table</title>
    -								<content><html>
    -									<p>
    -										The SQL standard specifies that the <reference id="from-clause" title="FROM clause"/> is optional in a <reference id="select-statement" title="SELECT statement"/>. However, according to the standard, you may then no longer use some other clauses, such as the <reference id="where-clause" title="WHERE clause"/>. In the real world, there exist three types of databases:
    -									</p>
    -									<ul>
    -										<li>The ones that always require a FROM clause</li>
    -										<li>The ones that never require a FROM clause (and still allow a WHERE clause)</li>
    -										<li>The ones that correctly implement the SQL standard</li>
    -									</ul>
    -									<p>
    -										With jOOQ, you don't have to worry about the above distinction of SQL dialects. jOOQ never requires a FROM clause, but renders the necessary "DUAL" table, if needed. The following program shows how jOOQ renders "DUAL" tables
    -									</p>
    -
    -</html><code-pair>
    -	<sql><![CDATA[SELECT 1
    -SELECT 1 FROM "db_root"
    -SELECT 1 FROM "SYSIBM"."DUAL"
    -SELECT 1 FROM "SYSIBM"."SYSDUMMY1"
    -SELECT 1 FROM dual
    -SELECT 1 FROM "INFORMATION_SCHEMA"."SYSTEM_USERS"
    -SELECT 1 FROM (select 1 as dual) as dual
    -SELECT 1 FROM dual
    -SELECT 1 FROM dual
    -SELECT 1
    -SELECT 1
    -SELECT 1
    -SELECT 1 FROM [SYS].[DUMMY]
    -]]></sql><java><![CDATA[new Factory(SQLDialect.ASE      ).selectOne().getSQL();
    -new Factory(SQLDialect.CUBRID   ).selectOne().getSQL();
    -new Factory(SQLDialect.DB2      ).selectOne().getSQL();
    -new Factory(SQLDialect.DERBY    ).selectOne().getSQL();
    -new Factory(SQLDialect.H2       ).selectOne().getSQL();
    -new Factory(SQLDialect.HSQLDB   ).selectOne().getSQL();
    -new Factory(SQLDialect.INGRES   ).selectOne().getSQL();
    -new Factory(SQLDialect.MYSQL    ).selectOne().getSQL();
    -new Factory(SQLDialect.ORACLE   ).selectOne().getSQL();
    -new Factory(SQLDialect.POSTGRES ).selectOne().getSQL();
    -new Factory(SQLDialect.SQLITE   ).selectOne().getSQL();
    -new Factory(SQLDialect.SQLSERVER).selectOne().getSQL();
    -new Factory(SQLDialect.SYBASE   ).selectOne().getSQL();]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										Note, that some databases (H2, MySQL) can normally do without "dual". However, there exist some corner-cases with complex nested SELECT statements, where this will cause syntax errors (or parser bugs). To stay on the safe side, jOOQ will always render "dual" in those dialects.
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="column-expressions">
    -						<title>Column expressions</title>
    -						<content><html>
    -							<p>
    -								jOOQ allows you to freely create arbitrary column expressions using a fluent expression construction API. Many expressions can be formed as functions from <reference id="factory" title="Factory methods"/>, other expressions can be formed based on a pre-existing column expression. For example:
    -							</p>
    -							
    -</html><java><![CDATA[// A regular table column expression
    -Field<String> field1 = BOOK.TITLE;
    -
    -// A function created from the Factory using "prefix" notation
    -Field<String> field2 = trim(BOOK.TITLE);
    -
    -// The same function created from a pre-existing Field using "postfix" notation
    -Field<String> field3 = BOOK.TITLE.trim();
    -
    -// More complex function with advanced DSL syntax
    -Field<String> field4 = listAgg(BOOK.TITLE)
    -                          .withinGroupOrderBy(BOOK.ID.asc())
    -                          .over().partitionBy(AUTHOR.ID);]]></java><html>
    -
    -							<p>
    -								In general, it is up to you whether you want to use the "prefix" notation or the "postfix" notation to create new column expressions based on existing ones. The "SQL way" would be to use the "prefix notation", with functions created from the <reference id="factory" title="Factory"/>. The "Java way" or "object-oriented way" would be to use the "postfix" notation with functions created from <reference class="org.jooq.Field"/> objects. Both ways ultimately create the same query part, though.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="table-columns">
    -								<title>Table columns</title>
    -								<content><html>
    -									<p>
    -										Table columns are the most simple implementations of a <reference id="column-expressions" title="column expression"/>. They are mainly produced by jOOQ's <reference id="code-generation" title="code generator"/> and can be dereferenced from the generated tables. This manual is full of examples involving table columns. Another example is given in this query:
    -									</p>
    -
    -</html><code-pair>
    -	<sql><![CDATA[SELECT BOOK.ID, BOOK.TITLE
    -FROM BOOK
    -WHERE BOOK.TITLE LIKE '%SQL%'
    -ORDER BY BOOK.TITLE]]></sql><java><![CDATA[create.select(BOOK.ID, BOOK.TITLE)
    -	  .from(BOOK)
    -	  .where(BOOK.TITLE.like("%SQL%"))
    -	  .orderBy(BOOK.TITLE);]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										Table columns implement a more specific interface called <reference class="org.jooq.TableField"/>, which is parameterised with its associated &lt;R extends Record&gt; record type.
    -									</p>
    -									<p>
    -										See the manual's section about <reference id="codegen-tables" title="generated tables"/> for more information about what is really generated by the <reference id="code-generation" title="code generator"/>
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="aliased-columns">
    -								<title>Aliased columns</title>
    -								<content><html>
    -									<p>
    -										Just like <reference id="aliased-tables" title="tables"/>, columns can be renamed using aliases. Here is an example:
    -									</p>
    -									
    -</html><sql>  SELECT FIRST_NAME || ' ' || LAST_NAME author, COUNT(*) books
    -    FROM AUTHOR
    -    JOIN BOOK ON AUTHOR.ID = AUTHOR_ID
    -GROUP BY FIRST_NAME, LAST_NAME;</sql><html>
    -
    -									<p>
    -										Here is how it's done with jOOQ:
    -									</p>
    -									
    -</html><java>Record record = create.select(
    -         concat(AUTHOR.FIRST_NAME, val(" "), AUTHOR.LAST_NAME).as("author"),
    -         count().as("books"))
    -      .from(AUTHOR)
    -      .join(BOOK).on(AUTHOR.ID.equal(BOOK.AUTHOR_ID))
    -      .groupBy(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME).fetchAny();</java><html>
    -      
    -      								<p>
    -      									When you alias Fields like above, you can access those Fields' values using the alias name:
    -  									</p>
    -  									
    -</html><java>System.out.println("Author : " + record.getValue("author"));
    -System.out.println("Books  : " + record.getValue("books"));</java></content>
    -							</section>
    -
    -							<section id="cast-expressions">
    -								<title>Cast expressions</title>
    -								<content><html>
    -									<p>
    -										jOOQ's source code generator tries to find the most accurate type mapping between your vendor-specific data types and a matching Java type. For instance, most VARCHAR, CHAR, CLOB types will map to String. Most BINARY, BYTEA, BLOB types will map to byte[]. NUMERIC types will default to java.math.BigDecimal, but can also be any of java.math.BigInteger, Long, Integer, Short, Byte, Double, Float.
    -									</p>
    -									<p>
    -										Sometimes, this automatic mapping might not be what you needed, or jOOQ cannot know the type of a field. In those cases you would write SQL type CASTs like this:
    -									</p>
    -									
    -</html><sql>-- Let's say, your Postgres column LAST_NAME was VARCHAR(30)
    --- Then you could do this:
    -SELECT CAST(AUTHOR.LAST_NAME AS TEXT) FROM DUAL</sql><html>
    -
    -									<p>
    -										in jOOQ, you can write something like that:
    -									</p>
    -									
    -</html><java>create.select(TAuthor.LAST_NAME.cast(PostgresDataType.TEXT));</java><html>
    -
    -									<p>
    -										The same thing can be achieved by casting a Field directly to String.class, as TEXT is the default data type in Postgres to map to Java's String
    -									</p>
    -									
    -</html><java>create.select(TAuthor.LAST_NAME.cast(String.class));</java><html>
    -		
    -									<p>
    -										The complete CAST API in Field consists of these three methods:
    -									</p>
    -									
    -</html><java><![CDATA[public interface Field<T> {
    -
    -    // Cast this field to the type of another field
    -    <Z> Field<Z> cast(Field<Z> field);
    -    
    -    // Cast this field to a given DataType
    -    <Z> Field<Z> cast(DataType<Z> type);
    -    
    -    // Cast this field to the default DataType for a given Class
    -    <Z> Field<Z> cast(Class<? extends Z> type);
    -}
    -
    -// And additional convenience methods in the Factory:
    -public class Factory {
    -    <T> Field<T> cast(Object object, Field<T> field);
    -    <T> Field<T> cast(Object object, DataType<T> type);
    -    <T> Field<T> cast(Object object, Class<? extends T> type);
    -    <T> Field<T> castNull(Field<T> field);
    -    <T> Field<T> castNull(DataType<T> type);
    -    <T> Field<T> castNull(Class<? extends T> type);
    -}]]></java></content>
    -							</section>
    -
    -							<section id="arithmetic-expressions">
    -								<title>Arithmetic expressions</title>
    -								<content><html>
    -									<h3>Numeric arithmetic expressions</h3>
    -									<p>
    -										Your database can do the math for you. Arithmetic operations are implemented just like <reference id="numeric-functions" title="numeric functions"/>, with similar limitations as far as type restrictions are concerned. You can use any of these operators:
    -									</p>
    -
    -</html><config>  +  -  *  /  %</config><html>
    -
    -									<p>
    -										In order to express a SQL query like this one:
    -									</p>
    -									
    -</html><sql>SELECT ((1 + 2) * (5 - 3) / 2) % 10 FROM DUAL</sql><html>
    -							
    -									<p>
    -										You can write something like this in jOOQ:
    -									</p>
    -									
    -</html><java>create.select(val(1).add(2).mul(val(5).sub(3)).div(2).mod(10);</java><html>
    -
    -									<h3>Datetime arithmetic expressions</h3>
    -									<p>
    -										jOOQ also supports the Oracle-style syntax for adding days to a Field&lt;? extends java.util.Date&gt; 
    -									</p>
    -
    -</html><code-pair>
    -	<sql>SELECT SYSDATE + 3 FROM DUAL;</sql><java>create.select(currentTimestamp().add(3));</java>
    -</code-pair><html>
    -
    -									<p>
    -										For more advanced datetime arithmetic, use the Factory's timestampDiff() and dateDiff() functions, as well as jOOQ's built-in SQL standard INTERVAL data type support:
    -									</p>
    -									<ul>
    -										<li>INTERVAL YEAR TO MONTH: <reference class="org.jooq.types.YearToMonth"/></li>
    -										<li>INTERVAL DAY TO SECOND: <reference class="org.jooq.types.DayToSecond"/></li>
    -									</ul>
    -								</html></content>
    -							</section>
    -							
    -							<section id="string-concatenation">
    -								<title>String concatenation</title>
    -								<content><html>
    -									<p>
    -										The SQL standard defines the concatenation operator to be an infix operator, similar to the ones we've seen in the chapter about <reference id="arithmetic-expressions" title="arithmetic expressions"/>. This operator looks like this: <code>||</code>. Some other dialects do not support this operator, but expect a <code>concat()</code> function, instead. jOOQ renders the right operator / function, depending on your <reference id="sql-dialects" title="SQL dialect"/>:
    -									</p>
    -									
    -</html><code-pair>
    -<sql>SELECT 'A' || 'B' || 'C' FROM DUAL
    --- Or in MySQL:
    -SELECT concat('A', 'B', 'C') FROM DUAL</sql><java>&#160;
    -// For all RDBMS, including MySQL:
    -create.select(concat("A", "B", "C"));
    -</java>
    -</code-pair><html>								
    -								</html></content>
    -							</section>
    -
    -							<section id="general-functions">
    -								<title>General functions</title>
    -								<content><html>
    -									<p>
    -										There are a variety of general functions supported by jOOQ As discussed in the chapter about <reference id="sql-dialects" title="SQL dialects"/> functions are mostly simulated in your database, in case they are not natively supported.
    -									</p>
    -									<p>
    -										This is a list of general functions supported by jOOQ's <reference id="factory" title="Factory"/>:
    -									</p>
    -									<ul>
    -										<li><strong>COALESCE</strong>: Get the first non-null value in a list of arguments.</li>
    -										<li><strong>NULLIF</strong>: Return NULL if both arguments are equal, or the first argument, otherwise.</li>
    -										<li><strong>NVL</strong>: Get the first non-null value among two arguments.</li>
    -										<li><strong>NVL2</strong>: Get the second argument if the first is null, or the third argument, otherwise.</li>
    -									</ul>
    -																
    -									<p>
    -										Please refer to the <reference class="org.jooq.impl.Factory" title="Factory Javadoc"/> for more details.
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -							<section id="numeric-functions">
    -								<title>Numeric functions</title>
    -								<content><html>
    -									<p>
    -										Math can be done efficiently in the database before returning results to your Java application. In addition to the <reference id="arithmetic-expressions" title="arithmetic expressions" /> discussed previously, jOOQ also supports a variety of numeric functions. As discussed in the chapter about <reference id="sql-dialects" title="SQL dialects"/> numeric functions (as any function type) are mostly simulated in your database, in case they are not natively supported.
    -									</p>
    -									<p>
    -										This is a list of numeric functions supported by jOOQ's <reference id="factory" title="Factory"/>:
    -									</p>
    -									
    -									<ul>
    -										<li><strong>ABS</strong>: Get the absolute value of a value.</li>
    -										<li><strong>ACOS</strong>: Get the arc cosine of a value.</li>
    -										<li><strong>ASIN</strong>: Get the arc sine of a value.</li>
    -										<li><strong>ATAN</strong>: Get the arc tangent of a value.</li>
    -										<li><strong>ATAN2</strong>: Get the atan2 function of two values.</li>
    -										<li><strong>CEIL</strong>: Get the smalles integer value larger than a given numeric value.</li>
    -										<li><strong>COS</strong>: Get the cosine of a value.</li>
    -										<li><strong>COSH</strong>: Get the hyperbolic cosine of a value.</li>
    -										<li><strong>COT</strong>: Get the cotangent of a value.</li>
    -										<li><strong>COTH</strong>: Get the hyperbolic cotangent of a value.</li>
    -										<li><strong>DEG</strong>: Transform radians into degrees.</li>
    -										<li><strong>EXP</strong>: Calculate e^value.</li>
    -										<li><strong>FLOOR</strong>: Get the largest integer value smaller than a given numeric value.</li>
    -										<li><strong>GREATEST</strong>: Finds the greatest among all argument values (can also be used with non-numeric values).</li>
    -										<li><strong>LEAST</strong>: Finds the least among all argument values (can also be used with non-numeric values).</li>
    -										<li><strong>LN</strong>: Get the natural logarithm of a value.</li>
    -										<li><strong>LOG</strong>: Get the logarithm of a value given a base.</li>
    -										<li><strong>POWER</strong>: Calculate value^exponent.</li>
    -										<li><strong>RAD</strong>: Transform degrees into radians.</li>
    -										<li><strong>RAND</strong>: Get a random number.</li>
    -										<li><strong>ROUND</strong>: Rounds a value to the nearest integer.</li>
    -										<li><strong>SIGN</strong>: Get the sign of a value (-1, 0, 1).</li>
    -										<li><strong>SIN</strong>: Get the sine of a value.</li>
    -										<li><strong>SINH</strong>: Get the hyperbolic sine of a value.</li>
    -										<li><strong>SQRT</strong>: Calculate the square root of a value.</li>
    -										<li><strong>TAN</strong>: Get the tangent of a value.</li>
    -										<li><strong>TANH</strong>: Get the hyperbolic tangent of a value.</li>
    -										<li><strong>TRUNC</strong>: Truncate the decimals off a given value.</li>
    -									</ul>
    -									
    -									<p>
    -										Please refer to the <reference class="org.jooq.impl.Factory" title="Factory Javadoc"/> for more details.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="bitwise-functions">
    -								<title>Bitwise functions</title>
    -								<content><html>
    -									<p>
    -										Interestingly, bitwise functions and bitwise arithmetic is not very popular among SQL databases. Most databases only support a few bitwise operations, while others ship with the full set of operators. jOOQ's API includes most bitwise operations as listed below. In order to avoid ambiguities with <reference id="conditional-expressions" title="conditional operators"/>, all bitwise functions are prefixed with "bit"
    -									</p>
    -									<ul>
    -										<li><strong>BIT_COUNT</strong>: Count the number of bits set to 1 in a number</li>
    -										<li><strong>BIT_AND</strong>: Set only those bits that are set in two numbers</li>
    -										<li><strong>BIT_OR</strong>: Set all bits that are set in at least one number</li>
    -										<li><strong>BIT_NAND</strong>: Set only those bits that are set in two numbers, and inverse the result</li>
    -										<li><strong>BIT_NOR</strong>: Set all bits that are set in at least one number, and inverse the result</li>
    -										<li><strong>BIT_NOT</strong>: Inverse the bits in a number</li>
    -										<li><strong>BIT_XOR</strong>: Set all bits that are set in at exactly one number</li>
    -										<li><strong>BIT_XNOR</strong>: Set all bits that are set in at exactly one number, and inverse the result</li>
    -										<li><strong>SHL</strong>: Shift bits to the left</li>
    -										<li><strong>SHR</strong>: Shift bits to the right</li>
    -									</ul>
    -									
    -									<h3>Some background about bitwise operation simulation</h3>
    -									<p>
    -										As stated before, not all databases support all of these bitwise operations. jOOQ simulates them wherever this is possible. More details can be seen in this blog post: <br/>
    -										<a href="http://blog.jooq.org/2011/10/30/the-comprehensive-sql-bitwise-operations-compatibility-list/">http://blog.jooq.org/2011/10/30/the-comprehensive-sql-bitwise-operations-compatibility-list/</a>
    -									</p>
    -									
    -								</html></content>
    -							</section>
    -
    -							<section id="string-functions">
    -								<title>String functions</title>
    -								<content><html>
    -									<p>
    -										String formatting can be done efficiently in the database before returning results to your Java application. As discussed in the chapter about <reference id="sql-dialects" title="SQL dialects"/> string functions (as any function type) are mostly simulated in your database, in case they are not natively supported.
    -									</p>
    -									<p>
    -										This is a list of numeric functions supported by jOOQ's <reference id="factory" title="Factory"/>:
    -									</p>
    -									
    -									<ul>
    -										<li><strong>ASCII</strong>: Get the ASCII code of a character.</li>
    -										<li><strong>BIT_LENGTH</strong>: Get the length of a string in bits.</li>
    -										<li><strong>CHAR_LENGTH</strong>: Get the length of a string in characters.</li>
    -										<li><strong>CONCAT</strong>: Concatenate several strings.</li>
    -										<li><strong>ESCAPE</strong>: Escape a string for use with the <reference id="like-predicate" title="LIKE predicate"/>.</li>
    -										<li><strong>LENGTH</strong>: Get the length of a string.</li>
    -										<li><strong>LOWER</strong>: Get a string in lower case letters.</li>
    -										<li><strong>LPAD</strong>: Pad a string on the left side.</li>
    -										<li><strong>LTRIM</strong>: Trim a string on the left side.</li>
    -										<li><strong>OCTET_LENGTH</strong>: Get the length of a string in octets.</li>
    -										<li><strong>POSITION</strong>: Find a string within another string.</li>
    -										<li><strong>REPEAT</strong>: Repeat a string a given number of times.</li>
    -										<li><strong>REPLACE</strong>: Replace a string within another string.</li>
    -										<li><strong>RPAD</strong>: Pad a string on the right side.</li>
    -										<li><strong>RTRIM</strong>: Trim a string on the right side.</li>
    -										<li><strong>SUBSTRING</strong>: Get a substring of a string.</li>
    -										<li><strong>TRIM</strong>: Trim a string on both sides.</li>
    -										<li><strong>UPPER</strong>: Get a string in upper case letters.</li>
    -									</ul>
    -									
    -									<p>
    -										Please refer to the <reference class="org.jooq.impl.Factory" title="Factory Javadoc"/> for more details.
    -									</p>
    -									
    -									<h3>Regular expressions, REGEXP, REGEXP_LIKE, etc.</h3>
    -									<p>
    -										Various databases have some means of searching through columns using regular expressions if the <reference id="like-predicate" title="LIKE predicate"/> does not provide sufficient pattern matching power. While there are many different functions and operators in the various databases, jOOQ settled for the SQL:2008 standard REGEX_LIKE operator. Being an operator (and not a function), you should use the corresponding method on <reference class="org.jooq.Field"/>:
    -									</p>
    -									
    -</html><java><![CDATA[create.selectFrom(BOOK).where(TITLE.likeRegex("^.*SQL.*$"));]]></java><html>
    -
    -									<p>
    -										Note that the SQL standard specifies that patterns should follow the XQuery standards. In the real world, the POSIX regular expression standard is the most used one, some use Java regular expressions, and only a few ones use Perl regular expressions. jOOQ does not make any assumptions about regular expression syntax. For cross-database compatibility, please read the relevant database manuals carefully, to learn about the appropriate syntax. Please refer to the <reference class="org.jooq.impl.Factory" title="Factory Javadoc"/> for more details.
    -									</p>
    -								</html></content>
    -								<!-- don't forget regex here! -->
    -							</section>
    -
    -							<section id="date-and-time-functions">
    -								<title>Date and time functions</title>
    -								<content><html>
    -									<p>
    -										This is a list of date and time functions supported by jOOQ's <reference id="factory" title="Factory"/>:
    -									</p>
    -									
    -									<ul>
    -										<li><strong>CURRENT_DATE</strong>: Get current date as a DATE object.</li>
    -										<li><strong>CURRENT_TIME</strong>: Get current time as a TIME object.</li>
    -										<li><strong>CURRENT_TIMESTAMP</strong>: Get current date as a TIMESTAMP object.</li>
    -										<li><strong>DATE_ADD</strong>: Add a number of days or an interval to a date.</li>
    -										<li><strong>DATE_DIFF</strong>: Get the difference in days between two dates.</li>
    -										<li><strong>TIMESTAMP_ADD</strong>: Add a number of days or an interval to a timestamp.</li>
    -										<li><strong>TIMESTAMP_DIFF</strong>: Get the difference as an INTERVAL DAY TO SECOND between two dates.</li>
    -									</ul>
    -									
    -									<h3>Intervals in jOOQ</h3>
    -									<p>
    -										jOOQ fills a gap opened by JDBC, which neglects an important SQL data type as defined by the SQL standards: INTERVAL types. See the manual's section about <reference id="data-types-intervals" title="INTERVAL data types"/> for more details.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="system-functions">
    -								<title>System functions</title>
    -								<content><html>
    -									<p>
    -										This is a list of system functions supported by jOOQ's <reference id="factory" title="Factory"/>:
    -									</p>
    -									<ul>
    -										<li><strong>CURRENT_USER</strong>: Get current user.</li>
    -									</ul>
    -								</html></content>
    -							</section>
    -
    -							<section id="aggregate-functions">
    -								<title>Aggregate functions</title>
    -								<content><html>
    -									<p>
    -										Aggregate functions work just like functions, even if they have a slightly different semantics. Here are some example aggregate functions from the <reference id="factory" title="Factory"/>:
    -									</p>
    -
    -</html><java><![CDATA[// Every-day, SQL standard aggregate functions
    -AggregateFunction<Integer> count();
    -AggregateFunction<Integer> count(Field<?> field);
    -AggregateFunction<T> max(Field<T> field);
    -AggregateFunction<T> min(Field<T> field);
    -AggregateFunction<BigDecimal> sum(Field<? extends Number> field);
    -AggregateFunction<BigDecimal> avg(Field<? extends Number> field);
    -
    -// DISTINCT keyword in aggregate functions
    -AggregateFunction<Integer> countDistinct(Field<?> field);
    -AggregateFunction<T> maxDistinct(Field<T> field);
    -AggregateFunction<T> minDistinct(Field<T> field);
    -AggregateFunction<BigDecimal> sumDistinct(Field<? extends Number> field);
    -AggregateFunction<BigDecimal> avgDistinct(Field<? extends Number> field);
    -
    -// String aggregate functions
    -AggregateFunction<String> groupConcat(Field<?> field);
    -AggregateFunction<String> groupConcatDistinct(Field<?> field);
    -OrderedAggregateFunction<String> listAgg(Field<?> field);
    -OrderedAggregateFunction<String> listAgg(Field<?> field, String separator);
    -
    -// Statistical functions
    -AggregateFunction<BigDecimal> median(Field<? extends Number> field);
    -AggregateFunction<BigDecimal> stddevPop(Field<? extends Number> field);
    -AggregateFunction<BigDecimal> stddevSamp(Field<? extends Number> field);
    -AggregateFunction<BigDecimal> varPop(Field<? extends Number> field);
    -AggregateFunction<BigDecimal> varSamp(Field<? extends Number> field);]]></java><html>
    -
    -									<p>
    -										Here's an example, counting the number of books any author has written:
    -									</p>
    -
    -</html><code-pair>
    -<sql>SELECT AUTHOR_ID, COUNT(*)
    -FROM BOOK
    -GROUP BY AUTHOR_ID</sql><java>create.select(BOOK.AUTHOR_ID, count())
    -      .from(BOOK)
    -      .groupBy(BOOK.AUTHOR_ID);</java>
    -</code-pair><html>
    -
    -									<p>
    -										Aggregate functions have strong limitations about when they may be used and when not. For instance, you can use aggregate functions in scalar queries. Typically, this means you only select aggregate functions, no <reference id="table-columns" title="regular columns"/> or other <reference id="column-expressions" title="column expressions"/>. Another use case is to use them along with a <reference id="group-by-clause" title="GROUP BY clause"/> as seen in the previous example. Note, that jOOQ does not check whether your using of aggregate functions is correct according to the SQL standards, or according to your database's behaviour.
    -									</p>
    -
    -		                            <h3>Ordered aggregate functions</h3>
    -		                            <p>
    -		                            	Oracle and some other databases support "ordered aggregate functions". This means you can provide an ORDER BY clause to an aggregate function, which will be taken into consideration when aggregating. The best example for this is Oracle's <code>LISTAGG()</code> (also known as <code>GROUP_CONCAT</code> in other <reference id="sql-dialects" title="SQL dialects"/>). The following query groups by authors and concatenates their books' titles
    -		                           	</p>
    -</html><code-pair>
    -<sql>SELECT   LISTAGG(TITLE, ', ')
    -         WITHIN GROUP (ORDER BY TITLE)
    -FROM     BOOK
    -GROUP BY AUTHOR_ID</sql><java>create.select(listAgg(BOOK.TITLE, ", ")
    -      .withinGroupOrderBy(BOOK.TITLE))
    -      .from(BOOK)
    -      .groupBy(BOOK.AUTHOR_ID)</java>
    -</code-pair><html>
    -
    -									<p>
    -										The above query might yield:
    -									</p>
    -
    -</html><text>+---------------------+
    -| LISTAGG             |
    -+---------------------+
    -| 1984, Animal Farm   |
    -| O Alquimista, Brida |
    -+---------------------+</text><html>
    -
    -									<h3>FIRST and LAST: Oracle's "ranked" aggregate functions</h3>
    -									<p>
    -										Oracle allows for restricting aggregate functions using the <code>KEEP()</code> clause, which is supported by jOOQ. In Oracle, some aggregate functions (MIN, MAX, SUM, AVG, COUNT, VARIANCE, or STDDEV) can be restricted by this clause, hence <reference class="org.jooq.AggregateFunction"/> also allows for specifying it. Here are a couple of examples using this clause:
    -									</p>
    -
    -</html><code-pair>
    -<sql>SUM(BOOK.AMOUNT_SOLD)
    -  KEEP(DENSE_RANK FIRST ORDER BY BOOK.AUTHOR_ID)</sql><java>sum(BOOK.AMOUNT_SOLD)
    -  .keepDenseRankFirstOrderBy(BOOK.AUTHOR_ID)</java>
    -</code-pair><html>
    -
    -									<h3>User-defined aggregate functions</h3>
    -									<p>
    -										jOOQ also supports using your own user-defined aggregate functions. See the manual's section about <reference id="user-defined-aggregate-functions" title="user-defined aggregate functions"/> for more details.
    -									</p>
    -
    -									<h3>Window functions / analytical functions</h3>
    -									<p>
    -										In those databases that support <reference id="window-functions" title="window functions"/>, jOOQ's <reference class="org.jooq.AggregateFunction"/> can be transformed into a window function / analytical function by calling <code>over()</code> on it. See the manual's section about <reference id="window-functions" title="window functions"/> for more details.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="window-functions">
    -								<title>Window functions</title>
    -								<content><html>
    -									<p>
    -										Most major RDBMS support the concept of window functions. jOOQ knows of implementations in DB2, Oracle, Postgres, SQL Server, and Sybase SQL Anywhere, and supports most of their specific syntaxes. Note, that H2 and HSQLDB have implemented <code>ROW_NUMBER()</code> functions, without true windowing support.
    -									</p>
    -									<p>
    -										As previously discussed, any <reference class="org.jooq.AggregateFunction"/> can be transformed into a window function using the <code>over()</code> method. See the chapter about <reference id="aggregate-functions" title="aggregate functions"/> for details. In addition to those, there are also some more window functions supported by jOOQ, as declared in the <reference id="factory" title="Factory"/>:
    -									</p>
    -
    -</html><java><![CDATA[// Ranking functions
    -    WindowOverStep<Integer>    rowNumber();
    -    WindowOverStep<Integer>    rank();
    -    WindowOverStep<Integer>    denseRank();
    -    WindowOverStep<BigDecimal> percentRank();
    -    
    -// Windowing functions
    -<T> WindowIgnoreNullsStep<T>   firstValue(Field<T> field);
    -<T> WindowIgnoreNullsStep<T>   lastValue(Field<T> field)
    -<T> WindowIgnoreNullsStep<T>   lead(Field<T> field);
    -<T> WindowIgnoreNullsStep<T>   lead(Field<T> field, int offset);
    -<T> WindowIgnoreNullsStep<T>   lead(Field<T> field, int offset, T defaultValue);
    -<T> WindowIgnoreNullsStep<T>   lead(Field<T> field, int offset, Field<T> defaultValue);
    -<T> WindowIgnoreNullsStep<T>   lag(Field<T> field);
    -<T> WindowIgnoreNullsStep<T>   lag(Field<T> field, int offset);
    -<T> WindowIgnoreNullsStep<T>   lag(Field<T> field, int offset, T defaultValue);
    -<T> WindowIgnoreNullsStep<T>   lag(Field<T> field, int offset, Field<T> defaultValue);
    -
    -// Statistical functions
    -    WindowOverStep<BigDecimal> cumeDist();
    -    WindowOverStep<Integer>    ntile(int number);]]></java><html>	
    -    								
    -    								<p>
    -    									SQL distinguishes between various window function types (e.g. "ranking functions"). Depending on the function, SQL expects mandatory <code>PARTITION BY</code> or <code>ORDER BY</code> clauses within the <code>OVER()</code> clause. jOOQ does not enforce those rules for two reasons:
    -    								</p>
    -    								<ul>
    -    									<li>Your JDBC driver or database already checks SQL syntax semantics</li>
    -    									<li>Not all databases behave correctly according to the SQL standard</li>
    -    								</ul>
    -    								<p>
    -    									If possible, however, jOOQ tries to render missing clauses for you, if a given <reference id="sql-dialects" title="SQL dialect"/> is more restrictive.
    -    								</p>
    -    								<h3>Some examples</h3>
    -									<p>
    -										 Here are some simple examples of window functions with jOOQ:
    -									</p>
    -									
    -</html><code-pair>
    -<sql>-- Sample uses of ROW_NUMBER()
    -ROW_NUMBER() OVER()
    -ROW_NUMBER() OVER(PARTITION BY 1)
    -ROW_NUMBER() OVER(ORDER BY BOOK.ID)
    -ROW_NUMBER() OVER(PARTITION BY BOOK.AUTHOR_ID ORDER BY BOOK.ID)
    -                  
    --- Sample uses of FIRST_VALUE
    -FIRST_VALUE(BOOK.ID) OVER()
    -FIRST_VALUE(BOOK.ID IGNORE NULLS) OVER()
    -FIRST_VALUE(BOOK.ID RESPECT NULLS) OVER()
    -</sql><java>// Sample uses of rowNumber()
    -rowNumber().over()
    -rowNumber().over().partitionByOne()
    -rowNumber().over().partitionBy(BOOK.AUTHOR_ID)
    -rowNumber().over().partitionBy(BOOK.AUTHOR_ID).orderBy(BOOK.ID)
    -                  
    -// Sample uses of firstValue()
    -firstValue(BOOK.ID).over()
    -firstValue(BOOK.ID).ignoreNulls().over()
    -firstValue(BOOK.ID).respectNulls().over()
    -</java>
    -</code-pair><html>
    -    								
    -									<h3>An advanced window function example</h3>
    -									<p>
    -										Window functions can be used for things like calculating a "running total". The following example fetches transactions and the running total for every transaction going back to the beginning of the transaction table (ordered by booked_at). Window functions are accessible from the previously seen <reference class="org.jooq.AggregateFunction"/> type using the <code>over()</code> method:
    -									</p>
    -
    -</html><code-pair>
    -<sql>SELECT booked_at, amount,
    -   SUM(amount) OVER (PARTITION BY 1
    -                     ORDER BY booked_at
    -                     ROWS BETWEEN UNBOUNDED PRECEDING
    -                     AND CURRENT ROW) AS total
    -  FROM transactions</sql><java>create.select(t.BOOKED_AT, t.AMOUNT,
    -         sum(t.AMOUNT).over().partitionByOne()
    -                      .orderBy(t.BOOKED_AT)
    -                      .rowsBetweenUnboundedPreceding()
    -                      .andCurrentRow().as("total")
    -      .from(TRANSACTIONS.as("t"));</java>
    -</code-pair><html>
    -
    -
    -									<h3>Window functions created from ordered aggregate functions</h3>
    -									<p>
    -										In the previous chapter about <reference id="aggregate-functions" title="aggregate functions"/>, we have seen the concept of "ordered aggregate functions", such as Oracle's <code>LISTAGG()</code>. These functions have a window function / analytical function variant, as well. For example:
    -									</p>
    -									
    -</html><code-pair>
    -<sql>SELECT   LISTAGG(TITLE, ', ')
    -         WITHIN GROUP (ORDER BY TITLE)
    -         OVER (PARTITION BY BOOK.AUTHOR_ID)
    -FROM     BOOK</sql><java>create.select(listAgg(BOOK.TITLE, ", ")
    -      .withinGroupOrderBy(BOOK.TITLE)
    -      .over().partitionBy(BOOK.AUTHOR_ID))
    -      .from(BOOK)</java>
    -</code-pair><html>
    -
    -									<h3>Window functions created from Oracle's FIRST and LAST aggregate functions</h3>
    -									<p>
    -										In the previous chapter about <reference id="aggregate-functions" title="aggregate functions"/>, we have seen the concept of "FIRST and LAST aggregate functions". These functions have a window function / analytical function variant, as well. For example:
    -									</p>
    -
    -</html><code-pair>
    -<sql>SUM(BOOK.AMOUNT_SOLD)
    -  KEEP(DENSE_RANK FIRST ORDER BY BOOK.AUTHOR_ID)
    -  OVER(PARTITION BY 1)</sql><java>sum(BOOK.AMOUNT_SOLD)
    -  .keepDenseRankFirstOrderBy(BOOK.AUTHOR_ID)
    -  .over().partitionByOne()</java>
    -</code-pair><html>
    -
    -
    -									<h3>Window functions created from user-defined aggregate functions</h3>
    -									<p>
    -										User-defined aggregate functions also implement <reference class="org.jooq.AggregateFunction"/>, hence they can also be transformed into window functions using <code>over()</code>. This is supported by Oracle in particular. See the manual's section about <reference id="user-defined-aggregate-functions" title="user-defined aggregate functions"/> for more details.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="grouping-functions">
    -								<title>Grouping functions</title>
    -								<content><html>
    -									<h3>ROLLUP() explained in SQL</h3>
    -									<p>
    -										The SQL standard defines special functions that can be used in the <reference id="group-by-clause" title="GROUP BY clause"/>: the grouping functions. These functions can be used to generate several groupings in a single clause. This can best be explained in SQL. Let's take ROLLUP() for instance:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- ROLLUP() with one argument 
    -SELECT AUTHOR_ID, COUNT(*)
    -FROM BOOK
    -GROUP BY ROLLUP(AUTHOR_ID)
    -
    -
    --- ROLLUP() with two arguments
    -SELECT AUTHOR_ID, PUBLISHED_IN, COUNT(*)
    -FROM BOOK
    -GROUP BY ROLLUP(AUTHOR_ID, PUBLISHED_IN)
    -
    -
    -
    -
    -
    -
    -
    -]]></sql><sql><![CDATA[-- The same query using UNION ALL:
    -  SELECT AUTHOR_ID, COUNT(*) FROM BOOK GROUP BY (AUTHOR_ID)
    -UNION ALL
    -  SELECT NULL, COUNT(*) FROM BOOK GROUP BY ()
    -ORDER BY 1 NULLS LAST
    -
    --- The same query using UNION ALL:
    -  SELECT AUTHOR_ID, PUBLISHED_IN, COUNT(*) 
    -  FROM BOOK GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -UNION ALL
    -  SELECT AUTHOR_ID, NULL, COUNT(*) 
    -  FROM BOOK GROUP BY (AUTHOR_ID)
    -UNION ALL
    -  SELECT NULL, NULL, COUNT(*) 
    -  FROM BOOK GROUP BY ()
    -ORDER BY 1 NULLS LAST, 2 NULLS LAST
    -]]></sql>
    -</code-pair><html>
    -
    -									<p>
    -										In English, the <code>ROLLUP()</code> grouping function provides <code>N+1</code> groupings, when <code>N</code> is the number of arguments to the <code>ROLLUP()</code> function. Each grouping has an additional group field from the <code>ROLLUP()</code> argument field list. The results of the second query might look something like this:
    -									</p>
    -									
    -</html><text><![CDATA[+-----------+--------------+----------+
    -| AUTHOR_ID | PUBLISHED_IN | COUNT(*) |
    -+-----------+--------------+----------+
    -|         1 |         1945 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -|         1 |         1948 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -|         1 |         NULL |        2 | <- GROUP BY (AUTHOR_ID)
    -|         2 |         1988 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -|         2 |         1990 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -|         2 |         NULL |        2 | <- GROUP BY (AUTHOR_ID)
    -|      NULL |         NULL |        4 | <- GROUP BY ()
    -+-----------+--------------+----------+]]></text><html>
    -
    -									<h3>CUBE() explained in SQL</h3>
    -									<p>
    -										<code>CUBE()</code> is different from <code>ROLLUP()</code> in the way that it doesn't just create <code>N+1</code> groupings, it creates all <code>2^N</code> possible combinations between all group fields in the <code>CUBE()</code> function argument list. Let's re-consider our second query from before:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- CUBE() with two arguments
    -SELECT AUTHOR_ID, PUBLISHED_IN, COUNT(*)
    -FROM BOOK
    -GROUP BY CUBE(AUTHOR_ID, PUBLISHED_IN)
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -]]></sql><sql><![CDATA[-- The same query using UNION ALL:
    -  SELECT AUTHOR_ID, PUBLISHED_IN, COUNT(*) 
    -  FROM BOOK GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -UNION ALL
    -  SELECT AUTHOR_ID, NULL, COUNT(*) 
    -  FROM BOOK GROUP BY (AUTHOR_ID)
    -UNION ALL
    -  SELECT NULL, PUBLISHED_IN, COUNT(*) 
    -  FROM BOOK GROUP BY (PUBLISHED_IN)
    -UNION ALL
    -  SELECT NULL, NULL, COUNT(*) 
    -  FROM BOOK GROUP BY ()
    -ORDER BY 1 NULLS FIRST, 2 NULLS FIRST
    -]]></sql>
    -</code-pair><html>
    -
    -									<p>
    -										The results would then hold:
    -									</p>
    -
    -</html><text><![CDATA[+-----------+--------------+----------+
    -| AUTHOR_ID | PUBLISHED_IN | COUNT(*) |
    -+-----------+--------------+----------+
    -|      NULL |         NULL |        2 | <- GROUP BY ()
    -|      NULL |         1945 |        1 | <- GROUP BY (PUBLISHED_IN)
    -|      NULL |         1948 |        1 | <- GROUP BY (PUBLISHED_IN)
    -|      NULL |         1988 |        1 | <- GROUP BY (PUBLISHED_IN)
    -|      NULL |         1990 |        1 | <- GROUP BY (PUBLISHED_IN)
    -|         1 |         NULL |        2 | <- GROUP BY (AUTHOR_ID)
    -|         1 |         1945 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -|         1 |         1948 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -|         2 |         NULL |        2 | <- GROUP BY (AUTHOR_ID)
    -|         2 |         1988 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -|         2 |         1990 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -+-----------+--------------+----------+]]></text><html>
    -
    -									<h3>GROUPING SETS()</h3>
    -									<p>
    -										<code>GROUPING SETS()</code> are the generalised way to create multiple groupings. From our previous examples 
    -									</p>
    -									<ul>
    -										<li><code>ROLLUP(AUTHOR_ID, PUBLISHED_IN)</code> corresponds to <code>GROUPING SETS((AUTHOR_ID, PUBLISHED_IN), (AUTHOR_ID), ())</code></li>
    -										<li><code>CUBE(AUTHOR_ID, PUBLISHED_IN)</code> corresponds to <code>GROUPING SETS((AUTHOR_ID, PUBLISHED_IN), (AUTHOR_ID), (PUBLISHED_IN), ())</code></li>
    -									</ul>
    -									<p>
    -										This is nicely explained in the SQL Server manual pages about <code>GROUPING SETS()</code> and other grouping functions:<br/>
    -										<a href="http://msdn.microsoft.com/en-us/library/bb510427(v=sql.105)">http://msdn.microsoft.com/en-us/library/bb510427(v=sql.105)</a>
    -									</p>
    -									
    -									<h3>jOOQ's support for ROLLUP(), CUBE(), GROUPING SETS()</h3>
    -									<p>
    -										jOOQ fully supports all of these functions, as well as the utility functions <code>GROUPING()</code> and <code>GROUPING_ID()</code>, used for identifying the grouping set ID of a record. The <reference id="factory" title="Factory API"/> thus includes:
    -									</p>
    -									
    -</html><java><![CDATA[// The various grouping function constructors
    -Field<?> rollup(Field<?>... fields);
    -Field<?> cube(Field<?>... fields);
    -Field<?> groupingSets(Field<?>... fields);
    -Field<?> groupingSets(Field<?>[]... fields);
    -Field<?> groupingSets(Collection<Field<?>>... fields);
    -
    -// The utility functions generating IDs per GROUPING SET
    -Field<Integer> grouping(Field<?>);
    -Field<Integer> groupingId(Field<?>...);]]></java><html>
    -
    -									<h3>MySQL's and CUBRID's WITH ROLLUP syntax</h3>
    -									<p>
    -										MySQL and CUBRID don't know any grouping functions, but they support a <code>WITH ROLLUP</code> clause, that is equivalent to simple <code>ROLLUP()</code> grouping functions. jOOQ simulates <code>ROLLUP()</code> in MySQL and CUBRID, by rendering this <code>WITH ROLLUP</code> clause. The following two statements mean the same:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[-- Statement 1: SQL standard
    -GROUP BY ROLLUP(A, B, C)
    -
    --- Statement 2: SQL standard
    -GROUP BY A, ROLLUP(B, C)]]></sql><sql><![CDATA[-- Statement 1: MySQL
    -GROUP BY A, B, C WITH ROLLUP
    -
    --- Statement 2: MySQL
    --- This is not supported in MySQL]]></sql>
    -</code-pair><html>
    -								</html></content>
    -							</section>
    -
    -							<section id="user-defined-functions">
    -								<title>User-defined functions</title>
    -								<content><html>
    -									<p>
    -										Some databases support user-defined functions, which can be embedded in any SQL statement, if you're using jOOQ's <reference id="code-generation" title="code generator"/>. Let's say you have the following simple function in Oracle SQL:
    -									</p>
    -									
    -</html><sql><![CDATA[CREATE OR REPLACE FUNCTION echo (INPUT NUMBER)
    -RETURN NUMBER
    -IS
    -BEGIN
    -    RETURN INPUT;
    -END echo;
    -]]></sql><html>
    -
    -                                    <p>
    -                                    	The above function will be made available from a generated <reference id="codegen-procedures" title="Routines"/> class. You can use it like any other <reference id="column-expressions" title="column expression"/>:
    -                                    </p>
    -                                    
    -</html><code-pair>
    -<sql><![CDATA[SELECT echo(1) FROM DUAL WHERE echo(2) = 2]]></sql><java><![CDATA[create.select(echo(1)).where(echo(2).equal(2));]]></java>
    -</code-pair><html>
    -                                
    -                                	<p>
    -                                		Note that user-defined functions returning <reference id="data-types-cursors" title="CURSOR"/> or <reference id="data-types-arrays" title="ARRAY"/> data types can also be used wherever <reference id="table-expressions" title="table expressions"/> can be used, if they are <reference id="array-and-cursor-unnesting" title="unnested"/>
    -                                	</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="user-defined-aggregate-functions">
    -								<title>User-defined aggregate functions</title>
    -								<content><html>
    -									<p>
    -										Some databases support user-defined aggregate functions, which can then be used along with <reference id="group-by-clause" title="GROUP BY clauses"/> or as <reference id="window-functions" title="window functions"/>. An example for such a database is Oracle. With Oracle, you can define the following OBJECT type (the example was taken from the <a href="http://docs.oracle.com/cd/B28359_01/appdev.111/b28425/ext_agg_ref.htm">Oracle 11g documentation</a>): 
    -									</p>
    -									
    -</html><sql><![CDATA[CREATE TYPE U_SECOND_MAX AS OBJECT
    -(
    -  MAX NUMBER, -- highest value seen so far
    -  SECMAX NUMBER, -- second highest value seen so far
    -  STATIC FUNCTION ODCIAggregateInitialize(sctx IN OUT U_SECOND_MAX) RETURN NUMBER,
    -  MEMBER FUNCTION ODCIAggregateIterate(self IN OUT U_SECOND_MAX, value IN NUMBER) RETURN NUMBER,
    -  MEMBER FUNCTION ODCIAggregateTerminate(self IN U_SECOND_MAX, returnValue OUT NUMBER, flags IN NUMBER) RETURN NUMBER,
    -  MEMBER FUNCTION ODCIAggregateMerge(self IN OUT U_SECOND_MAX, ctx2 IN U_SECOND_MAX) RETURN NUMBER
    -);
    -
    -CREATE OR REPLACE TYPE BODY U_SECOND_MAX IS
    -STATIC FUNCTION ODCIAggregateInitialize(sctx IN OUT U_SECOND_MAX)
    -RETURN NUMBER IS
    -BEGIN
    -  SCTX := U_SECOND_MAX(0, 0);
    -  RETURN ODCIConst.Success;
    -END;
    -
    -MEMBER FUNCTION ODCIAggregateIterate(self IN OUT U_SECOND_MAX, value IN NUMBER) RETURN NUMBER IS
    -BEGIN
    -  IF VALUE > SELF.MAX THEN
    -    SELF.SECMAX := SELF.MAX;
    -    SELF.MAX := VALUE;
    -  ELSIF VALUE > SELF.SECMAX THEN
    -    SELF.SECMAX := VALUE;
    -  END IF;
    -  RETURN ODCIConst.Success;
    -END;
    -
    -MEMBER FUNCTION ODCIAggregateTerminate(self IN U_SECOND_MAX, returnValue OUT NUMBER, flags IN NUMBER) RETURN NUMBER IS
    -BEGIN
    -  RETURNVALUE := SELF.SECMAX;
    -  RETURN ODCIConst.Success;
    -END;
    -
    -MEMBER FUNCTION ODCIAggregateMerge(self IN OUT U_SECOND_MAX, ctx2 IN U_SECOND_MAX) RETURN NUMBER IS
    -BEGIN
    -  IF CTX2.MAX > SELF.MAX THEN
    -    IF CTX2.SECMAX > SELF.SECMAX THEN
    -      SELF.SECMAX := CTX2.SECMAX;
    -    ELSE
    -      SELF.SECMAX := SELF.MAX;
    -    END IF;
    -    SELF.MAX := CTX2.MAX;
    -  ELSIF CTX2.MAX > SELF.SECMAX THEN
    -    SELF.SECMAX := CTX2.MAX;
    -  END IF;
    -  RETURN ODCIConst.Success;
    -END;
    -END;]]></sql><html>
    -
    -									<p>
    -										The above OBJECT type is then available to function declarations as such:
    -									</p>
    -
    -</html><sql><![CDATA[
    -CREATE FUNCTION SECOND_MAX (input NUMBER) RETURN NUMBER
    -PARALLEL_ENABLE AGGREGATE USING U_SECOND_MAX;]]></sql><html>
    -
    -									<h3>Using the generated aggregate function</h3>
    -									<p>
    -										jOOQ's <reference id="code-generation" title="code generator"/> will detect such aggregate functions and generate them differently from regular <reference id="user-defined-functions" title="user-defined functions"/>. They implement the <reference class="org.jooq.AggregateFunction"/> type, as mentioned in the manual's section about <reference id="aggregate-functions" title="aggregate functions"/>. Here's how you can use the SECOND_MAX() aggregate function with jOOQ:
    -									</p>
    -				
    -</html><code-pair>					
    -<sql><![CDATA[-- Get the second-latest publishing date by author
    -SELECT SECOND_MAX(PUBLISHED_IN) 
    -FROM BOOK
    -GROUP BY AUTHOR_ID]]></sql><java><![CDATA[// Routines.secondMax() can be static-imported
    -create.select(secondMax(BOOK.PUBLISHED_IN))
    -      .from(BOOK)
    -      .groupBy(BOOK.AUTHOR_ID)]]></java>
    -</code-pair><html>
    -								</html></content>
    -							</section>
    -
    -							<section id="case-expressions">
    -								<title>The CASE expression</title>
    -								<content><html>
    -									<p>
    -										The CASE expression is part of the standard SQL syntax. While some RDBMS also offer an IF expression, or a DECODE function, you can always rely on the two types of CASE syntax:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[CASE WHEN AUTHOR.FIRST_NAME = 'Paulo'  THEN 'brazilian'
    -     WHEN AUTHOR.FIRST_NAME = 'George' THEN 'english'
    -                                       ELSE 'unknown'
    -END
    -
    --- OR:
    -
    -CASE AUTHOR.FIRST_NAME WHEN 'Paulo'  THEN 'brazilian'
    -                       WHEN 'George' THEN 'english'
    -                                     ELSE 'unknown'
    -END]]></sql><java><![CDATA[create.decode()
    -      .when(AUTHOR.FIRST_NAME.equal("Paulo"), "brazilian")
    -      .when(AUTHOR.FIRST_NAME.equal("George"), "english")
    -      .otherwise("unknown");
    -
    -// OR:
    -
    -create.decode().value(AUTHOR.FIRST_NAME)
    -               .when("Paulo", "brazilian")
    -               .when("George", "english")
    -               .otherwise("unknown");]]></java>
    -</code-pair><html>
    -
    -								<p>
    -									In jOOQ, both syntaxes are supported (The second one is simulated in Derby, which only knows the first one). Unfortunately, both case and else are reserved words in Java. jOOQ chose to use decode() from the Oracle DECODE function, and otherwise(), which means the same as else.
    -								</p>
    -
    -								<p>
    -									A CASE expression can be used anywhere where you can place a <reference id="column-expressions" title="column expression (or Field)"/>. For instance, you can SELECT the above expression, if you're selecting from AUTHOR:
    -							 	</p>
    -
    -</html><sql>SELECT AUTHOR.FIRST_NAME, [... CASE EXPR ...] AS nationality
    -  FROM AUTHOR</sql><html>
    -
    -								<h3>The Oracle DECODE() function</h3>
    -								<p>
    -									Oracle knows a more succinct, but maybe less readable DECODE() function with a variable number of arguments. This function roughly does the same as the second case expression syntax. jOOQ supports the DECODE() function and simulates it using CASE expressions in all dialects other than Oracle:
    -								</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- Oracle:
    -DECODE(FIRST_NAME, 'Paulo', 'brazilian',
    -                   'George', 'english',
    -                   'unknown');
    -
    --- Other SQL dialects
    -CASE AUTHOR.FIRST_NAME WHEN 'Paulo'  THEN 'brazilian'
    -                       WHEN 'George' THEN 'english'
    -                                     ELSE 'unknown'
    -END]]></sql><java><![CDATA[
    -
    -
    -
    -
    -// Use the Oracle-style DECODE() function with jOOQ.
    -// Note, that you will not be able to rely on type-safety
    -create.decode(AUTHOR.FIRST_NAME,
    -    "Paulo", "brazilian",
    -    "George", "english",
    -    "unknown");]]></java>
    -</code-pair><html>
    -
    -		  							<h3>CASE clauses in an ORDER BY clause</h3>
    -									<p>
    -										Sort indirection is often implemented with a CASE clause of a SELECT's ORDER BY clause. See the manual's section about the <reference id="order-by-clause" title="ORDER BY clause"/> for more details.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="sequences-and-serials">
    -								<title>Sequences and serials</title>
    -								<content><html>
    -									<p>
    -										Sequences implement the <reference class="org.jooq.Sequence"/> interface, providing essentially this functionality:
    -									</p>
    -
    -</html><java><![CDATA[// Get a field for the CURRVAL sequence property
    -Field<T> currval();
    -
    -// Get a field for the NEXTVAL sequence property
    -Field<T> nextval();]]></java><html>
    -
    -									<p>
    -										So if you have a sequence like this in Oracle:
    -									</p>
    -
    -</html><sql>CREATE SEQUENCE s_author_id</sql><html>
    -
    -									<p>
    -										You can then use your <reference id="codegen-sequences" title="generated sequence"/> object directly in a SQL statement as such:
    -									</p>
    -
    -</html><java><![CDATA[// Reference the sequence in a SELECT statement:
    -BigInteger nextID = create.select(s).fetchOne(S_AUTHOR_ID.nextval());
    -
    -// Reference the sequence in an INSERT statement:
    -create.insertInto(AUTHOR, AUTHOR.ID, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .values(S_AUTHOR_ID.nextval(), val("William"), val("Shakespeare"));
    -]]></java><html>
    -
    -									<ul>
    -										<li>For more information about generated sequences, refer to the manual's section about <reference id="codegen-sequences" title="generated sequences"/></li>
    -										<li>For more information about executing standalone calls to sequences, refer to the manual's section about <reference id="sequence-execution" title="sequence execution"/></li>
    -									</ul>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="conditional-expressions">
    -					    <title>Conditional expressions</title>
    -						<content><html>
    -							<p>
    -								Conditions or conditional expressions are widely used in SQL and in the jOOQ API. They can be used in
    -							</p>
    -							<ul>
    -								<li>The <reference id="case-expressions" title="CASE expression"/></li>
    -								<li>The <reference id="join-clause" title="JOIN clause"/> (or JOIN .. ON clause, to be precise) of a <reference id="select-statement" title="SELECT statement"/>, <reference id="update-statement" title="UPDATE statement"/>, <reference id="delete-statement" title="DELETE statement"/></li>
    -								<li>The <reference id="where-clause" title="WHERE clause"/> of a <reference id="select-statement" title="SELECT statement"/>, <reference id="update-statement" title="UPDATE statement"/>, <reference id="delete-statement" title="DELETE statement"/></li>
    -								<li>The <reference id="connect-by-clause" title="CONNECT BY clause"/> of a <reference id="select-statement" title="SELECT statement"/></li>
    -								<li>The <reference id="having-clause" title="HAVING clause"/> of a <reference id="select-statement" title="SELECT statement"/></li>
    -								<li>The <reference id="merge-statement" title="MERGE statement"/>'s ON clause</li>
    -							</ul>
    -							
    -							<h3>Boolean types in SQL</h3>
    -							<p>
    -								Before SQL:1999, boolean types did not really exist in SQL. They were modelled by 0 and 1 numeric/char values. With SQL:1999, true booleans were introduced and are now supported by most databases. In short, these are possible boolean values:
    -							</p>
    -							<ul>
    -								<li>1 or TRUE</li>
    -								<li>0 or FALSE</li>
    -								<li>NULL or UNKNOWN</li>
    -							</ul>
    -							<p>
    -								It is important to know that SQL differs from many other languages in the way it interprets the NULL boolean value. Most importantly, the following facts are to be remembered:
    -							</p>
    -							<ul>
    -								<li>[ANY] = NULL yields NULL (not FALSE)</li>
    -								<li>[ANY] != NULL yields NULL (not TRUE)</li>
    -								<li>NULL = NULL yields NULL (not TRUE)</li>
    -								<li>NULL != NULL yields NULL (not FALSE)</li>
    -							</ul>
    -							<p>
    -								For simplified NULL handling, please refer to the section about the <reference id="distinct-predicate" title="DISTINCT predicate"/>.
    -							</p>
    -							<p>
    -								Note that jOOQ does not model these values as actual <reference id="column-expressions" title="column expression"/> compatible.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -						    <section id="condition-building">
    -							    <title>Condition building</title>
    -								<content><html>
    -									<p>
    -										With jOOQ, most <reference id="conditional-expressions" title="conditional expressions"/> are built from <reference id="column-expressions" title="column expressions"/>, calling various methods on them. For instance, to build a <reference id="comparison-predicate" title="comparison predicate"/>, you can write the following expression:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[TITLE  = 'Animal Farm'
    -TITLE != 'Animal Farm']]></sql><java><![CDATA[BOOK.TITLE.equal("Animal Farm")
    -BOOK.TITLE.notEqual("Animal Farm")]]></java>
    -</code-pair><html>
    -
    -									<h3>Create conditions from the Factory</h3>
    -									<p>
    -										There are a few types of conditions, that can be created statically from the <reference id="factory" title="Factory"/>. These are:
    -									</p>
    -									<ul>
    -										<li><reference id="plain-sql" title="plain SQL conditions"/>, that allow you to phrase your own SQL string <reference id="conditional-expressions" title="conditional expression"/></li>
    -										<li>The <reference id="exists-predicate" title="EXISTS predicate"/>, a standalone predicate that creates a conditional expression</li>
    -										<li>Constant TRUE and FALSE conditional expressions</li>
    -									</ul>
    -
    -									<h3>Connect conditions using boolean operators</h3>
    -									<p>
    -										Conditions can also be connected using <reference id="boolean-operators" title="boolean operators"/> as will be discussed in a subsequent chapter.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -						    <section id="boolean-operators">
    -							    <title>AND, OR, NOT boolean operators</title>
    -								<content><html>
    -									<p>
    -										In SQL, as in most other languages, <reference id="conditional-expressions" title="conditional expressions"/> can be connected using the AND and OR binary operators, as well as the NOT unary operator, to form new conditional expressions. In jOOQ, this is modelled as such: 
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- A simple conditional expression
    -TITLE = 'Animal Farm' OR TITLE = '1984'
    -
    --- A more complex conditional expression
    -        (TITLE = 'Animal Farm' OR TITLE = '1984') 
    -AND NOT (AUTHOR.LAST_NAME = 'Orwell')]]></sql><java><![CDATA[// A simple boolean connection
    -BOOK.TITLE.equal("Animal Farm").or(BOOK.TITLE.equal("1984"))
    -
    -// A more complex conditional expression
    -BOOK.TITLE.equal("Animal Farm").or(BOOK.TITLE.equal("1984"))
    -    .andNot(AUTHOR.LAST_NAME.equal("Orwell"))]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										The above example shows that the number of parentheses in Java can quickly explode. Proper indentation may become crucial in making such code readable. In order to understand how jOOQ composes combined conditional expressions, let's assign component expressions first:
    -									</p>
    -
    -</html><java><![CDATA[Condition a = BOOK.TITLE.equal("Animal Farm");
    -Condition b = BOOK.TITLE.equal("1984");
    -Condition c = AUTHOR.LAST_NAME.equal("Orwell");
    -
    -Condition combined1 = a.or(b);             // These OR-connected conditions form a new condition, wrapped in parentheses
    -Condition combined2 = combined1.andNot(c); // The left-hand side of the AND NOT () operator is already wrapped in parentheses]]></java><html>
    -
    -									<h3>The Condition API</h3>
    -									<p>
    -										Here are all boolean operators on the <reference class="org.jooq.Condition"/> interface:
    -									</p>
    -									
    -</html><java><![CDATA[and(Condition)            // Combine conditions with AND
    -and(String)               // Combine conditions with AND. Convenience for adding plain SQL to the right-hand side
    -and(String, Object...)    // Combine conditions with AND. Convenience for adding plain SQL to the right-hand side
    -and(String, QueryPart...) // Combine conditions with AND. Convenience for adding plain SQL to the right-hand side
    -andExists(Select<?>)      // Combine conditions with AND. Convenience for adding an exists predicate to the rhs
    -andNot(Condition)         // Combine conditions with AND. Convenience for adding an inverted condition to the rhs
    -andNotExists(Select<?>)   // Combine conditions with AND. Convenience for adding an inverted exists predicate to the rhs
    -
    -or(Condition)             // Combine conditions with OR
    -or(String)                // Combine conditions with OR. Convenience for adding plain SQL to the right-hand side
    -or(String, Object...)     // Combine conditions with OR. Convenience for adding plain SQL to the right-hand side
    -or(String, QueryPart...)  // Combine conditions with OR. Convenience for adding plain SQL to the right-hand side
    -orExists(Select<?>)       // Combine conditions with OR. Convenience for adding an exists predicate to the rhs
    -orNot(Condition)          // Combine conditions with OR. Convenience for adding an inverted condition to the rhs
    -orNotExists(Select<?>)    // Combine conditions with OR. Convenience for adding an inverted exists predicate to the rhs
    -
    -not()                     // Invert a condition (synonym for Factory.not(Condition)]]></java></content>
    -							</section>
    -
    -						    <section id="comparison-predicate">
    -							    <title>Comparison predicate</title>
    -								<content><html>
    -									<p>
    -										In SQL, comparison predicates are formed using common comparison operators:
    -									</p>
    -									<ul>
    -										<li><strong>=</strong> to test for equality</li>
    -										<li><strong>&lt;&gt;</strong> or <strong>!=</strong> to test for non-equality</li>
    -										<li><strong>&gt;</strong> to test for being strictly greater</li>
    -										<li><strong>&gt;=</strong> to test for being greater or equal</li>
    -										<li><strong>&lt;</strong> to test for being strictly less</li>
    -										<li><strong>&lt;=</strong> to test for being less or equal</li>
    -									</ul>
    -									
    -									<p>
    -										Unfortunately, Java does not support operator overloading, hence these operators are also implemented as methods in jOOQ, like any other SQL syntax elements. The relevant parts of the <reference class="org.jooq.Field"/> interface are these:
    -									</p>
    -									
    -</html><java><![CDATA[eq or equal(T);                  // =  (some bind value)
    -eq or equal(Field<T>);           // =  (some column expression)
    -eq or equal(Select<T>);          // =  (some scalar SELECT statement)
    -ne or notEqual(T);               // <> (some bind value)
    -ne or notEqual(Field<T>);        // <> (some column expression)
    -ne or notEqual(Select<T>);       // <> (some scalar SELECT statement)
    -lt or lessThan(T);               // <  (some bind value)
    -lt or lessThan(Field<T>);        // <  (some column expression)
    -lt or lessThan(Select<T>);       // <  (some scalar SELECT statement)
    -le or lessOrEqual(T);            // <= (some bind value)
    -le or lessOrEqual(Field<T>);     // <= (some column expression)
    -le or lessOrEqual(Select<T>);    // <= (some scalar SELECT statement)
    -gt or greaterThan(T);            // >  (some bind value)
    -gt or greaterThan(Field<T>);     // >  (some column expression)
    -gt or greaterThan(Select<T>);    // >  (some scalar SELECT statement)
    -ge or greaterOrEqual(T);         // >= (some bind value)
    -ge or greaterOrEqual(Field<T>);  // >= (some column expression)
    -ge or greaterOrEqual(Select<T>); // >= (some scalar SELECT statement)]]></java><html>
    -
    -									<p>
    -										Note that every operator is represented by two methods. A verbose one (such as equal()) and a two-character one (such as eq()). Both methods are the same. You may choose either one, depending on your taste. The manual will always use the more verbose one.
    -									</p>
    -									
    -									<h3>NULL in jOOQ's comparison predicates</h3>
    -									<p>
    -										jOOQ has a special way of dealing with null bind values, when you pass them to comparison predicates equal() and notEqual(). For convenience, jOOQ will render <reference id="null-predicate" title="IS NULL or IS NOT NULL"/> predicates.
    -									</p>
    -
    -									<h3>jOOQ's convenience methods using comparison operators</h3>
    -									<p>
    -										In addition to the above, jOOQ provides a few convenience methods for common operations performed on strings using comparison predicates:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[-- case insensitivity
    -LOWER(TITLE)  = LOWER('animal farm')
    -LOWER(TITLE) <> LOWER('animal farm')]]></sql><java><![CDATA[// case insensitivity
    -BOOK.TITLE.equalIgnoreCase("animal farm")
    -BOOK.TITLE.notEqualIgnoreCase("animal farm")]]></java>
    -</code-pair><html>
    -								</html></content>
    -							</section>
    -
    -						    <section id="quantified-comparison-predicate">
    -							    <title>Quantified comparison predicate</title>
    -								<content><html>
    -									<p>
    -										If the right-hand side of a <reference id="comparison-predicate" title="comparison predicate"/> turns out to be a non-scalar table subquery, you can wrap that subquery in a quantifier, such as ALL, ANY, or SOME. Note that the SQL standard defines ANY and SOME to be equivalent. jOOQ settled for the more intuitive ANY and doesn't support SOME. Here are some examples, supported by jOOQ:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[TITLE = ANY('Animal Farm', '1982')
    -PUBLISHED_IN > ALL(1920, 1940)]]></sql><java><![CDATA[BOOK.TITLE.equalAny("Animal Farm", "1982");
    -BOOK.PUBLISHED_IN.greaterThanAll(1920, 1940);]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										For the example, the right-hand side of the quantified comparison predicates were filled with argument lists. But it is easy to imagine that the source of values results from a <reference id="nested-selects" title="subselect"/>.
    -									</p>
    -
    -									<h3>ANY and the IN predicate</h3>
    -									<p>
    -										It is interesting to note that the SQL standard defines the <reference id="in-predicate" title="IN predicate"/> in terms of the ANY-quantified predicate. The following two expressions are equivalent:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[[ROW VALUE EXPRESSION] IN [IN PREDICATE VALUE]]]></sql><sql><![CDATA[[ROW VALUE EXPRESSION] = ANY [IN PREDICATE VALUE]]]></sql>
    -</code-pair><html>
    -
    -									<p>
    -										Typically, the <reference id="in-predicate" title="IN predicate"/> is more readable than the quantified comparison predicate.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -						    <section id="null-predicate">
    -							    <title>NULL predicate</title>
    -								<content><html>
    -									<p>
    -										In SQL, you cannot compare NULL with any value using <reference id="comparison-predicate" title="comparison predicates"/>, as the result would yield NULL again, which is neither TRUE nor FALSE (see also the manual's section about <reference id="conditional-expressions" title="conditional expressions"/>). In order to test a <reference id="column-expressions" title="column expression"/> for NULL, use the NULL predicate as such:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[TITLE IS NULL
    -TITLE IS NOT NULL]]></sql><java><![CDATA[BOOK.TITLE.isNull()
    -BOOK.TITLE.isNotNull()]]></java>
    -</code-pair><html>
    -
    -								</html></content>
    -							</section>
    -
    -						    <section id="distinct-predicate">
    -							    <title>DISTINCT predicate</title>
    -								<content><html>
    -									<p>
    -										Some databases support the DISTINCT predicate, which serves as a convenient, NULL-safe <reference id="comparison-predicate" title="comparison predicate"/>. With the DISTINCT predicate, the following truth table can be assumed:
    -									</p>
    -									<ul>
    -										<li>[ANY] IS DISTINCT FROM NULL yields TRUE</li>
    -										<li>[ANY] IS NOT DISTINCT FROM NULL yields FALSE</li>
    -										<li>NULL IS DISTINCT FROM NULL yields FALSE</li>
    -										<li>NULL IS NOT DISTINCT FROM NULL yields TRUE</li>
    -									</ul>
    -									<p>
    -										For instance, you can compare two fields for distinctness, ignoring the fact that any of the two could be NULL, which would lead to funny results. This is supported by jOOQ as such:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[TITLE IS DISTINCT FROM SUB_TITLE
    -TITLE IS NOT DISTINCT FROM SUB_TITLE]]></sql><java><![CDATA[BOOK.TITLE.isDistinctFrom(BOOK.SUB_TITLE)
    -BOOK.TITLE.isNotDistinctFrom(BOOK.SUB_TITLE)]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										If your database does not natively support the DISTINCT predicate, jOOQ simulates it with an equivalent <reference id="case-expressions" title="CASE expression"/>, modelling the above truth table:
    -									</p>
    -	
    -</html><code-pair>								
    -<sql><![CDATA[-- [A] IS DISTINCT FROM [B] 
    -CASE WHEN [A] IS     NULL AND [B] IS     NULL THEN FALSE
    -     WHEN [A] IS     NULL AND [B] IS NOT NULL THEN TRUE
    -     WHEN [A] IS NOT NULL AND [B] IS     NULL THEN TRUE
    -     WHEN [A] =               [B]             THEN FALSE
    -     ELSE                                          TRUE
    -END
    -]]></sql><sql><![CDATA[-- [A] IS NOT DISTINCT FROM [B] 
    -CASE WHEN [A] IS     NULL AND [B] IS     NULL THEN TRUE
    -     WHEN [A] IS     NULL AND [B] IS NOT NULL THEN FALSE
    -     WHEN [A] IS NOT NULL AND [B] IS     NULL THEN FALSE
    -     WHEN [A] =               [B]             THEN TRUE
    -     ELSE                                          FALSE
    -END
    -]]></sql>
    -</code-pair><html>							
    -								</html></content>
    -							</section>
    -
    -						    <section id="between-predicate">
    -							    <title>BETWEEN predicate</title>
    -								<content><html>
    -									<p>
    -										The BETWEEN predicate can be seen as syntactic sugar for a pair of <reference id="comparison-predicate" title="comparison predicates"/>. According to the SQL standard, the following two predicates are equivalent:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[[A] BETWEEN [B] AND [C]]]></sql><sql><![CDATA[[A] >= [B] AND [A] <= [C]]]></sql>
    -</code-pair><html>
    -
    -									<p>
    -										Note the inclusiveness of range boundaries in the definition of the BETWEEN predicate. Intuitively, this is supported in jOOQ as such:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[PUBLISHED_IN     BETWEEN 1920 AND 1940
    -PUBLISHED_IN NOT BETWEEN 1920 AND 1940]]></sql><java><![CDATA[BOOK.PUBLISHED_IN.between(1920, 1940)
    -BOOK.PUBLISHED_IN.notBetween(1920, 1940)]]></java>
    -</code-pair><html>
    -
    -									<h3>BETWEEN SYMMETRIC</h3>
    -									<p>
    -										The SQL standard defines the SYMMETRIC keyword to be used along with BETWEEN to indicate that you do not care which bound of the range is larger than the other. A database system should simply swap range bounds, in case the first bound is greater than the second one. jOOQ supports this keyword as well, simulating it if necessary.
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[PUBLISHED_IN     BETWEEN SYMMETRIC 1940 AND 1920
    -PUBLISHED_IN NOT BETWEEN SYMMETRIC 1940 AND 1920]]></sql><java><![CDATA[BOOK.PUBLISHED_IN.betweenSymmetric(1940, 1920)
    -BOOK.PUBLISHED_IN.notBetweenSymmetric(1940, 1920)]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										The simulation is done trivially:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[[A] BETWEEN SYMMETRIC [B] AND [C]]]></sql><sql><![CDATA[([A] BETWEEN [B] AND [C]) OR ([A] BETWEEN [C] AND [B])]]></sql>
    -</code-pair><html>
    -
    -								</html></content>
    -							</section>
    -
    -						    <section id="like-predicate">
    -							    <title>LIKE predicate</title>
    -								<content><html>
    -									<p>
    -										LIKE predicates are popular for simple wildcard-enabled pattern matching. Supported wildcards in all SQL databases are:
    -									</p>
    -									<ul>
    -										<li><strong>_</strong>: (single-character wildcard)</li>
    -										<li><strong>%</strong>: (multi-character wildcard)</li>
    -									</ul>
    -									<p>
    -										With jOOQ, the LIKE predicate can be created from any <reference id="column-expressions" title="column expression"/> as such:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[TITLE     LIKE '%abc%'
    -TITLE NOT LIKE '%abc%']]></sql><java><![CDATA[BOOK.TITLE.like("%abc%")
    -BOOK.TITLE.notLike("%abc%")]]></java>
    -</code-pair><html>
    -									
    -									<h3>Escaping operands with the LIKE predicate</h3>
    -									<p>
    -										Often, your pattern may contain any of the wildcard characters "_" and "%", in case of which you may want to escape them. jOOQ does not automatically escape patterns in like() and notLike() methods. Instead, you can explicitly define an escape character as such:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[TITLE     LIKE '%The !%-Sign Book%' ESCAPE '!'
    -TITLE NOT LIKE '%The !%-Sign Book%' ESCAPE '!']]></sql><java><![CDATA[BOOK.TITLE.like("%The !%-Sign Book%", '!')
    -BOOK.TITLE.notLike("%The !%-Sign Book%", '!')]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										In the above predicate expressions, the exclamation mark character is passed as the escape character to escape wildcard characters "!_" and "!%", as well as to escape the escape character itself: "!!"
    -									</p>
    -									<p>
    -										Please refer to your database manual for more details about escaping patterns with the LIKE predicate.
    -									</p>
    -									
    -									<h3>jOOQ's convenience methods using the LIKE predicate</h3>
    -									<p>
    -										In addition to the above, jOOQ provides a few convenience methods for common operations performed on strings using the LIKE predicate. Typical operations are "contains predicates", "starts with predicates", "ends with predicates", etc. Here is the full convenience API wrapping LIKE predicates:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[-- case insensitivity
    -LOWER(TITLE) LIKE LOWER('%abc%')
    -LOWER(TITLE) NOT LIKE LOWER('%abc%')
    -
    --- contains and similar methods
    -TITLE LIKE '%' || 'abc' || '%'
    -TITLE LIKE 'abc' || '%'
    -TITLE LIKE '%' || 'abc']]></sql><java><![CDATA[// case insensitivity
    -BOOK.TITLE.likeIgnoreCase("%abc%")
    -BOOK.TITLE.notLikeIgnoreCase("%abc%")
    -
    -// contains and similar methods
    -BOOK.TITLE.contains("abc")
    -BOOK.TITLE.startsWith("abc")
    -BOOK.TITLE.endsWith("abc")]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										Note, that jOOQ escapes % and _ characters in value in some of the above predicate implementations. For simplicity, this has been omitted in this manual.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -						    <section id="in-predicate">
    -							    <title>IN predicate</title>
    -								<content><html>
    -									<p>
    -										In SQL, apart from comparing a value against several values, the IN predicate can be used to create semi-joins or anti-joins. jOOQ knows the following methods on the <reference class="org.jooq.Field" /> interface, to construct such IN predicates:
    -									</p>
    -
    -</html><java><![CDATA[in(Collection<T>)    // Construct an IN predicate from a collection of bind values
    -in(T...)             // Construct an IN predicate from bind values
    -in(Field<?>...)      // Construct an IN predicate from column expressions
    -in(Select<?>)        // Construct an IN predicate from a subselect
    -notIn(Collection<T>) // Construct a NOT IN predicate from a collection of bind values
    -notIn(T...)          // Construct a NOT IN predicate from bind values
    -notIn(Field<?>...)   // Construct a NOT IN predicate from column expressions
    -notIn(Select<?>)     // Construct a NOT IN predicate from a subselect]]></java><html>
    -
    -									<p>
    -										A sample IN predicate might look like this:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[TITLE     IN ('Animal Farm', '1984')
    -TITLE NOT IN ('Animal Farm', '1984')]]></sql><java><![CDATA[BOOK.TITLE.in("Animal Farm", "1984")
    -BOOK.TITLE.notIn("Animal Farm", "1984")]]></java>
    -</code-pair><html>
    -
    -									
    -									<h3>NOT IN and NULL values</h3>
    -									<p>
    -										Beware that you should probably not have any NULL values in the right hand side of a NOT IN predicate, as the whole expression would evaluate to NULL, which is rarely desired. This can be shown informally using the following reasoning:
    -									</p>
    -									
    -</html><sql>-- The following conditional expressions are formally or informally equivalent
    -A NOT IN (B, C)
    -A != ANY(B, C)
    -A != B AND A != C
    -
    --- Substitute C for NULL, you'll get
    -A NOT IN (B, NULL)   -- Substitute C for NULL
    -A != B AND A != NULL -- From the above rules
    -A != B AND NULL      -- [ANY] != NULL yields NULL
    -NULL                 -- [ANY] AND NULL yields NULL</sql><html>
    -
    -									<p>
    -										A good way to prevent this from happening is to use the <reference id="exists-predicate" title="EXISTS predicate"/> for anti-joins, which is NULL-value insensitive. See the manual's section about <reference id="conditional-expressions" title="conditional expressions"/> to see a boolean truth table.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -						    <section id="exists-predicate">
    -							    <title>EXISTS predicate</title>
    -								<content><html>
    -									<p>
    -										Slightly less intuitive, yet more powerful than the previously discussed <reference id="in-predicate" title="IN predicate"/> is the EXISTS predicate, that can be used to form semi-joins or anti-joins. With jOOQ, the EXISTS predicate can be formed in various ways:
    -									</p>
    -									<ul>
    -										<li>From the <reference id="factory" title="Factory"/>, using static methods. This is probably the most used case</li>
    -										<li>From a <reference id="conditional-expressions" title="conditional expression"/> using <reference id="boolean-operators" title="convenience methods attached to boolean operators"/></li>
    -										<li>From a <reference id="select-statement" title="SELECT statement"/> using <reference id="where-clause" title="convenience methods attached to the where clause"/>, and from other clauses</li>
    -									</ul>
    -									
    -									<p>
    -										An example of an EXISTS predicate can be seen here:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[    EXISTS (SELECT 1 FROM BOOK 
    -            WHERE AUTHOR_ID = 3)
    -NOT EXISTS (SELECT 1 FROM BOOK 
    -            WHERE AUTHOR_ID = 3)]]></sql><java><![CDATA[   exists(create.selectOne().from(BOOK)
    -                .where(BOOK.AUTHOR_ID.equal(3)));
    -notExists(create.selectOne().from(BOOK)
    -                .where(BOOK.AUTHOR_ID.equal(3)));]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										Note that in SQL, the projection of a subselect in an EXISTS predicate is irrelevant. To help you write queries like the above, you can use jOOQ's selectZero() or selectOne() <reference id="factory" title="Factory"/> methods
    -									</p>
    -									
    -									<h3>Performance of IN vs. EXISTS</h3>
    -									<p>
    -										In theory, the two types of predicates can perform equally well. If your database system ships with a sophisticated cost-based optimiser, it will be able to transform one predicate into the other, if you have all necessary constraints set (e.g. referential constraints, not null constraints). However, in reality, performance between the two might differ substantially. An interesting blog post investigating this topic on the MySQL database can be seen here:<br/>
    -										<a href="http://blog.jooq.org/2012/07/27/not-in-vs-not-exists-vs-left-join-is-null-mysql/">http://blog.jooq.org/2012/07/27/not-in-vs-not-exists-vs-left-join-is-null-mysql/</a>
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="plain-sql">
    -						<title>Plain SQL</title>
    -						<content><html>
    -							<p>
    -								A DSL is a nice thing to have, it feels "fluent" and "natural", especially if it models a well-known language, such as SQL. But a DSL is always expressed in a host language (Java in this case), which was not made for exactly the same purposes as its hosted DSL. If it were, then jOOQ would be implemented on a compiler-level, similar to LINQ in .NET. But it's not, and so, the DSL is limited by language constraints of its host language. We have seen many functionalities where the DSL becomes a bit verbose. This can be especially true for:
    -							</p>
    -							<ul>
    -								<li><reference id="aliased-columns" title="aliasing"/></li>
    -								<li><reference id="nested-selects" title="nested selects"/></li>
    -								<li><reference id="arithmetic-expressions" title="arithmetic expressions"/></li>
    -								<li><reference id="cast-expressions" title="casting"/></li>
    -							</ul>
    -							
    -							<p>
    -								You'll probably find other examples. If verbosity scares you off, don't worry. The verbose use-cases for jOOQ are rather rare, and when they come up, you do have an option. Just write SQL the way you're used to!
    -							</p>
    -							<p>
    -								jOOQ allows you to embed SQL as a String into any supported <reference id="sql-statements" title="statement"/> in these contexts:
    -							</p>
    -							<ul>
    -								<li>Plain SQL as a <reference id="conditional-expressions" title="conditional expression"/></li>
    -								<li>Plain SQL as a <reference id="column-expressions" title="column expression"/></li>
    -								<li>Plain SQL as a <reference id="column-expressions" title="function"/></li>
    -								<li>Plain SQL as a <reference id="table-expressions" title="table expression"/></li>
    -								<li>Plain SQL as a <reference id="query-vs-resultquery" title="query"/></li>
    -							</ul>
    -
    -							<h3>The Factory plain SQL API</h3>
    -							<p>
    -								Plain SQL API methods are usually overloaded in three ways. Let's look at the <code>condition</code> query part constructor:
    -							</p>
    -</html><java><![CDATA[// Construct a condition without bind values
    -// Example: condition("a = b")
    -Condition condition(String sql);
    -
    -// Construct a condition with bind values
    -// Example: condition("a = ?", 1);
    -Condition condition(String sql, Object... bindings);
    -
    -// Construct a condition taking other jOOQ object arguments
    -// Example: condition("a = {0}", val(1));
    -Condition condition(String sql, QueryPart... parts);]]></java><html>
    -							
    -							<p>
    -								Please refer to the <reference class="org.jooq.impl.Factory"/> Javadoc for more details. The following is a more complete listing of plain SQL construction methods from the Factory:
    -							</p>
    -
    -</html><java><![CDATA[// A condition
    -Condition condition(String sql);
    -Condition condition(String sql, Object... bindings);
    -Condition condition(String sql, QueryPart... parts);
    -
    -// A field with an unknown data type
    -Field<Object> field(String sql);
    -Field<Object> field(String sql, Object... bindings);
    -Field<Object> field(String sql, QueryPart... parts);
    -
    -// A field with a known data type
    -<T> Field<T> field(String sql, Class<T> type);
    -<T> Field<T> field(String sql, Class<T> type, Object... bindings);
    -<T> Field<T> field(String sql, Class<T> type, QueryPart... parts);
    -<T> Field<T> field(String sql, DataType<T> type);
    -<T> Field<T> field(String sql, DataType<T> type, Object... bindings);
    -<T> Field<T> field(String sql, DataType<T> type, QueryPart... parts);
    -
    -// A field with a known name (properly escaped)
    -Field<Object> fieldByName(String... fieldName);
    -<T> Field<T>  fieldByName(Class<T> type, String... fieldName);
    -<T> Field<T>  fieldByName(DataType<T> type, String... fieldName)
    -
    -// A function
    -<T> Field<T> function(String name, Class<T> type, Field<?>... arguments);
    -<T> Field<T> function(String name, DataType<T> type, Field<?>... arguments);
    -
    -// A table
    -Table<?> table(String sql);
    -Table<?> table(String sql, Object... bindings);
    -Table<?> table(String sql, QueryPart... parts);
    -
    -// A table with a known name (properly escaped)
    -Table<Record> tableByName(String... fieldName);
    -
    -// A query without results (update, insert, etc)
    -Query query(String sql);
    -Query query(String sql, Object... bindings);
    -Query query(String sql, QueryPart... parts);
    -
    -// A query with results
    -ResultQuery<Record> resultQuery(String sql);
    -ResultQuery<Record> resultQuery(String sql, Object... bindings);
    -ResultQuery<Record> resultQuery(String sql, QueryPart... parts);
    -
    -// A query with results. This is the same as resultQuery(...).fetch();
    -Result<Record> fetch(String sql);
    -Result<Record> fetch(String sql, Object... bindings);
    -Result<Record> fetch(String sql, QueryPart... parts);]]></java><html>
    -
    -							<p>
    -								Apart from the general factory methods, plain SQL is also available in various other contexts. For instance, when adding a .where("a = b") clause to a query. Hence, there exist several convenience methods where plain SQL can be inserted usefully. This is an example displaying all various use-cases in one single query:
    -							</p>
    -							
    -</html><java><![CDATA[// You can use your table aliases in plain SQL fields
    -// As long as that will produce syntactically correct SQL
    -Field<?> LAST_NAME    = create.field("a.LAST_NAME");
    -
    -// You can alias your plain SQL fields
    -Field<?> COUNT1       = create.field("count(*) x");
    -
    -// If you know a reasonable Java type for your field, you
    -// can also provide jOOQ with that type
    -Field<Integer> COUNT2 = create.field("count(*) y", Integer.class);
    -
    -       // Use plain SQL as select fields
    -create.select(LAST_NAME, COUNT1, COUNT2)
    -
    -       // Use plain SQL as aliased tables (be aware of syntax!)
    -      .from("author a")
    -      .join("book b")
    -
    -       // Use plain SQL for conditions both in JOIN and WHERE clauses
    -      .on("a.id = b.author_id")
    -
    -       // Bind a variable in plain SQL
    -      .where("b.title != ?", "Brida")
    -
    -       // Use plain SQL again as fields in GROUP BY and ORDER BY clauses
    -      .groupBy(LAST_NAME)
    -      .orderBy(LAST_NAME);]]></java><html>
    -
    -							<h3>Important things to note about plain SQL!</h3>
    -							<p>
    -								There are some important things to keep in mind when using plain SQL:
    -							</p>
    -							<ul>
    -								<li>jOOQ doesn't know what you're doing. You're on your own again!</li>
    -								<li>You have to provide something that will be syntactically correct. If it's not, then jOOQ won't know. Only your JDBC driver or your RDBMS will detect the syntax error.</li>
    -								<li>You have to provide consistency when you use variable binding. The number of ? must match the number of variables</li>
    -								<li>Your SQL is inserted into jOOQ queries without further checks. Hence, jOOQ can't prevent SQL injection. </li>
    -							</ul>
    -						</html></content>
    -					</section>
    -
    -					<section id="bind-values">
    -					    <title>Bind values and parameters</title>
    -						<content><html>
    -							<p>
    -								Bind values are used in SQL / JDBC for various reasons. Among the most obvious ones are:
    -							</p>
    -							<ul>
    -								<li>
    -									Protection against SQL injection. Instead of inlining values possibly originating from user input, you bind those values to your prepared statement and let the JDBC driver / database take care of handling security aspects.
    -								</li>
    -								<li>
    -									Increased speed. Advanced databases such as Oracle can keep execution plans of similar queries in a dedicated cache to prevent hard-parsing your query again and again. In many cases, the actual value of a bind variable does not influence the execution plan, hence it can be reused. Preparing a statement will thus be faster
    -								</li>
    -								<li>
    -									On a JDBC level, you can also reuse the SQL string and prepared statement object instead of constructing it again, as you can bind new values to the prepared statement. jOOQ currently does not cache prepared statements, internally.
    -								</li>
    -							</ul>
    -							
    -							<p>
    -								The following sections explain how you can introduce bind values in jOOQ, and how you can control the way they are rendered and bound to SQL.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -						    <section id="indexed-parameters">
    -							    <title>Indexed parameters</title>
    -								<content><html>
    -									<p>
    -										JDBC only knows indexed bind values. A typical example for using bind values with JDBC is this:
    -									</p>
    -									
    -</html><java><![CDATA[PreparedStatement stmt = connection.prepareStatement("SELECT * FROM BOOK WHERE ID = ? AND TITLE = ?");
    -
    -// bind values to the above statement for appropriate indexes 
    -stmt.setInt(1, 5);
    -stmt.setString(2, "Animal Farm");
    -stmm.executeQuery();]]></java><html>
    -
    -									<p>
    -										With dynamic SQL, keeping track of the number of question marks and their corresponding index may turn out to be hard. jOOQ abstracts this and lets you provide the bind value right where it is needed. A trivial example is this:
    -									</p>
    -									
    -</html><java><![CDATA[create.select().from(BOOK).where(BOOK.ID.equal(5)).and(BOOK.TITLE.equal("Animal Farm"));
    -
    -// This notation is in fact a short form for the equivalent:
    -create.select().from(BOOK).where(BOOK.ID.equal(val(5))).and(BOOK.TITLE.equal(val("Animal Farm")));]]></java><html>
    -
    -									<p>
    -										Note the using of <reference class="org.jooq.impl.Factory" anchor="#val(java.lang.Object)" title="Factory.val()"/> to explicitly create an indexed bind value. You don't have to worry about that index. When the query is <reference id="sql-rendering" title="rendered"/>, each bind value will render a question mark. When the query <reference id="variable-binding" title="binds its variables"/>, each bind value will generate the appropriate bind value index. 
    -									</p>
    -									
    -									<h3>Extract bind values from a query</h3>
    -									<p>
    -										Should you decide to run the above query outside of jOOQ, using your own <reference class="java.sql.PreparedStatement"/>, you can do so as follows:
    -									</p>
    -									
    -</html><java><![CDATA[Select<?> select = create.select().from(BOOK).where(BOOK.ID.equal(5)).and(BOOK.TITLE.equal("Animal Farm"));
    -
    -// Render the SQL statement:
    -String sql = select.getSQL();
    -assertEquals("SELECT * FROM BOOK WHERE ID = ? AND TITLE = ?", sql);
    -
    -// Get the bind values:
    -List<Object> values = select.getBindValues();
    -assertEquals(2, values.size());
    -assertEquals(5, values.get(0));
    -assertEquals("Animal Farm", values.get(1));]]></java><html>
    -
    -									<p>
    -										You can also extract specific bind values by index from a query, if you wish to modify their underlying value after creating a query. This can be achieved as such:
    -									</p>
    -
    -</html><java><![CDATA[Select<?> select = create.select().from(BOOK).where(BOOK.ID.equal(5)).and(BOOK.TITLE.equal("Animal Farm"));
    -Param<?> param = select.getParam("2");
    -
    -// You could now modify the Query's underlying bind value:
    -if ("Animal Farm".equals(param.getValue())) {
    -    param.setConverted("1984");
    -}]]></java><html>
    -
    -									<p>
    -										For more details about jOOQ's internals, see the manual's section about <reference id="queryparts" title="QueryParts"/>.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -						    <section id="named-parameters">
    -							    <title>Named parameters</title>
    -								<content><html>
    -									<p>
    -										Some SQL access abstractions that are built on top of JDBC, or some that bypass JDBC may support named parameters. jOOQ allows you to give names to your parameters as well, although those names are not rendered to SQL strings by default. Here is an example of how to create named parameters using the <reference class="org.jooq.Param"/> type:
    -									</p>
    -
    -</html><java><![CDATA[// Create a query with a named parameter. You can then use that name for accessing the parameter again
    -Query query1 = create.select().from(AUTHOR).where(LAST_NAME.equal(param("lastName", "Poe")));
    -Param<?> param1 = query.getParam("lastName");
    -
    -// Or, keep a reference to the typed parameter in order not to lose the <T> type information:
    -Param<String> param2 = param("lastName", "Poe");
    -Query query2 = create.select().from(AUTHOR).where(LAST_NAME.equal(param2));
    -
    -// You can now change the bind value directly on the Param reference:
    -param2.setValue("Orwell");]]></java><html>
    -
    -									<p>
    -										The <reference class="org.jooq.Query"/> interface also allows for setting new bind values directly, without accessing the Param type:
    -									</p>
    -
    -</html><java><![CDATA[Query query1 = create.select().from(AUTHOR).where(LAST_NAME.equal("Poe"));
    -query1.bind(1, "Orwell");
    -
    -// Or, with named parameters
    -Query query2 = create.select().from(AUTHOR).where(LAST_NAME.equal(param("lastName", "Poe")));
    -query2.bind("lastName", "Orwell");]]></java><html>
    -
    -									<p>
    -										In order to actually render named parameter names in generated SQL, use the <reference class="org.jooq.impl.Factory" anchor="#renderNamedParams(org.jooq.QueryPart)" title="Factory.renderNamedParams()"/> method:
    -									</p>
    -
    -</html><code-pair>
    -<java><![CDATA[create.renderNamedParams(
    -    create.select()
    -          .from(AUTHOR)
    -          .where(LAST_NAME.equal(
    -                 param("lastName", "Poe"))));]]></java><sql><![CDATA[-- The named bind variable can be rendered
    -
    -SELECT *
    -FROM AUTHOR
    -WHERE LAST_NAME = :lastName]]></sql>
    -</code-pair><html>
    -								</html></content>
    -							</section>
    -
    -						    <section id="inlined-parameters">
    -							    <title>Inlined parameters</title>
    -								<content><html>
    -									<p>
    -										Sometimes, you may wish to avoid rendering bind variables while still using custom values in SQL. jOOQ refers to that as "inlined" bind values. When bind values are inlined, they render the actual value in SQL rather than a JDBC question mark. Bind value inlining can be achieved in two ways:
    -									</p>
    -									<ul>
    -										<li>
    -											By using the <reference id="custom-settings" title="Settings"/> and setting the <reference class="org.jooq.conf.StatementType"/> to STATIC_STATEMENT. This will inline all bind values for SQL statements rendered from such a Factory.
    -										</li>
    -										<li>
    -											By using <reference class="org.jooq.impl.Factory" anchor="#inline(java.lang.Object)" title="Factory.inline()"/> methods.
    -										</li>
    -									</ul>
    -									<p>
    -										In both cases, your inlined bind values will be properly escaped to avoid SQL syntax errors and SQL injection. Some examples:
    -									</p>
    -
    -</html><java><![CDATA[
    -// Use dedicated calls to inline() in order to specify
    -// single bind values to be rendered as inline values
    -// --------------------------------------------------
    -create.select()
    -      .from(AUTHOR)
    -      .where(LAST_NAME.equal(inline("Poe")));
    -
    -// Or render the whole query with inlined values
    -// --------------------------------------------------
    -Settings settings = new Settings()
    -    .withStatementType(StatementType.STATIC_STATEMENT);
    -
    -// Add the settings to the factory
    -Factory create = new Factory(connection, SQLDialect.ORACLE, settings);
    -
    -// Run queries that omit rendering schema names
    -create.select()
    -      .from(AUTHOR)
    -      .where(LAST_NAME.equal("Poe"));]]></java></content>
    -							</section>
    -
    -						    <section id="sql-injection-and-plain-sql-queryparts">
    -							    <title>SQL injection and plain SQL QueryParts</title>
    -								<content><html>
    -									<p>
    -										Special care needs to be taken when using <reference id="plain-sql" title="plain SQL QueryParts"/>. While jOOQ's API allows you to specify bind values for use with plain SQL, you're not forced to do that. For instance, both of the following queries will lead to the same, valid result:
    -									</p>
    -									
    -</html><java><![CDATA[// This query will use bind values, internally.
    -create.fetch("SELECT * FROM BOOK WHERE ID = ? AND TITLE = ?", 5 "Animal Farm");
    -
    -// This query will not use bind values, internally.
    -create.fetch("SELECT * FROM BOOK WHERE ID = 5 AND TITLE = 'Animal Farm'");]]></java><html>
    -
    -									<p>
    -										All methods in the jOOQ API that allow for plain (unescaped, untreated) SQL contain a warning message in their relevant Javadoc, to remind you of the risk of SQL injection in what is otherwise a SQL-injection-safe API.
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="queryparts">
    -					    <title>QueryParts</title>
    -						<content><html>
    -							<p>
    -								A <reference class="org.jooq.Query" /> and all its contained objects is a <reference class="org.jooq.QueryPart" />. QueryParts essentially provide this functionality:
    -							</p>
    -							<ul>
    -								<li>they can <reference id="sql-rendering" title="render SQL"/> using the <reference class="org.jooq.QueryPartInternal" anchor="#toSQL(org.jooq.RenderContext)" title="toSQL(RenderContext)"/> method</li>
    -								<li>they can <reference id="variable-binding" title="bind variables"/> using the <reference class="org.jooq.QueryPartInternal" anchor="#bind(org.jooq.BindContext)" title="bind(BindContext)"/> method</li>
    -							</ul>
    -
    -							<p>
    -								Both of these methods are contained in jOOQ's internal API's <reference class="org.jooq.QueryPartInternal"/>, which is internally implemented by every QueryPart.
    -							</p>
    -
    -							<p>
    -								The following sections explain some more details about <reference id="sql-rendering" title="SQL rendering"/> and <reference id="variable-binding" title="variable binding"/>, as well as other implementation details about QueryParts in general.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -						    <section id="sql-rendering">
    -							    <title>SQL rendering</title>
    -								<content><html>
    -									<p>
    -										Every <reference class="org.jooq.QueryPart"/> must implement the <reference class="org.jooq.QueryPartInternal" anchor="#toSQL(org.jooq.RenderContext)" title="toSQL(RenderContext)"/> method to render its SQL string to a <reference class="org.jooq.RenderContext"/>. This RenderContext has two purposes:
    -									</p>
    -									<ul>
    -										<li>It provides some information about the "state" of SQL rendering.</li>
    -										<li>It provides a common API for constructing SQL strings on the context's internal <reference class="java.lang.StringBuilder"/></li>
    -									</ul>
    -									<p>
    -										An overview of the <reference class="org.jooq.RenderContext"/> API is given here:
    -									</p>
    -
    -</html><java><![CDATA[// These methods are useful for generating unique aliases within a RenderContext (and thus within a Query)
    -String peekAlias();
    -String nextAlias();
    -
    -// These methods return rendered SQL
    -String render();
    -String render(QueryPart part);
    -
    -// These methods allow for fluent appending of SQL to the RenderContext's internal StringBuilder
    -RenderContext keyword(String keyword);
    -RenderContext literal(String literal);
    -RenderContext sql(String sql);
    -RenderContext sql(char sql);
    -RenderContext sql(int sql);
    -RenderContext sql(QueryPart part);
    -
    -// These methods allow for controlling formatting of SQL, if the relevant Setting is active
    -RenderContext formatNewLine();
    -RenderContext formatSeparator();
    -RenderContext formatIndentStart();
    -RenderContext formatIndentStart(int indent);
    -RenderContext formatIndentLockStart();
    -RenderContext formatIndentEnd();
    -RenderContext formatIndentEnd(int indent);
    -RenderContext formatIndentLockEnd();
    -
    -// These methods control the RenderContext's internal state
    -boolean       inline();
    -RenderContext inline(boolean inline);
    -boolean       qualify();
    -RenderContext qualify(boolean qualify);
    -boolean       namedParams();
    -RenderContext namedParams(boolean renderNamedParams);
    -CastMode      castMode();
    -RenderContext castMode(CastMode mode);
    -Boolean       cast();
    -RenderContext castModeSome(SQLDialect... dialects);]]></java><html>
    -
    -									<p>
    -										The following additional methods are inherited from a common <reference class="org.jooq.Context"/>, which is shared among <reference class="org.jooq.RenderContext"/> and <reference class="org.jooq.BindContext"/>:
    -									</p>
    -
    -</html><java><![CDATA[// These methods indicate whether fields or tables are being declared (MY_TABLE AS MY_ALIAS) or referenced (MY_ALIAS)
    -boolean declareFields();
    -Context declareFields(boolean declareFields);
    -boolean declareTables();
    -Context declareTables(boolean declareTables);
    -
    -// These methods indicate whether a top-level query is being rendered, or a subquery
    -boolean subquery();
    -Context subquery(boolean subquery);
    -
    -// These methods provide the bind value indices within the scope of the whole Context (and thus of the whole Query)
    -int nextIndex();
    -int peekIndex();]]></java><html>
    -
    -									<h3>An example of rendering SQL</h3>
    -								   	<p>
    -								   		A simple example can be provided by checking out jOOQ's internal representation of a (simplified) <reference id="comparison-predicate" title="CompareCondition"/>. It is used for any <reference class="org.jooq.Condition"/> comparing two fields as for example the AUTHOR.ID = BOOK.AUTHOR_ID condition here:
    -							   		</p>
    -							   		
    -</html><sql>-- [...]
    -FROM AUTHOR
    -JOIN BOOK ON AUTHOR.ID = BOOK.AUTHOR_ID
    --- [...]</sql><html>
    -
    -									<p>
    -										This is how jOOQ renders such a condition:
    -									</p>
    -
    -</html><java><![CDATA[@Override
    -public final void toSQL(RenderContext context) {
    -    // The CompareCondition delegates rendering of the Fields to the Fields
    -    // themselves and connects them using the Condition's comparator operator:
    -    context.sql(field1)
    -           .sql(" ");
    -
    -    // If the second field is null, some convenience behaviour can be
    -    // implemented here
    -    if (field2.isNullLiteral()) {
    -        switch (comparator) {
    -            case EQUALS:
    -                context.sql("is null");
    -                break;
    -
    -            case NOT_EQUALS:
    -                context.sql("is not null");
    -                break;
    -
    -            default:
    -                throw new IllegalStateException("Cannot compare null with " + comparator);
    -        }
    -    }
    -
    -    // By default, also delegate the right hand side's SQL rendering to the
    -    // underlying field
    -    else {
    -        context.sql(comparator.toSQL())
    -               .sql(" ")
    -               .sql(field2);
    -    }
    -}]]></java><html>
    -
    -									<p>
    -										See the manual's sections about <reference id="custom-queryparts" title="custom QueryParts"/> and <reference id="plain-sql-queryparts" title="plain SQL QueryParts"/> to learn about how to write your own query parts in order to extend jOOQ.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -						    <section id="variable-binding">
    -							    <title>Variable binding</title>
    -								<content><html>
    -									<p>
    -										Every <reference class="org.jooq.QueryPart"/> must implement the <reference class="org.jooq.QueryPartInternal" anchor="#bind(org.jooq.BindContext)" title="bind(BindContext)"/> method. This BindContext has two purposes:
    -									</p>
    -									<ul>
    -										<li>It provides some information about the "state" of the variable binding in process.</li>
    -										<li>It provides a common API for binding values to the context's internal <reference class="java.sql.PreparedStatement"/></li>
    -									</ul>
    -									<p>
    -										An overview of the <reference class="org.jooq.RenderContext"/> API is given here:
    -									</p>
    -
    -</html><java><![CDATA[// This method provides access to the PreparedStatement to which bind values are bound
    -PreparedStatement statement();
    -
    -// These methods provide convenience to delegate variable binding
    -BindContext bind(QueryPart part) throws DataAccessException;
    -BindContext bind(Collection<? extends QueryPart> parts) throws DataAccessException;
    -BindContext bind(QueryPart[] parts) throws DataAccessException;
    -
    -// These methods perform the actual variable binding
    -BindContext bindValue(Object value, Class<?> type) throws DataAccessException;
    -BindContext bindValues(Object... values) throws DataAccessException;]]></java><html>
    -
    -									<p>
    -										Some additional methods are inherited from a common <reference class="org.jooq.Context"/>, which is shared among <reference class="org.jooq.RenderContext"/> and <reference class="org.jooq.BindContext"/>. Details are documented in the previous chapter about <reference id="sql-rendering" title="SQL rendering"/>
    -									</p>
    -
    -									<h3>An example of binding values to SQL</h3>
    -								   	<p>
    -								   		A simple example can be provided by checking out jOOQ's internal representation of a (simplified) <reference id="comparison-predicate" title="CompareCondition"/>. It is used for any <reference class="org.jooq.Condition"/> comparing two fields as for example the AUTHOR.ID = BOOK.AUTHOR_ID condition here:
    -							   		</p>
    -							   		
    -</html><sql>-- [...]
    -WHERE AUTHOR.ID = ?
    --- [...]</sql><html>
    -
    -									<p>
    -										This is how jOOQ binds values on such a condition:
    -									</p>
    -</html><java><![CDATA[@Override
    -public final void bind(BindContext context) throws DataAccessException {
    -    // The CompareCondition itself does not bind any variables.
    -    // But the two fields involved in the condition might do so...
    -    context.bind(field1).bind(field2);
    -}]]></java><html>
    -
    -									<p>
    -										See the manual's sections about <reference id="custom-queryparts" title="custom QueryParts"/> and <reference id="plain-sql-queryparts" title="plain SQL QueryParts"/> to learn about how to write your own query parts in order to extend jOOQ.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -						    <section id="custom-queryparts">
    -							    <title>Extend jOOQ with custom types</title>
    -								<content><html>
    -									<p>
    -										If a SQL clause is too complex to express with jOOQ, you can extend either one of the following types for use directly in a jOOQ query:
    -									</p>
    -									
    -</html><java><![CDATA[public abstract class CustomField<T> extends AbstractField<T> {}
    -public abstract class CustomCondition extends AbstractCondition {}
    -public abstract class CustomTable<R extends TableRecord<R>> extends TableImpl<R> {}
    -public abstract class CustomRecord<R extends TableRecord<R>> extends TableRecordImpl<R> {}]]></java><html>
    -
    -									<p>
    -										These classes are declared public and covered by jOOQ's integration tests. When you extend these classes, you will have to provide your own implementations for the <reference id="queryparts" title="QueryParts'"/> <reference id="sql-rendering" title="toSQL()"/> and <reference id="variable-binding" title="bind()"/> methods, as discussed before:
    -									</p>
    -									
    -</html><java><![CDATA[// This method must produce valid SQL. If your QueryPart contains other QueryParts, you may delegate SQL generation to them
    -// in the correct order, passing the render context.
    -//
    -// If context.inline() is true, you must inline all bind variables
    -// If context.inline() is false, you must generate ? for your bind variables
    -public void toSQL(RenderContext context);
    -
    -// This method must bind all bind variables to a PreparedStatement. If your QueryPart contains other QueryParts, $
    -// you may delegate variable binding to them in the correct order, passing the bind context.
    -//
    -// Every QueryPart must ensure, that it starts binding its variables at context.nextIndex().
    -public void bind(BindContext context) throws DataAccessException;]]></java><html>
    -
    -									<p>
    -										The above contract may be a bit tricky to understand at first. The best thing is to check out jOOQ source code and have a look at a couple of QueryParts, to see how it's done. Here's an example <reference class="org.jooq.impl.CustomField"/> showing how to create a field multiplying another field by 2
    -									</p>
    -									
    -</html><java><![CDATA[// Create an anonymous CustomField, initialised with BOOK.ID arguments
    -final Field<Integer> IDx2 = new CustomField<Integer>(BOOK.ID.getName(), BOOK.ID.getDataType()) {
    -    @Override
    -    public void toSQL(RenderContext context) {
    -    
    -        // In inline mode, render the multiplication directly
    -        if (context.inline()) {
    -            context.sql(BOOK.ID).sql(" * 2");
    -        }
    -        
    -        // In non-inline mode, render a bind value
    -        else {
    -            context.sql(BOOK.ID).sql(" * ?");
    -        }
    -    }
    -
    -    @Override
    -    public void bind(BindContext context) {
    -        try {
    -        
    -            // Manually bind the value 2
    -            context.statement().setInt(context.nextIndex(), 2);
    -            
    -            // Alternatively, you could also write:
    -            // context.bind(Factory.val(2));
    -        }
    -        catch (SQLException e) {
    -            throw translate(getSQL(), e);
    -        }
    -    }
    -};
    -
    -// Use the above field in a SQL statement:
    -create.select(IDx2).from(BOOK);]]></java></content>
    -							</section>
    -
    -						    <section id="plain-sql-queryparts">
    -							    <title>Plain SQL QueryParts</title>
    -								<content><html>
    -									<p>
    -										If you don't need the integration of rather complex QueryParts into jOOQ, then you might be safer using simple <reference id="plain-sql" title="Plain SQL"/> functionality, where you can provide jOOQ with a simple String representation of your embedded SQL. Plain SQL methods in jOOQ's API come in two flavours. 
    -									</p>
    -									<ul>
    -										<li><strong>method(String, Object...)</strong>: This is a method that accepts a SQL string and a list of bind values that are to be bound to the variables contained in the SQL string</li>
    -										<li><strong>method(String, QueryPart...)</strong>: This is a method that accepts a SQL string and a list of QueryParts that are "injected" at the position of their respective placeholders in the SQL string</li>
    -									</ul>
    -									<p>
    -										The above distinction is best explained using an example:
    -									</p>
    -									
    -</html><java><![CDATA[// Plain SQL using bind values. The value 5 is bound to the first variable, "Animal Farm" to the second variable:
    -create.selectFrom(BOOK).where("BOOK.ID = ? AND TITLE = ?", 5, "Animal Farm");
    -
    -// Plain SQL using placeholders (counting from zero). 
    -// The QueryPart "id" is substituted for the placeholder {0}, the QueryPart "title" for {1}
    -Field<Integer> id   = val(5);
    -Field<String> title = val("Animal Farm");
    -create.selectFrom(BOOK).where("BOOK.ID = {0} AND TITLE = {1}", id, title);]]></java><html>
    -
    -									<p>
    -										The above technique allows for creating rather complex SQL clauses that are currently not supported by jOOQ, without extending any of the <reference id="custom-queryparts" title="custom QueryParts"/> as indicated in the previous chapter.
    -									</p>									
    -								</html></content>
    -							</section>
    -
    -						    <section id="serializability">
    -							    <title>Serializability</title>
    -								<content><html>
    -									<p>
    -										The only transient, non-serializable element in any jOOQ object is the <reference id="factory" title="Factory's"/> underlying <reference class="java.sql.Connection"/>. When you want to execute queries after de-serialisation, or when you want to store/refresh/delete <reference id="crud-with-updatablerecords" title="Updatable Records"/>, you will have to "re-attach" them to a Factory
    -									</p>
    -
    -</html><java><![CDATA[// Deserialise a SELECT statement
    -ObjectInputStream in = new ObjectInputStream(...);
    -Select<?> select = (Select<?>) in.readObject();
    -
    -// This will throw a DetachedException:
    -select.execute();
    -
    -// In order to execute the above select, attach it first
    -Factory create = new Factory(connection, SQLDialect.ORACLE);
    -create.attach(select);]]></java><html>
    -
    -									<h3>Automatically attaching QueryParts</h3>
    -									<p>
    -										Another way of attaching QueryParts automatically, or rather providing them with a new <reference class="java.sql.Connection"/> at will, is to hook into the <reference id="execute-listeners" title="Execute Listener support"/>. More details about this can be found in the manual's chapter about <reference id="execute-listeners" title="ExecuteListeners"/>
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -				</sections>
    -			</section>
    -
    -			<section id="sql-execution">
    -				<title>SQL execution</title>
    -				<content><html>
    -					<p>
    -						In a previous section of the manual, we've seen how jOOQ can be used to <reference id="sql-building" title="build SQL"/> that can be executed with any API including JDBC or ... jOOQ. This section of the manual deals with various means of actually executing SQL with jOOQ.
    -					</p>
    -					
    -					<h3>SQL execution with JDBC</h3>
    -					<p>
    -						JDBC calls executable objects "<reference class="java.sql.Statement"/>". It distinguishes between three types of statements:
    -					</p>
    -					<ul>
    -						<li><reference class="java.sql.Statement"/>, or "static statement": This statement type is used for any arbitrary type of SQL statement. It is particularly useful with <reference id="inlined-parameters" title="inlined parameters"/></li>
    -						<li><reference class="java.sql.PreparedStatement"/>: This statement type is used for any arbitrary type of SQL statement. It is particularly useful with <reference id="indexed-parameters" title="indexed parameters"/> (note that JDBC does not support <reference id="named-parameters" title="named parameters"/>)</li>
    -						<li><reference class="java.sql.CallableStatement"/>: This statement type is used for SQL statements that are "called" rather than "executed". In particular, this includes calls to <reference id="stored-procedures" title="stored procedures"/>. Callable statements can register OUT parameters</li>
    -					</ul>
    -					<p>
    -						Today, the JDBC API may look weird to users being used to object-oriented design. While statements hide a lot of SQL dialect-specific implementation details quite well, they assume a lot of knowledge about the internal state of a statement. For instance, you can use the <reference class="java.sql.PreparedStatement" anchor="#addBatch()" title="PreparedStatement.addBatch()"/> method, to add a the prepared statement being created to an "internal list" of batch statements. Instead of returning a new type, this method forces user to reflect on the prepared statement's internal state or "mode".
    -					</p>
    -					
    -					<h3>jOOQ is wrapping JDBC</h3>
    -					<p>						
    -						These things are abstracted away by jOOQ, which exposes such concepts in a more object-oriented way. For more details about jOOQ's batch query execution, see the manual's section about <reference id="batch-execution" title="batch execution"/>.
    -					</p> 
    -					<p>
    -						The following sections of this manual will show how jOOQ is wrapping JDBC for SQL execution
    -					</p>
    -				</html></content>
    -
    -				<sections>
    -					<section id="comparison-with-jdbc">
    -						<title>Comparison between jOOQ and JDBC</title>
    -						<content><html>
    -							<h3>Similarities with JDBC</h3>
    -							<p>
    -								Even if there are <reference id="query-vs-resultquery" title="two general types of Query"/>, there are a lot of similarities between JDBC and jOOQ. Just to name a few:
    -							</p>
    -							<ul>
    -								<li>Both APIs return the number of affected records in non-result queries. JDBC: <reference class="java.sql.Statement" anchor="#executeUpdate(java.lang.String)" title="Statement.executeUpdate()"/>, jOOQ: <reference class="org.jooq.Query" anchor="#execute()" title="Query.execute()"/></li>
    -								<li>Both APIs return a scrollable result set type from result queries. JDBC: <reference class="java.sql.ResultSet"/>, jOOQ: <reference class="org.jooq.Result"/></li>
    -							</ul>
    -							
    -							<h3>Differences to JDBC</h3>
    -							<p>
    -								Some of the most important differences between JDBC and jOOQ are listed here:
    -							</p>
    -							<ul>
    -								<li><reference id="query-vs-resultquery" title="Query vs. ResultQuery"/>: JDBC does not formally distinguish between queries that can return results, and queries that cannot. The same API is used for both. This greatly reduces the possibility for <reference id="fetching" title="fetching convenience methods"/></li>
    -								<li><reference id="exception-handling" title="Exception handling"/>: While SQL uses the checked <reference class="java.sql.SQLException"/>, jOOQ wraps all exceptions in an unchecked <reference class="org.jooq.exception.DataAccessException"/></li>
    -								<li><reference class="org.jooq.Result"/>: Unlike its JDBC counter-part, this type implements <reference class="java.util.List"/> and is fully loaded into Java memory, freeing resources as early as possible. Just like statements, this means that users don't have to deal with a "weird" internal result set state.</li>
    -								<li><reference class="org.jooq.Cursor"/>: If you want more fine-grained control over how many records are fetched into memory at once, you can still do that using jOOQ's <reference id="lazy-fetching" title="lazy fetching"/> feature</li>
    -								<li><reference id="statement-type" title="Statement type"/>: jOOQ does not formally distinguish between static statements and prepared statements. By default, all statements are prepared statements in jOOQ, internally. Executing a statement as a static statement can be done simply using a <reference id="custom-settings" title="custom settings flag"/></li>
    -							</ul>
    -						</html></content>
    -					</section>
    -				    
    -				    <section id="query-vs-resultquery">
    -						<title>Query vs. ResultQuery</title>
    -						<content><html>
    -							<p>
    -								Unlike JDBC, jOOQ has a lot of knowledge about a SQL query's structure and internals (see the manual's section about <reference id="sql-building" title="SQL building"/>). Hence, jOOQ distinguishes between these two fundamental types of queries. While every <reference class="org.jooq.Query"/> can be executed, only <reference class="org.jooq.ResultQuery"/> can return results (see the manual's section about <reference id="fetching" title="fetching"/> to learn more about fetching results). With plain SQL, the distinction can be made clear most easily:
    -							</p>
    -							
    -</html><java><![CDATA[// Create a Query object and execute it:
    -Query query = create.query("DELETE FROM BOOK");
    -query.execute();
    -
    -// Create a ResultQuery object and execute it, fetching results:
    -ResultQuery<Record> resultQuery = create.resultQuery("SELECT * FROM BOOK");
    -Result<Record> resultQuery.fetch();]]></java></content>
    -					</section>
    -
    -				    <section id="fetching">
    -						<title>Fetching</title>
    -						<content><html>
    -							<p>
    -								Fetching is something that has been completely neglegted by JDBC and also by various other database abstraction libraries. Fetching is much more than just looping or listing records or mapped objects. There are so many ways you may want to fetch data from a database, it should be considered a first-class feature of any database abstraction API. Just to name a few, here are some of jOOQ's fetching modes:
    -							</p>
    -							<ul>
    -								<li><reference id="record-vs-tablerecord" title="Untyped vs. typed fetching"/>: Sometimes you care about the returned type of your records, sometimes (with arbitrary projections) you don't.</li>
    -								<li><reference id="arrays-maps-and-lists" title="Fetching arrays, maps, or lists"/>: Instead of letting you transform your result sets into any more suitable data type, a library should do that work for you.</li>
    -								<li><reference id="recordhandler" title="Fetching through callbacks"/>: This is an entirely different fetching paradigm. With Java 8's lambda expressions, this will become even more powerful.</li>
    -								<li><reference id="pojos" title="Fetching custom POJOs"/>: This is what made Hibernate and JPA so strong. Automatic mapping of tables to custom POJOs.</li>
    -								<li><reference id="lazy-fetching" title="Lazy vs. eager fetching"/>: It should be easy to distinguish these two fetch modes.</li>
    -								<li><reference id="many-fetching" title="Fetching many results"/>: Some databases allow for returning many result sets from a single query. JDBC can handle this but it's very verbose. A list of results should be returned instead.</li>
    -								<li><reference id="later-fetching" title="Fetching data asynchronously"/>: Some queries take too long to execute to wait for their results. You should be able to spawn query execution in a separate process.</li>
    -							</ul>
    -							
    -							<h3>Convenience and how ResultQuery, Result, and Record share API</h3>
    -							<p>
    -								The term "fetch" is always reused in jOOQ when you can fetch data from the database. An <reference class="org.jooq.ResultQuery"/> provides many overloaded means of fetching data:
    -							</p>
    -							
    -							<h3>Various modes of fetching</h3>
    -							<p>
    -								These modes of fetching are also documented in subsequent sections of the manual
    -							</p>
    -							
    -</html><java><![CDATA[// The "standard" fetch
    -Result<R> fetch();    
    -
    -// The "standard" fetch when you know your query returns only one record
    -R fetchOne();
    -
    -// The "standard" fetch when you only want to fetch the first record
    -R fetchAny();
    -
    -// Create a "lazy" Cursor, that keeps an open underlying JDBC ResultSet
    -Cursor<R> fetchLazy();
    -Cursor<R> fetchLazy(int fetchSize);
    -
    -// Create a java.util.concurrent.Future, to handle asynchronous execution of the ResultQuery
    -FutureResult<R> fetchLater();
    -FutureResult<R> fetchLater(ExecutorService executor);
    -
    -// Fetch several results at once
    -List<Result<Record>> fetchMany();
    -
    -// Fetch records into a custom callback
    -<H extends RecordHandler<R>> H fetchInto(H handler);
    -
    -// Execute a ResultQuery with jOOQ, but return a JDBC ResultSet, not a jOOQ object
    -ResultSet fetchResultSet();]]></java><html>
    -							
    -							<h3>Fetch convenience</h3>
    -							<p>
    -								These means of fetching are also available from <reference class="org.jooq.Result"/> and <reference class="org.jooq.Record"/> APIs
    -							</p>
    -
    -</html><java><![CDATA[// These methods are convenience for fetching only a single field, 
    -// possibly converting results to another type
    -<T>    List<T> fetch(Field<T> field);
    -<T>    List<T> fetch(Field<?> field, Class<? extends T> type);
    -<T, U> List<U> fetch(Field<T> field, Converter<? super T, U> converter);
    -       List<?> fetch(int fieldIndex);
    -<T>    List<T> fetch(int fieldIndex, Class<? extends T> type);
    -<U>    List<U> fetch(int fieldIndex, Converter<?, U> converter);
    -       List<?> fetch(String fieldName);
    -<T>    List<T> fetch(String fieldName, Class<? extends T> type);
    -<U>    List<U> fetch(String fieldName, Converter<?, U> converter);
    -
    -// These methods are convenience for fetching only a single field, possibly converting results to another type
    -// Instead of returning lists, these return arrays
    -<T>    T[]      fetchArray(Field<T> field);
    -<T>    T[]      fetchArray(Field<?> field, Class<? extends T> type);
    -<T, U> U[]      fetchArray(Field<T> field, Converter<? super T, U> converter);
    -       Object[] fetchArray(int fieldIndex);
    -<T>    T[]      fetchArray(int fieldIndex, Class<? extends T> type);
    -<U>    U[]      fetchArray(int fieldIndex, Converter<?, U> converter);
    -       Object[] fetchArray(String fieldName);
    -<T>    T[]      fetchArray(String fieldName, Class<? extends T> type);
    -<U>    U[]      fetchArray(String fieldName, Converter<?, U> converter);
    -
    -// These methods are convenience for fetching only a single field from a single record, 
    -// possibly converting results to another type
    -<T>    T      fetchOne(Field<T> field);
    -<T>    T      fetchOne(Field<?> field, Class<? extends T> type);
    -<T, U> U      fetchOne(Field<T> field, Converter<? super T, U> converter);
    -       Object fetchOne(int fieldIndex);
    -<T>    T      fetchOne(int fieldIndex, Class<? extends T> type);
    -<U>    U      fetchOne(int fieldIndex, Converter<?, U> converter);
    -       Object fetchOne(String fieldName);
    -<T>    T      fetchOne(String fieldName, Class<? extends T> type);
    -<U>    U      fetchOne(String fieldName, Converter<?, U> converter);]]></java><html>
    -
    -							<h3>Fetch transformations</h3>
    -							<p>
    -								These means of fetching are also available from <reference class="org.jooq.Result"/> and <reference class="org.jooq.Record"/> APIs
    -							</p>
    -							
    -</html><java><![CDATA[// Transform your Records into arrays, Results into matrices
    -       Object[][] fetchArrays();
    -       Object[]   fetchOneArray();
    -       
    -// Transform your Result object into maps
    -<K>    Map<K, R> fetchMap(Field<K> key);
    -<K, V> Map<K, V> fetchMap(Field<K> key, Field<V> value);
    -       List<Map<String, Object>> fetchMaps();
    -       Map<String, Object> fetchOneMap();
    -
    -// Transform your Result object into groups
    -<K>    Map<K, Result<R>> fetchGroups(Field<K> key);
    -<K, V> Map<K, List<V>>   fetchGroups(Field<K> key, Field<V> value);
    -
    -// Transform your Records into custom POJOs
    -<E>    List<E> fetchInto(Class<? extends E> type), MappingException;
    -
    -// Transform your records into another table type
    -<Z extends Record> Result<Z> fetchInto(Table<Z> table);]]></java><html>
    -
    -							<p>
    -								Note, that apart from the <reference class="org.jooq.ResultQuery" anchor="#fetchLazy()" title="fetchLazy()"/> methods, all fetch() methods will immediately close underlying JDBC result sets.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="record-vs-tablerecord">
    -								<title>Record vs. TableRecord</title>
    -								<content><html>
    -									<p>
    -										jOOQ understands that SQL is much more expressive than Java, when it comes to the declarative typing of <reference id="table-expressions" title="table expressions"/>. As a declarative language, SQL allows for creating ad-hoc tuples (records with indexed columns) and records (records with named columns). In Java, this is not possible to the same extent. Yet, still, sometimes you wish to use strongly typed records, when you know that you're selecting only from a single table
    -									</p>
    -									
    -									<h3>Fetching strongly or weakly typed records</h3>
    -									<p>
    -										When fetching data only from a single table, the <reference id="table-expressions" title="table expression's"/> type is known to jOOQ if you use jOOQ's <reference id="code-generation" title="code generator"/> to generate <reference id="codegen-records" title="TableRecords"/> for your database tables. In order to fetch such strongly typed records, you will have to use the <reference id="select-statement" title="simple select API"/>:
    -									</p>
    -
    -</html><java><![CDATA[// Use the selectFrom() method:
    -BookRecord book = create.selectFrom(BOOK).where(BOOK.ID.equal(1)).fetchOne();
    -
    -// Typesafe field access is now possible:
    -System.out.println("Title       : " + book.getTitle());
    -System.out.println("Published in: " + book.getPublishedIn());]]></java><html>
    -									
    -									<p>
    -										When you use the <reference class="org.jooq.FactoryOperations" anchor="#selectFrom(org.jooq.Table)" title="Factory.selectFrom()"/> method, jOOQ will return the record type supplied with the argument table. Beware though, that you will no longer be able to use any clause that modifies the type of your <reference id="table-expressions" title="table expression"/>. This includes: 
    -									</p>
    -									<ul>
    -                   						<li><reference id="select-clause" title="The SELECT clause"/></li>
    -                   						<li><reference id="join-clause" title="The JOIN clause"/></li>
    -                   						<li><reference id="group-by-clause" title="The GROUP BY clause"/></li>
    -                   						<li><reference id="having-clause" title="The HAVING clause"/></li>
    -                   					</ul>		
    -                   												
    -									<h3>Scala's tuple classes</h3>
    -									<p>
    -										With the introduction of generics in Java 5, it is possible in principle, to pre-define a set of tuple types. This is what Scala does. In essence, tuple types look something like this:
    -									</p>
    -									
    -</html><java><![CDATA[// Tuple with arity 1
    -public interface Tuple1<T1> extends Tuple {
    -    T1 get1(); void set1(T1 t1);
    -}
    -
    -// Tuple with arity 2
    -public interface Tuple2<T1, T2> extends Tuple {
    -    T1 get1(); void set1(T1 t1);
    -    T2 get2(); void set2(T2 t2);
    -}
    -
    -// Tuple with arity 3
    -public interface Tuple3<T1, T2, T3> extends Tuple {
    -    T1 get1(); void set1(T1 t1);
    -    T2 get2(); void set2(T2 t2);
    -    T3 get3(); void set3(T3 t3);
    -}
    -
    -// Fictional sample application with Java:
    -for (Tuple<Integer, String, Date>> tuple : create
    -        .select(BOOK.ID, BOOK.TITLE, BOOK.PUBLICATION_DATE)
    -        .from(BOOK)
    -        .orderBy(BOOK.ID)
    -        .fetch()) {
    -
    -    Integer id           = tuple.get1();
    -    String title         = tuple.get2();
    -    Date publicationDate = tuple.get3();
    -}
    -
    -// Fictional sample application with Scala:
    -for (tuple <- create
    -              select (BOOK.ID, BOOK.TITLE, BOOK.PUBLICATION_DATE)
    -              from BOOK
    -              orderBy BOOK.ID
    -              fetch) {
    -
    -    val id              = tuple._1; // Type is Int
    -    val title           = tuple._2; // Type is String
    -    val publicationDate = tuple._3; // Type is Date
    -}]]></java><html>
    -
    -									<p>
    -										It is worth mentioning that Scala is much stronger in inferring types than Java. Yet still, this becomes quickly impracticable as
    -									</p>
    -									<ul>
    -										<li>We will run out of pre-defined tuple types for large arities</li>
    -										<li>Tuples are not as expressive as records (named tuples)</li>
    -										<li>With Java's weak type inference (no val/var keywords), tuples quickly become very verbose in Java</li>
    -									</ul>
    -									<p>
    -										For these reasons jOOQ does not support generic tuples.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="arrays-maps-and-lists">
    -								<title>Arrays, Maps and Lists</title>
    -								<content><html>
    -									<p>
    -										By default, jOOQ returns an <reference class="org.jooq.Result"/> object, which is essentially a <reference class="java.util.List"/> of <reference class="org.jooq.Record"/>. Often, you will find yourself wanting to transform this result object into a type that corresponds more to your specific needs. Or you just want to list all values of one specific column. Here are some examples to illustrate those use cases:
    -									</p>
    -									
    -</html><java><![CDATA[// Fetching only book titles (the two calls are equivalent):
    -List<String> titles1 = create.select().from(BOOK).fetch().getValues(BOOK.TITLE);
    -List<String> titles2 = create.select().from(BOOK).fetch(BOOK.TITLE);
    -String[]     titles3 = create.select().from(BOOK).fetchArray(BOOK.TITLE);
    -
    -// Fetching only book IDs, converted to Long
    -List<Long> ids1 = create.select().from(BOOK).fetch().getValues(BOOK.ID, Long.class);
    -List<Long> ids2 = create.select().from(BOOK).fetch(BOOK.ID, Long.class);
    -Long[]     ids3 = create.select().from(BOOK).fetchArray(BOOK.ID, Long.class);
    -
    -// Fetching book IDs and mapping each ID to their records or titles
    -Map<Integer, BookRecord> map1 = create.selectFrom(BOOK).fetch().intoMap(BOOK.ID);
    -Map<Integer, BookRecord> map2 = create.selectFrom(BOOK).fetchMap(BOOK.ID);
    -Map<Integer, String>     map3 = create.selectFrom(BOOK).fetch().intoMap(BOOK.ID, BOOK.TITLE);
    -Map<Integer, String>     map4 = create.selectFrom(BOOK).fetchMap(BOOK.ID, BOOK.TITLE);
    -
    -// Group by AUTHOR_ID and list all books written by any author:       
    -Map<Integer, Result<BookRecord>> group1 = create.selectFrom(BOOK).fetch().intoGroups(BOOK.AUTHOR_ID);
    -Map<Integer, Result<BookRecord>> group2 = create.selectFrom(BOOK).fetchGroups(BOOK.AUTHOR_ID);
    -Map<Integer, List<String>>       group3 = create.selectFrom(BOOK).fetch().intoGroups(BOOK.AUTHOR_ID, BOOK.TITLE);
    -Map<Integer, List<String>>       group4 = create.selectFrom(BOOK).fetchGroups(BOOK.AUTHOR_ID, BOOK.TITLE);]]></java><html>									
    -
    -									<p>
    -										Note that most of these convenience methods are available both through <reference class="org.jooq.ResultQuery"/> and <reference class="org.jooq.Result"/>, some are even available through <reference class="org.jooq.Record"/> as well.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="recordhandler">
    -								<title>RecordHandler</title>
    -								<content><html>
    -									<p>
    -										In a more functional operating mode, you might want to write callbacks that receive records from your select statement results in order to do some processing. This is a common data access pattern in Spring's JdbcTemplate, and it is also available in jOOQ. With jOOQ, you can implement your own <reference class="org.jooq.RecordHandler"/> classes and plug them into jOOQ's <reference class="org.jooq.ResultQuery"/>:
    -									</p>
    -									
    -</html><java><![CDATA[// Write callbacks to receive records from select statements
    -create.selectFrom(BOOK)
    -      .orderBy(BOOK.ID)
    -      .fetch()
    -      .into(new RecordHandler<BookRecord>() {
    -          @Override
    -          public void next(BookRecord book) {
    -              Util.doThingsWithBook(book);
    -          }
    -      });
    -      
    -// Or more concisely
    -create.selectFrom(BOOK)
    -      .orderBy(BOOK.ID)
    -      .fetchInto(new RecordHandler<BookRecord>() {...});
    -      
    -// Or even more concisely with Java 8's lambda expressions:
    -create.selectFrom(BOOK)
    -      .orderBy(BOOK.ID)
    -      .fetchInto(book -> { Util.doThingsWithBook(book); }; );
    -]]></java></content>
    -							</section>
    -
    -							<section id="pojos">
    -								<title>POJOs</title>
    -								<content><html>
    -									<p>
    -										Fetching data in records is fine as long as your application is not really layered, or as long as you're still writing code in the DAO layer. But if you have a more advanced application architecture, you may not want to allow for jOOQ artefacts to leak into other layers. You may choose to write POJOs (Plain Old Java Objects) as your primary DTOs (Data Transfer Objects), without any dependencies on jOOQ's <reference class="org.jooq.Record"/> types, which may even potentially hold a reference to a <reference id="factory" title="Factory"/>, and thus a JDBC <reference class="java.sql.Connection"/>. Like Hibernate/JPA, jOOQ allows you to operate with POJOs. Unlike Hibernate/JPA, jOOQ does not "attach" those POJOs or create proxies with any magic in them.
    -									</p>
    -									<p>
    -										If you're using jOOQ's <reference id="code-generation" title="code generator"/>, you can configure it to <reference id="codegen-pojos" title="generate POJOs"/> for you, but you're not required to use those generated POJOs. You can use your own.
    -									</p>
    -									
    -									<h3>Using JPA-annotated POJOs</h3>									
    -									<p>
    -										jOOQ tries to find JPA annotations on your POJO types. If it finds any, they are used as the primary source for mapping meta-information. Only the <reference class="javax.persistence.Column"/> annotation is used and understood by jOOQ. An example:
    -									</p>
    -
    -</html><java><![CDATA[// A JPA-annotated POJO class
    -public class MyBook {
    -  @Column(name = "ID")
    -  public int myId;
    -  
    -  @Column(name = "TITLE")
    -  public String myTitle;
    -}
    -
    -// The various "into()" methods allow for fetching records into your custom POJOs:
    -MyBook myBook        = create.select().from(BOOK).fetchAny().into(MyBook.class); 
    -List<MyBook> myBooks = create.select().from(BOOK).fetch().into(MyBook.class);
    -List<MyBook> myBooks = create.select().from(BOOK).fetchInto(MyBook.class);]]></java><html>									
    -									
    -									<p>
    -										Just as with any other JPA implementation, you can put the <reference class="javax.persistence.Column"/> annotation on any class member, including attributes, setters and getters. Please refer to the <reference class="org.jooq.Record" anchor="#into(java.lang.Class)" title="Record.into()"/> Javadoc for more details.
    -									</p>
    -									
    -									<h3>Using simple POJOs</h3>
    -									<p>
    -										If jOOQ does not find any JPA-annotations, columns are mapped to the "best-matching" constructor, attribute or setter. An example illustrates this:
    -									</p>
    -									
    -</html><java><![CDATA[// A "mutable" POJO class
    -public class MyBook1 {
    -  public int id;
    -  public String title;
    -}
    -
    -// The various "into()" methods allow for fetching records into your custom POJOs:
    -MyBook1 myBook        = create.select().from(BOOK).fetchAny().into(MyBook1.class); 
    -List<MyBook1> myBooks = create.select().from(BOOK).fetch().into(MyBook1.class);
    -List<MyBook1> myBooks = create.select().from(BOOK).fetchInto(MyBook1.class);	
    -									
    -// An "immutable" POJO class
    -public class MyBook2 {
    -  public final int id;
    -  public final String title;
    -  
    -  public MyBook2(int id, String title) {
    -    this.id = id;
    -    this.title = title;
    -  }
    -}
    -
    -// With "immutable" POJO classes, there must be an exact match between projected fields and available constructors:
    -MyBook2 myBook        = create.select(BOOK.ID, BOOK.TITLE).from(BOOK).fetchAny().into(MyBook2.class); 
    -List<MyBook2> myBooks = create.select(BOOK.ID, BOOK.TITLE).from(BOOK).fetch().into(MyBook2.class);
    -List<MyBook2> myBooks = create.select(BOOK.ID, BOOK.TITLE).from(BOOK).fetchInto(MyBook2.class);]]></java><html>	
    -									
    -									<p>
    -										Please refer to the <reference class="org.jooq.Record" anchor="#into(java.lang.Class)" title="Record.into()"/> Javadoc for more details.
    -									</p>
    -
    -									<h3>Using proxyable types</h3>
    -									<p>
    -										jOOQ also allows for fetching data into abstract classes or interfaces, or in other words, "proxyable" types. This means that jOOQ will return a <reference class="java.util.HashMap"/> wrapped in a <reference class="java.lang.reflect.Proxy"/> implementing your custom type. An example of this is given here:
    -									</p>
    -									
    -</html><java><![CDATA[// A "proxyable" type
    -public interface MyBook3 {
    -  int getId(); 
    -  void setId(int id);
    -  
    -  String getTitle();
    -  void setTitle(String title);
    -}
    -
    -// The various "into()" methods allow for fetching records into your custom POJOs:
    -MyBook3 myBook        = create.select(BOOK.ID, BOOK.TITLE).from(BOOK).fetchAny().into(MyBook3.class); 
    -List<MyBook3> myBooks = create.select(BOOK.ID, BOOK.TITLE).from(BOOK).fetch().into(MyBook3.class);
    -List<MyBook3> myBooks = create.select(BOOK.ID, BOOK.TITLE).from(BOOK).fetchInto(MyBook3.class);]]></java><html>									
    -
    -									<p>
    -										Please refer to the <reference class="org.jooq.Record" anchor="#into(java.lang.Class)" title="Record.into()"/> Javadoc for more details.
    -									</p>
    -
    -									<h3>Loading POJOs back into Records to store them</h3>
    -									<p>
    -										The above examples show how to fetch data into your own custom POJOs / DTOs. When you have modified the data contained in POJOs, you probably want to store those modifications back to the database. An example of this is given here:
    -									</p>
    -
    -</html><java><![CDATA[// A "mutable" POJO class
    -public class MyBook {
    -  public int id;
    -  public String title;
    -}
    -
    -// Create a new POJO instance
    -MyBook myBook = new MyBook();
    -myBook.id = 10;
    -myBook.title = "Animal Farm";
    -
    -// Load a jOOQ-generated BookRecord from your POJO
    -BookRecord book = create.newRecord(BOOK, myBook); 
    -
    -// Insert it (implicitly)
    -book.store();
    -
    -// Insert it (explicitly)
    -create.executeInsert(book);
    -
    -// or update it (ID = 10)
    -create.executeUpdate(book);]]></java><html>
    -							
    -									<p>
    -										Note: Because of your manual setting of ID = 10, jOOQ's store() method will asume that you want to insert a new record. See the manual's section about <reference id="crud-with-updatablerecords" title="CRUD with UpdatableRecords"/> for more details on this.
    -									</p>
    -											
    -									<h3>Interaction with DAOs</h3>
    -									<p>
    -										If you're using jOOQ's <reference id="code-generation" title="code generator"/>, you can configure it to <reference id="codegen-daos" title="generate DAOs"/> for you. Those DAOs operate on <reference id="codegen-pojos" title="generated POJOs"/>. An example of using such a DAO is given here:
    -									</p>
    -
    -</html><java><![CDATA[// Initialise a Factory
    -Factory create = new Factory(connection, SQLDialect.ORACLE);
    -
    -// Initialise the DAO with the Factory
    -BookDao bookDao = new BookDao(create);
    -
    -// Start using the DAO
    -Book book = bookDao.findById(5);
    -
    -// Modify and update the POJO
    -book.setTitle("1984");
    -book.setPublishedIn(1948);
    -bookDao.update(book);
    -
    -// Delete it again
    -bookDao.delete(book);]]></java><html>
    -									
    -									<h3>More complex data structures</h3>
    -									<p>
    -										jOOQ currently doesn't support more complex data structures, the way Hibernate/JPA attempt to map relational data onto POJOs. While future developments in this direction are not excluded, jOOQ claims that generic mapping strategies lead to an enormous additional complexity that only serves very few use cases. You are likely to find a solution using any of jOOQ's various <reference id="fetching" title="fetching modes"/>, with only little boiler-plate code on the client side.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="lazy-fetching">
    -								<title>Lazy fetching</title>
    -								<content><html>
    -									<p>
    -										Unlike JDBC's <reference class="java.sql.ResultSet"/>, jOOQ's <reference class="org.jooq.Result"/> does not represent an open database cursor with various fetch modes and scroll modes, that needs to be closed after usage. jOOQ's results are simple in-memory Java <reference class="java.util.List"/> objects, containing all of the result values. If your result sets are large, or if you have a lot of network latency, you may wish to fetch records one-by-one, or in small chunks. jOOQ supports a <reference class="org.jooq.Cursor"/> type for that purpose. In order to obtain such a reference, use the <reference class="org.jooq.ResultQuery" anchor="#fetchLazy()" title="ResultQuery.fetchLazy()"/> method. An example is given here:
    -									</p>
    -									
    -</html><java><![CDATA[// Obtain a Cursor reference:
    -Cursor<BookRecord> cursor = null;
    -
    -try {
    -    cursor = create.selectFrom(BOOK).fetchLazy();
    -
    -    // Cursor has similar methods as Iterator<R>
    -    while (cursor.hasNext()) {
    -        BookRecord book = cursor.fetchOne();
    -        
    -        Util.doThingsWithBook(book);
    -    }
    -}
    -
    -// Close the cursor and the cursor's underlying JDBC ResultSet
    -finally {
    -    if (cursor != null) {
    -        cursor.close();
    -    }
    -}]]></java><html>
    -
    -									<p>
    -										As a <reference class="org.jooq.Cursor"/> holds an internal reference to an open <reference class="java.sql.ResultSet"/>, it may need to be closed at the end of iteration. If a cursor is completely scrolled through, it will conveniently close the underlying ResultSet. However, you should not rely on that.
    -									</p>
    -									
    -									<h3>Cursors ship with all the other fetch features</h3>
    -									<p>
    -										Like <reference class="org.jooq.ResultQuery"/> or <reference class="org.jooq.Result"/>, <reference class="org.jooq.Cursor"/> gives access to all of the other fetch features that we've seen so far, i.e.
    -									</p>
    -									<ul>
    -										<li><reference id="record-vs-tablerecord" title="Strongly or weakly typed records"/>: Cursors are also typed with the &lt;R&gt; type, allowing to fetch custom, generated <reference class="org.jooq.TableRecord"/> or plain <reference class="org.jooq.Record"/> types.</li>
    -										<li><reference id="recordhandler" title="RecordHandler callbacks"/>: You can use your own <reference class="org.jooq.RecordHandler"/> callbacks to receive lazily fetched records.</li>
    -										<li><reference id="pojos" title="POJOs"/>: You can fetch data into your own custom POJO types.</li>
    -									</ul>
    -								</html></content>
    -							</section>
    -
    -							<section id="many-fetching">
    -								<title>Many fetching</title>
    -								<content><html>
    -									<p>
    -										Many databases support returning several result sets, or cursors, from single queries. An example for this is Sybase ASE's sp_help command:
    -									</p>
    -</html><text><![CDATA[> sp_help 'author'
    -
    -+--------+-----+-----------+-------------+-------------------+
    -|Name    |Owner|Object_type|Object_status|Create_date        |
    -+--------+-----+-----------+-------------+-------------------+
    -|  author|dbo  |user table | -- none --  |Sep 22 2011 11:20PM|
    -+--------+-----+-----------+-------------+-------------------+
    -
    -+-------------+-------+------+----+-----+-----+
    -|Column_name  |Type   |Length|Prec|Scale|...  |
    -+-------------+-------+------+----+-----+-----+
    -|id           |int    |     4|NULL| NULL|    0|
    -|first_name   |varchar|    50|NULL| NULL|    1|
    -|last_name    |varchar|    50|NULL| NULL|    0|
    -|date_of_birth|date   |     4|NULL| NULL|    1|
    -|year_of_birth|int    |     4|NULL| NULL|    1|
    -+-------------+-------+------+----+-----+-----+]]></text><html>
    -
    -
    -									<p>
    -										The correct (and verbose) way to do this with JDBC is as follows:
    -									</p>
    -									
    -</html><java><![CDATA[ResultSet rs = statement.executeQuery();
    -
    -// Repeat until there are no more result sets
    -for (;;) {
    -
    -  // Empty the current result set
    -  while (rs.next()) {
    -    // [ .. do something with it .. ]
    -  }
    -
    -  // Get the next result set, if available
    -  if (statement.getMoreResults()) {
    -    rs = statement.getResultSet();
    -  }
    -  else {
    -    break;
    -  }
    -}
    -
    -// Be sure that all result sets are closed
    -statement.getMoreResults(Statement.CLOSE_ALL_RESULTS);
    -statement.close();]]></java><html>
    -
    -									<p>
    -										As previously discussed in the chapter about <reference id="comparison-with-jdbc" title="differences between jOOQ and JDBC"/>, jOOQ does not rely on an internal state of any JDBC object, which is "externalised" by Javadoc. Instead, it has a straight-forward API allowing you to do the above in a one-liner: 
    -									</p>
    -									
    -</html><java><![CDATA[// Get some information about the author table, its columns, keys, indexes, etc
    -List<Result<Record>> results = create.fetchMany("sp_help 'author'");]]></java><html>
    -
    -									<p>
    -										Using generics, the resulting structure is immediately clear.
    -									</p>									
    -								</html></content>
    -							</section>
    -
    -							<section id="later-fetching">
    -								<title>Later fetching</title>
    -								<content><html>
    -									<p>
    -										Some queries take very long to execute, yet they are not crucial for the continuation of the main program. For instance, you could be generating a complicated report in a Swing application, and while this report is being calculated in your database, you want to display a background progress bar, allowing the user to pursue some other work. This can be achived simply with jOOQ, by creating a <reference class="org.jooq.FutureResult"/>, a type that extends <reference class="java.util.concurrent.Future"/>. An example is given here:
    -									</p>
    -									
    -</html><java><![CDATA[// Spawn off this query in a separate process:
    -FutureResult<BookRecord> future = create.selectFrom(BOOK).where(... complex predicates ...).fetchLater();
    -
    -// This example actively waits for the result to be done
    -while (!future.isDone()) {
    -    progressBar.increment(1);
    -    Thread.sleep(50);
    -}
    -
    -// The result should be ready, now
    -Result<BookRecord> result = future.get();]]></java><html>
    -
    -									<p>
    -										Note, that instead of letting jOOQ spawn a new thread, you can also provide jOOQ with your own <reference class="java.util.concurrent.ExecutorService"/>:
    -									</p>
    -									
    -</html><java><![CDATA[// Spawn off this query in a separate process:
    -ExecutorService service = // [...]
    -FutureResult<BookRecord> future = create.selectFrom(BOOK).where(... complex predicates ...).fetchLater(service);]]></java></content>
    -							</section>
    -
    -							<section id="resultset-fetching">
    -								<title>ResultSet fetching</title>
    -								<content><html>
    -									<p>
    -										When interacting with legacy applications, you may prefer to have jOOQ return a <reference class="java.sql.ResultSet"/>, rather than jOOQ's own <reference class="org.jooq.Result"/> types. This can be done simply, in two ways:
    -									</p>
    -									
    -</html><java><![CDATA[// jOOQ's Cursor type exposes the underlying ResultSet:
    -ResultSet rs1 = create.selectFrom(BOOK).fetchLazy().resultSet();
    -
    -// But you can also directly access that ResultSet from ResultQuery:
    -ResultSet rs2 = create.selectFrom(BOOK).fetchResultSet();
    -
    -// Don't forget to close these, though!
    -rs1.close();
    -rs2.close();]]></java><html>
    -
    -									<h3>Transform jOOQ's Result into a JDBC ResultSet</h3>
    -									<p>
    -										Instead of operating on a JDBC ResultSet holding an open resource from your database, you can also let jOOQ's <reference class="org.jooq.Result"/> wrap itself in a <reference class="java.sql.ResultSet"/>. The advantage of this is that the so-created ResultSet has no open connection to the database. It is a completely in-memory ResultSet:								
    -									</p>
    -
    -</html><java><![CDATA[// Transform a jOOQ Result into a ResultSet
    -Result<BookRecord> result = create.selectFrom(BOOK).fetch();
    -ResultSet rs = result.intoResultSet();]]></java><html>
    -
    -									<h3>The inverse: Fetch data from a legacy ResultSet using jOOQ</h3>
    -									<p>
    -										The inverse of the above is possible too. Maybe, a legacy part of your application produces JDBC <reference class="java.sql.ResultSet"/>, and you want to turn them into a <reference class="org.jooq.Result"/>: 
    -									</p>
    -
    -</html><java><![CDATA[// Transform a JDBC ResultSet into a jOOQ Result
    -ResultSet rs = connection.createStatement().executeQuery("SELECT * FROM BOOK");
    -
    -// As a Result:
    -Result<Record> result = create.fetch(rs);
    -
    -// As a Cursor
    -Cursor<Record> cursor = create.fetchLazy(rs);]]></java></content>
    -							</section>
    -
    -							<section id="data-type-conversion">
    -								<title>Data type conversion</title>
    -								<content><html>
    -									<p>
    -										Apart from a few extra features (see the manual's section about <reference id="master-data-types" title="master data types"/> and <reference id="codegen-udts" title="user-defined types"/>), jOOQ only supports basic types as supported by the JDBC API. In your application, you may choose to transform these data types into your own ones, without writing too much boiler-plate code. This can be done using jOOQ's <reference class="org.jooq.Converter"/> types. A converter essentially allows for two-way conversion between two Java data types &lt;T&gt; and &lt;U&gt;. By convention, the &lt;T&gt; type corresponds to the type in your database whereas the &gt;U&gt; type corresponds to your own user type. The Converter API is given here:
    -									</p>
    -									
    -</html><java><![CDATA[public interface Converter<T, U> extends Serializable {
    -
    -    /**
    -     * Convert a database object to a user object
    -     */
    -    U from(T databaseObject);
    -
    -    /**
    -     * Convert a user object to a database object
    -     */
    -    T to(U userObject);
    -
    -    /**
    -     * The database type
    -     */
    -    Class<T> fromType();
    -
    -    /**
    -     * The user type
    -     */
    -    Class<U> toType();
    -}]]></java><html>
    -
    -									<p>
    -										Such a converter can be used in many parts of the jOOQ API. Some examples have been illustrated in the manual's section about <reference id="fetching" title="fetching"/>.
    -									</p>
    -									
    -									<h3>A Converter for GregorianCalendar</h3>
    -									<p>
    -										Here is a some more elaborate example involving a Converter for <reference class="java.util.GregorianCalendar"/>: 
    -									</p>
    -									
    -</html><java><![CDATA[// You may prefer Java Calendars over JDBC Timestamps
    -public class CalendarConverter implements Converter<Timestamp, GregorianCalendar> {
    -
    -    @Override
    -    public GregorianCalendar from(Timestamp databaseObject) {
    -        GregorianCalendar calendar = (GregorianCalendar) Calendar.getInstance();
    -        calendar.setTimeInMillis(databaseObject.getTime());
    -        return calendar;
    -    }
    -
    -    @Override
    -    public Timestamp to(GregorianCalendar userObject) {
    -        return new Timestamp(userObject.getTime().getTime());
    -    }
    -
    -    @Override
    -    public Class<Timestamp> fromType() {
    -        return Timestamp.class;
    -    }
    -
    -    @Override
    -    public Class<GregorianCalendar> toType() {
    -        return GregorianCalendar.class;
    -    }
    -}
    -
    -// Now you can fetch calendar values from jOOQ's API:
    -List<GregorianCalendar> dates1 = create.selectFrom(BOOK).fetch().getValues(BOOK.PUBLISHING_DATE, new CalendarConverter());
    -List<GregorianCalendar> dates2 = create.selectFrom(BOOK).fetch(BOOK.PUBLISHING_DATE, new CalendarConverter());
    -]]></java><html>									
    -									
    -									<h3>Enum Converters</h3>
    -									<p>
    -										jOOQ ships with a built-in default <reference class="org.jooq.impl.EnumConverter"/>, that you can use to map VARCHAR values to enum literals or NUMBER values to enum ordinals (both modes are supported). Let's say, you want to map a YES / NO / MAYBE column to a custom Enum:
    -									</p>
    -									
    -</html><java><![CDATA[// Define your Enum
    -public enum YNM {
    -    YES, NO, MAYBE
    -}
    -
    -// Define your converter
    -public class YNMConverter extends EnumConverter<String, YNM> {
    -    public YNMConverter() {
    -        super(String.class, YNM.class);
    -    }
    -}
    -
    -// And you're all set for converting records to your custom Enum:
    -for (BookRecord book : create.selectFrom(BOOK).fetch()) {
    -    switch (book.getValue(BOOK.I_LIKE, new YNMConverter())) {
    -        case YES:    System.out.println("I like this book             : " + book.getTitle()); break;
    -        case NO:     System.out.println("I didn't like this book      : " + book.getTitle()); break;
    -        case MAYBE:  System.out.println("I'm not sure about this book : " + book.getTitle()); break;
    -    }
    -}]]></java><html>
    -									
    -									<h3>Using Converters in generated source code</h3>
    -									<p>
    -										jOOQ also allows for generated source code to reference your own custom converters, in order to permanently replace a <reference id="table-columns" title="table column's"/> &lt;T&gt; type by your own, custom &lt;U&gt; type. See the manual's section about <reference id="custom-data-types" title="custom data types"/> for details.
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -					
    -					<section id="statement-type">
    -						<title>Static statements vs. Prepared Statements</title>
    -						<content><html>
    -							<p>
    -								With JDBC, you have full control over your SQL statements. You can decide yourself, if you want to execute a static <reference class="java.sql.Statement"/> without bind values, or a <reference class="java.sql.PreparedStatement"/> with (or without) bind values. But you have to decide early, which way to go. And you'll have to prevent SQL injection and syntax errors manually, when inlining your bind variables.
    -							</p>
    -							<p>
    -								With jOOQ, this is easier. As a matter of fact, it is plain simple. With jOOQ, you can just set a flag in your <reference id="factory" title="Factory's"/> <reference id="custom-settings" title="Settings"/>, and all queries produced by that factory will be executed as static statements, with all bind values inlined. An example is given here:
    -							</p>
    -							
    -</html><code-pair>
    -<sql><![CDATA[
    -
    -
    -
    -
    -
    -
    --- These statements are rendered by the two factories:
    -SELECT ? FROM DUAL WHERE ? = ?
    -SELECT 1 FROM DUAL WHERE 1 = 1]]></sql><java><![CDATA[// This Factory executes PreparedStatements
    -Factory prepare = new Factory(connection, SQLDialect.ORACLE);
    -
    -// This Factory exeecutes static Statements
    -Factory inlined = new Factory(connection, SQLDialect.ORACLE, 
    -  new Settings().withStatementType(StatementType.STATIC_STATEMENT));
    -  
    -prepare.select(val(1)).where(val(1).equal(1)).fetch();
    -inlined.select(val(1)).where(val(1).equal(1)).fetch();]]></java>
    -</code-pair><html>
    -
    -							<h3>Reasons for choosing one or the other</h3>
    -							<p>
    -								Not all databases are equal. Some databases show improved performance if you use <reference class="java.sql.PreparedStatement"/>, as the database will then be able to re-use execution plans for identical SQL statements, regardless of actual bind values. This heavily improves the time it takes for soft-parsing a SQL statement. In other situations, assuming that bind values are irrelevant for SQL execution plans may be a bad idea, as you might run into "bind value peeking" issues. You may be better off spending the extra cost for a new hard-parse of your SQL statement and instead having the database fine-tune the new plan to the concrete bind values.
    -							</p>
    -							<p>
    -								Whichever aproach is more optimal for you cannot be decided by jOOQ. In most cases, prepared statements are probably better. But you always have the option of forcing jOOQ to render inlined bind values.
    -							</p>
    -							
    -							<h3>Inlining bind values on a per-bind-value basis</h3>
    -							<p>
    -								Note that you don't have to inline all your bind values at once. If you know that a bind value is not really a variable and should be inlined explicitly, you can do so by using <reference class="org.jooq.impl.Factory" anchor="#inline(Object)" title="Factory.inline()"/>, as documented in the manual's section about <reference id="inlined-parameters" title="inlined parameters"/>
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="batch-execution">
    -						<title>Using JDBC batch operations</title>
    -						<content><html>
    -							<p>
    -								With JDBC, you can easily execute several statements at once using the addBatch() method. Essentially, there are two modes in JDBC
    -							</p>
    -
    -							<ul>
    -								<li>Execute several queries without bind values</li>
    -								<li>Execute one query several times with bind values</li>
    -							</ul>
    -
    -							<p>
    -								In code, this looks like the following snippet:
    -							</p>
    -</html><java><![CDATA[// 1. several queries
    -// ------------------
    -Statement stmt = connection.createStatement();
    -stmt.addBatch("INSERT INTO author VALUES (1, 'Erich Gamma')");
    -stmt.addBatch("INSERT INTO author VALUES (2, 'Richard Helm')");
    -stmt.addBatch("INSERT INTO author VALUES (3, 'Ralph Johnson')");
    -stmt.addBatch("INSERT INTO author VALUES (4, 'John Vlissides')");
    -int[] result = stmt.executeBatch();
    -
    -// 2. a single query
    -// -----------------
    -PreparedStatement stmt = connection.prepareStatement("INSERT INTO autho VALUES (?, ?)");
    -stmt.setInt(1, 1);
    -stmt.setString(2, "Erich Gamma");
    -stmt.addBatch();
    -
    -stmt.setInt(1, 2);
    -stmt.setString(2, "Richard Helm");
    -stmt.addBatch();
    -
    -stmt.setInt(1, 3);
    -stmt.setString(2, "Ralph Johnson");
    -stmt.addBatch();
    -
    -stmt.setInt(1, 4);
    -stmt.setString(2, "John Vlissides");
    -stmt.addBatch();
    -
    -int[] result = stmt.executeBatch();]]></java><html>
    -
    -
    -							<h3>This will also be supported by jOOQ</h3>
    -							<p>
    -								jOOQ supports executing queries in batch mode as follows:
    -							</p>
    -							
    -</html><java><![CDATA[// 1. several queries
    -// ------------------
    -create.batch(
    -	create.insertInto(AUTHOR, ID, NAME).values(1, "Erich Gamma"),
    -	create.insertInto(AUTHOR, ID, NAME).values(2, "Richard Helm"),
    -	create.insertInto(AUTHOR, ID, NAME).values(3, "Ralph Johnson"),
    -	create.insertInto(AUTHOR, ID, NAME).values(4, "John Vlissides"))
    -.execute();
    -
    -// 2. a single query
    -// -----------------
    -create.batch(create.insertInto(AUTHOR, ID, NAME).values("?", "?"))
    -	  .bind(1, "Erich Gamma")
    -	  .bind(2, "Richard Helm")
    -	  .bind(3, "Ralph Johnson")
    -	  .bind(4, "John Vlissides")
    -	  .execute();]]></java></content>
    -					</section>
    -
    -				    <section id="sequence-execution">
    -						<title>Sequence execution</title>
    -						<content><html>
    -							<p>
    -								Most databases support sequences of some sort, to provide you with unique values to be used for primary keys and other enumerations. If you're using jOOQ's <reference id="code-generation" title="code generator"/>, it will generate a sequence object per sequence for you. There are two ways of using such a sequence object:
    -							</p>
    -
    -							<h3>Standalone calls to sequences</h3>
    -							<p>
    -								Instead of actually phrasing a select statement, you can also use the <reference id="factory" title="Factory's"/> convenience methods:
    -							</p>							
    -							
    -</html><java><![CDATA[// Fetch the next value from a sequence
    -BigInteger nextID = create.nextval(S_AUTHOR_ID);
    -
    -// Fetch the current value from a sequence
    -BigInteger currID = create.currval(S_AUTHOR_ID);]]></java><html>
    -							
    -							<h3>Inlining sequence references in SQL</h3>
    -							<p>
    -								You can inline sequence references in jOOQ SQL statements. The following are examples of how to do that:
    -							</p>
    -							
    -</html><java><![CDATA[// Reference the sequence in a SELECT statement:
    -BigInteger nextID = create.select(s).fetchOne(S_AUTHOR_ID.nextval());
    -
    -// Reference the sequence in an INSERT statement:
    -create.insertInto(AUTHOR, AUTHOR.ID, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .values(S_AUTHOR_ID.nextval(), val("William"), val("Shakespeare"));
    -]]></java><html>
    -
    -							<p>
    -								For more info about inlining sequence references in SQL statements, please refer to the manual's section about <reference id="sequences-and-serials" title="sequences and serials"/>.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="stored-procedures">
    -						<title>Stored procedures and functions</title>
    -						<content><html>
    -							<p>
    -								Many RDBMS support the concept of "routines", usually calling them procedures and/or functions. These concepts have been around in programming languages for a while, also outside of databases. Famous languages distinguishing procedures from functions are:
    -							</p>
    -							<ul>
    -								<li>Ada</li>
    -								<li>BASIC</li>
    -								<li>Pascal</li>
    -								<li>etc...</li>
    -							</ul>
    -							<p>
    -								The general distinction between (stored) procedures and (stored) functions can be summarised like this:
    -							</p>
    -							
    -							<h3>Procedures</h3>
    -							<ul>
    -								<li>Are called using JDBC CallableStatement</li>
    -								<li>Have no return value</li>
    -								<li>Usually support OUT parameters</li>
    -							</ul>
    -							
    -							<h3>Functions</h3>
    -							<ul>
    -								<li>Can be used in SQL statements</li>
    -								<li>Have a return value</li>
    -								<li>Usually don't support OUT parameters</li>
    -							</ul>
    -							
    -							<h3>Exceptions to these rules</h3>
    -							<ul>
    -								<li>DB2, H2, and HSQLDB don't allow for JDBC escape syntax when calling functions. Functions must be used in a SELECT statement</li>
    -								<li>H2 only knows functions (without OUT parameters)</li>
    -								<li>Oracle functions may have OUT parameters</li>
    -								<li>Oracle knows functions that must not be used in SQL statements for transactional reasons</li>
    -								<li>Postgres only knows functions (with all features combined). OUT parameters can also be interpreted as return values, which is quite elegant/surprising, depending on your taste</li>
    -								<li>The Sybase jconn3 JDBC driver doesn't handle null values correctly when using the JDBC escape syntax on functions</li>
    -							</ul>
    -							<p>
    -								In general, it can be said that the field of routines (procedures / functions) is far from being standardised in modern RDBMS even if the SQL:2008 standard specifies things quite well. Every database has its ways and JDBC only provides little abstraction over the great variety of procedures / functions implementations, especially when advanced data types such as cursors / UDT's / arrays are involved.
    -							</p>
    -							<p>
    -								To simplify things a little bit, jOOQ handles both procedures and functions the same way, using a more general <reference class="org.jooq.Routine"/> type.
    -							</p>
    -							
    -							<h3>Using jOOQ for standalone calls to stored procedures and functions</h3>
    -							<p>
    -								If you're using jOOQ's <reference id="code-generation" title="code generator"/>, it will generate <reference class="org.jooq.Routine"/> objects for you. Let's consider the following example:
    -							</p>
    -							
    -</html><sql><![CDATA[-- Check whether there is an author in AUTHOR by that name and get his ID
    -CREATE OR REPLACE PROCEDURE author_exists (author_name VARCHAR2, result OUT NUMBER, id OUT NUMBER);]]></sql><html>
    -
    -							<p>
    -								The generated artefacts can then be used as follows:
    -							</p>
    -							
    -</html><java><![CDATA[// Make an explicit call to the generated procedure object:
    -AuthorExists procedure = new AuthorExists();
    -
    -// All IN and IN OUT parameters generate setters
    -procedure.setAuthorName("Paulo");
    -procedure.execute(configuration);
    -
    -// All OUT and IN OUT parameters generate getters
    -assertEquals(new BigDecimal("1"), procedure.getResult());
    -assertEquals(new BigDecimal("2"), procedure.getId();]]></java><html>							
    -							
    -							<p>
    -								But you can also call the procedure using a generated convenience method in a global Routines class:
    -							</p>
    -
    -</html><java><![CDATA[// The generated Routines class contains static methods for every procedure.
    -// Results are also returned in a generated object, holding getters for every OUT or IN OUT parameter.
    -AuthorExists result = Routines.authorExists("Paulo");
    -
    -// All OUT and IN OUT parameters generate getters
    -assertEquals(new BigDecimal("1"), procedure.getResult());
    -assertEquals(new BigDecimal("2"), procedure.getId();]]></java><html>			
    -
    -							<p>
    -								For more details about <reference id="code-generation" title="code generation"/> for procedures, see the manual's section about <reference id="codegen-procedures" title="procedures and code generation"/>.
    -							</p>				
    -							
    -							<h3>Inlining stored function references in SQL</h3>
    -							<p>
    -								Unlike procedures, functions can be inlined in SQL statements to generate <reference id="column-expressions" title="column expressions"/> or <reference id="table-expressions" title="table expressions"/>, if you're using <reference id="array-and-cursor-unnesting" title="unnesting operators"/>. Assume you have a function like this:
    -							</p>
    -
    -</html><sql><![CDATA[-- Check whether there is an author in AUTHOR by that name and get his ID
    -CREATE OR REPLACE FUNCTION author_exists (author_name VARCHAR2) RETURN NUMBER;]]></sql><html>
    -							
    -							<p>
    -								The generated artefacts can then be used as follows:
    -							</p>
    -							
    -</html><code-pair>
    -<sql><![CDATA[-- This is the rendered SQL
    -
    -SELECT AUTHOR_EXISTS('Paulo') FROM DUAL]]></sql><java><![CDATA[// Use the static-imported method from Routines:
    -boolean exists = 
    -create.select(authorExists("Paulo")).fetchOne(0, boolean.class);]]></java>							
    -</code-pair><html>
    -							
    -							<p>
    -								For more info about inlining stored function references in SQL statements, please refer to the manual's section about <reference id="user-defined-functions" title="user-defined functions"/>.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="oracle-packages">
    -								<title>Oracle Packages</title>
    -								<content><html>
    -									<p>
    -										Oracle uses the concept of a PACKAGE to group several procedures/functions into a sort of namespace. The <a href="http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt" title="SQL 92 standard">SQL 92 standard</a> talks about "modules", to represent this concept, even if this is rarely implemented as such. This is reflected in jOOQ by the use of Java sub-packages in the <reference id="code-generation" title="source code generation"/> destination package. Every Oracle package will be reflected by
    -									</p>
    -									<ul>
    -										<li>A Java package holding classes for formal Java representations of the procedure/function in that package</li>
    -										<li>A Java class holding convenience methods to facilitate calling those procedures/functions</li>
    -									</ul>
    -									<p>
    -										Apart from this, the generated source code looks exactly like the one for standalone procedures/functions.
    -									</p>
    -									<p>
    -										For more details about <reference id="code-generation" title="code generation"/> for procedures and packages see the manual's section about <reference id="codegen-procedures" title="procedures and code generation"/>.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="oracle-member-procedures">
    -								<title>Oracle member procedures</title>
    -								<content><html>
    -									<p>
    -										Oracle UDTs can have object-oriented structures including member functions and procedures. With Oracle, you can do things like this:
    -									</p>
    -									
    -</html><sql><![CDATA[CREATE OR REPLACE TYPE u_author_type AS OBJECT (
    -  id NUMBER(7),
    -  first_name VARCHAR2(50),
    -  last_name VARCHAR2(50),
    -
    -  MEMBER PROCEDURE LOAD,
    -  MEMBER FUNCTION counBOOKs RETURN NUMBER
    -)
    -
    --- The type body is omitted for the example]]></sql><html>
    -
    -									<p>
    -										These member functions and procedures can simply be mapped to Java methods:
    -									</p>
    -
    -</html><java><![CDATA[// Create an empty, attached UDT record from the Factory
    -UAuthorType author = create.newRecord(U_AUTHOR_TYPE);
    -
    -// Set the author ID and load the record using the LOAD procedure
    -author.setId(1);
    -author.load();
    -
    -// The record is now updated with the LOAD implementation's content
    -assertNotNull(author.getFirstName());
    -assertNotNull(author.getLastName());]]></java><html>
    -
    -									<p>
    -										For more details about <reference id="code-generation" title="code generation"/> for UDTs see the manual's section about <reference id="codegen-udts" title="user-defined types and code generation"/>.
    -									</p>								
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -				    <section id="exporting">
    -						<title>Exporting to XML, CSV, JSON, HTML, Text</title>
    -						<content><html>
    -							<p>
    -								If you are using jOOQ for scripting purposes or in a slim, unlayered application server, you might be interested in using jOOQ's exporting functionality (see also the <reference id="importing" title="importing functionality"/>). You can export any Result&lt;Record&gt; into the formats discussed in the subsequent chapters of the manual
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="exporting-xml">
    -								<title>Exporting XML</title>
    -								<content><java>// Fetch books and format them as XML
    -String xml = create.selectFrom(BOOK).fetch().formatXML();</java><html>
    -
    -									<p>
    -										The above query will result in an XML document looking like the following one:
    -									</p>
    -
    -</html><xml><![CDATA[<result xmlns="http://www.jooq.org/xsd/jooq-export-1.6.2.xsd">
    -  <fields>
    -    <field name="ID"/>
    -    <field name="AUTHOR_ID"/>
    -    <field name="TITLE"/>
    -  </fields>
    -  <records>
    -    <record>
    -      <value field="ID">1</value>
    -      <value field="AUTHOR_ID">1</value>
    -      <value field="TITLE">1984</value>
    -    </record>
    -    <record>
    -      <value field="ID">2</value>
    -      <value field="AUTHOR_ID">1</value>
    -      <value field="TITLE">Animal Farm</value>
    -    </record>
    -  </records>
    -</result>]]></xml><html>
    -
    -									<p>
    -										The same result as an <reference class="org.w3c.dom.Document"/> can be obtained using the Result.intoXML() method:
    -									</p>
    -
    -
    -</html><java>// Fetch books and format them as XML
    -Document xml = create.selectFrom(BOOK).fetch().intoXML();</java><html>
    -
    -									<p>
    -										See the XSD schema definition here, for a formal definition of the XML export format:<br/>
    -										<a href="http://www.jooq.org/xsd/jooq-export-1.6.2.xsd">http://www.jooq.org/xsd/jooq-export-1.6.2.xsd</a>
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="exporting-csv">
    -								<title>Exporting CSV</title>
    -								<content><java>// Fetch books and format them as CSV
    -String csv = create.selectFrom(BOOK).fetch().formatCSV();</java><html>
    -
    -									<p>
    -										The above query will result in a CSV document looking like the following one:
    -									</p>
    -
    -</html><text>ID,AUTHOR_ID,TITLE
    -1,1,1984
    -2,1,Animal Farm</text><html>
    -
    -									<p>
    -										In addition to the standard behaviour, you can also specify a separator character, as well as a special string to represent NULL values (which cannot be represented in standard CSV):
    -									</p>
    -
    -</html><java>// Use ";" as the separator character
    -String csv = create.selectFrom(BOOK).fetch().formatCSV(';');
    -
    -// Specify "{null}" as a representation for NULL values
    -String csv = create.selectFrom(BOOK).fetch().formatCSV(';', "{null}");</java></content>
    -							</section>
    -
    -							<section id="exporting-json">
    -								<title>Exporting JSON</title>
    -								<content><java>// Fetch books and format them as JSON
    -String json = create.selectFrom(BOOK).fetch().formatJSON();</java><html>
    -
    -									<p>
    -										The above query will result in a JSON document looking like the following one:
    -									</p>
    -
    -</html><text>{fields:["ID","AUTHOR_ID","TITLE"],
    - records:[[1,1,"1984"],[2,1,"Animal Farm"]]}</text></content>
    -							</section>
    -
    -							<section id="exporting-html">
    -								<title>Exporting HTML</title>
    -								<content><java>// Fetch books and format them as HTML
    -String html = create.selectFrom(BOOK).fetch().formatHTML();</java><html>
    -
    -									<p>
    -										The above query will result in an HTML document looking like the following one
    -									</p>
    -
    -</html><xml><![CDATA[<table>
    -  <thead>
    -    <tr>
    -      <th>ID</th>
    -      <th>AUTHOR_ID</th>
    -      <th>TITLE</th>
    -    </tr>
    -  </thead>
    -  <tbody>
    -    <tr>
    -      <td>1</td>
    -      <td>1</td>
    -      <td>1984</td>
    -    </tr>
    -    <tr>
    -      <td>2</td>
    -      <td>1</td>
    -      <td>Animal Farm</td>
    -    </tr>
    -  </tbody>
    -</table>]]></xml></content>
    -							</section>
    -
    -							<section id="exporting-text">
    -								<title>Exporting Text</title>
    -								<content><java>// Fetch books and format them as text
    -String text = create.selectFrom(BOOK).fetch().format();</java><html>
    -
    -									<p>
    -										The above query will result in a text document looking like the following one
    -									</p>
    -
    -</html><text>+---+---------+-----------+
    -| ID|AUTHOR_ID|TITLE      |
    -+---+---------+-----------+
    -|  1|        1|1984       |
    -|  2|        1|Animal Farm|
    -+---+---------+-----------+</text><html>
    -
    -									<p>
    -										A simple text representation can also be obtained by calling toString() on a Result object. See also the manual's section about <reference id="logging" title="DEBUG logging"/>
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -				    <section id="importing">
    -						<title>Importing data</title>
    -						<content><html>
    -							<p>
    -								If you are using jOOQ for scripting purposes or in a slim, unlayered application server, you might be interested in using jOOQ's importing functionality (see also exporting functionality). You can import data directly into a table from the formats described in the subsequent sections of this manual.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="importing-csv">
    -								<title>Importing CSV</title>
    -								<content><html>
    -
    -									<p>
    -										The below CSV data represents two author records that may have been exported previously, by jOOQ's <reference id="exporting" title="exporting functionality"/>, and then modified in Microsoft Excel or any other spreadsheet tool:
    -									</p>
    -
    -</html><text>ID;AUTHOR_ID;TITLE
    -1;1;1984
    -2;1;Animal Farm</text><html>
    -
    -									<p>
    -										With jOOQ, you can load this data using various parameters from the	loader API. A simple load may look like this:
    -									</p>
    -
    -</html><java>Factory create = new Factory(connection, dialect);
    -
    -// Load data into the AUTHOR table from an input stream
    -// holding the CSV data.
    -create.loadInto(AUTHOR)
    -      .loadCSV(inputstream)
    -      .fields(ID, AUTHOR_ID, TITLE)
    -      .execute();</java><html>
    -
    -      								<p>
    -      									Here are various other examples:
    -   									</p>
    -
    -</html><java>// Ignore the AUTHOR_ID column from the CSV file when inserting
    -create.loadInto(AUTHOR)
    -      .loadCSV(inputstream)
    -      .fields(ID, null, TITLE)
    -      .execute();
    -
    -// Specify behaviour for duplicate records.
    -create.loadInto(AUTHOR)
    -
    -      // choose any of these methods
    -      .onDuplicateKeyUpdate()
    -      .onDuplicateKeyIgnore()
    -      .onDuplicateKeyError() // the default
    -
    -      .loadCSV(inputstream)
    -      .fields(ID, null, TITLE)
    -      .execute();
    -
    -// Specify behaviour when errors occur.
    -create.loadInto(AUTHOR)
    -
    -      // choose any of these methods
    -      .onErrorIgnore()
    -      .onErrorAbort() // the default
    -
    -      .loadCSV(inputstream)
    -      .fields(ID, null, TITLE)
    -      .execute();
    -
    -// Specify transactional behaviour where this is possible
    -// (e.g. not in container-managed transactions)
    -create.loadInto(AUTHOR)
    -
    -      // choose any of these methods
    -      .commitEach()
    -      .commitAfter(10)
    -      .commitAll()
    -      .commitNone() // the default
    -
    -      .loadCSV(inputstream)
    -      .fields(ID, null, TITLE)
    -      .execute();</java><html>
    -
    -									<p>
    -										Any of the above configuration methods can be combined to achieve the type of load you need. Please refer to the API's Javadoc to learn about more details. Errors that occur during the load are reported by the execute method's result:
    -									</p>
    -
    -</html><java><![CDATA[Loader<Author> loader = /* .. */ .execute();
    -
    -// The number of processed rows
    -int processed = loader.processed();
    -
    -// The number of stored rows (INSERT or UPDATE)
    -int stored = loader.stored();
    -
    -// The number of ignored rows (due to errors, or duplicate rule)
    -int ignored = loader.ignored();
    -
    -// The errors that may have occurred during loading
    -List<LoaderError> errors = loader.errors();
    -LoaderError error = errors.get(0);
    -
    -// The exception that caused the error
    -DataAccessException exception = error.exception();
    -
    -// The row that caused the error
    -int rowIndex = error.rowIndex();
    -String[] row = error.row();
    -
    -// The query that caused the error
    -Query query = error.query();]]></java></content>
    -							</section>
    -
    -							<section id="importing-xml">
    -								<title>Importing XML</title>
    -								<content><html>
    -									<p>This is not yet supported</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -				    <section id="crud-with-updatablerecords">
    -						<title>CRUD with UpdatableRecords</title>
    -						<content><html>
    -							<p>
    -								Your database application probably consists of 50% - 80% CRUD, whereas only the remaining 20% - 50% of querying is actual querying. Most often, you will operate on records of tables without using any advanced relational concepts. This is called CRUD for
    -							</p>
    -							<ul>
    -								<li>Create (<reference id="insert-statement" title="INSERT"/>)</li>
    -								<li>Read (<reference id="select-statement" title="SELECT"/>)</li>
    -								<li>Update (<reference id="update-statement" title="UPDATE"/>)</li>
    -								<li>Delete (<reference id="delete-statement" title="DELETE"/>)</li>
    -							</ul>
    -							<p>								
    -								CRUD always uses the same patterns, regardless of the nature of underlying tables. This again, leads to a lot of boilerplate code, if you have to issue your statements yourself. Like Hibernate / JPA and other ORMs, jOOQ facilitates CRUD using a specific API involving <reference class="org.jooq.UpdatableRecord"/> types.
    -							</p>
    -							
    -							<h3>Primary keys and updatability</h3>
    -							<p>
    -								In normalised databases, every table has a primary key by which a tuple/record within that table can be uniquely identified. In simple cases, this is a (possibly auto-generated) number called ID. But in many cases, primary keys include several non-numeric columns. An important feature of such keys is the fact that in most databases, they are enforced using an index that allows for very fast random access to the table. A typical way to access / modify / delete a book is this:
    -							</p>
    -							
    -</html><sql><![CDATA[-- Inserting uses a previously generated key value or generates it afresh
    -INSERT INTO BOOK (ID, TITLE) VALUES (5, 'Animal Farm');
    -
    --- Other operations can use a previously generated key value
    -SELECT * FROM BOOK WHERE ID = 5;
    -UPDATE BOOK SET TITLE = '1984' WHERE ID = 5;
    -DELETE FROM BOOK WHERE ID = 5;]]></sql><html>
    -							
    -							<p>
    -								Normalised databases assume that a primary key is unique "forever", i.e. that a key, once inserted into a table, will never be changed or re-inserted after deletion. In order to use jOOQ's <reference id="simple-crud" title="CRUD"/> operations correctly, you should design your database accordingly.
    -							</p>
    -							
    -							<h3>Main UNIQUE keys</h3>
    -							<p>
    -								In SQL, a primary key is always also a unique key. In fact, unique keys have very similar properties as primary keys. For instance, they can be referenced from other tables' foreign keys in most databases. In the absence of a formal primary key, jOOQ assumes that the first unique key it encounters will serve as a primary key substitute. This is called the "main key" in jOOQ. In other words, a main key is:
    -							</p>
    -							<ul>
    -								<li>The primary key, if available</li>
    -								<li>The first unique key, otherwise</li>
    -							</ul>
    -							
    -							<p>
    -								For simplicity, the term "primary key" will be used in the sense of such a "main unique key" in this manual.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="simple-crud">
    -								<title>Simple CRUD</title>
    -								<content><html>
    -									<p>
    -										If you're using jOOQ's <reference id="code-generation" title="code generator"/>, it will generate <reference class="org.jooq.UpdatableRecord"/> implementations for every table that has a primary key. When <reference id="fetching" title="fetching"/> such a record form the database, these records are "attached" to the <reference id="factory" title="Factory" /> that created them. This means that they hold an internal reference to the same database connection that was used to fetch them. This connection is used internally by any of the following methods of the UpdatableRecord:
    -									</p>
    -									
    -</html><java><![CDATA[// Refresh a record from the database.
    -void refresh() throws DataAccessException;
    -
    -// Store (insert or update) a record to the database.
    -int store() throws DataAccessException;
    -
    -// Delete a record from the database
    -int delete() throws DataAccessException;]]></java><html>
    -									
    -									<p>
    -										See the manual's section about <reference id="serializability" title="serializability"/> for some more insight on "attached" objects. 
    -									</p>
    -									
    -									<h3>Storing</h3>
    -									<p>
    -										Storing a record will perform an <reference id="insert-statement" title="INSERT statement"/> or an <reference id="update-statement" title="UPDATE statement"/>. In general, new records are always inserted, whereas records loaded from the database are always updated. This is best visualised in code:
    -									</p>
    -
    -</html><java><![CDATA[// Create a new record
    -BookRecord book1 = create.newRecord(BOOK);
    -
    -// Insert the record: INSERT INTO BOOK (TITLE) VALUES ('1984');
    -book1.setTitle("1984");
    -book1.store();
    -
    -// Update the record: UPDATE BOOK SET PUBLISHED_IN = 1984 WHERE ID = [id]
    -book1.setPublishedIn(1948);
    -book1.store();
    -
    -// Get the (possibly) auto-generated ID from the record
    -Integer id = book1.getId();
    -
    -// Get another instance of the same book
    -BookRecord book2 = create.fetchOne(BOOK, BOOK.ID.equal(id));
    -
    -// Update the record: UPDATE BOOK SET TITLE = 'Animal Farm' WHERE ID = [id]
    -book2.setTitle("Animal Farm");
    -book2.store();]]></java><html>
    -									
    -									<p>
    -										Some remarks about storing:
    -									</p>
    -									<ul>
    -										<li>jOOQ sets only modified values in <reference id="insert-statement" title="INSERT statements"/> or <reference id="update-statement" title="UPDATE statements"/>. This allows for default values to be applied to inserted records, as specified in CREATE TABLE DDL statements.</li>
    -										<li>When store() performs an <reference id="insert-statement" title="INSERT statement"/>, jOOQ attempts to load any generated keys from the database back into the record. For more details, see the manual's section about <reference id="identity-values" title="IDENTITY values"/>.</li>
    -										<li>When loading records from <reference id="pojos" title="POJOs"/>, jOOQ will assume the record is a new record. It will hence attempt to INSERT it.</li>
    -										<li>When you activate <reference id="optimistic-locking" title="optimistic locking"/>, storing a record may fail, if the underlying database record has been changed in the mean time.</li>
    -									</ul>
    -																		
    -									<h3>Deleting</h3>
    -									<p>
    -										Deleting a record will remove it from the database. Here's how you delete records:
    -									</p>
    -									
    -</html><java><![CDATA[// Get a previously inserted book
    -BookRecord book = create.fetchOne(BOOK, BOOK.ID.equal(5));
    -
    -// Delete the book
    -book.delete();]]></java><html>
    -									
    -									<h3>Refreshing</h3>
    -									<p>
    -										Refreshing a record from the database means that jOOQ will issue a <reference id="select-statement" title="SELECT statement"/> to refresh all record values that are not the primary key. This is particularly useful when you use jOOQ's <reference id="optimistic-locking" title="optimistic locking"/> feature, in case a modified record is "stale" and cannot be stored to the database, because the underlying database record has changed in the mean time.
    -									</p>
    -									<p>
    -										In order to perform a refresh, use the following Java code:
    -									</p>									
    -
    -</html><java><![CDATA[// Fetch an updatable record from the database
    -BookRecord book = create.fetchOne(BOOK, BOOK.ID.equal(5));
    -
    -// Refresh the record
    -book.refresh();]]></java><html>
    -
    -									<h3>CRUD and SELECT statements</h3>
    -									<p>
    -										CRUD operations can be combined with regular querying, if you select records from single database tables, as explained in the manual's section about <reference id="select-statement" title="SELECT statements"/>. For this, you will need to use the selectFrom() method from the <reference id="factory" title="Factory"/>:
    -									</p>
    -									
    -</html><java><![CDATA[// Loop over records returned from a SELECT statement
    -for (BookRecord book : create.fetch(BOOK, BOOK.PUBLISHED_IN.equal(1948))) {
    -
    -  // Perform actions on BookRecords depending on some conditions
    -  if ("Orwell".equals(book.fetchAuthorByAuthorId().getLastName())) {
    -    book.delete();
    -  }
    -}]]></java></content>
    -							</section>
    -
    -							<section id="identity-values">
    -								<title>IDENTITY values</title>
    -								<content><html>
    -									<p>
    -										Many databases support the concept of IDENTITY values, or <reference id="sequence-execution" title="SEQUENCE-generated"/> key values. This is reflected by JDBC's <reference class="java.sql.Statement" anchor="#getGeneratedKeys()" title="getGeneratedKeys()"/> method. jOOQ abstracts using this method as many databases and JDBC drivers behave differently with respect to generated keys. Let's assume the following SQL Server BOOK table:
    -									</p>
    -									
    -</html><sql><![CDATA[CREATE TABLE book (
    -  ID INTEGER IDENTITY(1,1) NOT NULL,
    -  
    -  -- [...]
    -  
    -  CONSTRAINT pk_book PRIMARY KEY (id)
    -)]]></sql><html>
    -
    -									<p>
    -										If you're using jOOQ's <reference id="code-generation" title="code generator"/>, the above table will generate a <reference class="org.jooq.UpdatableRecord"/> with an IDENTITY column. This information is used by jOOQ internally, to update IDs after calling <reference id="crud-with-updatablerecords" title="store()"/>: 
    -									</p>
    -									
    -</html><java><![CDATA[BookRecord book = create.newRecord(BOOK);
    -book.setTitle("1984");
    -book.store();
    -
    -// The generated ID value is fetched after the above INSERT statement
    -System.out.println(book.getId());]]></java><html>
    -
    -									<h3>Database compatibility</h3>
    -									<p>
    -										<strong>DB2, Derby, HSQLDB, Ingres</strong>
    -									</p>
    -									<p>
    -										These SQL dialects implement the standard very neatly.
    -									</p>
    -</html><sql><![CDATA[id INTEGER GENERATED BY DEFAULT AS IDENTITY
    -id INTEGER GENERATED BY DEFAULT AS IDENTITY (START WITH 1)]]></sql><html>
    -
    -									<p>
    -										<strong>H2, MySQL, Postgres, SQL Server, Sybase ASE, Sybase SQL Anywhere</strong>
    -									</p>
    -									<p>
    -										These SQL dialects implement identites, but the DDL syntax doesn’t follow the standard
    -									</p>
    -</html><sql><![CDATA[-- H2 mimicks MySQL's and SQL Server's syntax
    -ID INTEGER IDENTITY(1,1)
    -ID INTEGER AUTO_INCREMENT
    --- MySQL and SQLite
    -ID INTEGER NOT NULL AUTO_INCREMENT
    -
    --- Postgres serials implicitly create a sequence
    --- Postgres also allows for selecting from custom sequences
    --- That way, sequences can be shared among tables
    -id SERIAL NOT NULL
    -
    --- SQL Server
    -ID INTEGER IDENTITY(1,1) NOT NULL
    --- Sybase ASE
    -id INTEGER IDENTITY NOT NULL
    --- Sybase SQL Anywhere
    -id INTEGER NOT NULL IDENTITY]]></sql><html>
    -
    -									<p>
    -										<strong>Oracle</strong>
    -									</p>
    -									<p>
    -										Oracle does not know any identity columns at all. Instead, you will have to use a trigger and update the ID column yourself, using a custom sequence. Something along these lines:
    -									</p>
    -</html><sql><![CDATA[CREATE OR REPLACE TRIGGER my_trigger
    -BEFORE INSERT
    -ON my_table
    -REFERENCING NEW AS new
    -FOR EACH ROW
    -BEGIN
    -  SELECT my_sequence.nextval
    -  INTO :new.id
    -  FROM dual;
    -END my_trigger;]]></sql><html>
    -
    -									<p>
    -										Note, that this approach can be employed in most databases supporting sequences and triggers! It is a lot more flexible than standard identities
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="navigation-methods">
    -								<title>Navigation methods</title>
    -								<content><html>
    -									<p>
    -										When using jOOQ's <reference id="code-generation" title="code generator"/> along with its <reference id="codegen-records" title="record generation capabilities"/>, generated records can have navigation methods contained in them, if properly <reference id="codegen-advanced" title="configured"/>. These navigation methods allow for "navigating" inbound or outbound foreign key references by executing an appropriate query. An example is given here: 
    -									</p>
    -				
    -</html><code-pair>
    -<sql><![CDATA[CREATE TABLE book (
    -  AUTHOR_ID NUMBER(7) NOT NULL,
    -  
    -  -- [...]
    -  
    -  FOREIGN KEY (AUTHOR_ID) REFERENCES author(ID)
    -)]]></sql><java><![CDATA[BookRecord book = create.fetch(BOOK, BOOK.ID.equal(5));
    -
    -// Find the author of a book
    -AuthorRecord author = book.fetchAuthor();
    -
    -// Find other books by that author
    -List<BookRecord> books = author.fetchBookList();]]></java>
    -</code-pair><html>					
    -
    -									<p>
    -										These methods are safe for use with several foreign keys referencing the same tables:
    -									</p>
    -				
    -</html><code-pair>
    -<sql><![CDATA[CREATE TABLE book (
    -  AUTHOR_ID NUMBER(7) NOT NULL,
    -  CO_AUTHOR_ID NUMBER(7) NOT NULL,
    -  
    -  -- [...]
    -  
    -  FOREIGN KEY (AUTHOR_ID) REFERENCES author(ID),
    -  FOREIGN KEY (CO_AUTHOR_ID) REFERENCES author(ID)
    -)]]></sql><java><![CDATA[BookRecord book = create.fetch(BOOK, BOOK.ID.equal(5));
    -
    -// Find the author of a book
    -AuthorRecord author   = book.fetchAuthorByAuthorId();
    -AuthorRecord coAuthor = book.fetchAuthorByCoAuthorId();
    -
    -// Find other books by those authors
    -List<BookRecord> books = author.fetchBookListByAuthorId();
    -List<BookRecord> books = coAuthor.fetchBookListByCoAuthorId();]]></java>
    -</code-pair><html>					
    -
    -									<p>
    -										Note that, unlike in Hibernate, jOOQ's generated navigation methods will always lazy-fetch relevant records, without caching any results. In other words, every time you run such a fetch method, a new query will be issued.
    -									</p>
    -									<p>
    -										These fetch methods only work on "attached" records. See the manual's section about <reference id="serializability" title="serializability"/> for some more insight on "attached" objects.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="non-updatable-records">
    -								<title>Non-updatable records</title>
    -								<content><html>
    -									<p>
    -										Tables without UNIQUE keys are considered non-updatable by jOOQ, as jOOQ has no way of uniquely identifying such a record within the database. If you're using jOOQ's <reference id="code-generation" title="code generator"/>, such tables will generate <reference class="org.jooq.TableRecord"/> classes, instead of <reference class="org.jooq.UpdatableRecord"/> classes. When you fetch <reference id="record-vs-tablerecord" title="typed records"/> from such a table, the returned records will not allow for calling any of the <reference id="crud-with-updatablerecords" title="store(), refresh(), delete()"/> methods. 
    -									</p>
    -									
    -									<p>
    -										Note, that some databases use internal rowid or object-id values to identify such records. jOOQ does not support these vendor-specific record meta-data.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="optimistic-locking">
    -								<title>Optimistic locking</title>
    -								<content><html>
    -									<p>
    -										jOOQ allows you to perform <reference id="crud-with-updatablerecords" title="CRUD"/> operations using optimistic locking. You can immediately take advantage of this feature by activating the relevant <reference id="custom-settings" title="executeWithOptimisticLocking Setting"/>. Without any further knowledge of the underlying data semantics, this will have the following impact on store() and delete() methods:
    -									</p>
    -									<ul>
    -										<li>INSERT statements are not affected by this Setting flag</li>
    -										<li>Prior to UPDATE or DELETE statements, jOOQ will run a <reference id="for-update-clause" title="SELECT .. FOR UPDATE"/> statement, pessimistically locking the record for the subsequent UPDATE / DELETE</li>
    -										<li>The data fetched with the previous SELECT will be compared against the data in the record being stored or deleted</li>
    -										<li>An <reference class="org.jooq.exception.DataChangedException"/> is thrown if the record had been modified in the mean time</li>
    -										<li>The record is successfully stored / deleted, if the record had not been modified in the mean time.</li>
    -									</ul>
    -									<p>
    -										The above changes to jOOQ's behaviour are transparent to the API, the only thing you need to do for it to be activated is to set the Settings flag. Here is an example illustrating optimistic locking:
    -									</p>
    -
    -</html><java><![CDATA[// Properly configure the Factory
    -Factory optimistic = new Factory(connection, SQLDialect.ORACLE, 
    -  new Settings().withExecuteWithOptimisticLocking(true));
    -  
    -// Fetch a book two times
    -BookRecord book1 = optimistic.fetch(BOOK, BOOK.ID.equal(5));
    -BookRecord book2 = optimistic.fetch(BOOK, BOOK.ID.equal(5));
    -
    -// Change the title and store this book. The underlying database record has not been modified, it can be safely updated.
    -book1.setTitle("Animal Farm");
    -book1.store();
    -
    -// Book2 still references the original TITLE value, but the database holds a new value from book1.store(). 
    -// This store() will thus fail:
    -book2.setTitle("1984");
    -book2.store();]]></java><html>								
    -	
    -									<h3>Optimised optimistic locking using TIMESTAMP fields</h3>
    -									<p>
    -										If you're using jOOQ's <reference id="code-generation" title="code generator"/>, you can take indicate TIMESTAMP or UPDATE COUNTER fields for every generated table in the <reference id="codegen-advanced" title="code generation configuration"/>. Let's say we have this table:
    -									</p>
    -
    -</html><sql><![CDATA[CREATE TABLE book (
    -  
    -  -- This column indicates when each book record was modified for the last time
    -  MODIFIED TIMESTAMP NOT NULL,
    -  -- [...]
    -)]]></sql><html>									
    -
    -									<p>
    -										The MODIFIED column will contain a timestamp indicating the last modification timestamp for any book in the BOOK table. If you're using jOOQ and it's <reference id="crud-with-updatablerecords" title="store() methods on UpdatableRecords"/>, jOOQ will then generate this TIMESTAMP value for you, automatically. However, instead of running an additional <reference id="for-update-clause" title="SELECT .. FOR UPDATE"/> statement prior to an UPDATE or DELETE statement, jOOQ adds a WHERE-clause to the UPDATE or DELETE statement, checking for TIMESTAMP's integrity. This can be best illustrated with an example:   
    -									</p>
    -									
    -</html><java><![CDATA[// Properly configure the Factory
    -Factory optimistic = new Factory(connection, SQLDialect.ORACLE, 
    -  new Settings().withExecuteWithOptimisticLocking(true));
    -  
    -// Fetch a book two times
    -BookRecord book1 = optimistic.fetch(BOOK, BOOK.ID.equal(5));
    -BookRecord book2 = optimistic.fetch(BOOK, BOOK.ID.equal(5));
    -
    -// Change the title and store this book. The MODIFIED value has not been changed since the book was fetched. 
    -// It can be safely updated
    -book1.setTitle("Animal Farm");
    -book1.store();
    -
    -// Book2 still references the original MODIFIED value, but the database holds a new value from book1.store(). 
    -// This store() will thus fail:
    -book2.setTitle("1984");
    -book2.store();]]></java><html>
    -
    -									<p>
    -										As before, without the added TIMESTAMP column, optimistic locking is transparent to the API.
    -									</p>
    -									
    -									<h3>Optimised optimistic locking using VERSION fields</h3>
    -									<p>
    -										Instead of using TIMESTAMPs, you may also use numeric VERSION fields, containing version numbers that are incremented by jOOQ upon store() calls.
    -									</p>
    -
    -									<p>
    -										Note, for explicit pessimistic locking, please consider the manual's section about the <reference id="for-update-clause" title="FOR UPDATE clause"/>. For more details about how to configure TIMESTAMP or VERSION fields, consider the manual's section about <reference id="codegen-advanced" title="advanced code generator configuration"/>.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="batch-execution-for-crud">
    -								<title>Batch execution</title>
    -								<content><html>
    -									<p>
    -										When inserting, updating, deleting a lot of records, you may wish to profit from JDBC batch operations, which can be performed by jOOQ. These are available through jOOQ's <reference id="factory" title="Factory"/> as shown in the following example:
    -									</p>
    -									
    -</html><java><![CDATA[// Fetch a bunch of books
    -List<BookRecord> books = create.fetch(BOOK);
    -
    -// Modify the above books, and add some new ones:
    -modify(books);
    -addMore(books);
    -
    -// Batch-update and/or insert all of the above books
    -create.batchStore(books);]]></java><html>					
    -
    -									<p>
    -										Internally, jOOQ will render all the required SQL statements and execute them as a regular <reference id="batch-execution" title="JDBC batch execution"/>. 
    -									</p>				
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -				    <section id="daos">
    -						<title>DAOs</title>
    -						<content><html>
    -							<p>
    -								If you're using jOOQ's <reference id="code-generation" title="code generator"/>, you can configure it to generate <reference id="pojos" title="POJOs" /> and DAOs for you. jOOQ then generates one DAO per <reference id="crud-with-updatablerecords" title="UpdatableRecord"/>, i.e. per table with a single-column primary key. Generated DAOs implement a common jOOQ type called <reference class="org.jooq.DAO"/>. This type contains the following methods:
    -							</p>
    -							
    -</html><java><![CDATA[// <R> corresponds to the DAO's related table
    -// <P> corresponds to the DAO's related generated POJO type
    -// <T> corresponds to the DAO's related table's primary key type. 
    -// Note that multi-column primary keys are not yet supported by DAOs
    -public interface DAO<R extends TableRecord<R>, P, T> {
    -
    -    // These methods allow for inserting POJOs
    -    void insert(P object) throws DataAccessException;
    -    void insert(P... objects) throws DataAccessException;
    -    void insert(Collection<P> objects) throws DataAccessException;
    -    
    -    // These methods allow for updating POJOs based on their primary key
    -    void update(P object) throws DataAccessException;
    -    void update(P... objects) throws DataAccessException;
    -    void update(Collection<P> objects) throws DataAccessException;
    -    
    -    // These methods allow for deleting POJOs based on their primary key
    -    void delete(P... objects) throws DataAccessException;
    -    void delete(Collection<P> objects) throws DataAccessException;
    -    void deleteById(T... ids) throws DataAccessException;
    -    void deleteById(Collection<T> ids) throws DataAccessException;
    -    
    -    // These methods allow for checking record existence
    -    boolean exists(P object) throws DataAccessException;
    -    boolean existsById(T id) throws DataAccessException;
    -    long count() throws DataAccessException;
    -    
    -    // These methods allow for retrieving POJOs by primary key or by some other field
    -    List<P> findAll() throws DataAccessException;
    -    P findById(T id) throws DataAccessException;
    -    <Z> List<P> fetch(Field<Z> field, Z... values) throws DataAccessException;
    -    <Z> P fetchOne(Field<Z> field, Z value) throws DataAccessException;
    -
    -    // These methods provide DAO meta-information
    -    Table<R> getTable();
    -    Class<P> getType();
    -}]]></java><html>
    -
    -							<p>
    -								Besides these base methods, generated DAO classes implement various useful fetch methods. An incomplete example is given here, for the BOOK table:
    -							</p>
    -
    -</html><java><![CDATA[// An example generated BookDao class
    -public class BookDao extends DAOImpl<BookRecord, Book, Integer> {
    -
    -    // Columns with primary / unique keys produce fetchOne() methods    
    -    public Book fetchOneById(Integer value) { ... }
    -
    -    // Other columns produce fetch() methods, returning several records
    -    public List<Book> fetchByAuthorId(Integer... values) { ... }
    -    public List<Book> fetchByTitle(String... values) { ... }
    -}]]></java><html>
    -							<p>
    -								Note that you can further subtype those pre-generated DAO classes, to add more useful DAO methods to them. Using such a DAO is simple:
    -							</p>
    -							
    -</html><java><![CDATA[// Initialise a Factory
    -Factory create = new Factory(connection, SQLDialect.ORACLE);
    -
    -// Initialise the DAO with the Factory
    -BookDao bookDao = new BookDao(create);
    -
    -// Start using the DAO
    -Book book = bookDao.findById(5);
    -
    -// Modify and update the POJO
    -book.setTitle("1984");
    -book.setPublishedIn(1948);
    -bookDao.update(book);
    -
    -// Delete it again
    -bookDao.delete(book);]]></java></content>
    -					</section>
    -
    -				    <section id="exception-handling">
    -						<title>Exception handling</title>
    -						<content><html>
    -							<h3>Checked vs. unchecked exceptions</h3>
    -							<p>
    -								This is an eternal and religious debate. Pros and cons have been discussed time and again, and it still is a matter of taste, today. In this case, jOOQ clearly takes a side. jOOQ's exception strategy is simple:
    -							</p>
    -							<ul>
    -								<li>All "system exceptions" are unchecked. If in the middle of a transaction involving business logic, there is no way that you can recover sensibly from a lost database connection, or a constraint violation that indicates a bug in your understanding of your database model.</li>
    -								<li>All "business exceptions" are checked. Business exceptions are true exceptions that you should handle (e.g. not enough funds to complete a transaction).</li>
    -							</ul>
    -							<p>
    -								With jOOQ, it's simple. All of jOOQ's exceptions are "system exceptions", hence they are all unchecked.
    -							</p>
    -							
    -							<h3>jOOQ's DataAccessException</h3>
    -							<p>
    -								jOOQ uses its own <reference class="org.jooq.exception.DataAccessException"/> to wrap any underlying <reference class="java.sql.SQLException"/> that might have occurred. Note that all methods in jOOQ that may cause such a DataAccessException document this both in the Javadoc as well as in their method signature.
    -							</p>
    -							<p>
    -								DataAccessException is subtyped several times as follows:
    -							</p>
    -							<ul>
    -								<li><strong>DataAccessException</strong>: General exception usually originating from a <reference class="java.sql.SQLException"/></li>
    -								<li><strong>DataChangedException</strong>: An exception indicating that the database's underlying record has been changed in the mean time (see <reference id="optimistic-locking" title="optimistic locking"/>)</li>
    -								<li><strong>DataTypeException</strong>: Something went wrong during type conversion</li>
    -								<li><strong>DetachedException</strong>: A SQL statement was executed on a "detached" <reference id="crud-with-updatablerecords" title="UpdatableRecord"/> or a "detached" <reference id="sql-statements" title="SQL statement"/>.</li>
    -								<li><strong>InvalidResultException</strong>: An operation was performed expecting only one result, but several results were returned.</li>
    -								<li><strong>MappingException</strong>: Something went wrong when loading a record from a <reference id="pojos" title="POJO"/> or when mapping a record into a POJO</li>
    -							</ul>
    -							
    -							<h3>Override jOOQ's exception handling</h3>
    -							<p>
    -								The following section about <reference id="execute-listeners" title="execute listeners"/> documents means of overriding jOOQ's exception handling, if you wish to deal separately with some types of constraint violations, or if you raise business errors from your database, etc.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="execute-listeners">
    -						<title>ExecuteListeners</title>
    -						<content><html>
    -							<p>
    -								The <reference id="custom-settings" title="jOOQ Factory Settings"/> let you specify a list of <reference class="org.jooq.ExecuteListener"/> classes. The ExecuteListener is essentially an event listener for Query, Routine, or ResultSet render, prepare, bind, execute, fetch steps. It is a base type for loggers, debuggers, profilers, data collectors, triggers, etc. Advanced ExecuteListeners can also provide custom implementations of Connection, PreparedStatement and ResultSet to jOOQ in apropriate methods.
    -							</p>
    -							<p>
    -								For convenience and better backwards-compatibility, consider extending <reference class="org.jooq.impl.DefaultExecuteListener"/> instead of implementing this interface.
    -							</p>
    -							<p>
    -								Here is a sample implementation of an ExecuteListener, that is simply counting the number of queries per type that are being executed using jOOQ:
    -							</p>
    -
    -</html><java><![CDATA[package com.example;
    -
    -// Extending DefaultExecuteListener, which provides empty implementations for all methods...
    -public class StatisticsListener extends DefaultExecuteListener {
    -    public static Map<ExecuteType, Integer> STATISTICS = new HashMap<ExecuteType, Integer>();
    -
    -    // Count "start" events for every type of query executed by jOOQ
    -    @Override
    -    public void start(ExecuteContext ctx) {
    -        synchronized (STATISTICS) {
    -            Integer count = STATISTICS.get(ctx.type());
    -    
    -            if (count == null) {
    -                count = 0;
    -            }
    -    
    -            STATISTICS.put(ctx.type(), count + 1);
    -        }
    -    }
    -}]]></java><html>
    -
    -							<p>
    -								Now, configure jOOQ's runtime to load your listener
    -							</p>
    -
    -</html><xml><![CDATA[<settings>
    -  <executeListeners>
    -    <executeListener>com.example.StatisticsListener</executeListener>
    -  </executeListeners>
    -</settings>]]></xml><html>
    -
    -							<p>
    -								And log results any time with a snippet like this:
    -							</p>
    -
    -</html><java><![CDATA[log.info("STATISTICS");
    -log.info("----------");
    -
    -for (ExecuteType type : ExecuteType.values()) {
    -    log.info(type.name(), StatisticsListener.STATISTICS.get(type) + " executions");
    -}]]></java><html>
    -                            <p>
    -                            	This may result in the following log output:
    -                            </p>
    -
    -</html><config>15:16:52,982  INFO - TEST STATISTICS
    -15:16:52,982  INFO - ---------------
    -15:16:52,983  INFO - READ                     : 919 executions
    -15:16:52,983  INFO - WRITE                    : 117 executions
    -15:16:52,983  INFO - DDL                      : 2 executions
    -15:16:52,983  INFO - BATCH                    : 4 executions
    -15:16:52,983  INFO - ROUTINE                  : 21 executions
    -15:16:52,983  INFO - OTHER                    : 30 executions</config><html>
    -
    -							<p>
    -								Please read the <reference class="org.jooq.ExecuteListener" title="ExecuteListener Javadoc"/> for more details
    -							</p>
    -							<p>
    -								See also the manual's sections about <reference id="logging" title="logging"/> and the <reference id="jooq-console" title="jOOQ Console"/> for more sample implementations of actual ExecuteListeners.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="logging">
    -						<title>Logging</title>
    -						<content><html>
    -							<p>
    -								jOOQ logs all SQL queries and fetched result sets to its internal DEBUG logger, which is implemented as an <reference id="execute-listeners" title="execute listener"/>. By default, execute logging is activated in the <reference id="custom-settings" title="jOOQ Factory Settings"/>. In order to see any DEBUG log output, put either log4j or slf4j on jOOQ's classpath along with their respective configuration. A sample log4j configuration can be seen here:
    -							</p>
    -							
    -</html><xml><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
    -<log4j:configuration>
    -    <appender name="stdout" class="org.apache.log4j.ConsoleAppender">
    -        <layout class="org.apache.log4j.PatternLayout">
    -            <param name="ConversionPattern" value="%m%n" />
    -        </layout>
    -    </appender>
    -
    -    <root>
    -        <priority value="debug" />
    -        <appender-ref ref="stdout" />
    -    </root>
    -</log4j:configuration>]]></xml><html>
    -
    -							<p>
    -								With the above configuration, let's fetch some data with jOOQ
    -							</p>
    -							
    -</html><java><![CDATA[// Using H2, this time
    -create.select(BOOK.ID, BOOK.TITLE).from(BOOK).orderBy(BOOK.ID).limit(1, 2).fetch();]]></java><html>
    -
    -							<p>
    -								The above query may result in the following log output:
    -							</p>
    -
    -</html><text><![CDATA[Executing query          : select "BOOK"."ID", "BOOK"."TITLE" from "BOOK" order by "BOOK"."ID" asc, limit ? offset ?
    --> with bind values      : select "BOOK"."ID", "BOOK"."TITLE" from "BOOK" order by "BOOK"."ID" asc, limit 2 offset 1
    -Query executed           : Total: 1.439ms
    -Fetched result           : +----+------------+
    -                         : |  ID|TITLE       |
    -                         : +----+------------+
    -                         : |   2|Animal Farm |
    -                         : |   3|O Alquimista|
    -                         : +----+------------+
    -Finishing                : Total: 4.814ms, +3.375ms
    -]]></text><html>
    -
    -							<p>
    -								Essentially, jOOQ will log
    -							</p>
    -							<ul>
    -								<li>The SQL statement as rendered to the prepared statement</li>
    -								<li>The SQL statement with inlined bind values (for improved debugging)</li>
    -								<li>The query execution time</li>
    -								<li>The first 5 records of the result. This is formatted using <reference id="exporting-text" title="jOOQ's text export"/></li>
    -								<li>The total execution + fetching time</li>
    -							</ul>
    -
    -							<p>
    -								If you wish to use your own logger (e.g. avoiding printing out sensitive data), you can deactivate jOOQ's logger using <reference id="custom-settings" title="your custom settings"/> and implement your own <reference id="execute-listeners" title="execute listener logger"/>.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="performance-considerations">
    -						<title>Performance considerations</title>
    -						<content><html>
    -							<p>
    -								Many users may have switched from higher-level abstractions such as Hibernate to jOOQ, because of Hibernate's hard-to-manage performance, when it comes to large database schemas and complex second-level caching strategies. jOOQ is not a lightweight database abstraction framework, and it comes with its own overhead. Please be sure to consider the following points:
    -							</p>
    -							<ul>
    -								<li>It takes some time to construct jOOQ queries. If you can reuse the same queries, you might cache them. Beware of thread-safety issues, though, as jOOQ's <reference id="factory" title="Factory"/> is not threadsafe, and queries are "attached" to their creating Factory</li>
    -								<li>It takes some time to render SQL strings. Internally, jOOQ reuses the same <reference class="java.lang.StringBuilder"/> for the complete query, but some rendering elements may take their time. You could, of course, cache SQL generated by jOOQ and prepare your own <reference class="java.sql.PreparedStatement"/> objects</li>
    -								<li>It takes some time to bind values to prepared statements. jOOQ does not keep any open prepared statements, internally. Use a sophisticated connection pool, that will cache prepared statements and inject them into jOOQ through the standard JDBC API</li>
    -								<li>It takes some time to fetch results. By default, jOOQ will always fetch the complete <reference class="java.sql.ResultSet"/> into memory. Use <reference id="lazy-fetching" title="lazy fetching"/> to prevent that, and scroll over an open underlying database cursor</li>
    -							</ul>
    -							
    -							<h3>Optimise wisely</h3>
    -							<p>
    -								Don't be put off by the above paragraphs. You should optimise wisely, i.e. only in places where you really need very high throughput to your database. jOOQ's overhead compared to plain JDBC is typically less than 1ms per query.
    -							</p>
    -						</html></content>
    -					</section>
    -				</sections>
    -			</section>
    -
    -			<section id="code-generation">
    -				<title>Code generation</title>
    -				<content><html>
    -					<p>
    -						While optional, source code generation is one of jOOQ's main assets if you wish to increase developer productivity. jOOQ's code generator takes your database schema and reverse-engineers it into a set of Java classes modelling <reference id="table-expressions" title="tables"/>, <reference id="record-vs-tablerecord" title="records"/>, <reference id="sequence-execution" title="sequences"/>, <reference id="pojos" title="POJOs"/>, <reference id="daos" title="DAOs"/>, <reference id="stored-procedures" title="stored procedures"/>, user-defined types and many more.
    -					</p>
    -					<p>
    -						The essential ideas behind source code generation are these:
    -					</p>
    -					<ul>
    -						<li><strong>Increased IDE support</strong>: Type your Java code directly against your database schema, with all type information available</li>
    -						<li><strong>Type-safety</strong>: When your database schema changes, your generated code will change as well. Removing columns will lead to compilation errors, which you can detect early.</li>
    -					</ul>
    -					<p>
    -						The following chapters will show how to configure the code generator and how to generate various artefacts.
    -					</p>
    -				</html></content>
    -
    -				<sections>
    -				    <section id="codegen-configuration">
    -						<title>Configuration and setup of the generator</title>
    -						<content><html>
    -							<p>
    -								There are three binaries available with jOOQ, to be downloaded from <a href="https://sourceforge.net/projects/jooq/">SourceForge</a> or from Maven central:
    -							</p>
    -							<ul>
    -								<li>
    -									<strong>jooq-{jooq-version}.jar</strong>
    -									<br />
    -									The main library that you will include in your application to run jOOQ
    -								</li>
    -								<li>
    -									<strong>jooq-meta-{jooq-version}.jar</strong>
    -									<br />
    -									The utility that you will include in your build to navigate your database schema for code generation. This can be used as a schema crawler as well.
    -								</li>
    -								<li>
    -									<strong>jooq-codegen-{jooq-version}.jar</strong>
    -									<br />
    -									The utility that you will include in your build to generate your database schema
    -								</li>
    -							</ul>
    -
    -							<h3>Configure jOOQ's code generator</h3>
    -							<p>
    -								You need to tell jOOQ some things about your database connection. Here's an example of how to do it for an Oracle database
    -							</p>
    -							
    -</html><xml><![CDATA[<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    -<configuration>
    -  <!-- Configure the database connection here -->
    -  <jdbc>
    -    <driver>oracle.jdbc.OracleDriver</driver>
    -    <url>jdbc:oracle:thin:@[your jdbc connection parameters]</url>
    -    <user>[your database user]</user>
    -    <password>[your database password]</password>
    -    
    -    <!-- You can also pass user/password and other JDBC properties in the optional properties tag: -->
    -    <properties>
    -      <property><key>user</key><value>[db-user]</value></property>
    -      <property><key>password</key><value>[db-password]</value></property>
    -    </properties>
    -  </jdbc>
    -
    -  <generator>
    -    <database>
    -      <!-- The database dialect from jooq-meta. Available dialects are
    -           named org.util.[database].[database]Database. Known values are:
    -
    -           org.jooq.util.ase.ASEDatabase (to be used with Sybase ASE)
    -           org.jooq.util.cubrid.CUBRIDDatabase
    -           org.jooq.util.db2.DB2Database
    -           org.jooq.util.derby.DerbyDatabase
    -           org.jooq.util.h2.H2Database
    -           org.jooq.util.hsqldb.HSQLDBDatabase
    -           org.jooq.util.ingres.IngresDatabase
    -           org.jooq.util.mysql.MySQLDatabase
    -           org.jooq.util.oracle.OracleDatabase
    -           org.jooq.util.postgres.PostgresDatabase
    -           org.jooq.util.sqlite.SQLiteDatabase
    -           org.jooq.util.sqlserver.SQLServerDatabase
    -           org.jooq.util.sybase.SybaseDatabase (to be used with Sybase SQL Anywhere)
    -
    -           You can also provide your own org.jooq.util.Database implementation
    -           here, if your database is currently not supported or if you wish to
    -           read the database schema from a file, such as a Hibernate .hbm.xml file -->
    -      <name>org.jooq.util.oracle.OracleDatabase</name>
    -
    -      <!-- All elements that are generated from your schema (several Java
    -           regular expressions, separated by comma) Watch out for
    -           case-sensitivity. Depending on your database, this might be
    -           important! You can create case-insensitive regular expressions
    -           using this syntax: (?i:expr)A comma-separated list of regular
    -           expressions -->
    -      <includes>.*</includes>
    -
    -      <!-- All elements that are excluded from your schema (several Java
    -           regular expressions, separated by comma). Excludes match before
    -           includes -->
    -      <excludes></excludes>
    -
    -      <!-- The schema that is used locally as a source for meta information.
    -           This could be your development schema or the production schema, etc
    -           This cannot be combined with the schemata element.
    -
    -           If left empty, jOOQ will generate all available schemata. See the
    -           manual's next section to learn how to generate several schemata -->
    -      <inputSchema>[your database schema / owner / name]</inputSchema>
    -    </database>
    -
    -    <generate>
    -      <!-- Generation flags: See advanced configuration properties -->
    -    </generate>
    -
    -    <target>
    -      <!-- The destination package of your generated classes (within the
    -           destination directory) -->
    -      <packageName>[org.jooq.your.packagename]</packageName>
    -
    -      <!-- The destination directory of your generated classes -->
    -      <directory>[/path/to/your/dir]</directory>
    -    </target>
    -  </generator>
    -</configuration>]]></xml><html>
    -
    -							<p>
    -								There are also lots of advanced configuration parameters, which will be treated in the <reference id="codegen-advanced" title="manual's section about advanced code generation features"/> Note, you can find the official XSD file for a formal specification at:<br/>
    -							    <a href="http://www.jooq.org/xsd/jooq-codegen-2.5.0.xsd" title="The jOOQ-codegen configuration XSD">http://www.jooq.org/xsd/jooq-codegen-2.5.0.xsd</a>
    -						    </p>
    -
    -							<h3>Run jOOQ code generation</h3>
    -							<p>
    -								Code generation works by calling this class with the above property file as argument.
    -							</p>
    -							
    -</html><config>org.jooq.util.GenerationTool /jooq-config.xml</config><html>
    -
    -							<p>
    -								Be sure that these elements are located on the classpath:
    -							</p>
    -							
    -							<ul>
    -								<li>The XML configuration file</li>
    -								<li>jooq-{jooq-version}.jar, jooq-meta-{jooq-version}.jar, jooq-codegen-{jooq-version}.jar</li>
    -								<li>The JDBC driver you configured</li>
    -							</ul>
    -
    -							<h3>A command-line example (For Windows, unix/linux/etc will be similar)</h3>
    -							<ul>
    -								<li>Put the property file, jooq*.jar and the JDBC driver into a directory, e.g. C:\temp\jooq</li>
    -							    <li>Go to C:\temp\jooq</li>
    -							    <li>Run java -cp jooq-{jooq-version}.jar;jooq-meta-{jooq-version}.jar;jooq-codegen-{jooq-version}.jar;[JDBC-driver].jar;. org.jooq.util.GenerationTool /[XML file] </li>
    -							</ul>
    -							<p>
    -								Note that the property file must be passed as a classpath resource
    -							</p>
    -
    -							<h3>Run code generation from Eclipse</h3>
    -							<p>
    -								Of course, you can also run code generation from your IDE. In Eclipse, set up a project like this. Note that this example uses jOOQ's log4j support by adding log4j.xml and log4j.jar to the project classpath:
    -							</p>
    -							<div class="screenshot">
    -							<img class="screenshot" src="&lt;?=$root?&gt;/img/eclipse-example-01.png" alt="Eclipse configuration"/>
    -							</div>
    -
    -							<p>
    -								Once the project is set up correctly with all required artefacts on the classpath, you can configure an Eclipse Run Configuration for org.jooq.util.GenerationTool.
    -							</p>
    -							<div class="screenshot">
    -							<img class="screenshot" src="&lt;?=$root?&gt;/img/eclipse-example-02.png" alt="Eclipse configuration"/>
    -							</div>
    -
    -							<p>
    -								With the XML file as an argument
    -							</p>
    -							<div class="screenshot">
    -							<img class="screenshot" src="&lt;?=$root?&gt;/img/eclipse-example-03.png" alt="Eclipse configuration"/>
    -							</div>
    -
    -							<p>
    -								And the classpath set up correctly
    -							</p>
    -							<div class="screenshot">
    -							<img class="screenshot" src="&lt;?=$root?&gt;/img/eclipse-example-04.png" alt="Eclipse configuration"/>
    -							</div>
    -
    -							<p>
    -								Finally, run the code generation and see your generated artefacts
    -							</p>
    -							<div class="screenshot">
    -							<img class="screenshot" src="&lt;?=$root?&gt;/img/eclipse-example-05.png" alt="Eclipse configuration"/>
    -							</div>
    -
    -							<h3>Run generation with ant</h3>
    -							<p>
    -								You can also use an ant task to generate your classes. As a rule of thumb, remove the dots "." and dashes "-" from the .properties file's property names to get the ant task's arguments:
    -							</p>
    -							
    -</html><xml><![CDATA[<!-- Task definition -->
    -<taskdef name="generate-classes" classname="org.jooq.util.GenerationTask">
    -  <classpath>
    -    <fileset dir="${path.to.jooq.distribution}">
    -      <include name="jooq-{jooq-version}.jar"/>
    -      <include name="jooq-meta-{jooq-version}.jar"/>
    -      <include name="jooq-codegen-{jooq-version}.jar"/>
    -    </fileset>
    -    <fileset dir="${path.to.mysql.driver}">
    -      <include name="${mysql.driver}.jar"/>
    -    </fileset>
    -  </classpath>
    -</taskdef>
    -
    -<!-- Run the code generation task -->
    -<target name="generate-test-classes">
    -  <generate-classes
    -      jdbcurl="jdbc:mysql://localhost/test"
    -      jdbcuser="root"
    -      jdbcpassword=""
    -      generatordatabaseinputschema="test"
    -      generatortargetpackage="org.jooq.test.generatedclasses"
    -      generatortargetdirectory="${basedir}/src"/>
    -</target>]]></xml><html>
    -
    -							<p>
    -								Note that when running code generation with ant's &lt;java/&gt; task, you may have to set fork="true":
    -							</p>
    -
    -</html><xml><![CDATA[<!-- Run the code generation task -->
    -<target name="generate-test-classes">
    -  <java fork="true" classname="org.jooq.util.GenerationTool">
    -    [...]
    -  </java><html>
    -</target>
    -]]></xml><html>
    -
    -							<h3>Integrate generation with Maven</h3>
    -							<p>
    -								Using the official jOOQ-codegen-maven plugin, you can integrate source code generation in your Maven build process:
    -							</p>
    -
    -</html><xml><![CDATA[<plugin>
    -
    -  <!-- Specify the maven code generator plugin -->
    -  <groupId>org.jooq</groupId>
    -  <artifactId>jooq-codegen-maven</artifactId>
    -  <version>{jooq-version}</version>
    -
    -  <!-- The plugin should hook into the generate goal -->
    -  <executions>
    -    <execution>
    -      <goals>
    -        <goal>generate</goal>
    -      </goals>
    -    </execution>
    -  </executions>
    -
    -  <!-- Manage the plugin's dependency. In this example, we'll use a PostgreSQL database -->
    -  <dependencies>
    -    <dependency>
    -      <groupId>postgresql</groupId>
    -      <artifactId>postgresql</artifactId>
    -      <version>8.4-702.jdbc4</version>
    -    </dependency>
    -  </dependencies>
    -
    -  <!-- Specify the plugin configuration.
    -       The configuration format is the same as for the standalone code generator -->
    -  <configuration>
    -
    -    <!-- JDBC connection parameters -->
    -    <jdbc>
    -      <driver>org.postgresql.Driver</driver>
    -      <url>jdbc:postgresql:postgres</url>
    -      <user>postgres</user>
    -      <password>test</password>
    -    </jdbc>
    -
    -    <!-- Generator parameters -->
    -    <generator>
    -      <name>org.jooq.util.DefaultGenerator</name>
    -      <database>
    -        <name>org.jooq.util.postgres.PostgresDatabase</name>
    -        <includes>.*</includes>
    -        <excludes></excludes>
    -        <inputSchema>public</inputSchema>
    -      </database>
    -      <target>
    -        <packageName>org.jooq.util.maven.example</packageName>
    -        <directory>target/generated-sources/jooq</directory>
    -      </target>
    -    </generator>
    -  </configuration>
    -</plugin>
    -]]></xml><html>
    -
    -							<p>
    -								See the full example of a pom.xml including the jOOQ-codegen artefact here:<br/>
    -								<a href="https://github.com/jOOQ/jOOQ/blob/master/jOOQ-codegen-maven-example/pom.xml"
    -								  title="jOOQ-codegen-maven example pom.xml file">https://github.com/jOOQ/jOOQ/blob/master/jOOQ-codegen-maven-example/pom.xml</a>
    -							  </p>
    -
    -                            <h3>Migrate properties files from jOOQ 1.7, early versions of jOOQ 2.0.x:</h3>
    -                            <p>
    -                                Before jOOQ 2.0.4, the code generator was configured using properties files. These files are still supported for source code generation, but their syntax won't be maintained any longer. If you wish to migrate to XML, you can migrate the file using this command on the command line
    -                            </p>
    -
    -</html><config>org.jooq.util.GenerationTool /jooq-config.properties migrate</config><html>
    -
    -							<p>
    -								Using the migrate flag, jOOQ will read the properties file and output a corresponding XML file on system out
    -							</p>
    -
    -							<h3>Use jOOQ generated classes in your application</h3>
    -							<p>
    -								Be sure, both jooq-{jooq-version}.jar and your generated package (see configuration) are located on your classpath. Once this is done, you can execute SQL statements with your generated classes.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-advanced">
    -						<title>Advanced generator configuration</title>
    -						<content><html>
    -							<p>
    -								In the <reference id="codegen-configuration" title="previous section"/> we have seen how jOOQ's source code generator is configured and run within a few steps. In this chapter we'll cover some advanced settings
    -							</p>
    -
    -</html><xml><![CDATA[<!-- These properties can be added directly to the generator element: -->
    -<generator>
    -  <!-- The default code generator. You can override this one, to generate your own code style
    -       Defaults to org.jooq.util.DefaultGenerator -->
    -  <name>org.jooq.util.DefaultGenerator</name>
    -
    -  <!-- The naming strategy used for class and field names.
    -       You may override this with your custom naming strategy. Some examples follow
    -       Defaults to org.jooq.util.DefaultGeneratorStrategy -->
    -  <strategy>
    -    <name>org.jooq.util.DefaultGeneratorStrategy</name>
    -  </strategy>
    -</generator>]]></xml><html>
    -
    -							<p>
    -								The following example shows how you can override the DefaultGeneratorStrategy to render table and column names the way they are defined in the database, rather than switching them to camel case:
    -							</p>
    -
    -</html><java><![CDATA[/**
    - * It is recommended that you extend the DefaultGeneratorStrategy. Most of the
    - * GeneratorStrategy API is already declared final. You only need to override any
    - * of the following methods, for whatever generation behaviour you'd like to achieve
    - *
    - * Beware that most methods also receive a "Mode" object, to tell you whether a
    - * TableDefinition is being rendered as a Table, Record, POJO, etc. Depending on
    - * that information, you can add a suffix only for TableRecords, not for Tables
    - */
    -public class AsInDatabaseStrategy extends DefaultGeneratorStrategy {
    -
    -    /**
    -     * Override this to specifiy what identifiers in Java should look like.
    -     * This will just take the identifier as defined in the database.
    -     */
    -    @Override
    -    public String getJavaIdentifier(Definition definition) {
    -        return definition.getOutputName();
    -    }
    -
    -    /**
    -     * Override these to specify what a setter in Java should look like. Setters
    -     * are used in TableRecords, UDTRecords, and POJOs. This example will name
    -     * setters "set[NAME_IN_DATABASE]"
    -     */
    -    @Override
    -    public String getJavaSetterName(Definition definition, Mode mode) {
    -        return "set" + definition.getOutputName();
    -    }
    -
    -    /**
    -     * Just like setters...
    -     */
    -    @Override
    -    public String getJavaGetterName(Definition definition, Mode mode) {
    -        return "get" + definition.getOutputName();
    -    }
    -
    -    /**
    -     * Override this method to define what a Java method generated from a database
    -     * Definition should look like. This is used mostly for convenience methods
    -     * when calling stored procedures and functions. This example shows how to
    -     * set a prefix to a CamelCase version of your procedure
    -     */
    -    @Override
    -    public String getJavaMethodName(Definition definition, Mode mode) {
    -        return "call" + org.jooq.tools.StringUtils.toCamelCase(definition.getOutputName());
    -    }
    -
    -    /**
    -     * Override this method to define how your Java classes and Java files should
    -     * be named. This example applies no custom setting and uses CamelCase versions
    -     * instead
    -     */
    -    @Override
    -    public String getJavaClassName(Definition definition, Mode mode) {
    -        return super.getJavaClassName(definition, mode);
    -    }
    -
    -    /**
    -     * Override this method to re-define the package names of your generated
    -     * artefacts.
    -     */
    -    @Override
    -    public String getJavaPackageName(Definition definition, Mode mode) {
    -        return super.getJavaPackageName(definition, mode);
    -    }
    -
    -    /**
    -     * Override this method to define how Java members should be named. This is
    -     * used for POJOs and method arguments
    -     */
    -    @Override
    -    public String getJavaMemberName(Definition definition, Mode mode) {
    -        return definition.getOutputName();
    -    }
    -
    -    /**
    -     * Override this method to define the base class for those artefacts that
    -     * allow for custom base classes
    -     */
    -    @Override
    -    public String getJavaClassExtends(Definition definition, Mode mode) {
    -        return Object.class.getName();
    -    }
    -
    -    /**
    -     * Override this method to define the interfaces to be implemented by those
    -     * artefacts that allow for custom interface implementation
    -     */
    -    @Override
    -    public List<String> getJavaClassImplements(Definition definition, Mode mode) {
    -        return Arrays.asList(Serializable.class.getName(), Cloneable.class.getName());
    -    }
    -
    -    /**
    -     * Override this method to define the suffix to apply to routines when
    -     * they are overloaded.
    -     *
    -     * Use this to resolve compile-time conflicts in generated source code, in
    -     * case you make heavy use of procedure overloading
    -     */
    -    @Override
    -    public String getOverloadSuffix(Definition definition, Mode mode, String overloadIndex) {
    -        return "_OverloadIndex_" + overloadIndex;
    -    }
    -}]]></java><html>
    -
    -                            <h3>jooq-meta configuration</h3>
    -							<p>
    -								Within the &lt;generator/&gt; element, there are other configuration elements:
    -							</p>
    -
    -</html><xml><![CDATA[<!-- These properties can be added to the database element: -->
    -<database>
    -
    -  <!-- All table and view columns that are used as "version" fields for
    -       optimistic locking (several Java regular expressions, separated by comma).
    -       See UpdatableRecord.store() and UpdatableRecord.delete() for details -->
    -  <recordVersionFields>REC_VERSION</recordVersionFields/>
    -
    -  <!-- All table and view columns that are used as "timestamp" fields for
    -       optimistic locking (several Java regular expressions, separated by comma).
    -       See UpdatableRecord.store() and UpdatableRecord.delete() for details -->
    -  <recordTimestampFields>REC_TIMESTAMP</recordTimestampFields/>
    -      
    -  <!-- Generate java.sql.Timestamp fields for DATE columns. This is
    -       particularly useful for Oracle databases.
    -       Defaults to false -->
    -  <dateAsTimestamp>false</dateAsTimestamp>
    -
    -  <!-- Generate jOOU data types for your unsigned data types, which are
    -       not natively supported in Java.
    -       Defaults to true -->
    -  <unsignedTypes>true</unsignedTypes>
    -
    -  <!-- The schema that is used in generated source code. This will be the
    -       production schema. Use this to override your local development
    -       schema name for source code generation. If not specified, this
    -       will be the same as the input-schema. -->
    -  <outputSchema>[your database schema / owner / name]</outputSchema>
    -
    -  <!-- A configuration element to configure several input and/or output
    -       schemata for jooq-meta, in case you're using jooq-meta in a multi-
    -       schema environment.
    -       This cannot be combined with the above inputSchema / outputSchema -->
    -  <schemata>
    -    <schema>
    -      <inputSchema>...</inputSchema>
    -      <outputSchema>...</outputSchema>
    -    </schema>
    -    [ <schema>...</schema> ... ]
    -  </schemata>
    -
    -  <!-- A configuration element to configure master data table enum classes -->
    -  <masterDataTables>...</masterDataTables>
    -
    -  <!-- A configuration element to configure custom data types -->
    -  <customTypes>...</customTypes>
    -
    -  <!-- A configuration element to configure type overrides for generated
    -       artefacts (e.g. in combination with customTypes) -->
    -  <forcedTypes>...</forcedTypes>
    -</database>]]></xml><html>
    -
    -							<p>
    -								Check out the some of the manual's "advanced" sections to find out more about the advanced configuration parameters.
    -							</p>
    -							<ul>
    -								<li><reference id="schema-mapping" title="Schema mapping"/></li>
    -								<li><reference id="master-data-types" title="Master data types"/></li>
    -								<li><reference id="custom-data-types" title="Custom types"/></li>
    -							</ul>
    -
    -							<h3>jooq-codegen configuration</h3>
    -                            <p>
    -                            	Also, you can add some optional advanced configuration parameters for the generator:
    -                           	</p>
    -
    -</html><xml><![CDATA[<!-- These properties can be added to the generate element: -->
    -<generate>
    -  <!-- Primary key / foreign key relations should be generated and used.
    -       This is a prerequisite for various advanced features.
    -       Defaults to true -->
    -  <relations>true</relations>
    -
    -  <!-- Generate navigation methods to navigate foreign key relationships
    -       directly from Record classes. This is only relevant if relations
    -       is set to true, too.
    -       Defaults to true -->
    -  <navigationMethods>true</navigationMethods>
    -
    -  <!-- Generate deprecated code for backwards compatibility
    -       Defaults to true -->
    -  <deprecated>true</deprecated>
    -
    -  <!-- Generate instance fields in your tables, as opposed to static
    -       fields. This simplifies aliasing.
    -       Defaults to true -->
    -  <instanceFields>true</instanceFields>
    -
    -  <!-- Generate the javax.annotation.Generated annotation to indicate
    -       jOOQ version used for source code.
    -       Defaults to true -->
    -  <generatedAnnotation>true</generatedAnnotation>
    -
    -  <!-- Generate jOOQ Record classes for type-safe querying. You can
    -       turn this off, if you don't need "active records" for CRUD
    -       Defaults to true -->
    -  <records>true</records>
    -
    -  <!-- Generate POJOs in addition to Record classes for usage of the
    -       ResultQuery.fetchInto(Class) API
    -       Defaults to false -->
    -  <pojos>false</pojos>
    -
    -  <!-- Generate immutable POJOs for usage of the ResultQuery.fetchInto(Class) API
    -       This overrides any value set in <pojos/>
    -       Defaults to false -->
    -  <immutablePojos>false</immutablePojos>
    -
    -  <!-- Generate interfaces that will be implemented by records and/or pojos.
    -       You can also use these interfaces in Record.into(Class<?>) and similar
    -       methods, to let jOOQ return proxy objects for them.
    -       Defaults to false -->
    -  <interfaces>false</interfaces>
    -
    -  <!-- Generate DAOs in addition to POJO classes
    -       Defaults to false -->
    -  <daos>false</daos>
    -
    -  <!-- Annotate POJOs and Records with JPA annotations for increased
    -       compatibility and better integration with JPA/Hibernate, etc
    -       Defaults to false -->
    -  <jpaAnnotations>false</jpaAnnotations>
    -
    -  <!-- Annotate POJOs and Records with JSR-303 validation annotations
    -       Defaults to false -->
    -  <validationAnnotations>false</validationAnnotations>
    -</generate>]]></xml></content>
    -					</section>
    -
    -				    <section id="codegen-globals">
    -						<title>Generated global artefacts</title>
    -						<content><html>
    -							<p>
    -								For increased convenience at the use-site, jOOQ generates "global" artefacts at the code generation root location, referencing tables, routines, sequences, etc. In detail, these global artefacts include the following:
    -							</p>
    -							<ul>
    -								<li><strong>Keys.java</strong>: This file contains all of the required primary key, unique key, foreign key and identity references in the form of static members of type <reference class="org.jooq.Key"/>.</li>
    -								<li><strong>Routines.java</strong>: This file contains all standalone routines (not in packages) in the form of static factory methods for <reference class="org.jooq.Routine"/> types.</li>
    -								<li><strong>Sequences.java</strong>: This file contains all sequence objects in the form of static members of type <reference class="org.jooq.Sequence"/>.</li>
    -								<li><strong>Tables.java</strong>: This file contains all table objects in the form of static member references to the actual singleton <reference class="org.jooq.Table"/> object</li>
    -								<li><strong>UDTs.java</strong>: This file contains all UDT objects in the form of static member references to the actual singleton <reference class="org.jooq.UDT"/> object</li>
    -							</ul>
    -							
    -							<h3>Referencing global artefacts</h3>
    -							<p>
    -								When referencing global artefacts from your client application, you would typically static import them as such:
    -							</p>
    -							
    -</html><java><![CDATA[// Static imports for all global artefacts
    -import static com.example.generated.Routines.*;
    -import static com.example.generated.Sequences.*;
    -import static com.example.generated.Tables.*;
    -
    -// You could then reference your artefacts as follows:
    -create.insertInto(MY_TABLE)
    -      .values(MY_SEQUENCE.nextval(), myFunction())
    -      
    -// as a more concise form of this:
    -create.insertInto(com.example.generated.Tables.MY_TABLE)
    -      .values(com.example.generated.Sequences.MY_SEQUENCE.nextval(), com.example.generated.Routines.myFunction())]]></java></content>
    -					</section>
    -
    -				    <section id="codegen-tables">
    -						<title>Generated tables</title>
    -						<content><html>
    -							<p>
    -								Every table in your database will generate a <reference class="org.jooq.Table"/> implementation that looks like this:
    -							</p>
    -							
    -</html><java><![CDATA[public class Book extends UpdatableTableImpl<BookRecord> {
    -
    -    // The singleton instance
    -    public static final Book BOOK = new Book();
    -
    -    // Generated columns
    -    public final TableField<BookRecord, Integer> ID        = createField("ID",        SQLDataType.INTEGER, this);
    -    public final TableField<BookRecord, Integer> AUTHOR_ID = createField("AUTHOR_ID", SQLDataType.INTEGER, this);
    -    public final TableField<BookRecord, String>  ITLE      = createField("TITLE",     SQLDataType.VARCHAR, this);
    -
    -    // Covariant aliasing method, returning a table of the same type as BOOK
    -    @Override
    -    public Book as(java.lang.String alias) {
    -        return new Book(alias);
    -    }
    -    
    -    // [...]
    -}]]></java><html>
    -
    -							<h3>Flags influencing generated tables</h3>
    -							<p>
    -								These flags from the <reference id="codegen-advanced" title="code generation configuration"/> influence generated tables:
    -							</p>
    -							<ul>
    -								<li><strong>recordVersionFields</strong>: Relevant methods from super classes are overridden to return the VERSION field</li>
    -								<li><strong>recordTimestampFields</strong>: Relevant methods from super classes are overridden to return the TIMESTAMP field</li>
    -								<li><strong>dateAsTimestamp</strong>: This influences all relevant columns</li>
    -								<li><strong>unsignedTypes</strong>: This influences all relevant columns</li>
    -								<li><strong>relations</strong>: Relevant methods from super classes are overridden to provide primary key, unique key, foreign key and identity information</li>
    -								<li><strong>instanceFields</strong>: This flag controls the "static" keyword on table columns, as well as aliasing convenience</li>
    -								<li><strong>records</strong>: The generated record type is referenced from tables allowing for type-safe single-table record fetching</li>
    -							</ul>
    -							
    -							<h3>Flags controlling table generation</h3>
    -							<p>
    -								Table generation cannot be deactivated
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-records">
    -						<title>Generated records</title>
    -						<content><html>
    -							<p>
    -								Every table in your database will generate a <reference class="org.jooq.Table"/> implementation that looks like this:
    -							</p>
    -							
    -</html><java><![CDATA[// JPA annotations can be generated, optionally
    -@Entity
    -@Table(name = "BOOK", schema = "TEST")
    -public class BookRecord extends UpdatableRecordImpl<BookRecord> 
    -
    -// An interface common to records and pojos can be generated, optionally
    -implements IBook {
    -
    -    // Every column generates a setter and a getter
    -    @Override
    -    public void setId(Integer value) {
    -        setValue(BOOK.ID, value);
    -    }
    -    
    -    @Id
    -    @Column(name = "ID", unique = true, nullable = false, precision = 7)
    -    @Override
    -    public Integer getId() {
    -        return getValue(BOOK.ID);
    -    }
    -    
    -    // More setters and getters
    -    public void setAuthorId(Integer value) {...}
    -    public Integer getAuthorId() {...}
    -    
    -    // Convenience methods for foreign key methods
    -    public void setAuthorId(AuthorRecord value) {
    -        if (value == null) {
    -            setValue(BOOK.AUTHOR_ID, null);
    -        }
    -        else {
    -            setValue(BOOK.AUTHOR_ID, value.getValue(AUTHOR.ID));
    -        }
    -    }
    -    
    -    // Navigation methods
    -    public AuthorRecord fetchAuthor() {
    -        return create().selectFrom(AUTHOR).where(AUTHOR.ID.equal(getValue(BOOK.AUTHOR_ID))).fetchOne();
    -    }
    -    
    -    // [...]
    -}]]></java><html>							
    -							
    -							<h3>Flags influencing generated records</h3>
    -							<p>
    -								These flags from the <reference id="codegen-advanced" title="code generation configuration"/> influence generated records:
    -							</p>
    -							<ul>
    -								<li><strong>dateAsTimestamp</strong>: This influences all relevant getters and setters</li>
    -								<li><strong>unsignedTypes</strong>: This influences all relevant getters and setters</li>
    -								<li><strong>relations</strong>: This is needed as a prerequisite for navigation methods</li>
    -								<li><strong>navigationMethods</strong>: This controls whether navigation methods will be generated or not</li>
    -								<li><strong>daos</strong>: Records are a pre-requisite for DAOs. If DAOs are generated, records are generated as well</li>
    -								<li><strong>interfaces</strong>: If interfaces are generated, records will implement them</li>
    -								<li><strong>jpaAnnotations</strong>: JPA annotations are used on generated records</li>
    -							</ul>
    -														
    -							<h3>Flags controlling record generation</h3>
    -							<p>
    -								Record generation can be deactivated using the <strong>records</strong> flag
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-pojos">
    -						<title>Generated POJOs</title>
    -						<content><html>
    -							<p>
    -								Every table in your database will generate a POJO implementation that looks like this:
    -							</p>
    -							
    -</html><java><![CDATA[// JPA annotations can be generated, optionally
    -@javax.persistence.Entity
    -@javax.persistence.Table(name = "BOOK", schema = "TEST")
    -public class Book implements java.io.Serializable
    -
    -// An interface common to records and pojos can be generated, optionally
    -, IBook {
    -
    -    // JSR-303 annotations can be generated, optionally
    -    @NotNull
    -    private Integer id;
    -
    -    @NotNull
    -    private Integer authorId;
    -
    -    @NotNull
    -    @Size(max = 400)
    -    private String title;
    -
    -    // Every column generates a getter and a setter
    -    @Id
    -    @Column(name = "ID", unique = true, nullable = false, precision = 7)
    -    @Override
    -    public Integer getId() {
    -        return this.id;
    -    }
    -
    -    @Override
    -    public void setId(Integer id) {
    -        this.id = id;
    -    }
    -    
    -    // [...]
    -}]]></java><html>							
    -							
    -							<h3>Flags influencing generated POJOs</h3>
    -							<p>
    -								These flags from the <reference id="codegen-advanced" title="code generation configuration"/> influence generated POJOs:
    -							</p>
    -							<ul>
    -								<li><strong>dateAsTimestamp</strong>: This influences all relevant getters and setters</li>
    -								<li><strong>unsignedTypes</strong>: This influences all relevant getters and setters</li>
    -								<li><strong>interfaces</strong>: If interfaces are generated, POJOs will implement them</li>
    -								<li><strong>immutablePojos</strong>: Immutable POJOs have final members and no setters. All members must be passed to the constructor</li>
    -								<li><strong>daos</strong>: POJOs are a pre-requisite for DAOs. If DAOs are generated, POJOs are generated as well</li>
    -								<li><strong>jpaAnnotations</strong>: JPA annotations are used on generated records</li>
    -								<li><strong>validationAnnotations</strong>: JSR-303 validation annotations are used on generated records</li>
    -							</ul>
    -														
    -							<h3>Flags controlling POJO generation</h3>
    -							<p>
    -								POJO generation can be activated using the <strong>pojos</strong> flag
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-interfaces">
    -						<title>Generated Interfaces</title>
    -						<content><html>
    -							<p>
    -								Every table in your database will generate an interface that looks like this:
    -							</p>
    -							
    -</html><java><![CDATA[public interface IBook extends java.io.Serializable {
    -
    -    // Every column generates a getter and a setter
    -    public void setId(Integer value);
    -    public Integer getId();
    -    
    -    // [...]
    -}]]></java><html>    						
    -							
    -							<h3>Flags influencing generated interfaces</h3>
    -							<p>
    -								These flags from the <reference id="codegen-advanced" title="code generation configuration"/> influence generated interfaces:
    -							</p>
    -							<ul>
    -								<li><strong>dateAsTimestamp</strong>: This influences all relevant getters and setters</li>
    -								<li><strong>unsignedTypes</strong>: This influences all relevant getters and setters</li>
    -							</ul>
    -														
    -							<h3>Flags controlling POJO generation</h3>
    -							<p>
    -								POJO generation can be activated using the <strong>interfaces</strong> flag
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-daos">
    -						<title>Generated DAOs</title>
    -						<content><html>
    -							<h3>Generated DAOs</h3>
    -							<p>
    -								Every table in your database will generate a <reference class="org.jooq.DAO"/> implementation that looks like this:
    -							</p>
    -							
    -</html><java><![CDATA[public class BookDao extends DAOImpl<BookRecord, Book, Integer> {
    -
    -    // Generated constructors
    -    public BookDao() {
    -        super(BOOK, Book.class);
    -    }
    -
    -    public BookDao(Factory factory) {
    -        super(BOOK, Book.class, factory);
    -    }
    -
    -    // Every column generates at least one fetch method
    -    public List<Book> fetchById(Integer... values) {
    -        return fetch(BOOK.ID, values);
    -    }
    -
    -    public Book fetchOneById(Integer value) {
    -        return fetchOne(BOOK.ID, value);
    -    }
    -
    -    public List<Book> fetchByAuthorId(Integer... values) {
    -        return fetch(BOOK.AUTHOR_ID, values);
    -    }
    -    
    -    // [...]
    -}]]></java><html>							
    -							
    -							<h3>Flags controlling DAO generation</h3>
    -							<p>
    -								DAO generation can be activated using the <strong>daos</strong> flag
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-sequences">
    -						<title>Generated sequences</title>
    -						<content><html>
    -							<p>
    -								Every sequence in your database will generate a <reference class="org.jooq.Sequence"/> implementation that looks like this:
    -							</p>
    -							
    -</html><java><![CDATA[public final class Sequences {
    -
    -    // Every sequence generates a member
    -    public static final Sequence<Integer> S_AUTHOR_ID = new SequenceImpl<Integer>("S_AUTHOR_ID", TEST, SQLDataType.INTEGER);
    -}]]></java><html>		
    -							
    -							<h3>Flags controlling sequence generation</h3>
    -							<p>
    -								Sequence generation cannot be deactivated
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-procedures">
    -						<title>Generated procedures</title>
    -						<content><html>
    -							<p>
    -								Every procedure or function (routine) in your database will generate a <reference class="org.jooq.Routine"/> implementation that looks like this:
    -							</p>
    -
    -</html><java><![CDATA[public class AuthorExists extends AbstractRoutine<java.lang.Void> {
    -
    -    // All IN, IN OUT, OUT parameters and function return values generate a static member
    -    public static final Parameter<String>     AUTHOR_NAME = createParameter("AUTHOR_NAME", SQLDataType.VARCHAR);
    -    public static final Parameter<BigDecimal> RESULT      = createParameter("RESULT",      SQLDataType.NUMERIC);
    -
    -    // A constructor for a new "empty" procedure call
    -    public AuthorExists() {
    -        super("AUTHOR_EXISTS", TEST);
    -
    -        addInParameter(AUTHOR_NAME);
    -        addOutParameter(RESULT);
    -    }
    -
    -    // Every IN and IN OUT parameter generates a setter
    -    public void setAuthorName(String value) {
    -        setValue(AUTHOR_NAME, value);
    -    }
    -
    -    // Every IN OUT, OUT and RETURN_VALUE generates a getter
    -    public BigDecimal getResult() {
    -        return getValue(RESULT);
    -    }
    -    
    -    // [...]
    -}]]></java><html>
    -
    -							<h3>Package and member procedures or functions</h3>
    -							<p>
    -								Procedures or functions contained in packages or UDTs are generated in a sub-package that corresponds to the package or UDT name.
    -							</p>
    -
    -							<h3>Flags controlling routine generation</h3>
    -							<p>
    -								Routine generation cannot be deactivated
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-udts">
    -						<title>Generated UDTs</title>
    -						<content><html>
    -							<p>
    -								Every UDT in your database will generate a <reference class="org.jooq.UDT"/> implementation that looks like this:
    -							</p>
    -						
    -</html><java><![CDATA[public class AddressType extends UDTImpl<AddressTypeRecord> {
    -
    -    // The singleton UDT instance
    -    public static final UAddressType U_ADDRESS_TYPE = new UAddressType();
    -
    -    // Every UDT attribute generates a static member
    -    public static final UDTField<AddressTypeRecord, String> ZIP     = 
    -      createField("ZIP",     SQLDataType.VARCHAR, U_ADDRESS_TYPE);
    -    public static final UDTField<AddressTypeRecord, String> CITY    = 
    -      createField("CITY",    SQLDataType.VARCHAR, U_ADDRESS_TYPE);
    -    public static final UDTField<AddressTypeRecord, String> COUNTRY = 
    -      createField("COUNTRY", SQLDataType.VARCHAR, U_ADDRESS_TYPE);
    -    
    -    // [...]
    -}]]></java><html>						
    -										
    -							<p>
    -								Besides the <reference class="org.jooq.UDT"/> implementation, a <reference class="org.jooq.UDTRecord"/> implementation is also generated
    -							</p>		
    -
    -</html><java><![CDATA[public class AddressTypeRecord extends UDTRecordImpl<AddressTypeRecord> {
    -
    -    // Every attribute generates a getter and a setter
    -
    -    public void setZip(String value) {...}
    -    public String getZip() {...}
    -    public void setCity(String value) {...}
    -    public String getCity() {...}
    -    public void setCountry(String value) {...}
    -    public String getCountry() {...}
    -    
    -    // [...]
    -}]]></java><html>						
    -
    -							<h3>Flags controlling UDT generation</h3>
    -							<p>
    -								UDT generation cannot be deactivated
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="master-data-types">
    -						<title>Master data and enumeration tables</title>
    -						<content><html>
    -							<p>
    -								<strong>NOTE</strong>: This feature is deprecated in jOOQ 2.5.0 and will be removed as of jOOQ 3.0
    -							</p>
    -							<p>
    -								Only MySQL and Postgres databases support true ENUM types natively. Some other RDBMS allow you to map the concept of an ENUM data type to a CHECK constraint, but those constraints can contain arbitrary SQL. With jOOQ, you can "simulate" ENUM types by declaring a table as a "master data table" in the configuration. At code-generation time, this table will be treated specially, and a Java enum type is generated from its data.
    -							</p>
    -
    -							<h3>Configure master data tables</h3>
    -							<p>
    -								As previously discussed, you can configure master data tables as follows:
    -							</p>
    -							
    -</html><xml><![CDATA[<!-- These properties can be added to the database element: -->
    -<database>
    -  <masterDataTables>
    -    <masterDataTable>
    -      <!-- The name of a master data table -->
    -      <name>[a table name]</name>
    -
    -      <!-- The column used for enum literals -->
    -      <literal>[a column name]</literal>
    -
    -      <!-- The column used for documentation -->
    -      <description>[a column name]</description>
    -    </masterDataTable>
    -
    -    [ <masterDataTable>...</masterDataTable> ... ]
    -  </masterDataTables>
    - </database>]]></xml><html>
    -
    -							<p>
    -								The results of this will be a Java enum that looks similar to this:
    -							</p>
    -							
    -</html><java><![CDATA[public enum Language implements MasterDataType<Integer> {
    -
    -  /**
    -   * English
    -   */
    -  en(1, "en", "English"),
    -
    -  /**
    -   * Deutsch
    -   */
    -  de(2, "de", "Deutsch"),
    -
    -  /**
    -   * Français
    -   */
    -  fr(3, "fr", "Français"),
    -
    -  /**
    -   * null
    -   */
    -  pt(4, "pt", null),
    -  ;
    -
    -  private final Integer id;
    -  private final String cd;
    -  private final String description;
    -
    -  // [ ... constructor and getters for the above properties ]
    -}]]></java><html>
    -
    -							<p>
    -								In the above example, you can see how the configured primary key is mapped to the id member, the configured literal column is mapped to the cd member and the configured description member is mapped to the description member and output as Javadoc. In other words, T_LANGUAGE is a table with 4 rows and at least three columns.
    -							</p>
    -							
    -							<p>
    -								The general contract is that there must be
    -							</p>
    -							<ul>
    -								<li>A single-column primary key column of character or integer type</li>
    -								<li>An optional unique literal column of character or integer type (otherwise, the primary key is used as enum literal) </li>
    -								<li>An optional description column of any type </li>
    -							</ul>
    -
    -							<h3>Using MasterDataTypes</h3>
    -							<p>
    -								The point of MasterDataTypes in jOOQ is that they behave exactly like true ENUM types. When the above T_LANGUAGE table is referenced by T_BOOK, instead of generating foreign key navigation methods and a LANGUAGE_ID Field&lt;Integer&gt;, a Field&lt;TLanguage&gt; is generated:
    -							</p>
    -
    -</html><java><![CDATA[public class Book extends UpdatableTableImpl<BookRecord> {
    -
    -  // [...]
    -  public static final TableField<BookRecord, Language> LANGUAGE_ID =
    -                  new TableFieldImpl<BookRecord, Language>( /* ... */ );
    -}]]></java><html>
    -
    -							<p>
    -								Which can then be used in the BookRecord directly:
    -							</p>
    -							
    -</html><java><![CDATA[public class BookRecord extends UpdatableRecordImpl<BookRecord> {
    -
    -  // [...]
    -  public Language getLanguageId() { // [...]
    -  public void setLanguageId(Language value) { // [...]
    -}]]></java><html>
    -
    -							<h3>When to use MasterDataTypes</h3>
    -							<p>
    -								You can use master data types when you're actually mapping master data to a Java enum. When the underlying table changes frequently, those updates will not be reflected by the statically generated code. Also, be aware that it will be difficult to perform actual JOIN operations on the underlying table with jOOQ, once the master data type is generated.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="custom-data-types">
    -						<title>Custom data types and type conversion</title>
    -						<content><html>
    -							<p>
    -								When using a custom type in jOOQ, you need to let jOOQ know about its associated <reference class="org.jooq.Converter"/>. Ad-hoc usages of such converters has been discussed in the chapter about <reference id="data-type-conversion" title="data type conversion"/>. A more common use-case, however, is to let jOOQ know about custom types at code generation time. Use the following configuration elements to specify, that you'd like to use GregorianCalendar for all database fields that start with DATE_OF_
    -      						</p>
    -
    -</html><xml><![CDATA[<database>
    -  <!-- First, register your custom types here -->
    -  <customTypes>
    -    <customType>
    -      <!-- Specify the fully-qualified class name of your custom type -->
    -      <name>java.util.GregorianCalendar</name>
    -
    -      <!-- Associate that custom type with your converter. Note, a
    -           custom type can only have one converter in jOOQ -->
    -      <converter>com.example.CalendarConverter</converter>
    -    </customType>
    -  </customTypes>
    -
    -  <!-- Then, associate custom types with database columns -->
    -  <forcedTypes>
    -    <forcedType>
    -      <!-- Specify again he fully-qualified class name of your custom type -->
    -      <name>java.util.GregorianCalendar</name>
    -
    -      <!-- Add a list of comma-separated regular expressions matching columns -->
    -      <expressions>.*\.DATE_OF_.*</expressions>
    -    </forcedType>
    -  </forcedTypes>
    -</database>]]></xml><html>
    -
    -                            <p>
    -                            	The above configuration will lead to AUTHOR.DATE_OF_BIRTH being generated like this:
    -                            </p>
    -
    -</html><java><![CDATA[public class TAuthor extends UpdatableTableImpl<TAuthorRecord> {
    -
    -    // [...]
    -    public final TableField<TAuthorRecord, GregorianCalendar> DATE_OF_BIRTH =    // [...]
    -    // [...]
    -
    -}]]></java><html>
    -
    -                            <p>
    -                            	This means that the bound type of &lt;T&gt; will be GregorianCalendar, wherever you reference DATE_OF_BIRTH. jOOQ will use your custom converter when binding variables and when fetching data from <reference class="java.util.ResultSet"/>:
    -                            </p>
    -
    -</html><java><![CDATA[// Get all date of births of authors born after 1980
    -List<GregorianCalendar> result =
    -create.selectFrom(AUTHOR)
    -      .where(AUTHOR.DATE_OF_BIRTH.greaterThan(new GregorianCalendar(1980, 0, 1)))
    -      .fetch(AUTHOR.DATE_OF_BIRTH);]]></java></content>
    -					</section>
    -
    -				    <section id="schema-mapping">
    -						<title>Mapping generated schemata and tables</title>
    -						<content><html>
    -							<p>
    -								We've seen previously in the chapter about <reference id="runtime-schema-mapping" title="runtime schema mapping"/>, that schemata and tables can be mapped at runtime to other names. But you can also hard-wire schema mapping in generated artefacts at code generation time, e.g. when you have 5 developers with their own dedicated developer databases, and a common integration database. In the code generation configuration, you would then write.
    -							</p>
    -
    -</html><xml><![CDATA[<schemata>
    -  <schema>
    -    <!-- Use this as the developer's schema: -->
    -    <inputSchema>LUKAS_DEV_SCHEMA</inputSchema>
    -
    -    <!-- Use this as the integration / production database: -->
    -    <outputSchema>PROD</outputSchema>
    -  </schema>
    -</schemata>]]></xml></content>
    -					</section>
    -				</sections>
    -			</section>
    -
    -			<section id="tools">
    -				<title>Tools</title>
    -				<content><html>
    -					<p>
    -						These chapters hold some information about tools to be used with jOOQ
    -					</p>
    -				</html></content>
    -
    -				<sections>
    -					<section id="jooq-console">
    -						<title>jOOQ Console</title>
    -						<content><html>
    -							<p>
    -							    The <reference id="execute-listeners" title="ExecuteListener API"/> was driven by a feature request by Christopher Deckers, who has had the courtesy to contribute the jOOQ Console, a sample application interfacing with jOOQ's ExecuteListeners. The jOOQ Console logs all queries executed by jOOQ and displays them nicely in a Swing application. With the jOOQ Console's logger, you can:
    -						    </p>
    -						    <ul>
    -						    	<li>Activate the console's DebugListener anytime (in-process or if the remote server is active).</li>
    -						    	<li>View simple and batch queries and their parameters.</li>
    -						    	<li>Reformat queries along with syntax highlighting for better readability.</li>
    -						    	<li>View stack trace of originator of the call.</li>
    -						    	<li>Dump the stack to stdout when in an IDE, to directly navigate to relevant classes.</li>
    -						    	<li>Track execution time, binding time, parsing time, rows read, fields read.</li>
    -						    	<li>Show/hide queries depending on their type (SELECT, UPDATE, etc.).</li>
    -						    	<li>Sort any column (timing columns, queries, types, etc.)</li>
    -						    	<li>Easy copy paste of rows/columns to Spreadsheet editors.</li>
    -						    </ul>
    -
    -						    <p>
    -						    	A short overview of such a debugging session can be seen here:
    -						    </p>
    -   							<div class="screenshot">
    -								<img class="screenshot" src="&lt;?=$root?&gt;/img/jooq-console-01.png" alt="jOOQ Console example"/>
    -							</div>
    -						    <p>
    -							    Please note that the jOOQ Console is still experimental. Any feedback is very welcome on <br/>
    -							    <a href="http://groups.google.com/group/jooq-user" title="the jooq-user group">the jooq-user group</a>
    -							</p>
    -
    -							<h3>jOOQ Console operation modes</h3>
    -							<p>
    -								The jOOQ Console can be run in two different modes:
    -							</p>
    -							<ul>
    -								<li>In-process mode: running in the same process as the queries you're analysing</li>
    -								<li>"headless" mode: running remotely</li>
    -							</ul>
    -
    -							<p>
    -								Both modes will require that you set the <reference class="org.jooq.debug.DebugListener"/> in the Factory's settings. When using XML settings:
    -							</p>
    -
    -</html><xml><![CDATA[<settings>
    -  <executeListeners>
    -    <executeListener>org.jooq.debug.DebugListener</executeListener>
    -  </executeListeners>
    -</settings>]]></xml><html>
    -
    -							<p>
    -								Or when using programmatic settings:
    -							</p>
    -							
    -</html><java><![CDATA[Settings settings = new Settings()
    -    .getExecuteListeners().add("org.jooq.debug.DebugListener");
    -Factory factory = new Factory(connection, dialect, settings);]]></java><html>
    -
    -							<h3>In-process mode</h3>
    -							<p>
    -								The in-process mode is useful for Swing applications or other, locally run Java programs accessing the database via jOOQ. In order to launch the jOOQ Console "in-process", specify the previously documented settings and launch the Console as follows:
    -							</p>
    -
    -</html><java><![CDATA[// Define a DatabaseDescriptor for the "in-process" mode
    -// It is needed for the "Editor" tab
    -DatabaseDescriptor descriptor = new DatabaseDescriptor() {
    -
    -    // Return your generated schema. This is used by the console
    -    // to introspect your schema data
    -    @Override
    -    public Schema getSchema() {
    -        return com.example.MySchema.MY_SCHEMA;
    -    }
    -
    -    // Return the SQL dialect that you're using
    -    @Override
    -    public SQLDialect getSQLDialect() {
    -        return SQLDialect.ORACLE;
    -    }
    -
    -    // Return a connection
    -    @Override
    -    public Connection createConnection() {
    -        try {
    -            return DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "test", "test");
    -        }
    -        catch (Exception ignore) {}
    -    }
    -};
    -
    -// Now pass this database descriptor to the Console and make it visible
    -try {
    -
    -    // Use this for a nicer look-and-feel
    -    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    -
    -    // Create a new Console
    -    Console console = new Console(descriptor, true);
    -    console.setLoggingActive(true);
    -    console.setVisible(true);
    -}
    -catch (Exception ignore) {}
    -]]></java><html>
    -
    -							<p>
    -								Only in the in-process mode, you can execute ad-hoc queries directly from the console, if you provide it with proper DatabaseDescriptor. These queries are executed from the Editor pane which features:
    -							</p>
    -							<ul>
    -								<li>SQL editing within the console.</li>
    -								<li>Incremental search on tables.</li>
    -								<li>Simple code completion with tables/columns/SQL keywords.</li>
    -								<li>Syntax highlighting and formatting capabilities.</li>
    -								<li>Results shown in one or several tabs.</li>
    -								<li>Easy analysis of Logger output by copy/pasting/running queries in the Editor.</li>
    -							</ul>
    -   							<div class="screenshot">
    -								<img class="screenshot" src="&lt;?=$root?&gt;/img/jooq-console-02.png" alt="jOOQ Console example"/>
    -							</div>
    -
    -                            <h3>"Headless" mode</h3>
    -							<p>
    -								In J2EE or other server/client environments, you may not be able to run the console in the same process as your application. You can then run the jOOQ Console in "headless" mode. In addition to the previously documented settings, you'll have to start a debugger server in your application process, that the console can connect to:
    -							</p>
    -
    -</html><java>// Create a new RemoteDebuggerServer in your application that listens to
    -// incoming connections on a given port
    -SERVER = new RemoteDebuggerServer(DEBUGGER_PORT);</java><html>
    -
    -							<p>
    -								Now start your application along with the debugger server and launch the console with this command:
    -							</p>
    -
    -</html><config>java -jar jooq-console-2.1.0.jar [host] [port]</config><html>
    -
    -							<p>
    -								Depending on your distribution, you may have to manually add rsyntaxtextarea-1.5.0.jar and jOOQ artefacts on your classpath.
    -							</p>
    -						</html></content>
    -					</section>
    -				</sections>
    -			</section>
    -
    -			<section id="reference">
    -				<title>Reference</title>
    -				<content><html>
    -					<p>
    -						These chapters hold some general jOOQ reference information
    -					</p>
    -				</html></content>
    -
    -				<sections>
    -					<section id="supported-rdbms">
    -						<title>Supported RDBMS</title>
    -						<content><html>
    -							<h3>A list of supported databases</h3>
    -							<p>
    -						   		Every RDMBS out there has its own little specialties. jOOQ considers those specialties as much as possible, while trying to standardise the behaviour in jOOQ. In order to increase the quality of jOOQ, some 70 unit tests are run for syntax and variable binding verification, as well as some 180 integration tests with an overall of around 1200 queries for any of these databases:
    -					   		</p>
    -							<ul>
    -							    <li>CUBRID 8.4.1</li>
    -							    <li>DB2 9.7</li>
    -							    <li>Derby 10.8</li>
    -							    <li>Firebird 2.5.1</li>
    -							    <li>H2 1.3.161</li>
    -							    <li>HSQLDB 2.2.5</li>
    -							    <li>Ingres 10.1.0</li>
    -							    <li>MySQL 5.1.41 and 5.5.8</li>
    -							    <li>Oracle XE 10.2.0.1.0 and 11g</li>
    -							    <li>PostgreSQL 9.0</li>
    -							    <li>SQLite with inofficial JDBC driver v056</li>
    -							    <li>SQL Server 2008 R8</li>
    -							    <li>Sybase Adaptive Server Enterprise 15.5</li>
    -							    <li>Sybase SQL Anywhere 12</li>
    -							</ul>
    -							<p>
    -								These platforms have been observed to work as well, but are not integration-tested
    -							</p>
    -							<ul>
    -								<li>Google Cloud SQL (MySQL)</li>
    -							</ul>
    -								
    -							<h3>Databases planned for support</h3>
    -							<p>
    -								Any of the following databases might be available in the future
    -							</p>
    -						    <ul>
    -							    <li>Informix</li>
    -							    <li>Interbase</li>
    -							    <li>MS Access</li>
    -							    <li>MS Excel</li>
    -							    <li>SQL Azure</li>
    -							    <li>Sybase SQL Anywhere OnDemand</li>
    -							    <li>Teradata</li>
    -						    </ul>
    -						    
    -							<h3>Databases being watched</h3>
    -							<p>
    -								Any of the following databases are being observed for a potential integration
    -							</p>
    -							<ul>
    -								<li>Mondrian</li>
    -								<li>Netezza</li>
    -								<li>SQLFire</li>
    -								<li>Vectorwise</li>
    -								<li>Vertica</li>
    -								<li>VoltDB</li>
    -							</ul>
    -
    -							<h3>Feature matrix</h3>
    -							<p>
    -								This section will soon contain a feature matrix, documenting what feature is available for which database.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -					<section id="reference-data-types">
    -						<title>Data types</title>
    -						<content><html>
    -							<p>
    -								There is always a small mismatch between SQL data types and Java data types. This is for two reasons:
    -							</p>
    -							<ul>
    -								<li>SQL data types are insufficiently covered by the JDBC API.</li>
    -								<li>Java data types are often less expressive than SQL data types</li>
    -							</ul>
    -							<p>
    -								This chapter should document the most important notes about SQL, JDBC and jOOQ data types.
    -							</p>
    -						</html></content>
    -						
    -						<sections>
    -							<section id="data-types-lobs">
    -								<title>BLOBs and CLOBs</title>
    -								<content><html>
    -									<p>
    -										jOOQ currently doesn't explicitly support JDBC BLOB and CLOB data types. If you use any of these data types in your database, jOOQ will map them to byte[] and String instead. In simple cases (small data), this simplification is sufficient. In more sophisticated cases, you may have to bypass jOOQ, in order to deal with these data types and their respective resources. True support for LOBs is on the roadmap, though.
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -							<section id="data-types-unsigned">
    -								<title>Unsigned integer types</title>
    -								<content><html>
    -									<p>
    -										Some databases explicitly support unsigned integer data types. In most normal JDBC-based applications, they would just be mapped to their signed counterparts letting bit-wise shifting and tweaking to the user. jOOQ ships with a set of unsigned <reference class="java.lang.Number"/> implementations modelling the following types:
    -									</p>
    -									<ul>
    -										<li><reference class="org.jooq.tools.unsigned.UByte"/>: Unsigned byte, an 8-bit unsigned integer</li>
    -										<li><reference class="org.jooq.tools.unsigned.UShort"/>: Unsigned short, a 16-bit unsigned integer</li>
    -										<li><reference class="org.jooq.tools.unsigned.UInteger"/>: Unsigned int, a 32-bit unsigned integer</li>
    -										<li><reference class="org.jooq.tools.unsigned.ULong"/>: Unsigned long, a 64-bit unsigned integer</li>
    -									</ul>
    -									<p>
    -										Each of these wrapper types extends <reference class="java.lang.Number"/>, wrapping a higher-level integer type, internally:
    -									</p>
    -									<ul>
    -										<li>UByte wraps <reference class="java.lang.Short"/></li>
    -										<li>UShort wraps <reference class="java.lang.Integer"/></li>
    -										<li>UInteger wraps <reference class="java.lang.Long"/></li>
    -										<li>ULong wraps <reference class="java.math.BigInteger"/></li>
    -									</ul>
    -								</html></content>
    -							</section>
    -							
    -							<section id="data-types-intervals">
    -								<title>INTERVAL data types</title>
    -								<content><html>
    -									<p>
    -										jOOQ fills a gap opened by JDBC, which neglects an important SQL data type as defined by the SQL standards: INTERVAL types. SQL knows two different types of intervals:
    -									</p>
    -									<ul>
    -										<li><strong>YEAR TO MONTH</strong>: This interval type models a number of months and years</li>
    -										<li><strong>DAY TO SECOND</strong>: This interval type models a number of days, hours, minutes, seconds and milliseconds</li>
    -									</ul>
    -									
    -									<p>
    -										Both interval types ship with a variant of subtypes, such as DAY TO HOUR, HOUR TO SECOND, etc. jOOQ models these types as Java objects extending <reference class="java.lang.Number"/>: <reference class="org.jooq.types.YearToMonth"/> (where Number.intValue() corresponds to the absolute number of months) and <reference class="org.jooq.types.DayToSecond"/> (where Number.intValue() corresponds to the absolute number of milliseconds)
    -									</p>
    -									
    -									<h3>Interval arithmetic</h3>
    -									<p>
    -										In addition to the <reference id="arithmetic-expressions" title="arithmetic expressions"/> documented previously, interval arithmetic is also supported by jOOQ. Essentially, the following operations are supported:
    -									</p>
    -									<ul>
    -										<li>DATETIME - DATETIME => INTERVAL</li>
    -										<li>DATETIME + or - INTERVAL => DATETIME</li>
    -										<li>INTERVAL + DATETIME => DATETIME</li>
    -										<li>INTERVAL + - INTERVAL => INTERVAL</li>
    -										<li>INTERVAL * or / NUMERIC => INTERVAL</li>
    -										<li>NUMERIC * INTERVAL => INTERVAL</li>
    -									</ul>
    -								</html></content>
    -							</section>
    -							
    -							<section id="data-types-xml">
    -								<title>XML data types</title>
    -								<content><html>
    -									<p>
    -										XML data types are currently not supported
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -							<section id="data-types-geospacial">
    -								<title>Geospacial data types</title>
    -								<content><html>
    -									<h3>Geospacial data types</h3>
    -									<p>
    -										Geospacial data types are currently not supported
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -							<section id="data-types-cursors">
    -								<title>CURSOR data types</title>
    -								<content><html>
    -									<p>
    -										Some databases support cursors returned from stored procedures. They are mapped to the following jOOQ data type:
    -									</p>
    -
    -</html><java><![CDATA[Field<Result<Record>> cursor;]]></java><html>
    -									
    -									<p>
    -										In fact, such a cursor will be fetched immediately by jOOQ and wrapped in an <reference class="org.jooq.Result"/> object.
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -							<section id="data-types-arrays">
    -								<title>ARRAY and TABLE data types</title>
    -								<content><html>
    -									<p>
    -										The SQL standard specifies ARRAY data types, that can be mapped to Java arrays as such:
    -									</p>
    -									
    -</html><java><![CDATA[Field<Integer[]> intArray;]]></java><html>
    -										
    -									<p>
    -										The above array type is supported by these SQL dialects:
    -									</p>
    -									<ul>
    -										<li>H2</li>
    -										<li>HSQLDB</li>
    -										<li>Postgres</li>
    -									</ul>
    -									
    -									<h3>Oracle typed arrays</h3>
    -									<p>
    -										Oracle has strongly-typed arrays and table types (as opposed to the previously seen anonymously typed arrays). These arrays are wrapped by <reference class="org.jooq.ArrayRecord"/> types.
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="reference-bnf-notation">
    -						<title>jOOQ's BNF pseudo-notation</title>
    -						<content><html>
    -							<p>
    -								This chapter will soon contain an overview over jOOQ's API using a pseudo BNF notation.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -					<section id="reference-credits">
    -						<title>Credits</title>
    -						<content><html>
    -							<p>
    -								jOOQ lives in a very challenging ecosystem. The Java to SQL interface is still one of the most important system interfaces. Yet there are still a lot of open questions, best practices and no "true" standard has been established. This situation gave way to a lot of tools, APIs, utilities which essentially tackle the same problem domain as jOOQ. jOOQ has gotten great inspiration from pre-existing tools and this section should give them some credit. Here is a list of inspirational tools in alphabetical order:
    -							</p>
    -							<ul>
    -								<li><a href="http://avaje.org">Avajé EBean</a>: Play! Framework's preferred ORM has a feature called asynchronous query execution. This idea made it into jOOQ as <reference class="org.jooq.ResultQuery" anchor="#fetchLater()"/></li>
    -								<li><a href="http://www.hibernate.org">Hibernate</a>: The de-facto standard (JPA) with its useful table-to-POJO mapping features have influenced jOOQ's <reference class="org.jooq.ResultQuery" anchor="#fetchInto(java.lang.Class)"/> facilities</li>
    -								<li><a href="http://www.h2database.com/html/jaqu.html">JaQu</a>: H2's own fluent API for querying databases</li>
    -								<li><a href="http://www.oracle.com/technetwork/java/javaee/tech/persistence-jsp-140049.html">JPA</a>: The de-facto standard in the javax.persistence packages, supplied by Oracle. Its annotations are useful to jOOQ as well.</li>
    -								<li><a href="http://onewebsql.com">OneWebSQL</a>: A commercial SQL abstraction API with support for DAO source code generation, which was integrated also in jOOQ</li>
    -								<li><a href="http://www.querydsl.com">QueryDSL</a>: A "LINQ-port" to Java. It has a similar fluent API, a similar code-generation facility, yet quite a different purpose. While jOOQ is all about SQL, QueryDSL (like LINQ) is mostly about querying.</li>
    -								<li><a href="http://www.springsource.org/features/data-access">Spring Data</a>: Spring's JdbcTemplate knows RowMappers, which are reflected by jOOQ's <reference class="org.jooq.RecordHandler"/></li>
    -							</ul>
    -						</html></content>
    -					</section>
    -				</sections>
    -			</section>
    -		</sections>
    -	</section>
    -</manual>
    diff --git a/jOOQ-website/src/main/resources/manual-2.6.xml b/jOOQ-website/src/main/resources/manual-2.6.xml
    deleted file mode 100644
    index 832da177c9..0000000000
    --- a/jOOQ-website/src/main/resources/manual-2.6.xml
    +++ /dev/null
    @@ -1,9141 +0,0 @@
    -<?xml version="1.0" encoding="UTF-8"?>
    -<!-- 
    -  - Copyright (c) 2009-2013, Lukas Eder, lukas.eder@gmail.com
    -  - All rights reserved.
    -  -
    -  - This software is licensed to you under the Apache License, Version 2.0
    -  - (the "License"); You may obtain a copy of the License at
    -  -
    -  -   http://www.apache.org/licenses/LICENSE-2.0
    -  -
    -  - Redistribution and use in source and binary forms, with or without
    -  - modification, are permitted provided that the following conditions are met:
    -  -
    -  - . Redistributions of source code must retain the above copyright notice, this
    -  -   list of conditions and the following disclaimer.
    -  -
    -  - . Redistributions in binary form must reproduce the above copyright notice,
    -  -   this list of conditions and the following disclaimer in the documentation
    -  -   and/or other materials provided with the distribution.
    -  -
    -  - . Neither the name "jOOQ" nor the names of its contributors may be
    -  -   used to endorse or promote products derived from this software without
    -  -   specific prior written permission.
    -  -
    -  - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    -  - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -  - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -  - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -  - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -  - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -  - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -  - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -  - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -  - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -  - POSSIBILITY OF SUCH DAMAGE.
    -  -->
    -<manual>
    -	<section id="manual">
    -		<title>The jOOQ User Manual. Multiple Pages</title>
    -		<content><html>
    -			<h2 id="Overview"><a href="#Overview" name="Overview">#</a> Overview</h2>
    -			<p>This manual is divided into six main sections:</p>
    -
    -			<ul>
    -				<li>
    -					<reference id="getting-started"/>
    -					<p>
    -						This section will get you started with jOOQ quickly. It contains
    -						simple explanations about what jOOQ is, what jOOQ isn't and how
    -						to set it up for the first time
    -					</p>
    -				</li>
    -				<li>
    -					<reference id="sql-building"/>
    -					<p>
    -						This section explains all about the jOOQ syntax used for building
    -						queries. It explains the central factories, the supported SQL
    -						statements and various other syntax elements
    -					</p>
    -				</li>
    -				<li>
    -					<reference id="code-generation"/>
    -					<p>
    -						This section explains how to configure and use the built-in source code
    -						generator
    -					</p>
    -				</li>
    -				<li>
    -					<reference id="sql-execution"/>
    -					<p>
    -						This section will get you through the specifics of what can be done
    -						with jOOQ at runtime, in order to execute queries, perform CRUD
    -						operations, import and export data, and hook into the jOOQ execution
    -						lifecycle for debugging
    -					</p>
    -				</li>
    -				<li>
    -					<reference id="tools"/>
    -					<p>
    -						This section is dedicated to tools that ship with jOOQ, such as the
    -						jOOQ console
    -					</p>
    -				</li>
    -				<li>
    -					<reference id="reference"/>
    -					<p>
    -						This section is a reference for elements in this manual
    -					</p>
    -				</li>
    -			</ul>
    -		</html></content>
    -
    -		<sections>
    -			<section id="preface">
    -				<title>Preface</title>
    -				<content><html>
    -					<h3>jOOQ's reason of being - compared to JPA</h3>
    -					<p>
    -						Java and SQL have come a long way. SQL is an "ancient", yet established and well-understood technology. Java is a legacy too, although its platform JVM allows for many new and contemporary languages built on top of it. Yet, after all these years, libraries dealing with the interface between SQL and Java have come and gone, leaving JPA to be a standard that is accepted only with doubts, short of any surviving options.
    -					</p>
    -					<p>
    -						So far, there had been only few database abstraction frameworks or libraries, that truly respected SQL as a first class citizen among languages. Most frameworks, including the industry standards JPA, EJB, Hibernate, JDO, Criteria Query, and many others try to hide SQL itself, minimising its scope to things called JPQL, HQL, JDOQL and various other inferior query languages
    -					</p>
    -					<p>
    -						jOOQ has come to fill this gap.
    -					</p>
    -
    -					<h3>jOOQ's reason of being - compared to LINQ</h3>
    -					<p>
    -						Other platforms incorporate ideas such as LINQ (with LINQ-to-SQL), or Scala's SLICK, or also Java's QueryDSL to better integrate querying as a concept into their respective language. By querying, they understand querying of arbitrary targets, such as SQL, XML, Collections and other heterogeneous data stores. jOOQ claims that this is going the wrong way too.
    -					</p>
    -					<p>
    - 						In more advanced querying use-cases (more than simple CRUD and the occasional JOIN), people will want to profit from the expressivity of SQL. Due to the relational nature of SQL, this is quite different from what object-oriented and partially functional languages such as C#, Scala, or Java can offer.
    - 					</p>
    - 					<p>
    - 						It is very hard to formally express and validate joins and the ad-hoc table expression types they create. It gets even harder when you want support for more advanced table expressions, such as pivot tables, unnested cursors, or just arbitrary projections from derived tables. With a very strong object-oriented typing model, these features will probably stay out of scope.
    - 					</p>
    - 					<p>
    - 						In essence, the decision of creating an API that looks like SQL or one that looks like C#, Scala, Java is a definite decision in favour of one or the other platform. While it will be easier to evolve SLICK in similar ways as LINQ (or QueryDSL in the Java world), SQL feature scope that clearly communicates its underlying intent will be very hard to add, later on (e.g. how would you model Oracle's partitioned outer join syntax? How would you model ANSI/ISO SQL:1999 grouping sets? How can you support scalar subquery caching? etc...).					
    -					</p>
    -					<p>
    -						jOOQ has come to fill this gap.
    -					</p>
    -					
    -					<h3>jOOQ is different</h3>
    -					<p>
    -						SQL was never meant to be abstracted. To be confined in the narrow boundaries of heavy mappers, hiding the beauty and simplicity of relational data. SQL was never meant to be object-oriented. SQL was never meant to be anything other than... SQL!
    -					</p>					
    -				</html></content>
    -			</section>
    -			
    -			<section id="copyright">
    -				<title>Copyright, License, and Trademarks</title>
    -				<content><html>
    -                    <p>
    -                        This section lists the various licenses that apply to different versions of jOOQ. Prior to version 3.2, jOOQ was shipped for free under the terms of the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache Software License 2.0</a>. With jOOQ 3.2, jOOQ became dual-licensed: <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache Software License 2.0</a> (for use with Open Source databases) and <a href="http://www.jooq.org/licensing">commercial</a> (for use with commercial databases). Please contact <a href="mailto:sales@datageekery.com">sales@datageekery.com</a>, should you have any questions regarding licensing.
    -                    </p>
    -                    <h3>License for jOOQ 1.x, 2.x, 3.0, 3.1</h3>
    -                    
    -</html><text>Copyright (c) 2009-2013, Lukas Eder, lukas.eder@gmail.com
    -All rights reserved.
    -
    -This software is licensed to you under the Apache License, Version 2.0
    -(the "License"); You may obtain a copy of the License at
    -
    -  http://www.apache.org/licenses/LICENSE-2.0
    -
    -Redistribution and use in source and binary forms, with or without
    -modification, are permitted provided that the following conditions are met:
    -
    -. Redistributions of source code must retain the above copyright notice, this
    -  list of conditions and the following disclaimer.
    -
    -. Redistributions in binary form must reproduce the above copyright notice,
    -  this list of conditions and the following disclaimer in the documentation
    -  and/or other materials provided with the distribution.
    -
    -. Neither the name "jOOQ" nor the names of its contributors may be
    -  used to endorse or promote products derived from this software without
    -  specific prior written permission.
    -
    -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -POSSIBILITY OF SUCH DAMAGE.</text><html>
    -
    -                    <h3>License for jOOQ 3.2 and later</h3>
    -                    
    -</html><text>Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com)
    -All rights reserved.
    -
    -This work is dual-licensed
    -- under the Apache Software License 2.0 (the "ASL")
    -- under the jOOQ License and Maintenance Agreement (the "jOOQ License")
    -=============================================================================
    -You may choose which license applies to you:
    -
    -- If you're using this work with Open Source databases, you may choose
    -  either ASL or jOOQ License.
    -- If you're using this work with at least one commercial database, you must
    -  choose jOOQ License
    -
    -For more information, please visit http://www.jooq.org/licenses
    -
    -Apache Software License 2.0:
    ------------------------------------------------------------------------------
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    - http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -
    -jOOQ License and Maintenance Agreement:
    ------------------------------------------------------------------------------
    -Data Geekery grants the Customer the non-exclusive, timely limited and
    -non-transferable license to install and use the Software under the terms of
    -the jOOQ License and Maintenance Agreement.
    -
    -This library is distributed with a LIMITED WARRANTY. See the jOOQ License
    -and Maintenance Agreement for more details: http://www.jooq.org/licensing</text><html>
    -
    -                    <h3>Trademarks owned by Data Geekeryâ„¢ GmbH</h3>
    -                    <ul>
    -                        <li>jOOQâ„¢ is a trademark by Data Geekeryâ„¢ GmbH</li>
    -                        <li>jOOXâ„¢ is a trademark by Data Geekeryâ„¢ GmbH</li>
    -                        <li>jOORâ„¢ is a trademark by Data Geekeryâ„¢ GmbH</li>
    -                        <li>jOOUâ„¢ is a trademark by Data Geekeryâ„¢ GmbH</li>
    -                    </ul>
    -                    
    -                    <h3>Trademarks owned by database vendors with no affiliation to Data Geekeryâ„¢ GmbH</h3>
    -                    <ul>
    -                        <li>Access® is a registered trademark of Microsoft® Inc.</li>
    -                        <li>Adaptive Server® Enterprise is a registered trademark of Sybase®, Inc.</li>
    -                        <li>CUBRID™ is a trademark of NHN® Corp.</li>
    -                        <li>DB2® is a registered trademark of IBM® Corp.</li>
    -                        <li>Derby is a trademark of the Apacheâ„¢ Software Foundation</li>
    -                        <li>H2 is a trademark of the H2 Group</li>
    -                        <li>HSQLDB is a trademark of The hsql Development Group</li>
    -                        <li>Ingres is a trademark of Actianâ„¢ Corp.</li>
    -                        <li>MariaDB is a trademark of Monty Program Ab</li>
    -                        <li>MySQL® is a registered trademark of Oracle® Corp.</li>
    -                        <li>Firebird® is a registered trademark of Firebird Foundation Inc.</li>
    -                        <li>Oracle® database is a registered trademark of Oracle® Corp.</li>
    -                        <li>PostgreSQL® is a registered trademark of The PostgreSQL Global Development Group</li>
    -                        <li>Postgres Plus® is a registered trademark of EnterpriseDB® software</li>
    -                        <li>SQL Anywhere® is a registered trademark of Sybase®, Inc.</li>
    -                        <li>SQL Server® is a registered trademark of Microsoft® Inc.</li>
    -                        <li>SQLite is a trademark of Hipp, Wyrick &amp; Company, Inc.</li>
    -                    </ul>
    -                    
    -                    <h3>Other trademarks by vendors with no affiliation to Data Geekeryâ„¢ GmbH</h3>
    -                    <ul>
    -                        <li>Java® is a registered trademark by Oracle® Corp. and/or its affiliates</li>
    -                        <li>Scala is a trademark of EPFL</li>
    -                    </ul>
    -                    
    -                    <h3>Other trademark remarks</h3>
    -                    <p>
    -                        Other names may be trademarks of their respective owners.
    -                    </p>
    -                    
    -                    <p>
    -                        Throughout the manual, the above trademarks are referenced without a formal ® (R) or ™ (TM) symbol. It is believed that referencing third-party trademarks in this manual or on the jOOQ website constitutes "fair use". Please <a href="mailto:contact@datageekery.com">contact us</a> if you think that your trademark(s) are not properly attributed.
    -                    </p>
    -				</html></content>
    -			</section>
    -			
    -			<section id="getting-started">
    -				<title>Getting started with jOOQ</title>
    -				<content><html>
    -					<p>
    -						These chapters contain a quick overview of how to get started with this manual and with jOOQ. While the subsequent chapters contain a lot of reference information, this chapter here just wraps up the essentials.
    -					</p>
    -				</html></content>
    -
    -				<sections>
    -					<section id="the-manual">
    -					    <title>How to read this manual</title>
    -						<content><html>
    -							<p>
    -								This section helps you correctly interpret this manual in the context of jOOQ.
    -							</p>
    -							
    -							<h3>Code blocks</h3>
    -							<p>
    -								The following are code blocks:
    -							</p>
    -							
    -</html><sql><![CDATA[-- A SQL code block
    -SELECT 1 FROM DUAL]]></sql><java><![CDATA[// A Java code block
    -for (int i = 0; i < 10; i++);]]></java><xml><![CDATA[<!-- An XML code block -->
    -<hello what="world"></hello>]]></xml><config><![CDATA[# A config file code block
    -org.jooq.property=value]]></config><html>		
    -
    -							<p>
    -								These are useful to provide examples in code. Often, with jOOQ, it is even more useful to compare SQL code with its corresponding Java/jOOQ code. When this is done, the blocks are aligned side-by-side, with SQL usually being on the left, and Java usually being on the right:
    -							</p>					
    -							
    -</html><code-pair>
    -<sql><![CDATA[-- In SQL:
    -SELECT 1 FROM DUAL]]></sql><java><![CDATA[// Using jOOQ:
    -create.select()]]></java>
    -</code-pair><html>
    -
    -							<h3>Code block contents</h3>
    -							<p>
    -								The contents of code blocks follow conventions, too. If nothing else is mentioned next to any given code block, then the following can be assumed:
    -							</p>
    -							
    -							
    -</html><sql><![CDATA[-- SQL assumptions
    -------------------
    -
    --- If nothing else is specified, assume that the Oracle syntax is used 
    -SELECT 1 FROM DUAL]]></sql><java><![CDATA[// Java assumptions
    -// ----------------
    - 
    -// Whenever you see "standalone functions", assume they were static imported from org.jooq.impl.Factory 
    -exists(); max(); min(); val(); inline(); // correspond to Factory.exists(); Factory.max(); Factory.min(); etc...
    -
    -// Whenever you see BOOK/Book, AUTHOR/Author and similar entities, assume they were (static) imported from the generated schema
    -BOOK.TITLE, AUTHOR.LAST_NAME // correspond to com.example.generated.Tables.BOOK.TITLE, com.example.generated.Tables.BOOK.TITLE
    -
    -// Whenever you see "create" being used in Java code, assume that this is an instance of org.jooq.impl.Factory:
    -Factory create = new Factory(connection, SQLDialect.ORACLE);]]></java><html>
    -
    -							<h3>Settings</h3>
    -							<p>
    -								jOOQ allows to override runtime behaviour using <reference class="org.jooq.conf.Settings"/>. If nothing is specified, the default runtime settings are assumed.
    -							</p>
    -							
    -							<h3>Sample database</h3>
    -							<p>
    -								See the manual's section about <reference id="sample-database" title="the sample database used in this manual"/> to learn more about the sample database.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -					<section id="sample-database">
    -					    <title>The sample database used in this manual</title>
    -						<content><html>
    -							<p>
    -							For the examples in this manual, the same database will always be referred to. It essentially consists of these entities created using the Oracle dialect
    -							</p>
    -</html><sql>CREATE TABLE language (
    -  id              NUMBER(7)     NOT NULL PRIMARY KEY,
    -  cd              CHAR(2)       NOT NULL,
    -  description     VARCHAR2(50)
    -)
    -
    -CREATE TABLE author (
    -  id              NUMBER(7)     NOT NULL PRIMARY KEY,
    -  first_name      VARCHAR2(50),
    -  last_name       VARCHAR2(50)  NOT NULL,
    -  date_of_birth   DATE,
    -  year_of_birth   NUMBER(7),
    -  distinguished   NUMBER(1)
    -)
    -
    -CREATE TABLE book (
    -  id              NUMBER(7)     NOT NULL PRIMARY KEY,
    -  author_id       NUMBER(7)     NOT NULL,
    -  title           VARCHAR2(400) NOT NULL,
    -  published_in    NUMBER(7)     NOT NULL,
    -  language_id     NUMBER(7)     NOT NULL,
    -  
    -  CONSTRAINT fk_book_author     FOREIGN KEY (author_id)   REFERENCES author(id),
    -  CONSTRAINT fk_book_language   FOREIGN KEY (language_id) REFERENCES language(id)
    -)
    -
    -CREATE TABLE book_store (
    -  name            VARCHAR2(400) NOT NULL UNIQUE
    -)
    -
    -CREATE TABLE book_to_book_store (
    -  name            VARCHAR2(400) NOT NULL,
    -  book_id         INTEGER       NOT NULL,
    -  stock           INTEGER,
    -  
    -  PRIMARY KEY(name, book_id),
    -  CONSTRAINT fk_b2bs_book_store FOREIGN KEY (name)        REFERENCES book_store (name) ON DELETE CASCADE,
    -  CONSTRAINT fk_b2bs_book       FOREIGN KEY (book_id)     REFERENCES book (id)         ON DELETE CASCADE
    -)</sql><html>
    -							<p>
    -								More entities, types (e.g. UDT's, ARRAY types, ENUM types, etc), stored procedures and packages are introduced for specific examples
    -							</p>
    -						</html></content>
    -					</section>
    -
    -					<section id="use-cases">
    -						<title>Different use cases for jOOQ</title>
    -						<content><html>
    -							<p>
    -								jOOQ has originally been created as a library for complete abstraction of JDBC and all database interaction. Various best practices that are frequently encountered in pre-existing software products are applied to this library. This includes:
    -							</p>
    -							<ul>
    -								<li>Typesafe database object referencing through generated schema, table, column, record, procedure, type, dao, pojo artefacts (see the chapter about <reference id="code-generation" title="code generation"/>)</li>
    -								<li>Typesafe SQL construction through a complete API modelling SQL as a domain specific language in Java (see the chapter about <reference id="dsl-and-non-dsl" title="the DSL API"/>)</li>
    -								<li>Convenient query execution through an improved API for result fetching (see the chapters about <reference id="fetching" title="the various types of data fetching"/>)</li>
    -								<li>SQL dialect abstraction and SQL clause simulation to improve cross-database compatibility and to enable missing features in simpler databases (see the chapter about <reference id="sql-dialects" title="SQL dialects"/>)</li>
    -								<li>SQL logging and debugging using jOOQ as an integral part of your development process (see the chapters about <reference id="logging" title="logging"/> and about the <reference id="jooq-console" title="jOOQ Console"/>)</li>
    -							</ul>
    -							<p>
    -								Effectively, jOOQ was originally designed to replace any other database abstraction framework short of the ones handling connection pooling and transaction management (see also the <reference id="reference-credits" title="credits for other database abstraction libraries"/>)
    -							</p>
    -							
    -							<h3>Use jOOQ the way you prefer</h3>
    -							<p>
    -								... but open source is community-driven. And the community has shown various ways of using jOOQ that diverge from its original intent. Some use cases encountered are:
    -							</p>
    -							<ul>
    -								<li>Using Hibernate for 70% of the queries (i.e. <reference id="crud-with-updatablerecords" title="CRUD"/>) and jOOQ for the remaining 30% where SQL is really needed</li>
    -								<li>Using jOOQ for SQL building and JDBC for SQL execution</li> 
    -								<li>Using jOOQ for SQL building and Spring Data for SQL execution</li>
    -								<li>Using jOOQ without the <reference id="code-generation" title="source code generator"/> to build the basis of a framework for dynamic SQL execution.</li> 
    -							</ul>
    -							
    -							<p>
    -								The following sections explain about various use cases for using jOOQ in your application.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="jooq-as-a-standalone-sql-builder">
    -								<title>jOOQ as a SQL builder</title>
    -								<content><html>
    -									<p>
    -										This is the most simple of all use cases, allowing for construction of valid SQL for any database. In this use case, you will not use <reference id="jooq-as-a-sql-builder-with-code-generation" title="jOOQ's code generator"/> and probably not even <reference id="jooq-as-a-sql-executor" title="jOOQ's query execution facilities"/>. Instead, you'll use jOOQ to wrap strings, literals and other user-defined objects into an object-oriented, type-safe AST modelling your SQL statements. An example is given here: 
    -									</p>
    -									
    -</html><java><![CDATA[// Fetch a SQL string from a jOOQ Query in order to manually execute it with another tool.
    -String sql = create.select(fieldByName("BOOK","TITLE"), fieldByName("AUTHOR","FIRST_NAME"), fieldByName("AUTHOR","LAST_NAME"))
    -                   .from(tableByName("BOOK"))
    -                   .join(tableByName("AUTHOR"))
    -                   .on(fieldByName("BOOK", "AUTHOR_ID").equal("AUTHOR", "ID"))
    -                   .where(fieldByName("BOOK", "PUBLISHED_IN").equal(1948))
    -                   .getSQL();]]></java><html>
    -                   
    -                   					<p>
    -                   						The SQL string that you can generate as such can then be executed using JDBC directly, using Spring's JdbcTemplate, using Apache DbUtils and many other tools.
    -                   					</p>
    -                   					<p>
    -                   						If you wish to use jOOQ only as a SQL builder, the following sections of the manual will be of interest to you:
    -                  					</p>
    -                  					<ul>
    -                  						<li><reference id="sql-building" title="SQL building"/>: This section contains a lot of information about creating SQL statements using the jOOQ API</li>
    -                  						<li><reference id="plain-sql" title="Plain SQL"/>: This section contains information useful in particular to those that want to supply <reference id="table-expressions" title="table expressions"/>, <reference id="column-expressions" title="column expressions"/>, etc. as plain SQL to jOOQ, rather than through generated artefacts</li>
    -                  					</ul>
    -								</html></content>
    -							</section>
    -
    -							<section id="jooq-as-a-sql-builder-with-code-generation">
    -								<title>jOOQ as a SQL builder with code generation</title>
    -								<content><html>
    -									<p>
    -										In addition to using jOOQ as a <reference id="jooq-as-a-standalone-sql-builder" title="standalone SQL builder"/>, you can also use jOOQ's code generation features in order to compile your SQL statements using a Java compiler against an actual database schema. This adds a lot of power and expressiveness to just simply constructing SQL using custom strings and literals, as you can be sure that all database artefacts actually exist in the database, and that their type is correct. An example is given here: 
    -									</p>
    -
    -</html><java><![CDATA[// Fetch a SQL string from a jOOQ Query in order to manually execute it with another tool.
    -String sql = create.select(BOOK.TITLE, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -                   .from(BOOK)
    -                   .join(AUTHOR)
    -                   .on(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -                   .where(BOOK.PUBLISHED_IN.equal(1948))
    -                   .getSQL();]]></java><html>
    -                   
    -                   					<p>
    -                   						The SQL string that you can generate as such can then be executed using JDBC directly, using Spring's JdbcTemplate, using Apache DbUtils and many other tools.
    -                   					</p>
    -                   					<p>
    -                   						If you wish to use jOOQ only as a SQL builder with code generation, the following sections of the manual will be of interest to you:
    -                  					</p>
    -                  					<ul>
    -                  						<li><reference id="sql-building" title="SQL building"/>: This section contains a lot of information about creating SQL statements using the jOOQ API</li>
    -                  						<li><reference id="code-generation" title="Code generation"/>: This section contains the necessary information to run jOOQ's code generator against your developer database</li>
    -                  					</ul>
    -								</html></content>
    -							</section>
    -
    -							<section id="jooq-as-a-sql-executor">
    -								<title>jOOQ as a SQL executor</title>
    -								<content><html>
    -									<p>
    -										Instead of any tool mentioned in the previous chapters, you can also use jOOQ directly to execute your jOOQ-generated SQL statements. This will add a lot of convenience on top of the previously discussed API for typesafe SQL construction, when you can re-use the information from generated classes to fetch records and custom data types. An example is given here:
    -									</p>
    -									
    -</html><java><![CDATA[// Execute the SQL statement directly with jOOQ
    -Result<Record> result = create.select(BOOK.TITLE, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -			                  .from(BOOK)
    -			                  .join(AUTHOR)
    -			                  .on(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -			                  .where(BOOK.PUBLISHED_IN.equal(1948))
    -			                  .fetch();]]></java><html>
    -
    -									<p>
    -										jOOQ doesn't stop here, though! You can execute any SQL with jOOQ. In other words, you can use any other SQL building tool and run the SQL statements with jOOQ. An example is given here:
    -									</p>
    -
    -</html><java><![CDATA[// Use your favourite tool to construct SQL strings:
    -String sql = "SELECT title, first_name, last_name FROM book JOIN author ON book.author_id = author.id " +
    -             "WHERE book.published_in = 1984";
    -
    -// Fetch results using jOOQ
    -Result<Record> result = create.fetch(sql);
    -
    -// Or execute that SQL with JDBC, fetching the ResultSet with jOOQ:
    -ResultSet rs = connection.createStatement().executeQuery(sql);
    -Result<Record> result = create.fetch(rs);]]></java><html>
    -
    -									<p>
    -                   						If you wish to use jOOQ as a SQL executor with (or without) code generation, the following sections of the manual will be of interest to you:
    -                  					</p>
    -                  					<ul>
    -                  						<li><reference id="sql-building" title="SQL building"/>: This section contains a lot of information about creating SQL statements using the jOOQ API</li>
    -                  						<li><reference id="code-generation" title="Code generation"/>: This section contains the necessary information to run jOOQ's code generator against your developer database</li>
    -                  						<li><reference id="sql-execution" title="SQL execution"/>: This section contains a lot of information about executing SQL statements using the jOOQ API</li>
    -                  						<li><reference id="fetching"/>: This section contains some useful information about the various ways of fetching data with jOOQ</li>
    -                  					</ul>
    -								</html></content>
    -							</section>
    -
    -							<section id="jooq-for-crud">
    -								<title>jOOQ for CRUD</title>
    -								<content><html>
    -									<p>
    -										This is probably the most complete use-case for jOOQ: Use all of jOOQ's features. Apart from jOOQ's fluent API for query construction, jOOQ can also help you execute everyday CRUD operations. An example is given here:
    -									</p>
    -
    -</html><java><![CDATA[// Fetch all authors
    -for (AuthorRecord author : create.fetch(AUTHOR)) {
    -
    -    // Skip previously distinguished authors  
    -    if ((int) author.getDistinguished() == 1)
    -        continue;
    -  
    -    // Check if the author has written more than 5 books
    -    if (author.fetchChildren(FK_BOOK_AUTHOR).size() > 5) {
    -    
    -        // Mark the author as a "distinguished" author
    -        author.setDistinguished(1);
    -        author.store();
    -    }
    -}]]></java><html>
    -
    -									<p>
    -                   						If you wish to use all of jOOQ's features, the following sections of the manual will be of interest to you (including all sub-sections):
    -                  					</p>
    -                  					<ul>
    -                  						<li><reference id="sql-building" title="SQL building"/>: This section contains a lot of information about creating SQL statements using the jOOQ API</li>
    -                  						<li><reference id="code-generation" title="Code generation"/>: This section contains the necessary information to run jOOQ's code generator against your developer database</li>
    -                  						<li><reference id="sql-execution" title="SQL execution"/>: This section contains a lot of information about executing SQL statements using the jOOQ API</li>
    -                  					</ul>
    -								</html></content>
    -							</section>
    -							
    -							<section id="jooq-for-pros">
    -								<title>jOOQ for PROs</title>
    -								<content><html>
    -									<p>
    -										jOOQ isn't just a library that helps you <reference id="sql-building" title="build"/> and <reference id="sql-execution" title="execute"/> SQL against your <reference id="code-generation" title="generated, compilable schema"/>. jOOQ ships with a lot of tools. Here are some of the most important tools shipped with jOOQ:
    -									</p>
    -									<ul>
    -										<li><reference id="jooq-console" title="jOOQ Console"/>: This small application hooks into jOOQ's execute listener support to allow for tracing, debugging and introspecting any SQL statement executed through the jOOQ API. This includes setting breakpoints, introspecting bind values, running probe SQL statements, ad-hoc patching of SQL, measuring execution times, exporting stack traces. Use this tool to better know your SQL!</li>
    -										<li><reference id="execute-listeners" title="jOOQ's Execute Listeners"/>: jOOQ allows you to hook your custom execute listeners into jOOQ's SQL statement execution lifecycle in order to centrally coordinate any arbitrary operation performed on SQL being executed. Use this for logging, identity generation, SQL tracing, performance measurements, etc.</li>
    -										<li><reference id="logging" title="Logging"/>: jOOQ has a standard DEBUG logger built-in, for logging and tracing all your executed SQL statements and fetched result sets</li>
    -										<li><reference id="stored-procedures" title="Stored Procedures"/>: jOOQ supports stored procedures and functions of your favourite database. All routines and user-defined types are generated and can be included in jOOQ's SQL building API as function references.</li>
    -										<li><reference id="exporting" title="Exporting"/> and <reference id="importing" title="Importing"/>: jOOQ ships with an API to easily export/import data in various formats</li>
    -									</ul>
    -									<p>
    -										If you're a power user of your favourite, feature-rich database, jOOQ will help you access all of your database's vendor-specific features, such as OLAP features, stored procedures, user-defined types, vendor-specific SQL, functions, etc. Examples are given throughout this manual.
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="tutorials">
    -						<title>Tutorials</title>
    -						<content><html>
    -							<p>
    -								Don't have time to read the full manual? Here are a couple of tutorials that will get you into the most essential parts of jOOQ as quick as possible.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="jooq-in-7-steps">
    -								<title>jOOQ in 7 easy steps</title>
    -								<content><html>
    -									<p>
    -										This manual section is intended for new users, to help them get a running application with jOOQ, quickly.
    -									</p>
    -								</html></content>
    -								
    -								<sections>
    -									<section id="jooq-in-7-steps-step1">
    -										<title>Step 1: Preparation</title>
    -										<content><html>
    -											<p>
    -												If you haven't already downloaded it, download jOOQ:<br/>
    -												<a href="https://sourceforge.net/projects/jooq/files/Release/" title="jOOQ download">https://sourceforge.net/projects/jooq/files/Release/</a>
    -											</p>
    -											
    -											<p>
    -												Alternatively, you can create a Maven dependency:
    -											</p>
    -</html><xml><![CDATA[<dependency>
    -  <groupId>org.jooq</groupId>
    -  <!-- artefacts are jooq, jooq-meta, jooq-codegen -->
    -  <artifactId>jooq</artifactId>
    -  <version>{jooq-version}</version>
    -</dependency>]]></xml><html>
    -
    -											<p>
    -												For this example, we'll be using MySQL. If you haven't already downloaded MySQL Connector/J, download it here:<br/>
    -												<a href="http://dev.mysql.com/downloads/connector/j/" target="_blank" title="MySQL JDBC driver">http://dev.mysql.com/downloads/connector/j/</a>
    -											</p>
    -
    -											<p>
    -												If you don't have a MySQL instance up and running yet, get <a href="http://www.apachefriends.org/en/xampp.html" title="XAMPP">XAMPP</a> now! XAMPP is a simple installation bundle for Apache, MySQL, PHP and Perl
    -											</p>
    -										</html></content>
    -									</section>
    -									
    -									<section id="jooq-in-7-steps-step2">
    -										<title>Step 2: Your database</title>
    -										<content><html>
    -											<p>
    -												We're going to create a database called "guestbook" and a corresponding "posts" table. Connect to MySQL via your command line client and type the following:
    -											</p>
    -											
    -</html><sql>CREATE DATABASE guestbook;
    -
    -CREATE TABLE `posts` (
    -  `id` bigint(20) NOT NULL,
    -  `body` varchar(255) DEFAULT NULL,
    -  `timestamp` datetime DEFAULT NULL,
    -  `title` varchar(255) DEFAULT NULL,
    -  PRIMARY KEY (`id`)
    -);
    -</sql></content>
    -									</section>
    -									
    -									<section id="jooq-in-7-steps-step3">
    -										<title>Step 3: Code generation</title>
    -										<content><html>
    -											<p>
    -												In this step, we're going to use jOOQ's command line tools to generate classes that map to the Posts table we just created. More detailed information about how to set up the jOOQ code generator can be found here:<br/>
    -												<reference id="code-generation" title="jOOQ manual pages about setting up the code generator"/>
    -											</p>
    -
    -											<p>
    -												The easiest way to generate a schema is to copy the jOOQ jar files (there should be 3) and the MySQL Connector jar file to a temporary directory. Then, create a guestbook.xml that looks like this:
    -											</p>
    -											
    -</html><xml><![CDATA[<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    -<configuration xmlns="http://www.jooq.org/xsd/jooq-codegen-2.5.0.xsd">
    -  <!-- Configure the database connection here -->
    -  <jdbc>
    -    <driver>com.mysql.jdbc.Driver</driver>
    -    <url>jdbc:mysql://localhost:3306/guestbook</url>
    -    <user>root</user>
    -    <password></password>
    -  </jdbc>
    -
    -  <generator>
    -    <!-- The default code generator. You can override this one, to generate your own code style
    -         Defaults to org.jooq.util.DefaultGenerator -->
    -    <name>org.jooq.util.DefaultGenerator</name>
    -
    -    <database>
    -      <!-- The database type. The format here is:
    -           org.util.[database].[database]Database -->
    -      <name>org.jooq.util.mysql.MySQLDatabase</name>
    -
    -      <!-- The database schema (or in the absence of schema support, in your RDBMS this
    -           can be the owner, user, database name) to be generated -->
    -      <inputSchema>guestbook</inputSchema>
    -
    -      <!-- All elements that are generated from your schema (several Java regular expressions, separated by comma)
    -           Watch out for case-sensitivity. Depending on your database, this might be important! -->
    -      <includes>.*</includes>
    -
    -      <!-- All elements that are excluded from your schema (several Java regular expressions, separated by comma).
    -              Excludes match before includes -->
    -      <excludes></excludes>
    -    </database>
    -
    -    <target>
    -      <!-- The destination package of your generated classes (within the destination directory) -->
    -      <packageName>test.generated</packageName>
    -
    -      <!-- The destination directory of your generated classes -->
    -      <directory>C:/workspace/MySQLTest/src</directory>
    -    </target>
    -  </generator>
    -</configuration>]]></xml><html>
    -											<p>
    -												Replace the username with whatever user has the appropriate privileges to query the database meta data. You'll also want to look at the other values and replace as necessary. Here are the two interesting properties:
    -											</p>
    -											<p>
    -												<code>generator.target.package</code> - set this to the parent package you want to create for the generated classes. The setting of <code>test.generated</code> will cause the <code>test.generated.Posts</code> and <code>test.generated.PostsRecord</code> to be created
    -											</p>
    -											<p>
    -												<code>generator.target.directory</code> - the directory to output to.
    -											</p>
    -											
    -											<p>
    -												Once you have the JAR files and guestbook.xml in your temp directory, type this (use colons instead of semi-colons on UNIX/Linux systems):
    -											</p>
    -
    -</html><text>java -classpath jooq-{jooq-version}.jar;jooq-meta-{jooq-version}.jar;jooq-codegen-{jooq-version}.jar;mysql-connector-java-5.1.18-bin.jar;. 
    -  org.jooq.util.GenerationTool /guestbook.xml
    -</text><html>
    -
    -											<p>
    -												Note the prefix slash before guestbook.xml. Even though it's in our working directory, we need to prepend a slash, as the configuration file is loaded from the classpath. Replace the filenames with your filenames. In this example, jOOQ {jooq-version} is being used. If everything has worked, you should see this in your console output:
    -											</p>
    -
    -</html><text>Nov 1, 2011 7:25:06 PM org.jooq.impl.JooqLogger info
    -INFO: Initialising properties  : /guestbook.xml
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Database parameters
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: ----------------------------------------------------------
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO:   dialect                : MYSQL
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO:   schema                 : guestbook
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO:   target dir             : /Users/jOOQ/Documents/workspace/MySQLTest/src
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO:   target package         : test.generated
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: ----------------------------------------------------------
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Emptying                 : /Users/jOOQ/workspace/MySQLTest/src/test/generated
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Generating classes in    : /Users/jOOQ/workspace/MySQLTest/src/test/generated
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Generating schema        : Guestbook.java
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Schema generated         : Total: 122.18ms
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Sequences fetched        : 0 (0 included, 0 excluded)
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Masterdata tables fetched: 0 (0 included, 0 excluded)
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Tables fetched           : 5 (5 included, 0 excluded)
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Generating tables        : /Users/jOOQ/workspace/MySQLTest/src/test/generated/tables
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: ARRAYs fetched           : 0 (0 included, 0 excluded)
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Enums fetched            : 0 (0 included, 0 excluded)
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: UDTs fetched             : 0 (0 included, 0 excluded)
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Generating table         : Posts.java
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Tables generated         : Total: 680.464ms, +558.284ms
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Generating Keys          : /Users/jOOQ/workspace/MySQLTest/src/test/generated/tables
    -Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info
    -INFO: Keys generated           : Total: 718.621ms, +38.157ms
    -Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info
    -INFO: Generating records       : /Users/jOOQ/workspace/MySQLTest/src/test/generated/tables/records
    -Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info
    -INFO: Generating record        : PostsRecord.java
    -Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info
    -INFO: Table records generated  : Total: 782.545ms, +63.924ms
    -Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info
    -INFO: Routines fetched         : 0 (0 included, 0 excluded)
    -Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info
    -INFO: Packages fetched         : 0 (0 included, 0 excluded)
    -Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info
    -INFO: GENERATION FINISHED!     : Total: 791.688ms, +9.143ms
    -</text></content>
    -									</section>
    -									
    -									<section id="jooq-in-7-steps-step4">
    -										<title>Step 4: Connect to your database</title>
    -										<content><html>
    -											<p>
    -												Let's just write a vanilla main class in the project containing the generated classes:
    -											</p>
    -											
    -</html><java><![CDATA[// For convenience, always static import your generated tables and jOOQ functions to decrease verbosity:
    -import static test.generated.Tables.*;
    -import static org.jooq.impl.Factory.*;
    -
    -public class Main {
    -    public static void main(String[] args) {
    -        Connection conn = null;
    -
    -        String userName = "root";
    -        String password = "";
    -        String url = "jdbc:mysql://localhost:3306/guestbook";
    -
    -        try {
    -            Class.forName("com.mysql.jdbc.Driver").newInstance();
    -            conn = DriverManager.getConnection(url, userName, password);
    -        } catch (Exception e) {
    -            // For the sake of this tutorial, let's keep exception handling simple
    -            e.printStackTrace();
    -        } finally {
    -            if (conn != null) {
    -                try {
    -                    conn.close();
    -                } catch (SQLException ignore) {
    -                }
    -            }
    -        }
    -    }
    -}]]></java><html>
    -
    -											<p>
    -												This is pretty standard code for establishing a MySQL connection.
    -											</p>
    -										</html></content>
    -									</section>
    -									
    -									<section id="jooq-in-7-steps-step5">
    -										<title>Step 5: Querying</title>
    -										<content><html>
    -											<p>
    -												Let's add a simple query:
    -											</p>
    -											
    -</html><java><![CDATA[Factory create = new Factory(conn, SQLDialect.MYSQL);
    -Result<Record> result = create.select().from(POSTS).fetch();]]></java><html>
    -
    -											<p>
    -												First get an instance of <code>Factory</code> so we can write a simple <code>SELECT</code> query. We pass an instance of the MySQL connection to <code>Factory</code>. Note that the factory doesn't close the connection. We'll have to do that ourselves.
    -											</p>
    -											<p>
    -												We then use jOOQ's DSL to return an instance of Result. We'll be using this result in the next step.
    -											</p>
    -										</html></content>
    -									</section>
    -									
    -									<section id="jooq-in-7-steps-step6">
    -										<title>Step 6: Iterating</title>
    -										<content><html>
    -											<p>
    -												After the line where we retrieve the results, let's iterate over the results and print out the data:
    -											</p>
    -
    -</html><java><![CDATA[for (Record r : result) {
    -    Long id = r.getValue(POSTS.ID);
    -    String title = r.getValue(POSTS.TITLE);
    -    String description = r.getValue(POSTS.BODY);
    -
    -    System.out.println("ID: " + id + " title: " + title + " desciption: " + description);
    -}]]></java><html>
    -
    -											<p>
    -												The full program should now look like this:
    -											</p>
    -											
    -</html><java><![CDATA[package test;
    -
    -// For convenience, always static import your generated tables and
    -// jOOQ functions to decrease verbosity:
    -import static test.generated.Tables.*;
    -import static org.jooq.impl.Factory.*;
    -
    -import java.sql.Connection;
    -import java.sql.DriverManager;
    -import java.sql.ResultSet;
    -import java.sql.Statement;
    -
    -import org.jooq.Record;
    -import org.jooq.Result;
    -
    -import test.generated.GuestbookFactory;
    -import test.generated.tables.Posts;
    -
    -public class Main {
    -
    -    /**
    -     * @param args
    -     */
    -    public static void main(String[] args) {
    -        Connection conn = null;
    -
    -        String userName = "root";
    -        String password = "";
    -        String url = "jdbc:mysql://localhost:3306/guestbook";
    -
    -        try {
    -            Class.forName("com.mysql.jdbc.Driver").newInstance();
    -            conn = DriverManager.getConnection(url, userName, password);
    -
    -            Factory create = new Factory(conn, SQLDialect.MYSQL);
    -            Result<Record> result = create.select().from(POSTS).fetch();
    -
    -            for (Record r : result) {
    -                Long id = r.getValue(POSTS.ID);
    -                String title = r.getValue(POSTS.TITLE);
    -                String description = r.getValue(POSTS.BODY);
    -
    -                System.out.println("ID: " + id + " title: " + title + " desciption: " + description);
    -            }
    -        } catch (Exception e) {
    -            // For the sake of this tutorial, let's keep exception handling simple
    -            e.printStackTrace();
    -        } finally {
    -            if (conn != null) {
    -                try {
    -                    conn.close();
    -                } catch (SQLException ignore) {
    -                }
    -            }
    -        }
    -    }
    -}]]></java></content>
    -									</section>
    -									
    -									<section id="jooq-in-7-steps-step7">
    -										<title>Step 7: Explore!</title>
    -										<content><html>
    -											<p>
    -												jOOQ has grown to be a comprehensive SQL library. For more information, please consider the manual:<br/>
    -												<a href="http://www.jooq.org/manual/" title="jOOQ Manual">http://www.jooq.org/manual/</a>
    -											</p>
    -											<p>
    -												... explore the Javadoc:<br/>
    -												<a href="http://www.jooq.org/javadoc/latest/" title="jOOQ Javadoc">http://www.jooq.org/javadoc/latest/</a>
    -											</p>
    -											<p>
    -												... or join the news group:<br/>
    -												<a href="https://groups.google.com/forum/#!forum/jooq-user" title="jOOQ news group">https://groups.google.com/forum/#!forum/jooq-user</a>
    -											</p>
    -											<p>
    -											    This tutorial is the courtesy of Ikai Lan. See the original source here:<br/>
    -											    <a href="http://ikaisays.com/2011/11/01/getting-started-with-jooq-a-tutorial/" target="_blank" title="Ikai Lan's jOOQ tutorial">http://ikaisays.com/2011/11/01/getting-started-with-jooq-a-tutorial/</a>
    -											</p>
    -										</html></content>
    -									</section>
    -								</sections>
    -							</section>
    -
    -							<section id="jooq-in-modern-ides">
    -								<title>Using jOOQ in modern IDEs</title>
    -								<content><html>
    -									<p>Feel free to contribute a tutorial!</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="jooq-with-spring">
    -								<title>Using jOOQ with Spring</title>
    -								<content><html>
    -									<p>Feel free to contribute a tutorial!</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="a-simple-web-application">
    -								<title>A simple web application with jOOQ</title>
    -								<content><html>
    -									<p>Feel free to contribute a tutorial!</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -					
    -					<section id="jooq-and-scala">
    -						<title>jOOQ and Scala</title>
    -						<content><html>
    -							<p>
    -								As any other library, jOOQ can be easily used in Scala, taking advantage of the many Scala language features such as for example:
    -							</p>
    -							<ul>
    -								<li>Optional "." to dereference methods from expressions</li>
    -								<li>Optional "(" and ")" to delimit method argument lists</li>
    -								<li>Optioanl ";" at the end of a Scala statement</li>
    -								<li>Type inference using "var" and "val" keywords</li>
    -							</ul>
    -						
    -							<p>
    -								But jOOQ also leverages other useful Scala features, such as
    -							</p>
    -							<ul>
    -								<li>implicit defs for operator overloading</li>
    -								<li>Scala Macros (soon to come)</li>
    -							</ul>
    -							
    -							<p>
    -								A short example jOOQ application in Scala might look like this:
    -							</p>
    -							
    -</html><scala><![CDATA[
    -import collection.JavaConversions._                                  // Import implicit defs for iteration over org.jooq.Result
    -                                                                     //
    -import java.sql.DriverManager                                        //
    -                                                                     //
    -import org.jooq._                                                    //
    -import org.jooq.impl._                                               //
    -import org.jooq.impl.Factory._                                       //
    -import org.jooq.scala.example.h2.Tables._                            //
    -import org.jooq.scala.Conversions._                                  // Import implicit defs for overloaded jOOQ/SQL operators
    -                                                                     //
    -object Test {                                                        //
    -  def main(args: Array[String]): Unit = {                            //
    -    val c = DriverManager.getConnection("jdbc:h2:~/test", "sa", ""); // Standard JDBC connection
    -    val f = new Factory(c, SQLDialect.H2);                           //
    -    val x = T_AUTHOR as "x"                                          // SQL-esque table aliasing
    -                                                                     //
    -    for (r <- f                                                      // Iteration over Result. "r" is an org.jooq.Record
    -        select (                                                     //
    -          T_BOOK.ID * T_BOOK.AUTHOR_ID,                              // Using the overloaded "*" operator
    -          T_BOOK.ID + T_BOOK.AUTHOR_ID * 3 + 4,                      // Using the overloaded "+" operator
    -          T_BOOK.TITLE || " abc" || " xy"                            // Using the overloaded "||" operator
    -        )                                                            //
    -        from T_BOOK                                                  // No need to use parentheses or "." here
    -        leftOuterJoin (                                              //
    -          f select (x.ID, x.YEAR_OF_BIRTH)                           // Dereference fields from aliased table
    -          from x                                                     //
    -          limit 1                                                    //
    -          asTable x.getName()                                        //
    -        )                                                            //
    -        on T_BOOK.AUTHOR_ID === x.ID                                 // Using the overloaded "===" operator
    -        where (T_BOOK.ID <> 2)                                       // Using the olerloaded "<>" operator
    -        or (T_BOOK.TITLE in ("O Alquimista", "Brida"))               // Neat IN predicate expression
    -        fetch                                                        //
    -    ) {                                                              //
    -      println(r)                                                     //
    -    }                                                                //
    -  }                                                                  //
    -}]]></scala><html>
    -
    -							<p>
    -								For more details about jOOQ's Scala integration, please refer to the manual's section about <reference id="scala-sql-building" title="SQL building with Scala"/>.
    -							</p>
    -						</html></content>
    -					</section>
    -					
    -					<section id="dependencies">
    -						<title>Dependencies</title>
    -						<content><html>
    -							<p>
    -								jOOQ has no dependencies on any third-party libraries. This rule has some exceptions:
    -							</p>
    -							<ul>
    -								<li><reference id="logging" title="logging APIs"/> are referenced as "optional dependencies". jOOQ tries to find slf4j or log4j on the classpath. If it fails, it will use the <reference class="java.util.logging.Logger"/></li>
    -								<li>Oracle ojdbc types used for array creation are loaded using reflection.</li>
    -								<li>Small libraries with compatible licenses are incorporated into jOOQ (<a href="http://code.google.com/p/joor/">jOOR</a>, <a href="http://code.google.com/p/joou/">jOOU</a>, <a href="http://opencsv.sourceforge.net/">OpenCSV</a>, <a href="http://code.google.com/p/json-simple/">json simple</a>, <a href="http://commons.apache.org/lang/">commons-lang</a>)</li>
    -								<li>javax.persistence and javax.validation will be needed if you activate the relevant <reference id="code-generation" title="code generation flags"/></li>
    -							</ul>
    -							
    -							<h3>Build your own</h3>
    -							<p>
    -								In order to build jOOQ, please download the sources from <a href="https://github.com/jOOQ/jOOQ">https://github.com/jOOQ/jOOQ</a> and use Maven to build it, preferably in Eclipse.
    -							</p>
    -						</html></content>
    -					</section>
    -				</sections>
    -			</section>
    -
    -			<section id="sql-building">
    -				<title>SQL building</title>
    -				<content><html>
    -					<p>
    -					    SQL is a declarative language that is hard to integrate into procedural, object-oriented, functional or any other type of programming languages. jOOQ's philosophy is to give SQL the credit it deserves and integrate SQL itself as an <a href="http://en.wikipedia.org/wiki/Domain_Specific_Language">"internal domain specific language"</a> directly into Java.
    -					</p>
    -					<p>
    -						With this philosophy in mind, SQL building is the main feature of jOOQ. All other features (such as <reference id="sql-execution"/> and <reference id="code-generation"/>) are mere convenience built on top of jOOQ's SQL building capabilities.
    -					</p>
    -					<p>
    -						This section explains all about the various syntax elements involved with jOOQ's SQL building capabilities. For a complete overview of all syntax elements, please refer to the manual's section about <reference id="reference-bnf-notation"/>
    -					</p>
    -				</html></content>
    -
    -				<sections>
    -					<section id="factory">
    -						<title>The Factory class</title>
    -						<content><html>
    -							<p>
    -								jOOQ exposes a lot of interfaces and hides most implementation facts from client code. The reasons for this are:
    -							</p>
    -							<ul>
    -								<li>Interface-driven design. This allows for modelling queries in a fluent API most efficiently</li>
    -								<li>Reduction of complexity for client code.</li>
    -								<li>API guarantee. You only depend on the exposed interfaces, not concrete (potentially dialect-specific) implementations.</li>
    -							</ul>
    -							<p>
    -								The <reference class="org.jooq.impl.Factory"/> class is the main class from where you will create all jOOQ objects.	The Factory serves two types of purposes:
    -							</p>
    -							<ul>
    -								<li>It serves as a static factory for <reference id="table-expressions" title="table expressions"/>, <reference id="column-expressions" title="column expressions"/> (or "fields"), <reference id="conditional-expressions" title="conditional expressions"/> and many other <reference id="queryparts" title="QueryParts"/>.</li>
    -								<li>It implements <reference class="org.jooq.Configuration"/>, an object that configures jOOQ's behaviour when executing queries (see <reference id="sql-execution"/> for more details). Factories allow for creating <reference id="sql-statements" title="SQL statements"/> that are already "configured" and ready for execution.</li>
    -							</ul>
    -
    -							<h3>The static Factory API</h3>
    -							<p>
    -								With jOOQ 2.0, static factory methods have been introduced in order to make client code look more like SQL. Ideally, when working with jOOQ, you will simply static import all methods from the Factory class:
    -							</p>
    -							</html><java>import static org.jooq.impl.Factory.*;</java><html>
    -							<p>
    -							    Note, that when working with Eclipse, you could also add the Factory to your favourites. This will allow to access functions even more fluently:
    -							</p>
    -</html><java>concat(trim(FIRST_NAME), trim(LAST_NAME));
    -// ... which is in fact the same as:
    -Factory.concat(Factory.trim(FIRST_NAME), Factory.trim(LAST_NAME));</java><html>
    -
    -							<h3>The Factory as a Configuration object</h3>
    -							<p>
    -							    As any Configuration object, a Factory can be supplied with these objects:
    -							</p>
    -							<ul>
    -								<li><reference class="org.jooq.SQLDialect"/> : The dialect of your database. This may be any of the currently supported database types (see <reference id="sql-dialects"/> for more details)</li>
    -								<li><reference class="java.sql.Connection"/> : An optional JDBC Connection that will be re-used for the whole lifecycle of your Factory (see <reference id="connection-vs-datasource"/> for more details)</li>
    -    							<li><reference class="java.sql.DataSource"/> : An optional JDBC DataSource that will be re-used for the whole lifecycle of your Factory. If you prefer using DataSources over Connections, jOOQ will internally fetch new Connections from your DataSource, conveniently closing them again after query execution. This is particularly useful in J2EE or Spring contexts (see <reference id="connection-vs-datasource"/> for more details)</li>
    -    							<li><reference class="org.jooq.conf.Settings"/> : An optional runtime configuration (see <reference id="custom-settings"/> for more details)</li>
    -							</ul>
    -							<p>
    -								As a Configuration object, a Factory can construct <reference id="sql-statements" title="statements"/>, for later <reference id="sql-execution" title="execution"/>. An example is given here:
    -							</p>
    -</html><java><![CDATA[// The Factory is "configured" with a Connection and a SQLDialect
    -Factory create = new Factory(connection, dialect);
    -
    -// This select statement contains an internal reference to the Factory:
    -Select<?> select = create.selectOne();
    -
    -// Using the internally referenced Factory, the select statement can now be executed:
    -Result<?> result = select.fetch();]]></java></content>
    -
    -						<sections>
    -							<section id="sql-dialects">
    -								<title>SQL Dialect</title>
    -								<content><html>
    -									<p>
    -										While jOOQ tries to represent the SQL standard as much as possible, many features are vendor-specific to a given database and to its "SQL dialect". jOOQ models this using the <reference class="org.jooq.SQLDialect"/> enum type.
    -									</p>
    -									<p>
    -										The SQL dialect is one of the main attributes of a <reference id="factory" title="Factory"/>. Queries created from such factories will assume dialect-specific behaviour when <reference id="sql-rendering" title="rendering SQL"/> and <reference id="variable-binding" title="binding bind values"/>.
    -									</p>
    -									<p>
    -										Some parts of the jOOQ API are officially supported only by a given subset of the supported SQL dialects. For instance, the <reference id="connect-by-clause" title="Oracle CONNECT BY clause"/>, which is supported by the Oracle and CUBRID databases, is annotated with a <reference class="org.jooq.Support"/> annotation, as such:
    -									</p>
    -</html><java><![CDATA[/**
    - * Add an Oracle-specific <code>CONNECT BY</code> clause to the query
    - */
    -@Support({ CUBRID, ORACLE })
    -SelectConnectByConditionStep connectBy(Condition condition);]]></java><html>
    -									<p>
    -									    jOOQ API methods which are not annotated with the <reference class="org.jooq.Support"/> annotation, or which are annotated with the Support annotation, but without any SQL dialects can be safely used in all SQL dialects. An example for this is the <reference id="select-statement" title="SELECT statement"/> factory method:
    -									</p>
    -</html><java><![CDATA[/**
    - * Create a new DSL select statement.
    - */
    -@Support
    -SelectSelectStep select(Field<?>... fields);]]></java><html>
    -
    -									<h3>jOOQ's SQL clause simulation capabilities</h3>
    -									<p>
    -										The aforementioned Support annotation does not only designate, which databases natively support a feature. It also indicates that a feature is simulated by jOOQ for some databases lacking this feature. An example of this is the <reference id="distinct-predicate" title="DISTINCT predicate"/>, a predicate syntax defined by SQL:1999 and implemented only by H2, HSQLDB, and Postgres:
    -									</p>
    -
    -</html><sql><![CDATA[A IS DISTINCT FROM B]]></sql><html>
    -
    -									<p>
    -										Nevertheless, the <code>IS DISTINCT FROM</code> predicate is supported in all dialects, as its semantics can be expressed with an equivalent <reference id="case-expressions" title="CASE expression"/>. For more details, see the manual's section about the <reference id="distinct-predicate" title="DISTINCT predicate"/>.
    -									</p>
    -									
    -									<h3>jOOQ and the Oracle SQL dialect</h3>
    -									<p>
    -										Oracle SQL is much more expressive than many other SQL dialects. It features many unique keywords, clauses and functions that are out of scope for the SQL standard. Some examples for this are
    -									</p>
    -									<ul>
    -										<li>The <reference id="connect-by-clause" title="CONNECT BY clause"/>, for hierarchical queries</li>
    -										<li>The <reference id="pivot-tables" title="PIVOT"/> keyword for creating PIVOT tables</li>
    -										<li><reference id="oracle-packages" title="Packages"/>, <reference id="oracle-member-procedures" title="object-oriented user-defined types, member procedures"/> as described in the section about <reference id="stored-procedures" title="stored procedures and functions"/></li>
    -										<li>Advanced analytical functions as described in the section about <reference id="window-functions" title="window functions"/></li>
    -									</ul>
    -
    -									<p>
    -										jOOQ has a historic affinity to Oracle's SQL extensions. If something is supported in Oracle SQL, it has a high probability of making it into the jOOQ API
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="connection-vs-datasource">
    -								<title>Connection vs. DataSource</title>
    -								<content><html>
    -									<h3>Interact with JDBC Connections</h3>
    -									<p>
    -										While you can use jOOQ for <reference id="sql-building" title="SQL building"/> only, you can also run queries against a JDBC <reference class="java.sql.Connection"/>. Internally, jOOQ creates <reference class="java.sql.Statement"/> or <reference class="java.sql.PreparedStatement"/> objects from such a Connection, in order to execute statements. The normal operation mode is to provide a <reference id="factory" title="Factory"/> with a JDBC Connection, whose lifecycle you will control yourself. This means that jOOQ will not actively close connections, rollback or commit transactions.
    -									</p>
    -									<h3>Interact with JDBC DataSources</h3>
    -									<p>
    -										If you're in a J2EE or Spring context, however, you may wish to use a <reference class="javax.sql.DataSource"/> instead. Currently, Connections obtained from such a DataSource will be closed after query execution by jOOQ. The semantics of such a close operation should be the returning of the connection into a connection pool, not the actual closing of the underlying physical connection. Typically, this makes sense in an environment using distributed JTA transactions. An example of using DataSources with jOOQ can be seen in the tutorial section about <reference id="jooq-with-spring" title="using jOOQ with Spring"/>.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="custom-settings">
    -								<title>Custom Settings</title>
    -								<content><html>
    -									<p>
    -										The jOOQ Factory allows for some optional configuration elements to be used by advanced users. The <reference class="org.jooq.conf.Settings" /> class is a JAXB-annotated type, that can be provided to a Factory in several ways:
    -									</p>
    -									<ul>
    -										<li>In the constructor. This will override default settings below</li>
    -										<li>From a location specified by a JVM parameter: -Dorg.jooq.settings</li>
    -										<li>From the classpath at /jooq-settings.xml</li>
    -										<li>From the settings defaults, as specified in <a href="http://www.jooq.org/xsd/jooq-runtime-2.5.0.xsd" title="The jOOQ Runtime configuration XSD">http://www.jooq.org/xsd/jooq-runtime-2.5.0.xsd</a></li>
    -									</ul>
    -									<h3>Example</h3>
    -									<p>
    -										For example, if you want to indicate to jOOQ, that it should inline all bind variables, and execute static <reference class="java.sql.Statement"/> instead of binding its variables to <reference class="java.sql.PreparedStatement"/>, you can do so by using the following Factory:
    -									</p>
    -</html><java><![CDATA[Settings settings = new Settings();
    -settings.setStatementType(StatementType.STATIC_STATEMENT);
    -Factory create = new Factory(connection, dialect, settings);]]></java><html>
    -									<p>
    -										Subsequent sections of the manual contain some more in-depth explanations about these settings:
    -									</p>
    -									<ul>
    -										<li>
    -		     								<reference id="schema-mapping" title="Runtime schema and table mapping"/>
    -		   								</li>
    -		     							<li>
    -		     								<reference id="execute-listeners" title="Execute listeners and SQL tracing"/>
    -		     							</li>
    -		     							<li>
    -		     								<reference id="optimistic-locking" title="Execute CRUD with optimistic locking enabled"/>
    -		     							</li>
    -		     							<li>
    -		     								<reference id="logging" title="Enabling DEBUG logging of all executed SQL"/>
    -		     							</li>
    -		   							</ul>
    -		   							<p>
    -										Please refer to the jOOQ runtime configuration XSD for more details:<br/>
    -										<a href="http://www.jooq.org/xsd/jooq-runtime-2.5.0.xsd" title="The jOOQ Runtime configuration XSD">http://www.jooq.org/xsd/jooq-runtime-2.5.0.xsd</a>
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -							<section id="runtime-schema-mapping">
    -								<title>Runtime schema and table mapping</title>
    -								<content><html>
    -									<h3>Mapping your DEV schema to a productive environment</h3>
    -									<p>
    -										You may wish to design your database in a way that you have several instances of your schema. This is useful when you want to cleanly separate data belonging to several customers / organisation units / branches / users and put each of those entities' data in a separate database or schema.
    -									</p>
    -									
    -									<p>
    -										In our AUTHOR example this would mean that you provide a book reference database to several companies, such as My Book World and Books R Us. In that case, you'll probably have a schema setup like this:
    -									</p>
    -									<ul>
    -										<li>DEV: Your development schema. This will be the schema that you base code generation upon, with jOOQ </li>
    -										<li>MY_BOOK_WORLD: The schema instance for My Book World </li>
    -										<li>BOOKS_R_US: The schema instance for Books R Us </li>
    -									</ul>
    -
    -									<h3>Mapping DEV to MY_BOOK_WORLD with jOOQ</h3>
    -									<p>
    -										When a user from My Book World logs in, you want them to access the MY_BOOK_WORLD schema using classes generated from DEV. This can be achieved with the <reference class="org.jooq.conf.RenderMapping"/> class, that you can equip your Factory's <reference id="custom-settings" title="settings"/> with. Take the following example:
    -									</p>
    -
    -</html><java>Settings settings = new Settings()
    -    .withRenderMapping(new RenderMapping()
    -    .withSchemata(
    -        new MappedSchema().withInput("DEV")
    -                          .withOutput("MY_BOOK_WORLD")));
    -
    -// Add the settings to the factory
    -Factory create = new Factory(connection, SQLDialect.ORACLE, settings);
    -
    -// Run queries with the "mapped" factory
    -create.selectFrom(AUTHOR).fetch();</java><html>
    -
    -									<p>
    -										The query executed with a Factory equipped with the above mapping will in fact produce this SQL statement:
    -									</p>
    -									
    -</html><sql>SELECT * FROM MY_BOOK_WORLD.AUTHOR</sql><html>
    -									<p>
    -										Even if AUTHOR was generated from DEV.
    -									</p>
    -
    -									<h3>Mapping several schemata</h3>
    -									<p>
    -										Your development database may not be restricted to hold only one DEV schema. You may also have a LOG schema and a MASTER schema. Let's say the MASTER schema is shared among all customers, but each customer has their own LOG schema instance. Then you can enhance your RenderMapping like this (e.g. using an XML configuration file):
    -									</p>
    -
    -</html><xml><![CDATA[<settings xmlns="http://www.jooq.org/xsd/jooq-runtime-2.5.0.xsd">
    -  <renderMapping>
    -    <schemata>
    -      <schema>
    -        <input>DEV</input>
    -        <output>MY_BOOK_WORLD</output>
    -      </schema>
    -      <schema>
    -        <input>LOG</input>
    -        <output>MY_BOOK_WORLD_LOG</output>
    -      </schema>
    -    </schemata>
    -  </renderMapping>
    -</settings>]]></xml><html>
    -
    -                            		<p>
    -                            			Note, you can load the above XML file like this:
    -                           			</p>
    -
    -</html><java>Settings settings = JAXB.unmarshal(new File("jooq-runtime.xml"), Settings.class);</java><html>
    -
    -									<p>
    -										This will map generated classes from DEV to MY_BOOK_WORLD, from LOG to MY_BOOK_WORLD_LOG, but leave the MASTER schema alone. Whenever you want to change your mapping configuration, you will have to create a new Factory
    -									</p>
    -
    -
    -									<h3>Using a default schema</h3>
    -									<p>
    -										Another option to switch schema names is to use a default schema for the Factory's underlying Connection. Many RDBMS support a USE or SET SCHEMA command, which you can call like this:
    -									</p>
    -
    -</html><java>// Set the default schema
    -Schema MY_BOOK_WORLD = ...
    -create.use(MY_BOOK_WORLD);
    -
    -// Run queries with factory having a default schema
    -create.selectFrom(AUTHOR).fetch();</java><html>
    -
    -									<p>
    -										Queries generated from the above Factory will produce this kind of SQL statement:
    -									</p>
    -
    -</html><sql>-- the schema name is omitted from all SQL constructs.
    -SELECT * FROM AUTHOR</sql><html>
    -
    -                            		<p>
    -                            			If you wish not to render any schema name at all, use the following Settings property for this:
    -                           			</p>
    -
    -
    -</html><java>Settings settings = new Settings()
    -    .withRenderSchema(false);
    -
    -// Add the settings to the factory
    -Factory create = new Factory(connection, SQLDialect.ORACLE, settings);
    -
    -// Run queries that omit rendering schema names
    -create.selectFrom(AUTHOR).fetch();</java><html>
    -
    -									<h3>Mapping of tables</h3>
    -									<p>
    -										Not only schemata can be mapped, but also tables. If you are not the owner of the database your application connects to, you might need to install your schema with some sort of prefix to every table. In our examples, this might mean that you will have to map DEV.AUTHOR to something MY_BOOK_WORLD.MY_APP__AUTHOR, where MY_APP__ is a prefix applied to all of your tables. This can be achieved by creating the following mapping: 
    -									</p>
    -
    -</html><java>Settings settings = new Settings()
    -    .withRenderMapping(new RenderMapping()
    -    .withSchemata(
    -        new MappedSchema().withInput("DEV")
    -                          .withOutput("MY_BOOK_WORLD")
    -                          .withTables(
    -         new MappedTable().withInput("AUTHOR")
    -                          .withOutput("MY_APP__AUTHOR"))));
    -
    -// Add the settings to the factory
    -Factory create = new Factory(connection, SQLDialect.ORACLE, settings);
    -
    -// Run queries with the "mapped" factory
    -create.selectFrom(AUTHOR).fetch();</java><html>
    -
    -									<p>
    -										The query executed with a Factory equipped with the above mapping will in fact produce this SQL statement:
    -									</p>
    -									
    -</html><sql>SELECT * FROM MY_BOOK_WORLD.MY_APP__AUTHOR</sql><html>
    -
    -		                            <p>
    -		                           		Table mapping and schema mapping can be applied independently, by specifying several MappedSchema entries in the above configuration. jOOQ will process them in order of appearance and map at first match. Note that you can always omit a MappedSchema's output value, in case of which, only the table mapping is applied. If you omit a MappedSchema's input value, the table mapping is applied to all schemata!
    -		                            </p>
    -
    -									<h3>Hard-wiring mappings at code-generation time</h3>
    -									<p>
    -										Note that the manual's section about <reference id="schema-mapping" title="code generation schema mapping"/> explains how you can hard-wire your schema mappings at code generation time
    -									</p>									
    -								</html></content>
    -							</section>
    -
    -							<section id="factory-subclasses">
    -								<title>Factory subclasses</title>
    -								<content><html>
    -									<p>
    -										There are a couple of subclasses for the general Factory. Each SQL dialect has its own dialect-specific factory. For instance, if you're only using the MySQL dialect, you can choose to create a new Factory using any of the following types:
    -									</p>
    -</html><java>// A general, dialect-unspecific factory
    -Factory create = new Factory(connection, SQLDialect.MYSQL);
    -
    -// A MySQL-specific factory
    -MySQLFactory create = new MySQLFactory(connection);</java><html>
    -									<p>
    -										The advantage of using a dialect-specific Factory lies in the fact,	that you have access to more proprietary RDMBS functionality. This may include:
    -									</p>
    -									<ul>
    -		    							<li>MySQL's encryption functions</li>
    -		    							<li>PL/SQL constructs, pgplsql, or any other dialect's ROUTINE-language (maybe in the future)</li>
    -									</ul>
    -									<p>
    -										Another type of Factory subclasses are each generated schema's factories. If you generate your schema TEST, then you will have access to a TestFactory. By default, such a schema-specific Factory will not render the schema name.
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="sql-statements">
    -						<title>SQL Statements</title>
    -						<content><html>
    -							<p>
    -								jOOQ currently supports 6 types of SQL statements. All of these statements are constructed from a Factory instance with an optional <reference id="connection-vs-datasource" title="JDBC Connection or DataSource"/>. If supplied with a Connection or DataSource, they can be executed. Depending on the <reference id="query-vs-resultquery" title="query type"/>, executed queries can return results.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="dsl-and-non-dsl">
    -								<title>jOOQ's DSL and non-DSL API</title>
    -								<content><html>
    -									<p>
    -										jOOQ ships with its own DSL (or	<a href="http://en.wikipedia.org/wiki/Domain-specific_language" title="Domain Specific Language">Domain Specific Language</a>) that	simulates SQL in Java. This means, that you can	write SQL statements almost as if Java natively supported it, just like .NET's C# does with <a href="http://msdn.microsoft.com/en-us/library/bb425822.aspx">LINQ to SQL.</a>
    -									</p>
    -									<p>
    -										Here is an example to illustrate what that means:
    -									</p>
    -									
    -</html><code-pair><sql><![CDATA[-- Select all books by authors born after 1920,
    --- named "Paulo" from a catalogue:
    -SELECT *
    -  FROM author a
    -  JOIN book b ON a.id = b.author_id
    - WHERE a.year_of_birth > 1920
    -   AND a.first_name = 'Paulo'
    - ORDER BY b.title]]></sql><java><![CDATA[Result<Record> result =
    -create.select()
    -      .from(AUTHOR.as("a"))
    -      .join(BOOK.as("b")).on(a.ID.equal(b.AUTHOR_ID))
    -      .where(a.YEAR_OF_BIRTH.greaterThan(1920)
    -      .and(a.FIRST_NAME.equal("Paulo")))
    -      .orderBy(b.TITLE)
    -      .fetch();]]></java></code-pair><html>
    -
    -									<p>
    -										We'll see how the aliasing works later in the section about <reference id="aliased-tables" title="aliased tables"/>
    -									</p>
    -
    -									<h3>jOOQ as an internal domain specific language in Java (a.k.a. the DSL-API)</h3>
    -									<p>
    -										Many other frameworks have similar APIs with similar feature sets. Yet, what makes jOOQ special is its informal <reference id="reference-bnf-notation" title="BNF notation"/> modelling a unified SQL dialect suitable for many vendor-specific dialects, and implementing that BNF notation as a hierarchy of interfaces in Java. This concept is extremely powerful, when <reference id="jooq-in-modern-ides" title="using jOOQ in modern IDEs" /> with syntax completion. Not only can you code much faster, your SQL code will be compile-checked to a certain extent. An example of a DSL query equivalent to the previous one is given here:
    -									</p>
    -</html><java><![CDATA[Factory create = new Factory(connection, dialect);
    -Result<?> result = create.select()
    -                         .from(AUTHOR)
    -                         .join(BOOK).on(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -                         .fetch();]]></java><html>
    -
    -                         			<p>
    -                         				Unlike other, simpler frameworks that use <a href="http://en.wikipedia.org/wiki/Fluent_interface">"fluent APIs"</a> or <a href="http://en.wikipedia.org/wiki/Method_chaining">"method chaining"</a>, jOOQ's BNF-based interface hierarchy will not allow bad query syntax. The following will not compile, for instance:
    -                         			</p>
    -</html><java><![CDATA[Factory create = new Factory(connection, dialect);
    -Result<?> result = create.select()
    -                         .join(BOOK).on(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -                      //  ^^^^ "join" is not possible here
    -                         .from(AUTHOR)
    -                         .fetch();
    -
    -Result<?> result = create.select()
    -                         .from(AUTHOR)
    -                         .join(BOOK)
    -                         .fetch();
    -                      //  ^^^^^ "on" is missing here
    -
    -Result<?> result = create.select(rowNumber())
    -                      //         ^^^^^^^^^ "over()" is missing here
    -                         .from(AUTHOR)
    -                         .fetch();]]></java><html>
    -
    -									<h3>History of SQL building and incremental query building (a.k.a. the non-DSL API)</h3>
    -									<p>
    -										Historically, jOOQ started out as an object-oriented SQL builder library like any other. This meant that all queries and their syntactic components were modeled as so-called <reference id="queryparts" title="QueryParts"/>, which delegate <reference id="sql-rendering" title="SQL rendering"/> and <reference id="variable-binding" title="variable binding"/> to child components. This part of the API will be referred to as the non-DSL API, which is still maintained and used internally by jOOQ for incremental query building. An example of incremental query building is given here:
    -									</p>
    -</html><java><![CDATA[Factory create = new Factory(connection, dialect);
    -SelectQuery query = create.selectQuery();
    -query.addFrom(AUTHOR);
    -
    -// Join books only under certain circumstances
    -if (join) {
    -    query.addJoin(BOOK, BOOK.AUTHOR_ID.equal(AUTHOR.ID));
    -}
    -
    -Result<?> result = query.fetch();]]></java><html>
    -
    -									<p>
    -										This query is equivalent to the one shown before using the DSL syntax. In fact, internally, the DSL API constructs precisely this QueryObject. Note, that you can always access the SelectQuery object to switch between DSL and non-DSL APIs:
    -									</p>
    -
    -</html><java><![CDATA[Factory create = new Factory(connection, dialect);
    -SelectFinalStep select = create.select().from(AUTHOR);
    -
    -// Add the JOIN clause on the internal QueryObject representation
    -SelectQuery query = select.getQuery();
    -query.addJoin(BOOK, BOOK.AUTHOR_ID.equal(AUTHOR.ID));]]></java><html>
    -
    -									<h3>Mutability</h3>
    -									<p>
    -										Note, that for historic reasons, the DSL API mixes mutable and immutable behaviour with respect to the internal representation of the <reference id="queryparts" title="QueryPart"/> being constructed. While creating <reference id="conditional-expressions" title="conditional expressions"/>, <reference id="column-expressions" title="column expressions"/> (such as functions) assumes immutable behaviour, creating <reference id="sql-statements" title="SQL statements"/> does not. In other words, the following can be said:
    -									</p>
    -									
    -</html><java><![CDATA[// Conditional expressions (immutable)
    -// -----------------------------------
    -Condition a = BOOK.TITLE.equal("1984");
    -Condition b = BOOK.TITLE.equal("Animal Farm");
    -
    -// The following can be said
    -a       != a.or(b); // or() does not modify a
    -a.or(b) != a.or(b); // or() always creates new objects
    -
    -// Statements (mutable)
    -// --------------------
    -SelectFromStep s1 = create.select();
    -SelectJoinStep s2 = s1.from(BOOK);
    -SelectJoinStep s3 = s1.from(AUTHOR);
    -
    -// The following can be said
    -s1 == s2; // The internal object is always the same
    -s2 == s3; // The internal object is always the same]]></java><html>
    -
    -									<p>
    -										Mutability may be removed in a future version of jOOQ.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="select-statement">
    -								<title>The SELECT statement</title>
    -								<content><html>
    -									<p>
    -										When you don't just perform <reference id="crud-with-updatablerecords" title="CRUD"/> (i.e. SELECT * FROM your_table WHERE ID = ?), you're usually generating new record types using custom projections. With jOOQ, this is as intuitive, as if using SQL directly. A more or less complete example of the "standard" SQL syntax, plus some extensions, is provided by a query like this:
    -									</p>
    -</html><code-pair>
    -<sql><![CDATA[-- get all authors' first and last names, and the number
    --- of books they've written in German, if they have written
    --- more than five books in German in the last three years
    --- (from 2011), and sort those authors by last names
    --- limiting results to the second and third row, locking
    --- the rows for a subsequent update... whew!
    -
    -  SELECT AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME, COUNT(*)
    -    FROM AUTHOR
    -    JOIN BOOK ON AUTHOR.ID = BOOK.AUTHOR_ID
    -   WHERE BOOK.LANGUAGE = 'DE'
    -     AND BOOK.PUBLISHED > '2008-01-01'
    -GROUP BY AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME
    -  HAVING COUNT(*) > 5
    -ORDER BY AUTHOR.LAST_NAME ASC NULLS FIRST
    -   LIMIT 2
    -  OFFSET 1
    -     FOR UPDATE]]></sql><java><![CDATA[// And with jOOQ...
    -
    -
    -
    -
    -Factory create = new Factory(connection, dialect);
    -
    -create.select(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME, count())
    -      .from(AUTHOR)
    -      .join(BOOK).on(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -      .where(BOOK.LANGUAGE.equal("DE"))
    -      .and(BOOK.PUBLISHED.greaterThan("2008-01-01"))
    -      .groupBy(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .having(count().greaterThan(5))
    -      .orderBy(AUTHOR.LAST_NAME.asc().nullsFirst())
    -      .limit(1)
    -      .offset(2)
    -      .forUpdate();]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										Details about the various clauses of this query will be provided in subsequent sections
    -									</p>
    -
    -									<h3>SELECT from single physical tables</h3>
    -									<p>
    -										A very similar, but limited API is available, if you want to select from single physical tables in order to retrieve <reference id="crud-with-updatablerecords" title="TableRecords or even UpdatableRecords"/>. The decision, which type of select to create is already made at the very first step, when you create the SELECT statement with the Factory:
    -									</p>
    -
    -</html><java><![CDATA[public <R extends Record> SimpleSelectWhereStep<R> selectFrom(Table<R> table);]]></java><html>
    -									<p>
    -										As you can see, there is no way to further restrict/project the selected fields. This just selects all known TableFields in the supplied Table, and it also binds &lt;R extends Record&gt; to your Table's associated Record. An example of such a Query would then be:
    -									</p>
    -</html><java><![CDATA[BookRecord book = create.selectFrom(BOOK)
    -                        .where(BOOK.LANGUAGE.equal("DE"))
    -                        .orderBy(BOOK.TITLE)
    -                        .fetchAny();]]></java><html>
    -
    -                   					<p>
    -                   						The simple SELECT API is limited in the way that it does not support any of these clauses:
    -                   					</p>
    -                   					<ul>
    -                   						<li><reference id="select-clause"/></li>
    -                   						<li><reference id="join-clause"/></li>
    -                   						<li><reference id="group-by-clause"/></li>
    -                   						<li><reference id="having-clause"/></li>
    -                   					</ul>
    -                   					<p>
    -                   						In most parts of this manual, it is assumed that you do not use the simple SELECT API. For more information about the simple SELECT API, see the manual's section about <reference id="record-vs-tablerecord" title="fetching strongly or weakly typed records"/>.
    -                   					</p>
    -								</html></content>
    -
    -								<sections>
    -									<section id="select-clause">
    -										<title>The SELECT clause</title>
    -										<content><html>
    -											<p>
    -												The SELECT clause lets you project your own record types, referencing table fields, functions, arithmetic expressions, etc. The Factory provides several methods for expressing a SELECT clause:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- The SELECT clause
    -SELECT BOOK.ID, BOOK.TITLE
    -SELECT BOOK.ID, TRIM(BOOK.TITLE)
    -]]></sql><java><![CDATA[// Provide a varargs Fields list to the SELECT clause:
    -Select<?> s1 = create.select(BOOK.ID, BOOK.TITLE);
    -Select<?> s2 = create.select(BOOK.ID, trim(BOOK.TITLE));]]></java>
    -</code-pair><html>
    -
    -											<p>
    -												Some commonly used projections can be easily created using convenience methods:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- Simple SELECTs
    -SELECT COUNT(*)
    -SELECT 0 -- Not a bind variable
    -SELECT 1 -- Not a bind variable
    -]]></sql><java><![CDATA[// Select commonly used values
    -Select<?> select1 = create.selectCount();
    -Select<?> select2 = create.selectZero();
    -Select<?> select2 = create.selectOne();]]></java>
    -</code-pair><html>
    -
    -											<p>
    -												See more details about functions and expressions in the manual's section about <reference id="column-expressions"/>
    -											</p>
    -
    -											<h3>The SELECT DISTINCT clause</h3>
    -											<p>
    -												The DISTINCT keyword can be included in the method name, constructing a SELECT clause
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT DISTINCT BOOK.TITLE]]></sql><java><![CDATA[Select<?> select1 = create.selectDistinct(BOOK.TITLE);]]></java>
    -</code-pair><html>
    -										</html></content>
    -									</section>
    -
    -									<section id="from-clause">
    -										<title>The FROM clause</title>
    -										<content><html>
    -											<p>
    -												The SQL FROM clause allows for specifying any number of <reference id="table-expressions" title="table expressions"/> to select data from. The following are examples of how to form normal FROM clauses:
    -											</p>
    -
    -</html><code-pair>
    -	<sql><![CDATA[SELECT 1 FROM BOOK
    -SELECT 1 FROM BOOK, AUTHOR
    -SELECT 1 FROM BOOK "b", AUTHOR "a"]]></sql><java><![CDATA[create.selectOne().from(BOOK);
    -create.selectOne().from(BOOK, AUTHOR);
    -create.selectOne().from(BOOK.as("b"), AUTHOR.as("a"));]]></java>
    -</code-pair><html>
    -
    -											<p>
    -												Read more about aliasing in the manual's section about <reference id="aliased-tables" title="aliased tables"/>.
    -											</p>
    -											
    -											<h3>More advanced table expressions</h3>
    -											<p>
    -												Apart from simple tables, you can pass any arbitrary <reference id="table-expressions" title="table expression"/> to the jOOQ FROM clause. This may include <reference id="array-and-cursor-unnesting" title="unnested cursors"/> in Oracle:
    -											</p>
    -
    -</html><code-pair>
    -	<sql><![CDATA[SELECT *
    -FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(null, null, 'ALLSTATS'));]]></sql><java><![CDATA[create.select()
    -      .from(table(DbmsXplan.displayCursor(null, null, "ALLSTATS"));]]></java>
    -</code-pair><html>
    -
    -											<p>
    -												Note, in order to access the DbmsXplan package, you can use the <reference id="code-generation" title="code generator"/> to generate Oracle's SYS schema.
    -											</p>
    -
    -
    -											<h3>Selecting FROM DUAL with jOOQ</h3>
    -											<p>
    -												In many SQL dialects, FROM is a mandatory clause, in some it isn't. jOOQ allows you to omit the FROM clause, returning just one record. An example:
    -											</p>
    -
    -</html><code-pair>
    -	<sql><![CDATA[SELECT 1 FROM DUAL
    -SELECT 1]]></sql><java><![CDATA[new Factory(SQLDialect.ORACLE).selectOne().getSQL();
    -new Factory(SQLDialect.POSTGRES).selectOne().getSQL();]]></java>
    -</code-pair><html>
    -
    -											<p>
    -												Read more about dual or dummy tables in the manual's section about <reference id="dual" title="the DUAL table"/>. The following are examples of how to form normal FROM clauses:
    -											</p>
    -										</html></content>
    -									</section>
    -
    -									<section id="join-clause">
    -										<title>The JOIN clause</title>
    -										<content><html>
    -											<p>
    -												jOOQ supports many different types of standard SQL JOIN operations:
    -											</p>
    -											<ul>
    -												<li>[ INNER ] JOIN</li>
    -												<li>LEFT [ OUTER ] JOIN</li>
    -												<li>RIGHT [ OUTER ] JOIN</li>
    -												<li>FULL OUTER JOIN</li>
    -												<li>CROSS JOIN</li>
    -												<li>NATURAL JOIN</li>
    -												<li>NATURAL LEFT [ OUTER ] JOIN</li>
    -												<li>NATURAL RIGHT [ OUTER ] JOIN</li>
    -											</ul>
    -
    -											<p>
    -												All of these JOIN methods can be called on <reference class="org.jooq.Table"/> types, or directly after the FROM clause for convenience. The following example joins AUTHOR and BOOK
    -											</p>
    -
    -</html><java><![CDATA[Factory create = new Factory(connection, dialect);
    -
    -// Call "join" directly on the AUTHOR table
    -Result<?> result = create.select()
    -                         .from(AUTHOR.join(BOOK)
    -                                     .on(BOOK.AUTHOR_ID.equal(AUTHOR.ID)))
    -                         .fetch();
    -
    -// Call "join" on the type returned by "from"
    -Result<?> result = create.select()
    -                         .from(AUTHOR)
    -                         .join(BOOK)
    -                         .on(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -                         .fetch();]]></java><html>
    -
    -											<p>
    -												The two syntaxes will produce the same SQL statement. However, calling "join" on <reference class="org.jooq.Table"/> objects allows for more powerful, nested JOIN expressions (if you can handle the parentheses):
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM AUTHOR
    -LEFT OUTER JOIN (
    -  BOOK JOIN BOOK_TO_BOOK_STORE
    -       ON BOOK_TO_BOOK_STORE.BOOK_ID = BOOK.ID
    -)
    -ON BOOK.AUTHOR_ID = AUTHOR.ID]]></sql><java><![CDATA[// Nest joins and provide JOIN conditions only at the end
    -create.select()
    -      .from(AUTHOR
    -      .leftOuterJoin(BOOK
    -        .join(BOOK_TO_BOOK_STORE)
    -        .on(BOOK_TO_BOOK_STORE.BOOK_ID.equal(BOOK.ID)))
    -      .on(BOOK.AUTHOR_ID.equal(AUTHOR.ID)));]]></java></code-pair><html>
    -
    -      										<ul>
    -      											<li>See the section about <reference id="conditional-expressions" title="conditional expressions"/> to learn more about the many ways to create <reference class="org.jooq.Condition"/> objects in jOOQ.</li>
    -      											<li>See the section about <reference id="table-expressions" title="table expressions"/> to learn about the various ways of referencing <reference class="org.jooq.Table"/> objects in jOOQ</li>
    -      										</ul>
    -
    -											<h3>JOIN ON KEY, convenience provided by jOOQ</h3>
    -											<p>
    -												Surprisingly, SQL does not allow to formally JOIN on well-known foreign key relationship information. Naturally, when you join BOOK to AUTHOR, you will want to do that based on the BOOK.AUTHOR_ID foreign key to AUTHOR.ID primary key relation. Not being able to do this in SQL leads to a lot of repetitive code, re-writing the same JOIN predicate again and again - especially, when your foreign keys contain more than one column. With jOOQ, when you use <reference id="code-generation" title="code generation"/>, you can use foreign key constraint information in JOIN expressions as such:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM AUTHOR
    -JOIN BOOK ON BOOK.AUTHOR_ID = AUTHOR.ID]]></sql><java><![CDATA[create.select()
    -      .from(AUTHOR)
    -      .join(BOOK).onKey();]]></java></code-pair><html>
    -
    -      										<p>
    -      											In case of ambiguity, you can also supply field references for your foreign keys, or the generated foreign key reference to the onKey() method.
    -      										</p>
    -
    -											<h3>The JOIN USING syntax</h3>
    -											<p>
    -												Most often, you will provide jOOQ with JOIN conditions in the JOIN .. ON clause. SQL supports a different means of specifying how two tables are to be joined. This is the JOIN .. USING clause. Instead of a condition, you supply a set of fields whose names are common to both tables to the left and right of a JOIN operation. This can be useful when your database schema has a high degree of <a href="http://en.wikipedia.org/wiki/Database_normalization">relational normalisation</a>. An example:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- Assuming that both tables contain AUTHOR_ID columns
    -SELECT *
    -FROM AUTHOR
    -JOIN BOOK USING (AUTHOR_ID)]]></sql><java><![CDATA[// join(...).using(...)
    -create.select()
    -      .from(AUTHOR)
    -      .join(BOOK).using(AUTHOR.AUTHOR_ID);]]></java></code-pair><html>
    -
    -											<p>
    -												In schemas with high degrees of normalisation, you may also choose to use NATURAL JOIN, which takes no JOIN arguments as it joins using all fields that are common to the table expressions to the left and to the right of the JOIN operator. An example:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- Assuming that both tables contain AUTHOR_ID columns
    -SELECT *
    -FROM AUTHOR
    -NATURAL JOIN BOOK]]></sql><java><![CDATA[// naturalJoin(...)
    -create.select()
    -      .from(AUTHOR)
    -      .naturalJoin(BOOK);]]></java></code-pair><html>
    -
    -											<h3>Oracle's partitioned OUTER JOIN</h3>
    -											<p>
    -												Oracle SQL ships with a special syntax available for OUTER JOIN clauses. According to the <a href="http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_10002.htm#i2196190">Oracle documentation about partitioned outer joins</a> this can be used to fill gaps for simplified analytical calculations. jOOQ only supports putting the PARTITION BY clause to the right of the OUTER JOIN clause. The following example will create at least one record per AUTHOR and per existing value in BOOK.PUBLISHED_IN, regardless if an AUTHOR has actually published a book in that year.
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM AUTHOR
    -LEFT OUTER JOIN BOOK
    -PARTITION BY (PUBLISHED_IN)
    -ON BOOK.AUTHOR_ID = AUTHOR.ID]]></sql><java><![CDATA[create.select()
    -      .from(AUTHOR)
    -      .leftOuterJoin(BOOK)
    -      .partitionBy(BOOK.PUBLISHED_IN)
    -      .on(BOOK.AUTHOR_ID.equal(AUTHOR.ID));]]></java></code-pair><html>
    -
    -										</html></content>
    -									</section>
    -
    -									<section id="where-clause">
    -										<title>The WHERE clause</title>
    -										<content><html>
    -											<p>
    -												The WHERE clause can be used for JOIN or filter predicates, in order to restrict the data returned by the <reference id="table-expressions" title="table expressions"/> supplied to the previously specified <reference id="from-clause" title="from clause"/> and <reference id="join-clause" title="join clause"/>. Here is an example:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM BOOK
    -WHERE AUTHOR_ID = 1
    -AND TITLE = '1984']]></sql><java><![CDATA[create.select()
    -      .from(BOOK)
    -      .where(BOOK.AUTHOR_ID.equal(1))
    -      .and(BOOK.TITLE.equal("1984"));]]></java></code-pair><html>
    -
    -											<p>
    -												The above syntax is convenience provided by jOOQ, allowing you to connect the <reference class="org.jooq.Condition"/> supplied in the WHERE clause with another condition using an AND operator. You can of course also create a more complex condition and supply that to the WHERE clause directly (observe the different placing of parentheses). The results will be the same:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM BOOK
    -WHERE AUTHOR_ID = 1
    -AND TITLE = '1984']]></sql><java><![CDATA[create.select()
    -      .from(BOOK)
    -      .where(BOOK.AUTHOR_ID.equal(1).and(
    -             BOOK.TITLE.equal("1984")));]]></java></code-pair><html>
    -
    -											<p>
    -												You will find more information about creating <reference id="conditional-expressions" title="conditional expressions"/> later in the manual.
    -											</p>
    -										</html></content>
    -									</section>
    -
    -									<section id="connect-by-clause">
    -										<title>The CONNECT BY clause</title>
    -										<content><html>
    -											<p>
    -												The Oracle database knows a very succinct syntax for creating hierarchical queries: the CONNECT BY clause, which is fully supported by jOOQ, including all related functions and pseudo-columns. A more or less formal definition of this clause is given here:
    -											</p>
    -</html><sql>--   SELECT ..
    ---     FROM ..
    ---    WHERE ..
    - CONNECT BY [ NOCYCLE ] condition [ AND condition, ... ] [ START WITH condition ]
    --- GROUP BY ..
    --- ORDER [ SIBLINGS ] BY ..</sql><html>
    -
    -											<p>
    -												An example for an iterative query, iterating through values between 1 and 5 is this:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT LEVEL
    -FROM DUAL
    -CONNECT BY LEVEL <= 5]]></sql><java><![CDATA[// Get a table with elements 1, 2, 3, 4, 5
    -create.select(level())
    -      .connectBy(level().lessOrEqual(5));]]></java></code-pair><html>
    -
    -											<p>
    -												Here's a more complex example where you can recursively fetch directories in your database, and concatenate them to a path:
    -											</p>
    -</html><code-pair>
    -<sql><![CDATA[SELECT 
    -  SUBSTR(SYS_CONNECT_BY_PATH(DIRECTORY.NAME, '/'), 2)
    -FROM DIRECTORY
    -CONNECT BY 
    -  PRIOR DIRECTORY.ID = DIRECTORY.PARENT_ID
    -START WITH DIRECTORY.PARENT_ID IS NULL
    -ORDER BY 1]]></sql><java><![CDATA[.select(
    -   sysConnectByPath(DIRECTORY.NAME, "/").substring(2))
    -.from(DIRECTORY)
    -.connectBy(
    -   prior(DIRECTORY.ID).equal(DIRECTORY.PARENT_ID))
    -.startWith(DIRECTORY.PARENT_ID.isNull())
    -.orderBy(1);]]></java>
    -</code-pair><html>
    -
    -    										<p>
    -    											The output might then look like this
    -   											</p>
    -
    -</html><text>+------------------------------------------------+
    -|substring                                       |
    -+------------------------------------------------+
    -|C:                                              |
    -|C:/eclipse                                      |
    -|C:/eclipse/configuration                        |
    -|C:/eclipse/dropins                              |
    -|C:/eclipse/eclipse.exe                          |
    -+------------------------------------------------+
    -|...21 record(s) truncated...
    -</text><html>
    -
    -											<p>
    -												Some of the supported functions and pseudo-columns are these (available from the <reference id="factory" title="Factory"/>):
    -											</p>
    -
    -											<ul>
    -												<li>LEVEL</li>
    -												<li>CONNECT_BY_IS_CYCLE</li>
    -												<li>CONNECT_BY_IS_LEAF</li>
    -												<li>CONNECT_BY_ROOT</li>
    -												<li>SYS_CONNECT_BY_PATH</li>
    -												<li>PRIOR</li>
    -											</ul>
    -
    -											<p>
    -												Note that this syntax is also supported in the CUBRID database.
    -											</p>
    -											
    -											<h3>ORDER SIBLINGS</h3>
    -											<p>
    -												The Oracle database allows for specifying a SIBLINGS keyword in the <reference id="order-by-clause" title="ORDER BY clause"/>. Instead of ordering the overall result, this will only order siblings among each other, keeping the hierarchy intact. An example is given here:
    -											</p>
    -											
    -</html><code-pair>
    -<sql><![CDATA[SELECT DIRECTORY.NAME
    -FROM DIRECTORY
    -CONNECT BY 
    -  PRIOR DIRECTORY.ID = DIRECTORY.PARENT_ID
    -START WITH DIRECTORY.PARENT_ID IS NULL
    -ORDER SIBLINGS BY 1]]></sql><java><![CDATA[.select(DIRECTORY.NAME)
    -.from(DIRECTORY)
    -.connectBy(
    -   prior(DIRECTORY.ID).equal(DIRECTORY.PARENT_ID))
    -.startWith(DIRECTORY.PARENT_ID.isNull())
    -.orderSiblingsBy(1);]]></java>
    -</code-pair><html>
    -											
    -										</html></content>
    -									</section>
    -
    -									<section id="group-by-clause">
    -										<title>The GROUP BY clause</title>
    -										<content><html>
    -											<p>
    -												GROUP BY can be used to create unique groups of data, to form aggregations, to remove duplicates and for other reasons. It will transform your previously defined <reference id="table-expressions" title="set of table expressions"/>, and return only one record per unique group as specified in this clause. For instance, you can group books by BOOK.AUTHOR_ID:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT AUTHOR_ID, COUNT(*)
    -FROM BOOK
    -GROUP BY AUTHOR_ID]]></sql><java><![CDATA[create.select(BOOK.AUTHOR_ID, count())
    -      .from(BOOK)
    -      .groupBy(AUTHOR_ID);]]></java></code-pair><html>
    -
    -											<p>
    -												As defined in the SQL standard, when grouping, you may no longer project any columns that are not a formal part of the GROUP BY clause, or <reference id="aggregate-functions" title="aggregate functions"/>. The above example counts all books per author
    -											</p>
    -
    -											<h3>MySQL's deviation from the SQL standard</h3>
    -											<p>
    -												MySQL has a peculiar way of not adhering to this standard behaviour. This is documented in the <a href="http://dev.mysql.com/doc/refman/5.6/en/group-by-hidden-columns.html">MySQL manual</a>. In short, with MySQL, you can also project any other field that are not part of the GROUP BY clause. The projected values will just be arbitrary values from within the group. You cannot rely on any ordering. For example:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT AUTHOR_ID, TITLE
    -FROM BOOK
    -GROUP BY AUTHOR_ID]]></sql><java><![CDATA[create.select(BOOK.AUTHOR_ID, BOOK.TITLE)
    -      .from(BOOK)
    -      .groupBy(AUTHOR_ID);]]></java></code-pair><html>
    -
    -											<p>
    -												This will return an arbitrary title per author. jOOQ supports this syntax, as jOOQ is not doing any checks internally, about the consistence of tables/fields/functions that you provide it.
    -											</p>
    -
    -											<h3>Empty GROUP BY clauses</h3>
    -											<p>
    -												jOOQ supports empty <code>GROUP BY ()</code> clauses as well. This will result in <reference id="select-statement" title="SELECT statements"/> that return only one record.
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT COUNT(*)
    -FROM BOOK
    -GROUP BY ()]]></sql><java><![CDATA[create.selectCount()
    -      .from(BOOK)
    -      .groupBy();]]></java></code-pair><html>
    -
    -											
    -											<h3>ROLLUP(), CUBE() and GROUPING SETS()</h3>
    -											<p>
    -												Some databases support the SQL standard grouping functions and some extensions thereof. See the manual's section about <reference id="grouping-functions" title="grouping functions"/> for more details.
    -											</p>
    -										</html></content>
    -									</section>
    -
    -									<section id="having-clause">
    -										<title>The HAVING clause</title>
    -										<content><html>
    -											<p>
    -												The HAVING clause is commonly used to further restrict data resulting from a previously issued <reference id="group-by-clause" title="GROUP BY clause"/>. An example, selecting only those authors that have written at least two books:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT AUTHOR_ID, COUNT(*)
    -FROM BOOK
    -GROUP BY AUTHOR_ID
    -HAVING COUNT(*) >= 2]]></sql><java><![CDATA[create.select(BOOK.AUTHOR_ID, count(*))
    -      .from(BOOK)
    -      .groupBy(AUTHOR_ID)
    -      .having(count().greaterOrEqual(2));]]></java></code-pair><html>
    -
    -											<p>
    -												According to the SQL standard, you may omit the GROUP BY clause and still issue a HAVING clause. This will implicitly GROUP BY (). jOOQ also supports this syntax. The following example selects one record, only if there are at least 4 books in the books table:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT COUNT(*)
    -FROM BOOK
    -HAVING COUNT(*) >= 4]]></sql><java><![CDATA[create.select(count(*))
    -      .from(BOOK)
    -      .having(count().greaterOrEqual(4));]]></java></code-pair><html>
    -
    -										</html></content>
    -									</section>
    -
    -									<section id="order-by-clause">
    -										<title>The ORDER BY clause</title>
    -										<content><html>
    -											<p>
    -												Databases are allowed to return data in any arbitrary order, unless you explicitly declare that order in the ORDER BY clause. In jOOQ, this is straight-forward:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT AUTHOR_ID, TITLE
    -FROM BOOK
    -ORDER BY AUTHOR_ID ASC, TITLE DESC]]></sql><java><![CDATA[create.select(BOOK.AUTHOR_ID, BOOK.TITLE)
    -      .from(BOOK)
    -      .orderBy(BOOK.AUTHOR_ID.asc(), BOOK.TITLE.desc());]]></java></code-pair><html>
    -
    -											<p>
    -												Any jOOQ <reference id="column-expressions" title="column expression (or field)"/> can be transformed into an <reference class="org.jooq.SortField"/> by calling the asc() and desc() methods.
    -											</p>
    -
    -											<h3>Ordering by field index</h3>
    -											<p>
    -												The SQL standard allows for specifying integer literals (<reference id="inlined-parameters" title="literals"/>, not <reference id="bind-values" title="bind values"/>!) to reference column indexes from the projection (<reference id="select-clause" title="SELECT clause"/>). This may be useful if you do not want to repeat a lengthy expression, by which you want to order - although most databases also allow for referencing <reference id="aliased-columns" title="aliased column references"/> in the ORDER BY clause. An example of this is given here:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT AUTHOR_ID, TITLE
    -FROM BOOK
    -ORDER BY 1 ASC, 2 DESC]]></sql><java><![CDATA[create.select(BOOK.AUTHOR_ID, BOOK.TITLE)
    -      .from(BOOK)
    -      .orderBy(one().asc(), inline(2).desc());]]></java></code-pair><html>
    -
    -											<p>
    -												Note, how one() is used as a convenience short-cut for inline(1)
    -											</p>
    -
    -											<h3>Ordering and NULLS</h3>
    -											<p>
    -												A few databases support the SQL standard "null ordering" clause in sort specification lists, to define whether NULL values should come first or last in an ordered result.
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT 
    -  BOOK.AUTHOR_ID, 
    -  BOOK.CO_AUTHOR_ID, 
    -  BOOK.TITLE
    -FROM BOOK
    -ORDER BY AUTHOR_ID ASC,
    -         CO_AUTHOR_ID ASC NULLS LAST]]></sql><java><![CDATA[create.select(
    -         BOOK.AUTHOR_ID, 
    -         BOOK.CO_AUTHOR_ID, 
    -         BOOK.TITLE)
    -      .from(BOOK)
    -      .orderBy(BOOK.AUTHOR_ID.asc(),
    -               BOOK.CO_AUTHOR_ID.asc().nullsLast());]]></java></code-pair><html>
    -
    -											<p>
    -												If your database doesn't support this syntax, jOOQ simulates it using a <reference id="case-expressions" title="CASE expression"/> as follows
    -											</p>
    -</html><code-pair>
    -<sql><![CDATA[SELECT 
    -  BOOK.AUTHOR_ID, BOOK.CO_AUTHOR_ID, BOOK.TITLE
    -FROM BOOK
    -ORDER BY AUTHOR_ID ASC,
    -         CASE WHEN CO_AUTHOR_ID IS NULL 
    -              THEN 1 ELSE 0 END ASC,
    -         CO_AUTHOR_ID ASC]]></sql><java><![CDATA[create.select(
    -         BOOK.AUTHOR_ID, 
    -         BOOK.CO_AUTHOR_ID,
    -         BOOK.TITLE)
    -      .from(BOOK)
    -      .orderBy(BOOK.AUTHOR_ID.asc(),
    -               BOOK.CO_AUTHOR_ID.asc().nullsLast());]]></java></code-pair><html>
    -
    -											<h3>Ordering using CASE expressions</h3>
    -											<p>
    -												Using <reference id="case-expressions" title="CASE expressions"/> in SQL ORDER BY clauses is a common pattern, if you want to introduce some sort indirection / sort mapping into your queries. As with SQL, you can add any type of <reference id="column-expressions" title="column expression"/> into your ORDER BY clause. For instance, if you have two favourite books that you always want to appear on top, you could write:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM BOOK
    -ORDER BY CASE TITLE
    -         WHEN '1984' THEN 0
    -         WHEN 'Animal Farm' THEN 1
    -         ELSE 2 END ASC]]></sql><java><![CDATA[create.select()
    -      .from(BOOK)
    -      .orderBy(decode().value(BOOK.TITLE)
    -                       .when("1984", 0)
    -                       .when("Animal Farm", 1)
    -                       .otherwise(2).asc());]]></java></code-pair><html>
    -
    -											<p>
    -												But writing these things can become quite verbose. jOOQ supports a convenient syntax for specifying sort mappings. The same query can be written in jOOQ as such:
    -											</p>
    -
    -</html><java><![CDATA[create.select()
    -      .from(BOOK)
    -      .orderBy(BOOK.TITLE.sortAsc("1984", "Animal Farm"));]]></java><html>
    -
    -											<p>
    -												More complex sort indirections can be provided using a Map:
    -											</p>
    -
    -</html><java><![CDATA[create.select()
    -      .from(BOOK)
    -      .orderBy(BOOK.TITLE.sort(new HashMap<String, Integer>() {{
    -          put("1984", 1);
    -          put("Animal Farm", 13);
    -          put("The jOOQ book", 10);
    -      }}));]]></java><html>
    -
    -      										<p>
    -      											Of course, you can combine this feature with the previously discussed NULLS FIRST / NULLS LAST feature. So, if in fact these two books are the ones you like least, you can put all NULLS FIRST (all the other books):
    -      										</p>
    -
    -</html><java><![CDATA[create.select()
    -      .from(BOOK)
    -      .orderBy(BOOK.TITLE.sortAsc("1984", "Animal Farm").nullsFirst());]]></java><html>
    -
    -											<h3>jOOQ's understanding of SELECT .. ORDER BY</h3>
    -											<p>
    -												The SQL standard defines that a "query expression" can be ordered, and that query expressions can contain <reference id="union-clause" title="UNION, INTERSECT and EXCEPT clauses"/>, whose subqueries cannot be ordered. While this is defined as such in the SQL standard, many databases allowing for the non-standard <reference id="limit-clause" title="LIMIT clause"/> in one way or another, do not adhere to this part of the SQL standard. Hence, jOOQ allows for ordering all SELECT statements, regardless whether they are constructed as a part of a UNION or not. Corner-cases are handled internally by jOOQ, by introducing synthetic subselects to adhere to the correct syntax, where this is needed.
    -											</p>
    -											
    -											
    -											<h3>Oracle's ORDER SIBLINGS BY clause</h3>
    -											<p>
    -												jOOQ also supports Oracle's SIBLINGS keyword to be used with ORDER BY clauses for <reference id="connect-by-clause" title="hierarchical queries using CONNECT BY"/>
    -											</p>
    -										</html></content>
    -									</section>
    -
    -									<section id="limit-clause">
    -										<title>The LIMIT .. OFFSET clause</title>
    -										<content><html>
    -											<p>
    -												While being extremely useful for every application that does paging, or just to limit result sets to reasonable sizes, this clause is not yet part of any SQL standard (up until SQL:2008). Hence, there exist a variety of possible implementations in various SQL dialects, concerning this limit clause. jOOQ chose to implement the LIMIT .. OFFSET clause as understood and supported by MySQL, H2, HSQLDB, Postgres, and SQLite. Here is an example of how to apply limits with jOOQ:
    -											</p>
    -
    -</html><java><![CDATA[create.select().from(BOOK).limit(1).offset(2);]]></java><html>
    -
    -											<p>
    -												This will limit the result to 1 books starting with the 2nd book (starting at offset 0!). limit() is supported in all dialects, offset() in all but Sybase ASE, which has no reasonable means to simulate it. This is how jOOQ simulates the above query in various SQL dialects:
    -											</p>
    -
    -</html><sql><![CDATA[-- MySQL, H2, HSQLDB, Postgres, and SQLite
    -SELECT * FROM BOOK LIMIT 1 OFFSET 2
    -
    --- CUBRID supports a MySQL variant of the LIMIT .. OFFSET clause
    -SELECT * FROM BOOK LIMIT 2, 1
    -
    --- Derby
    -SELECT * FROM BOOK OFFSET 2 ROWS FETCH NEXT 1 ROWS ONLY
    -
    --- Ingres
    -SELECT * FROM BOOK OFFSET 2 FETCH FIRST 1 ROWS ONLY
    -
    --- Firebird
    -SELECT * FROM BOOK ROWS 2 TO 3
    -
    --- Sybase SQL Anywhere
    -SELECT TOP 1 ROWS START AT 3 * FROM BOOK
    -
    --- DB2 (without OFFSET)
    -SELECT * FROM BOOK FETCH FIRST 1 ROWS ONLY
    -
    --- Sybase ASE, SQL Server (without OFFSET)
    -SELECT TOP 1 * FROM BOOK
    -
    --- DB2 (with OFFSET), SQL Server (with OFFSET), Oracle (actual query may vary)
    -SELECT * FROM (
    -  SELECT LIMIT_98843777.*, ROW_NUMBER() OVER (ORDER BY ID ASC) AS ROWNUM_98843777
    -  FROM (
    -    SELECT TOP 100 PERCENT *
    -    FROM BOOK
    -    ORDER BY ID ASC
    -  ) AS LIMIT_98843777
    -) AS OUTER_LIMIT_98843777
    -WHERE ROWNUM_98843777 > 1
    -AND ROWNUM_98843777 <= 3
    -]]></sql><html>
    -
    -											<p>
    -												As you can see, jOOQ will take care of the incredibly painful ROW_NUMBER() OVER() (or ROWNUM for Oracle) filtering in subselects for you, you'll just have to write limit(1).offset(2) in any dialect.
    -											</p>
    -
    -											<h3>SQL Server's ORDER BY, TOP and subqueries</h3>
    -											<p>
    -												As can be seen in the above example, writing correct SQL can be quite tricky, depending on the SQL dialect. For instance, with SQL Server, you cannot have an ORDER BY clause in a subquery, unless you also have a TOP clause. This is illustrated by the fact that jOOQ renders a TOP 100 PERCENT clause for you. The same applies to the fact that ROW_NUMBER() OVER() needs an ORDER BY windowing clause, even if you don't provide one to the jOOQ query. By default, jOOQ adds ordering by the first column of your projection.
    -											</p>
    -										</html></content>
    -									</section>
    -
    -									<section id="for-update-clause">
    -										<title>The FOR UPDATE clause</title>
    -										<content><html>
    -											<p>
    -												For inter-process synchronisation and other reasons, you may choose to use the SELECT .. FOR UPDATE clause to indicate to the database, that a set of cells or records should be locked by a given transaction for subsequent updates. With jOOQ, this can be achieved as such:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM BOOK
    -WHERE ID = 3
    -FOR UPDATE]]></sql><java><![CDATA[create.select()
    -      .from(BOOK)
    -      .where(BOOK.ID.equal(3))
    -      .forUpdate();]]></java></code-pair><html>
    -
    -											<p>
    -												The above example will produce a record-lock, locking the whole record for updates. Some databases also support cell-locks using FOR UPDATE OF ..
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM BOOK
    -WHERE ID = 3
    -FOR UPDATE OF TITLE]]></sql><java><![CDATA[create.select()
    -      .from(BOOK)
    -      .where(BOOK.ID.equal(3))
    -      .forUpdate().of(BOOK.TITLE);]]></java></code-pair><html>
    -
    -											<p>
    -												Oracle goes a bit further and also allows to specify the actual locking behaviour. It features these additional clauses, which are all supported by jOOQ:
    -											</p>
    -											<ul>
    -												<li>FOR UPDATE NOWAIT: This is the default behaviour. If the lock cannot be acquired, the query fails immediately</li>
    -												<li>FOR UPDATE WAIT n: Try to wait for [n] seconds for the lock acquisition. The query will fail only afterwards</li>
    -												<li>FOR UPDATE SKIP LOCKED: This peculiar syntax will skip all locked records. This is particularly useful when implementing queue tables with multiple consumers</li>
    -											</ul>
    -											<p>
    -												With jOOQ, you can use those Oracle extensions as such:
    -											</p>
    -
    -</html><java><![CDATA[create.select().from(BOOK).where(BOOK.ID.equal(3)).forUpdate().nowait();
    -create.select().from(BOOK).where(BOOK.ID.equal(3)).forUpdate().wait(5);
    -create.select().from(BOOK).where(BOOK.ID.equal(3)).forUpdate().skipLocked();]]></java><html>
    -
    -											<h3>FOR UPDATE in CUBRID and SQL Server</h3>
    -											<p>
    -												The SQL standard specifies a FOR UPDATE clause to be applicable for cursors. Most databases interpret this as being applicable for all SELECT statements. An exception to this rule are the CUBRID and SQL Server databases, that do not allow for any FOR UPDATE clause in a regular SQL SELECT statement. jOOQ simulates the FOR UPDATE behaviour, by locking record by record with JDBC. JDBC allows for specifying the flags TYPE_SCROLL_SENSITIVE, CONCUR_UPDATABLE for any statement, and then using ResultSet.updateXXX() methods to produce a cell-lock / row-lock. Here's a simplified example in JDBC:
    -											</p>
    -</html><java><![CDATA[PreparedStatement stmt = connection.prepareStatement(
    -  "SELECT * FROM author WHERE id IN (3, 4, 5)",
    -  ResultSet.TYPE_SCROLL_SENSITIVE,
    -  ResultSet.CONCUR_UPDATABLE);
    -ResultSet rs = stmt.executeQuery();
    -
    -while (rs.next()) {
    -  // UPDATE the primary key for row-locks, or any other columns for cell-locks
    -  rs.updateObject(1, rs.getObject(1));
    -  rs.updateRow();
    -
    -  // Do more stuff with this record
    -}]]></java><html>
    -
    -											<p>
    -												The main drawback of this approach is the fact that the database has to maintain a scrollable cursor, whose records are locked one by one. This can cause a major risk of deadlocks or race conditions if the JDBC driver can recover from the unsuccessful locking, if two Java threads execute the following statements:
    -											</p>
    -
    -</html><sql><![CDATA[-- thread 1
    -SELECT * FROM author ORDER BY id ASC;
    -
    --- thread 2
    -SELECT * FROM author ORDER BY id DESC;]]></sql><html>
    -
    -											<p>
    -												So use this technique with care, possibly only ever locking single rows!
    -											</p>
    -
    -											<h3>Pessimistic (shared) locking with the FOR SHARE clause</h3>
    -											<p>
    -												Some databases (MySQL, Postgres) also allow to issue a non-exclusive lock explicitly using a FOR SHARE clause. This is also supported by jOOQ
    -											</p>
    -
    -											<h3>Optimistic locking in jOOQ</h3>
    -											<p>
    -												Note, that jOOQ also supports optimistic locking, if you're doing simple CRUD. This is documented in the section's manual about <reference id="optimistic-locking" title="optimistic locking"/>.
    -											</p>
    -										</html></content>
    -									</section>
    -
    -									<section id="union-clause">
    -										<title>UNION, INTERSECTION and EXCEPT</title>
    -										<content><html>
    -											<p>
    -												SQL allows to perform set operations as understood in standard set theory on result sets. These operations include unions, intersections, subtractions. For two subselects to be combinable by such a set operator, each subselect must return a <reference id="table-expressions" title="table expression"/> of the same arity and type.
    -											</p>
    -											
    -											<h3>UNION and UNION ALL</h3>
    -											<p>
    -												These operators combine two results into one. While UNION removes all duplicate records resulting from this combination, UNION ALL leaves subselect results as they are. Typically, you should prefer UNION ALL over UNION, if you don't really need to remove duplicates. The following example shows how to use such a UNION operation in jOOQ.
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT * FROM BOOK WHERE ID = 3
    -UNION ALL
    -SELECT * FROM BOOK WHERE ID = 5]]></sql><java><![CDATA[create.selectFrom(BOOK).where(BOOK.ID.equal(3))
    -      .unionAll(
    -create.selectFrom(BOOK).where(BOOK.ID.equal(5)));]]></java></code-pair><html>
    -											
    -											<h3>INTERSECT [ ALL ] and EXCEPT [ ALL ]</h3>
    -											<p>
    -												INTERSECT is the operation that produces only those s that are returned by both subselects. EXCEPT is the operation that returns only those s that are returned exclusively in the first subselect. Both operators will remove duplicates from their results. The SQL standard allows to specify the ALL keyword for both of these operators as well, but this is hardly supported in any database. jOOQ does not support INTERSECT ALL, EXEPT ALL operations either. 
    -											</p>
    -											
    -											<h3>jOOQ's set operators and how they're different from standard SQL</h3>
    -											<p>
    -												As previously mentioned in the manual's section about the <reference id="order-by-clause" title="ORDER BY clause"/>, jOOQ has slightly changed the semantics of these set operators. While in SQL, a subselect may not contain any <reference id="order-by-clause" title="ORDER BY clause"/> or <reference id="limit-clause" title="LIMIT clause"/> (unless you wrap the subselect into a <reference id="nested-selects" title="nested SELECT"/>), jOOQ allows you to do so. In order to select both the youngest and the oldest author from the database, you can issue the following statement with jOOQ (rendered to the MySQL dialect):
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[  (SELECT * FROM AUTHOR 
    -   ORDER BY DATE_OF_BIRTH ASC LIMIT 1)
    -UNION
    -  (SELECT * FROM AUTHOR 
    -   ORDER BY DATE_OF_BIRTH DESC LIMIT 1)]]></sql><java><![CDATA[create.selectFrom(AUTHOR)
    -      .orderBy(AUTHOR.DATE_OF_BIRTH.asc()).limit(1)
    -      .union(
    -create.selectFrom(AUTHOR)
    -      .orderBy(AUTHOR.DATE_OF_BIRTH.desc()).limit(1));]]></java></code-pair><html>
    -		
    -										</html></content>
    -									</section>
    -
    -									<section id="oracle-hints">
    -										<title>Oracle-style hints</title>
    -										<content><html>
    -											<p>
    -												If you are closely coupling your application to an Oracle (or CUBRID) database,	you might need to be able to pass hints of the form /*+HINT*/ with your SQL statements to the Oracle database. For example:
    -											</p>
    -
    -</html><sql>SELECT /*+ALL_ROWS*/ FIRST_NAME, LAST_NAME
    -  FROM AUTHOR</sql><html>
    -
    -				  							<p>
    -				  								This can be done in jOOQ using the .hint() clause in your SELECT statement:
    -			  								</p>
    -
    -</html><java>create.select(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .hint("/*+ALL_ROWS*/")
    -      .from(AUTHOR);</java><html>
    -
    -											<p>
    -												Note that you can pass any string in the .hint() clause. If you use that clause, the passed string will always be put in between the SELECT [DISTINCT] keywords and the actual projection list
    -											</p>
    -										</html></content>
    -									</section>
    -								</sections>
    -							</section>
    -
    -							<section id="insert-statement">
    -								<title>The INSERT statement</title>
    -								<content><html>
    -									<p>
    -										The INSERT statement is used to insert new records into a database table. Records can either be supplied using a VALUES() constructor, or a SELECT statement. jOOQ supports both types of INSERT statements. An example of an INSERT statement using a VALUES() constructor is given here:
    -									</p>
    -
    -
    -</html><code-pair>
    -<sql>INSERT INTO AUTHOR 
    -       (ID, FIRST_NAME, LAST_NAME)
    -VALUES (100, 'Hermann', 'Hesse');</sql><java>create.insertInto(AUTHOR,
    -        AUTHOR.ID, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .values(100, "Hermann", "Hesse");</java></code-pair><html>
    -
    -									<h3>INSERT multiple rows with the VALUES() constructor</h3>
    -									<p>
    -										The SQL standard specifies that multiple rows can be supplied to the VALUES() constructor in an INSERT statement. Here's an example of a multi-record INSERT
    -									</p>
    -</html><code-pair>
    -<sql>INSERT INTO AUTHOR
    -       (ID, FIRST_NAME, LAST_NAME)
    -VALUES (100, 'Hermann', 'Hesse'),
    -       (101, 'Alfred', 'Döblin');</sql><java>create.insertInto(AUTHOR,
    -        AUTHOR.ID, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .values(100, "Hermann", "Hesse")
    -      .values(101, "Alfred", "Döblin");</java></code-pair><html>
    -
    -									<p>
    -										jOOQ tries to stay close to actual SQL. In detail, however, Java's expressiveness is limited. That's why the values() clause is repeated for every record in multi-record inserts. 
    -									</p>
    -									<p> 
    -										Some RDBMS do not support inserting several records in a single statement. In those cases, jOOQ simulates multi-record INSERTs using the following SQL:
    -									</p>
    -
    -</html><code-pair>
    -<sql>INSERT INTO AUTHOR
    -    (ID, FIRST_NAME, LAST_NAME)
    -SELECT 100, 'Hermann', 'Hesse' FROM DUAL UNION ALL
    -SELECT 101, 'Alfred', 'Döblin' FROM DUAL;</sql><java>create.insertInto(AUTHOR,
    -        AUTHOR.ID, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .values(100, "Hermann", "Hesse")
    -      .values(101, "Alfred", "Döblin");
    -</java></code-pair><html>
    -
    -									<h3>INSERT using jOOQ's alternative syntax</h3>
    -									<p>
    -										MySQL (and some other RDBMS) allow for using a non-SQL-standard, UPDATE-like syntax for INSERT statements. This is also supported in jOOQ, should you prefer that syntax. The above INSERT statement can also be expressed as follows:
    -									</p>
    -
    -</html><java>create.insertInto(AUTHOR)
    -      .set(AUTHOR.ID, 100)
    -      .set(AUTHOR.FIRST_NAME, "Hermann")
    -      .set(AUTHOR.LAST_NAME, "Hesse")
    -      .newRecord()
    -      .set(AUTHOR.ID, 101)
    -      .set(AUTHOR.FIRST_NAME, "Alfred")
    -      .set(AUTHOR.LAST_NAME, "Döblin");</java><html>
    -      
    -									<p>
    -										As you can see, this syntax is a bit more verbose, but also more type-safe, as every field can be matched with its value. Internally, the two syntaxes are strictly equivalent.
    -									</p>
    -
    -									<h3>MySQL's INSERT .. ON DUPLICATE KEY UPDATE</h3>
    -									<p>
    -										The MySQL database supports a very convenient way to INSERT or UPDATE a record. This is a non-standard extension to the SQL syntax, which is supported by jOOQ and simulated in other RDBMS, where this is possible (i.e. if they support the SQL standard <reference id="merge-statement" title="MERGE statement"/>). Here is an example how to use the ON DUPLICATE KEY UPDATE clause:
    -									</p>
    -									
    -</html><java>// Add a new author called "Koontz" with ID 3.
    -// If that ID is already present, update the author's name
    -create.insertInto(AUTHOR, AUTHOR.ID, AUTHOR.LAST_NAME)
    -      .values(3, "Koontz")
    -      .onDuplicateKeyUpdate()
    -      .set(AUTHOR.LAST_NAME, "Koontz");</java><html>
    -
    -									<h3>The synthetic ON DUPLICATE KEY IGNORE clause</h3>
    -							
    -									<p>
    -										The MySQL database also supports an INSERT IGNORE INTO clause. This is supported by jOOQ using the more convenient SQL syntax variant of ON DUPLICATE KEY IGNORE, which can be equally simulated in other databases using a <reference id="merge-statement" title="MERGE statement"/>:
    -									</p>
    -									
    -</html><java>// Add a new author called "Koontz" with ID 3.
    -// If that ID is already present, ignore the INSERT statement
    -create.insertInto(AUTHOR, AUTHOR.ID, AUTHOR.LAST_NAME)
    -      .values(3, "Koontz")
    -      .onDuplicateKeyIgnore();</java><html>
    -
    -      								<h3>Postgres's INSERT .. RETURNING</h3>
    -									<p>
    -										The Postgres database has native support for an INSERT .. RETURNING clause. This is a very powerful concept that is simulated for all other dialects using JDBC's <reference class="java.sql.Statement" anchor="#getGeneratedKeys()" title="getGeneratedKeys()"/> method. Take this example:
    -									</p>
    -
    -</html><java><![CDATA[// Add another author, with a generated ID
    -Record<?> record =
    -create.insertInto(AUTHOR, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .values("Charlotte", "Roche")
    -      .returning(AUTHOR.ID)
    -      .fetchOne();
    -
    -System.out.println(record.getValue(AUTHOR.ID));
    -
    -// For some RDBMS, this also works when inserting several values
    -// The following should return a 2x2 table
    -Result<?> result =
    -create.insertInto(AUTHOR, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .values("Johann Wolfgang", "von Goethe")
    -      .values("Friedrich", "Schiller")
    -      // You can request any field. Also trigger-generated values
    -      .returning(AUTHOR.ID, AUTHOR.CREATION_DATE)
    -      .fetch();]]></java><html>
    -
    -		      						<p>
    -		      							Some databases have poor support for returning generated keys after INSERTs. In those cases, jOOQ might need to issue another <reference id="select-statement" title="SELECT statement"/> in order to fetch an @@identity value. Be aware, that this can lead to race-conditions in those databases that cannot properly return generated ID values. For more information, please consider the jOOQ Javadoc for the returning() clause.
    -		      						</p>
    -
    -									<h3>The INSERT SELECT statement</h3>
    -							
    -									<p>
    -										In some occasions, you may prefer the INSERT SELECT syntax, for instance, when you copy records from one table to another:
    -									</p>
    -									
    -</html><java>create.insertInto(AUTHOR_ARCHIVE)
    -      .select(create.selectFrom(AUTHOR).where(AUTHOR.DECEASED.isTrue()));</java></content>
    -							</section>
    -
    -							<section id="update-statement">
    -								<title>The UPDATE statement</title>
    -								<content><html>
    -									<p>
    -										The UPDATE statement is used to modify one or several pre-existing records in a database table. UPDATE statements are only possible on single tables. Support for multi-table updates will be implemented in the near future. An example update query is given here:
    -									</p>
    -
    -</html><code-pair>
    -<sql>UPDATE AUTHOR
    -   SET FIRST_NAME = 'Hermann',
    -       LAST_NAME = 'Hesse'
    - WHERE ID = 3;</sql><java>create.update(AUTHOR)
    -      .set(AUTHOR.FIRST_NAME, "Hermann")
    -      .set(AUTHOR.LAST_NAME, "Hesse")
    -      .where(AUTHOR.ID.equal(3));</java>
    -</code-pair><html>
    -								
    -								</html></content>
    -							</section>
    -
    -							<section id="delete-statement">
    -								<title>The DELETE statement</title>
    -								<content><html>
    -									<p>
    -										The DELETE statement physically removes records from a database table. DELETE statements are only possible on single tables. Support for multi-table deletes will be implemented in the near future. An example delete query is given here:
    -									</p>
    -
    -</html><code-pair>
    -<sql>DELETE AUTHOR
    - WHERE ID = 100;</sql><java>create.delete(AUTHOR)
    -      .where(AUTHOR.ID.equal(100));</java>
    -</code-pair><html>
    -
    -								</html></content>
    -							</section>
    -
    -							<section id="merge-statement">
    -								<title>The MERGE statement</title>
    -								<content><html>
    -									<p>
    -										The MERGE statement is one of the most advanced standardised SQL constructs, which is supported by DB2, HSQLDB, Oracle, SQL Server and Sybase (MySQL has the similar INSERT .. ON DUPLICATE KEY UPDATE construct)
    -									</p>
    -									<p>
    -										The point of the standard MERGE statement is to take a TARGET table, and merge (INSERT, UPDATE) data from a SOURCE table into it. DB2, Oracle, SQL Server and Sybase also allow for DELETING some data and for adding many additional clauses. With jOOQ {jooq-version}, only Oracle's MERGE extensions are supported. Here is an example:
    -									</p>
    -
    -</html><code-pair>
    -<sql>-- Check if there is already an author called 'Hitchcock'
    --- If there is, rename him to John. If there isn't add him.
    -MERGE INTO AUTHOR
    -USING (SELECT 1 FROM DUAL)
    -ON (LAST_NAME = 'Hitchcock')
    -WHEN MATCHED THEN UPDATE SET FIRST_NAME = 'John'
    -WHEN NOT MATCHED THEN INSERT (LAST_NAME) VALUES ('Hitchcock')</sql><java>create.mergeInto(AUTHOR)
    -      .using(create().selectOne())
    -      .on(AUTHOR.LAST_NAME.equal("Hitchcock"))
    -      .whenMatchedThenUpdate()
    -      .set(AUTHOR.FIRST_NAME, "John")
    -      .whenNotMatchedThenInsert(AUTHOR.LAST_NAME)
    -      .values("Hitchcock");
    -
    -</java></code-pair><html>
    -
    -		                            <h3>MERGE Statement (H2-specific syntax)</h3>
    -									<p>
    -									    The H2 database ships with a somewhat less powerful but a little more intuitive syntax for its own version of the MERGE statement. An example more or less equivalent to the previous one can be seen here:
    -									</p>
    -									
    -</html><code-pair>
    -<sql>-- Check if there is already an author called 'Hitchcock'
    --- If there is, rename him to John. If there isn't add him.
    -
    -MERGE INTO AUTHOR (FIRST_NAME, LAST_NAME)
    -KEY (LAST_NAME)
    -VALUES ('John', 'Hitchcock')</sql><java>create.mergeInto(AUTHOR,
    -                 AUTHOR.FIRST_NAME,
    -                 AUTHOR.LAST_NAME)
    -      .key(AUTHOR.LAST_NAME)
    -      .values("John", "Hitchcock")
    -      .execute();
    -</java></code-pair><html>
    -
    -		                            <p>
    -		                                This syntax can be fully simulated by jOOQ for all other databases that support the SQL standard. For more information about the H2 MERGE syntax, see the documentation here:<br/>
    -		                                <a href="http://www.h2database.com/html/grammar.html#merge">http://www.h2database.com/html/grammar.html#merge</a>
    -		                            </p>
    -								
    -								</html></content>
    -							</section>
    -
    -							<section id="truncate-statement">
    -								<title>The TRUNCATE statement</title>
    -								<content><html>
    -									<p>
    -										The TRUNCATE statement is the only DDL statement supported by jOOQ so far. It is popular in many databases when you want to bypass constraints for table truncation. Databases may behave differently, when a truncated table is referenced by other tables. For instance, they may fail if records from a truncated table are referenced, even with ON DELETE CASCADE clauses in place. Please, consider your database manual to learn more about its TRUNCATE implementation.
    -									</p>
    -									<p>
    -										The TRUNCATE syntax is trivial:
    -									</p>
    -
    -</html><code-pair>
    -	<sql>TRUNCATE TABLE AUTHOR;</sql><java>create.truncate(AUTHOR).execute();</java>
    -</code-pair><html>
    -									
    -									<p>
    -										TRUNCATE is not supported by Ingres and SQLite. jOOQ will execute a DELETE FROM AUTHOR statement instead.
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="table-expressions">
    -						<title>Table expressions</title>
    -						<content><html>
    -							<p>
    -								The following sections explain the various types of table expressions supported by jOOQ
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="generated-tables">
    -								<title>Generated Tables</title>
    -								<content><html>
    -									<p>
    -										Most of the times, when thinking about a <reference id="table-expressions" title="table expression"/> you're probably thinking about an actual physical table in your database schema. If you're using jOOQ's <reference id="code-generation" title="code generator"/>, you will have all tables from your database schema available to you as type safe Java objects. You can then use these tables in SQL <reference id="from-clause" title="FROM clauses"/>, <reference id="join-clause" title="JOIN clauses"/> or in other <reference id="sql-statements" title="SQL statements"/>, just like any other table expression. An example is given here:
    -									</p>
    -							
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM AUTHOR -- Table expression AUTHOR
    -JOIN BOOK   -- Table expression BOOK
    -ON (AUTHOR.ID = BOOK.AUTHOR_ID)]]></sql><java><![CDATA[create.select()
    -      .from(AUTHOR) // Table expression AUTHOR
    -      .join(BOOK)   // Table expression BOOK
    -      .on(AUTHOR.ID.equal(BOOK.AUTHOR_ID));]]></java></code-pair><html>
    -							
    -									<p>
    -										The above example shows how AUTHOR and BOOK tables are joined in a <reference id="select-statement" title="SELECT statement"/>. It also shows how you can access physical <reference id="table-columns" title="table columns"/> by dereferencing the relevant Java attributes of their tables.
    -									</p>
    -									<p>
    -										See the manual's section about <reference id="codegen-tables" title="generated tables"/> for more information about what is really generated by the <reference id="code-generation" title="code generator"/>
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="aliased-tables">
    -								<title>Aliased Tables</title>
    -								<content><html>
    -									<p>
    -										The strength of jOOQ's <reference id="code-generation" title="code generator"/> becomes more obvious when you perform table aliasing and dereference fields from generated aliased tables. This can best be shown by example:
    -									</p>
    -
    -</html><code-pair><sql><![CDATA[-- Select all books by authors born after 1920,
    --- named "Paulo" from a catalogue:
    -
    -
    -
    -SELECT *
    -  FROM author a
    -  JOIN book b ON a.id = b.author_id
    - WHERE a.year_of_birth > 1920
    -   AND a.first_name = 'Paulo'
    - ORDER BY b.title]]></sql><java><![CDATA[// Declare your aliases before using them in SQL:
    -Author a = AUTHOR.as("a");
    -Book b = BOOK.as("b");
    -
    -// Use aliased tables in your statement
    -create.select()
    -      .from(a)
    -      .join(b).on(a.ID.equal(b.AUTHOR_ID))
    -      .where(a.YEAR_OF_BIRTH.greaterThan(1920)
    -      .and(a.FIRST_NAME.equal("Paulo")))
    -      .orderBy(b.TITLE);]]></java></code-pair><html>
    -								
    -									<p>
    -										As you can see in the above example, calling as() on generated tables returns an object of the same type as the table. This means that the resulting object can be used to dereference fields from the aliased table. This is quite powerful in terms of having your Java compiler check the syntax of your SQL statements. If you remove a column from a table, dereferencing that column from that table alias will cause compilation errors.
    -									</p>
    -									
    -									<h3>Dereferencing columns from other table expressions</h3>
    -									<p>
    -										TODO document this
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="joined-tables">
    -								<title>Joined tables</title>
    -								<content><html>
    -									<p>
    -										The <reference id="join-clause" title="JOIN operators"/> that can be used in <reference id="select-statement" title="SQL SELECT statements"/> are the most powerful and best supported means of creating new <reference id="table-expressions" title="table expressions"/> in SQL. Informally, the following can be said:
    -									</p>
    -									
    -</html><text>A(colA1, ..., colAn) "join" B(colB1, ..., colBm) "produces" C(colA1, ..., colAn, colB1, ..., colBm)</text><html>
    -
    -									<p>
    -										SQL and relational algebra distinguish between at least the following JOIN types (upper-case: SQL, lower-case: relational algebra):
    -									</p>
    -									<ul>
    -										<li><strong>CROSS JOIN or cartesian product</strong>: The basic JOIN in SQL, producing a relational cross product, combining every record of table A with every record of table B. Note that cartesian products can also be produced by listing comma-separated <reference id="table-expressions" title="table expressions"/> in the <reference id="from-clause" title="FROM clause"/> of a <reference id="select-statement" title="SELECT statement"/></li>
    -										<li><strong>NATURAL JOIN</strong>: The basic JOIN in relational algebra, yet a rarely used JOIN in databases with everyday degree of normalisation. This JOIN type unconditionally equi-joins two tables by all columns with the same name (requiring foreign keys and primary keys to share the same name). Note that the JOIN columns will only figure once in the resulting <reference id="table-expressions" title="table expression"/>.</li>
    -										<li><strong>INNER JOIN or equi-join</strong>: This JOIN operation performs a cartesian product (CROSS JOIN) with a <reference id="conditional-expressions" title="filtering predicate"/> being applied to the resulting <reference id="table-expressions" title="table expression"/>. Most often, a <reference id="comparison-predicate" title="equal comparison predicate"/> comparing foreign keys and primary keys will be applied as a filter, but any other predicate will work, too.</li>
    -										<li><strong>OUTER JOIN</strong>: This JOIN operation performs a cartesian product (CROSS JOIN) with a <reference id="conditional-expressions" title="filtering predicate"/> being applied to the resulting <reference id="table-expressions" title="table expression"/>. Most often, a <reference id="comparison-predicate" title="equal comparison predicate"/> comparing foreign keys and primary keys will be applied as a filter, but any other predicate will work, too. Unlike the INNER JOIN, an OUTER JOIN will add "empty records" to the left (table A) or right (table B) or both tables, in case the conditional expression fails to produce a .</li>										
    -										<li><strong>semi-join</strong>: In SQL, this JOIN operation can only be expressed implicitly using <reference id="in-predicate" title="IN predicates"/> or <reference id="exists-predicate" title="EXISTS predicates"/>. The <reference id="table-expressions" title="table expression"/> resulting from a semi-join will only contain the left-hand side table A</li>										
    -										<li><strong>anti-join</strong>: In SQL, this JOIN operation can only be expressed implicitly using <reference id="in-predicate" title="NOT IN predicates"/> or <reference id="exists-predicate" title="NOT EXISTS predicates"/>. The <reference id="table-expressions" title="table expression"/> resulting from a semi-join will only contain the left-hand side table A</li>
    -										<li><strong>division</strong>: This JOIN operation is hard to express at all, in SQL. See the manual's chapter about <reference id="relational-division" title="relational division"/> for details on how jOOQ simulates this operation.</li>
    -									</ul>									
    -									<p>
    -										jOOQ supports all of these JOIN types (except semi-join and anti-join) directly on any <reference id="table-expressions" title="table expression"/>:
    -									</p>
    -									
    -</html><java><![CDATA[// jOOQ's relational division convenience syntax 
    -DivideByOnStep divideBy(Table<?> table)
    -
    -// Various overloaded INNER JOINs
    -TableOnStep join(TableLike<?>)
    -TableOnStep join(String)
    -TableOnStep join(String, Object...)
    -TableOnStep join(String, QueryPart...)
    -
    -// Various overloaded OUTER JOINs (supporting Oracle's partitioned OUTER JOIN)
    -// Overloading is similar to that of INNER JOIN
    -TablePartitionByStep leftOuterJoin(TableLike<?>)
    -TablePartitionByStep rightOuterJoin(TableLike<?>)
    -
    -// Various overloaded FULL OUTER JOINs
    -TableOnStep fullOuterJoin(TableLike<?>)
    -
    -// Various overloaded CROSS JOINs
    -Table<Record> crossJoin(TableLike<?>)
    -
    -// Various overloaded NATURAL JOINs
    -Table<Record> naturalJoin(TableLike<?>)
    -Table<Record> naturalLeftOuterJoin(TableLike<?>)
    -Table<Record> naturalRightOuterJoin(TableLike<?>)]]></java><html>							
    -
    -									<p>
    -										Note that most of jOOQ's JOIN operations give way to a similar DSL API hierarchy as previously seen in the manual's section about the <reference id="join-clause" title="JOIN clause"/>
    -									</p>		
    -								</html></content>
    -							</section>
    -
    -							<section id="nested-selects">
    -								<title>Nested SELECTs</title>
    -								<content><html>
    -									<p>
    -										A <reference id="select-statement" title="SELECT statement"/> can appear almost anywhere a <reference id="table-expressions" title="table expression"/> can. Such a "nested SELECT" is often called a "derived table". Apart from many convenience methods accepting <reference class="org.jooq.Select"/> objects directly, a SELECT statement can always be transformed into a <reference class="org.jooq.Table"/> object using the asTable() method.
    -									</p>
    -									
    -									<h3>Example: Scalar subquery</h3>
    -									
    -</html><code-pair>
    -<sql>SELECT *
    -  FROM BOOK
    - WHERE BOOK.AUTHOR_ID = (
    - 		SELECT ID
    -          FROM AUTHOR
    -         WHERE LAST_NAME = 'Orwell')</sql><java>create.select()
    -      .from(BOOK)
    -      .where(BOOK.AUTHOR_ID.equal(create
    -             .select(AUTHOR.ID)
    -             .from(AUTHOR)
    -             .where(AUTHOR.LAST_NAME.equal("Orwell"))));</java>
    -</code-pair><html>
    -
    -									<h3>Example: Derived table</h3>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT nested.* FROM (
    -      SELECT AUTHOR_ID, count(*) books
    -        FROM BOOK
    -    GROUP BY AUTHOR_ID
    -) nested
    -ORDER BY nested.books DESC
    -
    -
    -
    -]]></sql><java><![CDATA[Table<Record> nested =
    -    create.select(BOOK.AUTHOR_ID, count().as("books"))
    -          .from(BOOK)
    -          .groupBy(BOOK.AUTHOR_ID).asTable("nested");
    -
    -create.select(nested.getFields())
    -      .from(nested)
    -      .orderBy(nested.getField("books"));]]></java>
    -</code-pair><html>
    -
    -									<h3>Example: Correlated subquery</h3>
    -</html><code-pair>
    -<sql><![CDATA[  SELECT LAST_NAME, (
    -      SELECT COUNT(*)
    -       FROM BOOK
    -      WHERE BOOK.AUTHOR_ID = AUTHOR.ID) books
    -    FROM AUTHOR
    -ORDER BY books DESC
    -
    -
    -
    -]]></sql><java><![CDATA[// The type of books cannot be inferred from the Select<?>
    -Field<Object> books =
    -    create.selectCount()
    -          .from(BOOK)
    -          .where(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -          .asField("books");
    -create.select(AUTHOR.ID, books)
    -      .from(AUTHOR)
    -      .orderBy(books, AUTHOR.ID));]]></java>
    -</code-pair><html>									
    -								</html></content>
    -							</section>
    -
    -							<section id="pivot-tables">
    -								<title>The Oracle 11g PIVOT clause</title>
    -								<content><html>
    -									<p>
    -										If you are closely coupling your application to an Oracle database, you can take advantage of some Oracle-specific features, such as the PIVOT clause, used for statistical analyses. The formal syntax definition is as follows:
    -									</p>
    -									
    -</html><sql>-- SELECT ..
    -     FROM table PIVOT (aggregateFunction [, aggregateFunction] FOR column IN (expression [, expression]))
    ---  WHERE ..</sql><html>
    -		
    -									<p>
    -										The PIVOT clause is available from the <reference class="org.jooq.Table"/> type, as pivoting is done directly on a table. Currently, only Oracle's PIVOT clause is supported. Support for SQL Server's slightly different PIVOT clause will be added later. Also, jOOQ may simulate PIVOT for other dialects in the future.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="relational-division">
    -								<title>jOOQ's relational division syntax</title>
    -								<content><html>
    -									<p>
    -									    There is one operation in relational algebra that is not given a lot of attention, because it is rarely used in real-world applications. It is the relational division, the opposite operation of the cross product (or, relational multiplication). The following is an approximate definition of a relational division:
    -									</p>
    -
    -</html><config>Assume the following cross join / cartesian product
    -C = A × B
    -
    -Then it can be said that
    -A = C ÷ B
    -B = C ÷ A</config><html>
    -
    -									<p>
    -									   With jOOQ, you can simplify using relational divisions by using the following syntax:
    -									</p>
    -
    -</html><java>C.divideBy(B).on(C.ID.equal(B.C_ID)).returning(C.TEXT)</java><html>
    -
    -									<p>
    -										The above roughly translates to
    -									</p>
    -
    -</html><sql>SELECT DISTINCT C.TEXT FROM C "c1"
    -WHERE NOT EXISTS (
    -  SELECT 1 FROM B
    -  WHERE NOT EXISTS (
    -    SELECT 1 FROM C "c2"
    -    WHERE "c2".TEXT = "c1".TEXT
    -    AND "c2".ID = B.C_ID
    -  )
    -)</sql><html>
    -
    -									<p>
    -										Or in plain text: Find those TEXT values in C whose ID's correspond to all ID's in B. Note that from the above SQL statement, it is immediately clear that proper indexing is of the essence. Be sure to have indexes on all columns referenced from the on(...) and returning(...) clauses.
    -									</p>
    -
    -									<p>
    -										For more information about relational division and some nice, real-life examples, see
    -									</p>
    -
    -									<ul>
    -										<li><a href="http://en.wikipedia.org/wiki/Relational_algebra#Division" title="Wikipedia article on relational division">http://en.wikipedia.org/wiki/Relational_algebra#Division</a></li>
    -										<li><a href="http://www.simple-talk.com/sql/t-sql-programming/divided-we-stand-the-sql-of-relational-division/" title="A nice summary of what relational division is and how it is best implemented in SQL">http://www.simple-talk.com/sql/t-sql-programming/divided-we-stand-the-sql-of-relational-division/</a></li>
    -									</ul>
    -								</html></content>
    -
    -							</section>
    -
    -							<section id="array-and-cursor-unnesting">
    -								<title>Array and cursor unnesting</title>
    -								<content><html>
    -									<p>
    -										The SQL standard specifies how SQL databases should implement ARRAY and TABLE types, as well as CURSOR types. Put simply, a CURSOR is a pointer to any materialised <reference id="table-expressions" title="table expression"/>. Depending on the cursor's features, this table expression can be scrolled through in both directions, records can be locked, updated, removed, inserted, etc. Often, CURSOR types contain s, whereas ARRAY and TABLE types contain simple scalar values, although that is not a requirement
    -									</p>
    -									
    -									<p>
    -										ARRAY types in SQL are similar to Java's array types. They contain a "component type" or "element type" and a "dimension". This sort of ARRAY type is implemented in H2, HSQLDB and Postgres and supported by jOOQ as such. Oracle uses strongly-typed arrays, which means that an ARRAY type (VARRAY or TABLE type) has a name and possibly a maximum capacity associated with it.
    -									</p>
    -
    -									<h3>Unnesting array and cursor types</h3>									
    -									<p>
    -										The real power of these types become more obvious when you fetch them from <reference id="stored-procedures" title="stored procedures"/> to unnest them as <reference id="table-expressions" title="table expressions"/> and use them in your <reference id="from-clause" title="FROM clause"/>. An example is given here, where Oracle's DBMS_XPLAN package is used to fetch a cursor containing data about the most recent execution plan:
    -									</p>									
    -
    -</html><code-pair>
    -	<sql><![CDATA[SELECT *
    -FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(null, null, 'ALLSTATS'));]]></sql><java><![CDATA[create.select()
    -      .from(table(DbmsXplan.displayCursor(null, null, "ALLSTATS"));]]></java>
    -</code-pair><html>
    -									<p>
    -										Note, in order to access the DbmsXplan package, you can use the <reference id="code-generation" title="code generator"/> to generate Oracle's SYS schema.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="dual">
    -								<title>The DUAL table</title>
    -								<content><html>
    -									<p>
    -										The SQL standard specifies that the <reference id="from-clause" title="FROM clause"/> is optional in a <reference id="select-statement" title="SELECT statement"/>. However, according to the standard, you may then no longer use some other clauses, such as the <reference id="where-clause" title="WHERE clause"/>. In the real world, there exist three types of databases:
    -									</p>
    -									<ul>
    -										<li>The ones that always require a FROM clause</li>
    -										<li>The ones that never require a FROM clause (and still allow a WHERE clause)</li>
    -										<li>The ones that correctly implement the SQL standard</li>
    -									</ul>
    -									<p>
    -										With jOOQ, you don't have to worry about the above distinction of SQL dialects. jOOQ never requires a FROM clause, but renders the necessary "DUAL" table, if needed. The following program shows how jOOQ renders "DUAL" tables
    -									</p>
    -
    -</html><code-pair>
    -	<sql><![CDATA[SELECT 1
    -SELECT 1 FROM "db_root"
    -SELECT 1 FROM "SYSIBM"."DUAL"
    -SELECT 1 FROM "SYSIBM"."SYSDUMMY1"
    -SELECT 1 FROM dual
    -SELECT 1 FROM "INFORMATION_SCHEMA"."SYSTEM_USERS"
    -SELECT 1 FROM (select 1 as dual) as dual
    -SELECT 1 FROM dual
    -SELECT 1 FROM dual
    -SELECT 1
    -SELECT 1
    -SELECT 1
    -SELECT 1 FROM [SYS].[DUMMY]
    -]]></sql><java><![CDATA[new Factory(SQLDialect.ASE      ).selectOne().getSQL();
    -new Factory(SQLDialect.CUBRID   ).selectOne().getSQL();
    -new Factory(SQLDialect.DB2      ).selectOne().getSQL();
    -new Factory(SQLDialect.DERBY    ).selectOne().getSQL();
    -new Factory(SQLDialect.H2       ).selectOne().getSQL();
    -new Factory(SQLDialect.HSQLDB   ).selectOne().getSQL();
    -new Factory(SQLDialect.INGRES   ).selectOne().getSQL();
    -new Factory(SQLDialect.MYSQL    ).selectOne().getSQL();
    -new Factory(SQLDialect.ORACLE   ).selectOne().getSQL();
    -new Factory(SQLDialect.POSTGRES ).selectOne().getSQL();
    -new Factory(SQLDialect.SQLITE   ).selectOne().getSQL();
    -new Factory(SQLDialect.SQLSERVER).selectOne().getSQL();
    -new Factory(SQLDialect.SYBASE   ).selectOne().getSQL();]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										Note, that some databases (H2, MySQL) can normally do without "dual". However, there exist some corner-cases with complex nested SELECT statements, where this will cause syntax errors (or parser bugs). To stay on the safe side, jOOQ will always render "dual" in those dialects.
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="column-expressions">
    -						<title>Column expressions</title>
    -						<content><html>
    -						    <p>
    -						    	Column expressions can be used in various SQL clauses in order to refer to one or several columns. This chapter explains how to form various types of column expressions with jOOQ. A particular type of column expression is given in the section about <reference id="row-value-expressions" title="s or row value expressions"/>, where an expression may have a degree of more than one.
    -						    </p>
    -						
    -						    <h3>Using column expressions in jOOQ</h3>
    -							<p>
    -								jOOQ allows you to freely create arbitrary column expressions using a fluent expression construction API. Many expressions can be formed as functions from <reference id="factory" title="Factory methods"/>, other expressions can be formed based on a pre-existing column expression. For example:
    -							</p>
    -							
    -</html><java><![CDATA[// A regular table column expression
    -Field<String> field1 = BOOK.TITLE;
    -
    -// A function created from the Factory using "prefix" notation
    -Field<String> field2 = trim(BOOK.TITLE);
    -
    -// The same function created from a pre-existing Field using "postfix" notation
    -Field<String> field3 = BOOK.TITLE.trim();
    -
    -// More complex function with advanced DSL syntax
    -Field<String> field4 = listAgg(BOOK.TITLE)
    -                          .withinGroupOrderBy(BOOK.ID.asc())
    -                          .over().partitionBy(AUTHOR.ID);]]></java><html>
    -
    -							<p>
    -								In general, it is up to you whether you want to use the "prefix" notation or the "postfix" notation to create new column expressions based on existing ones. The "SQL way" would be to use the "prefix notation", with functions created from the <reference id="factory" title="Factory"/>. The "Java way" or "object-oriented way" would be to use the "postfix" notation with functions created from <reference class="org.jooq.Field"/> objects. Both ways ultimately create the same query part, though.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="table-columns">
    -								<title>Table columns</title>
    -								<content><html>
    -									<p>
    -										Table columns are the most simple implementations of a <reference id="column-expressions" title="column expression"/>. They are mainly produced by jOOQ's <reference id="code-generation" title="code generator"/> and can be dereferenced from the generated tables. This manual is full of examples involving table columns. Another example is given in this query:
    -									</p>
    -
    -</html><code-pair>
    -	<sql><![CDATA[SELECT BOOK.ID, BOOK.TITLE
    -FROM BOOK
    -WHERE BOOK.TITLE LIKE '%SQL%'
    -ORDER BY BOOK.TITLE]]></sql><java><![CDATA[create.select(BOOK.ID, BOOK.TITLE)
    -	  .from(BOOK)
    -	  .where(BOOK.TITLE.like("%SQL%"))
    -	  .orderBy(BOOK.TITLE);]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										Table columns implement a more specific interface called <reference class="org.jooq.TableField"/>, which is parameterised with its associated &lt;R extends Record&gt; record type.
    -									</p>
    -									<p>
    -										See the manual's section about <reference id="codegen-tables" title="generated tables"/> for more information about what is really generated by the <reference id="code-generation" title="code generator"/>
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="aliased-columns">
    -								<title>Aliased columns</title>
    -								<content><html>
    -									<p>
    -										Just like <reference id="aliased-tables" title="tables"/>, columns can be renamed using aliases. Here is an example:
    -									</p>
    -									
    -</html><sql>  SELECT FIRST_NAME || ' ' || LAST_NAME author, COUNT(*) books
    -    FROM AUTHOR
    -    JOIN BOOK ON AUTHOR.ID = AUTHOR_ID
    -GROUP BY FIRST_NAME, LAST_NAME;</sql><html>
    -
    -									<p>
    -										Here is how it's done with jOOQ:
    -									</p>
    -									
    -</html><java>Record record = create.select(
    -         concat(AUTHOR.FIRST_NAME, val(" "), AUTHOR.LAST_NAME).as("author"),
    -         count().as("books"))
    -      .from(AUTHOR)
    -      .join(BOOK).on(AUTHOR.ID.equal(BOOK.AUTHOR_ID))
    -      .groupBy(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME).fetchAny();</java><html>
    -      
    -      								<p>
    -      									When you alias Fields like above, you can access those Fields' values using the alias name:
    -  									</p>
    -  									
    -</html><java>System.out.println("Author : " + record.getValue("author"));
    -System.out.println("Books  : " + record.getValue("books"));</java></content>
    -							</section>
    -
    -							<section id="cast-expressions">
    -								<title>Cast expressions</title>
    -								<content><html>
    -									<p>
    -										jOOQ's source code generator tries to find the most accurate type mapping between your vendor-specific data types and a matching Java type. For instance, most VARCHAR, CHAR, CLOB types will map to String. Most BINARY, BYTEA, BLOB types will map to byte[]. NUMERIC types will default to java.math.BigDecimal, but can also be any of java.math.BigInteger, Long, Integer, Short, Byte, Double, Float.
    -									</p>
    -									<p>
    -										Sometimes, this automatic mapping might not be what you needed, or jOOQ cannot know the type of a field. In those cases you would write SQL type CASTs like this:
    -									</p>
    -									
    -</html><sql>-- Let's say, your Postgres column LAST_NAME was VARCHAR(30)
    --- Then you could do this:
    -SELECT CAST(AUTHOR.LAST_NAME AS TEXT) FROM DUAL</sql><html>
    -
    -									<p>
    -										in jOOQ, you can write something like that:
    -									</p>
    -									
    -</html><java>create.select(TAuthor.LAST_NAME.cast(PostgresDataType.TEXT));</java><html>
    -
    -									<p>
    -										The same thing can be achieved by casting a Field directly to String.class, as TEXT is the default data type in Postgres to map to Java's String
    -									</p>
    -									
    -</html><java>create.select(TAuthor.LAST_NAME.cast(String.class));</java><html>
    -		
    -									<p>
    -										The complete CAST API in Field consists of these three methods:
    -									</p>
    -									
    -</html><java><![CDATA[public interface Field<T> {
    -
    -    // Cast this field to the type of another field
    -    <Z> Field<Z> cast(Field<Z> field);
    -    
    -    // Cast this field to a given DataType
    -    <Z> Field<Z> cast(DataType<Z> type);
    -    
    -    // Cast this field to the default DataType for a given Class
    -    <Z> Field<Z> cast(Class<? extends Z> type);
    -}
    -
    -// And additional convenience methods in the Factory:
    -public class Factory {
    -    <T> Field<T> cast(Object object, Field<T> field);
    -    <T> Field<T> cast(Object object, DataType<T> type);
    -    <T> Field<T> cast(Object object, Class<? extends T> type);
    -    <T> Field<T> castNull(Field<T> field);
    -    <T> Field<T> castNull(DataType<T> type);
    -    <T> Field<T> castNull(Class<? extends T> type);
    -}]]></java></content>
    -							</section>
    -
    -							<section id="arithmetic-expressions">
    -								<title>Arithmetic expressions</title>
    -								<content><html>
    -									<h3>Numeric arithmetic expressions</h3>
    -									<p>
    -										Your database can do the math for you. Arithmetic operations are implemented just like <reference id="numeric-functions" title="numeric functions"/>, with similar limitations as far as type restrictions are concerned. You can use any of these operators:
    -									</p>
    -
    -</html><config>  +  -  *  /  %</config><html>
    -
    -									<p>
    -										In order to express a SQL query like this one:
    -									</p>
    -									
    -</html><sql>SELECT ((1 + 2) * (5 - 3) / 2) % 10 FROM DUAL</sql><html>
    -							
    -									<p>
    -										You can write something like this in jOOQ:
    -									</p>
    -									
    -</html><java>create.select(val(1).add(2).mul(val(5).sub(3)).div(2).mod(10);</java><html>
    -
    -									<h3>Datetime arithmetic expressions</h3>
    -									<p>
    -										jOOQ also supports the Oracle-style syntax for adding days to a Field&lt;? extends java.util.Date&gt; 
    -									</p>
    -
    -</html><code-pair>
    -	<sql>SELECT SYSDATE + 3 FROM DUAL;</sql><java>create.select(currentTimestamp().add(3));</java>
    -</code-pair><html>
    -
    -									<p>
    -										For more advanced datetime arithmetic, use the Factory's timestampDiff() and dateDiff() functions, as well as jOOQ's built-in SQL standard INTERVAL data type support:
    -									</p>
    -									<ul>
    -										<li>INTERVAL YEAR TO MONTH: <reference class="org.jooq.types.YearToMonth"/></li>
    -										<li>INTERVAL DAY TO SECOND: <reference class="org.jooq.types.DayToSecond"/></li>
    -									</ul>
    -								</html></content>
    -							</section>
    -							
    -							<section id="string-concatenation">
    -								<title>String concatenation</title>
    -								<content><html>
    -									<p>
    -										The SQL standard defines the concatenation operator to be an infix operator, similar to the ones we've seen in the chapter about <reference id="arithmetic-expressions" title="arithmetic expressions"/>. This operator looks like this: <code>||</code>. Some other dialects do not support this operator, but expect a <code>concat()</code> function, instead. jOOQ renders the right operator / function, depending on your <reference id="sql-dialects" title="SQL dialect"/>:
    -									</p>
    -									
    -</html><code-pair>
    -<sql>SELECT 'A' || 'B' || 'C' FROM DUAL
    --- Or in MySQL:
    -SELECT concat('A', 'B', 'C') FROM DUAL</sql><java>&#160;
    -// For all RDBMS, including MySQL:
    -create.select(concat("A", "B", "C"));
    -</java>
    -</code-pair><html>								
    -								</html></content>
    -							</section>
    -
    -							<section id="general-functions">
    -								<title>General functions</title>
    -								<content><html>
    -									<p>
    -										There are a variety of general functions supported by jOOQ As discussed in the chapter about <reference id="sql-dialects" title="SQL dialects"/> functions are mostly simulated in your database, in case they are not natively supported.
    -									</p>
    -									<p>
    -										This is a list of general functions supported by jOOQ's <reference id="factory" title="Factory"/>:
    -									</p>
    -									<ul>
    -										<li><strong>COALESCE</strong>: Get the first non-null value in a list of arguments.</li>
    -										<li><strong>NULLIF</strong>: Return NULL if both arguments are equal, or the first argument, otherwise.</li>
    -										<li><strong>NVL</strong>: Get the first non-null value among two arguments.</li>
    -										<li><strong>NVL2</strong>: Get the second argument if the first is null, or the third argument, otherwise.</li>
    -									</ul>
    -																
    -									<p>
    -										Please refer to the <reference class="org.jooq.impl.Factory" title="Factory Javadoc"/> for more details.
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -							<section id="numeric-functions">
    -								<title>Numeric functions</title>
    -								<content><html>
    -									<p>
    -										Math can be done efficiently in the database before returning results to your Java application. In addition to the <reference id="arithmetic-expressions" title="arithmetic expressions" /> discussed previously, jOOQ also supports a variety of numeric functions. As discussed in the chapter about <reference id="sql-dialects" title="SQL dialects"/> numeric functions (as any function type) are mostly simulated in your database, in case they are not natively supported.
    -									</p>
    -									<p>
    -										This is a list of numeric functions supported by jOOQ's <reference id="factory" title="Factory"/>:
    -									</p>
    -									
    -									<ul>
    -										<li><strong>ABS</strong>: Get the absolute value of a value.</li>
    -										<li><strong>ACOS</strong>: Get the arc cosine of a value.</li>
    -										<li><strong>ASIN</strong>: Get the arc sine of a value.</li>
    -										<li><strong>ATAN</strong>: Get the arc tangent of a value.</li>
    -										<li><strong>ATAN2</strong>: Get the atan2 function of two values.</li>
    -										<li><strong>CEIL</strong>: Get the smalles integer value larger than a given numeric value.</li>
    -										<li><strong>COS</strong>: Get the cosine of a value.</li>
    -										<li><strong>COSH</strong>: Get the hyperbolic cosine of a value.</li>
    -										<li><strong>COT</strong>: Get the cotangent of a value.</li>
    -										<li><strong>COTH</strong>: Get the hyperbolic cotangent of a value.</li>
    -										<li><strong>DEG</strong>: Transform radians into degrees.</li>
    -										<li><strong>EXP</strong>: Calculate e^value.</li>
    -										<li><strong>FLOOR</strong>: Get the largest integer value smaller than a given numeric value.</li>
    -										<li><strong>GREATEST</strong>: Finds the greatest among all argument values (can also be used with non-numeric values).</li>
    -										<li><strong>LEAST</strong>: Finds the least among all argument values (can also be used with non-numeric values).</li>
    -										<li><strong>LN</strong>: Get the natural logarithm of a value.</li>
    -										<li><strong>LOG</strong>: Get the logarithm of a value given a base.</li>
    -										<li><strong>POWER</strong>: Calculate value^exponent.</li>
    -										<li><strong>RAD</strong>: Transform degrees into radians.</li>
    -										<li><strong>RAND</strong>: Get a random number.</li>
    -										<li><strong>ROUND</strong>: Rounds a value to the nearest integer.</li>
    -										<li><strong>SIGN</strong>: Get the sign of a value (-1, 0, 1).</li>
    -										<li><strong>SIN</strong>: Get the sine of a value.</li>
    -										<li><strong>SINH</strong>: Get the hyperbolic sine of a value.</li>
    -										<li><strong>SQRT</strong>: Calculate the square root of a value.</li>
    -										<li><strong>TAN</strong>: Get the tangent of a value.</li>
    -										<li><strong>TANH</strong>: Get the hyperbolic tangent of a value.</li>
    -										<li><strong>TRUNC</strong>: Truncate the decimals off a given value.</li>
    -									</ul>
    -									
    -									<p>
    -										Please refer to the <reference class="org.jooq.impl.Factory" title="Factory Javadoc"/> for more details.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="bitwise-functions">
    -								<title>Bitwise functions</title>
    -								<content><html>
    -									<p>
    -										Interestingly, bitwise functions and bitwise arithmetic is not very popular among SQL databases. Most databases only support a few bitwise operations, while others ship with the full set of operators. jOOQ's API includes most bitwise operations as listed below. In order to avoid ambiguities with <reference id="conditional-expressions" title="conditional operators"/>, all bitwise functions are prefixed with "bit"
    -									</p>
    -									<ul>
    -										<li><strong>BIT_COUNT</strong>: Count the number of bits set to 1 in a number</li>
    -										<li><strong>BIT_AND</strong>: Set only those bits that are set in two numbers</li>
    -										<li><strong>BIT_OR</strong>: Set all bits that are set in at least one number</li>
    -										<li><strong>BIT_NAND</strong>: Set only those bits that are set in two numbers, and inverse the result</li>
    -										<li><strong>BIT_NOR</strong>: Set all bits that are set in at least one number, and inverse the result</li>
    -										<li><strong>BIT_NOT</strong>: Inverse the bits in a number</li>
    -										<li><strong>BIT_XOR</strong>: Set all bits that are set in at exactly one number</li>
    -										<li><strong>BIT_XNOR</strong>: Set all bits that are set in at exactly one number, and inverse the result</li>
    -										<li><strong>SHL</strong>: Shift bits to the left</li>
    -										<li><strong>SHR</strong>: Shift bits to the right</li>
    -									</ul>
    -									
    -									<h3>Some background about bitwise operation simulation</h3>
    -									<p>
    -										As stated before, not all databases support all of these bitwise operations. jOOQ simulates them wherever this is possible. More details can be seen in this blog post: <br/>
    -										<a href="http://blog.jooq.org/2011/10/30/the-comprehensive-sql-bitwise-operations-compatibility-list/">http://blog.jooq.org/2011/10/30/the-comprehensive-sql-bitwise-operations-compatibility-list/</a>
    -									</p>
    -									
    -								</html></content>
    -							</section>
    -
    -							<section id="string-functions">
    -								<title>String functions</title>
    -								<content><html>
    -									<p>
    -										String formatting can be done efficiently in the database before returning results to your Java application. As discussed in the chapter about <reference id="sql-dialects" title="SQL dialects"/> string functions (as any function type) are mostly simulated in your database, in case they are not natively supported.
    -									</p>
    -									<p>
    -										This is a list of numeric functions supported by jOOQ's <reference id="factory" title="Factory"/>:
    -									</p>
    -									
    -									<ul>
    -										<li><strong>ASCII</strong>: Get the ASCII code of a character.</li>
    -										<li><strong>BIT_LENGTH</strong>: Get the length of a string in bits.</li>
    -										<li><strong>CHAR_LENGTH</strong>: Get the length of a string in characters.</li>
    -										<li><strong>CONCAT</strong>: Concatenate several strings.</li>
    -										<li><strong>ESCAPE</strong>: Escape a string for use with the <reference id="like-predicate" title="LIKE predicate"/>.</li>
    -										<li><strong>LENGTH</strong>: Get the length of a string.</li>
    -										<li><strong>LOWER</strong>: Get a string in lower case letters.</li>
    -										<li><strong>LPAD</strong>: Pad a string on the left side.</li>
    -										<li><strong>LTRIM</strong>: Trim a string on the left side.</li>
    -										<li><strong>OCTET_LENGTH</strong>: Get the length of a string in octets.</li>
    -										<li><strong>POSITION</strong>: Find a string within another string.</li>
    -										<li><strong>REPEAT</strong>: Repeat a string a given number of times.</li>
    -										<li><strong>REPLACE</strong>: Replace a string within another string.</li>
    -										<li><strong>RPAD</strong>: Pad a string on the right side.</li>
    -										<li><strong>RTRIM</strong>: Trim a string on the right side.</li>
    -										<li><strong>SUBSTRING</strong>: Get a substring of a string.</li>
    -										<li><strong>TRIM</strong>: Trim a string on both sides.</li>
    -										<li><strong>UPPER</strong>: Get a string in upper case letters.</li>
    -									</ul>
    -									
    -									<p>
    -										Please refer to the <reference class="org.jooq.impl.Factory" title="Factory Javadoc"/> for more details.
    -									</p>
    -									
    -									<h3>Regular expressions, REGEXP, REGEXP_LIKE, etc.</h3>
    -									<p>
    -										Various databases have some means of searching through columns using regular expressions if the <reference id="like-predicate" title="LIKE predicate"/> does not provide sufficient pattern matching power. While there are many different functions and operators in the various databases, jOOQ settled for the SQL:2008 standard REGEX_LIKE operator. Being an operator (and not a function), you should use the corresponding method on <reference class="org.jooq.Field"/>:
    -									</p>
    -									
    -</html><java><![CDATA[create.selectFrom(BOOK).where(TITLE.likeRegex("^.*SQL.*$"));]]></java><html>
    -
    -									<p>
    -										Note that the SQL standard specifies that patterns should follow the XQuery standards. In the real world, the POSIX regular expression standard is the most used one, some use Java regular expressions, and only a few ones use Perl regular expressions. jOOQ does not make any assumptions about regular expression syntax. For cross-database compatibility, please read the relevant database manuals carefully, to learn about the appropriate syntax. Please refer to the <reference class="org.jooq.impl.Factory" title="Factory Javadoc"/> for more details.
    -									</p>
    -								</html></content>
    -								<!-- don't forget regex here! -->
    -							</section>
    -
    -							<section id="date-and-time-functions">
    -								<title>Date and time functions</title>
    -								<content><html>
    -									<p>
    -										This is a list of date and time functions supported by jOOQ's <reference id="factory" title="Factory"/>:
    -									</p>
    -									
    -									<ul>
    -										<li><strong>CURRENT_DATE</strong>: Get current date as a DATE object.</li>
    -										<li><strong>CURRENT_TIME</strong>: Get current time as a TIME object.</li>
    -										<li><strong>CURRENT_TIMESTAMP</strong>: Get current date as a TIMESTAMP object.</li>
    -										<li><strong>DATE_ADD</strong>: Add a number of days or an interval to a date.</li>
    -										<li><strong>DATE_DIFF</strong>: Get the difference in days between two dates.</li>
    -										<li><strong>TIMESTAMP_ADD</strong>: Add a number of days or an interval to a timestamp.</li>
    -										<li><strong>TIMESTAMP_DIFF</strong>: Get the difference as an INTERVAL DAY TO SECOND between two dates.</li>
    -									</ul>
    -									
    -									<h3>Intervals in jOOQ</h3>
    -									<p>
    -										jOOQ fills a gap opened by JDBC, which neglects an important SQL data type as defined by the SQL standards: INTERVAL types. See the manual's section about <reference id="data-types-intervals" title="INTERVAL data types"/> for more details.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="system-functions">
    -								<title>System functions</title>
    -								<content><html>
    -									<p>
    -										This is a list of system functions supported by jOOQ's <reference id="factory" title="Factory"/>:
    -									</p>
    -									<ul>
    -										<li><strong>CURRENT_USER</strong>: Get current user.</li>
    -									</ul>
    -								</html></content>
    -							</section>
    -
    -							<section id="aggregate-functions">
    -								<title>Aggregate functions</title>
    -								<content><html>
    -									<p>
    -										Aggregate functions work just like functions, even if they have a slightly different semantics. Here are some example aggregate functions from the <reference id="factory" title="Factory"/>:
    -									</p>
    -
    -</html><java><![CDATA[// Every-day, SQL standard aggregate functions
    -AggregateFunction<Integer>    count();
    -AggregateFunction<Integer>    count(Field<?> field);
    -AggregateFunction<T>          max  (Field<T> field);
    -AggregateFunction<T>          min  (Field<T> field);
    -AggregateFunction<BigDecimal> sum  (Field<? extends Number> field);
    -AggregateFunction<BigDecimal> avg  (Field<? extends Number> field);
    -
    -// DISTINCT keyword in aggregate functions
    -AggregateFunction<Integer>    countDistinct(Field<?> field);
    -AggregateFunction<T>          maxDistinct  (Field<T> field);
    -AggregateFunction<T>          minDistinct  (Field<T> field);
    -AggregateFunction<BigDecimal> sumDistinct  (Field<? extends Number> field);
    -AggregateFunction<BigDecimal> avgDistinct  (Field<? extends Number> field);
    -
    -// String aggregate functions
    -AggregateFunction<String> groupConcat        (Field<?> field);
    -AggregateFunction<String> groupConcatDistinct(Field<?> field);
    -OrderedAggregateFunction<String> listAgg(Field<?> field);
    -OrderedAggregateFunction<String> listAgg(Field<?> field, String separator);
    -
    -// Statistical functions
    -AggregateFunction<BigDecimal> median    (Field<? extends Number> field);
    -AggregateFunction<BigDecimal> stddevPop (Field<? extends Number> field);
    -AggregateFunction<BigDecimal> stddevSamp(Field<? extends Number> field);
    -AggregateFunction<BigDecimal> varPop    (Field<? extends Number> field);
    -AggregateFunction<BigDecimal> varSamp   (Field<? extends Number> field);
    -
    -// Linear regression functions
    -AggregateFunction<BigDecimal> regrAvgX     (Field<? extends Number> y, Field<? extends Number> x);
    -AggregateFunction<BigDecimal> regrAvgY     (Field<? extends Number> y, Field<? extends Number> x);
    -AggregateFunction<BigDecimal> regrCount    (Field<? extends Number> y, Field<? extends Number> x);
    -AggregateFunction<BigDecimal> regrIntercept(Field<? extends Number> y, Field<? extends Number> x);
    -AggregateFunction<BigDecimal> regrR2       (Field<? extends Number> y, Field<? extends Number> x);
    -AggregateFunction<BigDecimal> regrSlope    (Field<? extends Number> y, Field<? extends Number> x);
    -AggregateFunction<BigDecimal> regrSXX      (Field<? extends Number> y, Field<? extends Number> x);
    -AggregateFunction<BigDecimal> regrSXY      (Field<? extends Number> y, Field<? extends Number> x);
    -AggregateFunction<BigDecimal> regrSYY      (Field<? extends Number> y, Field<? extends Number> x);]]></java><html>
    -
    -									<p>
    -										Here's an example, counting the number of books any author has written:
    -									</p>
    -
    -</html><code-pair>
    -<sql>SELECT AUTHOR_ID, COUNT(*)
    -FROM BOOK
    -GROUP BY AUTHOR_ID</sql><java>create.select(BOOK.AUTHOR_ID, count())
    -      .from(BOOK)
    -      .groupBy(BOOK.AUTHOR_ID);</java>
    -</code-pair><html>
    -
    -									<p>
    -										Aggregate functions have strong limitations about when they may be used and when not. For instance, you can use aggregate functions in scalar queries. Typically, this means you only select aggregate functions, no <reference id="table-columns" title="regular columns"/> or other <reference id="column-expressions" title="column expressions"/>. Another use case is to use them along with a <reference id="group-by-clause" title="GROUP BY clause"/> as seen in the previous example. Note, that jOOQ does not check whether your using of aggregate functions is correct according to the SQL standards, or according to your database's behaviour.
    -									</p>
    -
    -		                            <h3>Ordered aggregate functions</h3>
    -		                            <p>
    -		                            	Oracle and some other databases support "ordered aggregate functions". This means you can provide an ORDER BY clause to an aggregate function, which will be taken into consideration when aggregating. The best example for this is Oracle's <code>LISTAGG()</code> (also known as <code>GROUP_CONCAT</code> in other <reference id="sql-dialects" title="SQL dialects"/>). The following query groups by authors and concatenates their books' titles
    -		                           	</p>
    -</html><code-pair>
    -<sql>SELECT   LISTAGG(TITLE, ', ')
    -         WITHIN GROUP (ORDER BY TITLE)
    -FROM     BOOK
    -GROUP BY AUTHOR_ID</sql><java>create.select(listAgg(BOOK.TITLE, ", ")
    -      .withinGroupOrderBy(BOOK.TITLE))
    -      .from(BOOK)
    -      .groupBy(BOOK.AUTHOR_ID)</java>
    -</code-pair><html>
    -
    -									<p>
    -										The above query might yield:
    -									</p>
    -
    -</html><text>+---------------------+
    -| LISTAGG             |
    -+---------------------+
    -| 1984, Animal Farm   |
    -| O Alquimista, Brida |
    -+---------------------+</text><html>
    -
    -									<h3>FIRST and LAST: Oracle's "ranked" aggregate functions</h3>
    -									<p>
    -										Oracle allows for restricting aggregate functions using the <code>KEEP()</code> clause, which is supported by jOOQ. In Oracle, some aggregate functions (MIN, MAX, SUM, AVG, COUNT, VARIANCE, or STDDEV) can be restricted by this clause, hence <reference class="org.jooq.AggregateFunction"/> also allows for specifying it. Here are a couple of examples using this clause:
    -									</p>
    -
    -</html><code-pair>
    -<sql>SUM(BOOK.AMOUNT_SOLD)
    -  KEEP(DENSE_RANK FIRST ORDER BY BOOK.AUTHOR_ID)</sql><java>sum(BOOK.AMOUNT_SOLD)
    -  .keepDenseRankFirstOrderBy(BOOK.AUTHOR_ID)</java>
    -</code-pair><html>
    -
    -									<h3>User-defined aggregate functions</h3>
    -									<p>
    -										jOOQ also supports using your own user-defined aggregate functions. See the manual's section about <reference id="user-defined-aggregate-functions" title="user-defined aggregate functions"/> for more details.
    -									</p>
    -
    -									<h3>Window functions / analytical functions</h3>
    -									<p>
    -										In those databases that support <reference id="window-functions" title="window functions"/>, jOOQ's <reference class="org.jooq.AggregateFunction"/> can be transformed into a window function / analytical function by calling <code>over()</code> on it. See the manual's section about <reference id="window-functions" title="window functions"/> for more details.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="window-functions">
    -								<title>Window functions</title>
    -								<content><html>
    -									<p>
    -										Most major RDBMS support the concept of window functions. jOOQ knows of implementations in DB2, Oracle, Postgres, SQL Server, and Sybase SQL Anywhere, and supports most of their specific syntaxes. Note, that H2 and HSQLDB have implemented <code>ROW_NUMBER()</code> functions, without true windowing support.
    -									</p>
    -									<p>
    -										As previously discussed, any <reference class="org.jooq.AggregateFunction"/> can be transformed into a window function using the <code>over()</code> method. See the chapter about <reference id="aggregate-functions" title="aggregate functions"/> for details. In addition to those, there are also some more window functions supported by jOOQ, as declared in the <reference id="factory" title="Factory"/>:
    -									</p>
    -
    -</html><java><![CDATA[// Ranking functions
    -    WindowOverStep<Integer>    rowNumber();
    -    WindowOverStep<Integer>    rank();
    -    WindowOverStep<Integer>    denseRank();
    -    WindowOverStep<BigDecimal> percentRank();
    -    
    -// Windowing functions
    -<T> WindowIgnoreNullsStep<T>   firstValue(Field<T> field);
    -<T> WindowIgnoreNullsStep<T>   lastValue(Field<T> field)
    -<T> WindowIgnoreNullsStep<T>   lead(Field<T> field);
    -<T> WindowIgnoreNullsStep<T>   lead(Field<T> field, int offset);
    -<T> WindowIgnoreNullsStep<T>   lead(Field<T> field, int offset, T defaultValue);
    -<T> WindowIgnoreNullsStep<T>   lead(Field<T> field, int offset, Field<T> defaultValue);
    -<T> WindowIgnoreNullsStep<T>   lag(Field<T> field);
    -<T> WindowIgnoreNullsStep<T>   lag(Field<T> field, int offset);
    -<T> WindowIgnoreNullsStep<T>   lag(Field<T> field, int offset, T defaultValue);
    -<T> WindowIgnoreNullsStep<T>   lag(Field<T> field, int offset, Field<T> defaultValue);
    -
    -// Statistical functions
    -    WindowOverStep<BigDecimal> cumeDist();
    -    WindowOverStep<Integer>    ntile(int number);]]></java><html>	
    -    								
    -    								<p>
    -    									SQL distinguishes between various window function types (e.g. "ranking functions"). Depending on the function, SQL expects mandatory <code>PARTITION BY</code> or <code>ORDER BY</code> clauses within the <code>OVER()</code> clause. jOOQ does not enforce those rules for two reasons:
    -    								</p>
    -    								<ul>
    -    									<li>Your JDBC driver or database already checks SQL syntax semantics</li>
    -    									<li>Not all databases behave correctly according to the SQL standard</li>
    -    								</ul>
    -    								<p>
    -    									If possible, however, jOOQ tries to render missing clauses for you, if a given <reference id="sql-dialects" title="SQL dialect"/> is more restrictive.
    -    								</p>
    -    								<h3>Some examples</h3>
    -									<p>
    -										 Here are some simple examples of window functions with jOOQ:
    -									</p>
    -									
    -</html><code-pair>
    -<sql>-- Sample uses of ROW_NUMBER()
    -ROW_NUMBER() OVER()
    -ROW_NUMBER() OVER(PARTITION BY 1)
    -ROW_NUMBER() OVER(ORDER BY BOOK.ID)
    -ROW_NUMBER() OVER(PARTITION BY BOOK.AUTHOR_ID ORDER BY BOOK.ID)
    -                  
    --- Sample uses of FIRST_VALUE
    -FIRST_VALUE(BOOK.ID) OVER()
    -FIRST_VALUE(BOOK.ID IGNORE NULLS) OVER()
    -FIRST_VALUE(BOOK.ID RESPECT NULLS) OVER()
    -</sql><java>// Sample uses of rowNumber()
    -rowNumber().over()
    -rowNumber().over().partitionByOne()
    -rowNumber().over().partitionBy(BOOK.AUTHOR_ID)
    -rowNumber().over().partitionBy(BOOK.AUTHOR_ID).orderBy(BOOK.ID)
    -                  
    -// Sample uses of firstValue()
    -firstValue(BOOK.ID).over()
    -firstValue(BOOK.ID).ignoreNulls().over()
    -firstValue(BOOK.ID).respectNulls().over()
    -</java>
    -</code-pair><html>
    -    								
    -									<h3>An advanced window function example</h3>
    -									<p>
    -										Window functions can be used for things like calculating a "running total". The following example fetches transactions and the running total for every transaction going back to the beginning of the transaction table (ordered by booked_at). Window functions are accessible from the previously seen <reference class="org.jooq.AggregateFunction"/> type using the <code>over()</code> method:
    -									</p>
    -
    -</html><code-pair>
    -<sql>SELECT booked_at, amount,
    -   SUM(amount) OVER (PARTITION BY 1
    -                     ORDER BY booked_at
    -                     ROWS BETWEEN UNBOUNDED PRECEDING
    -                     AND CURRENT ROW) AS total
    -  FROM transactions</sql><java>create.select(t.BOOKED_AT, t.AMOUNT,
    -         sum(t.AMOUNT).over().partitionByOne()
    -                      .orderBy(t.BOOKED_AT)
    -                      .rowsBetweenUnboundedPreceding()
    -                      .andCurrentRow().as("total")
    -      .from(TRANSACTIONS.as("t"));</java>
    -</code-pair><html>
    -
    -
    -									<h3>Window functions created from ordered aggregate functions</h3>
    -									<p>
    -										In the previous chapter about <reference id="aggregate-functions" title="aggregate functions"/>, we have seen the concept of "ordered aggregate functions", such as Oracle's <code>LISTAGG()</code>. These functions have a window function / analytical function variant, as well. For example:
    -									</p>
    -									
    -</html><code-pair>
    -<sql>SELECT   LISTAGG(TITLE, ', ')
    -         WITHIN GROUP (ORDER BY TITLE)
    -         OVER (PARTITION BY BOOK.AUTHOR_ID)
    -FROM     BOOK</sql><java>create.select(listAgg(BOOK.TITLE, ", ")
    -      .withinGroupOrderBy(BOOK.TITLE)
    -      .over().partitionBy(BOOK.AUTHOR_ID))
    -      .from(BOOK)</java>
    -</code-pair><html>
    -
    -									<h3>Window functions created from Oracle's FIRST and LAST aggregate functions</h3>
    -									<p>
    -										In the previous chapter about <reference id="aggregate-functions" title="aggregate functions"/>, we have seen the concept of "FIRST and LAST aggregate functions". These functions have a window function / analytical function variant, as well. For example:
    -									</p>
    -
    -</html><code-pair>
    -<sql>SUM(BOOK.AMOUNT_SOLD)
    -  KEEP(DENSE_RANK FIRST ORDER BY BOOK.AUTHOR_ID)
    -  OVER(PARTITION BY 1)</sql><java>sum(BOOK.AMOUNT_SOLD)
    -  .keepDenseRankFirstOrderBy(BOOK.AUTHOR_ID)
    -  .over().partitionByOne()</java>
    -</code-pair><html>
    -
    -
    -									<h3>Window functions created from user-defined aggregate functions</h3>
    -									<p>
    -										User-defined aggregate functions also implement <reference class="org.jooq.AggregateFunction"/>, hence they can also be transformed into window functions using <code>over()</code>. This is supported by Oracle in particular. See the manual's section about <reference id="user-defined-aggregate-functions" title="user-defined aggregate functions"/> for more details.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="grouping-functions">
    -								<title>Grouping functions</title>
    -								<content><html>
    -									<h3>ROLLUP() explained in SQL</h3>
    -									<p>
    -										The SQL standard defines special functions that can be used in the <reference id="group-by-clause" title="GROUP BY clause"/>: the grouping functions. These functions can be used to generate several groupings in a single clause. This can best be explained in SQL. Let's take ROLLUP() for instance:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- ROLLUP() with one argument 
    -SELECT AUTHOR_ID, COUNT(*)
    -FROM BOOK
    -GROUP BY ROLLUP(AUTHOR_ID)
    -
    -
    --- ROLLUP() with two arguments
    -SELECT AUTHOR_ID, PUBLISHED_IN, COUNT(*)
    -FROM BOOK
    -GROUP BY ROLLUP(AUTHOR_ID, PUBLISHED_IN)
    -
    -
    -
    -
    -
    -
    -
    -]]></sql><sql><![CDATA[-- The same query using UNION ALL:
    -  SELECT AUTHOR_ID, COUNT(*) FROM BOOK GROUP BY (AUTHOR_ID)
    -UNION ALL
    -  SELECT NULL, COUNT(*) FROM BOOK GROUP BY ()
    -ORDER BY 1 NULLS LAST
    -
    --- The same query using UNION ALL:
    -  SELECT AUTHOR_ID, PUBLISHED_IN, COUNT(*) 
    -  FROM BOOK GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -UNION ALL
    -  SELECT AUTHOR_ID, NULL, COUNT(*) 
    -  FROM BOOK GROUP BY (AUTHOR_ID)
    -UNION ALL
    -  SELECT NULL, NULL, COUNT(*) 
    -  FROM BOOK GROUP BY ()
    -ORDER BY 1 NULLS LAST, 2 NULLS LAST
    -]]></sql>
    -</code-pair><html>
    -
    -									<p>
    -										In English, the <code>ROLLUP()</code> grouping function provides <code>N+1</code> groupings, when <code>N</code> is the number of arguments to the <code>ROLLUP()</code> function. Each grouping has an additional group field from the <code>ROLLUP()</code> argument field list. The results of the second query might look something like this:
    -									</p>
    -									
    -</html><text><![CDATA[+-----------+--------------+----------+
    -| AUTHOR_ID | PUBLISHED_IN | COUNT(*) |
    -+-----------+--------------+----------+
    -|         1 |         1945 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -|         1 |         1948 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -|         1 |         NULL |        2 | <- GROUP BY (AUTHOR_ID)
    -|         2 |         1988 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -|         2 |         1990 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -|         2 |         NULL |        2 | <- GROUP BY (AUTHOR_ID)
    -|      NULL |         NULL |        4 | <- GROUP BY ()
    -+-----------+--------------+----------+]]></text><html>
    -
    -									<h3>CUBE() explained in SQL</h3>
    -									<p>
    -										<code>CUBE()</code> is different from <code>ROLLUP()</code> in the way that it doesn't just create <code>N+1</code> groupings, it creates all <code>2^N</code> possible combinations between all group fields in the <code>CUBE()</code> function argument list. Let's re-consider our second query from before:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- CUBE() with two arguments
    -SELECT AUTHOR_ID, PUBLISHED_IN, COUNT(*)
    -FROM BOOK
    -GROUP BY CUBE(AUTHOR_ID, PUBLISHED_IN)
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -]]></sql><sql><![CDATA[-- The same query using UNION ALL:
    -  SELECT AUTHOR_ID, PUBLISHED_IN, COUNT(*) 
    -  FROM BOOK GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -UNION ALL
    -  SELECT AUTHOR_ID, NULL, COUNT(*) 
    -  FROM BOOK GROUP BY (AUTHOR_ID)
    -UNION ALL
    -  SELECT NULL, PUBLISHED_IN, COUNT(*) 
    -  FROM BOOK GROUP BY (PUBLISHED_IN)
    -UNION ALL
    -  SELECT NULL, NULL, COUNT(*) 
    -  FROM BOOK GROUP BY ()
    -ORDER BY 1 NULLS FIRST, 2 NULLS FIRST
    -]]></sql>
    -</code-pair><html>
    -
    -									<p>
    -										The results would then hold:
    -									</p>
    -
    -</html><text><![CDATA[+-----------+--------------+----------+
    -| AUTHOR_ID | PUBLISHED_IN | COUNT(*) |
    -+-----------+--------------+----------+
    -|      NULL |         NULL |        2 | <- GROUP BY ()
    -|      NULL |         1945 |        1 | <- GROUP BY (PUBLISHED_IN)
    -|      NULL |         1948 |        1 | <- GROUP BY (PUBLISHED_IN)
    -|      NULL |         1988 |        1 | <- GROUP BY (PUBLISHED_IN)
    -|      NULL |         1990 |        1 | <- GROUP BY (PUBLISHED_IN)
    -|         1 |         NULL |        2 | <- GROUP BY (AUTHOR_ID)
    -|         1 |         1945 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -|         1 |         1948 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -|         2 |         NULL |        2 | <- GROUP BY (AUTHOR_ID)
    -|         2 |         1988 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -|         2 |         1990 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -+-----------+--------------+----------+]]></text><html>
    -
    -									<h3>GROUPING SETS()</h3>
    -									<p>
    -										<code>GROUPING SETS()</code> are the generalised way to create multiple groupings. From our previous examples 
    -									</p>
    -									<ul>
    -										<li><code>ROLLUP(AUTHOR_ID, PUBLISHED_IN)</code> corresponds to <code>GROUPING SETS((AUTHOR_ID, PUBLISHED_IN), (AUTHOR_ID), ())</code></li>
    -										<li><code>CUBE(AUTHOR_ID, PUBLISHED_IN)</code> corresponds to <code>GROUPING SETS((AUTHOR_ID, PUBLISHED_IN), (AUTHOR_ID), (PUBLISHED_IN), ())</code></li>
    -									</ul>
    -									<p>
    -										This is nicely explained in the SQL Server manual pages about <code>GROUPING SETS()</code> and other grouping functions:<br/>
    -										<a href="http://msdn.microsoft.com/en-us/library/bb510427(v=sql.105)">http://msdn.microsoft.com/en-us/library/bb510427(v=sql.105)</a>
    -									</p>
    -									
    -									<h3>jOOQ's support for ROLLUP(), CUBE(), GROUPING SETS()</h3>
    -									<p>
    -										jOOQ fully supports all of these functions, as well as the utility functions <code>GROUPING()</code> and <code>GROUPING_ID()</code>, used for identifying the grouping set ID of a record. The <reference id="factory" title="Factory API"/> thus includes:
    -									</p>
    -									
    -</html><java><![CDATA[// The various grouping function constructors
    -Field<?> rollup(Field<?>... fields);
    -Field<?> cube(Field<?>... fields);
    -Field<?> groupingSets(Field<?>... fields);
    -Field<?> groupingSets(Field<?>[]... fields);
    -Field<?> groupingSets(Collection<Field<?>>... fields);
    -
    -// The utility functions generating IDs per GROUPING SET
    -Field<Integer> grouping(Field<?>);
    -Field<Integer> groupingId(Field<?>...);]]></java><html>
    -
    -									<h3>MySQL's and CUBRID's WITH ROLLUP syntax</h3>
    -									<p>
    -										MySQL and CUBRID don't know any grouping functions, but they support a <code>WITH ROLLUP</code> clause, that is equivalent to simple <code>ROLLUP()</code> grouping functions. jOOQ simulates <code>ROLLUP()</code> in MySQL and CUBRID, by rendering this <code>WITH ROLLUP</code> clause. The following two statements mean the same:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[-- Statement 1: SQL standard
    -GROUP BY ROLLUP(A, B, C)
    -
    --- Statement 2: SQL standard
    -GROUP BY A, ROLLUP(B, C)]]></sql><sql><![CDATA[-- Statement 1: MySQL
    -GROUP BY A, B, C WITH ROLLUP
    -
    --- Statement 2: MySQL
    --- This is not supported in MySQL]]></sql>
    -</code-pair><html>
    -								</html></content>
    -							</section>
    -
    -							<section id="user-defined-functions">
    -								<title>User-defined functions</title>
    -								<content><html>
    -									<p>
    -										Some databases support user-defined functions, which can be embedded in any SQL statement, if you're using jOOQ's <reference id="code-generation" title="code generator"/>. Let's say you have the following simple function in Oracle SQL:
    -									</p>
    -									
    -</html><sql><![CDATA[CREATE OR REPLACE FUNCTION echo (INPUT NUMBER)
    -RETURN NUMBER
    -IS
    -BEGIN
    -    RETURN INPUT;
    -END echo;
    -]]></sql><html>
    -
    -                                    <p>
    -                                    	The above function will be made available from a generated <reference id="codegen-procedures" title="Routines"/> class. You can use it like any other <reference id="column-expressions" title="column expression"/>:
    -                                    </p>
    -                                    
    -</html><code-pair>
    -<sql><![CDATA[SELECT echo(1) FROM DUAL WHERE echo(2) = 2]]></sql><java><![CDATA[create.select(echo(1)).where(echo(2).equal(2));]]></java>
    -</code-pair><html>
    -                                
    -                                	<p>
    -                                		Note that user-defined functions returning <reference id="data-types-cursors" title="CURSOR"/> or <reference id="data-types-arrays" title="ARRAY"/> data types can also be used wherever <reference id="table-expressions" title="table expressions"/> can be used, if they are <reference id="array-and-cursor-unnesting" title="unnested"/>
    -                                	</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="user-defined-aggregate-functions">
    -								<title>User-defined aggregate functions</title>
    -								<content><html>
    -									<p>
    -										Some databases support user-defined aggregate functions, which can then be used along with <reference id="group-by-clause" title="GROUP BY clauses"/> or as <reference id="window-functions" title="window functions"/>. An example for such a database is Oracle. With Oracle, you can define the following OBJECT type (the example was taken from the <a href="http://docs.oracle.com/cd/B28359_01/appdev.111/b28425/ext_agg_ref.htm">Oracle 11g documentation</a>): 
    -									</p>
    -									
    -</html><sql><![CDATA[CREATE TYPE U_SECOND_MAX AS OBJECT
    -(
    -  MAX NUMBER, -- highest value seen so far
    -  SECMAX NUMBER, -- second highest value seen so far
    -  STATIC FUNCTION ODCIAggregateInitialize(sctx IN OUT U_SECOND_MAX) RETURN NUMBER,
    -  MEMBER FUNCTION ODCIAggregateIterate(self IN OUT U_SECOND_MAX, value IN NUMBER) RETURN NUMBER,
    -  MEMBER FUNCTION ODCIAggregateTerminate(self IN U_SECOND_MAX, returnValue OUT NUMBER, flags IN NUMBER) RETURN NUMBER,
    -  MEMBER FUNCTION ODCIAggregateMerge(self IN OUT U_SECOND_MAX, ctx2 IN U_SECOND_MAX) RETURN NUMBER
    -);
    -
    -CREATE OR REPLACE TYPE BODY U_SECOND_MAX IS
    -STATIC FUNCTION ODCIAggregateInitialize(sctx IN OUT U_SECOND_MAX)
    -RETURN NUMBER IS
    -BEGIN
    -  SCTX := U_SECOND_MAX(0, 0);
    -  RETURN ODCIConst.Success;
    -END;
    -
    -MEMBER FUNCTION ODCIAggregateIterate(self IN OUT U_SECOND_MAX, value IN NUMBER) RETURN NUMBER IS
    -BEGIN
    -  IF VALUE > SELF.MAX THEN
    -    SELF.SECMAX := SELF.MAX;
    -    SELF.MAX := VALUE;
    -  ELSIF VALUE > SELF.SECMAX THEN
    -    SELF.SECMAX := VALUE;
    -  END IF;
    -  RETURN ODCIConst.Success;
    -END;
    -
    -MEMBER FUNCTION ODCIAggregateTerminate(self IN U_SECOND_MAX, returnValue OUT NUMBER, flags IN NUMBER) RETURN NUMBER IS
    -BEGIN
    -  RETURNVALUE := SELF.SECMAX;
    -  RETURN ODCIConst.Success;
    -END;
    -
    -MEMBER FUNCTION ODCIAggregateMerge(self IN OUT U_SECOND_MAX, ctx2 IN U_SECOND_MAX) RETURN NUMBER IS
    -BEGIN
    -  IF CTX2.MAX > SELF.MAX THEN
    -    IF CTX2.SECMAX > SELF.SECMAX THEN
    -      SELF.SECMAX := CTX2.SECMAX;
    -    ELSE
    -      SELF.SECMAX := SELF.MAX;
    -    END IF;
    -    SELF.MAX := CTX2.MAX;
    -  ELSIF CTX2.MAX > SELF.SECMAX THEN
    -    SELF.SECMAX := CTX2.MAX;
    -  END IF;
    -  RETURN ODCIConst.Success;
    -END;
    -END;]]></sql><html>
    -
    -									<p>
    -										The above OBJECT type is then available to function declarations as such:
    -									</p>
    -
    -</html><sql><![CDATA[
    -CREATE FUNCTION SECOND_MAX (input NUMBER) RETURN NUMBER
    -PARALLEL_ENABLE AGGREGATE USING U_SECOND_MAX;]]></sql><html>
    -
    -									<h3>Using the generated aggregate function</h3>
    -									<p>
    -										jOOQ's <reference id="code-generation" title="code generator"/> will detect such aggregate functions and generate them differently from regular <reference id="user-defined-functions" title="user-defined functions"/>. They implement the <reference class="org.jooq.AggregateFunction"/> type, as mentioned in the manual's section about <reference id="aggregate-functions" title="aggregate functions"/>. Here's how you can use the SECOND_MAX() aggregate function with jOOQ:
    -									</p>
    -				
    -</html><code-pair>					
    -<sql><![CDATA[-- Get the second-latest publishing date by author
    -SELECT SECOND_MAX(PUBLISHED_IN) 
    -FROM BOOK
    -GROUP BY AUTHOR_ID]]></sql><java><![CDATA[// Routines.secondMax() can be static-imported
    -create.select(secondMax(BOOK.PUBLISHED_IN))
    -      .from(BOOK)
    -      .groupBy(BOOK.AUTHOR_ID)]]></java>
    -</code-pair><html>
    -								</html></content>
    -							</section>
    -
    -							<section id="case-expressions">
    -								<title>The CASE expression</title>
    -								<content><html>
    -									<p>
    -										The CASE expression is part of the standard SQL syntax. While some RDBMS also offer an IF expression, or a DECODE function, you can always rely on the two types of CASE syntax:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[CASE WHEN AUTHOR.FIRST_NAME = 'Paulo'  THEN 'brazilian'
    -     WHEN AUTHOR.FIRST_NAME = 'George' THEN 'english'
    -                                       ELSE 'unknown'
    -END
    -
    --- OR:
    -
    -CASE AUTHOR.FIRST_NAME WHEN 'Paulo'  THEN 'brazilian'
    -                       WHEN 'George' THEN 'english'
    -                                     ELSE 'unknown'
    -END]]></sql><java><![CDATA[create.decode()
    -      .when(AUTHOR.FIRST_NAME.equal("Paulo"), "brazilian")
    -      .when(AUTHOR.FIRST_NAME.equal("George"), "english")
    -      .otherwise("unknown");
    -
    -// OR:
    -
    -create.decode().value(AUTHOR.FIRST_NAME)
    -               .when("Paulo", "brazilian")
    -               .when("George", "english")
    -               .otherwise("unknown");]]></java>
    -</code-pair><html>
    -
    -								<p>
    -									In jOOQ, both syntaxes are supported (The second one is simulated in Derby, which only knows the first one). Unfortunately, both case and else are reserved words in Java. jOOQ chose to use decode() from the Oracle DECODE function, and otherwise(), which means the same as else.
    -								</p>
    -
    -								<p>
    -									A CASE expression can be used anywhere where you can place a <reference id="column-expressions" title="column expression (or Field)"/>. For instance, you can SELECT the above expression, if you're selecting from AUTHOR:
    -							 	</p>
    -
    -</html><sql>SELECT AUTHOR.FIRST_NAME, [... CASE EXPR ...] AS nationality
    -  FROM AUTHOR</sql><html>
    -
    -								<h3>The Oracle DECODE() function</h3>
    -								<p>
    -									Oracle knows a more succinct, but maybe less readable DECODE() function with a variable number of arguments. This function roughly does the same as the second case expression syntax. jOOQ supports the DECODE() function and simulates it using CASE expressions in all dialects other than Oracle:
    -								</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- Oracle:
    -DECODE(FIRST_NAME, 'Paulo', 'brazilian',
    -                   'George', 'english',
    -                   'unknown');
    -
    --- Other SQL dialects
    -CASE AUTHOR.FIRST_NAME WHEN 'Paulo'  THEN 'brazilian'
    -                       WHEN 'George' THEN 'english'
    -                                     ELSE 'unknown'
    -END]]></sql><java><![CDATA[
    -
    -
    -
    -
    -// Use the Oracle-style DECODE() function with jOOQ.
    -// Note, that you will not be able to rely on type-safety
    -create.decode(AUTHOR.FIRST_NAME,
    -    "Paulo", "brazilian",
    -    "George", "english",
    -    "unknown");]]></java>
    -</code-pair><html>
    -
    -		  							<h3>CASE clauses in an ORDER BY clause</h3>
    -									<p>
    -										Sort indirection is often implemented with a CASE clause of a SELECT's ORDER BY clause. See the manual's section about the <reference id="order-by-clause" title="ORDER BY clause"/> for more details.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="sequences-and-serials">
    -								<title>Sequences and serials</title>
    -								<content><html>
    -									<p>
    -										Sequences implement the <reference class="org.jooq.Sequence"/> interface, providing essentially this functionality:
    -									</p>
    -
    -</html><java><![CDATA[// Get a field for the CURRVAL sequence property
    -Field<T> currval();
    -
    -// Get a field for the NEXTVAL sequence property
    -Field<T> nextval();]]></java><html>
    -
    -									<p>
    -										So if you have a sequence like this in Oracle:
    -									</p>
    -
    -</html><sql>CREATE SEQUENCE s_author_id</sql><html>
    -
    -									<p>
    -										You can then use your <reference id="codegen-sequences" title="generated sequence"/> object directly in a SQL statement as such:
    -									</p>
    -
    -</html><java><![CDATA[// Reference the sequence in a SELECT statement:
    -BigInteger nextID = create.select(s).fetchOne(S_AUTHOR_ID.nextval());
    -
    -// Reference the sequence in an INSERT statement:
    -create.insertInto(AUTHOR, AUTHOR.ID, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .values(S_AUTHOR_ID.nextval(), val("William"), val("Shakespeare"));
    -]]></java><html>
    -
    -									<ul>
    -										<li>For more information about generated sequences, refer to the manual's section about <reference id="codegen-sequences" title="generated sequences"/></li>
    -										<li>For more information about executing standalone calls to sequences, refer to the manual's section about <reference id="sequence-execution" title="sequence execution"/></li>
    -									</ul>
    -								</html></content>
    -							</section>
    -							
    -							<section id="row-value-expressions">
    -								<title>Tuples or row value expressions</title>
    -								<content><html>
    -									<p>
    -										According to the SQL standard, row value expressions can have a degree of more than one. This is commonly used in the <reference id="insert-statement" title="INSERT statement"/>, where the VALUES row value constructor allows for providing a row value expression as a source for INSERT data. Row value expressions can appear in various other places, though. They are supported by jOOQ as s / rows. jOOQ's <reference id="factory" title="Factory"/> allows for the construction of type-safe s up to the degree / arity of 8. Higher-degree s are supported as well, but without any type-safety.  types are modelled as follows:
    -									</p>
    -									
    -</html><java><![CDATA[// The Factory provides overloaded row value expression constructor methods:
    -public static <T1> Row1<T1> row(T1 t1) { ... }
    -public static <T1, T2> Row2<T1, T2> row(T1 t1, T2 t2) { ... }
    -public static <T1, T2, T3> Row3<T1, T2, T3> row(T1 t1, T2 t2, T3 t3) { ... }
    -public static <T1, T2, T3, T4> Row4<T1, T2, T3, T4> row(T1 t1, T2 t2, T3 t3, T4 t4) { ... }
    -
    -// [ ... idem for Row5, Row6, Row7, Row8 ... ]
    -
    -// Degrees of more than 8 are supported without type-safety
    -public static RowN row(Object... values) { ... }]]></java><html>
    -
    -									<h3>Using row value expressions in predicates</h3>
    -                                	<p>
    -                                		Row value expressions are incompatible with most other <reference id="queryparts" title="QueryParts"/>, but they can be used as a basis for constructing various <reference id="conditional-expressions" title="conditional expressions"/>, such as <reference id="comparison-predicate" title="comparison predicates"/>, <reference id="in-predicate" title="IN predicates"/>, or the "degree 2 row value expression only" <reference id="overlaps-predicate" title="OVERLAPS predicate"/>. See the relevant sections for more details about how to use row value expressions in predicates.
    -                                	</p>
    -                                	
    -                                	<h3>Using row value expressions in UPDATE statements</h3>
    -                                	<p>
    -                                		The <reference id="update-statement" title="UPDATE statement"/> also supports a variant where row value expressions are updated, rather than single columns. See the relevant section for more details
    -                                	</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="conditional-expressions">
    -					    <title>Conditional expressions</title>
    -						<content><html>
    -							<p>
    -								Conditions or conditional expressions are widely used in SQL and in the jOOQ API. They can be used in
    -							</p>
    -							<ul>
    -								<li>The <reference id="case-expressions" title="CASE expression"/></li>
    -								<li>The <reference id="join-clause" title="JOIN clause"/> (or JOIN .. ON clause, to be precise) of a <reference id="select-statement" title="SELECT statement"/>, <reference id="update-statement" title="UPDATE statement"/>, <reference id="delete-statement" title="DELETE statement"/></li>
    -								<li>The <reference id="where-clause" title="WHERE clause"/> of a <reference id="select-statement" title="SELECT statement"/>, <reference id="update-statement" title="UPDATE statement"/>, <reference id="delete-statement" title="DELETE statement"/></li>
    -								<li>The <reference id="connect-by-clause" title="CONNECT BY clause"/> of a <reference id="select-statement" title="SELECT statement"/></li>
    -								<li>The <reference id="having-clause" title="HAVING clause"/> of a <reference id="select-statement" title="SELECT statement"/></li>
    -								<li>The <reference id="merge-statement" title="MERGE statement"/>'s ON clause</li>
    -							</ul>
    -							
    -							<h3>Boolean types in SQL</h3>
    -							<p>
    -								Before SQL:1999, boolean types did not really exist in SQL. They were modelled by 0 and 1 numeric/char values. With SQL:1999, true booleans were introduced and are now supported by most databases. In short, these are possible boolean values:
    -							</p>
    -							<ul>
    -								<li>1 or TRUE</li>
    -								<li>0 or FALSE</li>
    -								<li>NULL or UNKNOWN</li>
    -							</ul>
    -							<p>
    -								It is important to know that SQL differs from many other languages in the way it interprets the NULL boolean value. Most importantly, the following facts are to be remembered:
    -							</p>
    -							<ul>
    -								<li>[ANY] = NULL yields NULL (not FALSE)</li>
    -								<li>[ANY] != NULL yields NULL (not TRUE)</li>
    -								<li>NULL = NULL yields NULL (not TRUE)</li>
    -								<li>NULL != NULL yields NULL (not FALSE)</li>
    -							</ul>
    -							<p>
    -								For simplified NULL handling, please refer to the section about the <reference id="distinct-predicate" title="DISTINCT predicate"/>.
    -							</p>
    -							<p>
    -								Note that jOOQ does not model these values as actual <reference id="column-expressions" title="column expression"/> compatible.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -						    <section id="condition-building">
    -							    <title>Condition building</title>
    -								<content><html>
    -									<p>
    -										With jOOQ, most <reference id="conditional-expressions" title="conditional expressions"/> are built from <reference id="column-expressions" title="column expressions"/>, calling various methods on them. For instance, to build a <reference id="comparison-predicate" title="comparison predicate"/>, you can write the following expression:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[TITLE  = 'Animal Farm'
    -TITLE != 'Animal Farm']]></sql><java><![CDATA[BOOK.TITLE.equal("Animal Farm")
    -BOOK.TITLE.notEqual("Animal Farm")]]></java>
    -</code-pair><html>
    -
    -									<h3>Create conditions from the Factory</h3>
    -									<p>
    -										There are a few types of conditions, that can be created statically from the <reference id="factory" title="Factory"/>. These are:
    -									</p>
    -									<ul>
    -										<li><reference id="plain-sql" title="plain SQL conditions"/>, that allow you to phrase your own SQL string <reference id="conditional-expressions" title="conditional expression"/></li>
    -										<li>The <reference id="exists-predicate" title="EXISTS predicate"/>, a standalone predicate that creates a conditional expression</li>
    -										<li>Constant TRUE and FALSE conditional expressions</li>
    -									</ul>
    -
    -									<h3>Connect conditions using boolean operators</h3>
    -									<p>
    -										Conditions can also be connected using <reference id="boolean-operators" title="boolean operators"/> as will be discussed in a subsequent chapter.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -						    <section id="boolean-operators">
    -							    <title>AND, OR, NOT boolean operators</title>
    -								<content><html>
    -									<p>
    -										In SQL, as in most other languages, <reference id="conditional-expressions" title="conditional expressions"/> can be connected using the AND and OR binary operators, as well as the NOT unary operator, to form new conditional expressions. In jOOQ, this is modelled as such: 
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- A simple conditional expression
    -TITLE = 'Animal Farm' OR TITLE = '1984'
    -
    --- A more complex conditional expression
    -        (TITLE = 'Animal Farm' OR TITLE = '1984') 
    -AND NOT (AUTHOR.LAST_NAME = 'Orwell')]]></sql><java><![CDATA[// A simple boolean connection
    -BOOK.TITLE.equal("Animal Farm").or(BOOK.TITLE.equal("1984"))
    -
    -// A more complex conditional expression
    -BOOK.TITLE.equal("Animal Farm").or(BOOK.TITLE.equal("1984"))
    -    .andNot(AUTHOR.LAST_NAME.equal("Orwell"))]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										The above example shows that the number of parentheses in Java can quickly explode. Proper indentation may become crucial in making such code readable. In order to understand how jOOQ composes combined conditional expressions, let's assign component expressions first:
    -									</p>
    -
    -</html><java><![CDATA[Condition a = BOOK.TITLE.equal("Animal Farm");
    -Condition b = BOOK.TITLE.equal("1984");
    -Condition c = AUTHOR.LAST_NAME.equal("Orwell");
    -
    -Condition combined1 = a.or(b);             // These OR-connected conditions form a new condition, wrapped in parentheses
    -Condition combined2 = combined1.andNot(c); // The left-hand side of the AND NOT () operator is already wrapped in parentheses]]></java><html>
    -
    -									<h3>The Condition API</h3>
    -									<p>
    -										Here are all boolean operators on the <reference class="org.jooq.Condition"/> interface:
    -									</p>
    -									
    -</html><java><![CDATA[and(Condition)            // Combine conditions with AND
    -and(String)               // Combine conditions with AND. Convenience for adding plain SQL to the right-hand side
    -and(String, Object...)    // Combine conditions with AND. Convenience for adding plain SQL to the right-hand side
    -and(String, QueryPart...) // Combine conditions with AND. Convenience for adding plain SQL to the right-hand side
    -andExists(Select<?>)      // Combine conditions with AND. Convenience for adding an exists predicate to the rhs
    -andNot(Condition)         // Combine conditions with AND. Convenience for adding an inverted condition to the rhs
    -andNotExists(Select<?>)   // Combine conditions with AND. Convenience for adding an inverted exists predicate to the rhs
    -
    -or(Condition)             // Combine conditions with OR
    -or(String)                // Combine conditions with OR. Convenience for adding plain SQL to the right-hand side
    -or(String, Object...)     // Combine conditions with OR. Convenience for adding plain SQL to the right-hand side
    -or(String, QueryPart...)  // Combine conditions with OR. Convenience for adding plain SQL to the right-hand side
    -orExists(Select<?>)       // Combine conditions with OR. Convenience for adding an exists predicate to the rhs
    -orNot(Condition)          // Combine conditions with OR. Convenience for adding an inverted condition to the rhs
    -orNotExists(Select<?>)    // Combine conditions with OR. Convenience for adding an inverted exists predicate to the rhs
    -
    -not()                     // Invert a condition (synonym for Factory.not(Condition)]]></java></content>
    -							</section>
    -
    -						    <section id="comparison-predicate">
    -							    <title>Comparison predicate</title>
    -								<content><html>
    -									<p>
    -										In SQL, comparison predicates are formed using common comparison operators:
    -									</p>
    -									<ul>
    -										<li><strong>=</strong> to test for equality</li>
    -										<li><strong>&lt;&gt;</strong> or <strong>!=</strong> to test for non-equality</li>
    -										<li><strong>&gt;</strong> to test for being strictly greater</li>
    -										<li><strong>&gt;=</strong> to test for being greater or equal</li>
    -										<li><strong>&lt;</strong> to test for being strictly less</li>
    -										<li><strong>&lt;=</strong> to test for being less or equal</li>
    -									</ul>
    -									
    -									<p>
    -										Unfortunately, Java does not support operator overloading, hence these operators are also implemented as methods in jOOQ, like any other SQL syntax elements. The relevant parts of the <reference class="org.jooq.Field"/> interface are these:
    -									</p>
    -									
    -</html><java><![CDATA[eq or equal(T);                  // =  (some bind value)
    -eq or equal(Field<T>);           // =  (some column expression)
    -eq or equal(Select<T>);          // =  (some scalar SELECT statement)
    -ne or notEqual(T);               // <> (some bind value)
    -ne or notEqual(Field<T>);        // <> (some column expression)
    -ne or notEqual(Select<T>);       // <> (some scalar SELECT statement)
    -lt or lessThan(T);               // <  (some bind value)
    -lt or lessThan(Field<T>);        // <  (some column expression)
    -lt or lessThan(Select<T>);       // <  (some scalar SELECT statement)
    -le or lessOrEqual(T);            // <= (some bind value)
    -le or lessOrEqual(Field<T>);     // <= (some column expression)
    -le or lessOrEqual(Select<T>);    // <= (some scalar SELECT statement)
    -gt or greaterThan(T);            // >  (some bind value)
    -gt or greaterThan(Field<T>);     // >  (some column expression)
    -gt or greaterThan(Select<T>);    // >  (some scalar SELECT statement)
    -ge or greaterOrEqual(T);         // >= (some bind value)
    -ge or greaterOrEqual(Field<T>);  // >= (some column expression)
    -ge or greaterOrEqual(Select<T>); // >= (some scalar SELECT statement)]]></java><html>
    -
    -									<p>
    -										Note that every operator is represented by two methods. A verbose one (such as equal()) and a two-character one (such as eq()). Both methods are the same. You may choose either one, depending on your taste. The manual will always use the more verbose one.
    -									</p>
    -									
    -									<h3>NULL in jOOQ's comparison predicates</h3>
    -									<p>
    -										jOOQ has a special way of dealing with null bind values, when you pass them to comparison predicates equal() and notEqual(). For convenience, jOOQ will render <reference id="null-predicate" title="IS NULL or IS NOT NULL"/> predicates.
    -									</p>
    -
    -									<h3>jOOQ's convenience methods using comparison operators</h3>
    -									<p>
    -										In addition to the above, jOOQ provides a few convenience methods for common operations performed on strings using comparison predicates:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[-- case insensitivity
    -LOWER(TITLE)  = LOWER('animal farm')
    -LOWER(TITLE) <> LOWER('animal farm')]]></sql><java><![CDATA[// case insensitivity
    -BOOK.TITLE.equalIgnoreCase("animal farm")
    -BOOK.TITLE.notEqualIgnoreCase("animal farm")]]></java>
    -</code-pair><html>
    -								</html></content>
    -							</section>
    -
    -						    <section id="quantified-comparison-predicate">
    -							    <title>Quantified comparison predicate</title>
    -								<content><html>
    -									<p>
    -										If the right-hand side of a <reference id="comparison-predicate" title="comparison predicate"/> turns out to be a non-scalar table subquery, you can wrap that subquery in a quantifier, such as ALL, ANY, or SOME. Note that the SQL standard defines ANY and SOME to be equivalent. jOOQ settled for the more intuitive ANY and doesn't support SOME. Here are some examples, supported by jOOQ:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[TITLE = ANY('Animal Farm', '1982')
    -PUBLISHED_IN > ALL(1920, 1940)]]></sql><java><![CDATA[BOOK.TITLE.equalAny("Animal Farm", "1982");
    -BOOK.PUBLISHED_IN.greaterThanAll(1920, 1940);]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										For the example, the right-hand side of the quantified comparison predicates were filled with argument lists. But it is easy to imagine that the source of values results from a <reference id="nested-selects" title="subselect"/>.
    -									</p>
    -
    -									<h3>ANY and the IN predicate</h3>
    -									<p>
    -										It is interesting to note that the SQL standard defines the <reference id="in-predicate" title="IN predicate"/> in terms of the ANY-quantified predicate. The following two expressions are equivalent:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[[ROW VALUE EXPRESSION] IN [IN PREDICATE VALUE]]]></sql><sql><![CDATA[[ROW VALUE EXPRESSION] = ANY [IN PREDICATE VALUE]]]></sql>
    -</code-pair><html>
    -
    -									<p>
    -										Typically, the <reference id="in-predicate" title="IN predicate"/> is more readable than the quantified comparison predicate.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -						    <section id="null-predicate">
    -							    <title>NULL predicate</title>
    -								<content><html>
    -									<p>
    -										In SQL, you cannot compare NULL with any value using <reference id="comparison-predicate" title="comparison predicates"/>, as the result would yield NULL again, which is neither TRUE nor FALSE (see also the manual's section about <reference id="conditional-expressions" title="conditional expressions"/>). In order to test a <reference id="column-expressions" title="column expression"/> for NULL, use the NULL predicate as such:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[TITLE IS NULL
    -TITLE IS NOT NULL]]></sql><java><![CDATA[BOOK.TITLE.isNull()
    -BOOK.TITLE.isNotNull()]]></java>
    -</code-pair><html>
    -
    -								</html></content>
    -							</section>
    -
    -						    <section id="distinct-predicate">
    -							    <title>DISTINCT predicate</title>
    -								<content><html>
    -									<p>
    -										Some databases support the DISTINCT predicate, which serves as a convenient, NULL-safe <reference id="comparison-predicate" title="comparison predicate"/>. With the DISTINCT predicate, the following truth table can be assumed:
    -									</p>
    -									<ul>
    -										<li>[ANY] IS DISTINCT FROM NULL yields TRUE</li>
    -										<li>[ANY] IS NOT DISTINCT FROM NULL yields FALSE</li>
    -										<li>NULL IS DISTINCT FROM NULL yields FALSE</li>
    -										<li>NULL IS NOT DISTINCT FROM NULL yields TRUE</li>
    -									</ul>
    -									<p>
    -										For instance, you can compare two fields for distinctness, ignoring the fact that any of the two could be NULL, which would lead to funny results. This is supported by jOOQ as such:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[TITLE IS DISTINCT FROM SUB_TITLE
    -TITLE IS NOT DISTINCT FROM SUB_TITLE]]></sql><java><![CDATA[BOOK.TITLE.isDistinctFrom(BOOK.SUB_TITLE)
    -BOOK.TITLE.isNotDistinctFrom(BOOK.SUB_TITLE)]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										If your database does not natively support the DISTINCT predicate, jOOQ simulates it with an equivalent <reference id="case-expressions" title="CASE expression"/>, modelling the above truth table:
    -									</p>
    -	
    -</html><code-pair>								
    -<sql><![CDATA[-- [A] IS DISTINCT FROM [B] 
    -CASE WHEN [A] IS     NULL AND [B] IS     NULL THEN FALSE
    -     WHEN [A] IS     NULL AND [B] IS NOT NULL THEN TRUE
    -     WHEN [A] IS NOT NULL AND [B] IS     NULL THEN TRUE
    -     WHEN [A] =               [B]             THEN FALSE
    -     ELSE                                          TRUE
    -END
    -]]></sql><sql><![CDATA[-- [A] IS NOT DISTINCT FROM [B] 
    -CASE WHEN [A] IS     NULL AND [B] IS     NULL THEN TRUE
    -     WHEN [A] IS     NULL AND [B] IS NOT NULL THEN FALSE
    -     WHEN [A] IS NOT NULL AND [B] IS     NULL THEN FALSE
    -     WHEN [A] =               [B]             THEN TRUE
    -     ELSE                                          FALSE
    -END
    -]]></sql>
    -</code-pair><html>							
    -								</html></content>
    -							</section>
    -
    -						    <section id="between-predicate">
    -							    <title>BETWEEN predicate</title>
    -								<content><html>
    -									<p>
    -										The BETWEEN predicate can be seen as syntactic sugar for a pair of <reference id="comparison-predicate" title="comparison predicates"/>. According to the SQL standard, the following two predicates are equivalent:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[[A] BETWEEN [B] AND [C]]]></sql><sql><![CDATA[[A] >= [B] AND [A] <= [C]]]></sql>
    -</code-pair><html>
    -
    -									<p>
    -										Note the inclusiveness of range boundaries in the definition of the BETWEEN predicate. Intuitively, this is supported in jOOQ as such:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[PUBLISHED_IN     BETWEEN 1920 AND 1940
    -PUBLISHED_IN NOT BETWEEN 1920 AND 1940]]></sql><java><![CDATA[BOOK.PUBLISHED_IN.between(1920).and(1940)
    -BOOK.PUBLISHED_IN.notBetween(1920).and(1940)]]></java>
    -</code-pair><html>
    -
    -									<h3>BETWEEN SYMMETRIC</h3>
    -									<p>
    -										The SQL standard defines the SYMMETRIC keyword to be used along with BETWEEN to indicate that you do not care which bound of the range is larger than the other. A database system should simply swap range bounds, in case the first bound is greater than the second one. jOOQ supports this keyword as well, simulating it if necessary.
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[PUBLISHED_IN     BETWEEN SYMMETRIC 1940 AND 1920
    -PUBLISHED_IN NOT BETWEEN SYMMETRIC 1940 AND 1920]]></sql><java><![CDATA[BOOK.PUBLISHED_IN.betweenSymmetric(1940).and(1920)
    -BOOK.PUBLISHED_IN.notBetweenSymmetric(1940).and(1920)]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										The simulation is done trivially:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[[A] BETWEEN SYMMETRIC [B] AND [C]]]></sql><sql><![CDATA[([A] BETWEEN [B] AND [C]) OR ([A] BETWEEN [C] AND [B])]]></sql>
    -</code-pair><html>
    -
    -								</html></content>
    -							</section>
    -
    -						    <section id="like-predicate">
    -							    <title>LIKE predicate</title>
    -								<content><html>
    -									<p>
    -										LIKE predicates are popular for simple wildcard-enabled pattern matching. Supported wildcards in all SQL databases are:
    -									</p>
    -									<ul>
    -										<li><strong>_</strong>: (single-character wildcard)</li>
    -										<li><strong>%</strong>: (multi-character wildcard)</li>
    -									</ul>
    -									<p>
    -										With jOOQ, the LIKE predicate can be created from any <reference id="column-expressions" title="column expression"/> as such:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[TITLE     LIKE '%abc%'
    -TITLE NOT LIKE '%abc%']]></sql><java><![CDATA[BOOK.TITLE.like("%abc%")
    -BOOK.TITLE.notLike("%abc%")]]></java>
    -</code-pair><html>
    -									
    -									<h3>Escaping operands with the LIKE predicate</h3>
    -									<p>
    -										Often, your pattern may contain any of the wildcard characters "_" and "%", in case of which you may want to escape them. jOOQ does not automatically escape patterns in like() and notLike() methods. Instead, you can explicitly define an escape character as such:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[TITLE     LIKE '%The !%-Sign Book%' ESCAPE '!'
    -TITLE NOT LIKE '%The !%-Sign Book%' ESCAPE '!']]></sql><java><![CDATA[BOOK.TITLE.like("%The !%-Sign Book%", '!')
    -BOOK.TITLE.notLike("%The !%-Sign Book%", '!')]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										In the above predicate expressions, the exclamation mark character is passed as the escape character to escape wildcard characters "!_" and "!%", as well as to escape the escape character itself: "!!"
    -									</p>
    -									<p>
    -										Please refer to your database manual for more details about escaping patterns with the LIKE predicate.
    -									</p>
    -									
    -									<h3>jOOQ's convenience methods using the LIKE predicate</h3>
    -									<p>
    -										In addition to the above, jOOQ provides a few convenience methods for common operations performed on strings using the LIKE predicate. Typical operations are "contains predicates", "starts with predicates", "ends with predicates", etc. Here is the full convenience API wrapping LIKE predicates:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[-- case insensitivity
    -LOWER(TITLE) LIKE LOWER('%abc%')
    -LOWER(TITLE) NOT LIKE LOWER('%abc%')
    -
    --- contains and similar methods
    -TITLE LIKE '%' || 'abc' || '%'
    -TITLE LIKE 'abc' || '%'
    -TITLE LIKE '%' || 'abc']]></sql><java><![CDATA[// case insensitivity
    -BOOK.TITLE.likeIgnoreCase("%abc%")
    -BOOK.TITLE.notLikeIgnoreCase("%abc%")
    -
    -// contains and similar methods
    -BOOK.TITLE.contains("abc")
    -BOOK.TITLE.startsWith("abc")
    -BOOK.TITLE.endsWith("abc")]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										Note, that jOOQ escapes % and _ characters in value in some of the above predicate implementations. For simplicity, this has been omitted in this manual.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -						    <section id="in-predicate">
    -							    <title>IN predicate</title>
    -								<content><html>
    -									<p>
    -										In SQL, apart from comparing a value against several values, the IN predicate can be used to create semi-joins or anti-joins. jOOQ knows the following methods on the <reference class="org.jooq.Field" /> interface, to construct such IN predicates:
    -									</p>
    -
    -</html><java><![CDATA[in(Collection<T>)    // Construct an IN predicate from a collection of bind values
    -in(T...)             // Construct an IN predicate from bind values
    -in(Field<?>...)      // Construct an IN predicate from column expressions
    -in(Select<?>)        // Construct an IN predicate from a subselect
    -notIn(Collection<T>) // Construct a NOT IN predicate from a collection of bind values
    -notIn(T...)          // Construct a NOT IN predicate from bind values
    -notIn(Field<?>...)   // Construct a NOT IN predicate from column expressions
    -notIn(Select<?>)     // Construct a NOT IN predicate from a subselect]]></java><html>
    -
    -									<p>
    -										A sample IN predicate might look like this:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[TITLE     IN ('Animal Farm', '1984')
    -TITLE NOT IN ('Animal Farm', '1984')]]></sql><java><![CDATA[BOOK.TITLE.in("Animal Farm", "1984")
    -BOOK.TITLE.notIn("Animal Farm", "1984")]]></java>
    -</code-pair><html>
    -
    -									
    -									<h3>NOT IN and NULL values</h3>
    -									<p>
    -										Beware that you should probably not have any NULL values in the right hand side of a NOT IN predicate, as the whole expression would evaluate to NULL, which is rarely desired. This can be shown informally using the following reasoning:
    -									</p>
    -									
    -</html><sql>-- The following conditional expressions are formally or informally equivalent
    -A NOT IN (B, C)
    -A != ANY(B, C)
    -A != B AND A != C
    -
    --- Substitute C for NULL, you'll get
    -A NOT IN (B, NULL)   -- Substitute C for NULL
    -A != B AND A != NULL -- From the above rules
    -A != B AND NULL      -- [ANY] != NULL yields NULL
    -NULL                 -- [ANY] AND NULL yields NULL</sql><html>
    -
    -									<p>
    -										A good way to prevent this from happening is to use the <reference id="exists-predicate" title="EXISTS predicate"/> for anti-joins, which is NULL-value insensitive. See the manual's section about <reference id="conditional-expressions" title="conditional expressions"/> to see a boolean truth table.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -						    <section id="exists-predicate">
    -							    <title>EXISTS predicate</title>
    -								<content><html>
    -									<p>
    -										Slightly less intuitive, yet more powerful than the previously discussed <reference id="in-predicate" title="IN predicate"/> is the EXISTS predicate, that can be used to form semi-joins or anti-joins. With jOOQ, the EXISTS predicate can be formed in various ways:
    -									</p>
    -									<ul>
    -										<li>From the <reference id="factory" title="Factory"/>, using static methods. This is probably the most used case</li>
    -										<li>From a <reference id="conditional-expressions" title="conditional expression"/> using <reference id="boolean-operators" title="convenience methods attached to boolean operators"/></li>
    -										<li>From a <reference id="select-statement" title="SELECT statement"/> using <reference id="where-clause" title="convenience methods attached to the where clause"/>, and from other clauses</li>
    -									</ul>
    -									
    -									<p>
    -										An example of an EXISTS predicate can be seen here:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[    EXISTS (SELECT 1 FROM BOOK 
    -            WHERE AUTHOR_ID = 3)
    -NOT EXISTS (SELECT 1 FROM BOOK 
    -            WHERE AUTHOR_ID = 3)]]></sql><java><![CDATA[   exists(create.selectOne().from(BOOK)
    -                .where(BOOK.AUTHOR_ID.equal(3)));
    -notExists(create.selectOne().from(BOOK)
    -                .where(BOOK.AUTHOR_ID.equal(3)));]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										Note that in SQL, the projection of a subselect in an EXISTS predicate is irrelevant. To help you write queries like the above, you can use jOOQ's selectZero() or selectOne() <reference id="factory" title="Factory"/> methods
    -									</p>
    -									
    -									<h3>Performance of IN vs. EXISTS</h3>
    -									<p>
    -										In theory, the two types of predicates can perform equally well. If your database system ships with a sophisticated cost-based optimiser, it will be able to transform one predicate into the other, if you have all necessary constraints set (e.g. referential constraints, not null constraints). However, in reality, performance between the two might differ substantially. An interesting blog post investigating this topic on the MySQL database can be seen here:<br/>
    -										<a href="http://blog.jooq.org/2012/07/27/not-in-vs-not-exists-vs-left-join-is-null-mysql/">http://blog.jooq.org/2012/07/27/not-in-vs-not-exists-vs-left-join-is-null-mysql/</a>
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -							<section id="overlaps-predicate">
    -								<title>OVERLAPS predicate</title>
    -								<content><html>
    -									<p>
    -										When comparing dates, the SQL standard allows for using a special OVERLAPS predicate, which checks whether two date ranges overlap each other. The following can be said:
    -									</p>
    -
    -</html><sql><![CDATA[-- This yields true
    -(DATE '2010-01-01', DATE '2010-01-03') OVERLAPS (DATE '2010-01-02' DATE '2010-01-04')
    -
    --- INTERVAL data types are also supported. This is equivalent to the above
    -(DATE '2010-01-01', CAST('+2 00:00:00' AS INTERVAL DAY TO SECOND)) OVERLAPS 
    -(DATE '2010-01-02', CAST('+2 00:00:00' AS INTERVAL DAY TO SECOND))]]></sql><html>
    -
    -									<h3>The OVERLAPS predicate in jOOQ</h3>
    -									<p>
    -									    jOOQ supports the OVERLAPS predicate on <reference id="row-value-expressions" title="row value expressions of degree 2"/>. The following methods are contained in <reference class="org.jooq.Row2"/>:
    -									</p>
    -
    -</html><java><![CDATA[Condition overlaps(T1 t1, T2 t2);
    -Condition overlaps(Field<T1> t1, Field<T2> t2);
    -Condition overlaps(Row2<T1, T2> row);]]></java><html>
    -
    -									<p>
    -										This allows for expressing the above predicates as such:
    -									</p>																		
    -
    -</html><java><![CDATA[// The date range tuples version
    -row(Date.valueOf('2010-01-01'), Date.valueOf('2010-01-03')).overlaps(Date.valueOf('2010-01-02'), Date.valueOf('2010-01-04'))
    -
    -// The INTERVAL tuples version
    -row(Date.valueOf('2010-01-01'), new DayToSecond(2)).overlaps(Date.valueOf('2010-01-02'), new DayToSecond(2))]]></java><html>
    -
    -									<h3>jOOQ's extensions to the standard</h3>
    -									<p>
    -										Unlike the standard (or any database implementing the standard), jOOQ also supports the OVERLAPS predicate for comparing arbitrary <reference id="row-value-expressions" title="row vlaue expressions of degree 2"/>. For instance, (1, 3) OVERLAPS (2, 4) will yield true in jOOQ. This is simulated as such
    -									</p>
    -									
    -</html><sql><![CDATA[-- This predicate
    -(A, B) OVERLAPS (C, D)
    -
    --- can be simulated as such
    -(C <= B) AND (A <= D)]]></sql></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="plain-sql">
    -						<title>Plain SQL</title>
    -						<content><html>
    -							<p>
    -								A DSL is a nice thing to have, it feels "fluent" and "natural", especially if it models a well-known language, such as SQL. But a DSL is always expressed in a host language (Java in this case), which was not made for exactly the same purposes as its hosted DSL. If it were, then jOOQ would be implemented on a compiler-level, similar to LINQ in .NET. But it's not, and so, the DSL is limited by language constraints of its host language. We have seen many functionalities where the DSL becomes a bit verbose. This can be especially true for:
    -							</p>
    -							<ul>
    -								<li><reference id="aliased-columns" title="aliasing"/></li>
    -								<li><reference id="nested-selects" title="nested selects"/></li>
    -								<li><reference id="arithmetic-expressions" title="arithmetic expressions"/></li>
    -								<li><reference id="cast-expressions" title="casting"/></li>
    -							</ul>
    -							
    -							<p>
    -								You'll probably find other examples. If verbosity scares you off, don't worry. The verbose use-cases for jOOQ are rather rare, and when they come up, you do have an option. Just write SQL the way you're used to!
    -							</p>
    -							<p>
    -								jOOQ allows you to embed SQL as a String into any supported <reference id="sql-statements" title="statement"/> in these contexts:
    -							</p>
    -							<ul>
    -								<li>Plain SQL as a <reference id="conditional-expressions" title="conditional expression"/></li>
    -								<li>Plain SQL as a <reference id="column-expressions" title="column expression"/></li>
    -								<li>Plain SQL as a <reference id="column-expressions" title="function"/></li>
    -								<li>Plain SQL as a <reference id="table-expressions" title="table expression"/></li>
    -								<li>Plain SQL as a <reference id="query-vs-resultquery" title="query"/></li>
    -							</ul>
    -
    -							<h3>The Factory plain SQL API</h3>
    -							<p>
    -								Plain SQL API methods are usually overloaded in three ways. Let's look at the <code>condition</code> query part constructor:
    -							</p>
    -</html><java><![CDATA[// Construct a condition without bind values
    -// Example: condition("a = b")
    -Condition condition(String sql);
    -
    -// Construct a condition with bind values
    -// Example: condition("a = ?", 1);
    -Condition condition(String sql, Object... bindings);
    -
    -// Construct a condition taking other jOOQ object arguments
    -// Example: condition("a = {0}", val(1));
    -Condition condition(String sql, QueryPart... parts);]]></java><html>
    -							
    -							<p>
    -								Please refer to the <reference class="org.jooq.impl.Factory"/> Javadoc for more details. The following is a more complete listing of plain SQL construction methods from the Factory:
    -							</p>
    -
    -</html><java><![CDATA[// A condition
    -Condition condition(String sql);
    -Condition condition(String sql, Object... bindings);
    -Condition condition(String sql, QueryPart... parts);
    -
    -// A field with an unknown data type
    -Field<Object> field(String sql);
    -Field<Object> field(String sql, Object... bindings);
    -Field<Object> field(String sql, QueryPart... parts);
    -
    -// A field with a known data type
    -<T> Field<T> field(String sql, Class<T> type);
    -<T> Field<T> field(String sql, Class<T> type, Object... bindings);
    -<T> Field<T> field(String sql, Class<T> type, QueryPart... parts);
    -<T> Field<T> field(String sql, DataType<T> type);
    -<T> Field<T> field(String sql, DataType<T> type, Object... bindings);
    -<T> Field<T> field(String sql, DataType<T> type, QueryPart... parts);
    -
    -// A field with a known name (properly escaped)
    -Field<Object> fieldByName(String... fieldName);
    -<T> Field<T>  fieldByName(Class<T> type, String... fieldName);
    -<T> Field<T>  fieldByName(DataType<T> type, String... fieldName)
    -
    -// A function
    -<T> Field<T> function(String name, Class<T> type, Field<?>... arguments);
    -<T> Field<T> function(String name, DataType<T> type, Field<?>... arguments);
    -
    -// A table
    -Table<?> table(String sql);
    -Table<?> table(String sql, Object... bindings);
    -Table<?> table(String sql, QueryPart... parts);
    -
    -// A table with a known name (properly escaped)
    -Table<Record> tableByName(String... fieldName);
    -
    -// A query without results (update, insert, etc)
    -Query query(String sql);
    -Query query(String sql, Object... bindings);
    -Query query(String sql, QueryPart... parts);
    -
    -// A query with results
    -ResultQuery<Record> resultQuery(String sql);
    -ResultQuery<Record> resultQuery(String sql, Object... bindings);
    -ResultQuery<Record> resultQuery(String sql, QueryPart... parts);
    -
    -// A query with results. This is the same as resultQuery(...).fetch();
    -Result<Record> fetch(String sql);
    -Result<Record> fetch(String sql, Object... bindings);
    -Result<Record> fetch(String sql, QueryPart... parts);]]></java><html>
    -
    -							<p>
    -								Apart from the general factory methods, plain SQL is also available in various other contexts. For instance, when adding a .where("a = b") clause to a query. Hence, there exist several convenience methods where plain SQL can be inserted usefully. This is an example displaying all various use-cases in one single query:
    -							</p>
    -							
    -</html><java><![CDATA[// You can use your table aliases in plain SQL fields
    -// As long as that will produce syntactically correct SQL
    -Field<?> LAST_NAME    = create.field("a.LAST_NAME");
    -
    -// You can alias your plain SQL fields
    -Field<?> COUNT1       = create.field("count(*) x");
    -
    -// If you know a reasonable Java type for your field, you
    -// can also provide jOOQ with that type
    -Field<Integer> COUNT2 = create.field("count(*) y", Integer.class);
    -
    -       // Use plain SQL as select fields
    -create.select(LAST_NAME, COUNT1, COUNT2)
    -
    -       // Use plain SQL as aliased tables (be aware of syntax!)
    -      .from("author a")
    -      .join("book b")
    -
    -       // Use plain SQL for conditions both in JOIN and WHERE clauses
    -      .on("a.id = b.author_id")
    -
    -       // Bind a variable in plain SQL
    -      .where("b.title != ?", "Brida")
    -
    -       // Use plain SQL again as fields in GROUP BY and ORDER BY clauses
    -      .groupBy(LAST_NAME)
    -      .orderBy(LAST_NAME);]]></java><html>
    -
    -							<h3>Important things to note about plain SQL!</h3>
    -							<p>
    -								There are some important things to keep in mind when using plain SQL:
    -							</p>
    -							<ul>
    -								<li>jOOQ doesn't know what you're doing. You're on your own again!</li>
    -								<li>You have to provide something that will be syntactically correct. If it's not, then jOOQ won't know. Only your JDBC driver or your RDBMS will detect the syntax error.</li>
    -								<li>You have to provide consistency when you use variable binding. The number of ? must match the number of variables</li>
    -								<li>Your SQL is inserted into jOOQ queries without further checks. Hence, jOOQ can't prevent SQL injection. </li>
    -							</ul>
    -						</html></content>
    -					</section>
    -
    -					<section id="bind-values">
    -					    <title>Bind values and parameters</title>
    -						<content><html>
    -							<p>
    -								Bind values are used in SQL / JDBC for various reasons. Among the most obvious ones are:
    -							</p>
    -							<ul>
    -								<li>
    -									Protection against SQL injection. Instead of inlining values possibly originating from user input, you bind those values to your prepared statement and let the JDBC driver / database take care of handling security aspects.
    -								</li>
    -								<li>
    -									Increased speed. Advanced databases such as Oracle can keep execution plans of similar queries in a dedicated cache to prevent hard-parsing your query again and again. In many cases, the actual value of a bind variable does not influence the execution plan, hence it can be reused. Preparing a statement will thus be faster
    -								</li>
    -								<li>
    -									On a JDBC level, you can also reuse the SQL string and prepared statement object instead of constructing it again, as you can bind new values to the prepared statement. jOOQ currently does not cache prepared statements, internally.
    -								</li>
    -							</ul>
    -							
    -							<p>
    -								The following sections explain how you can introduce bind values in jOOQ, and how you can control the way they are rendered and bound to SQL.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -						    <section id="indexed-parameters">
    -							    <title>Indexed parameters</title>
    -								<content><html>
    -									<p>
    -										JDBC only knows indexed bind values. A typical example for using bind values with JDBC is this:
    -									</p>
    -									
    -</html><java><![CDATA[PreparedStatement stmt = connection.prepareStatement("SELECT * FROM BOOK WHERE ID = ? AND TITLE = ?");
    -
    -// bind values to the above statement for appropriate indexes 
    -stmt.setInt(1, 5);
    -stmt.setString(2, "Animal Farm");
    -stmm.executeQuery();]]></java><html>
    -
    -									<p>
    -										With dynamic SQL, keeping track of the number of question marks and their corresponding index may turn out to be hard. jOOQ abstracts this and lets you provide the bind value right where it is needed. A trivial example is this:
    -									</p>
    -									
    -</html><java><![CDATA[create.select().from(BOOK).where(BOOK.ID.equal(5)).and(BOOK.TITLE.equal("Animal Farm"));
    -
    -// This notation is in fact a short form for the equivalent:
    -create.select().from(BOOK).where(BOOK.ID.equal(val(5))).and(BOOK.TITLE.equal(val("Animal Farm")));]]></java><html>
    -
    -									<p>
    -										Note the using of <reference class="org.jooq.impl.Factory" anchor="#val(java.lang.Object)" title="Factory.val()"/> to explicitly create an indexed bind value. You don't have to worry about that index. When the query is <reference id="sql-rendering" title="rendered"/>, each bind value will render a question mark. When the query <reference id="variable-binding" title="binds its variables"/>, each bind value will generate the appropriate bind value index. 
    -									</p>
    -									
    -									<h3>Extract bind values from a query</h3>
    -									<p>
    -										Should you decide to run the above query outside of jOOQ, using your own <reference class="java.sql.PreparedStatement"/>, you can do so as follows:
    -									</p>
    -									
    -</html><java><![CDATA[Select<?> select = create.select().from(BOOK).where(BOOK.ID.equal(5)).and(BOOK.TITLE.equal("Animal Farm"));
    -
    -// Render the SQL statement:
    -String sql = select.getSQL();
    -assertEquals("SELECT * FROM BOOK WHERE ID = ? AND TITLE = ?", sql);
    -
    -// Get the bind values:
    -List<Object> values = select.getBindValues();
    -assertEquals(2, values.size());
    -assertEquals(5, values.get(0));
    -assertEquals("Animal Farm", values.get(1));]]></java><html>
    -
    -									<p>
    -										You can also extract specific bind values by index from a query, if you wish to modify their underlying value after creating a query. This can be achieved as such:
    -									</p>
    -
    -</html><java><![CDATA[Select<?> select = create.select().from(BOOK).where(BOOK.ID.equal(5)).and(BOOK.TITLE.equal("Animal Farm"));
    -Param<?> param = select.getParam("2");
    -
    -// You could now modify the Query's underlying bind value:
    -if ("Animal Farm".equals(param.getValue())) {
    -    param.setConverted("1984");
    -}]]></java><html>
    -
    -									<p>
    -										For more details about jOOQ's internals, see the manual's section about <reference id="queryparts" title="QueryParts"/>.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -						    <section id="named-parameters">
    -							    <title>Named parameters</title>
    -								<content><html>
    -									<p>
    -										Some SQL access abstractions that are built on top of JDBC, or some that bypass JDBC may support named parameters. jOOQ allows you to give names to your parameters as well, although those names are not rendered to SQL strings by default. Here is an example of how to create named parameters using the <reference class="org.jooq.Param"/> type:
    -									</p>
    -
    -</html><java><![CDATA[// Create a query with a named parameter. You can then use that name for accessing the parameter again
    -Query query1 = create.select().from(AUTHOR).where(LAST_NAME.equal(param("lastName", "Poe")));
    -Param<?> param1 = query.getParam("lastName");
    -
    -// Or, keep a reference to the typed parameter in order not to lose the <T> type information:
    -Param<String> param2 = param("lastName", "Poe");
    -Query query2 = create.select().from(AUTHOR).where(LAST_NAME.equal(param2));
    -
    -// You can now change the bind value directly on the Param reference:
    -param2.setValue("Orwell");]]></java><html>
    -
    -									<p>
    -										The <reference class="org.jooq.Query"/> interface also allows for setting new bind values directly, without accessing the Param type:
    -									</p>
    -
    -</html><java><![CDATA[Query query1 = create.select().from(AUTHOR).where(LAST_NAME.equal("Poe"));
    -query1.bind(1, "Orwell");
    -
    -// Or, with named parameters
    -Query query2 = create.select().from(AUTHOR).where(LAST_NAME.equal(param("lastName", "Poe")));
    -query2.bind("lastName", "Orwell");]]></java><html>
    -
    -									<p>
    -										In order to actually render named parameter names in generated SQL, use the <reference class="org.jooq.impl.Factory" anchor="#renderNamedParams(org.jooq.QueryPart)" title="Factory.renderNamedParams()"/> method:
    -									</p>
    -
    -</html><code-pair>
    -<java><![CDATA[create.renderNamedParams(
    -    create.select()
    -          .from(AUTHOR)
    -          .where(LAST_NAME.equal(
    -                 param("lastName", "Poe"))));]]></java><sql><![CDATA[-- The named bind variable can be rendered
    -
    -SELECT *
    -FROM AUTHOR
    -WHERE LAST_NAME = :lastName]]></sql>
    -</code-pair><html>
    -								</html></content>
    -							</section>
    -
    -						    <section id="inlined-parameters">
    -							    <title>Inlined parameters</title>
    -								<content><html>
    -									<p>
    -										Sometimes, you may wish to avoid rendering bind variables while still using custom values in SQL. jOOQ refers to that as "inlined" bind values. When bind values are inlined, they render the actual value in SQL rather than a JDBC question mark. Bind value inlining can be achieved in two ways:
    -									</p>
    -									<ul>
    -										<li>
    -											By using the <reference id="custom-settings" title="Settings"/> and setting the <reference class="org.jooq.conf.StatementType"/> to STATIC_STATEMENT. This will inline all bind values for SQL statements rendered from such a Factory.
    -										</li>
    -										<li>
    -											By using <reference class="org.jooq.impl.Factory" anchor="#inline(java.lang.Object)" title="Factory.inline()"/> methods.
    -										</li>
    -									</ul>
    -									<p>
    -										In both cases, your inlined bind values will be properly escaped to avoid SQL syntax errors and SQL injection. Some examples:
    -									</p>
    -
    -</html><java><![CDATA[
    -// Use dedicated calls to inline() in order to specify
    -// single bind values to be rendered as inline values
    -// --------------------------------------------------
    -create.select()
    -      .from(AUTHOR)
    -      .where(LAST_NAME.equal(inline("Poe")));
    -
    -// Or render the whole query with inlined values
    -// --------------------------------------------------
    -Settings settings = new Settings()
    -    .withStatementType(StatementType.STATIC_STATEMENT);
    -
    -// Add the settings to the factory
    -Factory create = new Factory(connection, SQLDialect.ORACLE, settings);
    -
    -// Run queries that omit rendering schema names
    -create.select()
    -      .from(AUTHOR)
    -      .where(LAST_NAME.equal("Poe"));]]></java></content>
    -							</section>
    -
    -						    <section id="sql-injection-and-plain-sql-queryparts">
    -							    <title>SQL injection and plain SQL QueryParts</title>
    -								<content><html>
    -									<p>
    -										Special care needs to be taken when using <reference id="plain-sql" title="plain SQL QueryParts"/>. While jOOQ's API allows you to specify bind values for use with plain SQL, you're not forced to do that. For instance, both of the following queries will lead to the same, valid result:
    -									</p>
    -									
    -</html><java><![CDATA[// This query will use bind values, internally.
    -create.fetch("SELECT * FROM BOOK WHERE ID = ? AND TITLE = ?", 5 "Animal Farm");
    -
    -// This query will not use bind values, internally.
    -create.fetch("SELECT * FROM BOOK WHERE ID = 5 AND TITLE = 'Animal Farm'");]]></java><html>
    -
    -									<p>
    -										All methods in the jOOQ API that allow for plain (unescaped, untreated) SQL contain a warning message in their relevant Javadoc, to remind you of the risk of SQL injection in what is otherwise a SQL-injection-safe API.
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="queryparts">
    -					    <title>QueryParts</title>
    -						<content><html>
    -							<p>
    -								A <reference class="org.jooq.Query" /> and all its contained objects is a <reference class="org.jooq.QueryPart" />. QueryParts essentially provide this functionality:
    -							</p>
    -							<ul>
    -								<li>they can <reference id="sql-rendering" title="render SQL"/> using the <reference class="org.jooq.QueryPartInternal" anchor="#toSQL(org.jooq.RenderContext)" title="toSQL(RenderContext)"/> method</li>
    -								<li>they can <reference id="variable-binding" title="bind variables"/> using the <reference class="org.jooq.QueryPartInternal" anchor="#bind(org.jooq.BindContext)" title="bind(BindContext)"/> method</li>
    -							</ul>
    -
    -							<p>
    -								Both of these methods are contained in jOOQ's internal API's <reference class="org.jooq.QueryPartInternal"/>, which is internally implemented by every QueryPart.
    -							</p>
    -
    -							<p>
    -								The following sections explain some more details about <reference id="sql-rendering" title="SQL rendering"/> and <reference id="variable-binding" title="variable binding"/>, as well as other implementation details about QueryParts in general.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -						    <section id="sql-rendering">
    -							    <title>SQL rendering</title>
    -								<content><html>
    -									<p>
    -										Every <reference class="org.jooq.QueryPart"/> must implement the <reference class="org.jooq.QueryPartInternal" anchor="#toSQL(org.jooq.RenderContext)" title="toSQL(RenderContext)"/> method to render its SQL string to a <reference class="org.jooq.RenderContext"/>. This RenderContext has two purposes:
    -									</p>
    -									<ul>
    -										<li>It provides some information about the "state" of SQL rendering.</li>
    -										<li>It provides a common API for constructing SQL strings on the context's internal <reference class="java.lang.StringBuilder"/></li>
    -									</ul>
    -									<p>
    -										An overview of the <reference class="org.jooq.RenderContext"/> API is given here:
    -									</p>
    -
    -</html><java><![CDATA[// These methods are useful for generating unique aliases within a RenderContext (and thus within a Query)
    -String peekAlias();
    -String nextAlias();
    -
    -// These methods return rendered SQL
    -String render();
    -String render(QueryPart part);
    -
    -// These methods allow for fluent appending of SQL to the RenderContext's internal StringBuilder
    -RenderContext keyword(String keyword);
    -RenderContext literal(String literal);
    -RenderContext sql(String sql);
    -RenderContext sql(char sql);
    -RenderContext sql(int sql);
    -RenderContext sql(QueryPart part);
    -
    -// These methods allow for controlling formatting of SQL, if the relevant Setting is active
    -RenderContext formatNewLine();
    -RenderContext formatSeparator();
    -RenderContext formatIndentStart();
    -RenderContext formatIndentStart(int indent);
    -RenderContext formatIndentLockStart();
    -RenderContext formatIndentEnd();
    -RenderContext formatIndentEnd(int indent);
    -RenderContext formatIndentLockEnd();
    -
    -// These methods control the RenderContext's internal state
    -boolean       inline();
    -RenderContext inline(boolean inline);
    -boolean       qualify();
    -RenderContext qualify(boolean qualify);
    -boolean       namedParams();
    -RenderContext namedParams(boolean renderNamedParams);
    -CastMode      castMode();
    -RenderContext castMode(CastMode mode);
    -Boolean       cast();
    -RenderContext castModeSome(SQLDialect... dialects);]]></java><html>
    -
    -									<p>
    -										The following additional methods are inherited from a common <reference class="org.jooq.Context"/>, which is shared among <reference class="org.jooq.RenderContext"/> and <reference class="org.jooq.BindContext"/>:
    -									</p>
    -
    -</html><java><![CDATA[// These methods indicate whether fields or tables are being declared (MY_TABLE AS MY_ALIAS) or referenced (MY_ALIAS)
    -boolean declareFields();
    -Context declareFields(boolean declareFields);
    -boolean declareTables();
    -Context declareTables(boolean declareTables);
    -
    -// These methods indicate whether a top-level query is being rendered, or a subquery
    -boolean subquery();
    -Context subquery(boolean subquery);
    -
    -// These methods provide the bind value indices within the scope of the whole Context (and thus of the whole Query)
    -int nextIndex();
    -int peekIndex();]]></java><html>
    -
    -									<h3>An example of rendering SQL</h3>
    -								   	<p>
    -								   		A simple example can be provided by checking out jOOQ's internal representation of a (simplified) <reference id="comparison-predicate" title="CompareCondition"/>. It is used for any <reference class="org.jooq.Condition"/> comparing two fields as for example the AUTHOR.ID = BOOK.AUTHOR_ID condition here:
    -							   		</p>
    -							   		
    -</html><sql>-- [...]
    -FROM AUTHOR
    -JOIN BOOK ON AUTHOR.ID = BOOK.AUTHOR_ID
    --- [...]</sql><html>
    -
    -									<p>
    -										This is how jOOQ renders such a condition:
    -									</p>
    -
    -</html><java><![CDATA[@Override
    -public final void toSQL(RenderContext context) {
    -    // The CompareCondition delegates rendering of the Fields to the Fields
    -    // themselves and connects them using the Condition's comparator operator:
    -    context.sql(field1)
    -           .sql(" ");
    -
    -    // If the second field is null, some convenience behaviour can be
    -    // implemented here
    -    if (field2.isNullLiteral()) {
    -        switch (comparator) {
    -            case EQUALS:
    -                context.sql("is null");
    -                break;
    -
    -            case NOT_EQUALS:
    -                context.sql("is not null");
    -                break;
    -
    -            default:
    -                throw new IllegalStateException("Cannot compare null with " + comparator);
    -        }
    -    }
    -
    -    // By default, also delegate the right hand side's SQL rendering to the
    -    // underlying field
    -    else {
    -        context.sql(comparator.toSQL())
    -               .sql(" ")
    -               .sql(field2);
    -    }
    -}]]></java><html>
    -
    -									<p>
    -										See the manual's sections about <reference id="custom-queryparts" title="custom QueryParts"/> and <reference id="plain-sql-queryparts" title="plain SQL QueryParts"/> to learn about how to write your own query parts in order to extend jOOQ.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="pretty-printing">
    -								<title>Pretty printing SQL</title>
    -								<content><html>
    -									<p>
    -										As mentioned in the previous chapter about <reference id="sql-rendering" title="SQL rendering"/>, there are some elements in the <reference class="org.jooq.RenderContext"/> that are used for formatting / pretty-printing rendered SQL. In order to obtain pretty-printed SQL, just use the following <reference id="custom-settings" title="custom settings"/>: 
    -									</p>
    -	
    -	
    -</html><java><![CDATA[// Create a factory that will render "formatted" SQL
    -Factory pretty = new Factory(dialect, new Settings().withRenderFormatted(true));]]></java><html>
    -
    -									<p>
    -										And then, use the above factory to render pretty-printed SQL:
    -									</p>
    -									
    -</html><code-pair>
    -<java><![CDATA[String sql = pretty.select(
    -                       AUTHOR.LAST_NAME, count().as("c"))
    -                   .from(BOOK)
    -                   .join(AUTHOR)
    -                   .on(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -                   .where(BOOK.TITLE.notEqual("1984"))
    -                   .groupBy(AUTHOR.LAST_NAME)
    -                   .having(count().equal(2))
    -                   .getSQL();]]></java><sql><![CDATA[select 
    -  "TEST"."AUTHOR"."LAST_NAME", 
    -  count(*) "c"
    -from "TEST"."BOOK"
    -  join "TEST"."AUTHOR"
    -  on "TEST"."BOOK"."AUTHOR_ID" = "TEST"."AUTHOR"."ID"
    -where "TEST"."BOOK"."TITLE" <> '1984'
    -group by "TEST"."AUTHOR"."LAST_NAME"
    -having count(*) = 2]]></sql>
    -</code-pair><html>
    -
    -									<p>
    -										The section about <reference id="execute-listeners" title="ExecuteListeners"/> shows an example of how such pretty printing can be used to log readable SQL to the stdout.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -						    <section id="variable-binding">
    -							    <title>Variable binding</title>
    -								<content><html>
    -									<p>
    -										Every <reference class="org.jooq.QueryPart"/> must implement the <reference class="org.jooq.QueryPartInternal" anchor="#bind(org.jooq.BindContext)" title="bind(BindContext)"/> method. This BindContext has two purposes:
    -									</p>
    -									<ul>
    -										<li>It provides some information about the "state" of the variable binding in process.</li>
    -										<li>It provides a common API for binding values to the context's internal <reference class="java.sql.PreparedStatement"/></li>
    -									</ul>
    -									<p>
    -										An overview of the <reference class="org.jooq.RenderContext"/> API is given here:
    -									</p>
    -
    -</html><java><![CDATA[// This method provides access to the PreparedStatement to which bind values are bound
    -PreparedStatement statement();
    -
    -// These methods provide convenience to delegate variable binding
    -BindContext bind(QueryPart part) throws DataAccessException;
    -BindContext bind(Collection<? extends QueryPart> parts) throws DataAccessException;
    -BindContext bind(QueryPart[] parts) throws DataAccessException;
    -
    -// These methods perform the actual variable binding
    -BindContext bindValue(Object value, Class<?> type) throws DataAccessException;
    -BindContext bindValues(Object... values) throws DataAccessException;]]></java><html>
    -
    -									<p>
    -										Some additional methods are inherited from a common <reference class="org.jooq.Context"/>, which is shared among <reference class="org.jooq.RenderContext"/> and <reference class="org.jooq.BindContext"/>. Details are documented in the previous chapter about <reference id="sql-rendering" title="SQL rendering"/>
    -									</p>
    -
    -									<h3>An example of binding values to SQL</h3>
    -								   	<p>
    -								   		A simple example can be provided by checking out jOOQ's internal representation of a (simplified) <reference id="comparison-predicate" title="CompareCondition"/>. It is used for any <reference class="org.jooq.Condition"/> comparing two fields as for example the AUTHOR.ID = BOOK.AUTHOR_ID condition here:
    -							   		</p>
    -							   		
    -</html><sql>-- [...]
    -WHERE AUTHOR.ID = ?
    --- [...]</sql><html>
    -
    -									<p>
    -										This is how jOOQ binds values on such a condition:
    -									</p>
    -</html><java><![CDATA[@Override
    -public final void bind(BindContext context) throws DataAccessException {
    -    // The CompareCondition itself does not bind any variables.
    -    // But the two fields involved in the condition might do so...
    -    context.bind(field1).bind(field2);
    -}]]></java><html>
    -
    -									<p>
    -										See the manual's sections about <reference id="custom-queryparts" title="custom QueryParts"/> and <reference id="plain-sql-queryparts" title="plain SQL QueryParts"/> to learn about how to write your own query parts in order to extend jOOQ.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -						    <section id="custom-queryparts">
    -							    <title>Extend jOOQ with custom types</title>
    -								<content><html>
    -									<p>
    -										If a SQL clause is too complex to express with jOOQ, you can extend either one of the following types for use directly in a jOOQ query:
    -									</p>
    -									
    -</html><java><![CDATA[public abstract class CustomField<T> extends AbstractField<T> {}
    -public abstract class CustomCondition extends AbstractCondition {}
    -public abstract class CustomTable<R extends TableRecord<R>> extends TableImpl<R> {}
    -public abstract class CustomRecord<R extends TableRecord<R>> extends TableRecordImpl<R> {}]]></java><html>
    -
    -									<p>
    -										These classes are declared public and covered by jOOQ's integration tests. When you extend these classes, you will have to provide your own implementations for the <reference id="queryparts" title="QueryParts'"/> <reference id="sql-rendering" title="toSQL()"/> and <reference id="variable-binding" title="bind()"/> methods, as discussed before:
    -									</p>
    -									
    -</html><java><![CDATA[// This method must produce valid SQL. If your QueryPart contains other QueryParts, you may delegate SQL generation to them
    -// in the correct order, passing the render context.
    -//
    -// If context.inline() is true, you must inline all bind variables
    -// If context.inline() is false, you must generate ? for your bind variables
    -public void toSQL(RenderContext context);
    -
    -// This method must bind all bind variables to a PreparedStatement. If your QueryPart contains other QueryParts, $
    -// you may delegate variable binding to them in the correct order, passing the bind context.
    -//
    -// Every QueryPart must ensure, that it starts binding its variables at context.nextIndex().
    -public void bind(BindContext context) throws DataAccessException;]]></java><html>
    -
    -									<p>
    -										The above contract may be a bit tricky to understand at first. The best thing is to check out jOOQ source code and have a look at a couple of QueryParts, to see how it's done. Here's an example <reference class="org.jooq.impl.CustomField"/> showing how to create a field multiplying another field by 2
    -									</p>
    -									
    -</html><java><![CDATA[// Create an anonymous CustomField, initialised with BOOK.ID arguments
    -final Field<Integer> IDx2 = new CustomField<Integer>(BOOK.ID.getName(), BOOK.ID.getDataType()) {
    -    @Override
    -    public void toSQL(RenderContext context) {
    -    
    -        // In inline mode, render the multiplication directly
    -        if (context.inline()) {
    -            context.sql(BOOK.ID).sql(" * 2");
    -        }
    -        
    -        // In non-inline mode, render a bind value
    -        else {
    -            context.sql(BOOK.ID).sql(" * ?");
    -        }
    -    }
    -
    -    @Override
    -    public void bind(BindContext context) {
    -        try {
    -        
    -            // Manually bind the value 2
    -            context.statement().setInt(context.nextIndex(), 2);
    -            
    -            // Alternatively, you could also write:
    -            // context.bind(Factory.val(2));
    -        }
    -        catch (SQLException e) {
    -            throw translate(getSQL(), e);
    -        }
    -    }
    -};
    -
    -// Use the above field in a SQL statement:
    -create.select(IDx2).from(BOOK);]]></java></content>
    -							</section>
    -
    -						    <section id="plain-sql-queryparts">
    -							    <title>Plain SQL QueryParts</title>
    -								<content><html>
    -									<p>
    -										If you don't need the integration of rather complex QueryParts into jOOQ, then you might be safer using simple <reference id="plain-sql" title="Plain SQL"/> functionality, where you can provide jOOQ with a simple String representation of your embedded SQL. Plain SQL methods in jOOQ's API come in two flavours. 
    -									</p>
    -									<ul>
    -										<li><strong>method(String, Object...)</strong>: This is a method that accepts a SQL string and a list of bind values that are to be bound to the variables contained in the SQL string</li>
    -										<li><strong>method(String, QueryPart...)</strong>: This is a method that accepts a SQL string and a list of QueryParts that are "injected" at the position of their respective placeholders in the SQL string</li>
    -									</ul>
    -									<p>
    -										The above distinction is best explained using an example:
    -									</p>
    -									
    -</html><java><![CDATA[// Plain SQL using bind values. The value 5 is bound to the first variable, "Animal Farm" to the second variable:
    -create.selectFrom(BOOK).where("BOOK.ID = ? AND TITLE = ?", 5, "Animal Farm");
    -
    -// Plain SQL using placeholders (counting from zero). 
    -// The QueryPart "id" is substituted for the placeholder {0}, the QueryPart "title" for {1}
    -Field<Integer> id   = val(5);
    -Field<String> title = val("Animal Farm");
    -create.selectFrom(BOOK).where("BOOK.ID = {0} AND TITLE = {1}", id, title);]]></java><html>
    -
    -									<p>
    -										The above technique allows for creating rather complex SQL clauses that are currently not supported by jOOQ, without extending any of the <reference id="custom-queryparts" title="custom QueryParts"/> as indicated in the previous chapter.
    -									</p>									
    -								</html></content>
    -							</section>
    -
    -						    <section id="serializability">
    -							    <title>Serializability</title>
    -								<content><html>
    -									<p>
    -										The only transient, non-serializable element in any jOOQ object is the <reference id="factory" title="Factory's"/> underlying <reference class="java.sql.Connection"/>. When you want to execute queries after de-serialisation, or when you want to store/refresh/delete <reference id="crud-with-updatablerecords" title="Updatable Records"/>, you will have to "re-attach" them to a Factory
    -									</p>
    -
    -</html><java><![CDATA[// Deserialise a SELECT statement
    -ObjectInputStream in = new ObjectInputStream(...);
    -Select<?> select = (Select<?>) in.readObject();
    -
    -// This will throw a DetachedException:
    -select.execute();
    -
    -// In order to execute the above select, attach it first
    -Factory create = new Factory(connection, SQLDialect.ORACLE);
    -create.attach(select);]]></java><html>
    -
    -									<h3>Automatically attaching QueryParts</h3>
    -									<p>
    -										Another way of attaching QueryParts automatically, or rather providing them with a new <reference class="java.sql.Connection"/> at will, is to hook into the <reference id="execute-listeners" title="Execute Listener support"/>. More details about this can be found in the manual's chapter about <reference id="execute-listeners" title="ExecuteListeners"/>
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -					
    -					<section id="scala-sql-building">
    -						<title>SQL building in Scala</title>
    -						<content><html>
    -							<p>
    -								jOOQ-Scala is a maven module used for leveraging some advanced Scala features for those users that wish to use jOOQ with Scala.
    -							</p>
    -							
    -							<h3>Using Scala's implicit defs to allow for operator overloading</h3>
    -							<p>
    -								The most obvious Scala feature to use in jOOQ are implicit defs for implicit conversions in order to enhance the <reference class="org.jooq.Field"/> type with SQL-esque operators. 
    -							</p>
    -							<p>
    -								The following depicts a trait which wraps all fields:
    -							</p>
    -							
    -</html><scala><![CDATA[/**
    - * A Scala-esque representation of {@link org.jooq.Field}, adding overloaded
    - * operators for common jOOQ operations to arbitrary fields
    - */
    -trait SAnyField[T] extends Field[T] {
    -
    -    // String operations
    -    // -----------------
    -
    -    def ||(value : String)            : Field[String]
    -    def ||(value : Field[_])          : Field[String]
    -
    -    // Comparison predicates
    -    // ---------------------
    -
    -    def ===(value : T)                : Condition
    -    def ===(value : Field[T])         : Condition
    -
    -    def !==(value : T)                : Condition
    -    def !==(value : Field[T])         : Condition
    -
    -    def <>(value : T)                 : Condition
    -    def <>(value : Field[T])          : Condition
    -
    -    def >(value : T)                  : Condition
    -    def >(value : Field[T])           : Condition
    -
    -    def >=(value : T)                 : Condition
    -    def >=(value : Field[T])          : Condition
    -
    -    def <(value : T)                  : Condition
    -    def <(value : Field[T])           : Condition
    -
    -    def <=(value : T)                 : Condition
    -    def <=(value : Field[T])          : Condition
    -
    -    def <=>(value : T)                : Condition
    -    def <=>(value : Field[T])         : Condition
    -}]]></scala><html>
    -
    -							<p>
    -								The following depicts a trait which wraps numeric fields:
    -							</p>
    -							
    -</html><scala><![CDATA[/**
    - * A Scala-esque representation of {@link org.jooq.Field}, adding overloaded
    - * operators for common jOOQ operations to numeric fields
    - */
    -trait SNumberField[T <: Number] extends SAnyField[T] {
    -
    -    // Arithmetic operations
    -    // ---------------------
    -
    -    def unary_-                       : Field[T]
    -
    -    def +(value : Number)             : Field[T]
    -    def +(value : Field[_ <: Number]) : Field[T]
    -
    -    def -(value : Number)             : Field[T]
    -    def -(value : Field[_ <: Number]) : Field[T]
    -
    -    def *(value : Number)             : Field[T]
    -    def *(value : Field[_ <: Number]) : Field[T]
    -
    -    def /(value : Number)             : Field[T]
    -    def /(value : Field[_ <: Number]) : Field[T]
    -
    -    def %(value : Number)             : Field[T]
    -    def %(value : Field[_ <: Number]) : Field[T]
    -
    -    // Bitwise operations
    -    // ------------------
    -
    -    def unary_~                       : Field[T]
    -
    -    def &(value : T)                  : Field[T]
    -    def &(value : Field[T])           : Field[T]
    -
    -    def |(value : T)                  : Field[T]
    -    def |(value : Field[T])           : Field[T]
    -
    -    def ^(value : T)                  : Field[T]
    -    def ^(value : Field[T])           : Field[T]
    -
    -    def <<(value : T)                 : Field[T]
    -    def <<(value : Field[T])          : Field[T]
    -
    -    def >>(value : T)                 : Field[T]
    -    def >>(value : Field[T])          : Field[T]
    -}]]></scala><html>
    -
    -							<p>
    -								An example query using such overloaded operators would then look like this:
    -							</p>
    -							
    -</html><scala><![CDATA[select (
    -  T_BOOK.ID * T_BOOK.AUTHOR_ID,
    -  T_BOOK.ID + T_BOOK.AUTHOR_ID * 3 + 4,
    -  T_BOOK.TITLE || " abc" || " xy")
    -from T_BOOK
    -leftOuterJoin (
    -  f select (x.ID, x.YEAR_OF_BIRTH)
    -  from x
    -  limit 1
    -  asTable x.getName()
    -)
    -on T_BOOK.AUTHOR_ID === x.ID
    -where (T_BOOK.ID <> 2)
    -or (T_BOOK.TITLE in ("O Alquimista", "Brida"))
    -fetch]]></scala><html>
    -
    -							<h3>Scala 2.10 Macros</h3>
    -							<p>
    -								This feature is still being experimented with. With Scala Macros, it might be possible to inline a true SQL dialect into the Scala syntax, backed by the jOOQ API. Stay tuned!
    -							</p>
    -						</html></content>
    -					</section>
    -				</sections>
    -			</section>
    -
    -			<section id="sql-execution">
    -				<title>SQL execution</title>
    -				<content><html>
    -					<p>
    -						In a previous section of the manual, we've seen how jOOQ can be used to <reference id="sql-building" title="build SQL"/> that can be executed with any API including JDBC or ... jOOQ. This section of the manual deals with various means of actually executing SQL with jOOQ.
    -					</p>
    -					
    -					<h3>SQL execution with JDBC</h3>
    -					<p>
    -						JDBC calls executable objects "<reference class="java.sql.Statement"/>". It distinguishes between three types of statements:
    -					</p>
    -					<ul>
    -						<li><reference class="java.sql.Statement"/>, or "static statement": This statement type is used for any arbitrary type of SQL statement. It is particularly useful with <reference id="inlined-parameters" title="inlined parameters"/></li>
    -						<li><reference class="java.sql.PreparedStatement"/>: This statement type is used for any arbitrary type of SQL statement. It is particularly useful with <reference id="indexed-parameters" title="indexed parameters"/> (note that JDBC does not support <reference id="named-parameters" title="named parameters"/>)</li>
    -						<li><reference class="java.sql.CallableStatement"/>: This statement type is used for SQL statements that are "called" rather than "executed". In particular, this includes calls to <reference id="stored-procedures" title="stored procedures"/>. Callable statements can register OUT parameters</li>
    -					</ul>
    -					<p>
    -						Today, the JDBC API may look weird to users being used to object-oriented design. While statements hide a lot of SQL dialect-specific implementation details quite well, they assume a lot of knowledge about the internal state of a statement. For instance, you can use the <reference class="java.sql.PreparedStatement" anchor="#addBatch()" title="PreparedStatement.addBatch()"/> method, to add a the prepared statement being created to an "internal list" of batch statements. Instead of returning a new type, this method forces user to reflect on the prepared statement's internal state or "mode".
    -					</p>
    -					
    -					<h3>jOOQ is wrapping JDBC</h3>
    -					<p>						
    -						These things are abstracted away by jOOQ, which exposes such concepts in a more object-oriented way. For more details about jOOQ's batch query execution, see the manual's section about <reference id="batch-execution" title="batch execution"/>.
    -					</p> 
    -					<p>
    -						The following sections of this manual will show how jOOQ is wrapping JDBC for SQL execution
    -					</p>
    -				</html></content>
    -
    -				<sections>
    -					<section id="comparison-with-jdbc">
    -						<title>Comparison between jOOQ and JDBC</title>
    -						<content><html>
    -							<h3>Similarities with JDBC</h3>
    -							<p>
    -								Even if there are <reference id="query-vs-resultquery" title="two general types of Query"/>, there are a lot of similarities between JDBC and jOOQ. Just to name a few:
    -							</p>
    -							<ul>
    -								<li>Both APIs return the number of affected records in non-result queries. JDBC: <reference class="java.sql.Statement" anchor="#executeUpdate(java.lang.String)" title="Statement.executeUpdate()"/>, jOOQ: <reference class="org.jooq.Query" anchor="#execute()" title="Query.execute()"/></li>
    -								<li>Both APIs return a scrollable result set type from result queries. JDBC: <reference class="java.sql.ResultSet"/>, jOOQ: <reference class="org.jooq.Result"/></li>
    -							</ul>
    -							
    -							<h3>Differences to JDBC</h3>
    -							<p>
    -								Some of the most important differences between JDBC and jOOQ are listed here:
    -							</p>
    -							<ul>
    -								<li><reference id="query-vs-resultquery" title="Query vs. ResultQuery"/>: JDBC does not formally distinguish between queries that can return results, and queries that cannot. The same API is used for both. This greatly reduces the possibility for <reference id="fetching" title="fetching convenience methods"/></li>
    -								<li><reference id="exception-handling" title="Exception handling"/>: While SQL uses the checked <reference class="java.sql.SQLException"/>, jOOQ wraps all exceptions in an unchecked <reference class="org.jooq.exception.DataAccessException"/></li>
    -								<li><reference class="org.jooq.Result"/>: Unlike its JDBC counter-part, this type implements <reference class="java.util.List"/> and is fully loaded into Java memory, freeing resources as early as possible. Just like statements, this means that users don't have to deal with a "weird" internal result set state.</li>
    -								<li><reference class="org.jooq.Cursor"/>: If you want more fine-grained control over how many records are fetched into memory at once, you can still do that using jOOQ's <reference id="lazy-fetching" title="lazy fetching"/> feature</li>
    -								<li><reference id="statement-type" title="Statement type"/>: jOOQ does not formally distinguish between static statements and prepared statements. By default, all statements are prepared statements in jOOQ, internally. Executing a statement as a static statement can be done simply using a <reference id="custom-settings" title="custom settings flag"/></li>
    -								<li><reference id="reusing-statements" title="Closing Statements"/>: JDBC keeps open resources even if they are already consumed. With JDBC, there is a lot of verbosity around safely closing resources. In jOOQ, resources are closed after consumption, by default. If you want to keep them open after consumption, you have to explicitly say so.</li>
    -							</ul>
    -						</html></content>
    -					</section>
    -				    
    -				    <section id="query-vs-resultquery">
    -						<title>Query vs. ResultQuery</title>
    -						<content><html>
    -							<p>
    -								Unlike JDBC, jOOQ has a lot of knowledge about a SQL query's structure and internals (see the manual's section about <reference id="sql-building" title="SQL building"/>). Hence, jOOQ distinguishes between these two fundamental types of queries. While every <reference class="org.jooq.Query"/> can be executed, only <reference class="org.jooq.ResultQuery"/> can return results (see the manual's section about <reference id="fetching" title="fetching"/> to learn more about fetching results). With plain SQL, the distinction can be made clear most easily:
    -							</p>
    -							
    -</html><java><![CDATA[// Create a Query object and execute it:
    -Query query = create.query("DELETE FROM BOOK");
    -query.execute();
    -
    -// Create a ResultQuery object and execute it, fetching results:
    -ResultQuery<Record> resultQuery = create.resultQuery("SELECT * FROM BOOK");
    -Result<Record> resultQuery.fetch();]]></java></content>
    -					</section>
    -
    -				    <section id="fetching">
    -						<title>Fetching</title>
    -						<content><html>
    -							<p>
    -								Fetching is something that has been completely neglegted by JDBC and also by various other database abstraction libraries. Fetching is much more than just looping or listing records or mapped objects. There are so many ways you may want to fetch data from a database, it should be considered a first-class feature of any database abstraction API. Just to name a few, here are some of jOOQ's fetching modes:
    -							</p>
    -							<ul>
    -								<li><reference id="record-vs-tablerecord" title="Untyped vs. typed fetching"/>: Sometimes you care about the returned type of your records, sometimes (with arbitrary projections) you don't.</li>
    -								<li><reference id="arrays-maps-and-lists" title="Fetching arrays, maps, or lists"/>: Instead of letting you transform your result sets into any more suitable data type, a library should do that work for you.</li>
    -								<li><reference id="recordhandler" title="Fetching through handler callbacks"/>: This is an entirely different fetching paradigm. With Java 8's lambda expressions, this will become even more powerful.</li>
    -								<li><reference id="recordmapper" title="Fetching through mapper callbacks"/>: This is an entirely different fetching paradigm. With Java 8's lambda expressions, this will become even more powerful.</li>
    -								<li><reference id="pojos" title="Fetching custom POJOs"/>: This is what made Hibernate and JPA so strong. Automatic mapping of tables to custom POJOs.</li>
    -								<li><reference id="lazy-fetching" title="Lazy vs. eager fetching"/>: It should be easy to distinguish these two fetch modes.</li>
    -								<li><reference id="many-fetching" title="Fetching many results"/>: Some databases allow for returning many result sets from a single query. JDBC can handle this but it's very verbose. A list of results should be returned instead.</li>
    -								<li><reference id="later-fetching" title="Fetching data asynchronously"/>: Some queries take too long to execute to wait for their results. You should be able to spawn query execution in a separate process.</li>
    -							</ul>
    -							
    -							<h3>Convenience and how ResultQuery, Result, and Record share API</h3>
    -							<p>
    -								The term "fetch" is always reused in jOOQ when you can fetch data from the database. An <reference class="org.jooq.ResultQuery"/> provides many overloaded means of fetching data:
    -							</p>
    -							
    -							<h3>Various modes of fetching</h3>
    -							<p>
    -								These modes of fetching are also documented in subsequent sections of the manual
    -							</p>
    -							
    -</html><java><![CDATA[// The "standard" fetch
    -Result<R> fetch();    
    -
    -// The "standard" fetch when you know your query returns only one record
    -R fetchOne();
    -
    -// The "standard" fetch when you only want to fetch the first record
    -R fetchAny();
    -
    -// Create a "lazy" Cursor, that keeps an open underlying JDBC ResultSet
    -Cursor<R> fetchLazy();
    -Cursor<R> fetchLazy(int fetchSize);
    -
    -// Create a java.util.concurrent.Future, to handle asynchronous execution of the ResultQuery
    -FutureResult<R> fetchLater();
    -FutureResult<R> fetchLater(ExecutorService executor);
    -
    -// Fetch several results at once
    -List<Result<Record>> fetchMany();
    -
    -// Fetch records into a custom callback
    -<H extends RecordHandler<R>> H fetchInto(H handler);
    -
    -// Map records using a custom callback
    -<E> List<E> fetch(RecordMapper<? super R, E> mapper);
    -
    -// Execute a ResultQuery with jOOQ, but return a JDBC ResultSet, not a jOOQ object
    -ResultSet fetchResultSet();]]></java><html>
    -							
    -							<h3>Fetch convenience</h3>
    -							<p>
    -								These means of fetching are also available from <reference class="org.jooq.Result"/> and <reference class="org.jooq.Record"/> APIs
    -							</p>
    -
    -</html><java><![CDATA[// These methods are convenience for fetching only a single field, 
    -// possibly converting results to another type
    -<T>    List<T> fetch(Field<T> field);
    -<T>    List<T> fetch(Field<?> field, Class<? extends T> type);
    -<T, U> List<U> fetch(Field<T> field, Converter<? super T, U> converter);
    -       List<?> fetch(int fieldIndex);
    -<T>    List<T> fetch(int fieldIndex, Class<? extends T> type);
    -<U>    List<U> fetch(int fieldIndex, Converter<?, U> converter);
    -       List<?> fetch(String fieldName);
    -<T>    List<T> fetch(String fieldName, Class<? extends T> type);
    -<U>    List<U> fetch(String fieldName, Converter<?, U> converter);
    -
    -// These methods are convenience for fetching only a single field, possibly converting results to another type
    -// Instead of returning lists, these return arrays
    -<T>    T[]      fetchArray(Field<T> field);
    -<T>    T[]      fetchArray(Field<?> field, Class<? extends T> type);
    -<T, U> U[]      fetchArray(Field<T> field, Converter<? super T, U> converter);
    -       Object[] fetchArray(int fieldIndex);
    -<T>    T[]      fetchArray(int fieldIndex, Class<? extends T> type);
    -<U>    U[]      fetchArray(int fieldIndex, Converter<?, U> converter);
    -       Object[] fetchArray(String fieldName);
    -<T>    T[]      fetchArray(String fieldName, Class<? extends T> type);
    -<U>    U[]      fetchArray(String fieldName, Converter<?, U> converter);
    -
    -// These methods are convenience for fetching only a single field from a single record, 
    -// possibly converting results to another type
    -<T>    T      fetchOne(Field<T> field);
    -<T>    T      fetchOne(Field<?> field, Class<? extends T> type);
    -<T, U> U      fetchOne(Field<T> field, Converter<? super T, U> converter);
    -       Object fetchOne(int fieldIndex);
    -<T>    T      fetchOne(int fieldIndex, Class<? extends T> type);
    -<U>    U      fetchOne(int fieldIndex, Converter<?, U> converter);
    -       Object fetchOne(String fieldName);
    -<T>    T      fetchOne(String fieldName, Class<? extends T> type);
    -<U>    U      fetchOne(String fieldName, Converter<?, U> converter);]]></java><html>
    -
    -							<h3>Fetch transformations</h3>
    -							<p>
    -								These means of fetching are also available from <reference class="org.jooq.Result"/> and <reference class="org.jooq.Record"/> APIs
    -							</p>
    -							
    -</html><java><![CDATA[// Transform your Records into arrays, Results into matrices
    -       Object[][] fetchArrays();
    -       Object[]   fetchOneArray();
    -       
    -// Reduce your Result object into maps
    -<K>    Map<K, R>      fetchMap(Field<K> key);
    -<K, V> Map<K, V>      fetchMap(Field<K> key, Field<V> value);
    -<K, E> Map<K, E>      fetchMap(Field<K> key, Class<E> value);
    -       Map<Record, R> fetchMap(Field<?>[] key);
    -<E>    Map<Record, E> fetchMap(Field<?>[] key, Class<E> value);       
    -
    -// Transform your Result object into maps
    -       List<Map<String, Object>> fetchMaps();
    -       Map<String, Object>       fetchOneMap();
    -
    -// Transform your Result object into groups
    -<K>    Map<K, Result<R>>      fetchGroups(Field<K> key);
    -<K, V> Map<K, List<V>>        fetchGroups(Field<K> key, Field<V> value);
    -<K, E> Map<K, List<E>>        fetchGroups(Field<K> key, Class<E> value);
    -       Map<Record, Result<R>> fetchGroups(Field<?>[] key);
    -<E>    Map<Record, List<E>>   fetchGroups(Field<?>[] key, Class<E> value);
    -
    -// Transform your Records into custom POJOs
    -<E>    List<E> fetchInto(Class<? extends E> type);
    -
    -// Transform your records into another table type
    -<Z extends Record> Result<Z> fetchInto(Table<Z> table);]]></java><html>
    -
    -							<p>
    -								Note, that apart from the <reference class="org.jooq.ResultQuery" anchor="#fetchLazy()" title="fetchLazy()"/> methods, all fetch() methods will immediately close underlying JDBC result sets.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="record-vs-tablerecord">
    -								<title>Record vs. TableRecord</title>
    -								<content><html>
    -									<p>
    -										jOOQ understands that SQL is much more expressive than Java, when it comes to the declarative typing of <reference id="table-expressions" title="table expressions"/>. As a declarative language, SQL allows for creating ad-hoc row value expressions (records with indexed columns) and records (records with named columns). In Java, this is not possible to the same extent. Yet, still, sometimes you wish to use strongly typed records, when you know that you're selecting only from a single table
    -									</p>
    -									
    -									<h3>Fetching strongly or weakly typed records</h3>
    -									<p>
    -										When fetching data only from a single table, the <reference id="table-expressions" title="table expression's"/> type is known to jOOQ if you use jOOQ's <reference id="code-generation" title="code generator"/> to generate <reference id="codegen-records" title="TableRecords"/> for your database tables. In order to fetch such strongly typed records, you will have to use the <reference id="select-statement" title="simple select API"/>:
    -									</p>
    -
    -</html><java><![CDATA[// Use the selectFrom() method:
    -BookRecord book = create.selectFrom(BOOK).where(BOOK.ID.equal(1)).fetchOne();
    -
    -// Typesafe field access is now possible:
    -System.out.println("Title       : " + book.getTitle());
    -System.out.println("Published in: " + book.getPublishedIn());]]></java><html>
    -									
    -									<p>
    -										When you use the <reference class="org.jooq.FactoryOperations" anchor="#selectFrom(org.jooq.Table)" title="Factory.selectFrom()"/> method, jOOQ will return the record type supplied with the argument table. Beware though, that you will no longer be able to use any clause that modifies the type of your <reference id="table-expressions" title="table expression"/>. This includes: 
    -									</p>
    -									<ul>
    -                   						<li><reference id="select-clause" title="The SELECT clause"/></li>
    -                   						<li><reference id="join-clause" title="The JOIN clause"/></li>
    -                   						<li><reference id="group-by-clause" title="The GROUP BY clause"/></li>
    -                   						<li><reference id="having-clause" title="The HAVING clause"/></li>
    -                   					</ul>		
    -								</html></content>
    -							</section>
    -
    -							<section id="arrays-maps-and-lists">
    -								<title>Arrays, Maps and Lists</title>
    -								<content><html>
    -									<p>
    -										By default, jOOQ returns an <reference class="org.jooq.Result"/> object, which is essentially a <reference class="java.util.List"/> of <reference class="org.jooq.Record"/>. Often, you will find yourself wanting to transform this result object into a type that corresponds more to your specific needs. Or you just want to list all values of one specific column. Here are some examples to illustrate those use cases:
    -									</p>
    -									
    -</html><java><![CDATA[// Fetching only book titles (the two calls are equivalent):
    -List<String> titles1 = create.select().from(BOOK).fetch().getValues(BOOK.TITLE);
    -List<String> titles2 = create.select().from(BOOK).fetch(BOOK.TITLE);
    -String[]     titles3 = create.select().from(BOOK).fetchArray(BOOK.TITLE);
    -
    -// Fetching only book IDs, converted to Long
    -List<Long> ids1 = create.select().from(BOOK).fetch().getValues(BOOK.ID, Long.class);
    -List<Long> ids2 = create.select().from(BOOK).fetch(BOOK.ID, Long.class);
    -Long[]     ids3 = create.select().from(BOOK).fetchArray(BOOK.ID, Long.class);
    -
    -// Fetching book IDs and mapping each ID to their records or titles
    -Map<Integer, BookRecord> map1 = create.selectFrom(BOOK).fetch().intoMap(BOOK.ID);
    -Map<Integer, BookRecord> map2 = create.selectFrom(BOOK).fetchMap(BOOK.ID);
    -Map<Integer, String>     map3 = create.selectFrom(BOOK).fetch().intoMap(BOOK.ID, BOOK.TITLE);
    -Map<Integer, String>     map4 = create.selectFrom(BOOK).fetchMap(BOOK.ID, BOOK.TITLE);
    -
    -// Group by AUTHOR_ID and list all books written by any author:       
    -Map<Integer, Result<BookRecord>> group1 = create.selectFrom(BOOK).fetch().intoGroups(BOOK.AUTHOR_ID);
    -Map<Integer, Result<BookRecord>> group2 = create.selectFrom(BOOK).fetchGroups(BOOK.AUTHOR_ID);
    -Map<Integer, List<String>>       group3 = create.selectFrom(BOOK).fetch().intoGroups(BOOK.AUTHOR_ID, BOOK.TITLE);
    -Map<Integer, List<String>>       group4 = create.selectFrom(BOOK).fetchGroups(BOOK.AUTHOR_ID, BOOK.TITLE);]]></java><html>									
    -
    -									<p>
    -										Note that most of these convenience methods are available both through <reference class="org.jooq.ResultQuery"/> and <reference class="org.jooq.Result"/>, some are even available through <reference class="org.jooq.Record"/> as well.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="recordhandler">
    -								<title>RecordHandler</title>
    -								<content><html>
    -									<p>
    -										In a more functional operating mode, you might want to write callbacks that receive records from your select statement results in order to do some processing. This is a common data access pattern in Spring's JdbcTemplate, and it is also available in jOOQ. With jOOQ, you can implement your own <reference class="org.jooq.RecordHandler"/> classes and plug them into jOOQ's <reference class="org.jooq.ResultQuery"/>:
    -									</p>
    -									
    -</html><java><![CDATA[// Write callbacks to receive records from select statements
    -create.selectFrom(BOOK)
    -      .orderBy(BOOK.ID)
    -      .fetch()
    -      .into(new RecordHandler<BookRecord>() {
    -          @Override
    -          public void next(BookRecord book) {
    -              Util.doThingsWithBook(book);
    -          }
    -      });
    -      
    -// Or more concisely
    -create.selectFrom(BOOK)
    -      .orderBy(BOOK.ID)
    -      .fetchInto(new RecordHandler<BookRecord>() {...});
    -      
    -// Or even more concisely with Java 8's lambda expressions:
    -create.selectFrom(BOOK)
    -      .orderBy(BOOK.ID)
    -      .fetchInto(book -> { Util.doThingsWithBook(book); }; );
    -]]></java><html>
    -
    -									<p>
    -										See also the manual's section about the <reference id="recordmapper" title="RecordMapper"/>, which provides similar features
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="recordmapper">
    -								<title>RecordMapper</title>
    -								<content><html>
    -									<p>
    -										In a more functional operating mode, you might want to write callbacks that map records from your select statement results in order to do some processing. This is a common data access pattern in Spring's JdbcTemplate, and it is also available in jOOQ. With jOOQ, you can implement your own <reference class="org.jooq.RecordMapper"/> classes and plug them into jOOQ's <reference class="org.jooq.ResultQuery"/>:
    -									</p>
    -									
    -</html><java><![CDATA[// Write callbacks to receive records from select statements
    -List<Integer> ids =
    -create.selectFrom(BOOK)
    -      .orderBy(BOOK.ID)
    -      .fetch()
    -      .map(new RecordMapper<BookRecord, Integer>() {
    -          @Override
    -          public Integer map(BookRecord book) {
    -              return book.getId();
    -          }
    -      });
    -      
    -// Or more concisely
    -create.selectFrom(BOOK)
    -      .orderBy(BOOK.ID)
    -      .fetch(new RecordMapper<BookRecord, Integer>() {...});
    -      
    -// Or even more concisely with Java 8's lambda expressions:
    -create.selectFrom(BOOK)
    -      .orderBy(BOOK.ID)
    -      .fetch(book -> book.getId());
    -]]></java><html>
    -
    -									<p>
    -										See also the manual's section about the <reference id="recordhandler" title="RecordHandler"/>, which provides similar features
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="pojos">
    -								<title>POJOs</title>
    -								<content><html>
    -									<p>
    -										Fetching data in records is fine as long as your application is not really layered, or as long as you're still writing code in the DAO layer. But if you have a more advanced application architecture, you may not want to allow for jOOQ artefacts to leak into other layers. You may choose to write POJOs (Plain Old Java Objects) as your primary DTOs (Data Transfer Objects), without any dependencies on jOOQ's <reference class="org.jooq.Record"/> types, which may even potentially hold a reference to a <reference id="factory" title="Factory"/>, and thus a JDBC <reference class="java.sql.Connection"/>. Like Hibernate/JPA, jOOQ allows you to operate with POJOs. Unlike Hibernate/JPA, jOOQ does not "attach" those POJOs or create proxies with any magic in them.
    -									</p>
    -									<p>
    -										If you're using jOOQ's <reference id="code-generation" title="code generator"/>, you can configure it to <reference id="codegen-pojos" title="generate POJOs"/> for you, but you're not required to use those generated POJOs. You can use your own.
    -									</p>
    -									
    -									<h3>Using JPA-annotated POJOs</h3>									
    -									<p>
    -										jOOQ tries to find JPA annotations on your POJO types. If it finds any, they are used as the primary source for mapping meta-information. Only the <reference class="javax.persistence.Column"/> annotation is used and understood by jOOQ. An example:
    -									</p>
    -
    -</html><java><![CDATA[// A JPA-annotated POJO class
    -public class MyBook {
    -  @Column(name = "ID")
    -  public int myId;
    -  
    -  @Column(name = "TITLE")
    -  public String myTitle;
    -}
    -
    -// The various "into()" methods allow for fetching records into your custom POJOs:
    -MyBook myBook        = create.select().from(BOOK).fetchAny().into(MyBook.class); 
    -List<MyBook> myBooks = create.select().from(BOOK).fetch().into(MyBook.class);
    -List<MyBook> myBooks = create.select().from(BOOK).fetchInto(MyBook.class);]]></java><html>									
    -									
    -									<p>
    -										Just as with any other JPA implementation, you can put the <reference class="javax.persistence.Column"/> annotation on any class member, including attributes, setters and getters. Please refer to the <reference class="org.jooq.Record" anchor="#into(java.lang.Class)" title="Record.into()"/> Javadoc for more details.
    -									</p>
    -									
    -									<h3>Using simple POJOs</h3>
    -									<p>
    -										If jOOQ does not find any JPA-annotations, columns are mapped to the "best-matching" constructor, attribute or setter. An example illustrates this:
    -									</p>
    -									
    -</html><java><![CDATA[// A "mutable" POJO class
    -public class MyBook1 {
    -  public int id;
    -  public String title;
    -}
    -
    -// The various "into()" methods allow for fetching records into your custom POJOs:
    -MyBook1 myBook        = create.select().from(BOOK).fetchAny().into(MyBook1.class); 
    -List<MyBook1> myBooks = create.select().from(BOOK).fetch().into(MyBook1.class);
    -List<MyBook1> myBooks = create.select().from(BOOK).fetchInto(MyBook1.class);]]></java><html>	
    -
    -									<p>
    -										Please refer to the <reference class="org.jooq.Record" anchor="#into(java.lang.Class)" title="Record.into()"/> Javadoc for more details.
    -									</p>
    -									
    -									<h3>Using "immutable" POJOs</h3>
    -									<p>
    -										If jOOQ does not find any default constructor, columns are mapped to the "best-matching" constructor. This allows for using "immutable" POJOs with jOOQ. An example illustrates this:
    -									</p>
    -									
    -</html><java><![CDATA[// An "immutable" POJO class
    -public class MyBook2 {
    -  public final int id;
    -  public final String title;
    -  
    -  public MyBook2(int id, String title) {
    -    this.id = id;
    -    this.title = title;
    -  }
    -}
    -
    -// With "immutable" POJO classes, there must be an exact match between projected fields and available constructors:
    -MyBook2 myBook        = create.select(BOOK.ID, BOOK.TITLE).from(BOOK).fetchAny().into(MyBook2.class); 
    -List<MyBook2> myBooks = create.select(BOOK.ID, BOOK.TITLE).from(BOOK).fetch().into(MyBook2.class);
    -List<MyBook2> myBooks = create.select(BOOK.ID, BOOK.TITLE).from(BOOK).fetchInto(MyBook2.class);
    -
    -// An "immutable" POJO class with a java.beans.ConstructorProperties annotation
    -public class MyBook3 {
    -  public final String title;
    -  public final int id;
    -  
    -  @ConstructorProperties({ "title", "id"})
    -  public MyBook2(String title, int id) {
    -    this.title = title;
    -    this.id = id;
    -  }
    -}
    -
    -// With annotated "immutable" POJO classes, there doesn't need to be an exact match between fields and constructor arguments.
    -// In the below cases, only BOOK.ID is really set onto the POJO, BOOK.TITLE remains null and BOOK.AUTHOR_ID is ignored
    -MyBook3 myBook        = create.select(BOOK.ID, BOOK.AUTHOR_ID).from(BOOK).fetchAny().into(MyBook3.class); 
    -List<MyBook3> myBooks = create.select(BOOK.ID, BOOK.AUTHOR_ID).from(BOOK).fetch().into(MyBook3.class);
    -List<MyBook3> myBooks = create.select(BOOK.ID, BOOK.AUTHOR_ID).from(BOOK).fetchInto(MyBook3.class);
    -]]></java><html>	
    -									
    -									<p>
    -										Please refer to the <reference class="org.jooq.Record" anchor="#into(java.lang.Class)" title="Record.into()"/> Javadoc for more details.
    -									</p>
    -
    -									<h3>Using proxyable types</h3>
    -									<p>
    -										jOOQ also allows for fetching data into abstract classes or interfaces, or in other words, "proxyable" types. This means that jOOQ will return a <reference class="java.util.HashMap"/> wrapped in a <reference class="java.lang.reflect.Proxy"/> implementing your custom type. An example of this is given here:
    -									</p>
    -									
    -</html><java><![CDATA[// A "proxyable" type
    -public interface MyBook3 {
    -  int getId(); 
    -  void setId(int id);
    -  
    -  String getTitle();
    -  void setTitle(String title);
    -}
    -
    -// The various "into()" methods allow for fetching records into your custom POJOs:
    -MyBook3 myBook        = create.select(BOOK.ID, BOOK.TITLE).from(BOOK).fetchAny().into(MyBook3.class); 
    -List<MyBook3> myBooks = create.select(BOOK.ID, BOOK.TITLE).from(BOOK).fetch().into(MyBook3.class);
    -List<MyBook3> myBooks = create.select(BOOK.ID, BOOK.TITLE).from(BOOK).fetchInto(MyBook3.class);]]></java><html>									
    -
    -									<p>
    -										Please refer to the <reference class="org.jooq.Record" anchor="#into(java.lang.Class)" title="Record.into()"/> Javadoc for more details.
    -									</p>
    -
    -									<h3>Loading POJOs back into Records to store them</h3>
    -									<p>
    -										The above examples show how to fetch data into your own custom POJOs / DTOs. When you have modified the data contained in POJOs, you probably want to store those modifications back to the database. An example of this is given here:
    -									</p>
    -
    -</html><java><![CDATA[// A "mutable" POJO class
    -public class MyBook {
    -  public int id;
    -  public String title;
    -}
    -
    -// Create a new POJO instance
    -MyBook myBook = new MyBook();
    -myBook.id = 10;
    -myBook.title = "Animal Farm";
    -
    -// Load a jOOQ-generated BookRecord from your POJO
    -BookRecord book = create.newRecord(BOOK, myBook); 
    -
    -// Insert it (implicitly)
    -book.store();
    -
    -// Insert it (explicitly)
    -create.executeInsert(book);
    -
    -// or update it (ID = 10)
    -create.executeUpdate(book);]]></java><html>
    -							
    -									<p>
    -										Note: Because of your manual setting of ID = 10, jOOQ's store() method will asume that you want to insert a new record. See the manual's section about <reference id="crud-with-updatablerecords" title="CRUD with UpdatableRecords"/> for more details on this.
    -									</p>
    -											
    -									<h3>Interaction with DAOs</h3>
    -									<p>
    -										If you're using jOOQ's <reference id="code-generation" title="code generator"/>, you can configure it to <reference id="codegen-daos" title="generate DAOs"/> for you. Those DAOs operate on <reference id="codegen-pojos" title="generated POJOs"/>. An example of using such a DAO is given here:
    -									</p>
    -
    -</html><java><![CDATA[// Initialise a Factory
    -Factory create = new Factory(connection, SQLDialect.ORACLE);
    -
    -// Initialise the DAO with the Factory
    -BookDao bookDao = new BookDao(create);
    -
    -// Start using the DAO
    -Book book = bookDao.findById(5);
    -
    -// Modify and update the POJO
    -book.setTitle("1984");
    -book.setPublishedIn(1948);
    -bookDao.update(book);
    -
    -// Delete it again
    -bookDao.delete(book);]]></java><html>
    -									
    -									<h3>More complex data structures</h3>
    -									<p>
    -										jOOQ currently doesn't support more complex data structures, the way Hibernate/JPA attempt to map relational data onto POJOs. While future developments in this direction are not excluded, jOOQ claims that generic mapping strategies lead to an enormous additional complexity that only serves very few use cases. You are likely to find a solution using any of jOOQ's various <reference id="fetching" title="fetching modes"/>, with only little boiler-plate code on the client side.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="lazy-fetching">
    -								<title>Lazy fetching</title>
    -								<content><html>
    -									<p>
    -										Unlike JDBC's <reference class="java.sql.ResultSet"/>, jOOQ's <reference class="org.jooq.Result"/> does not represent an open database cursor with various fetch modes and scroll modes, that needs to be closed after usage. jOOQ's results are simple in-memory Java <reference class="java.util.List"/> objects, containing all of the result values. If your result sets are large, or if you have a lot of network latency, you may wish to fetch records one-by-one, or in small chunks. jOOQ supports a <reference class="org.jooq.Cursor"/> type for that purpose. In order to obtain such a reference, use the <reference class="org.jooq.ResultQuery" anchor="#fetchLazy()" title="ResultQuery.fetchLazy()"/> method. An example is given here:
    -									</p>
    -									
    -</html><java><![CDATA[// Obtain a Cursor reference:
    -Cursor<BookRecord> cursor = null;
    -
    -try {
    -    cursor = create.selectFrom(BOOK).fetchLazy();
    -
    -    // Cursor has similar methods as Iterator<R>
    -    while (cursor.hasNext()) {
    -        BookRecord book = cursor.fetchOne();
    -        
    -        Util.doThingsWithBook(book);
    -    }
    -}
    -
    -// Close the cursor and the cursor's underlying JDBC ResultSet
    -finally {
    -    if (cursor != null) {
    -        cursor.close();
    -    }
    -}]]></java><html>
    -
    -									<p>
    -										As a <reference class="org.jooq.Cursor"/> holds an internal reference to an open <reference class="java.sql.ResultSet"/>, it may need to be closed at the end of iteration. If a cursor is completely scrolled through, it will conveniently close the underlying ResultSet. However, you should not rely on that.
    -									</p>
    -									
    -									<h3>Cursors ship with all the other fetch features</h3>
    -									<p>
    -										Like <reference class="org.jooq.ResultQuery"/> or <reference class="org.jooq.Result"/>, <reference class="org.jooq.Cursor"/> gives access to all of the other fetch features that we've seen so far, i.e.
    -									</p>
    -									<ul>
    -										<li><reference id="record-vs-tablerecord" title="Strongly or weakly typed records"/>: Cursors are also typed with the &lt;R&gt; type, allowing to fetch custom, generated <reference class="org.jooq.TableRecord"/> or plain <reference class="org.jooq.Record"/> types.</li>
    -										<li><reference id="recordhandler" title="RecordHandler callbacks"/>: You can use your own <reference class="org.jooq.RecordHandler"/> callbacks to receive lazily fetched records.</li>
    -										<li><reference id="recordmapper" title="RecordMapper callbacks"/>: You can use your own <reference class="org.jooq.RecordMapper"/> callbacks to map lazily fetched records.</li>
    -										<li><reference id="pojos" title="POJOs"/>: You can fetch data into your own custom POJO types.</li>
    -									</ul>
    -								</html></content>
    -							</section>
    -
    -							<section id="many-fetching">
    -								<title>Many fetching</title>
    -								<content><html>
    -									<p>
    -										Many databases support returning several result sets, or cursors, from single queries. An example for this is Sybase ASE's sp_help command:
    -									</p>
    -</html><text><![CDATA[> sp_help 'author'
    -
    -+--------+-----+-----------+-------------+-------------------+
    -|Name    |Owner|Object_type|Object_status|Create_date        |
    -+--------+-----+-----------+-------------+-------------------+
    -|  author|dbo  |user table | -- none --  |Sep 22 2011 11:20PM|
    -+--------+-----+-----------+-------------+-------------------+
    -
    -+-------------+-------+------+----+-----+-----+
    -|Column_name  |Type   |Length|Prec|Scale|...  |
    -+-------------+-------+------+----+-----+-----+
    -|id           |int    |     4|NULL| NULL|    0|
    -|first_name   |varchar|    50|NULL| NULL|    1|
    -|last_name    |varchar|    50|NULL| NULL|    0|
    -|date_of_birth|date   |     4|NULL| NULL|    1|
    -|year_of_birth|int    |     4|NULL| NULL|    1|
    -+-------------+-------+------+----+-----+-----+]]></text><html>
    -
    -
    -									<p>
    -										The correct (and verbose) way to do this with JDBC is as follows:
    -									</p>
    -									
    -</html><java><![CDATA[ResultSet rs = statement.executeQuery();
    -
    -// Repeat until there are no more result sets
    -for (;;) {
    -
    -  // Empty the current result set
    -  while (rs.next()) {
    -    // [ .. do something with it .. ]
    -  }
    -
    -  // Get the next result set, if available
    -  if (statement.getMoreResults()) {
    -    rs = statement.getResultSet();
    -  }
    -  else {
    -    break;
    -  }
    -}
    -
    -// Be sure that all result sets are closed
    -statement.getMoreResults(Statement.CLOSE_ALL_RESULTS);
    -statement.close();]]></java><html>
    -
    -									<p>
    -										As previously discussed in the chapter about <reference id="comparison-with-jdbc" title="differences between jOOQ and JDBC"/>, jOOQ does not rely on an internal state of any JDBC object, which is "externalised" by Javadoc. Instead, it has a straight-forward API allowing you to do the above in a one-liner: 
    -									</p>
    -									
    -</html><java><![CDATA[// Get some information about the author table, its columns, keys, indexes, etc
    -List<Result<Record>> results = create.fetchMany("sp_help 'author'");]]></java><html>
    -
    -									<p>
    -										Using generics, the resulting structure is immediately clear.
    -									</p>									
    -								</html></content>
    -							</section>
    -
    -							<section id="later-fetching">
    -								<title>Later fetching</title>
    -								<content><html>
    -									<p>
    -										Some queries take very long to execute, yet they are not crucial for the continuation of the main program. For instance, you could be generating a complicated report in a Swing application, and while this report is being calculated in your database, you want to display a background progress bar, allowing the user to pursue some other work. This can be achived simply with jOOQ, by creating a <reference class="org.jooq.FutureResult"/>, a type that extends <reference class="java.util.concurrent.Future"/>. An example is given here:
    -									</p>
    -									
    -</html><java><![CDATA[// Spawn off this query in a separate process:
    -FutureResult<BookRecord> future = create.selectFrom(BOOK).where(... complex predicates ...).fetchLater();
    -
    -// This example actively waits for the result to be done
    -while (!future.isDone()) {
    -    progressBar.increment(1);
    -    Thread.sleep(50);
    -}
    -
    -// The result should be ready, now
    -Result<BookRecord> result = future.get();]]></java><html>
    -
    -									<p>
    -										Note, that instead of letting jOOQ spawn a new thread, you can also provide jOOQ with your own <reference class="java.util.concurrent.ExecutorService"/>:
    -									</p>
    -									
    -</html><java><![CDATA[// Spawn off this query in a separate process:
    -ExecutorService service = // [...]
    -FutureResult<BookRecord> future = create.selectFrom(BOOK).where(... complex predicates ...).fetchLater(service);]]></java></content>
    -							</section>
    -
    -							<section id="resultset-fetching">
    -								<title>ResultSet fetching</title>
    -								<content><html>
    -									<p>
    -										When interacting with legacy applications, you may prefer to have jOOQ return a <reference class="java.sql.ResultSet"/>, rather than jOOQ's own <reference class="org.jooq.Result"/> types. This can be done simply, in two ways:
    -									</p>
    -									
    -</html><java><![CDATA[// jOOQ's Cursor type exposes the underlying ResultSet:
    -ResultSet rs1 = create.selectFrom(BOOK).fetchLazy().resultSet();
    -
    -// But you can also directly access that ResultSet from ResultQuery:
    -ResultSet rs2 = create.selectFrom(BOOK).fetchResultSet();
    -
    -// Don't forget to close these, though!
    -rs1.close();
    -rs2.close();]]></java><html>
    -
    -									<h3>Transform jOOQ's Result into a JDBC ResultSet</h3>
    -									<p>
    -										Instead of operating on a JDBC ResultSet holding an open resource from your database, you can also let jOOQ's <reference class="org.jooq.Result"/> wrap itself in a <reference class="java.sql.ResultSet"/>. The advantage of this is that the so-created ResultSet has no open connection to the database. It is a completely in-memory ResultSet:								
    -									</p>
    -
    -</html><java><![CDATA[// Transform a jOOQ Result into a ResultSet
    -Result<BookRecord> result = create.selectFrom(BOOK).fetch();
    -ResultSet rs = result.intoResultSet();]]></java><html>
    -
    -									<h3>The inverse: Fetch data from a legacy ResultSet using jOOQ</h3>
    -									<p>
    -										The inverse of the above is possible too. Maybe, a legacy part of your application produces JDBC <reference class="java.sql.ResultSet"/>, and you want to turn them into a <reference class="org.jooq.Result"/>: 
    -									</p>
    -
    -</html><java><![CDATA[// Transform a JDBC ResultSet into a jOOQ Result
    -ResultSet rs = connection.createStatement().executeQuery("SELECT * FROM BOOK");
    -
    -// As a Result:
    -Result<Record> result = create.fetch(rs);
    -
    -// As a Cursor
    -Cursor<Record> cursor = create.fetchLazy(rs);]]></java></content>
    -							</section>
    -
    -							<section id="data-type-conversion">
    -								<title>Data type conversion</title>
    -								<content><html>
    -									<p>
    -										Apart from a few extra features (see the manual's section about <reference id="master-data-types" title="master data types"/> and <reference id="codegen-udts" title="user-defined types"/>), jOOQ only supports basic types as supported by the JDBC API. In your application, you may choose to transform these data types into your own ones, without writing too much boiler-plate code. This can be done using jOOQ's <reference class="org.jooq.Converter"/> types. A converter essentially allows for two-way conversion between two Java data types &lt;T&gt; and &lt;U&gt;. By convention, the &lt;T&gt; type corresponds to the type in your database whereas the &gt;U&gt; type corresponds to your own user type. The Converter API is given here:
    -									</p>
    -									
    -</html><java><![CDATA[public interface Converter<T, U> extends Serializable {
    -
    -    /**
    -     * Convert a database object to a user object
    -     */
    -    U from(T databaseObject);
    -
    -    /**
    -     * Convert a user object to a database object
    -     */
    -    T to(U userObject);
    -
    -    /**
    -     * The database type
    -     */
    -    Class<T> fromType();
    -
    -    /**
    -     * The user type
    -     */
    -    Class<U> toType();
    -}]]></java><html>
    -
    -									<p>
    -										Such a converter can be used in many parts of the jOOQ API. Some examples have been illustrated in the manual's section about <reference id="fetching" title="fetching"/>.
    -									</p>
    -									
    -									<h3>A Converter for GregorianCalendar</h3>
    -									<p>
    -										Here is a some more elaborate example involving a Converter for <reference class="java.util.GregorianCalendar"/>: 
    -									</p>
    -									
    -</html><java><![CDATA[// You may prefer Java Calendars over JDBC Timestamps
    -public class CalendarConverter implements Converter<Timestamp, GregorianCalendar> {
    -
    -    @Override
    -    public GregorianCalendar from(Timestamp databaseObject) {
    -        GregorianCalendar calendar = (GregorianCalendar) Calendar.getInstance();
    -        calendar.setTimeInMillis(databaseObject.getTime());
    -        return calendar;
    -    }
    -
    -    @Override
    -    public Timestamp to(GregorianCalendar userObject) {
    -        return new Timestamp(userObject.getTime().getTime());
    -    }
    -
    -    @Override
    -    public Class<Timestamp> fromType() {
    -        return Timestamp.class;
    -    }
    -
    -    @Override
    -    public Class<GregorianCalendar> toType() {
    -        return GregorianCalendar.class;
    -    }
    -}
    -
    -// Now you can fetch calendar values from jOOQ's API:
    -List<GregorianCalendar> dates1 = create.selectFrom(BOOK).fetch().getValues(BOOK.PUBLISHING_DATE, new CalendarConverter());
    -List<GregorianCalendar> dates2 = create.selectFrom(BOOK).fetch(BOOK.PUBLISHING_DATE, new CalendarConverter());
    -]]></java><html>									
    -									
    -									<h3>Enum Converters</h3>
    -									<p>
    -										jOOQ ships with a built-in default <reference class="org.jooq.impl.EnumConverter"/>, that you can use to map VARCHAR values to enum literals or NUMBER values to enum ordinals (both modes are supported). Let's say, you want to map a YES / NO / MAYBE column to a custom Enum:
    -									</p>
    -									
    -</html><java><![CDATA[// Define your Enum
    -public enum YNM {
    -    YES, NO, MAYBE
    -}
    -
    -// Define your converter
    -public class YNMConverter extends EnumConverter<String, YNM> {
    -    public YNMConverter() {
    -        super(String.class, YNM.class);
    -    }
    -}
    -
    -// And you're all set for converting records to your custom Enum:
    -for (BookRecord book : create.selectFrom(BOOK).fetch()) {
    -    switch (book.getValue(BOOK.I_LIKE, new YNMConverter())) {
    -        case YES:    System.out.println("I like this book             : " + book.getTitle()); break;
    -        case NO:     System.out.println("I didn't like this book      : " + book.getTitle()); break;
    -        case MAYBE:  System.out.println("I'm not sure about this book : " + book.getTitle()); break;
    -    }
    -}]]></java><html>
    -									
    -									<h3>Using Converters in generated source code</h3>
    -									<p>
    -										jOOQ also allows for generated source code to reference your own custom converters, in order to permanently replace a <reference id="table-columns" title="table column's"/> &lt;T&gt; type by your own, custom &lt;U&gt; type. See the manual's section about <reference id="custom-data-types" title="custom data types"/> for details.
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -					
    -					<section id="statement-type">
    -						<title>Static statements vs. Prepared Statements</title>
    -						<content><html>
    -							<p>
    -								With JDBC, you have full control over your SQL statements. You can decide yourself, if you want to execute a static <reference class="java.sql.Statement"/> without bind values, or a <reference class="java.sql.PreparedStatement"/> with (or without) bind values. But you have to decide early, which way to go. And you'll have to prevent SQL injection and syntax errors manually, when inlining your bind variables.
    -							</p>
    -							<p>
    -								With jOOQ, this is easier. As a matter of fact, it is plain simple. With jOOQ, you can just set a flag in your <reference id="factory" title="Factory's"/> <reference id="custom-settings" title="Settings"/>, and all queries produced by that factory will be executed as static statements, with all bind values inlined. An example is given here:
    -							</p>
    -							
    -</html><code-pair>
    -<sql><![CDATA[
    -
    -
    -
    -
    -
    -
    --- These statements are rendered by the two factories:
    -SELECT ? FROM DUAL WHERE ? = ?
    -SELECT 1 FROM DUAL WHERE 1 = 1]]></sql><java><![CDATA[// This Factory executes PreparedStatements
    -Factory prepare = new Factory(connection, SQLDialect.ORACLE);
    -
    -// This Factory exeecutes static Statements
    -Factory inlined = new Factory(connection, SQLDialect.ORACLE, 
    -  new Settings().withStatementType(StatementType.STATIC_STATEMENT));
    -  
    -prepare.select(val(1)).where(val(1).equal(1)).fetch();
    -inlined.select(val(1)).where(val(1).equal(1)).fetch();]]></java>
    -</code-pair><html>
    -
    -							<h3>Reasons for choosing one or the other</h3>
    -							<p>
    -								Not all databases are equal. Some databases show improved performance if you use <reference class="java.sql.PreparedStatement"/>, as the database will then be able to re-use execution plans for identical SQL statements, regardless of actual bind values. This heavily improves the time it takes for soft-parsing a SQL statement. In other situations, assuming that bind values are irrelevant for SQL execution plans may be a bad idea, as you might run into "bind value peeking" issues. You may be better off spending the extra cost for a new hard-parse of your SQL statement and instead having the database fine-tune the new plan to the concrete bind values.
    -							</p>
    -							<p>
    -								Whichever aproach is more optimal for you cannot be decided by jOOQ. In most cases, prepared statements are probably better. But you always have the option of forcing jOOQ to render inlined bind values.
    -							</p>
    -							
    -							<h3>Inlining bind values on a per-bind-value basis</h3>
    -							<p>
    -								Note that you don't have to inline all your bind values at once. If you know that a bind value is not really a variable and should be inlined explicitly, you can do so by using <reference class="org.jooq.impl.Factory" anchor="#inline(Object)" title="Factory.inline()"/>, as documented in the manual's section about <reference id="inlined-parameters" title="inlined parameters"/>
    -							</p>
    -						</html></content>
    -					</section>
    -
    -					<section id="reusing-statements">
    -						<title>Reusing a Query's PreparedStatement</title>
    -						<content><html>
    -							<p>
    -								As previously discussed in the chapter about <reference id="comparison-with-jdbc" title="differences between jOOQ and JDBC"/>, reusing PreparedStatements is handled a bit differently in jOOQ from how it is handled in JDBC
    -							</p>
    -							
    -							<h3>Keeping open PreparedStatements with JDBC</h3>
    -							<p>
    -								With JDBC, you can easily reuse a <reference class="java.sql.PreparedStatement"/> by not closing it between subsequent executions. An example is given here:
    -							</p>
    -							
    -</html><java><![CDATA[PreparedStatement stmt = null;
    -ResultSet rs1 = null;
    -ResultSet rs2 = null;
    -
    -try {
    -    // Execute the statement and fetch a first ResultSet
    -    stmt = connection.prepareStatement("SELECT 1 FROM DUAL");
    -    rs1  = stmt.executeQuery();
    -
    -    // Without closing the statement, execute it again to fetch another ResultSet
    -    rs2  = stmt.executeQuery();
    -}
    -finally {
    -    try { rs1.close();  } catch (Exception ignore) {}
    -    try { rs2.close();  } catch (Exception ignore) {}
    -    try { stmt.close(); } catch (Exception ignore) {}
    -}]]></java><html>
    -
    -							<p>
    -								The above technique can be quite useful when you want to reuse expensive database resources. This can be the case when your statement is executed very frequently and your database would take non-negligible time to soft-parse the prepared statement and generate a new statement / cursor resource.
    -							</p>
    -							
    -							<h3>Keeping open PreparedStatements with jOOQ</h3>
    -							<p>
    -								This is also modeled in jOOQ. However, the difference to JDBC is that closing a statement is the default action, whereas keeping it open has to be configured explicitly. This is better than JDBC, because the default action should be the one that is used most often. Keeping open statements is rarely done in average applications. Here's an example of how to keep open PreparedStatements with jOOQ:
    -							</p>
    -							
    -</html><java><![CDATA[// Create a query which is configured to keep its underlying PreparedStatement open
    -ResultQuery<Record> query = create.selectOne().keepStatement(true);
    -
    -// Execute the query twice, against the same underlying PreparedStatement:
    -try {
    -    Result<Record> result1 = query.fetch(); // This will lazily create a new PreparedStatement
    -    Result<Record> result2 = query.fetch(); // This will reuse the previous PreparedStatement
    -}
    -
    -// ... but now, you must not forget to close the query
    -finally {
    -    query.close();
    -}]]></java><html>
    -
    -							<p>
    -								The above example shows how a query can be executed twice against the same underlying PreparedStatement. Unlike in other execution scenarios, you must not forget to close this query now
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="batch-execution">
    -						<title>Using JDBC batch operations</title>
    -						<content><html>
    -							<p>
    -								With JDBC, you can easily execute several statements at once using the addBatch() method. Essentially, there are two modes in JDBC
    -							</p>
    -
    -							<ul>
    -								<li>Execute several queries without bind values</li>
    -								<li>Execute one query several times with bind values</li>
    -							</ul>
    -
    -							<p>
    -								In code, this looks like the following snippet:
    -							</p>
    -</html><java><![CDATA[// 1. several queries
    -// ------------------
    -Statement stmt = connection.createStatement();
    -stmt.addBatch("INSERT INTO author VALUES (1, 'Erich Gamma')");
    -stmt.addBatch("INSERT INTO author VALUES (2, 'Richard Helm')");
    -stmt.addBatch("INSERT INTO author VALUES (3, 'Ralph Johnson')");
    -stmt.addBatch("INSERT INTO author VALUES (4, 'John Vlissides')");
    -int[] result = stmt.executeBatch();
    -
    -// 2. a single query
    -// -----------------
    -PreparedStatement stmt = connection.prepareStatement("INSERT INTO autho VALUES (?, ?)");
    -stmt.setInt(1, 1);
    -stmt.setString(2, "Erich Gamma");
    -stmt.addBatch();
    -
    -stmt.setInt(1, 2);
    -stmt.setString(2, "Richard Helm");
    -stmt.addBatch();
    -
    -stmt.setInt(1, 3);
    -stmt.setString(2, "Ralph Johnson");
    -stmt.addBatch();
    -
    -stmt.setInt(1, 4);
    -stmt.setString(2, "John Vlissides");
    -stmt.addBatch();
    -
    -int[] result = stmt.executeBatch();]]></java><html>
    -
    -
    -							<h3>This will also be supported by jOOQ</h3>
    -							<p>
    -								jOOQ supports executing queries in batch mode as follows:
    -							</p>
    -							
    -</html><java><![CDATA[// 1. several queries
    -// ------------------
    -create.batch(
    -	create.insertInto(AUTHOR, ID, NAME).values(1, "Erich Gamma"),
    -	create.insertInto(AUTHOR, ID, NAME).values(2, "Richard Helm"),
    -	create.insertInto(AUTHOR, ID, NAME).values(3, "Ralph Johnson"),
    -	create.insertInto(AUTHOR, ID, NAME).values(4, "John Vlissides"))
    -.execute();
    -
    -// 2. a single query
    -// -----------------
    -create.batch(create.insertInto(AUTHOR, ID, NAME).values("?", "?"))
    -	  .bind(1, "Erich Gamma")
    -	  .bind(2, "Richard Helm")
    -	  .bind(3, "Ralph Johnson")
    -	  .bind(4, "John Vlissides")
    -	  .execute();]]></java></content>
    -					</section>
    -
    -				    <section id="sequence-execution">
    -						<title>Sequence execution</title>
    -						<content><html>
    -							<p>
    -								Most databases support sequences of some sort, to provide you with unique values to be used for primary keys and other enumerations. If you're using jOOQ's <reference id="code-generation" title="code generator"/>, it will generate a sequence object per sequence for you. There are two ways of using such a sequence object:
    -							</p>
    -
    -							<h3>Standalone calls to sequences</h3>
    -							<p>
    -								Instead of actually phrasing a select statement, you can also use the <reference id="factory" title="Factory's"/> convenience methods:
    -							</p>							
    -							
    -</html><java><![CDATA[// Fetch the next value from a sequence
    -BigInteger nextID = create.nextval(S_AUTHOR_ID);
    -
    -// Fetch the current value from a sequence
    -BigInteger currID = create.currval(S_AUTHOR_ID);]]></java><html>
    -							
    -							<h3>Inlining sequence references in SQL</h3>
    -							<p>
    -								You can inline sequence references in jOOQ SQL statements. The following are examples of how to do that:
    -							</p>
    -							
    -</html><java><![CDATA[// Reference the sequence in a SELECT statement:
    -BigInteger nextID = create.select(s).fetchOne(S_AUTHOR_ID.nextval());
    -
    -// Reference the sequence in an INSERT statement:
    -create.insertInto(AUTHOR, AUTHOR.ID, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .values(S_AUTHOR_ID.nextval(), val("William"), val("Shakespeare"));
    -]]></java><html>
    -
    -							<p>
    -								For more info about inlining sequence references in SQL statements, please refer to the manual's section about <reference id="sequences-and-serials" title="sequences and serials"/>.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="stored-procedures">
    -						<title>Stored procedures and functions</title>
    -						<content><html>
    -							<p>
    -								Many RDBMS support the concept of "routines", usually calling them procedures and/or functions. These concepts have been around in programming languages for a while, also outside of databases. Famous languages distinguishing procedures from functions are:
    -							</p>
    -							<ul>
    -								<li>Ada</li>
    -								<li>BASIC</li>
    -								<li>Pascal</li>
    -								<li>etc...</li>
    -							</ul>
    -							<p>
    -								The general distinction between (stored) procedures and (stored) functions can be summarised like this:
    -							</p>
    -							
    -							<h3>Procedures</h3>
    -							<ul>
    -								<li>Are called using JDBC CallableStatement</li>
    -								<li>Have no return value</li>
    -								<li>Usually support OUT parameters</li>
    -							</ul>
    -							
    -							<h3>Functions</h3>
    -							<ul>
    -								<li>Can be used in SQL statements</li>
    -								<li>Have a return value</li>
    -								<li>Usually don't support OUT parameters</li>
    -							</ul>
    -							
    -							<h3>Exceptions to these rules</h3>
    -							<ul>
    -								<li>DB2, H2, and HSQLDB don't allow for JDBC escape syntax when calling functions. Functions must be used in a SELECT statement</li>
    -								<li>H2 only knows functions (without OUT parameters)</li>
    -								<li>Oracle functions may have OUT parameters</li>
    -								<li>Oracle knows functions that must not be used in SQL statements for transactional reasons</li>
    -								<li>Postgres only knows functions (with all features combined). OUT parameters can also be interpreted as return values, which is quite elegant/surprising, depending on your taste</li>
    -								<li>The Sybase jconn3 JDBC driver doesn't handle null values correctly when using the JDBC escape syntax on functions</li>
    -							</ul>
    -							<p>
    -								In general, it can be said that the field of routines (procedures / functions) is far from being standardised in modern RDBMS even if the SQL:2008 standard specifies things quite well. Every database has its ways and JDBC only provides little abstraction over the great variety of procedures / functions implementations, especially when advanced data types such as cursors / UDT's / arrays are involved.
    -							</p>
    -							<p>
    -								To simplify things a little bit, jOOQ handles both procedures and functions the same way, using a more general <reference class="org.jooq.Routine"/> type.
    -							</p>
    -							
    -							<h3>Using jOOQ for standalone calls to stored procedures and functions</h3>
    -							<p>
    -								If you're using jOOQ's <reference id="code-generation" title="code generator"/>, it will generate <reference class="org.jooq.Routine"/> objects for you. Let's consider the following example:
    -							</p>
    -							
    -</html><sql><![CDATA[-- Check whether there is an author in AUTHOR by that name and get his ID
    -CREATE OR REPLACE PROCEDURE author_exists (author_name VARCHAR2, result OUT NUMBER, id OUT NUMBER);]]></sql><html>
    -
    -							<p>
    -								The generated artefacts can then be used as follows:
    -							</p>
    -							
    -</html><java><![CDATA[// Make an explicit call to the generated procedure object:
    -AuthorExists procedure = new AuthorExists();
    -
    -// All IN and IN OUT parameters generate setters
    -procedure.setAuthorName("Paulo");
    -procedure.execute(configuration);
    -
    -// All OUT and IN OUT parameters generate getters
    -assertEquals(new BigDecimal("1"), procedure.getResult());
    -assertEquals(new BigDecimal("2"), procedure.getId();]]></java><html>							
    -							
    -							<p>
    -								But you can also call the procedure using a generated convenience method in a global Routines class:
    -							</p>
    -
    -</html><java><![CDATA[// The generated Routines class contains static methods for every procedure.
    -// Results are also returned in a generated object, holding getters for every OUT or IN OUT parameter.
    -AuthorExists result = Routines.authorExists("Paulo");
    -
    -// All OUT and IN OUT parameters generate getters
    -assertEquals(new BigDecimal("1"), procedure.getResult());
    -assertEquals(new BigDecimal("2"), procedure.getId();]]></java><html>			
    -
    -							<p>
    -								For more details about <reference id="code-generation" title="code generation"/> for procedures, see the manual's section about <reference id="codegen-procedures" title="procedures and code generation"/>.
    -							</p>				
    -							
    -							<h3>Inlining stored function references in SQL</h3>
    -							<p>
    -								Unlike procedures, functions can be inlined in SQL statements to generate <reference id="column-expressions" title="column expressions"/> or <reference id="table-expressions" title="table expressions"/>, if you're using <reference id="array-and-cursor-unnesting" title="unnesting operators"/>. Assume you have a function like this:
    -							</p>
    -
    -</html><sql><![CDATA[-- Check whether there is an author in AUTHOR by that name and get his ID
    -CREATE OR REPLACE FUNCTION author_exists (author_name VARCHAR2) RETURN NUMBER;]]></sql><html>
    -							
    -							<p>
    -								The generated artefacts can then be used as follows:
    -							</p>
    -							
    -</html><code-pair>
    -<sql><![CDATA[-- This is the rendered SQL
    -
    -SELECT AUTHOR_EXISTS('Paulo') FROM DUAL]]></sql><java><![CDATA[// Use the static-imported method from Routines:
    -boolean exists = 
    -create.select(authorExists("Paulo")).fetchOne(0, boolean.class);]]></java>							
    -</code-pair><html>
    -							
    -							<p>
    -								For more info about inlining stored function references in SQL statements, please refer to the manual's section about <reference id="user-defined-functions" title="user-defined functions"/>.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="oracle-packages">
    -								<title>Oracle Packages</title>
    -								<content><html>
    -									<p>
    -										Oracle uses the concept of a PACKAGE to group several procedures/functions into a sort of namespace. The <a href="http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt" title="SQL 92 standard">SQL 92 standard</a> talks about "modules", to represent this concept, even if this is rarely implemented as such. This is reflected in jOOQ by the use of Java sub-packages in the <reference id="code-generation" title="source code generation"/> destination package. Every Oracle package will be reflected by
    -									</p>
    -									<ul>
    -										<li>A Java package holding classes for formal Java representations of the procedure/function in that package</li>
    -										<li>A Java class holding convenience methods to facilitate calling those procedures/functions</li>
    -									</ul>
    -									<p>
    -										Apart from this, the generated source code looks exactly like the one for standalone procedures/functions.
    -									</p>
    -									<p>
    -										For more details about <reference id="code-generation" title="code generation"/> for procedures and packages see the manual's section about <reference id="codegen-procedures" title="procedures and code generation"/>.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="oracle-member-procedures">
    -								<title>Oracle member procedures</title>
    -								<content><html>
    -									<p>
    -										Oracle UDTs can have object-oriented structures including member functions and procedures. With Oracle, you can do things like this:
    -									</p>
    -									
    -</html><sql><![CDATA[CREATE OR REPLACE TYPE u_author_type AS OBJECT (
    -  id NUMBER(7),
    -  first_name VARCHAR2(50),
    -  last_name VARCHAR2(50),
    -
    -  MEMBER PROCEDURE LOAD,
    -  MEMBER FUNCTION counBOOKs RETURN NUMBER
    -)
    -
    --- The type body is omitted for the example]]></sql><html>
    -
    -									<p>
    -										These member functions and procedures can simply be mapped to Java methods:
    -									</p>
    -
    -</html><java><![CDATA[// Create an empty, attached UDT record from the Factory
    -UAuthorType author = create.newRecord(U_AUTHOR_TYPE);
    -
    -// Set the author ID and load the record using the LOAD procedure
    -author.setId(1);
    -author.load();
    -
    -// The record is now updated with the LOAD implementation's content
    -assertNotNull(author.getFirstName());
    -assertNotNull(author.getLastName());]]></java><html>
    -
    -									<p>
    -										For more details about <reference id="code-generation" title="code generation"/> for UDTs see the manual's section about <reference id="codegen-udts" title="user-defined types and code generation"/>.
    -									</p>								
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -				    <section id="exporting">
    -						<title>Exporting to XML, CSV, JSON, HTML, Text</title>
    -						<content><html>
    -							<p>
    -								If you are using jOOQ for scripting purposes or in a slim, unlayered application server, you might be interested in using jOOQ's exporting functionality (see also the <reference id="importing" title="importing functionality"/>). You can export any Result&lt;Record&gt; into the formats discussed in the subsequent chapters of the manual
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="exporting-xml">
    -								<title>Exporting XML</title>
    -								<content><java>// Fetch books and format them as XML
    -String xml = create.selectFrom(BOOK).fetch().formatXML();</java><html>
    -
    -									<p>
    -										The above query will result in an XML document looking like the following one:
    -									</p>
    -
    -</html><xml><![CDATA[<result xmlns="http://www.jooq.org/xsd/jooq-export-2.6.0.xsd">
    -  <fields>
    -    <field name="ID" type="INTEGER"/>
    -    <field name="AUTHOR_ID" type="INTEGER"/>
    -    <field name="TITLE" type="VARCHAR"/>
    -  </fields>
    -  <records>
    -    <record>
    -      <value field="ID">1</value>
    -      <value field="AUTHOR_ID">1</value>
    -      <value field="TITLE">1984</value>
    -    </record>
    -    <record>
    -      <value field="ID">2</value>
    -      <value field="AUTHOR_ID">1</value>
    -      <value field="TITLE">Animal Farm</value>
    -    </record>
    -  </records>
    -</result>]]></xml><html>
    -
    -									<p>
    -										The same result as an <reference class="org.w3c.dom.Document"/> can be obtained using the Result.intoXML() method:
    -									</p>
    -
    -
    -</html><java>// Fetch books and format them as XML
    -Document xml = create.selectFrom(BOOK).fetch().intoXML();</java><html>
    -
    -									<p>
    -										See the XSD schema definition here, for a formal definition of the XML export format:<br/>
    -										<a href="http://www.jooq.org/xsd/jooq-export-1.6.2.xsd">http://www.jooq.org/xsd/jooq-export-1.6.2.xsd</a>
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="exporting-csv">
    -								<title>Exporting CSV</title>
    -								<content><java>// Fetch books and format them as CSV
    -String csv = create.selectFrom(BOOK).fetch().formatCSV();</java><html>
    -
    -									<p>
    -										The above query will result in a CSV document looking like the following one:
    -									</p>
    -
    -</html><text>ID,AUTHOR_ID,TITLE
    -1,1,1984
    -2,1,Animal Farm</text><html>
    -
    -									<p>
    -										In addition to the standard behaviour, you can also specify a separator character, as well as a special string to represent NULL values (which cannot be represented in standard CSV):
    -									</p>
    -
    -</html><java>// Use ";" as the separator character
    -String csv = create.selectFrom(BOOK).fetch().formatCSV(';');
    -
    -// Specify "{null}" as a representation for NULL values
    -String csv = create.selectFrom(BOOK).fetch().formatCSV(';', "{null}");</java></content>
    -							</section>
    -
    -							<section id="exporting-json">
    -								<title>Exporting JSON</title>
    -								<content><java>// Fetch books and format them as JSON
    -String json = create.selectFrom(BOOK).fetch().formatJSON();</java><html>
    -
    -									<p>
    -										The above query will result in a JSON document looking like the following one:
    -									</p>
    -
    -</html><text>{"fields":[{"name":"field-1","type":"type-1"},
    -           {"name":"field-2","type":"type-2"},
    -           ...,
    -           {"name":"field-n","type":"type-n"}],
    - "records":[[value-1-1,value-1-2,...,value-1-n],
    -            [value-2-1,value-2-2,...,value-2-n]]}</text><html>
    -             
    -             						<p>
    -             							Note: This format has changed in jOOQ 2.6.0
    -             						</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="exporting-html">
    -								<title>Exporting HTML</title>
    -								<content><java>// Fetch books and format them as HTML
    -String html = create.selectFrom(BOOK).fetch().formatHTML();</java><html>
    -
    -									<p>
    -										The above query will result in an HTML document looking like the following one
    -									</p>
    -
    -</html><xml><![CDATA[<table>
    -  <thead>
    -    <tr>
    -      <th>ID</th>
    -      <th>AUTHOR_ID</th>
    -      <th>TITLE</th>
    -    </tr>
    -  </thead>
    -  <tbody>
    -    <tr>
    -      <td>1</td>
    -      <td>1</td>
    -      <td>1984</td>
    -    </tr>
    -    <tr>
    -      <td>2</td>
    -      <td>1</td>
    -      <td>Animal Farm</td>
    -    </tr>
    -  </tbody>
    -</table>]]></xml></content>
    -							</section>
    -
    -							<section id="exporting-text">
    -								<title>Exporting Text</title>
    -								<content><java>// Fetch books and format them as text
    -String text = create.selectFrom(BOOK).fetch().format();</java><html>
    -
    -									<p>
    -										The above query will result in a text document looking like the following one
    -									</p>
    -
    -</html><text>+---+---------+-----------+
    -| ID|AUTHOR_ID|TITLE      |
    -+---+---------+-----------+
    -|  1|        1|1984       |
    -|  2|        1|Animal Farm|
    -+---+---------+-----------+</text><html>
    -
    -									<p>
    -										A simple text representation can also be obtained by calling toString() on a Result object. See also the manual's section about <reference id="logging" title="DEBUG logging"/>
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -				    <section id="importing">
    -						<title>Importing data</title>
    -						<content><html>
    -							<p>
    -								If you are using jOOQ for scripting purposes or in a slim, unlayered application server, you might be interested in using jOOQ's importing functionality (see also exporting functionality). You can import data directly into a table from the formats described in the subsequent sections of this manual.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="importing-csv">
    -								<title>Importing CSV</title>
    -								<content><html>
    -
    -									<p>
    -										The below CSV data represents two author records that may have been exported previously, by jOOQ's <reference id="exporting" title="exporting functionality"/>, and then modified in Microsoft Excel or any other spreadsheet tool:
    -									</p>
    -
    -</html><text>ID;AUTHOR_ID;TITLE
    -1;1;1984
    -2;1;Animal Farm</text><html>
    -
    -									<p>
    -										With jOOQ, you can load this data using various parameters from the	loader API. A simple load may look like this:
    -									</p>
    -
    -</html><java>Factory create = new Factory(connection, dialect);
    -
    -// Load data into the AUTHOR table from an input stream
    -// holding the CSV data.
    -create.loadInto(AUTHOR)
    -      .loadCSV(inputstream)
    -      .fields(ID, AUTHOR_ID, TITLE)
    -      .execute();</java><html>
    -
    -      								<p>
    -      									Here are various other examples:
    -   									</p>
    -
    -</html><java>// Ignore the AUTHOR_ID column from the CSV file when inserting
    -create.loadInto(AUTHOR)
    -      .loadCSV(inputstream)
    -      .fields(ID, null, TITLE)
    -      .execute();
    -
    -// Specify behaviour for duplicate records.
    -create.loadInto(AUTHOR)
    -
    -      // choose any of these methods
    -      .onDuplicateKeyUpdate()
    -      .onDuplicateKeyIgnore()
    -      .onDuplicateKeyError() // the default
    -
    -      .loadCSV(inputstream)
    -      .fields(ID, null, TITLE)
    -      .execute();
    -
    -// Specify behaviour when errors occur.
    -create.loadInto(AUTHOR)
    -
    -      // choose any of these methods
    -      .onErrorIgnore()
    -      .onErrorAbort() // the default
    -
    -      .loadCSV(inputstream)
    -      .fields(ID, null, TITLE)
    -      .execute();
    -
    -// Specify transactional behaviour where this is possible
    -// (e.g. not in container-managed transactions)
    -create.loadInto(AUTHOR)
    -
    -      // choose any of these methods
    -      .commitEach()
    -      .commitAfter(10)
    -      .commitAll()
    -      .commitNone() // the default
    -
    -      .loadCSV(inputstream)
    -      .fields(ID, null, TITLE)
    -      .execute();</java><html>
    -
    -									<p>
    -										Any of the above configuration methods can be combined to achieve the type of load you need. Please refer to the API's Javadoc to learn about more details. Errors that occur during the load are reported by the execute method's result:
    -									</p>
    -
    -</html><java><![CDATA[Loader<Author> loader = /* .. */ .execute();
    -
    -// The number of processed rows
    -int processed = loader.processed();
    -
    -// The number of stored rows (INSERT or UPDATE)
    -int stored = loader.stored();
    -
    -// The number of ignored rows (due to errors, or duplicate rule)
    -int ignored = loader.ignored();
    -
    -// The errors that may have occurred during loading
    -List<LoaderError> errors = loader.errors();
    -LoaderError error = errors.get(0);
    -
    -// The exception that caused the error
    -DataAccessException exception = error.exception();
    -
    -// The row that caused the error
    -int rowIndex = error.rowIndex();
    -String[] row = error.row();
    -
    -// The query that caused the error
    -Query query = error.query();]]></java></content>
    -							</section>
    -
    -							<section id="importing-xml">
    -								<title>Importing XML</title>
    -								<content><html>
    -									<p>This is not yet supported</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -				    <section id="crud-with-updatablerecords">
    -						<title>CRUD with UpdatableRecords</title>
    -						<content><html>
    -							<p>
    -								Your database application probably consists of 50% - 80% CRUD, whereas only the remaining 20% - 50% of querying is actual querying. Most often, you will operate on records of tables without using any advanced relational concepts. This is called CRUD for
    -							</p>
    -							<ul>
    -								<li>Create (<reference id="insert-statement" title="INSERT"/>)</li>
    -								<li>Read (<reference id="select-statement" title="SELECT"/>)</li>
    -								<li>Update (<reference id="update-statement" title="UPDATE"/>)</li>
    -								<li>Delete (<reference id="delete-statement" title="DELETE"/>)</li>
    -							</ul>
    -							<p>								
    -								CRUD always uses the same patterns, regardless of the nature of underlying tables. This again, leads to a lot of boilerplate code, if you have to issue your statements yourself. Like Hibernate / JPA and other ORMs, jOOQ facilitates CRUD using a specific API involving <reference class="org.jooq.UpdatableRecord"/> types.
    -							</p>
    -							
    -							<h3>Primary keys and updatability</h3>
    -							<p>
    -								In normalised databases, every table has a primary key by which a tuple/record within that table can be uniquely identified. In simple cases, this is a (possibly auto-generated) number called ID. But in many cases, primary keys include several non-numeric columns. An important feature of such keys is the fact that in most databases, they are enforced using an index that allows for very fast random access to the table. A typical way to access / modify / delete a book is this:
    -							</p>
    -							
    -</html><sql><![CDATA[-- Inserting uses a previously generated key value or generates it afresh
    -INSERT INTO BOOK (ID, TITLE) VALUES (5, 'Animal Farm');
    -
    --- Other operations can use a previously generated key value
    -SELECT * FROM BOOK WHERE ID = 5;
    -UPDATE BOOK SET TITLE = '1984' WHERE ID = 5;
    -DELETE FROM BOOK WHERE ID = 5;]]></sql><html>
    -							
    -							<p>
    -								Normalised databases assume that a primary key is unique "forever", i.e. that a key, once inserted into a table, will never be changed or re-inserted after deletion. In order to use jOOQ's <reference id="simple-crud" title="CRUD"/> operations correctly, you should design your database accordingly.
    -							</p>
    -							
    -							<h3>Main UNIQUE keys</h3>
    -							<p>
    -								In SQL, a primary key is always also a unique key. In fact, unique keys have very similar properties as primary keys. For instance, they can be referenced from other tables' foreign keys in most databases. In the absence of a formal primary key, jOOQ assumes that the first unique key it encounters will serve as a primary key substitute. This is called the "main key" in jOOQ. In other words, a main key is:
    -							</p>
    -							<ul>
    -								<li>The primary key, if available</li>
    -								<li>The first unique key, otherwise</li>
    -							</ul>
    -							
    -							<p>
    -								For simplicity, the term "primary key" will be used in the sense of such a "main unique key" in this manual.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="simple-crud">
    -								<title>Simple CRUD</title>
    -								<content><html>
    -									<p>
    -										If you're using jOOQ's <reference id="code-generation" title="code generator"/>, it will generate <reference class="org.jooq.UpdatableRecord"/> implementations for every table that has a primary key. When <reference id="fetching" title="fetching"/> such a record form the database, these records are "attached" to the <reference id="factory" title="Factory" /> that created them. This means that they hold an internal reference to the same database connection that was used to fetch them. This connection is used internally by any of the following methods of the UpdatableRecord:
    -									</p>
    -									
    -</html><java><![CDATA[// Refresh a record from the database.
    -void refresh() throws DataAccessException;
    -
    -// Store (insert or update) a record to the database.
    -int store() throws DataAccessException;
    -
    -// Delete a record from the database
    -int delete() throws DataAccessException;]]></java><html>
    -									
    -									<p>
    -										See the manual's section about <reference id="serializability" title="serializability"/> for some more insight on "attached" objects. 
    -									</p>
    -									
    -									<h3>Storing</h3>
    -									<p>
    -										Storing a record will perform an <reference id="insert-statement" title="INSERT statement"/> or an <reference id="update-statement" title="UPDATE statement"/>. In general, new records are always inserted, whereas records loaded from the database are always updated. This is best visualised in code:
    -									</p>
    -
    -</html><java><![CDATA[// Create a new record
    -BookRecord book1 = create.newRecord(BOOK);
    -
    -// Insert the record: INSERT INTO BOOK (TITLE) VALUES ('1984');
    -book1.setTitle("1984");
    -book1.store();
    -
    -// Update the record: UPDATE BOOK SET PUBLISHED_IN = 1984 WHERE ID = [id]
    -book1.setPublishedIn(1948);
    -book1.store();
    -
    -// Get the (possibly) auto-generated ID from the record
    -Integer id = book1.getId();
    -
    -// Get another instance of the same book
    -BookRecord book2 = create.fetchOne(BOOK, BOOK.ID.equal(id));
    -
    -// Update the record: UPDATE BOOK SET TITLE = 'Animal Farm' WHERE ID = [id]
    -book2.setTitle("Animal Farm");
    -book2.store();]]></java><html>
    -									
    -									<p>
    -										Some remarks about storing:
    -									</p>
    -									<ul>
    -										<li>jOOQ sets only modified values in <reference id="insert-statement" title="INSERT statements"/> or <reference id="update-statement" title="UPDATE statements"/>. This allows for default values to be applied to inserted records, as specified in CREATE TABLE DDL statements.</li>
    -										<li>When store() performs an <reference id="insert-statement" title="INSERT statement"/>, jOOQ attempts to load any generated keys from the database back into the record. For more details, see the manual's section about <reference id="identity-values" title="IDENTITY values"/>.</li>
    -										<li>When loading records from <reference id="pojos" title="POJOs"/>, jOOQ will assume the record is a new record. It will hence attempt to INSERT it.</li>
    -										<li>When you activate <reference id="optimistic-locking" title="optimistic locking"/>, storing a record may fail, if the underlying database record has been changed in the mean time.</li>
    -									</ul>
    -																		
    -									<h3>Deleting</h3>
    -									<p>
    -										Deleting a record will remove it from the database. Here's how you delete records:
    -									</p>
    -									
    -</html><java><![CDATA[// Get a previously inserted book
    -BookRecord book = create.fetchOne(BOOK, BOOK.ID.equal(5));
    -
    -// Delete the book
    -book.delete();]]></java><html>
    -									
    -									<h3>Refreshing</h3>
    -									<p>
    -										Refreshing a record from the database means that jOOQ will issue a <reference id="select-statement" title="SELECT statement"/> to refresh all record values that are not the primary key. This is particularly useful when you use jOOQ's <reference id="optimistic-locking" title="optimistic locking"/> feature, in case a modified record is "stale" and cannot be stored to the database, because the underlying database record has changed in the mean time.
    -									</p>
    -									<p>
    -										In order to perform a refresh, use the following Java code:
    -									</p>									
    -
    -</html><java><![CDATA[// Fetch an updatable record from the database
    -BookRecord book = create.fetchOne(BOOK, BOOK.ID.equal(5));
    -
    -// Refresh the record
    -book.refresh();]]></java><html>
    -
    -									<h3>CRUD and SELECT statements</h3>
    -									<p>
    -										CRUD operations can be combined with regular querying, if you select records from single database tables, as explained in the manual's section about <reference id="select-statement" title="SELECT statements"/>. For this, you will need to use the selectFrom() method from the <reference id="factory" title="Factory"/>:
    -									</p>
    -									
    -</html><java><![CDATA[// Loop over records returned from a SELECT statement
    -for (BookRecord book : create.fetch(BOOK, BOOK.PUBLISHED_IN.equal(1948))) {
    -
    -  // Perform actions on BookRecords depending on some conditions
    -  if ("Orwell".equals(book.fetchAuthorByAuthorId().getLastName())) {
    -    book.delete();
    -  }
    -}]]></java></content>
    -							</section>
    -
    -							<section id="identity-values">
    -								<title>IDENTITY values</title>
    -								<content><html>
    -									<p>
    -										Many databases support the concept of IDENTITY values, or <reference id="sequence-execution" title="SEQUENCE-generated"/> key values. This is reflected by JDBC's <reference class="java.sql.Statement" anchor="#getGeneratedKeys()" title="getGeneratedKeys()"/> method. jOOQ abstracts using this method as many databases and JDBC drivers behave differently with respect to generated keys. Let's assume the following SQL Server BOOK table:
    -									</p>
    -									
    -</html><sql><![CDATA[CREATE TABLE book (
    -  ID INTEGER IDENTITY(1,1) NOT NULL,
    -  
    -  -- [...]
    -  
    -  CONSTRAINT pk_book PRIMARY KEY (id)
    -)]]></sql><html>
    -
    -									<p>
    -										If you're using jOOQ's <reference id="code-generation" title="code generator"/>, the above table will generate a <reference class="org.jooq.UpdatableRecord"/> with an IDENTITY column. This information is used by jOOQ internally, to update IDs after calling <reference id="crud-with-updatablerecords" title="store()"/>: 
    -									</p>
    -									
    -</html><java><![CDATA[BookRecord book = create.newRecord(BOOK);
    -book.setTitle("1984");
    -book.store();
    -
    -// The generated ID value is fetched after the above INSERT statement
    -System.out.println(book.getId());]]></java><html>
    -
    -									<h3>Database compatibility</h3>
    -									<p>
    -										<strong>DB2, Derby, HSQLDB, Ingres</strong>
    -									</p>
    -									<p>
    -										These SQL dialects implement the standard very neatly.
    -									</p>
    -</html><sql><![CDATA[id INTEGER GENERATED BY DEFAULT AS IDENTITY
    -id INTEGER GENERATED BY DEFAULT AS IDENTITY (START WITH 1)]]></sql><html>
    -
    -									<p>
    -										<strong>H2, MySQL, Postgres, SQL Server, Sybase ASE, Sybase SQL Anywhere</strong>
    -									</p>
    -									<p>
    -										These SQL dialects implement identites, but the DDL syntax doesn’t follow the standard
    -									</p>
    -</html><sql><![CDATA[-- H2 mimicks MySQL's and SQL Server's syntax
    -ID INTEGER IDENTITY(1,1)
    -ID INTEGER AUTO_INCREMENT
    --- MySQL and SQLite
    -ID INTEGER NOT NULL AUTO_INCREMENT
    -
    --- Postgres serials implicitly create a sequence
    --- Postgres also allows for selecting from custom sequences
    --- That way, sequences can be shared among tables
    -id SERIAL NOT NULL
    -
    --- SQL Server
    -ID INTEGER IDENTITY(1,1) NOT NULL
    --- Sybase ASE
    -id INTEGER IDENTITY NOT NULL
    --- Sybase SQL Anywhere
    -id INTEGER NOT NULL IDENTITY]]></sql><html>
    -
    -									<p>
    -										<strong>Oracle</strong>
    -									</p>
    -									<p>
    -										Oracle does not know any identity columns at all. Instead, you will have to use a trigger and update the ID column yourself, using a custom sequence. Something along these lines:
    -									</p>
    -</html><sql><![CDATA[CREATE OR REPLACE TRIGGER my_trigger
    -BEFORE INSERT
    -ON my_table
    -REFERENCING NEW AS new
    -FOR EACH ROW
    -BEGIN
    -  SELECT my_sequence.nextval
    -  INTO :new.id
    -  FROM dual;
    -END my_trigger;]]></sql><html>
    -
    -									<p>
    -										Note, that this approach can be employed in most databases supporting sequences and triggers! It is a lot more flexible than standard identities
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="navigation-methods">
    -								<title>Navigation methods</title>
    -								<content><html>
    -									<p>
    -										When using jOOQ's <reference id="code-generation" title="code generator"/> along with its <reference id="codegen-records" title="record generation capabilities"/>, generated records can have navigation methods contained in them, if properly <reference id="codegen-advanced" title="configured"/>. These navigation methods allow for "navigating" inbound or outbound foreign key references by executing an appropriate query. An example is given here: 
    -									</p>
    -				
    -</html><code-pair>
    -<sql><![CDATA[CREATE TABLE book (
    -  AUTHOR_ID NUMBER(7) NOT NULL,
    -  
    -  -- [...]
    -  
    -  FOREIGN KEY (AUTHOR_ID) REFERENCES author(ID)
    -)]]></sql><java><![CDATA[BookRecord book = create.fetch(BOOK, BOOK.ID.equal(5));
    -
    -// Find the author of a book
    -AuthorRecord author = book.fetchAuthor();
    -
    -// Find other books by that author
    -List<BookRecord> books = author.fetchBookList();]]></java>
    -</code-pair><html>					
    -
    -									<p>
    -										These methods are safe for use with several foreign keys referencing the same tables:
    -									</p>
    -				
    -</html><code-pair>
    -<sql><![CDATA[CREATE TABLE book (
    -  AUTHOR_ID NUMBER(7) NOT NULL,
    -  CO_AUTHOR_ID NUMBER(7) NOT NULL,
    -  
    -  -- [...]
    -  
    -  FOREIGN KEY (AUTHOR_ID) REFERENCES author(ID),
    -  FOREIGN KEY (CO_AUTHOR_ID) REFERENCES author(ID)
    -)]]></sql><java><![CDATA[BookRecord book = create.fetch(BOOK, BOOK.ID.equal(5));
    -
    -// Find the author of a book
    -AuthorRecord author   = book.fetchAuthorByAuthorId();
    -AuthorRecord coAuthor = book.fetchAuthorByCoAuthorId();
    -
    -// Find other books by those authors
    -List<BookRecord> books = author.fetchBookListByAuthorId();
    -List<BookRecord> books = coAuthor.fetchBookListByCoAuthorId();]]></java>
    -</code-pair><html>					
    -
    -									<p>
    -										Note that, unlike in Hibernate, jOOQ's generated navigation methods will always lazy-fetch relevant records, without caching any results. In other words, every time you run such a fetch method, a new query will be issued.
    -									</p>
    -									<p>
    -										These fetch methods only work on "attached" records. See the manual's section about <reference id="serializability" title="serializability"/> for some more insight on "attached" objects.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="non-updatable-records">
    -								<title>Non-updatable records</title>
    -								<content><html>
    -									<p>
    -										Tables without UNIQUE keys are considered non-updatable by jOOQ, as jOOQ has no way of uniquely identifying such a record within the database. If you're using jOOQ's <reference id="code-generation" title="code generator"/>, such tables will generate <reference class="org.jooq.TableRecord"/> classes, instead of <reference class="org.jooq.UpdatableRecord"/> classes. When you fetch <reference id="record-vs-tablerecord" title="typed records"/> from such a table, the returned records will not allow for calling any of the <reference id="crud-with-updatablerecords" title="store(), refresh(), delete()"/> methods. 
    -									</p>
    -									
    -									<p>
    -										Note, that some databases use internal rowid or object-id values to identify such records. jOOQ does not support these vendor-specific record meta-data.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="optimistic-locking">
    -								<title>Optimistic locking</title>
    -								<content><html>
    -									<p>
    -										jOOQ allows you to perform <reference id="crud-with-updatablerecords" title="CRUD"/> operations using optimistic locking. You can immediately take advantage of this feature by activating the relevant <reference id="custom-settings" title="executeWithOptimisticLocking Setting"/>. Without any further knowledge of the underlying data semantics, this will have the following impact on store() and delete() methods:
    -									</p>
    -									<ul>
    -										<li>INSERT statements are not affected by this Setting flag</li>
    -										<li>Prior to UPDATE or DELETE statements, jOOQ will run a <reference id="for-update-clause" title="SELECT .. FOR UPDATE"/> statement, pessimistically locking the record for the subsequent UPDATE / DELETE</li>
    -										<li>The data fetched with the previous SELECT will be compared against the data in the record being stored or deleted</li>
    -										<li>An <reference class="org.jooq.exception.DataChangedException"/> is thrown if the record had been modified in the mean time</li>
    -										<li>The record is successfully stored / deleted, if the record had not been modified in the mean time.</li>
    -									</ul>
    -									<p>
    -										The above changes to jOOQ's behaviour are transparent to the API, the only thing you need to do for it to be activated is to set the Settings flag. Here is an example illustrating optimistic locking:
    -									</p>
    -
    -</html><java><![CDATA[// Properly configure the Factory
    -Factory optimistic = new Factory(connection, SQLDialect.ORACLE, 
    -  new Settings().withExecuteWithOptimisticLocking(true));
    -  
    -// Fetch a book two times
    -BookRecord book1 = optimistic.fetch(BOOK, BOOK.ID.equal(5));
    -BookRecord book2 = optimistic.fetch(BOOK, BOOK.ID.equal(5));
    -
    -// Change the title and store this book. The underlying database record has not been modified, it can be safely updated.
    -book1.setTitle("Animal Farm");
    -book1.store();
    -
    -// Book2 still references the original TITLE value, but the database holds a new value from book1.store(). 
    -// This store() will thus fail:
    -book2.setTitle("1984");
    -book2.store();]]></java><html>								
    -	
    -									<h3>Optimised optimistic locking using TIMESTAMP fields</h3>
    -									<p>
    -										If you're using jOOQ's <reference id="code-generation" title="code generator"/>, you can take indicate TIMESTAMP or UPDATE COUNTER fields for every generated table in the <reference id="codegen-advanced" title="code generation configuration"/>. Let's say we have this table:
    -									</p>
    -
    -</html><sql><![CDATA[CREATE TABLE book (
    -  
    -  -- This column indicates when each book record was modified for the last time
    -  MODIFIED TIMESTAMP NOT NULL,
    -  -- [...]
    -)]]></sql><html>									
    -
    -									<p>
    -										The MODIFIED column will contain a timestamp indicating the last modification timestamp for any book in the BOOK table. If you're using jOOQ and it's <reference id="crud-with-updatablerecords" title="store() methods on UpdatableRecords"/>, jOOQ will then generate this TIMESTAMP value for you, automatically. However, instead of running an additional <reference id="for-update-clause" title="SELECT .. FOR UPDATE"/> statement prior to an UPDATE or DELETE statement, jOOQ adds a WHERE-clause to the UPDATE or DELETE statement, checking for TIMESTAMP's integrity. This can be best illustrated with an example:   
    -									</p>
    -									
    -</html><java><![CDATA[// Properly configure the Factory
    -Factory optimistic = new Factory(connection, SQLDialect.ORACLE, 
    -  new Settings().withExecuteWithOptimisticLocking(true));
    -  
    -// Fetch a book two times
    -BookRecord book1 = optimistic.fetch(BOOK, BOOK.ID.equal(5));
    -BookRecord book2 = optimistic.fetch(BOOK, BOOK.ID.equal(5));
    -
    -// Change the title and store this book. The MODIFIED value has not been changed since the book was fetched. 
    -// It can be safely updated
    -book1.setTitle("Animal Farm");
    -book1.store();
    -
    -// Book2 still references the original MODIFIED value, but the database holds a new value from book1.store(). 
    -// This store() will thus fail:
    -book2.setTitle("1984");
    -book2.store();]]></java><html>
    -
    -									<p>
    -										As before, without the added TIMESTAMP column, optimistic locking is transparent to the API.
    -									</p>
    -									
    -									<h3>Optimised optimistic locking using VERSION fields</h3>
    -									<p>
    -										Instead of using TIMESTAMPs, you may also use numeric VERSION fields, containing version numbers that are incremented by jOOQ upon store() calls.
    -									</p>
    -
    -									<p>
    -										Note, for explicit pessimistic locking, please consider the manual's section about the <reference id="for-update-clause" title="FOR UPDATE clause"/>. For more details about how to configure TIMESTAMP or VERSION fields, consider the manual's section about <reference id="codegen-advanced" title="advanced code generator configuration"/>.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="batch-execution-for-crud">
    -								<title>Batch execution</title>
    -								<content><html>
    -									<p>
    -										When inserting, updating, deleting a lot of records, you may wish to profit from JDBC batch operations, which can be performed by jOOQ. These are available through jOOQ's <reference id="factory" title="Factory"/> as shown in the following example:
    -									</p>
    -									
    -</html><java><![CDATA[// Fetch a bunch of books
    -List<BookRecord> books = create.fetch(BOOK);
    -
    -// Modify the above books, and add some new ones:
    -modify(books);
    -addMore(books);
    -
    -// Batch-update and/or insert all of the above books
    -create.batchStore(books);]]></java><html>					
    -
    -									<p>
    -										Internally, jOOQ will render all the required SQL statements and execute them as a regular <reference id="batch-execution" title="JDBC batch execution"/>. 
    -									</p>				
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -				    <section id="daos">
    -						<title>DAOs</title>
    -						<content><html>
    -							<p>
    -								If you're using jOOQ's <reference id="code-generation" title="code generator"/>, you can configure it to generate <reference id="pojos" title="POJOs" /> and DAOs for you. jOOQ then generates one DAO per <reference id="crud-with-updatablerecords" title="UpdatableRecord"/>, i.e. per table with a single-column primary key. Generated DAOs implement a common jOOQ type called <reference class="org.jooq.DAO"/>. This type contains the following methods:
    -							</p>
    -							
    -</html><java><![CDATA[// <R> corresponds to the DAO's related table
    -// <P> corresponds to the DAO's related generated POJO type
    -// <T> corresponds to the DAO's related table's primary key type. 
    -// Note that multi-column primary keys are not yet supported by DAOs
    -public interface DAO<R extends TableRecord<R>, P, T> {
    -
    -    // These methods allow for inserting POJOs
    -    void insert(P object) throws DataAccessException;
    -    void insert(P... objects) throws DataAccessException;
    -    void insert(Collection<P> objects) throws DataAccessException;
    -    
    -    // These methods allow for updating POJOs based on their primary key
    -    void update(P object) throws DataAccessException;
    -    void update(P... objects) throws DataAccessException;
    -    void update(Collection<P> objects) throws DataAccessException;
    -    
    -    // These methods allow for deleting POJOs based on their primary key
    -    void delete(P... objects) throws DataAccessException;
    -    void delete(Collection<P> objects) throws DataAccessException;
    -    void deleteById(T... ids) throws DataAccessException;
    -    void deleteById(Collection<T> ids) throws DataAccessException;
    -    
    -    // These methods allow for checking record existence
    -    boolean exists(P object) throws DataAccessException;
    -    boolean existsById(T id) throws DataAccessException;
    -    long count() throws DataAccessException;
    -    
    -    // These methods allow for retrieving POJOs by primary key or by some other field
    -    List<P> findAll() throws DataAccessException;
    -    P findById(T id) throws DataAccessException;
    -    <Z> List<P> fetch(Field<Z> field, Z... values) throws DataAccessException;
    -    <Z> P fetchOne(Field<Z> field, Z value) throws DataAccessException;
    -
    -    // These methods provide DAO meta-information
    -    Table<R> getTable();
    -    Class<P> getType();
    -}]]></java><html>
    -
    -							<p>
    -								Besides these base methods, generated DAO classes implement various useful fetch methods. An incomplete example is given here, for the BOOK table:
    -							</p>
    -
    -</html><java><![CDATA[// An example generated BookDao class
    -public class BookDao extends DAOImpl<BookRecord, Book, Integer> {
    -
    -    // Columns with primary / unique keys produce fetchOne() methods    
    -    public Book fetchOneById(Integer value) { ... }
    -
    -    // Other columns produce fetch() methods, returning several records
    -    public List<Book> fetchByAuthorId(Integer... values) { ... }
    -    public List<Book> fetchByTitle(String... values) { ... }
    -}]]></java><html>
    -							<p>
    -								Note that you can further subtype those pre-generated DAO classes, to add more useful DAO methods to them. Using such a DAO is simple:
    -							</p>
    -							
    -</html><java><![CDATA[// Initialise a Factory
    -Factory create = new Factory(connection, SQLDialect.ORACLE);
    -
    -// Initialise the DAO with the Factory
    -BookDao bookDao = new BookDao(create);
    -
    -// Start using the DAO
    -Book book = bookDao.findById(5);
    -
    -// Modify and update the POJO
    -book.setTitle("1984");
    -book.setPublishedIn(1948);
    -bookDao.update(book);
    -
    -// Delete it again
    -bookDao.delete(book);]]></java></content>
    -					</section>
    -
    -				    <section id="exception-handling">
    -						<title>Exception handling</title>
    -						<content><html>
    -							<h3>Checked vs. unchecked exceptions</h3>
    -							<p>
    -								This is an eternal and religious debate. Pros and cons have been discussed time and again, and it still is a matter of taste, today. In this case, jOOQ clearly takes a side. jOOQ's exception strategy is simple:
    -							</p>
    -							<ul>
    -								<li>All "system exceptions" are unchecked. If in the middle of a transaction involving business logic, there is no way that you can recover sensibly from a lost database connection, or a constraint violation that indicates a bug in your understanding of your database model.</li>
    -								<li>All "business exceptions" are checked. Business exceptions are true exceptions that you should handle (e.g. not enough funds to complete a transaction).</li>
    -							</ul>
    -							<p>
    -								With jOOQ, it's simple. All of jOOQ's exceptions are "system exceptions", hence they are all unchecked.
    -							</p>
    -							
    -							<h3>jOOQ's DataAccessException</h3>
    -							<p>
    -								jOOQ uses its own <reference class="org.jooq.exception.DataAccessException"/> to wrap any underlying <reference class="java.sql.SQLException"/> that might have occurred. Note that all methods in jOOQ that may cause such a DataAccessException document this both in the Javadoc as well as in their method signature.
    -							</p>
    -							<p>
    -								DataAccessException is subtyped several times as follows:
    -							</p>
    -							<ul>
    -								<li><strong>DataAccessException</strong>: General exception usually originating from a <reference class="java.sql.SQLException"/></li>
    -								<li><strong>DataChangedException</strong>: An exception indicating that the database's underlying record has been changed in the mean time (see <reference id="optimistic-locking" title="optimistic locking"/>)</li>
    -								<li><strong>DataTypeException</strong>: Something went wrong during type conversion</li>
    -								<li><strong>DetachedException</strong>: A SQL statement was executed on a "detached" <reference id="crud-with-updatablerecords" title="UpdatableRecord"/> or a "detached" <reference id="sql-statements" title="SQL statement"/>.</li>
    -								<li><strong>InvalidResultException</strong>: An operation was performed expecting only one result, but several results were returned.</li>
    -								<li><strong>MappingException</strong>: Something went wrong when loading a record from a <reference id="pojos" title="POJO"/> or when mapping a record into a POJO</li>
    -							</ul>
    -							
    -							<h3>Override jOOQ's exception handling</h3>
    -							<p>
    -								The following section about <reference id="execute-listeners" title="execute listeners"/> documents means of overriding jOOQ's exception handling, if you wish to deal separately with some types of constraint violations, or if you raise business errors from your database, etc.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="execute-listeners">
    -						<title>ExecuteListeners</title>
    -						<content><html>
    -							<p>
    -								The <reference id="custom-settings" title="jOOQ Factory Settings"/> let you specify a list of <reference class="org.jooq.ExecuteListener"/> classes. The ExecuteListener is essentially an event listener for Query, Routine, or ResultSet render, prepare, bind, execute, fetch steps. It is a base type for loggers, debuggers, profilers, data collectors, triggers, etc. Advanced ExecuteListeners can also provide custom implementations of Connection, PreparedStatement and ResultSet to jOOQ in apropriate methods.
    -							</p>
    -							<p>
    -								For convenience and better backwards-compatibility, consider extending <reference class="org.jooq.impl.DefaultExecuteListener"/> instead of implementing this interface.
    -							</p>
    -							<p>
    -								Here is a sample implementation of an ExecuteListener, that is simply counting the number of queries per type that are being executed using jOOQ:
    -							</p>
    -
    -</html><java><![CDATA[package com.example;
    -
    -// Extending DefaultExecuteListener, which provides empty implementations for all methods...
    -public class StatisticsListener extends DefaultExecuteListener {
    -    public static Map<ExecuteType, Integer> STATISTICS = new HashMap<ExecuteType, Integer>();
    -
    -    // Count "start" events for every type of query executed by jOOQ
    -    @Override
    -    public void start(ExecuteContext ctx) {
    -        synchronized (STATISTICS) {
    -            Integer count = STATISTICS.get(ctx.type());
    -    
    -            if (count == null) {
    -                count = 0;
    -            }
    -    
    -            STATISTICS.put(ctx.type(), count + 1);
    -        }
    -    }
    -}]]></java><html>
    -
    -							<p>
    -								Now, configure jOOQ's runtime to load your listener
    -							</p>
    -
    -</html><xml><![CDATA[<settings>
    -  <executeListeners>
    -    <executeListener>com.example.StatisticsListener</executeListener>
    -  </executeListeners>
    -</settings>]]></xml><html>
    -
    -							<p>
    -								And log results any time with a snippet like this:
    -							</p>
    -
    -</html><java><![CDATA[log.info("STATISTICS");
    -log.info("----------");
    -
    -for (ExecuteType type : ExecuteType.values()) {
    -    log.info(type.name(), StatisticsListener.STATISTICS.get(type) + " executions");
    -}]]></java><html>
    -                            <p>
    -                            	This may result in the following log output:
    -                            </p>
    -
    -</html><config>15:16:52,982  INFO - TEST STATISTICS
    -15:16:52,982  INFO - ---------------
    -15:16:52,983  INFO - READ                     : 919 executions
    -15:16:52,983  INFO - WRITE                    : 117 executions
    -15:16:52,983  INFO - DDL                      : 2 executions
    -15:16:52,983  INFO - BATCH                    : 4 executions
    -15:16:52,983  INFO - ROUTINE                  : 21 executions
    -15:16:52,983  INFO - OTHER                    : 30 executions</config><html>
    -
    -							<p>
    -								Please read the <reference class="org.jooq.ExecuteListener" title="ExecuteListener Javadoc"/> for more details
    -							</p>
    -							
    -							<h3>Writing a custom ExecuteListener for logging</h3>
    -							<p>
    -								The following depicts an example of a custom ExecuteListener, which pretty-prints all queries being executed by jOOQ to stdout:
    -							</p>
    -
    -</html><java><![CDATA[import org.jooq.ExecuteContext;
    -import org.jooq.conf.Settings;
    -import org.jooq.impl.DefaultExecuteListener;
    -import org.jooq.impl.Factory;
    -import org.jooq.tools.StringUtils;
    -
    -public class PrettyPrinter extends DefaultExecuteListener {
    -
    -    /**
    -     * Hook into the query execution lifecycle before executing queries
    -     */
    -    @Override
    -    public void executeStart(ExecuteContext ctx) {
    -
    -        // Create a new factory for logging rendering purposes
    -        // This factory doesn't need a connection, only the SQLDialect...
    -        Factory factory = new Factory(ctx.getDialect(), 
    -        
    -        // ... and the flag for pretty-printing
    -        	new Settings().withRenderFormatted(true));
    -
    -        // If we're executing a query
    -        if (ctx.query() != null) {
    -            System.out.println(factory.renderInlined(ctx.query()));
    -        }
    -        
    -        // If we're executing a routine
    -        else if (ctx.routine() != null) {
    -            System.out.println(factory.renderInlined(ctx.routine()));
    -        }
    -        
    -        // If we're executing anything else (e.g. plain SQL)
    -        else if (!StringUtils.isBlank(ctx.sql())) {
    -            System.out.println(ctx.sql());
    -        }
    -    }
    -}]]></java><html>
    -							<p>
    -								See also the manual's sections about <reference id="logging" title="logging"/> and the <reference id="jooq-console" title="jOOQ Console"/> for more sample implementations of actual ExecuteListeners.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="logging">
    -						<title>Logging</title>
    -						<content><html>
    -							<p>
    -								jOOQ logs all SQL queries and fetched result sets to its internal DEBUG logger, which is implemented as an <reference id="execute-listeners" title="execute listener"/>. By default, execute logging is activated in the <reference id="custom-settings" title="jOOQ Factory Settings"/>. In order to see any DEBUG log output, put either log4j or slf4j on jOOQ's classpath along with their respective configuration. A sample log4j configuration can be seen here:
    -							</p>
    -							
    -</html><xml><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
    -<log4j:configuration>
    -    <appender name="stdout" class="org.apache.log4j.ConsoleAppender">
    -        <layout class="org.apache.log4j.PatternLayout">
    -            <param name="ConversionPattern" value="%m%n" />
    -        </layout>
    -    </appender>
    -
    -    <root>
    -        <priority value="debug" />
    -        <appender-ref ref="stdout" />
    -    </root>
    -</log4j:configuration>]]></xml><html>
    -
    -							<p>
    -								With the above configuration, let's fetch some data with jOOQ
    -							</p>
    -							
    -</html><java><![CDATA[// Using H2, this time
    -create.select(BOOK.ID, BOOK.TITLE).from(BOOK).orderBy(BOOK.ID).limit(1, 2).fetch();]]></java><html>
    -
    -							<p>
    -								The above query may result in the following log output:
    -							</p>
    -
    -</html><text><![CDATA[Executing query          : select "BOOK"."ID", "BOOK"."TITLE" from "BOOK" order by "BOOK"."ID" asc, limit ? offset ?
    --> with bind values      : select "BOOK"."ID", "BOOK"."TITLE" from "BOOK" order by "BOOK"."ID" asc, limit 2 offset 1
    -Query executed           : Total: 1.439ms
    -Fetched result           : +----+------------+
    -                         : |  ID|TITLE       |
    -                         : +----+------------+
    -                         : |   2|Animal Farm |
    -                         : |   3|O Alquimista|
    -                         : +----+------------+
    -Finishing                : Total: 4.814ms, +3.375ms
    -]]></text><html>
    -
    -							<p>
    -								Essentially, jOOQ will log
    -							</p>
    -							<ul>
    -								<li>The SQL statement as rendered to the prepared statement</li>
    -								<li>The SQL statement with inlined bind values (for improved debugging)</li>
    -								<li>The query execution time</li>
    -								<li>The first 5 records of the result. This is formatted using <reference id="exporting-text" title="jOOQ's text export"/></li>
    -								<li>The total execution + fetching time</li>
    -							</ul>
    -
    -							<p>
    -								If you wish to use your own logger (e.g. avoiding printing out sensitive data), you can deactivate jOOQ's logger using <reference id="custom-settings" title="your custom settings"/> and implement your own <reference id="execute-listeners" title="execute listener logger"/>.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="performance-considerations">
    -						<title>Performance considerations</title>
    -						<content><html>
    -							<p>
    -								Many users may have switched from higher-level abstractions such as Hibernate to jOOQ, because of Hibernate's hard-to-manage performance, when it comes to large database schemas and complex second-level caching strategies. jOOQ is not a lightweight database abstraction framework, and it comes with its own overhead. Please be sure to consider the following points:
    -							</p>
    -							<ul>
    -								<li>It takes some time to construct jOOQ queries. If you can reuse the same queries, you might cache them. Beware of thread-safety issues, though, as jOOQ's <reference id="factory" title="Factory"/> is not threadsafe, and queries are "attached" to their creating Factory</li>
    -								<li>It takes some time to render SQL strings. Internally, jOOQ reuses the same <reference class="java.lang.StringBuilder"/> for the complete query, but some rendering elements may take their time. You could, of course, cache SQL generated by jOOQ and prepare your own <reference class="java.sql.PreparedStatement"/> objects</li>
    -								<li>It takes some time to bind values to prepared statements. jOOQ does not keep any open prepared statements, internally. Use a sophisticated connection pool, that will cache prepared statements and inject them into jOOQ through the standard JDBC API</li>
    -								<li>It takes some time to fetch results. By default, jOOQ will always fetch the complete <reference class="java.sql.ResultSet"/> into memory. Use <reference id="lazy-fetching" title="lazy fetching"/> to prevent that, and scroll over an open underlying database cursor</li>
    -							</ul>
    -							
    -							<h3>Optimise wisely</h3>
    -							<p>
    -								Don't be put off by the above paragraphs. You should optimise wisely, i.e. only in places where you really need very high throughput to your database. jOOQ's overhead compared to plain JDBC is typically less than 1ms per query.
    -							</p>
    -						</html></content>
    -					</section>
    -				</sections>
    -			</section>
    -
    -			<section id="code-generation">
    -				<title>Code generation</title>
    -				<content><html>
    -					<p>
    -						While optional, source code generation is one of jOOQ's main assets if you wish to increase developer productivity. jOOQ's code generator takes your database schema and reverse-engineers it into a set of Java classes modelling <reference id="table-expressions" title="tables"/>, <reference id="record-vs-tablerecord" title="records"/>, <reference id="sequence-execution" title="sequences"/>, <reference id="pojos" title="POJOs"/>, <reference id="daos" title="DAOs"/>, <reference id="stored-procedures" title="stored procedures"/>, user-defined types and many more.
    -					</p>
    -					<p>
    -						The essential ideas behind source code generation are these:
    -					</p>
    -					<ul>
    -						<li><strong>Increased IDE support</strong>: Type your Java code directly against your database schema, with all type information available</li>
    -						<li><strong>Type-safety</strong>: When your database schema changes, your generated code will change as well. Removing columns will lead to compilation errors, which you can detect early.</li>
    -					</ul>
    -					<p>
    -						The following chapters will show how to configure the code generator and how to generate various artefacts.
    -					</p>
    -				</html></content>
    -
    -				<sections>
    -				    <section id="codegen-configuration">
    -						<title>Configuration and setup of the generator</title>
    -						<content><html>
    -							<p>
    -								There are three binaries available with jOOQ, to be downloaded from <a href="https://sourceforge.net/projects/jooq/">SourceForge</a> or from Maven central:
    -							</p>
    -							<ul>
    -								<li>
    -									<strong>jooq-{jooq-version}.jar</strong>
    -									<br />
    -									The main library that you will include in your application to run jOOQ
    -								</li>
    -								<li>
    -									<strong>jooq-meta-{jooq-version}.jar</strong>
    -									<br />
    -									The utility that you will include in your build to navigate your database schema for code generation. This can be used as a schema crawler as well.
    -								</li>
    -								<li>
    -									<strong>jooq-codegen-{jooq-version}.jar</strong>
    -									<br />
    -									The utility that you will include in your build to generate your database schema
    -								</li>
    -							</ul>
    -
    -							<h3>Configure jOOQ's code generator</h3>
    -							<p>
    -								You need to tell jOOQ some things about your database connection. Here's an example of how to do it for an Oracle database
    -							</p>
    -							
    -</html><xml><![CDATA[<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    -<configuration>
    -  <!-- Configure the database connection here -->
    -  <jdbc>
    -    <driver>oracle.jdbc.OracleDriver</driver>
    -    <url>jdbc:oracle:thin:@[your jdbc connection parameters]</url>
    -    <user>[your database user]</user>
    -    <password>[your database password]</password>
    -    
    -    <!-- You can also pass user/password and other JDBC properties in the optional properties tag: -->
    -    <properties>
    -      <property><key>user</key><value>[db-user]</value></property>
    -      <property><key>password</key><value>[db-password]</value></property>
    -    </properties>
    -  </jdbc>
    -
    -  <generator>
    -    <database>
    -      <!-- The database dialect from jooq-meta. Available dialects are
    -           named org.util.[database].[database]Database. Known values are:
    -
    -           org.jooq.util.ase.ASEDatabase (to be used with Sybase ASE)
    -           org.jooq.util.cubrid.CUBRIDDatabase
    -           org.jooq.util.db2.DB2Database
    -           org.jooq.util.derby.DerbyDatabase
    -           org.jooq.util.h2.H2Database
    -           org.jooq.util.hsqldb.HSQLDBDatabase
    -           org.jooq.util.ingres.IngresDatabase
    -           org.jooq.util.mysql.MySQLDatabase
    -           org.jooq.util.oracle.OracleDatabase
    -           org.jooq.util.postgres.PostgresDatabase
    -           org.jooq.util.sqlite.SQLiteDatabase
    -           org.jooq.util.sqlserver.SQLServerDatabase
    -           org.jooq.util.sybase.SybaseDatabase (to be used with Sybase SQL Anywhere)
    -
    -           You can also provide your own org.jooq.util.Database implementation
    -           here, if your database is currently not supported or if you wish to
    -           read the database schema from a file, such as a Hibernate .hbm.xml file -->
    -      <name>org.jooq.util.oracle.OracleDatabase</name>
    -
    -      <!-- All elements that are generated from your schema (several Java
    -           regular expressions, separated by comma) Watch out for
    -           case-sensitivity. Depending on your database, this might be
    -           important! You can create case-insensitive regular expressions
    -           using this syntax: (?i:expr)A comma-separated list of regular
    -           expressions -->
    -      <includes>.*</includes>
    -
    -      <!-- All elements that are excluded from your schema (several Java
    -           regular expressions, separated by comma). Excludes match before
    -           includes -->
    -      <excludes></excludes>
    -
    -      <!-- The schema that is used locally as a source for meta information.
    -           This could be your development schema or the production schema, etc
    -           This cannot be combined with the schemata element.
    -
    -           If left empty, jOOQ will generate all available schemata. See the
    -           manual's next section to learn how to generate several schemata -->
    -      <inputSchema>[your database schema / owner / name]</inputSchema>
    -    </database>
    -
    -    <generate>
    -      <!-- Generation flags: See advanced configuration properties -->
    -    </generate>
    -
    -    <target>
    -      <!-- The destination package of your generated classes (within the
    -           destination directory) -->
    -      <packageName>[org.jooq.your.packagename]</packageName>
    -
    -      <!-- The destination directory of your generated classes -->
    -      <directory>[/path/to/your/dir]</directory>
    -    </target>
    -  </generator>
    -</configuration>]]></xml><html>
    -
    -							<p>
    -								There are also lots of advanced configuration parameters, which will be treated in the <reference id="codegen-advanced" title="manual's section about advanced code generation features"/> Note, you can find the official XSD file for a formal specification at:<br/>
    -							    <a href="http://www.jooq.org/xsd/jooq-codegen-2.5.0.xsd" title="The jOOQ-codegen configuration XSD">http://www.jooq.org/xsd/jooq-codegen-2.5.0.xsd</a>
    -						    </p>
    -
    -							<h3>Run jOOQ code generation</h3>
    -							<p>
    -								Code generation works by calling this class with the above property file as argument.
    -							</p>
    -							
    -</html><config>org.jooq.util.GenerationTool /jooq-config.xml</config><html>
    -
    -							<p>
    -								Be sure that these elements are located on the classpath:
    -							</p>
    -							
    -							<ul>
    -								<li>The XML configuration file</li>
    -								<li>jooq-{jooq-version}.jar, jooq-meta-{jooq-version}.jar, jooq-codegen-{jooq-version}.jar</li>
    -								<li>The JDBC driver you configured</li>
    -							</ul>
    -
    -							<h3>A command-line example (For Windows, unix/linux/etc will be similar)</h3>
    -							<ul>
    -								<li>Put the property file, jooq*.jar and the JDBC driver into a directory, e.g. C:\temp\jooq</li>
    -							    <li>Go to C:\temp\jooq</li>
    -							    <li>Run java -cp jooq-{jooq-version}.jar;jooq-meta-{jooq-version}.jar;jooq-codegen-{jooq-version}.jar;[JDBC-driver].jar;. org.jooq.util.GenerationTool /[XML file] </li>
    -							</ul>
    -							<p>
    -								Note that the property file must be passed as a classpath resource
    -							</p>
    -
    -							<h3>Run code generation from Eclipse</h3>
    -							<p>
    -								Of course, you can also run code generation from your IDE. In Eclipse, set up a project like this. Note that this example uses jOOQ's log4j support by adding log4j.xml and log4j.jar to the project classpath:
    -							</p>
    -							<div class="screenshot">
    -							<img class="screenshot" src="&lt;?=$root?&gt;/img/eclipse-example-01.png" alt="Eclipse configuration"/>
    -							</div>
    -
    -							<p>
    -								Once the project is set up correctly with all required artefacts on the classpath, you can configure an Eclipse Run Configuration for org.jooq.util.GenerationTool.
    -							</p>
    -							<div class="screenshot">
    -							<img class="screenshot" src="&lt;?=$root?&gt;/img/eclipse-example-02.png" alt="Eclipse configuration"/>
    -							</div>
    -
    -							<p>
    -								With the XML file as an argument
    -							</p>
    -							<div class="screenshot">
    -							<img class="screenshot" src="&lt;?=$root?&gt;/img/eclipse-example-03.png" alt="Eclipse configuration"/>
    -							</div>
    -
    -							<p>
    -								And the classpath set up correctly
    -							</p>
    -							<div class="screenshot">
    -							<img class="screenshot" src="&lt;?=$root?&gt;/img/eclipse-example-04.png" alt="Eclipse configuration"/>
    -							</div>
    -
    -							<p>
    -								Finally, run the code generation and see your generated artefacts
    -							</p>
    -							<div class="screenshot">
    -							<img class="screenshot" src="&lt;?=$root?&gt;/img/eclipse-example-05.png" alt="Eclipse configuration"/>
    -							</div>
    -
    -							<h3>Run generation with ant</h3>
    -							<p>
    -								You can also use an ant task to generate your classes. As a rule of thumb, remove the dots "." and dashes "-" from the .properties file's property names to get the ant task's arguments:
    -							</p>
    -							
    -</html><xml><![CDATA[<!-- Task definition -->
    -<taskdef name="generate-classes" classname="org.jooq.util.GenerationTask">
    -  <classpath>
    -    <fileset dir="${path.to.jooq.distribution}">
    -      <include name="jooq-{jooq-version}.jar"/>
    -      <include name="jooq-meta-{jooq-version}.jar"/>
    -      <include name="jooq-codegen-{jooq-version}.jar"/>
    -    </fileset>
    -    <fileset dir="${path.to.mysql.driver}">
    -      <include name="${mysql.driver}.jar"/>
    -    </fileset>
    -  </classpath>
    -</taskdef>
    -
    -<!-- Run the code generation task -->
    -<target name="generate-test-classes">
    -  <generate-classes
    -      jdbcurl="jdbc:mysql://localhost/test"
    -      jdbcuser="root"
    -      jdbcpassword=""
    -      generatordatabaseinputschema="test"
    -      generatortargetpackage="org.jooq.test.generatedclasses"
    -      generatortargetdirectory="${basedir}/src"/>
    -</target>]]></xml><html>
    -
    -							<p>
    -								Note that when running code generation with ant's &lt;java/&gt; task, you may have to set fork="true":
    -							</p>
    -
    -</html><xml><![CDATA[<!-- Run the code generation task -->
    -<target name="generate-test-classes">
    -  <java fork="true" classname="org.jooq.util.GenerationTool">
    -    [...]
    -  </java><html>
    -</target>
    -]]></xml><html>
    -
    -							<h3>Integrate generation with Maven</h3>
    -							<p>
    -								Using the official jOOQ-codegen-maven plugin, you can integrate source code generation in your Maven build process:
    -							</p>
    -
    -</html><xml><![CDATA[<plugin>
    -
    -  <!-- Specify the maven code generator plugin -->
    -  <groupId>org.jooq</groupId>
    -  <artifactId>jooq-codegen-maven</artifactId>
    -  <version>{jooq-version}</version>
    -
    -  <!-- The plugin should hook into the generate goal -->
    -  <executions>
    -    <execution>
    -      <goals>
    -        <goal>generate</goal>
    -      </goals>
    -    </execution>
    -  </executions>
    -
    -  <!-- Manage the plugin's dependency. In this example, we'll use a PostgreSQL database -->
    -  <dependencies>
    -    <dependency>
    -      <groupId>postgresql</groupId>
    -      <artifactId>postgresql</artifactId>
    -      <version>8.4-702.jdbc4</version>
    -    </dependency>
    -  </dependencies>
    -
    -  <!-- Specify the plugin configuration.
    -       The configuration format is the same as for the standalone code generator -->
    -  <configuration>
    -
    -    <!-- JDBC connection parameters -->
    -    <jdbc>
    -      <driver>org.postgresql.Driver</driver>
    -      <url>jdbc:postgresql:postgres</url>
    -      <user>postgres</user>
    -      <password>test</password>
    -    </jdbc>
    -
    -    <!-- Generator parameters -->
    -    <generator>
    -      <name>org.jooq.util.DefaultGenerator</name>
    -      <database>
    -        <name>org.jooq.util.postgres.PostgresDatabase</name>
    -        <includes>.*</includes>
    -        <excludes></excludes>
    -        <inputSchema>public</inputSchema>
    -      </database>
    -      <target>
    -        <packageName>org.jooq.util.maven.example</packageName>
    -        <directory>target/generated-sources/jooq</directory>
    -      </target>
    -    </generator>
    -  </configuration>
    -</plugin>
    -]]></xml><html>
    -
    -							<p>
    -								See the full example of a pom.xml including the jOOQ-codegen artefact here:<br/>
    -								<a href="https://github.com/jOOQ/jOOQ/blob/master/jOOQ-codegen-maven-example/pom.xml"
    -								  title="jOOQ-codegen-maven example pom.xml file">https://github.com/jOOQ/jOOQ/blob/master/jOOQ-codegen-maven-example/pom.xml</a>
    -							  </p>
    -
    -                            <h3>Migrate properties files from jOOQ 1.7, early versions of jOOQ 2.0.x:</h3>
    -                            <p>
    -                                Before jOOQ 2.0.4, the code generator was configured using properties files. These files are still supported for source code generation, but their syntax won't be maintained any longer. If you wish to migrate to XML, you can migrate the file using this command on the command line
    -                            </p>
    -
    -</html><config>org.jooq.util.GenerationTool /jooq-config.properties migrate</config><html>
    -
    -							<p>
    -								Using the migrate flag, jOOQ will read the properties file and output a corresponding XML file on system out
    -							</p>
    -
    -							<h3>Use jOOQ generated classes in your application</h3>
    -							<p>
    -								Be sure, both jooq-{jooq-version}.jar and your generated package (see configuration) are located on your classpath. Once this is done, you can execute SQL statements with your generated classes.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-advanced">
    -						<title>Advanced generator configuration</title>
    -						<content><html>
    -							<p>
    -								In the <reference id="codegen-configuration" title="previous section"/> we have seen how jOOQ's source code generator is configured and run within a few steps. In this chapter we'll cover some advanced settings
    -							</p>
    -
    -</html><xml><![CDATA[<!-- These properties can be added directly to the generator element: -->
    -<generator>
    -  <!-- The default code generator. You can override this one, to generate your own code style
    -       Defaults to org.jooq.util.DefaultGenerator -->
    -  <name>org.jooq.util.DefaultGenerator</name>
    -
    -  <!-- The naming strategy used for class and field names.
    -       You may override this with your custom naming strategy. Some examples follow
    -       Defaults to org.jooq.util.DefaultGeneratorStrategy -->
    -  <strategy>
    -    <name>org.jooq.util.DefaultGeneratorStrategy</name>
    -  </strategy>
    -</generator>]]></xml><html>
    -
    -							<p>
    -								The following example shows how you can override the DefaultGeneratorStrategy to render table and column names the way they are defined in the database, rather than switching them to camel case:
    -							</p>
    -
    -</html><java><![CDATA[/**
    - * It is recommended that you extend the DefaultGeneratorStrategy. Most of the
    - * GeneratorStrategy API is already declared final. You only need to override any
    - * of the following methods, for whatever generation behaviour you'd like to achieve
    - *
    - * Beware that most methods also receive a "Mode" object, to tell you whether a
    - * TableDefinition is being rendered as a Table, Record, POJO, etc. Depending on
    - * that information, you can add a suffix only for TableRecords, not for Tables
    - */
    -public class AsInDatabaseStrategy extends DefaultGeneratorStrategy {
    -
    -    /**
    -     * Override this to specifiy what identifiers in Java should look like.
    -     * This will just take the identifier as defined in the database.
    -     */
    -    @Override
    -    public String getJavaIdentifier(Definition definition) {
    -        return definition.getOutputName();
    -    }
    -
    -    /**
    -     * Override these to specify what a setter in Java should look like. Setters
    -     * are used in TableRecords, UDTRecords, and POJOs. This example will name
    -     * setters "set[NAME_IN_DATABASE]"
    -     */
    -    @Override
    -    public String getJavaSetterName(Definition definition, Mode mode) {
    -        return "set" + definition.getOutputName();
    -    }
    -
    -    /**
    -     * Just like setters...
    -     */
    -    @Override
    -    public String getJavaGetterName(Definition definition, Mode mode) {
    -        return "get" + definition.getOutputName();
    -    }
    -
    -    /**
    -     * Override this method to define what a Java method generated from a database
    -     * Definition should look like. This is used mostly for convenience methods
    -     * when calling stored procedures and functions. This example shows how to
    -     * set a prefix to a CamelCase version of your procedure
    -     */
    -    @Override
    -    public String getJavaMethodName(Definition definition, Mode mode) {
    -        return "call" + org.jooq.tools.StringUtils.toCamelCase(definition.getOutputName());
    -    }
    -
    -    /**
    -     * Override this method to define how your Java classes and Java files should
    -     * be named. This example applies no custom setting and uses CamelCase versions
    -     * instead
    -     */
    -    @Override
    -    public String getJavaClassName(Definition definition, Mode mode) {
    -        return super.getJavaClassName(definition, mode);
    -    }
    -
    -    /**
    -     * Override this method to re-define the package names of your generated
    -     * artefacts.
    -     */
    -    @Override
    -    public String getJavaPackageName(Definition definition, Mode mode) {
    -        return super.getJavaPackageName(definition, mode);
    -    }
    -
    -    /**
    -     * Override this method to define how Java members should be named. This is
    -     * used for POJOs and method arguments
    -     */
    -    @Override
    -    public String getJavaMemberName(Definition definition, Mode mode) {
    -        return definition.getOutputName();
    -    }
    -
    -    /**
    -     * Override this method to define the base class for those artefacts that
    -     * allow for custom base classes
    -     */
    -    @Override
    -    public String getJavaClassExtends(Definition definition, Mode mode) {
    -        return Object.class.getName();
    -    }
    -
    -    /**
    -     * Override this method to define the interfaces to be implemented by those
    -     * artefacts that allow for custom interface implementation
    -     */
    -    @Override
    -    public List<String> getJavaClassImplements(Definition definition, Mode mode) {
    -        return Arrays.asList(Serializable.class.getName(), Cloneable.class.getName());
    -    }
    -
    -    /**
    -     * Override this method to define the suffix to apply to routines when
    -     * they are overloaded.
    -     *
    -     * Use this to resolve compile-time conflicts in generated source code, in
    -     * case you make heavy use of procedure overloading
    -     */
    -    @Override
    -    public String getOverloadSuffix(Definition definition, Mode mode, String overloadIndex) {
    -        return "_OverloadIndex_" + overloadIndex;
    -    }
    -}]]></java><html>
    -
    -                            <h3>jooq-meta configuration</h3>
    -							<p>
    -								Within the &lt;generator/&gt; element, there are other configuration elements:
    -							</p>
    -
    -</html><xml><![CDATA[<!-- These properties can be added to the database element: -->
    -<database>
    -
    -  <!-- All table and view columns that are used as "version" fields for
    -       optimistic locking (several Java regular expressions, separated by comma).
    -       See UpdatableRecord.store() and UpdatableRecord.delete() for details -->
    -  <recordVersionFields>REC_VERSION</recordVersionFields/>
    -
    -  <!-- All table and view columns that are used as "timestamp" fields for
    -       optimistic locking (several Java regular expressions, separated by comma).
    -       See UpdatableRecord.store() and UpdatableRecord.delete() for details -->
    -  <recordTimestampFields>REC_TIMESTAMP</recordTimestampFields/>
    -      
    -  <!-- Generate java.sql.Timestamp fields for DATE columns. This is
    -       particularly useful for Oracle databases.
    -       Defaults to false -->
    -  <dateAsTimestamp>false</dateAsTimestamp>
    -
    -  <!-- Generate jOOU data types for your unsigned data types, which are
    -       not natively supported in Java.
    -       Defaults to true -->
    -  <unsignedTypes>true</unsignedTypes>
    -
    -  <!-- The schema that is used in generated source code. This will be the
    -       production schema. Use this to override your local development
    -       schema name for source code generation. If not specified, this
    -       will be the same as the input-schema. -->
    -  <outputSchema>[your database schema / owner / name]</outputSchema>
    -
    -  <!-- A configuration element to configure several input and/or output
    -       schemata for jooq-meta, in case you're using jooq-meta in a multi-
    -       schema environment.
    -       This cannot be combined with the above inputSchema / outputSchema -->
    -  <schemata>
    -    <schema>
    -      <inputSchema>...</inputSchema>
    -      <outputSchema>...</outputSchema>
    -    </schema>
    -    [ <schema>...</schema> ... ]
    -  </schemata>
    -
    -  <!-- A configuration element to configure master data table enum classes -->
    -  <masterDataTables>...</masterDataTables>
    -
    -  <!-- A configuration element to configure custom data types -->
    -  <customTypes>...</customTypes>
    -
    -  <!-- A configuration element to configure type overrides for generated
    -       artefacts (e.g. in combination with customTypes) -->
    -  <forcedTypes>...</forcedTypes>
    -</database>]]></xml><html>
    -
    -							<p>
    -								Check out the some of the manual's "advanced" sections to find out more about the advanced configuration parameters.
    -							</p>
    -							<ul>
    -								<li><reference id="schema-mapping" title="Schema mapping"/></li>
    -								<li><reference id="master-data-types" title="Master data types"/></li>
    -								<li><reference id="custom-data-types" title="Custom types"/></li>
    -							</ul>
    -
    -							<h3>jooq-codegen configuration</h3>
    -                            <p>
    -                            	Also, you can add some optional advanced configuration parameters for the generator:
    -                           	</p>
    -
    -</html><xml><![CDATA[<!-- These properties can be added to the generate element: -->
    -<generate>
    -  <!-- Primary key / foreign key relations should be generated and used.
    -       This is a prerequisite for various advanced features.
    -       Defaults to true -->
    -  <relations>true</relations>
    -
    -  <!-- Generate navigation methods to navigate foreign key relationships
    -       directly from Record classes. This is only relevant if relations
    -       is set to true, too.
    -       Defaults to true -->
    -  <navigationMethods>true</navigationMethods>
    -
    -  <!-- Generate deprecated code for backwards compatibility
    -       Defaults to true -->
    -  <deprecated>true</deprecated>
    -
    -  <!-- Generate instance fields in your tables, as opposed to static
    -       fields. This simplifies aliasing.
    -       Defaults to true -->
    -  <instanceFields>true</instanceFields>
    -
    -  <!-- Generate the javax.annotation.Generated annotation to indicate
    -       jOOQ version used for source code.
    -       Defaults to true -->
    -  <generatedAnnotation>true</generatedAnnotation>
    -
    -  <!-- Generate jOOQ Record classes for type-safe querying. You can
    -       turn this off, if you don't need "active records" for CRUD
    -       Defaults to true -->
    -  <records>true</records>
    -
    -  <!-- Generate POJOs in addition to Record classes for usage of the
    -       ResultQuery.fetchInto(Class) API
    -       Defaults to false -->
    -  <pojos>false</pojos>
    -
    -  <!-- Generate immutable POJOs for usage of the ResultQuery.fetchInto(Class) API
    -       This overrides any value set in <pojos/>
    -       Defaults to false -->
    -  <immutablePojos>false</immutablePojos>
    -
    -  <!-- Generate interfaces that will be implemented by records and/or pojos.
    -       You can also use these interfaces in Record.into(Class<?>) and similar
    -       methods, to let jOOQ return proxy objects for them.
    -       Defaults to false -->
    -  <interfaces>false</interfaces>
    -
    -  <!-- Generate DAOs in addition to POJO classes
    -       Defaults to false -->
    -  <daos>false</daos>
    -
    -  <!-- Annotate POJOs and Records with JPA annotations for increased
    -       compatibility and better integration with JPA/Hibernate, etc
    -       Defaults to false -->
    -  <jpaAnnotations>false</jpaAnnotations>
    -
    -  <!-- Annotate POJOs and Records with JSR-303 validation annotations
    -       Defaults to false -->
    -  <validationAnnotations>false</validationAnnotations>
    -</generate>]]></xml></content>
    -					</section>
    -
    -				    <section id="codegen-globals">
    -						<title>Generated global artefacts</title>
    -						<content><html>
    -							<p>
    -								For increased convenience at the use-site, jOOQ generates "global" artefacts at the code generation root location, referencing tables, routines, sequences, etc. In detail, these global artefacts include the following:
    -							</p>
    -							<ul>
    -								<li><strong>Keys.java</strong>: This file contains all of the required primary key, unique key, foreign key and identity references in the form of static members of type <reference class="org.jooq.Key"/>.</li>
    -								<li><strong>Routines.java</strong>: This file contains all standalone routines (not in packages) in the form of static factory methods for <reference class="org.jooq.Routine"/> types.</li>
    -								<li><strong>Sequences.java</strong>: This file contains all sequence objects in the form of static members of type <reference class="org.jooq.Sequence"/>.</li>
    -								<li><strong>Tables.java</strong>: This file contains all table objects in the form of static member references to the actual singleton <reference class="org.jooq.Table"/> object</li>
    -								<li><strong>UDTs.java</strong>: This file contains all UDT objects in the form of static member references to the actual singleton <reference class="org.jooq.UDT"/> object</li>
    -							</ul>
    -							
    -							<h3>Referencing global artefacts</h3>
    -							<p>
    -								When referencing global artefacts from your client application, you would typically static import them as such:
    -							</p>
    -							
    -</html><java><![CDATA[// Static imports for all global artefacts
    -import static com.example.generated.Routines.*;
    -import static com.example.generated.Sequences.*;
    -import static com.example.generated.Tables.*;
    -
    -// You could then reference your artefacts as follows:
    -create.insertInto(MY_TABLE)
    -      .values(MY_SEQUENCE.nextval(), myFunction())
    -      
    -// as a more concise form of this:
    -create.insertInto(com.example.generated.Tables.MY_TABLE)
    -      .values(com.example.generated.Sequences.MY_SEQUENCE.nextval(), com.example.generated.Routines.myFunction())]]></java></content>
    -					</section>
    -
    -				    <section id="codegen-tables">
    -						<title>Generated tables</title>
    -						<content><html>
    -							<p>
    -								Every table in your database will generate a <reference class="org.jooq.Table"/> implementation that looks like this:
    -							</p>
    -							
    -</html><java><![CDATA[public class Book extends UpdatableTableImpl<BookRecord> {
    -
    -    // The singleton instance
    -    public static final Book BOOK = new Book();
    -
    -    // Generated columns
    -    public final TableField<BookRecord, Integer> ID        = createField("ID",        SQLDataType.INTEGER, this);
    -    public final TableField<BookRecord, Integer> AUTHOR_ID = createField("AUTHOR_ID", SQLDataType.INTEGER, this);
    -    public final TableField<BookRecord, String>  ITLE      = createField("TITLE",     SQLDataType.VARCHAR, this);
    -
    -    // Covariant aliasing method, returning a table of the same type as BOOK
    -    @Override
    -    public Book as(java.lang.String alias) {
    -        return new Book(alias);
    -    }
    -    
    -    // [...]
    -}]]></java><html>
    -
    -							<h3>Flags influencing generated tables</h3>
    -							<p>
    -								These flags from the <reference id="codegen-advanced" title="code generation configuration"/> influence generated tables:
    -							</p>
    -							<ul>
    -								<li><strong>recordVersionFields</strong>: Relevant methods from super classes are overridden to return the VERSION field</li>
    -								<li><strong>recordTimestampFields</strong>: Relevant methods from super classes are overridden to return the TIMESTAMP field</li>
    -								<li><strong>dateAsTimestamp</strong>: This influences all relevant columns</li>
    -								<li><strong>unsignedTypes</strong>: This influences all relevant columns</li>
    -								<li><strong>relations</strong>: Relevant methods from super classes are overridden to provide primary key, unique key, foreign key and identity information</li>
    -								<li><strong>instanceFields</strong>: This flag controls the "static" keyword on table columns, as well as aliasing convenience</li>
    -								<li><strong>records</strong>: The generated record type is referenced from tables allowing for type-safe single-table record fetching</li>
    -							</ul>
    -							
    -							<h3>Flags controlling table generation</h3>
    -							<p>
    -								Table generation cannot be deactivated
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-records">
    -						<title>Generated records</title>
    -						<content><html>
    -							<p>
    -								Every table in your database will generate a <reference class="org.jooq.Table"/> implementation that looks like this:
    -							</p>
    -							
    -</html><java><![CDATA[// JPA annotations can be generated, optionally
    -@Entity
    -@Table(name = "BOOK", schema = "TEST")
    -public class BookRecord extends UpdatableRecordImpl<BookRecord> 
    -
    -// An interface common to records and pojos can be generated, optionally
    -implements IBook {
    -
    -    // Every column generates a setter and a getter
    -    @Override
    -    public void setId(Integer value) {
    -        setValue(BOOK.ID, value);
    -    }
    -    
    -    @Id
    -    @Column(name = "ID", unique = true, nullable = false, precision = 7)
    -    @Override
    -    public Integer getId() {
    -        return getValue(BOOK.ID);
    -    }
    -    
    -    // More setters and getters
    -    public void setAuthorId(Integer value) {...}
    -    public Integer getAuthorId() {...}
    -    
    -    // Convenience methods for foreign key methods
    -    public void setAuthorId(AuthorRecord value) {
    -        if (value == null) {
    -            setValue(BOOK.AUTHOR_ID, null);
    -        }
    -        else {
    -            setValue(BOOK.AUTHOR_ID, value.getValue(AUTHOR.ID));
    -        }
    -    }
    -    
    -    // Navigation methods
    -    public AuthorRecord fetchAuthor() {
    -        return create().selectFrom(AUTHOR).where(AUTHOR.ID.equal(getValue(BOOK.AUTHOR_ID))).fetchOne();
    -    }
    -    
    -    // [...]
    -}]]></java><html>							
    -							
    -							<h3>Flags influencing generated records</h3>
    -							<p>
    -								These flags from the <reference id="codegen-advanced" title="code generation configuration"/> influence generated records:
    -							</p>
    -							<ul>
    -								<li><strong>dateAsTimestamp</strong>: This influences all relevant getters and setters</li>
    -								<li><strong>unsignedTypes</strong>: This influences all relevant getters and setters</li>
    -								<li><strong>relations</strong>: This is needed as a prerequisite for navigation methods</li>
    -								<li><strong>navigationMethods</strong>: This controls whether navigation methods will be generated or not</li>
    -								<li><strong>daos</strong>: Records are a pre-requisite for DAOs. If DAOs are generated, records are generated as well</li>
    -								<li><strong>interfaces</strong>: If interfaces are generated, records will implement them</li>
    -								<li><strong>jpaAnnotations</strong>: JPA annotations are used on generated records</li>
    -							</ul>
    -														
    -							<h3>Flags controlling record generation</h3>
    -							<p>
    -								Record generation can be deactivated using the <strong>records</strong> flag
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-pojos">
    -						<title>Generated POJOs</title>
    -						<content><html>
    -							<p>
    -								Every table in your database will generate a POJO implementation that looks like this:
    -							</p>
    -							
    -</html><java><![CDATA[// JPA annotations can be generated, optionally
    -@javax.persistence.Entity
    -@javax.persistence.Table(name = "BOOK", schema = "TEST")
    -public class Book implements java.io.Serializable
    -
    -// An interface common to records and pojos can be generated, optionally
    -, IBook {
    -
    -    // JSR-303 annotations can be generated, optionally
    -    @NotNull
    -    private Integer id;
    -
    -    @NotNull
    -    private Integer authorId;
    -
    -    @NotNull
    -    @Size(max = 400)
    -    private String title;
    -
    -    // Every column generates a getter and a setter
    -    @Id
    -    @Column(name = "ID", unique = true, nullable = false, precision = 7)
    -    @Override
    -    public Integer getId() {
    -        return this.id;
    -    }
    -
    -    @Override
    -    public void setId(Integer id) {
    -        this.id = id;
    -    }
    -    
    -    // [...]
    -}]]></java><html>							
    -							
    -							<h3>Flags influencing generated POJOs</h3>
    -							<p>
    -								These flags from the <reference id="codegen-advanced" title="code generation configuration"/> influence generated POJOs:
    -							</p>
    -							<ul>
    -								<li><strong>dateAsTimestamp</strong>: This influences all relevant getters and setters</li>
    -								<li><strong>unsignedTypes</strong>: This influences all relevant getters and setters</li>
    -								<li><strong>interfaces</strong>: If interfaces are generated, POJOs will implement them</li>
    -								<li><strong>immutablePojos</strong>: Immutable POJOs have final members and no setters. All members must be passed to the constructor</li>
    -								<li><strong>daos</strong>: POJOs are a pre-requisite for DAOs. If DAOs are generated, POJOs are generated as well</li>
    -								<li><strong>jpaAnnotations</strong>: JPA annotations are used on generated records</li>
    -								<li><strong>validationAnnotations</strong>: JSR-303 validation annotations are used on generated records</li>
    -							</ul>
    -														
    -							<h3>Flags controlling POJO generation</h3>
    -							<p>
    -								POJO generation can be activated using the <strong>pojos</strong> flag
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-interfaces">
    -						<title>Generated Interfaces</title>
    -						<content><html>
    -							<p>
    -								Every table in your database will generate an interface that looks like this:
    -							</p>
    -							
    -</html><java><![CDATA[public interface IBook extends java.io.Serializable {
    -
    -    // Every column generates a getter and a setter
    -    public void setId(Integer value);
    -    public Integer getId();
    -    
    -    // [...]
    -}]]></java><html>    						
    -							
    -							<h3>Flags influencing generated interfaces</h3>
    -							<p>
    -								These flags from the <reference id="codegen-advanced" title="code generation configuration"/> influence generated interfaces:
    -							</p>
    -							<ul>
    -								<li><strong>dateAsTimestamp</strong>: This influences all relevant getters and setters</li>
    -								<li><strong>unsignedTypes</strong>: This influences all relevant getters and setters</li>
    -							</ul>
    -														
    -							<h3>Flags controlling POJO generation</h3>
    -							<p>
    -								POJO generation can be activated using the <strong>interfaces</strong> flag
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-daos">
    -						<title>Generated DAOs</title>
    -						<content><html>
    -							<h3>Generated DAOs</h3>
    -							<p>
    -								Every table in your database will generate a <reference class="org.jooq.DAO"/> implementation that looks like this:
    -							</p>
    -							
    -</html><java><![CDATA[public class BookDao extends DAOImpl<BookRecord, Book, Integer> {
    -
    -    // Generated constructors
    -    public BookDao() {
    -        super(BOOK, Book.class);
    -    }
    -
    -    public BookDao(Factory factory) {
    -        super(BOOK, Book.class, factory);
    -    }
    -
    -    // Every column generates at least one fetch method
    -    public List<Book> fetchById(Integer... values) {
    -        return fetch(BOOK.ID, values);
    -    }
    -
    -    public Book fetchOneById(Integer value) {
    -        return fetchOne(BOOK.ID, value);
    -    }
    -
    -    public List<Book> fetchByAuthorId(Integer... values) {
    -        return fetch(BOOK.AUTHOR_ID, values);
    -    }
    -    
    -    // [...]
    -}]]></java><html>							
    -							
    -							<h3>Flags controlling DAO generation</h3>
    -							<p>
    -								DAO generation can be activated using the <strong>daos</strong> flag
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-sequences">
    -						<title>Generated sequences</title>
    -						<content><html>
    -							<p>
    -								Every sequence in your database will generate a <reference class="org.jooq.Sequence"/> implementation that looks like this:
    -							</p>
    -							
    -</html><java><![CDATA[public final class Sequences {
    -
    -    // Every sequence generates a member
    -    public static final Sequence<Integer> S_AUTHOR_ID = new SequenceImpl<Integer>("S_AUTHOR_ID", TEST, SQLDataType.INTEGER);
    -}]]></java><html>		
    -							
    -							<h3>Flags controlling sequence generation</h3>
    -							<p>
    -								Sequence generation cannot be deactivated
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-procedures">
    -						<title>Generated procedures</title>
    -						<content><html>
    -							<p>
    -								Every procedure or function (routine) in your database will generate a <reference class="org.jooq.Routine"/> implementation that looks like this:
    -							</p>
    -
    -</html><java><![CDATA[public class AuthorExists extends AbstractRoutine<java.lang.Void> {
    -
    -    // All IN, IN OUT, OUT parameters and function return values generate a static member
    -    public static final Parameter<String>     AUTHOR_NAME = createParameter("AUTHOR_NAME", SQLDataType.VARCHAR);
    -    public static final Parameter<BigDecimal> RESULT      = createParameter("RESULT",      SQLDataType.NUMERIC);
    -
    -    // A constructor for a new "empty" procedure call
    -    public AuthorExists() {
    -        super("AUTHOR_EXISTS", TEST);
    -
    -        addInParameter(AUTHOR_NAME);
    -        addOutParameter(RESULT);
    -    }
    -
    -    // Every IN and IN OUT parameter generates a setter
    -    public void setAuthorName(String value) {
    -        setValue(AUTHOR_NAME, value);
    -    }
    -
    -    // Every IN OUT, OUT and RETURN_VALUE generates a getter
    -    public BigDecimal getResult() {
    -        return getValue(RESULT);
    -    }
    -    
    -    // [...]
    -}]]></java><html>
    -
    -							<h3>Package and member procedures or functions</h3>
    -							<p>
    -								Procedures or functions contained in packages or UDTs are generated in a sub-package that corresponds to the package or UDT name.
    -							</p>
    -
    -							<h3>Flags controlling routine generation</h3>
    -							<p>
    -								Routine generation cannot be deactivated
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-udts">
    -						<title>Generated UDTs</title>
    -						<content><html>
    -							<p>
    -								Every UDT in your database will generate a <reference class="org.jooq.UDT"/> implementation that looks like this:
    -							</p>
    -						
    -</html><java><![CDATA[public class AddressType extends UDTImpl<AddressTypeRecord> {
    -
    -    // The singleton UDT instance
    -    public static final UAddressType U_ADDRESS_TYPE = new UAddressType();
    -
    -    // Every UDT attribute generates a static member
    -    public static final UDTField<AddressTypeRecord, String> ZIP     = 
    -      createField("ZIP",     SQLDataType.VARCHAR, U_ADDRESS_TYPE);
    -    public static final UDTField<AddressTypeRecord, String> CITY    = 
    -      createField("CITY",    SQLDataType.VARCHAR, U_ADDRESS_TYPE);
    -    public static final UDTField<AddressTypeRecord, String> COUNTRY = 
    -      createField("COUNTRY", SQLDataType.VARCHAR, U_ADDRESS_TYPE);
    -    
    -    // [...]
    -}]]></java><html>						
    -										
    -							<p>
    -								Besides the <reference class="org.jooq.UDT"/> implementation, a <reference class="org.jooq.UDTRecord"/> implementation is also generated
    -							</p>		
    -
    -</html><java><![CDATA[public class AddressTypeRecord extends UDTRecordImpl<AddressTypeRecord> {
    -
    -    // Every attribute generates a getter and a setter
    -
    -    public void setZip(String value) {...}
    -    public String getZip() {...}
    -    public void setCity(String value) {...}
    -    public String getCity() {...}
    -    public void setCountry(String value) {...}
    -    public String getCountry() {...}
    -    
    -    // [...]
    -}]]></java><html>						
    -
    -							<h3>Flags controlling UDT generation</h3>
    -							<p>
    -								UDT generation cannot be deactivated
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="master-data-types">
    -						<title>Master data and enumeration tables</title>
    -						<content><html>
    -							<p>
    -								<strong>NOTE</strong>: This feature is deprecated in jOOQ 2.5.0 and will be removed as of jOOQ 3.0
    -							</p>
    -							<p>
    -								Only MySQL and Postgres databases support true ENUM types natively. Some other RDBMS allow you to map the concept of an ENUM data type to a CHECK constraint, but those constraints can contain arbitrary SQL. With jOOQ, you can "simulate" ENUM types by declaring a table as a "master data table" in the configuration. At code-generation time, this table will be treated specially, and a Java enum type is generated from its data.
    -							</p>
    -
    -							<h3>Configure master data tables</h3>
    -							<p>
    -								As previously discussed, you can configure master data tables as follows:
    -							</p>
    -							
    -</html><xml><![CDATA[<!-- These properties can be added to the database element: -->
    -<database>
    -  <masterDataTables>
    -    <masterDataTable>
    -      <!-- The name of a master data table -->
    -      <name>[a table name]</name>
    -
    -      <!-- The column used for enum literals -->
    -      <literal>[a column name]</literal>
    -
    -      <!-- The column used for documentation -->
    -      <description>[a column name]</description>
    -    </masterDataTable>
    -
    -    [ <masterDataTable>...</masterDataTable> ... ]
    -  </masterDataTables>
    - </database>]]></xml><html>
    -
    -							<p>
    -								The results of this will be a Java enum that looks similar to this:
    -							</p>
    -							
    -</html><java><![CDATA[public enum Language implements MasterDataType<Integer> {
    -
    -  /**
    -   * English
    -   */
    -  en(1, "en", "English"),
    -
    -  /**
    -   * Deutsch
    -   */
    -  de(2, "de", "Deutsch"),
    -
    -  /**
    -   * Français
    -   */
    -  fr(3, "fr", "Français"),
    -
    -  /**
    -   * null
    -   */
    -  pt(4, "pt", null),
    -  ;
    -
    -  private final Integer id;
    -  private final String cd;
    -  private final String description;
    -
    -  // [ ... constructor and getters for the above properties ]
    -}]]></java><html>
    -
    -							<p>
    -								In the above example, you can see how the configured primary key is mapped to the id member, the configured literal column is mapped to the cd member and the configured description member is mapped to the description member and output as Javadoc. In other words, T_LANGUAGE is a table with 4 rows and at least three columns.
    -							</p>
    -							
    -							<p>
    -								The general contract is that there must be
    -							</p>
    -							<ul>
    -								<li>A single-column primary key column of character or integer type</li>
    -								<li>An optional unique literal column of character or integer type (otherwise, the primary key is used as enum literal) </li>
    -								<li>An optional description column of any type </li>
    -							</ul>
    -
    -							<h3>Using MasterDataTypes</h3>
    -							<p>
    -								The point of MasterDataTypes in jOOQ is that they behave exactly like true ENUM types. When the above T_LANGUAGE table is referenced by T_BOOK, instead of generating foreign key navigation methods and a LANGUAGE_ID Field&lt;Integer&gt;, a Field&lt;TLanguage&gt; is generated:
    -							</p>
    -
    -</html><java><![CDATA[public class Book extends UpdatableTableImpl<BookRecord> {
    -
    -  // [...]
    -  public static final TableField<BookRecord, Language> LANGUAGE_ID =
    -                  new TableFieldImpl<BookRecord, Language>( /* ... */ );
    -}]]></java><html>
    -
    -							<p>
    -								Which can then be used in the BookRecord directly:
    -							</p>
    -							
    -</html><java><![CDATA[public class BookRecord extends UpdatableRecordImpl<BookRecord> {
    -
    -  // [...]
    -  public Language getLanguageId() { // [...]
    -  public void setLanguageId(Language value) { // [...]
    -}]]></java><html>
    -
    -							<h3>When to use MasterDataTypes</h3>
    -							<p>
    -								You can use master data types when you're actually mapping master data to a Java enum. When the underlying table changes frequently, those updates will not be reflected by the statically generated code. Also, be aware that it will be difficult to perform actual JOIN operations on the underlying table with jOOQ, once the master data type is generated.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="custom-data-types">
    -						<title>Custom data types and type conversion</title>
    -						<content><html>
    -							<p>
    -								When using a custom type in jOOQ, you need to let jOOQ know about its associated <reference class="org.jooq.Converter"/>. Ad-hoc usages of such converters has been discussed in the chapter about <reference id="data-type-conversion" title="data type conversion"/>. A more common use-case, however, is to let jOOQ know about custom types at code generation time. Use the following configuration elements to specify, that you'd like to use GregorianCalendar for all database fields that start with DATE_OF_
    -      						</p>
    -
    -</html><xml><![CDATA[<database>
    -  <!-- First, register your custom types here -->
    -  <customTypes>
    -    <customType>
    -      <!-- Specify the fully-qualified class name of your custom type -->
    -      <name>java.util.GregorianCalendar</name>
    -
    -      <!-- Associate that custom type with your converter. Note, a
    -           custom type can only have one converter in jOOQ -->
    -      <converter>com.example.CalendarConverter</converter>
    -    </customType>
    -  </customTypes>
    -
    -  <!-- Then, associate custom types with database columns -->
    -  <forcedTypes>
    -    <forcedType>
    -      <!-- Specify again he fully-qualified class name of your custom type -->
    -      <name>java.util.GregorianCalendar</name>
    -
    -      <!-- Add a list of comma-separated regular expressions matching columns -->
    -      <expressions>.*\.DATE_OF_.*</expressions>
    -    </forcedType>
    -  </forcedTypes>
    -</database>]]></xml><html>
    -
    -                            <p>
    -                            	The above configuration will lead to AUTHOR.DATE_OF_BIRTH being generated like this:
    -                            </p>
    -
    -</html><java><![CDATA[public class TAuthor extends UpdatableTableImpl<TAuthorRecord> {
    -
    -    // [...]
    -    public final TableField<TAuthorRecord, GregorianCalendar> DATE_OF_BIRTH =    // [...]
    -    // [...]
    -
    -}]]></java><html>
    -
    -                            <p>
    -                            	This means that the bound type of &lt;T&gt; will be GregorianCalendar, wherever you reference DATE_OF_BIRTH. jOOQ will use your custom converter when binding variables and when fetching data from <reference class="java.util.ResultSet"/>:
    -                            </p>
    -
    -</html><java><![CDATA[// Get all date of births of authors born after 1980
    -List<GregorianCalendar> result =
    -create.selectFrom(AUTHOR)
    -      .where(AUTHOR.DATE_OF_BIRTH.greaterThan(new GregorianCalendar(1980, 0, 1)))
    -      .fetch(AUTHOR.DATE_OF_BIRTH);]]></java></content>
    -					</section>
    -
    -				    <section id="schema-mapping">
    -						<title>Mapping generated schemata and tables</title>
    -						<content><html>
    -							<p>
    -								We've seen previously in the chapter about <reference id="runtime-schema-mapping" title="runtime schema mapping"/>, that schemata and tables can be mapped at runtime to other names. But you can also hard-wire schema mapping in generated artefacts at code generation time, e.g. when you have 5 developers with their own dedicated developer databases, and a common integration database. In the code generation configuration, you would then write.
    -							</p>
    -
    -</html><xml><![CDATA[<schemata>
    -  <schema>
    -    <!-- Use this as the developer's schema: -->
    -    <inputSchema>LUKAS_DEV_SCHEMA</inputSchema>
    -
    -    <!-- Use this as the integration / production database: -->
    -    <outputSchema>PROD</outputSchema>
    -  </schema>
    -</schemata>]]></xml></content>
    -					</section>
    -				</sections>
    -			</section>
    -
    -			<section id="tools">
    -				<title>Tools</title>
    -				<content><html>
    -					<p>
    -						These chapters hold some information about tools to be used with jOOQ
    -					</p>
    -				</html></content>
    -
    -				<sections>
    -					<section id="jooq-console">
    -						<title>jOOQ Console</title>
    -						<content><html>
    -							<p>
    -							    The <reference id="execute-listeners" title="ExecuteListener API"/> was driven by a feature request by Christopher Deckers, who has had the courtesy to contribute the jOOQ Console, a sample application interfacing with jOOQ's ExecuteListeners. The jOOQ Console logs all queries executed by jOOQ and displays them nicely in a Swing application. With the jOOQ Console's logger, you can:
    -						    </p>
    -						    <ul>
    -						    	<li>Activate the console's DebugListener anytime (in-process or if the remote server is active).</li>
    -						    	<li>View simple and batch queries and their parameters.</li>
    -						    	<li>Reformat queries along with syntax highlighting for better readability.</li>
    -						    	<li>View stack trace of originator of the call.</li>
    -						    	<li>Dump the stack to stdout when in an IDE, to directly navigate to relevant classes.</li>
    -						    	<li>Track execution time, binding time, parsing time, rows read, fields read.</li>
    -						    	<li>Show/hide queries depending on their type (SELECT, UPDATE, etc.).</li>
    -						    	<li>Sort any column (timing columns, queries, types, etc.)</li>
    -						    	<li>Easy copy paste of rows/columns to Spreadsheet editors.</li>
    -						    </ul>
    -
    -						    <p>
    -						    	A short overview of such a debugging session can be seen here:
    -						    </p>
    -   							<div class="screenshot">
    -								<img class="screenshot" src="&lt;?=$root?&gt;/img/jooq-console-01.png" alt="jOOQ Console example"/>
    -							</div>
    -						    <p>
    -							    Please note that the jOOQ Console is still experimental. Any feedback is very welcome on <br/>
    -							    <a href="http://groups.google.com/group/jooq-user" title="the jooq-user group">the jooq-user group</a>
    -							</p>
    -
    -							<h3>jOOQ Console operation modes</h3>
    -							<p>
    -								The jOOQ Console can be run in two different modes:
    -							</p>
    -							<ul>
    -								<li>In-process mode: running in the same process as the queries you're analysing</li>
    -								<li>"headless" mode: running remotely</li>
    -							</ul>
    -
    -							<p>
    -								Both modes will require that you set the <reference class="org.jooq.debug.DebugListener"/> in the Factory's settings. When using XML settings:
    -							</p>
    -
    -</html><xml><![CDATA[<settings>
    -  <executeListeners>
    -    <executeListener>org.jooq.debug.DebugListener</executeListener>
    -  </executeListeners>
    -</settings>]]></xml><html>
    -
    -							<p>
    -								Or when using programmatic settings:
    -							</p>
    -							
    -</html><java><![CDATA[Settings settings = new Settings()
    -    .getExecuteListeners().add("org.jooq.debug.DebugListener");
    -Factory factory = new Factory(connection, dialect, settings);]]></java><html>
    -
    -							<h3>In-process mode</h3>
    -							<p>
    -								The in-process mode is useful for Swing applications or other, locally run Java programs accessing the database via jOOQ. In order to launch the jOOQ Console "in-process", specify the previously documented settings and launch the Console as follows:
    -							</p>
    -
    -</html><java><![CDATA[// Define a DatabaseDescriptor for the "in-process" mode
    -// It is needed for the "Editor" tab
    -DatabaseDescriptor descriptor = new DatabaseDescriptor() {
    -
    -    // Return your generated schema. This is used by the console
    -    // to introspect your schema data
    -    @Override
    -    public Schema getSchema() {
    -        return com.example.MySchema.MY_SCHEMA;
    -    }
    -
    -    // Return the SQL dialect that you're using
    -    @Override
    -    public SQLDialect getSQLDialect() {
    -        return SQLDialect.ORACLE;
    -    }
    -
    -    // Return a connection
    -    @Override
    -    public Connection createConnection() {
    -        try {
    -            return DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "test", "test");
    -        }
    -        catch (Exception ignore) {}
    -    }
    -};
    -
    -// Now pass this database descriptor to the Console and make it visible
    -try {
    -
    -    // Use this for a nicer look-and-feel
    -    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    -
    -    // Create a new Console
    -    Console console = new Console(descriptor, true);
    -    console.setLoggingActive(true);
    -    console.setVisible(true);
    -}
    -catch (Exception ignore) {}
    -]]></java><html>
    -
    -							<p>
    -								Only in the in-process mode, you can execute ad-hoc queries directly from the console, if you provide it with proper DatabaseDescriptor. These queries are executed from the Editor pane which features:
    -							</p>
    -							<ul>
    -								<li>SQL editing within the console.</li>
    -								<li>Incremental search on tables.</li>
    -								<li>Simple code completion with tables/columns/SQL keywords.</li>
    -								<li>Syntax highlighting and formatting capabilities.</li>
    -								<li>Results shown in one or several tabs.</li>
    -								<li>Easy analysis of Logger output by copy/pasting/running queries in the Editor.</li>
    -							</ul>
    -   							<div class="screenshot">
    -								<img class="screenshot" src="&lt;?=$root?&gt;/img/jooq-console-02.png" alt="jOOQ Console example"/>
    -							</div>
    -
    -                            <h3>"Headless" mode</h3>
    -							<p>
    -								In J2EE or other server/client environments, you may not be able to run the console in the same process as your application. You can then run the jOOQ Console in "headless" mode. In addition to the previously documented settings, you'll have to start a debugger server in your application process, that the console can connect to:
    -							</p>
    -
    -</html><java>// Create a new RemoteDebuggerServer in your application that listens to
    -// incoming connections on a given port
    -SERVER = new RemoteDebuggerServer(DEBUGGER_PORT);</java><html>
    -
    -							<p>
    -								Now start your application along with the debugger server and launch the console with this command:
    -							</p>
    -
    -</html><config>java -jar jooq-console-2.1.0.jar [host] [port]</config><html>
    -
    -							<p>
    -								Depending on your distribution, you may have to manually add rsyntaxtextarea-1.5.0.jar and jOOQ artefacts on your classpath.
    -							</p>
    -						</html></content>
    -					</section>
    -				</sections>
    -			</section>
    -
    -			<section id="reference">
    -				<title>Reference</title>
    -				<content><html>
    -					<p>
    -						These chapters hold some general jOOQ reference information
    -					</p>
    -				</html></content>
    -
    -				<sections>
    -					<section id="supported-rdbms">
    -						<title>Supported RDBMS</title>
    -						<content><html>
    -							<h3>A list of supported databases</h3>
    -							<p>
    -						   		Every RDMBS out there has its own little specialties. jOOQ considers those specialties as much as possible, while trying to standardise the behaviour in jOOQ. In order to increase the quality of jOOQ, some 70 unit tests are run for syntax and variable binding verification, as well as some 180 integration tests with an overall of around 1200 queries for any of these databases:
    -					   		</p>
    -							<ul>
    -							    <li>CUBRID 8.4.1</li>
    -							    <li>DB2 9.7</li>
    -							    <li>Derby 10.8</li>
    -							    <li>Firebird 2.5.1</li>
    -							    <li>H2 1.3.161</li>
    -							    <li>HSQLDB 2.2.5</li>
    -							    <li>Ingres 10.1.0</li>
    -							    <li>MySQL 5.1.41 and 5.5.8</li>
    -							    <li>Oracle XE 10.2.0.1.0 and 11g</li>
    -							    <li>PostgreSQL 9.0</li>
    -							    <li>SQLite with inofficial JDBC driver v056</li>
    -							    <li>SQL Server 2008 R8</li>
    -							    <li>Sybase Adaptive Server Enterprise 15.5</li>
    -							    <li>Sybase SQL Anywhere 12</li>
    -							</ul>
    -							<p>
    -								These platforms have been observed to work as well, but are not integration-tested
    -							</p>
    -							<ul>
    -								<li>Google Cloud SQL (MySQL)</li>
    -							</ul>
    -								
    -							<h3>Databases planned for support</h3>
    -							<p>
    -								Any of the following databases might be available in the future
    -							</p>
    -						    <ul>
    -							    <li>Informix</li>
    -							    <li>Interbase</li>
    -							    <li>MS Access</li>
    -							    <li>MS Excel</li>
    -							    <li>SQL Azure</li>
    -							    <li>Sybase SQL Anywhere OnDemand</li>
    -							    <li>Teradata</li>
    -						    </ul>
    -						    
    -							<h3>Databases being watched</h3>
    -							<p>
    -								Any of the following databases are being observed for a potential integration
    -							</p>
    -							<ul>
    -								<li>Mondrian</li>
    -								<li>Netezza</li>
    -								<li>SQLFire</li>
    -								<li>Vectorwise</li>
    -								<li>Vertica</li>
    -								<li>VoltDB</li>
    -							</ul>
    -
    -							<h3>Feature matrix</h3>
    -							<p>
    -								This section will soon contain a feature matrix, documenting what feature is available for which database.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -					<section id="reference-data-types">
    -						<title>Data types</title>
    -						<content><html>
    -							<p>
    -								There is always a small mismatch between SQL data types and Java data types. This is for two reasons:
    -							</p>
    -							<ul>
    -								<li>SQL data types are insufficiently covered by the JDBC API.</li>
    -								<li>Java data types are often less expressive than SQL data types</li>
    -							</ul>
    -							<p>
    -								This chapter should document the most important notes about SQL, JDBC and jOOQ data types.
    -							</p>
    -						</html></content>
    -						
    -						<sections>
    -							<section id="data-types-lobs">
    -								<title>BLOBs and CLOBs</title>
    -								<content><html>
    -									<p>
    -										jOOQ currently doesn't explicitly support JDBC BLOB and CLOB data types. If you use any of these data types in your database, jOOQ will map them to byte[] and String instead. In simple cases (small data), this simplification is sufficient. In more sophisticated cases, you may have to bypass jOOQ, in order to deal with these data types and their respective resources. True support for LOBs is on the roadmap, though.
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -							<section id="data-types-unsigned">
    -								<title>Unsigned integer types</title>
    -								<content><html>
    -									<p>
    -										Some databases explicitly support unsigned integer data types. In most normal JDBC-based applications, they would just be mapped to their signed counterparts letting bit-wise shifting and tweaking to the user. jOOQ ships with a set of unsigned <reference class="java.lang.Number"/> implementations modelling the following types:
    -									</p>
    -									<ul>
    -										<li><reference class="org.jooq.tools.unsigned.UByte"/>: Unsigned byte, an 8-bit unsigned integer</li>
    -										<li><reference class="org.jooq.tools.unsigned.UShort"/>: Unsigned short, a 16-bit unsigned integer</li>
    -										<li><reference class="org.jooq.tools.unsigned.UInteger"/>: Unsigned int, a 32-bit unsigned integer</li>
    -										<li><reference class="org.jooq.tools.unsigned.ULong"/>: Unsigned long, a 64-bit unsigned integer</li>
    -									</ul>
    -									<p>
    -										Each of these wrapper types extends <reference class="java.lang.Number"/>, wrapping a higher-level integer type, internally:
    -									</p>
    -									<ul>
    -										<li>UByte wraps <reference class="java.lang.Short"/></li>
    -										<li>UShort wraps <reference class="java.lang.Integer"/></li>
    -										<li>UInteger wraps <reference class="java.lang.Long"/></li>
    -										<li>ULong wraps <reference class="java.math.BigInteger"/></li>
    -									</ul>
    -								</html></content>
    -							</section>
    -							
    -							<section id="data-types-intervals">
    -								<title>INTERVAL data types</title>
    -								<content><html>
    -									<p>
    -										jOOQ fills a gap opened by JDBC, which neglects an important SQL data type as defined by the SQL standards: INTERVAL types. SQL knows two different types of intervals:
    -									</p>
    -									<ul>
    -										<li><strong>YEAR TO MONTH</strong>: This interval type models a number of months and years</li>
    -										<li><strong>DAY TO SECOND</strong>: This interval type models a number of days, hours, minutes, seconds and milliseconds</li>
    -									</ul>
    -									
    -									<p>
    -										Both interval types ship with a variant of subtypes, such as DAY TO HOUR, HOUR TO SECOND, etc. jOOQ models these types as Java objects extending <reference class="java.lang.Number"/>: <reference class="org.jooq.types.YearToMonth"/> (where Number.intValue() corresponds to the absolute number of months) and <reference class="org.jooq.types.DayToSecond"/> (where Number.intValue() corresponds to the absolute number of milliseconds)
    -									</p>
    -									
    -									<h3>Interval arithmetic</h3>
    -									<p>
    -										In addition to the <reference id="arithmetic-expressions" title="arithmetic expressions"/> documented previously, interval arithmetic is also supported by jOOQ. Essentially, the following operations are supported:
    -									</p>
    -									<ul>
    -										<li>DATETIME - DATETIME => INTERVAL</li>
    -										<li>DATETIME + or - INTERVAL => DATETIME</li>
    -										<li>INTERVAL + DATETIME => DATETIME</li>
    -										<li>INTERVAL + - INTERVAL => INTERVAL</li>
    -										<li>INTERVAL * or / NUMERIC => INTERVAL</li>
    -										<li>NUMERIC * INTERVAL => INTERVAL</li>
    -									</ul>
    -								</html></content>
    -							</section>
    -							
    -							<section id="data-types-xml">
    -								<title>XML data types</title>
    -								<content><html>
    -									<p>
    -										XML data types are currently not supported
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -							<section id="data-types-geospacial">
    -								<title>Geospacial data types</title>
    -								<content><html>
    -									<h3>Geospacial data types</h3>
    -									<p>
    -										Geospacial data types are currently not supported
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -							<section id="data-types-cursors">
    -								<title>CURSOR data types</title>
    -								<content><html>
    -									<p>
    -										Some databases support cursors returned from stored procedures. They are mapped to the following jOOQ data type:
    -									</p>
    -
    -</html><java><![CDATA[Field<Result<Record>> cursor;]]></java><html>
    -									
    -									<p>
    -										In fact, such a cursor will be fetched immediately by jOOQ and wrapped in an <reference class="org.jooq.Result"/> object.
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -							<section id="data-types-arrays">
    -								<title>ARRAY and TABLE data types</title>
    -								<content><html>
    -									<p>
    -										The SQL standard specifies ARRAY data types, that can be mapped to Java arrays as such:
    -									</p>
    -									
    -</html><java><![CDATA[Field<Integer[]> intArray;]]></java><html>
    -										
    -									<p>
    -										The above array type is supported by these SQL dialects:
    -									</p>
    -									<ul>
    -										<li>H2</li>
    -										<li>HSQLDB</li>
    -										<li>Postgres</li>
    -									</ul>
    -									
    -									<h3>Oracle typed arrays</h3>
    -									<p>
    -										Oracle has strongly-typed arrays and table types (as opposed to the previously seen anonymously typed arrays). These arrays are wrapped by <reference class="org.jooq.ArrayRecord"/> types.
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="reference-bnf-notation">
    -						<title>jOOQ's BNF pseudo-notation</title>
    -						<content><html>
    -							<p>
    -								This chapter will soon contain an overview over jOOQ's API using a pseudo BNF notation.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -					<section id="reference-credits">
    -						<title>Credits</title>
    -						<content><html>
    -							<p>
    -								jOOQ lives in a very challenging ecosystem. The Java to SQL interface is still one of the most important system interfaces. Yet there are still a lot of open questions, best practices and no "true" standard has been established. This situation gave way to a lot of tools, APIs, utilities which essentially tackle the same problem domain as jOOQ. jOOQ has gotten great inspiration from pre-existing tools and this section should give them some credit. Here is a list of inspirational tools in alphabetical order:
    -							</p>
    -							<ul>
    -								<li><a href="http://avaje.org">Avajé EBean</a>: Play! Framework's preferred ORM has a feature called asynchronous query execution. This idea made it into jOOQ as <reference class="org.jooq.ResultQuery" anchor="#fetchLater()"/></li>
    -								<li><a href="http://www.hibernate.org">Hibernate</a>: The de-facto standard (JPA) with its useful table-to-POJO mapping features have influenced jOOQ's <reference class="org.jooq.ResultQuery" anchor="#fetchInto(java.lang.Class)"/> facilities</li>
    -								<li><a href="http://www.h2database.com/html/jaqu.html">JaQu</a>: H2's own fluent API for querying databases</li>
    -								<li><a href="http://www.oracle.com/technetwork/java/javaee/tech/persistence-jsp-140049.html">JPA</a>: The de-facto standard in the javax.persistence packages, supplied by Oracle. Its annotations are useful to jOOQ as well.</li>
    -								<li><a href="http://onewebsql.com">OneWebSQL</a>: A commercial SQL abstraction API with support for DAO source code generation, which was integrated also in jOOQ</li>
    -								<li><a href="http://www.querydsl.com">QueryDSL</a>: A "LINQ-port" to Java. It has a similar fluent API, a similar code-generation facility, yet quite a different purpose. While jOOQ is all about SQL, QueryDSL (like LINQ) is mostly about querying.</li>
    -								<li><a href="http://www.springsource.org/features/data-access">Spring Data</a>: Spring's JdbcTemplate knows RowMappers, which are reflected by jOOQ's <reference id="recordhandler"/> or <reference id="recordmapper"/></li>
    -							</ul>
    -						</html></content>
    -					</section>
    -				</sections>
    -			</section>
    -		</sections>
    -	</section>
    -</manual>
    diff --git a/jOOQ-website/src/main/resources/manual-2.7.xml b/jOOQ-website/src/main/resources/manual-2.7.xml
    deleted file mode 100644
    index 82c165087f..0000000000
    --- a/jOOQ-website/src/main/resources/manual-2.7.xml
    +++ /dev/null
    @@ -1,9141 +0,0 @@
    -<?xml version="1.0" encoding="UTF-8"?>
    -<!-- 
    -  - Copyright (c) 2009-2012, Lukas Eder, lukas.eder@gmail.com
    -  - All rights reserved.
    -  -
    -  - This software is licensed to you under the Apache License, Version 2.0
    -  - (the "License"); You may obtain a copy of the License at
    -  -
    -  -   http://www.apache.org/licenses/LICENSE-2.0
    -  -
    -  - Redistribution and use in source and binary forms, with or without
    -  - modification, are permitted provided that the following conditions are met:
    -  -
    -  - . Redistributions of source code must retain the above copyright notice, this
    -  -   list of conditions and the following disclaimer.
    -  -
    -  - . Redistributions in binary form must reproduce the above copyright notice,
    -  -   this list of conditions and the following disclaimer in the documentation
    -  -   and/or other materials provided with the distribution.
    -  -
    -  - . Neither the name "jOOQ" nor the names of its contributors may be
    -  -   used to endorse or promote products derived from this software without
    -  -   specific prior written permission.
    -  -
    -  - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    -  - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -  - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -  - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -  - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -  - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -  - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -  - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -  - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -  - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -  - POSSIBILITY OF SUCH DAMAGE.
    -  -->
    -<manual>
    -	<section id="manual">
    -		<title>The jOOQ User Manual. Multiple Pages</title>
    -		<content><html>
    -			<h2 id="Overview"><a href="#Overview" name="Overview">#</a> Overview</h2>
    -			<p>This manual is divided into six main sections:</p>
    -
    -			<ul>
    -				<li>
    -					<reference id="getting-started"/>
    -					<p>
    -						This section will get you started with jOOQ quickly. It contains
    -						simple explanations about what jOOQ is, what jOOQ isn't and how
    -						to set it up for the first time
    -					</p>
    -				</li>
    -				<li>
    -					<reference id="sql-building"/>
    -					<p>
    -						This section explains all about the jOOQ syntax used for building
    -						queries. It explains the central factories, the supported SQL
    -						statements and various other syntax elements
    -					</p>
    -				</li>
    -				<li>
    -					<reference id="code-generation"/>
    -					<p>
    -						This section explains how to configure and use the built-in source code
    -						generator
    -					</p>
    -				</li>
    -				<li>
    -					<reference id="sql-execution"/>
    -					<p>
    -						This section will get you through the specifics of what can be done
    -						with jOOQ at runtime, in order to execute queries, perform CRUD
    -						operations, import and export data, and hook into the jOOQ execution
    -						lifecycle for debugging
    -					</p>
    -				</li>
    -				<li>
    -					<reference id="tools"/>
    -					<p>
    -						This section is dedicated to tools that ship with jOOQ, such as the
    -						jOOQ console
    -					</p>
    -				</li>
    -				<li>
    -					<reference id="reference"/>
    -					<p>
    -						This section is a reference for elements in this manual
    -					</p>
    -				</li>
    -			</ul>
    -		</html></content>
    -
    -		<sections>
    -			<section id="preface">
    -				<title>Preface</title>
    -				<content><html>
    -					<h3>jOOQ's reason of being - compared to JPA</h3>
    -					<p>
    -						Java and SQL have come a long way. SQL is an "ancient", yet established and well-understood technology. Java is a legacy too, although its platform JVM allows for many new and contemporary languages built on top of it. Yet, after all these years, libraries dealing with the interface between SQL and Java have come and gone, leaving JPA to be a standard that is accepted only with doubts, short of any surviving options.
    -					</p>
    -					<p>
    -						So far, there had been only few database abstraction frameworks or libraries, that truly respected SQL as a first class citizen among languages. Most frameworks, including the industry standards JPA, EJB, Hibernate, JDO, Criteria Query, and many others try to hide SQL itself, minimising its scope to things called JPQL, HQL, JDOQL and various other inferior query languages
    -					</p>
    -					<p>
    -						jOOQ has come to fill this gap.
    -					</p>
    -
    -					<h3>jOOQ's reason of being - compared to LINQ</h3>
    -					<p>
    -						Other platforms incorporate ideas such as LINQ (with LINQ-to-SQL), or Scala's SLICK, or also Java's QueryDSL to better integrate querying as a concept into their respective language. By querying, they understand querying of arbitrary targets, such as SQL, XML, Collections and other heterogeneous data stores. jOOQ claims that this is going the wrong way too.
    -					</p>
    -					<p>
    - 						In more advanced querying use-cases (more than simple CRUD and the occasional JOIN), people will want to profit from the expressivity of SQL. Due to the relational nature of SQL, this is quite different from what object-oriented and partially functional languages such as C#, Scala, or Java can offer.
    - 					</p>
    - 					<p>
    - 						It is very hard to formally express and validate joins and the ad-hoc table expression types they create. It gets even harder when you want support for more advanced table expressions, such as pivot tables, unnested cursors, or just arbitrary projections from derived tables. With a very strong object-oriented typing model, these features will probably stay out of scope.
    - 					</p>
    - 					<p>
    - 						In essence, the decision of creating an API that looks like SQL or one that looks like C#, Scala, Java is a definite decision in favour of one or the other platform. While it will be easier to evolve SLICK in similar ways as LINQ (or QueryDSL in the Java world), SQL feature scope that clearly communicates its underlying intent will be very hard to add, later on (e.g. how would you model Oracle's partitioned outer join syntax? How would you model ANSI/ISO SQL:1999 grouping sets? How can you support scalar subquery caching? etc...).					
    -					</p>
    -					<p>
    -						jOOQ has come to fill this gap.
    -					</p>
    -					
    -					<h3>jOOQ is different</h3>
    -					<p>
    -						SQL was never meant to be abstracted. To be confined in the narrow boundaries of heavy mappers, hiding the beauty and simplicity of relational data. SQL was never meant to be object-oriented. SQL was never meant to be anything other than... SQL!
    -					</p>					
    -				</html></content>
    -			</section>
    -			
    -			<section id="copyright">
    -				<title>Copyright, License, and Trademarks</title>
    -				<content><html>
    -                    <p>
    -                        This section lists the various licenses that apply to different versions of jOOQ. Prior to version 3.2, jOOQ was shipped for free under the terms of the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache Software License 2.0</a>. With jOOQ 3.2, jOOQ became dual-licensed: <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache Software License 2.0</a> (for use with Open Source databases) and <a href="http://www.jooq.org/licensing">commercial</a> (for use with commercial databases). Please contact <a href="mailto:sales@datageekery.com">sales@datageekery.com</a>, should you have any questions regarding licensing.
    -                    </p>
    -                    <h3>License for jOOQ 1.x, 2.x, 3.0, 3.1</h3>
    -                    
    -</html><text>Copyright (c) 2009-2013, Lukas Eder, lukas.eder@gmail.com
    -All rights reserved.
    -
    -This software is licensed to you under the Apache License, Version 2.0
    -(the "License"); You may obtain a copy of the License at
    -
    -  http://www.apache.org/licenses/LICENSE-2.0
    -
    -Redistribution and use in source and binary forms, with or without
    -modification, are permitted provided that the following conditions are met:
    -
    -. Redistributions of source code must retain the above copyright notice, this
    -  list of conditions and the following disclaimer.
    -
    -. Redistributions in binary form must reproduce the above copyright notice,
    -  this list of conditions and the following disclaimer in the documentation
    -  and/or other materials provided with the distribution.
    -
    -. Neither the name "jOOQ" nor the names of its contributors may be
    -  used to endorse or promote products derived from this software without
    -  specific prior written permission.
    -
    -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -POSSIBILITY OF SUCH DAMAGE.</text><html>
    -
    -                    <h3>License for jOOQ 3.2 and later</h3>
    -                    
    -</html><text>Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com)
    -All rights reserved.
    -
    -This work is dual-licensed
    -- under the Apache Software License 2.0 (the "ASL")
    -- under the jOOQ License and Maintenance Agreement (the "jOOQ License")
    -=============================================================================
    -You may choose which license applies to you:
    -
    -- If you're using this work with Open Source databases, you may choose
    -  either ASL or jOOQ License.
    -- If you're using this work with at least one commercial database, you must
    -  choose jOOQ License
    -
    -For more information, please visit http://www.jooq.org/licenses
    -
    -Apache Software License 2.0:
    ------------------------------------------------------------------------------
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    - http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -
    -jOOQ License and Maintenance Agreement:
    ------------------------------------------------------------------------------
    -Data Geekery grants the Customer the non-exclusive, timely limited and
    -non-transferable license to install and use the Software under the terms of
    -the jOOQ License and Maintenance Agreement.
    -
    -This library is distributed with a LIMITED WARRANTY. See the jOOQ License
    -and Maintenance Agreement for more details: http://www.jooq.org/licensing</text><html>
    -
    -                    <h3>Trademarks owned by Data Geekeryâ„¢ GmbH</h3>
    -                    <ul>
    -                        <li>jOOQâ„¢ is a trademark by Data Geekeryâ„¢ GmbH</li>
    -                        <li>jOOXâ„¢ is a trademark by Data Geekeryâ„¢ GmbH</li>
    -                        <li>jOORâ„¢ is a trademark by Data Geekeryâ„¢ GmbH</li>
    -                        <li>jOOUâ„¢ is a trademark by Data Geekeryâ„¢ GmbH</li>
    -                    </ul>
    -                    
    -                    <h3>Trademarks owned by database vendors with no affiliation to Data Geekeryâ„¢ GmbH</h3>
    -                    <ul>
    -                        <li>Access® is a registered trademark of Microsoft® Inc.</li>
    -                        <li>Adaptive Server® Enterprise is a registered trademark of Sybase®, Inc.</li>
    -                        <li>CUBRID™ is a trademark of NHN® Corp.</li>
    -                        <li>DB2® is a registered trademark of IBM® Corp.</li>
    -                        <li>Derby is a trademark of the Apacheâ„¢ Software Foundation</li>
    -                        <li>H2 is a trademark of the H2 Group</li>
    -                        <li>HSQLDB is a trademark of The hsql Development Group</li>
    -                        <li>Ingres is a trademark of Actianâ„¢ Corp.</li>
    -                        <li>MariaDB is a trademark of Monty Program Ab</li>
    -                        <li>MySQL® is a registered trademark of Oracle® Corp.</li>
    -                        <li>Firebird® is a registered trademark of Firebird Foundation Inc.</li>
    -                        <li>Oracle® database is a registered trademark of Oracle® Corp.</li>
    -                        <li>PostgreSQL® is a registered trademark of The PostgreSQL Global Development Group</li>
    -                        <li>Postgres Plus® is a registered trademark of EnterpriseDB® software</li>
    -                        <li>SQL Anywhere® is a registered trademark of Sybase®, Inc.</li>
    -                        <li>SQL Server® is a registered trademark of Microsoft® Inc.</li>
    -                        <li>SQLite is a trademark of Hipp, Wyrick &amp; Company, Inc.</li>
    -                    </ul>
    -                    
    -                    <h3>Other trademarks by vendors with no affiliation to Data Geekeryâ„¢ GmbH</h3>
    -                    <ul>
    -                        <li>Java® is a registered trademark by Oracle® Corp. and/or its affiliates</li>
    -                        <li>Scala is a trademark of EPFL</li>
    -                    </ul>
    -                    
    -                    <h3>Other trademark remarks</h3>
    -                    <p>
    -                        Other names may be trademarks of their respective owners.
    -                    </p>
    -                    
    -                    <p>
    -                        Throughout the manual, the above trademarks are referenced without a formal ® (R) or ™ (TM) symbol. It is believed that referencing third-party trademarks in this manual or on the jOOQ website constitutes "fair use". Please <a href="mailto:contact@datageekery.com">contact us</a> if you think that your trademark(s) are not properly attributed.
    -                    </p>
    -				</html></content>
    -			</section>
    -			
    -			<section id="getting-started">
    -				<title>Getting started with jOOQ</title>
    -				<content><html>
    -					<p>
    -						These chapters contain a quick overview of how to get started with this manual and with jOOQ. While the subsequent chapters contain a lot of reference information, this chapter here just wraps up the essentials.
    -					</p>
    -				</html></content>
    -
    -				<sections>
    -					<section id="the-manual">
    -					    <title>How to read this manual</title>
    -						<content><html>
    -							<p>
    -								This section helps you correctly interpret this manual in the context of jOOQ.
    -							</p>
    -							
    -							<h3>Code blocks</h3>
    -							<p>
    -								The following are code blocks:
    -							</p>
    -							
    -</html><sql><![CDATA[-- A SQL code block
    -SELECT 1 FROM DUAL]]></sql><java><![CDATA[// A Java code block
    -for (int i = 0; i < 10; i++);]]></java><xml><![CDATA[<!-- An XML code block -->
    -<hello what="world"></hello>]]></xml><config><![CDATA[# A config file code block
    -org.jooq.property=value]]></config><html>		
    -
    -							<p>
    -								These are useful to provide examples in code. Often, with jOOQ, it is even more useful to compare SQL code with its corresponding Java/jOOQ code. When this is done, the blocks are aligned side-by-side, with SQL usually being on the left, and Java usually being on the right:
    -							</p>					
    -							
    -</html><code-pair>
    -<sql><![CDATA[-- In SQL:
    -SELECT 1 FROM DUAL]]></sql><java><![CDATA[// Using jOOQ:
    -create.select()]]></java>
    -</code-pair><html>
    -
    -							<h3>Code block contents</h3>
    -							<p>
    -								The contents of code blocks follow conventions, too. If nothing else is mentioned next to any given code block, then the following can be assumed:
    -							</p>
    -							
    -							
    -</html><sql><![CDATA[-- SQL assumptions
    -------------------
    -
    --- If nothing else is specified, assume that the Oracle syntax is used 
    -SELECT 1 FROM DUAL]]></sql><java><![CDATA[// Java assumptions
    -// ----------------
    - 
    -// Whenever you see "standalone functions", assume they were static imported from org.jooq.impl.Factory 
    -exists(); max(); min(); val(); inline(); // correspond to Factory.exists(); Factory.max(); Factory.min(); etc...
    -
    -// Whenever you see BOOK/Book, AUTHOR/Author and similar entities, assume they were (static) imported from the generated schema
    -BOOK.TITLE, AUTHOR.LAST_NAME // correspond to com.example.generated.Tables.BOOK.TITLE, com.example.generated.Tables.BOOK.TITLE
    -
    -// Whenever you see "create" being used in Java code, assume that this is an instance of org.jooq.impl.Factory:
    -Factory create = new Factory(connection, SQLDialect.ORACLE);]]></java><html>
    -
    -							<h3>Settings</h3>
    -							<p>
    -								jOOQ allows to override runtime behaviour using <reference class="org.jooq.conf.Settings"/>. If nothing is specified, the default runtime settings are assumed.
    -							</p>
    -							
    -							<h3>Sample database</h3>
    -							<p>
    -								See the manual's section about <reference id="sample-database" title="the sample database used in this manual"/> to learn more about the sample database.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -					<section id="sample-database">
    -					    <title>The sample database used in this manual</title>
    -						<content><html>
    -							<p>
    -							For the examples in this manual, the same database will always be referred to. It essentially consists of these entities created using the Oracle dialect
    -							</p>
    -</html><sql>CREATE TABLE language (
    -  id              NUMBER(7)     NOT NULL PRIMARY KEY,
    -  cd              CHAR(2)       NOT NULL,
    -  description     VARCHAR2(50)
    -)
    -
    -CREATE TABLE author (
    -  id              NUMBER(7)     NOT NULL PRIMARY KEY,
    -  first_name      VARCHAR2(50),
    -  last_name       VARCHAR2(50)  NOT NULL,
    -  date_of_birth   DATE,
    -  year_of_birth   NUMBER(7),
    -  distinguished   NUMBER(1)
    -)
    -
    -CREATE TABLE book (
    -  id              NUMBER(7)     NOT NULL PRIMARY KEY,
    -  author_id       NUMBER(7)     NOT NULL,
    -  title           VARCHAR2(400) NOT NULL,
    -  published_in    NUMBER(7)     NOT NULL,
    -  language_id     NUMBER(7)     NOT NULL,
    -  
    -  CONSTRAINT fk_book_author     FOREIGN KEY (author_id)   REFERENCES author(id),
    -  CONSTRAINT fk_book_language   FOREIGN KEY (language_id) REFERENCES language(id)
    -)
    -
    -CREATE TABLE book_store (
    -  name            VARCHAR2(400) NOT NULL UNIQUE
    -)
    -
    -CREATE TABLE book_to_book_store (
    -  name            VARCHAR2(400) NOT NULL,
    -  book_id         INTEGER       NOT NULL,
    -  stock           INTEGER,
    -  
    -  PRIMARY KEY(name, book_id),
    -  CONSTRAINT fk_b2bs_book_store FOREIGN KEY (name)        REFERENCES book_store (name) ON DELETE CASCADE,
    -  CONSTRAINT fk_b2bs_book       FOREIGN KEY (book_id)     REFERENCES book (id)         ON DELETE CASCADE
    -)</sql><html>
    -							<p>
    -								More entities, types (e.g. UDT's, ARRAY types, ENUM types, etc), stored procedures and packages are introduced for specific examples
    -							</p>
    -						</html></content>
    -					</section>
    -
    -					<section id="use-cases">
    -						<title>Different use cases for jOOQ</title>
    -						<content><html>
    -							<p>
    -								jOOQ has originally been created as a library for complete abstraction of JDBC and all database interaction. Various best practices that are frequently encountered in pre-existing software products are applied to this library. This includes:
    -							</p>
    -							<ul>
    -								<li>Typesafe database object referencing through generated schema, table, column, record, procedure, type, dao, pojo artefacts (see the chapter about <reference id="code-generation" title="code generation"/>)</li>
    -								<li>Typesafe SQL construction through a complete API modelling SQL as a domain specific language in Java (see the chapter about <reference id="dsl-and-non-dsl" title="the DSL API"/>)</li>
    -								<li>Convenient query execution through an improved API for result fetching (see the chapters about <reference id="fetching" title="the various types of data fetching"/>)</li>
    -								<li>SQL dialect abstraction and SQL clause simulation to improve cross-database compatibility and to enable missing features in simpler databases (see the chapter about <reference id="sql-dialects" title="SQL dialects"/>)</li>
    -								<li>SQL logging and debugging using jOOQ as an integral part of your development process (see the chapters about <reference id="logging" title="logging"/> and about the <reference id="jooq-console" title="jOOQ Console"/>)</li>
    -							</ul>
    -							<p>
    -								Effectively, jOOQ was originally designed to replace any other database abstraction framework short of the ones handling connection pooling and transaction management (see also the <reference id="reference-credits" title="credits for other database abstraction libraries"/>)
    -							</p>
    -							
    -							<h3>Use jOOQ the way you prefer</h3>
    -							<p>
    -								... but open source is community-driven. And the community has shown various ways of using jOOQ that diverge from its original intent. Some use cases encountered are:
    -							</p>
    -							<ul>
    -								<li>Using Hibernate for 70% of the queries (i.e. <reference id="crud-with-updatablerecords" title="CRUD"/>) and jOOQ for the remaining 30% where SQL is really needed</li>
    -								<li>Using jOOQ for SQL building and JDBC for SQL execution</li> 
    -								<li>Using jOOQ for SQL building and Spring Data for SQL execution</li>
    -								<li>Using jOOQ without the <reference id="code-generation" title="source code generator"/> to build the basis of a framework for dynamic SQL execution.</li> 
    -							</ul>
    -							
    -							<p>
    -								The following sections explain about various use cases for using jOOQ in your application.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="jooq-as-a-standalone-sql-builder">
    -								<title>jOOQ as a SQL builder</title>
    -								<content><html>
    -									<p>
    -										This is the most simple of all use cases, allowing for construction of valid SQL for any database. In this use case, you will not use <reference id="jooq-as-a-sql-builder-with-code-generation" title="jOOQ's code generator"/> and probably not even <reference id="jooq-as-a-sql-executor" title="jOOQ's query execution facilities"/>. Instead, you'll use jOOQ to wrap strings, literals and other user-defined objects into an object-oriented, type-safe AST modelling your SQL statements. An example is given here: 
    -									</p>
    -									
    -</html><java><![CDATA[// Fetch a SQL string from a jOOQ Query in order to manually execute it with another tool.
    -String sql = create.select(fieldByName("BOOK","TITLE"), fieldByName("AUTHOR","FIRST_NAME"), fieldByName("AUTHOR","LAST_NAME"))
    -                   .from(tableByName("BOOK"))
    -                   .join(tableByName("AUTHOR"))
    -                   .on(fieldByName("BOOK", "AUTHOR_ID").equal("AUTHOR", "ID"))
    -                   .where(fieldByName("BOOK", "PUBLISHED_IN").equal(1948))
    -                   .getSQL();]]></java><html>
    -                   
    -                   					<p>
    -                   						The SQL string that you can generate as such can then be executed using JDBC directly, using Spring's JdbcTemplate, using Apache DbUtils and many other tools.
    -                   					</p>
    -                   					<p>
    -                   						If you wish to use jOOQ only as a SQL builder, the following sections of the manual will be of interest to you:
    -                  					</p>
    -                  					<ul>
    -                  						<li><reference id="sql-building" title="SQL building"/>: This section contains a lot of information about creating SQL statements using the jOOQ API</li>
    -                  						<li><reference id="plain-sql" title="Plain SQL"/>: This section contains information useful in particular to those that want to supply <reference id="table-expressions" title="table expressions"/>, <reference id="column-expressions" title="column expressions"/>, etc. as plain SQL to jOOQ, rather than through generated artefacts</li>
    -                  					</ul>
    -								</html></content>
    -							</section>
    -
    -							<section id="jooq-as-a-sql-builder-with-code-generation">
    -								<title>jOOQ as a SQL builder with code generation</title>
    -								<content><html>
    -									<p>
    -										In addition to using jOOQ as a <reference id="jooq-as-a-standalone-sql-builder" title="standalone SQL builder"/>, you can also use jOOQ's code generation features in order to compile your SQL statements using a Java compiler against an actual database schema. This adds a lot of power and expressiveness to just simply constructing SQL using custom strings and literals, as you can be sure that all database artefacts actually exist in the database, and that their type is correct. An example is given here: 
    -									</p>
    -
    -</html><java><![CDATA[// Fetch a SQL string from a jOOQ Query in order to manually execute it with another tool.
    -String sql = create.select(BOOK.TITLE, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -                   .from(BOOK)
    -                   .join(AUTHOR)
    -                   .on(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -                   .where(BOOK.PUBLISHED_IN.equal(1948))
    -                   .getSQL();]]></java><html>
    -                   
    -                   					<p>
    -                   						The SQL string that you can generate as such can then be executed using JDBC directly, using Spring's JdbcTemplate, using Apache DbUtils and many other tools.
    -                   					</p>
    -                   					<p>
    -                   						If you wish to use jOOQ only as a SQL builder with code generation, the following sections of the manual will be of interest to you:
    -                  					</p>
    -                  					<ul>
    -                  						<li><reference id="sql-building" title="SQL building"/>: This section contains a lot of information about creating SQL statements using the jOOQ API</li>
    -                  						<li><reference id="code-generation" title="Code generation"/>: This section contains the necessary information to run jOOQ's code generator against your developer database</li>
    -                  					</ul>
    -								</html></content>
    -							</section>
    -
    -							<section id="jooq-as-a-sql-executor">
    -								<title>jOOQ as a SQL executor</title>
    -								<content><html>
    -									<p>
    -										Instead of any tool mentioned in the previous chapters, you can also use jOOQ directly to execute your jOOQ-generated SQL statements. This will add a lot of convenience on top of the previously discussed API for typesafe SQL construction, when you can re-use the information from generated classes to fetch records and custom data types. An example is given here:
    -									</p>
    -									
    -</html><java><![CDATA[// Execute the SQL statement directly with jOOQ
    -Result<Record> result = create.select(BOOK.TITLE, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -			                  .from(BOOK)
    -			                  .join(AUTHOR)
    -			                  .on(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -			                  .where(BOOK.PUBLISHED_IN.equal(1948))
    -			                  .fetch();]]></java><html>
    -
    -									<p>
    -										jOOQ doesn't stop here, though! You can execute any SQL with jOOQ. In other words, you can use any other SQL building tool and run the SQL statements with jOOQ. An example is given here:
    -									</p>
    -
    -</html><java><![CDATA[// Use your favourite tool to construct SQL strings:
    -String sql = "SELECT title, first_name, last_name FROM book JOIN author ON book.author_id = author.id " +
    -             "WHERE book.published_in = 1984";
    -
    -// Fetch results using jOOQ
    -Result<Record> result = create.fetch(sql);
    -
    -// Or execute that SQL with JDBC, fetching the ResultSet with jOOQ:
    -ResultSet rs = connection.createStatement().executeQuery(sql);
    -Result<Record> result = create.fetch(rs);]]></java><html>
    -
    -									<p>
    -                   						If you wish to use jOOQ as a SQL executor with (or without) code generation, the following sections of the manual will be of interest to you:
    -                  					</p>
    -                  					<ul>
    -                  						<li><reference id="sql-building" title="SQL building"/>: This section contains a lot of information about creating SQL statements using the jOOQ API</li>
    -                  						<li><reference id="code-generation" title="Code generation"/>: This section contains the necessary information to run jOOQ's code generator against your developer database</li>
    -                  						<li><reference id="sql-execution" title="SQL execution"/>: This section contains a lot of information about executing SQL statements using the jOOQ API</li>
    -                  						<li><reference id="fetching"/>: This section contains some useful information about the various ways of fetching data with jOOQ</li>
    -                  					</ul>
    -								</html></content>
    -							</section>
    -
    -							<section id="jooq-for-crud">
    -								<title>jOOQ for CRUD</title>
    -								<content><html>
    -									<p>
    -										This is probably the most complete use-case for jOOQ: Use all of jOOQ's features. Apart from jOOQ's fluent API for query construction, jOOQ can also help you execute everyday CRUD operations. An example is given here:
    -									</p>
    -
    -</html><java><![CDATA[// Fetch all authors
    -for (AuthorRecord author : create.fetch(AUTHOR)) {
    -
    -    // Skip previously distinguished authors  
    -    if ((int) author.getDistinguished() == 1)
    -        continue;
    -  
    -    // Check if the author has written more than 5 books
    -    if (author.fetchChildren(FK_BOOK_AUTHOR).size() > 5) {
    -    
    -        // Mark the author as a "distinguished" author
    -        author.setDistinguished(1);
    -        author.store();
    -    }
    -}]]></java><html>
    -
    -									<p>
    -                   						If you wish to use all of jOOQ's features, the following sections of the manual will be of interest to you (including all sub-sections):
    -                  					</p>
    -                  					<ul>
    -                  						<li><reference id="sql-building" title="SQL building"/>: This section contains a lot of information about creating SQL statements using the jOOQ API</li>
    -                  						<li><reference id="code-generation" title="Code generation"/>: This section contains the necessary information to run jOOQ's code generator against your developer database</li>
    -                  						<li><reference id="sql-execution" title="SQL execution"/>: This section contains a lot of information about executing SQL statements using the jOOQ API</li>
    -                  					</ul>
    -								</html></content>
    -							</section>
    -							
    -							<section id="jooq-for-pros">
    -								<title>jOOQ for PROs</title>
    -								<content><html>
    -									<p>
    -										jOOQ isn't just a library that helps you <reference id="sql-building" title="build"/> and <reference id="sql-execution" title="execute"/> SQL against your <reference id="code-generation" title="generated, compilable schema"/>. jOOQ ships with a lot of tools. Here are some of the most important tools shipped with jOOQ:
    -									</p>
    -									<ul>
    -										<li><reference id="jooq-console" title="jOOQ Console"/>: This small application hooks into jOOQ's execute listener support to allow for tracing, debugging and introspecting any SQL statement executed through the jOOQ API. This includes setting breakpoints, introspecting bind values, running probe SQL statements, ad-hoc patching of SQL, measuring execution times, exporting stack traces. Use this tool to better know your SQL!</li>
    -										<li><reference id="execute-listeners" title="jOOQ's Execute Listeners"/>: jOOQ allows you to hook your custom execute listeners into jOOQ's SQL statement execution lifecycle in order to centrally coordinate any arbitrary operation performed on SQL being executed. Use this for logging, identity generation, SQL tracing, performance measurements, etc.</li>
    -										<li><reference id="logging" title="Logging"/>: jOOQ has a standard DEBUG logger built-in, for logging and tracing all your executed SQL statements and fetched result sets</li>
    -										<li><reference id="stored-procedures" title="Stored Procedures"/>: jOOQ supports stored procedures and functions of your favourite database. All routines and user-defined types are generated and can be included in jOOQ's SQL building API as function references.</li>
    -										<li><reference id="exporting" title="Exporting"/> and <reference id="importing" title="Importing"/>: jOOQ ships with an API to easily export/import data in various formats</li>
    -									</ul>
    -									<p>
    -										If you're a power user of your favourite, feature-rich database, jOOQ will help you access all of your database's vendor-specific features, such as OLAP features, stored procedures, user-defined types, vendor-specific SQL, functions, etc. Examples are given throughout this manual.
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="tutorials">
    -						<title>Tutorials</title>
    -						<content><html>
    -							<p>
    -								Don't have time to read the full manual? Here are a couple of tutorials that will get you into the most essential parts of jOOQ as quick as possible.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="jooq-in-7-steps">
    -								<title>jOOQ in 7 easy steps</title>
    -								<content><html>
    -									<p>
    -										This manual section is intended for new users, to help them get a running application with jOOQ, quickly.
    -									</p>
    -								</html></content>
    -								
    -								<sections>
    -									<section id="jooq-in-7-steps-step1">
    -										<title>Step 1: Preparation</title>
    -										<content><html>
    -											<p>
    -												If you haven't already downloaded it, download jOOQ:<br/>
    -												<a href="https://sourceforge.net/projects/jooq/files/Release/" title="jOOQ download">https://sourceforge.net/projects/jooq/files/Release/</a>
    -											</p>
    -											
    -											<p>
    -												Alternatively, you can create a Maven dependency:
    -											</p>
    -</html><xml><![CDATA[<dependency>
    -  <groupId>org.jooq</groupId>
    -  <!-- artefacts are jooq, jooq-meta, jooq-codegen -->
    -  <artifactId>jooq</artifactId>
    -  <version>{jooq-version}</version>
    -</dependency>]]></xml><html>
    -
    -											<p>
    -												For this example, we'll be using MySQL. If you haven't already downloaded MySQL Connector/J, download it here:<br/>
    -												<a href="http://dev.mysql.com/downloads/connector/j/" target="_blank" title="MySQL JDBC driver">http://dev.mysql.com/downloads/connector/j/</a>
    -											</p>
    -
    -											<p>
    -												If you don't have a MySQL instance up and running yet, get <a href="http://www.apachefriends.org/en/xampp.html" title="XAMPP">XAMPP</a> now! XAMPP is a simple installation bundle for Apache, MySQL, PHP and Perl
    -											</p>
    -										</html></content>
    -									</section>
    -									
    -									<section id="jooq-in-7-steps-step2">
    -										<title>Step 2: Your database</title>
    -										<content><html>
    -											<p>
    -												We're going to create a database called "guestbook" and a corresponding "posts" table. Connect to MySQL via your command line client and type the following:
    -											</p>
    -											
    -</html><sql>CREATE DATABASE guestbook;
    -
    -CREATE TABLE `posts` (
    -  `id` bigint(20) NOT NULL,
    -  `body` varchar(255) DEFAULT NULL,
    -  `timestamp` datetime DEFAULT NULL,
    -  `title` varchar(255) DEFAULT NULL,
    -  PRIMARY KEY (`id`)
    -);
    -</sql></content>
    -									</section>
    -									
    -									<section id="jooq-in-7-steps-step3">
    -										<title>Step 3: Code generation</title>
    -										<content><html>
    -											<p>
    -												In this step, we're going to use jOOQ's command line tools to generate classes that map to the Posts table we just created. More detailed information about how to set up the jOOQ code generator can be found here:<br/>
    -												<reference id="code-generation" title="jOOQ manual pages about setting up the code generator"/>
    -											</p>
    -
    -											<p>
    -												The easiest way to generate a schema is to copy the jOOQ jar files (there should be 3) and the MySQL Connector jar file to a temporary directory. Then, create a guestbook.xml that looks like this:
    -											</p>
    -											
    -</html><xml><![CDATA[<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    -<configuration xmlns="http://www.jooq.org/xsd/jooq-codegen-2.5.0.xsd">
    -  <!-- Configure the database connection here -->
    -  <jdbc>
    -    <driver>com.mysql.jdbc.Driver</driver>
    -    <url>jdbc:mysql://localhost:3306/guestbook</url>
    -    <user>root</user>
    -    <password></password>
    -  </jdbc>
    -
    -  <generator>
    -    <!-- The default code generator. You can override this one, to generate your own code style
    -         Defaults to org.jooq.util.DefaultGenerator -->
    -    <name>org.jooq.util.DefaultGenerator</name>
    -
    -    <database>
    -      <!-- The database type. The format here is:
    -           org.util.[database].[database]Database -->
    -      <name>org.jooq.util.mysql.MySQLDatabase</name>
    -
    -      <!-- The database schema (or in the absence of schema support, in your RDBMS this
    -           can be the owner, user, database name) to be generated -->
    -      <inputSchema>guestbook</inputSchema>
    -
    -      <!-- All elements that are generated from your schema (several Java regular expressions, separated by comma)
    -           Watch out for case-sensitivity. Depending on your database, this might be important! -->
    -      <includes>.*</includes>
    -
    -      <!-- All elements that are excluded from your schema (several Java regular expressions, separated by comma).
    -              Excludes match before includes -->
    -      <excludes></excludes>
    -    </database>
    -
    -    <target>
    -      <!-- The destination package of your generated classes (within the destination directory) -->
    -      <packageName>test.generated</packageName>
    -
    -      <!-- The destination directory of your generated classes -->
    -      <directory>C:/workspace/MySQLTest/src</directory>
    -    </target>
    -  </generator>
    -</configuration>]]></xml><html>
    -											<p>
    -												Replace the username with whatever user has the appropriate privileges to query the database meta data. You'll also want to look at the other values and replace as necessary. Here are the two interesting properties:
    -											</p>
    -											<p>
    -												<code>generator.target.package</code> - set this to the parent package you want to create for the generated classes. The setting of <code>test.generated</code> will cause the <code>test.generated.Posts</code> and <code>test.generated.PostsRecord</code> to be created
    -											</p>
    -											<p>
    -												<code>generator.target.directory</code> - the directory to output to.
    -											</p>
    -											
    -											<p>
    -												Once you have the JAR files and guestbook.xml in your temp directory, type this (use colons instead of semi-colons on UNIX/Linux systems):
    -											</p>
    -
    -</html><text>java -classpath jooq-{jooq-version}.jar;jooq-meta-{jooq-version}.jar;jooq-codegen-{jooq-version}.jar;mysql-connector-java-5.1.18-bin.jar;. 
    -  org.jooq.util.GenerationTool /guestbook.xml
    -</text><html>
    -
    -											<p>
    -												Note the prefix slash before guestbook.xml. Even though it's in our working directory, we need to prepend a slash, as the configuration file is loaded from the classpath. Replace the filenames with your filenames. In this example, jOOQ {jooq-version} is being used. If everything has worked, you should see this in your console output:
    -											</p>
    -
    -</html><text>Nov 1, 2011 7:25:06 PM org.jooq.impl.JooqLogger info
    -INFO: Initialising properties  : /guestbook.xml
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Database parameters
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: ----------------------------------------------------------
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO:   dialect                : MYSQL
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO:   schema                 : guestbook
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO:   target dir             : /Users/jOOQ/Documents/workspace/MySQLTest/src
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO:   target package         : test.generated
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: ----------------------------------------------------------
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Emptying                 : /Users/jOOQ/workspace/MySQLTest/src/test/generated
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Generating classes in    : /Users/jOOQ/workspace/MySQLTest/src/test/generated
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Generating schema        : Guestbook.java
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Schema generated         : Total: 122.18ms
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Sequences fetched        : 0 (0 included, 0 excluded)
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Masterdata tables fetched: 0 (0 included, 0 excluded)
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Tables fetched           : 5 (5 included, 0 excluded)
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Generating tables        : /Users/jOOQ/workspace/MySQLTest/src/test/generated/tables
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: ARRAYs fetched           : 0 (0 included, 0 excluded)
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Enums fetched            : 0 (0 included, 0 excluded)
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: UDTs fetched             : 0 (0 included, 0 excluded)
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Generating table         : Posts.java
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Tables generated         : Total: 680.464ms, +558.284ms
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Generating Keys          : /Users/jOOQ/workspace/MySQLTest/src/test/generated/tables
    -Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info
    -INFO: Keys generated           : Total: 718.621ms, +38.157ms
    -Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info
    -INFO: Generating records       : /Users/jOOQ/workspace/MySQLTest/src/test/generated/tables/records
    -Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info
    -INFO: Generating record        : PostsRecord.java
    -Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info
    -INFO: Table records generated  : Total: 782.545ms, +63.924ms
    -Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info
    -INFO: Routines fetched         : 0 (0 included, 0 excluded)
    -Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info
    -INFO: Packages fetched         : 0 (0 included, 0 excluded)
    -Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info
    -INFO: GENERATION FINISHED!     : Total: 791.688ms, +9.143ms
    -</text></content>
    -									</section>
    -									
    -									<section id="jooq-in-7-steps-step4">
    -										<title>Step 4: Connect to your database</title>
    -										<content><html>
    -											<p>
    -												Let's just write a vanilla main class in the project containing the generated classes:
    -											</p>
    -											
    -</html><java><![CDATA[// For convenience, always static import your generated tables and jOOQ functions to decrease verbosity:
    -import static test.generated.Tables.*;
    -import static org.jooq.impl.Factory.*;
    -
    -public class Main {
    -    public static void main(String[] args) {
    -        Connection conn = null;
    -
    -        String userName = "root";
    -        String password = "";
    -        String url = "jdbc:mysql://localhost:3306/guestbook";
    -
    -        try {
    -            Class.forName("com.mysql.jdbc.Driver").newInstance();
    -            conn = DriverManager.getConnection(url, userName, password);
    -        } catch (Exception e) {
    -            // For the sake of this tutorial, let's keep exception handling simple
    -            e.printStackTrace();
    -        } finally {
    -            if (conn != null) {
    -                try {
    -                    conn.close();
    -                } catch (SQLException ignore) {
    -                }
    -            }
    -        }
    -    }
    -}]]></java><html>
    -
    -											<p>
    -												This is pretty standard code for establishing a MySQL connection.
    -											</p>
    -										</html></content>
    -									</section>
    -									
    -									<section id="jooq-in-7-steps-step5">
    -										<title>Step 5: Querying</title>
    -										<content><html>
    -											<p>
    -												Let's add a simple query:
    -											</p>
    -											
    -</html><java><![CDATA[Factory create = new Factory(conn, SQLDialect.MYSQL);
    -Result<Record> result = create.select().from(POSTS).fetch();]]></java><html>
    -
    -											<p>
    -												First get an instance of <code>Factory</code> so we can write a simple <code>SELECT</code> query. We pass an instance of the MySQL connection to <code>Factory</code>. Note that the factory doesn't close the connection. We'll have to do that ourselves.
    -											</p>
    -											<p>
    -												We then use jOOQ's DSL to return an instance of Result. We'll be using this result in the next step.
    -											</p>
    -										</html></content>
    -									</section>
    -									
    -									<section id="jooq-in-7-steps-step6">
    -										<title>Step 6: Iterating</title>
    -										<content><html>
    -											<p>
    -												After the line where we retrieve the results, let's iterate over the results and print out the data:
    -											</p>
    -
    -</html><java><![CDATA[for (Record r : result) {
    -    Long id = r.getValue(POSTS.ID);
    -    String title = r.getValue(POSTS.TITLE);
    -    String description = r.getValue(POSTS.BODY);
    -
    -    System.out.println("ID: " + id + " title: " + title + " desciption: " + description);
    -}]]></java><html>
    -
    -											<p>
    -												The full program should now look like this:
    -											</p>
    -											
    -</html><java><![CDATA[package test;
    -
    -// For convenience, always static import your generated tables and
    -// jOOQ functions to decrease verbosity:
    -import static test.generated.Tables.*;
    -import static org.jooq.impl.Factory.*;
    -
    -import java.sql.Connection;
    -import java.sql.DriverManager;
    -import java.sql.ResultSet;
    -import java.sql.Statement;
    -
    -import org.jooq.Record;
    -import org.jooq.Result;
    -
    -import test.generated.GuestbookFactory;
    -import test.generated.tables.Posts;
    -
    -public class Main {
    -
    -    /**
    -     * @param args
    -     */
    -    public static void main(String[] args) {
    -        Connection conn = null;
    -
    -        String userName = "root";
    -        String password = "";
    -        String url = "jdbc:mysql://localhost:3306/guestbook";
    -
    -        try {
    -            Class.forName("com.mysql.jdbc.Driver").newInstance();
    -            conn = DriverManager.getConnection(url, userName, password);
    -
    -            Factory create = new Factory(conn, SQLDialect.MYSQL);
    -            Result<Record> result = create.select().from(POSTS).fetch();
    -
    -            for (Record r : result) {
    -                Long id = r.getValue(POSTS.ID);
    -                String title = r.getValue(POSTS.TITLE);
    -                String description = r.getValue(POSTS.BODY);
    -
    -                System.out.println("ID: " + id + " title: " + title + " desciption: " + description);
    -            }
    -        } catch (Exception e) {
    -            // For the sake of this tutorial, let's keep exception handling simple
    -            e.printStackTrace();
    -        } finally {
    -            if (conn != null) {
    -                try {
    -                    conn.close();
    -                } catch (SQLException ignore) {
    -                }
    -            }
    -        }
    -    }
    -}]]></java></content>
    -									</section>
    -									
    -									<section id="jooq-in-7-steps-step7">
    -										<title>Step 7: Explore!</title>
    -										<content><html>
    -											<p>
    -												jOOQ has grown to be a comprehensive SQL library. For more information, please consider the manual:<br/>
    -												<a href="http://www.jooq.org/manual/" title="jOOQ Manual">http://www.jooq.org/manual/</a>
    -											</p>
    -											<p>
    -												... explore the Javadoc:<br/>
    -												<a href="http://www.jooq.org/javadoc/latest/" title="jOOQ Javadoc">http://www.jooq.org/javadoc/latest/</a>
    -											</p>
    -											<p>
    -												... or join the news group:<br/>
    -												<a href="https://groups.google.com/forum/#!forum/jooq-user" title="jOOQ news group">https://groups.google.com/forum/#!forum/jooq-user</a>
    -											</p>
    -											<p>
    -											    This tutorial is the courtesy of Ikai Lan. See the original source here:<br/>
    -											    <a href="http://ikaisays.com/2011/11/01/getting-started-with-jooq-a-tutorial/" target="_blank" title="Ikai Lan's jOOQ tutorial">http://ikaisays.com/2011/11/01/getting-started-with-jooq-a-tutorial/</a>
    -											</p>
    -										</html></content>
    -									</section>
    -								</sections>
    -							</section>
    -
    -							<section id="jooq-in-modern-ides">
    -								<title>Using jOOQ in modern IDEs</title>
    -								<content><html>
    -									<p>Feel free to contribute a tutorial!</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="jooq-with-spring">
    -								<title>Using jOOQ with Spring</title>
    -								<content><html>
    -									<p>Feel free to contribute a tutorial!</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="a-simple-web-application">
    -								<title>A simple web application with jOOQ</title>
    -								<content><html>
    -									<p>Feel free to contribute a tutorial!</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -					
    -					<section id="jooq-and-scala">
    -						<title>jOOQ and Scala</title>
    -						<content><html>
    -							<p>
    -								As any other library, jOOQ can be easily used in Scala, taking advantage of the many Scala language features such as for example:
    -							</p>
    -							<ul>
    -								<li>Optional "." to dereference methods from expressions</li>
    -								<li>Optional "(" and ")" to delimit method argument lists</li>
    -								<li>Optioanl ";" at the end of a Scala statement</li>
    -								<li>Type inference using "var" and "val" keywords</li>
    -							</ul>
    -						
    -							<p>
    -								But jOOQ also leverages other useful Scala features, such as
    -							</p>
    -							<ul>
    -								<li>implicit defs for operator overloading</li>
    -								<li>Scala Macros (soon to come)</li>
    -							</ul>
    -							
    -							<p>
    -								A short example jOOQ application in Scala might look like this:
    -							</p>
    -							
    -</html><scala><![CDATA[
    -import collection.JavaConversions._                                  // Import implicit defs for iteration over org.jooq.Result
    -                                                                     //
    -import java.sql.DriverManager                                        //
    -                                                                     //
    -import org.jooq._                                                    //
    -import org.jooq.impl._                                               //
    -import org.jooq.impl.Factory._                                       //
    -import org.jooq.scala.example.h2.Tables._                            //
    -import org.jooq.scala.Conversions._                                  // Import implicit defs for overloaded jOOQ/SQL operators
    -                                                                     //
    -object Test {                                                        //
    -  def main(args: Array[String]): Unit = {                            //
    -    val c = DriverManager.getConnection("jdbc:h2:~/test", "sa", ""); // Standard JDBC connection
    -    val f = new Factory(c, SQLDialect.H2);                           //
    -    val x = T_AUTHOR as "x"                                          // SQL-esque table aliasing
    -                                                                     //
    -    for (r <- f                                                      // Iteration over Result. "r" is an org.jooq.Record
    -        select (                                                     //
    -          T_BOOK.ID * T_BOOK.AUTHOR_ID,                              // Using the overloaded "*" operator
    -          T_BOOK.ID + T_BOOK.AUTHOR_ID * 3 + 4,                      // Using the overloaded "+" operator
    -          T_BOOK.TITLE || " abc" || " xy"                            // Using the overloaded "||" operator
    -        )                                                            //
    -        from T_BOOK                                                  // No need to use parentheses or "." here
    -        leftOuterJoin (                                              //
    -          f select (x.ID, x.YEAR_OF_BIRTH)                           // Dereference fields from aliased table
    -          from x                                                     //
    -          limit 1                                                    //
    -          asTable x.getName()                                        //
    -        )                                                            //
    -        on T_BOOK.AUTHOR_ID === x.ID                                 // Using the overloaded "===" operator
    -        where (T_BOOK.ID <> 2)                                       // Using the olerloaded "<>" operator
    -        or (T_BOOK.TITLE in ("O Alquimista", "Brida"))               // Neat IN predicate expression
    -        fetch                                                        //
    -    ) {                                                              //
    -      println(r)                                                     //
    -    }                                                                //
    -  }                                                                  //
    -}]]></scala><html>
    -
    -							<p>
    -								For more details about jOOQ's Scala integration, please refer to the manual's section about <reference id="scala-sql-building" title="SQL building with Scala"/>.
    -							</p>
    -						</html></content>
    -					</section>
    -					
    -					<section id="dependencies">
    -						<title>Dependencies</title>
    -						<content><html>
    -							<p>
    -								jOOQ has no dependencies on any third-party libraries. This rule has some exceptions:
    -							</p>
    -							<ul>
    -								<li><reference id="logging" title="logging APIs"/> are referenced as "optional dependencies". jOOQ tries to find slf4j or log4j on the classpath. If it fails, it will use the <reference class="java.util.logging.Logger"/></li>
    -								<li>Oracle ojdbc types used for array creation are loaded using reflection.</li>
    -								<li>Small libraries with compatible licenses are incorporated into jOOQ (<a href="http://code.google.com/p/joor/">jOOR</a>, <a href="http://code.google.com/p/joou/">jOOU</a>, <a href="http://opencsv.sourceforge.net/">OpenCSV</a>, <a href="http://code.google.com/p/json-simple/">json simple</a>, <a href="http://commons.apache.org/lang/">commons-lang</a>)</li>
    -								<li>javax.persistence and javax.validation will be needed if you activate the relevant <reference id="code-generation" title="code generation flags"/></li>
    -							</ul>
    -							
    -							<h3>Build your own</h3>
    -							<p>
    -								In order to build jOOQ, please download the sources from <a href="https://github.com/jOOQ/jOOQ">https://github.com/jOOQ/jOOQ</a> and use Maven to build it, preferably in Eclipse.
    -							</p>
    -						</html></content>
    -					</section>
    -				</sections>
    -			</section>
    -
    -			<section id="sql-building">
    -				<title>SQL building</title>
    -				<content><html>
    -					<p>
    -					    SQL is a declarative language that is hard to integrate into procedural, object-oriented, functional or any other type of programming languages. jOOQ's philosophy is to give SQL the credit it deserves and integrate SQL itself as an <a href="http://en.wikipedia.org/wiki/Domain_Specific_Language">"internal domain specific language"</a> directly into Java.
    -					</p>
    -					<p>
    -						With this philosophy in mind, SQL building is the main feature of jOOQ. All other features (such as <reference id="sql-execution"/> and <reference id="code-generation"/>) are mere convenience built on top of jOOQ's SQL building capabilities.
    -					</p>
    -					<p>
    -						This section explains all about the various syntax elements involved with jOOQ's SQL building capabilities. For a complete overview of all syntax elements, please refer to the manual's section about <reference id="reference-bnf-notation"/>
    -					</p>
    -				</html></content>
    -
    -				<sections>
    -					<section id="factory">
    -						<title>The Factory class</title>
    -						<content><html>
    -							<p>
    -								jOOQ exposes a lot of interfaces and hides most implementation facts from client code. The reasons for this are:
    -							</p>
    -							<ul>
    -								<li>Interface-driven design. This allows for modelling queries in a fluent API most efficiently</li>
    -								<li>Reduction of complexity for client code.</li>
    -								<li>API guarantee. You only depend on the exposed interfaces, not concrete (potentially dialect-specific) implementations.</li>
    -							</ul>
    -							<p>
    -								The <reference class="org.jooq.impl.Factory"/> class is the main class from where you will create all jOOQ objects.	The Factory serves two types of purposes:
    -							</p>
    -							<ul>
    -								<li>It serves as a static factory for <reference id="table-expressions" title="table expressions"/>, <reference id="column-expressions" title="column expressions"/> (or "fields"), <reference id="conditional-expressions" title="conditional expressions"/> and many other <reference id="queryparts" title="QueryParts"/>.</li>
    -								<li>It implements <reference class="org.jooq.Configuration"/>, an object that configures jOOQ's behaviour when executing queries (see <reference id="sql-execution"/> for more details). Factories allow for creating <reference id="sql-statements" title="SQL statements"/> that are already "configured" and ready for execution.</li>
    -							</ul>
    -
    -							<h3>The static Factory API</h3>
    -							<p>
    -								With jOOQ 2.0, static factory methods have been introduced in order to make client code look more like SQL. Ideally, when working with jOOQ, you will simply static import all methods from the Factory class:
    -							</p>
    -							</html><java>import static org.jooq.impl.Factory.*;</java><html>
    -							<p>
    -							    Note, that when working with Eclipse, you could also add the Factory to your favourites. This will allow to access functions even more fluently:
    -							</p>
    -</html><java>concat(trim(FIRST_NAME), trim(LAST_NAME));
    -// ... which is in fact the same as:
    -Factory.concat(Factory.trim(FIRST_NAME), Factory.trim(LAST_NAME));</java><html>
    -
    -							<h3>The Factory as a Configuration object</h3>
    -							<p>
    -							    As any Configuration object, a Factory can be supplied with these objects:
    -							</p>
    -							<ul>
    -								<li><reference class="org.jooq.SQLDialect"/> : The dialect of your database. This may be any of the currently supported database types (see <reference id="sql-dialects"/> for more details)</li>
    -								<li><reference class="java.sql.Connection"/> : An optional JDBC Connection that will be re-used for the whole lifecycle of your Factory (see <reference id="connection-vs-datasource"/> for more details)</li>
    -    							<li><reference class="java.sql.DataSource"/> : An optional JDBC DataSource that will be re-used for the whole lifecycle of your Factory. If you prefer using DataSources over Connections, jOOQ will internally fetch new Connections from your DataSource, conveniently closing them again after query execution. This is particularly useful in J2EE or Spring contexts (see <reference id="connection-vs-datasource"/> for more details)</li>
    -    							<li><reference class="org.jooq.conf.Settings"/> : An optional runtime configuration (see <reference id="custom-settings"/> for more details)</li>
    -							</ul>
    -							<p>
    -								As a Configuration object, a Factory can construct <reference id="sql-statements" title="statements"/>, for later <reference id="sql-execution" title="execution"/>. An example is given here:
    -							</p>
    -</html><java><![CDATA[// The Factory is "configured" with a Connection and a SQLDialect
    -Factory create = new Factory(connection, dialect);
    -
    -// This select statement contains an internal reference to the Factory:
    -Select<?> select = create.selectOne();
    -
    -// Using the internally referenced Factory, the select statement can now be executed:
    -Result<?> result = select.fetch();]]></java></content>
    -
    -						<sections>
    -							<section id="sql-dialects">
    -								<title>SQL Dialect</title>
    -								<content><html>
    -									<p>
    -										While jOOQ tries to represent the SQL standard as much as possible, many features are vendor-specific to a given database and to its "SQL dialect". jOOQ models this using the <reference class="org.jooq.SQLDialect"/> enum type.
    -									</p>
    -									<p>
    -										The SQL dialect is one of the main attributes of a <reference id="factory" title="Factory"/>. Queries created from such factories will assume dialect-specific behaviour when <reference id="sql-rendering" title="rendering SQL"/> and <reference id="variable-binding" title="binding bind values"/>.
    -									</p>
    -									<p>
    -										Some parts of the jOOQ API are officially supported only by a given subset of the supported SQL dialects. For instance, the <reference id="connect-by-clause" title="Oracle CONNECT BY clause"/>, which is supported by the Oracle and CUBRID databases, is annotated with a <reference class="org.jooq.Support"/> annotation, as such:
    -									</p>
    -</html><java><![CDATA[/**
    - * Add an Oracle-specific <code>CONNECT BY</code> clause to the query
    - */
    -@Support({ CUBRID, ORACLE })
    -SelectConnectByConditionStep connectBy(Condition condition);]]></java><html>
    -									<p>
    -									    jOOQ API methods which are not annotated with the <reference class="org.jooq.Support"/> annotation, or which are annotated with the Support annotation, but without any SQL dialects can be safely used in all SQL dialects. An example for this is the <reference id="select-statement" title="SELECT statement"/> factory method:
    -									</p>
    -</html><java><![CDATA[/**
    - * Create a new DSL select statement.
    - */
    -@Support
    -SelectSelectStep select(Field<?>... fields);]]></java><html>
    -
    -									<h3>jOOQ's SQL clause simulation capabilities</h3>
    -									<p>
    -										The aforementioned Support annotation does not only designate, which databases natively support a feature. It also indicates that a feature is simulated by jOOQ for some databases lacking this feature. An example of this is the <reference id="distinct-predicate" title="DISTINCT predicate"/>, a predicate syntax defined by SQL:1999 and implemented only by H2, HSQLDB, and Postgres:
    -									</p>
    -
    -</html><sql><![CDATA[A IS DISTINCT FROM B]]></sql><html>
    -
    -									<p>
    -										Nevertheless, the <code>IS DISTINCT FROM</code> predicate is supported in all dialects, as its semantics can be expressed with an equivalent <reference id="case-expressions" title="CASE expression"/>. For more details, see the manual's section about the <reference id="distinct-predicate" title="DISTINCT predicate"/>.
    -									</p>
    -									
    -									<h3>jOOQ and the Oracle SQL dialect</h3>
    -									<p>
    -										Oracle SQL is much more expressive than many other SQL dialects. It features many unique keywords, clauses and functions that are out of scope for the SQL standard. Some examples for this are
    -									</p>
    -									<ul>
    -										<li>The <reference id="connect-by-clause" title="CONNECT BY clause"/>, for hierarchical queries</li>
    -										<li>The <reference id="pivot-tables" title="PIVOT"/> keyword for creating PIVOT tables</li>
    -										<li><reference id="oracle-packages" title="Packages"/>, <reference id="oracle-member-procedures" title="object-oriented user-defined types, member procedures"/> as described in the section about <reference id="stored-procedures" title="stored procedures and functions"/></li>
    -										<li>Advanced analytical functions as described in the section about <reference id="window-functions" title="window functions"/></li>
    -									</ul>
    -
    -									<p>
    -										jOOQ has a historic affinity to Oracle's SQL extensions. If something is supported in Oracle SQL, it has a high probability of making it into the jOOQ API
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="connection-vs-datasource">
    -								<title>Connection vs. DataSource</title>
    -								<content><html>
    -									<h3>Interact with JDBC Connections</h3>
    -									<p>
    -										While you can use jOOQ for <reference id="sql-building" title="SQL building"/> only, you can also run queries against a JDBC <reference class="java.sql.Connection"/>. Internally, jOOQ creates <reference class="java.sql.Statement"/> or <reference class="java.sql.PreparedStatement"/> objects from such a Connection, in order to execute statements. The normal operation mode is to provide a <reference id="factory" title="Factory"/> with a JDBC Connection, whose lifecycle you will control yourself. This means that jOOQ will not actively close connections, rollback or commit transactions.
    -									</p>
    -									<h3>Interact with JDBC DataSources</h3>
    -									<p>
    -										If you're in a J2EE or Spring context, however, you may wish to use a <reference class="javax.sql.DataSource"/> instead. Currently, Connections obtained from such a DataSource will be closed after query execution by jOOQ. The semantics of such a close operation should be the returning of the connection into a connection pool, not the actual closing of the underlying physical connection. Typically, this makes sense in an environment using distributed JTA transactions. An example of using DataSources with jOOQ can be seen in the tutorial section about <reference id="jooq-with-spring" title="using jOOQ with Spring"/>.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="custom-settings">
    -								<title>Custom Settings</title>
    -								<content><html>
    -									<p>
    -										The jOOQ Factory allows for some optional configuration elements to be used by advanced users. The <reference class="org.jooq.conf.Settings" /> class is a JAXB-annotated type, that can be provided to a Factory in several ways:
    -									</p>
    -									<ul>
    -										<li>In the constructor. This will override default settings below</li>
    -										<li>From a location specified by a JVM parameter: -Dorg.jooq.settings</li>
    -										<li>From the classpath at /jooq-settings.xml</li>
    -										<li>From the settings defaults, as specified in <a href="http://www.jooq.org/xsd/jooq-runtime-2.5.0.xsd" title="The jOOQ Runtime configuration XSD">http://www.jooq.org/xsd/jooq-runtime-2.5.0.xsd</a></li>
    -									</ul>
    -									<h3>Example</h3>
    -									<p>
    -										For example, if you want to indicate to jOOQ, that it should inline all bind variables, and execute static <reference class="java.sql.Statement"/> instead of binding its variables to <reference class="java.sql.PreparedStatement"/>, you can do so by using the following Factory:
    -									</p>
    -</html><java><![CDATA[Settings settings = new Settings();
    -settings.setStatementType(StatementType.STATIC_STATEMENT);
    -Factory create = new Factory(connection, dialect, settings);]]></java><html>
    -									<p>
    -										Subsequent sections of the manual contain some more in-depth explanations about these settings:
    -									</p>
    -									<ul>
    -										<li>
    -		     								<reference id="schema-mapping" title="Runtime schema and table mapping"/>
    -		   								</li>
    -		     							<li>
    -		     								<reference id="execute-listeners" title="Execute listeners and SQL tracing"/>
    -		     							</li>
    -		     							<li>
    -		     								<reference id="optimistic-locking" title="Execute CRUD with optimistic locking enabled"/>
    -		     							</li>
    -		     							<li>
    -		     								<reference id="logging" title="Enabling DEBUG logging of all executed SQL"/>
    -		     							</li>
    -		   							</ul>
    -		   							<p>
    -										Please refer to the jOOQ runtime configuration XSD for more details:<br/>
    -										<a href="http://www.jooq.org/xsd/jooq-runtime-2.5.0.xsd" title="The jOOQ Runtime configuration XSD">http://www.jooq.org/xsd/jooq-runtime-2.5.0.xsd</a>
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -							<section id="runtime-schema-mapping">
    -								<title>Runtime schema and table mapping</title>
    -								<content><html>
    -									<h3>Mapping your DEV schema to a productive environment</h3>
    -									<p>
    -										You may wish to design your database in a way that you have several instances of your schema. This is useful when you want to cleanly separate data belonging to several customers / organisation units / branches / users and put each of those entities' data in a separate database or schema.
    -									</p>
    -									
    -									<p>
    -										In our AUTHOR example this would mean that you provide a book reference database to several companies, such as My Book World and Books R Us. In that case, you'll probably have a schema setup like this:
    -									</p>
    -									<ul>
    -										<li>DEV: Your development schema. This will be the schema that you base code generation upon, with jOOQ </li>
    -										<li>MY_BOOK_WORLD: The schema instance for My Book World </li>
    -										<li>BOOKS_R_US: The schema instance for Books R Us </li>
    -									</ul>
    -
    -									<h3>Mapping DEV to MY_BOOK_WORLD with jOOQ</h3>
    -									<p>
    -										When a user from My Book World logs in, you want them to access the MY_BOOK_WORLD schema using classes generated from DEV. This can be achieved with the <reference class="org.jooq.conf.RenderMapping"/> class, that you can equip your Factory's <reference id="custom-settings" title="settings"/> with. Take the following example:
    -									</p>
    -
    -</html><java>Settings settings = new Settings()
    -    .withRenderMapping(new RenderMapping()
    -    .withSchemata(
    -        new MappedSchema().withInput("DEV")
    -                          .withOutput("MY_BOOK_WORLD")));
    -
    -// Add the settings to the factory
    -Factory create = new Factory(connection, SQLDialect.ORACLE, settings);
    -
    -// Run queries with the "mapped" factory
    -create.selectFrom(AUTHOR).fetch();</java><html>
    -
    -									<p>
    -										The query executed with a Factory equipped with the above mapping will in fact produce this SQL statement:
    -									</p>
    -									
    -</html><sql>SELECT * FROM MY_BOOK_WORLD.AUTHOR</sql><html>
    -									<p>
    -										Even if AUTHOR was generated from DEV.
    -									</p>
    -
    -									<h3>Mapping several schemata</h3>
    -									<p>
    -										Your development database may not be restricted to hold only one DEV schema. You may also have a LOG schema and a MASTER schema. Let's say the MASTER schema is shared among all customers, but each customer has their own LOG schema instance. Then you can enhance your RenderMapping like this (e.g. using an XML configuration file):
    -									</p>
    -
    -</html><xml><![CDATA[<settings xmlns="http://www.jooq.org/xsd/jooq-runtime-2.5.0.xsd">
    -  <renderMapping>
    -    <schemata>
    -      <schema>
    -        <input>DEV</input>
    -        <output>MY_BOOK_WORLD</output>
    -      </schema>
    -      <schema>
    -        <input>LOG</input>
    -        <output>MY_BOOK_WORLD_LOG</output>
    -      </schema>
    -    </schemata>
    -  </renderMapping>
    -</settings>]]></xml><html>
    -
    -                            		<p>
    -                            			Note, you can load the above XML file like this:
    -                           			</p>
    -
    -</html><java>Settings settings = JAXB.unmarshal(new File("jooq-runtime.xml"), Settings.class);</java><html>
    -
    -									<p>
    -										This will map generated classes from DEV to MY_BOOK_WORLD, from LOG to MY_BOOK_WORLD_LOG, but leave the MASTER schema alone. Whenever you want to change your mapping configuration, you will have to create a new Factory
    -									</p>
    -
    -
    -									<h3>Using a default schema</h3>
    -									<p>
    -										Another option to switch schema names is to use a default schema for the Factory's underlying Connection. Many RDBMS support a USE or SET SCHEMA command, which you can call like this:
    -									</p>
    -
    -</html><java>// Set the default schema
    -Schema MY_BOOK_WORLD = ...
    -create.use(MY_BOOK_WORLD);
    -
    -// Run queries with factory having a default schema
    -create.selectFrom(AUTHOR).fetch();</java><html>
    -
    -									<p>
    -										Queries generated from the above Factory will produce this kind of SQL statement:
    -									</p>
    -
    -</html><sql>-- the schema name is omitted from all SQL constructs.
    -SELECT * FROM AUTHOR</sql><html>
    -
    -                            		<p>
    -                            			If you wish not to render any schema name at all, use the following Settings property for this:
    -                           			</p>
    -
    -
    -</html><java>Settings settings = new Settings()
    -    .withRenderSchema(false);
    -
    -// Add the settings to the factory
    -Factory create = new Factory(connection, SQLDialect.ORACLE, settings);
    -
    -// Run queries that omit rendering schema names
    -create.selectFrom(AUTHOR).fetch();</java><html>
    -
    -									<h3>Mapping of tables</h3>
    -									<p>
    -										Not only schemata can be mapped, but also tables. If you are not the owner of the database your application connects to, you might need to install your schema with some sort of prefix to every table. In our examples, this might mean that you will have to map DEV.AUTHOR to something MY_BOOK_WORLD.MY_APP__AUTHOR, where MY_APP__ is a prefix applied to all of your tables. This can be achieved by creating the following mapping: 
    -									</p>
    -
    -</html><java>Settings settings = new Settings()
    -    .withRenderMapping(new RenderMapping()
    -    .withSchemata(
    -        new MappedSchema().withInput("DEV")
    -                          .withOutput("MY_BOOK_WORLD")
    -                          .withTables(
    -         new MappedTable().withInput("AUTHOR")
    -                          .withOutput("MY_APP__AUTHOR"))));
    -
    -// Add the settings to the factory
    -Factory create = new Factory(connection, SQLDialect.ORACLE, settings);
    -
    -// Run queries with the "mapped" factory
    -create.selectFrom(AUTHOR).fetch();</java><html>
    -
    -									<p>
    -										The query executed with a Factory equipped with the above mapping will in fact produce this SQL statement:
    -									</p>
    -									
    -</html><sql>SELECT * FROM MY_BOOK_WORLD.MY_APP__AUTHOR</sql><html>
    -
    -		                            <p>
    -		                           		Table mapping and schema mapping can be applied independently, by specifying several MappedSchema entries in the above configuration. jOOQ will process them in order of appearance and map at first match. Note that you can always omit a MappedSchema's output value, in case of which, only the table mapping is applied. If you omit a MappedSchema's input value, the table mapping is applied to all schemata!
    -		                            </p>
    -
    -									<h3>Hard-wiring mappings at code-generation time</h3>
    -									<p>
    -										Note that the manual's section about <reference id="schema-mapping" title="code generation schema mapping"/> explains how you can hard-wire your schema mappings at code generation time
    -									</p>									
    -								</html></content>
    -							</section>
    -
    -							<section id="factory-subclasses">
    -								<title>Factory subclasses</title>
    -								<content><html>
    -									<p>
    -										There are a couple of subclasses for the general Factory. Each SQL dialect has its own dialect-specific factory. For instance, if you're only using the MySQL dialect, you can choose to create a new Factory using any of the following types:
    -									</p>
    -</html><java>// A general, dialect-unspecific factory
    -Factory create = new Factory(connection, SQLDialect.MYSQL);
    -
    -// A MySQL-specific factory
    -MySQLFactory create = new MySQLFactory(connection);</java><html>
    -									<p>
    -										The advantage of using a dialect-specific Factory lies in the fact,	that you have access to more proprietary RDMBS functionality. This may include:
    -									</p>
    -									<ul>
    -		    							<li>MySQL's encryption functions</li>
    -		    							<li>PL/SQL constructs, pgplsql, or any other dialect's ROUTINE-language (maybe in the future)</li>
    -									</ul>
    -									<p>
    -										Another type of Factory subclasses are each generated schema's factories. If you generate your schema TEST, then you will have access to a TestFactory. By default, such a schema-specific Factory will not render the schema name.
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="sql-statements">
    -						<title>SQL Statements</title>
    -						<content><html>
    -							<p>
    -								jOOQ currently supports 6 types of SQL statements. All of these statements are constructed from a Factory instance with an optional <reference id="connection-vs-datasource" title="JDBC Connection or DataSource"/>. If supplied with a Connection or DataSource, they can be executed. Depending on the <reference id="query-vs-resultquery" title="query type"/>, executed queries can return results.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="dsl-and-non-dsl">
    -								<title>jOOQ's DSL and non-DSL API</title>
    -								<content><html>
    -									<p>
    -										jOOQ ships with its own DSL (or	<a href="http://en.wikipedia.org/wiki/Domain-specific_language" title="Domain Specific Language">Domain Specific Language</a>) that	simulates SQL in Java. This means, that you can	write SQL statements almost as if Java natively supported it, just like .NET's C# does with <a href="http://msdn.microsoft.com/en-us/library/bb425822.aspx">LINQ to SQL.</a>
    -									</p>
    -									<p>
    -										Here is an example to illustrate what that means:
    -									</p>
    -									
    -</html><code-pair><sql><![CDATA[-- Select all books by authors born after 1920,
    --- named "Paulo" from a catalogue:
    -SELECT *
    -  FROM author a
    -  JOIN book b ON a.id = b.author_id
    - WHERE a.year_of_birth > 1920
    -   AND a.first_name = 'Paulo'
    - ORDER BY b.title]]></sql><java><![CDATA[Result<Record> result =
    -create.select()
    -      .from(AUTHOR.as("a"))
    -      .join(BOOK.as("b")).on(a.ID.equal(b.AUTHOR_ID))
    -      .where(a.YEAR_OF_BIRTH.greaterThan(1920)
    -      .and(a.FIRST_NAME.equal("Paulo")))
    -      .orderBy(b.TITLE)
    -      .fetch();]]></java></code-pair><html>
    -
    -									<p>
    -										We'll see how the aliasing works later in the section about <reference id="aliased-tables" title="aliased tables"/>
    -									</p>
    -
    -									<h3>jOOQ as an internal domain specific language in Java (a.k.a. the DSL-API)</h3>
    -									<p>
    -										Many other frameworks have similar APIs with similar feature sets. Yet, what makes jOOQ special is its informal <reference id="reference-bnf-notation" title="BNF notation"/> modelling a unified SQL dialect suitable for many vendor-specific dialects, and implementing that BNF notation as a hierarchy of interfaces in Java. This concept is extremely powerful, when <reference id="jooq-in-modern-ides" title="using jOOQ in modern IDEs" /> with syntax completion. Not only can you code much faster, your SQL code will be compile-checked to a certain extent. An example of a DSL query equivalent to the previous one is given here:
    -									</p>
    -</html><java><![CDATA[Factory create = new Factory(connection, dialect);
    -Result<?> result = create.select()
    -                         .from(AUTHOR)
    -                         .join(BOOK).on(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -                         .fetch();]]></java><html>
    -
    -                         			<p>
    -                         				Unlike other, simpler frameworks that use <a href="http://en.wikipedia.org/wiki/Fluent_interface">"fluent APIs"</a> or <a href="http://en.wikipedia.org/wiki/Method_chaining">"method chaining"</a>, jOOQ's BNF-based interface hierarchy will not allow bad query syntax. The following will not compile, for instance:
    -                         			</p>
    -</html><java><![CDATA[Factory create = new Factory(connection, dialect);
    -Result<?> result = create.select()
    -                         .join(BOOK).on(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -                      //  ^^^^ "join" is not possible here
    -                         .from(AUTHOR)
    -                         .fetch();
    -
    -Result<?> result = create.select()
    -                         .from(AUTHOR)
    -                         .join(BOOK)
    -                         .fetch();
    -                      //  ^^^^^ "on" is missing here
    -
    -Result<?> result = create.select(rowNumber())
    -                      //         ^^^^^^^^^ "over()" is missing here
    -                         .from(AUTHOR)
    -                         .fetch();]]></java><html>
    -
    -									<h3>History of SQL building and incremental query building (a.k.a. the non-DSL API)</h3>
    -									<p>
    -										Historically, jOOQ started out as an object-oriented SQL builder library like any other. This meant that all queries and their syntactic components were modeled as so-called <reference id="queryparts" title="QueryParts"/>, which delegate <reference id="sql-rendering" title="SQL rendering"/> and <reference id="variable-binding" title="variable binding"/> to child components. This part of the API will be referred to as the non-DSL API, which is still maintained and used internally by jOOQ for incremental query building. An example of incremental query building is given here:
    -									</p>
    -</html><java><![CDATA[Factory create = new Factory(connection, dialect);
    -SelectQuery query = create.selectQuery();
    -query.addFrom(AUTHOR);
    -
    -// Join books only under certain circumstances
    -if (join) {
    -    query.addJoin(BOOK, BOOK.AUTHOR_ID.equal(AUTHOR.ID));
    -}
    -
    -Result<?> result = query.fetch();]]></java><html>
    -
    -									<p>
    -										This query is equivalent to the one shown before using the DSL syntax. In fact, internally, the DSL API constructs precisely this QueryObject. Note, that you can always access the SelectQuery object to switch between DSL and non-DSL APIs:
    -									</p>
    -
    -</html><java><![CDATA[Factory create = new Factory(connection, dialect);
    -SelectFinalStep select = create.select().from(AUTHOR);
    -
    -// Add the JOIN clause on the internal QueryObject representation
    -SelectQuery query = select.getQuery();
    -query.addJoin(BOOK, BOOK.AUTHOR_ID.equal(AUTHOR.ID));]]></java><html>
    -
    -									<h3>Mutability</h3>
    -									<p>
    -										Note, that for historic reasons, the DSL API mixes mutable and immutable behaviour with respect to the internal representation of the <reference id="queryparts" title="QueryPart"/> being constructed. While creating <reference id="conditional-expressions" title="conditional expressions"/>, <reference id="column-expressions" title="column expressions"/> (such as functions) assumes immutable behaviour, creating <reference id="sql-statements" title="SQL statements"/> does not. In other words, the following can be said:
    -									</p>
    -									
    -</html><java><![CDATA[// Conditional expressions (immutable)
    -// -----------------------------------
    -Condition a = BOOK.TITLE.equal("1984");
    -Condition b = BOOK.TITLE.equal("Animal Farm");
    -
    -// The following can be said
    -a       != a.or(b); // or() does not modify a
    -a.or(b) != a.or(b); // or() always creates new objects
    -
    -// Statements (mutable)
    -// --------------------
    -SelectFromStep s1 = create.select();
    -SelectJoinStep s2 = s1.from(BOOK);
    -SelectJoinStep s3 = s1.from(AUTHOR);
    -
    -// The following can be said
    -s1 == s2; // The internal object is always the same
    -s2 == s3; // The internal object is always the same]]></java><html>
    -
    -									<p>
    -										Mutability may be removed in a future version of jOOQ.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="select-statement">
    -								<title>The SELECT statement</title>
    -								<content><html>
    -									<p>
    -										When you don't just perform <reference id="crud-with-updatablerecords" title="CRUD"/> (i.e. SELECT * FROM your_table WHERE ID = ?), you're usually generating new record types using custom projections. With jOOQ, this is as intuitive, as if using SQL directly. A more or less complete example of the "standard" SQL syntax, plus some extensions, is provided by a query like this:
    -									</p>
    -</html><code-pair>
    -<sql><![CDATA[-- get all authors' first and last names, and the number
    --- of books they've written in German, if they have written
    --- more than five books in German in the last three years
    --- (from 2011), and sort those authors by last names
    --- limiting results to the second and third row, locking
    --- the rows for a subsequent update... whew!
    -
    -  SELECT AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME, COUNT(*)
    -    FROM AUTHOR
    -    JOIN BOOK ON AUTHOR.ID = BOOK.AUTHOR_ID
    -   WHERE BOOK.LANGUAGE = 'DE'
    -     AND BOOK.PUBLISHED > '2008-01-01'
    -GROUP BY AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME
    -  HAVING COUNT(*) > 5
    -ORDER BY AUTHOR.LAST_NAME ASC NULLS FIRST
    -   LIMIT 2
    -  OFFSET 1
    -     FOR UPDATE]]></sql><java><![CDATA[// And with jOOQ...
    -
    -
    -
    -
    -Factory create = new Factory(connection, dialect);
    -
    -create.select(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME, count())
    -      .from(AUTHOR)
    -      .join(BOOK).on(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -      .where(BOOK.LANGUAGE.equal("DE"))
    -      .and(BOOK.PUBLISHED.greaterThan("2008-01-01"))
    -      .groupBy(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .having(count().greaterThan(5))
    -      .orderBy(AUTHOR.LAST_NAME.asc().nullsFirst())
    -      .limit(1)
    -      .offset(2)
    -      .forUpdate();]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										Details about the various clauses of this query will be provided in subsequent sections
    -									</p>
    -
    -									<h3>SELECT from single physical tables</h3>
    -									<p>
    -										A very similar, but limited API is available, if you want to select from single physical tables in order to retrieve <reference id="crud-with-updatablerecords" title="TableRecords or even UpdatableRecords"/>. The decision, which type of select to create is already made at the very first step, when you create the SELECT statement with the Factory:
    -									</p>
    -
    -</html><java><![CDATA[public <R extends Record> SimpleSelectWhereStep<R> selectFrom(Table<R> table);]]></java><html>
    -									<p>
    -										As you can see, there is no way to further restrict/project the selected fields. This just selects all known TableFields in the supplied Table, and it also binds &lt;R extends Record&gt; to your Table's associated Record. An example of such a Query would then be:
    -									</p>
    -</html><java><![CDATA[BookRecord book = create.selectFrom(BOOK)
    -                        .where(BOOK.LANGUAGE.equal("DE"))
    -                        .orderBy(BOOK.TITLE)
    -                        .fetchAny();]]></java><html>
    -
    -                   					<p>
    -                   						The simple SELECT API is limited in the way that it does not support any of these clauses:
    -                   					</p>
    -                   					<ul>
    -                   						<li><reference id="select-clause"/></li>
    -                   						<li><reference id="join-clause"/></li>
    -                   						<li><reference id="group-by-clause"/></li>
    -                   						<li><reference id="having-clause"/></li>
    -                   					</ul>
    -                   					<p>
    -                   						In most parts of this manual, it is assumed that you do not use the simple SELECT API. For more information about the simple SELECT API, see the manual's section about <reference id="record-vs-tablerecord" title="fetching strongly or weakly typed records"/>.
    -                   					</p>
    -								</html></content>
    -
    -								<sections>
    -									<section id="select-clause">
    -										<title>The SELECT clause</title>
    -										<content><html>
    -											<p>
    -												The SELECT clause lets you project your own record types, referencing table fields, functions, arithmetic expressions, etc. The Factory provides several methods for expressing a SELECT clause:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- The SELECT clause
    -SELECT BOOK.ID, BOOK.TITLE
    -SELECT BOOK.ID, TRIM(BOOK.TITLE)
    -]]></sql><java><![CDATA[// Provide a varargs Fields list to the SELECT clause:
    -Select<?> s1 = create.select(BOOK.ID, BOOK.TITLE);
    -Select<?> s2 = create.select(BOOK.ID, trim(BOOK.TITLE));]]></java>
    -</code-pair><html>
    -
    -											<p>
    -												Some commonly used projections can be easily created using convenience methods:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- Simple SELECTs
    -SELECT COUNT(*)
    -SELECT 0 -- Not a bind variable
    -SELECT 1 -- Not a bind variable
    -]]></sql><java><![CDATA[// Select commonly used values
    -Select<?> select1 = create.selectCount();
    -Select<?> select2 = create.selectZero();
    -Select<?> select2 = create.selectOne();]]></java>
    -</code-pair><html>
    -
    -											<p>
    -												See more details about functions and expressions in the manual's section about <reference id="column-expressions"/>
    -											</p>
    -
    -											<h3>The SELECT DISTINCT clause</h3>
    -											<p>
    -												The DISTINCT keyword can be included in the method name, constructing a SELECT clause
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT DISTINCT BOOK.TITLE]]></sql><java><![CDATA[Select<?> select1 = create.selectDistinct(BOOK.TITLE);]]></java>
    -</code-pair><html>
    -										</html></content>
    -									</section>
    -
    -									<section id="from-clause">
    -										<title>The FROM clause</title>
    -										<content><html>
    -											<p>
    -												The SQL FROM clause allows for specifying any number of <reference id="table-expressions" title="table expressions"/> to select data from. The following are examples of how to form normal FROM clauses:
    -											</p>
    -
    -</html><code-pair>
    -	<sql><![CDATA[SELECT 1 FROM BOOK
    -SELECT 1 FROM BOOK, AUTHOR
    -SELECT 1 FROM BOOK "b", AUTHOR "a"]]></sql><java><![CDATA[create.selectOne().from(BOOK);
    -create.selectOne().from(BOOK, AUTHOR);
    -create.selectOne().from(BOOK.as("b"), AUTHOR.as("a"));]]></java>
    -</code-pair><html>
    -
    -											<p>
    -												Read more about aliasing in the manual's section about <reference id="aliased-tables" title="aliased tables"/>.
    -											</p>
    -											
    -											<h3>More advanced table expressions</h3>
    -											<p>
    -												Apart from simple tables, you can pass any arbitrary <reference id="table-expressions" title="table expression"/> to the jOOQ FROM clause. This may include <reference id="array-and-cursor-unnesting" title="unnested cursors"/> in Oracle:
    -											</p>
    -
    -</html><code-pair>
    -	<sql><![CDATA[SELECT *
    -FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(null, null, 'ALLSTATS'));]]></sql><java><![CDATA[create.select()
    -      .from(table(DbmsXplan.displayCursor(null, null, "ALLSTATS"));]]></java>
    -</code-pair><html>
    -
    -											<p>
    -												Note, in order to access the DbmsXplan package, you can use the <reference id="code-generation" title="code generator"/> to generate Oracle's SYS schema.
    -											</p>
    -
    -
    -											<h3>Selecting FROM DUAL with jOOQ</h3>
    -											<p>
    -												In many SQL dialects, FROM is a mandatory clause, in some it isn't. jOOQ allows you to omit the FROM clause, returning just one record. An example:
    -											</p>
    -
    -</html><code-pair>
    -	<sql><![CDATA[SELECT 1 FROM DUAL
    -SELECT 1]]></sql><java><![CDATA[new Factory(SQLDialect.ORACLE).selectOne().getSQL();
    -new Factory(SQLDialect.POSTGRES).selectOne().getSQL();]]></java>
    -</code-pair><html>
    -
    -											<p>
    -												Read more about dual or dummy tables in the manual's section about <reference id="dual" title="the DUAL table"/>. The following are examples of how to form normal FROM clauses:
    -											</p>
    -										</html></content>
    -									</section>
    -
    -									<section id="join-clause">
    -										<title>The JOIN clause</title>
    -										<content><html>
    -											<p>
    -												jOOQ supports many different types of standard SQL JOIN operations:
    -											</p>
    -											<ul>
    -												<li>[ INNER ] JOIN</li>
    -												<li>LEFT [ OUTER ] JOIN</li>
    -												<li>RIGHT [ OUTER ] JOIN</li>
    -												<li>FULL OUTER JOIN</li>
    -												<li>CROSS JOIN</li>
    -												<li>NATURAL JOIN</li>
    -												<li>NATURAL LEFT [ OUTER ] JOIN</li>
    -												<li>NATURAL RIGHT [ OUTER ] JOIN</li>
    -											</ul>
    -
    -											<p>
    -												All of these JOIN methods can be called on <reference class="org.jooq.Table"/> types, or directly after the FROM clause for convenience. The following example joins AUTHOR and BOOK
    -											</p>
    -
    -</html><java><![CDATA[Factory create = new Factory(connection, dialect);
    -
    -// Call "join" directly on the AUTHOR table
    -Result<?> result = create.select()
    -                         .from(AUTHOR.join(BOOK)
    -                                     .on(BOOK.AUTHOR_ID.equal(AUTHOR.ID)))
    -                         .fetch();
    -
    -// Call "join" on the type returned by "from"
    -Result<?> result = create.select()
    -                         .from(AUTHOR)
    -                         .join(BOOK)
    -                         .on(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -                         .fetch();]]></java><html>
    -
    -											<p>
    -												The two syntaxes will produce the same SQL statement. However, calling "join" on <reference class="org.jooq.Table"/> objects allows for more powerful, nested JOIN expressions (if you can handle the parentheses):
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM AUTHOR
    -LEFT OUTER JOIN (
    -  BOOK JOIN BOOK_TO_BOOK_STORE
    -       ON BOOK_TO_BOOK_STORE.BOOK_ID = BOOK.ID
    -)
    -ON BOOK.AUTHOR_ID = AUTHOR.ID]]></sql><java><![CDATA[// Nest joins and provide JOIN conditions only at the end
    -create.select()
    -      .from(AUTHOR
    -      .leftOuterJoin(BOOK
    -        .join(BOOK_TO_BOOK_STORE)
    -        .on(BOOK_TO_BOOK_STORE.BOOK_ID.equal(BOOK.ID)))
    -      .on(BOOK.AUTHOR_ID.equal(AUTHOR.ID)));]]></java></code-pair><html>
    -
    -      										<ul>
    -      											<li>See the section about <reference id="conditional-expressions" title="conditional expressions"/> to learn more about the many ways to create <reference class="org.jooq.Condition"/> objects in jOOQ.</li>
    -      											<li>See the section about <reference id="table-expressions" title="table expressions"/> to learn about the various ways of referencing <reference class="org.jooq.Table"/> objects in jOOQ</li>
    -      										</ul>
    -
    -											<h3>JOIN ON KEY, convenience provided by jOOQ</h3>
    -											<p>
    -												Surprisingly, SQL does not allow to formally JOIN on well-known foreign key relationship information. Naturally, when you join BOOK to AUTHOR, you will want to do that based on the BOOK.AUTHOR_ID foreign key to AUTHOR.ID primary key relation. Not being able to do this in SQL leads to a lot of repetitive code, re-writing the same JOIN predicate again and again - especially, when your foreign keys contain more than one column. With jOOQ, when you use <reference id="code-generation" title="code generation"/>, you can use foreign key constraint information in JOIN expressions as such:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM AUTHOR
    -JOIN BOOK ON BOOK.AUTHOR_ID = AUTHOR.ID]]></sql><java><![CDATA[create.select()
    -      .from(AUTHOR)
    -      .join(BOOK).onKey();]]></java></code-pair><html>
    -
    -      										<p>
    -      											In case of ambiguity, you can also supply field references for your foreign keys, or the generated foreign key reference to the onKey() method.
    -      										</p>
    -
    -											<h3>The JOIN USING syntax</h3>
    -											<p>
    -												Most often, you will provide jOOQ with JOIN conditions in the JOIN .. ON clause. SQL supports a different means of specifying how two tables are to be joined. This is the JOIN .. USING clause. Instead of a condition, you supply a set of fields whose names are common to both tables to the left and right of a JOIN operation. This can be useful when your database schema has a high degree of <a href="http://en.wikipedia.org/wiki/Database_normalization">relational normalisation</a>. An example:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- Assuming that both tables contain AUTHOR_ID columns
    -SELECT *
    -FROM AUTHOR
    -JOIN BOOK USING (AUTHOR_ID)]]></sql><java><![CDATA[// join(...).using(...)
    -create.select()
    -      .from(AUTHOR)
    -      .join(BOOK).using(AUTHOR.AUTHOR_ID);]]></java></code-pair><html>
    -
    -											<p>
    -												In schemas with high degrees of normalisation, you may also choose to use NATURAL JOIN, which takes no JOIN arguments as it joins using all fields that are common to the table expressions to the left and to the right of the JOIN operator. An example:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- Assuming that both tables contain AUTHOR_ID columns
    -SELECT *
    -FROM AUTHOR
    -NATURAL JOIN BOOK]]></sql><java><![CDATA[// naturalJoin(...)
    -create.select()
    -      .from(AUTHOR)
    -      .naturalJoin(BOOK);]]></java></code-pair><html>
    -
    -											<h3>Oracle's partitioned OUTER JOIN</h3>
    -											<p>
    -												Oracle SQL ships with a special syntax available for OUTER JOIN clauses. According to the <a href="http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_10002.htm#i2196190">Oracle documentation about partitioned outer joins</a> this can be used to fill gaps for simplified analytical calculations. jOOQ only supports putting the PARTITION BY clause to the right of the OUTER JOIN clause. The following example will create at least one record per AUTHOR and per existing value in BOOK.PUBLISHED_IN, regardless if an AUTHOR has actually published a book in that year.
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM AUTHOR
    -LEFT OUTER JOIN BOOK
    -PARTITION BY (PUBLISHED_IN)
    -ON BOOK.AUTHOR_ID = AUTHOR.ID]]></sql><java><![CDATA[create.select()
    -      .from(AUTHOR)
    -      .leftOuterJoin(BOOK)
    -      .partitionBy(BOOK.PUBLISHED_IN)
    -      .on(BOOK.AUTHOR_ID.equal(AUTHOR.ID));]]></java></code-pair><html>
    -
    -										</html></content>
    -									</section>
    -
    -									<section id="where-clause">
    -										<title>The WHERE clause</title>
    -										<content><html>
    -											<p>
    -												The WHERE clause can be used for JOIN or filter predicates, in order to restrict the data returned by the <reference id="table-expressions" title="table expressions"/> supplied to the previously specified <reference id="from-clause" title="from clause"/> and <reference id="join-clause" title="join clause"/>. Here is an example:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM BOOK
    -WHERE AUTHOR_ID = 1
    -AND TITLE = '1984']]></sql><java><![CDATA[create.select()
    -      .from(BOOK)
    -      .where(BOOK.AUTHOR_ID.equal(1))
    -      .and(BOOK.TITLE.equal("1984"));]]></java></code-pair><html>
    -
    -											<p>
    -												The above syntax is convenience provided by jOOQ, allowing you to connect the <reference class="org.jooq.Condition"/> supplied in the WHERE clause with another condition using an AND operator. You can of course also create a more complex condition and supply that to the WHERE clause directly (observe the different placing of parentheses). The results will be the same:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM BOOK
    -WHERE AUTHOR_ID = 1
    -AND TITLE = '1984']]></sql><java><![CDATA[create.select()
    -      .from(BOOK)
    -      .where(BOOK.AUTHOR_ID.equal(1).and(
    -             BOOK.TITLE.equal("1984")));]]></java></code-pair><html>
    -
    -											<p>
    -												You will find more information about creating <reference id="conditional-expressions" title="conditional expressions"/> later in the manual.
    -											</p>
    -										</html></content>
    -									</section>
    -
    -									<section id="connect-by-clause">
    -										<title>The CONNECT BY clause</title>
    -										<content><html>
    -											<p>
    -												The Oracle database knows a very succinct syntax for creating hierarchical queries: the CONNECT BY clause, which is fully supported by jOOQ, including all related functions and pseudo-columns. A more or less formal definition of this clause is given here:
    -											</p>
    -</html><sql>--   SELECT ..
    ---     FROM ..
    ---    WHERE ..
    - CONNECT BY [ NOCYCLE ] condition [ AND condition, ... ] [ START WITH condition ]
    --- GROUP BY ..
    --- ORDER [ SIBLINGS ] BY ..</sql><html>
    -
    -											<p>
    -												An example for an iterative query, iterating through values between 1 and 5 is this:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT LEVEL
    -FROM DUAL
    -CONNECT BY LEVEL <= 5]]></sql><java><![CDATA[// Get a table with elements 1, 2, 3, 4, 5
    -create.select(level())
    -      .connectBy(level().lessOrEqual(5));]]></java></code-pair><html>
    -
    -											<p>
    -												Here's a more complex example where you can recursively fetch directories in your database, and concatenate them to a path:
    -											</p>
    -</html><code-pair>
    -<sql><![CDATA[SELECT 
    -  SUBSTR(SYS_CONNECT_BY_PATH(DIRECTORY.NAME, '/'), 2)
    -FROM DIRECTORY
    -CONNECT BY 
    -  PRIOR DIRECTORY.ID = DIRECTORY.PARENT_ID
    -START WITH DIRECTORY.PARENT_ID IS NULL
    -ORDER BY 1]]></sql><java><![CDATA[.select(
    -   sysConnectByPath(DIRECTORY.NAME, "/").substring(2))
    -.from(DIRECTORY)
    -.connectBy(
    -   prior(DIRECTORY.ID).equal(DIRECTORY.PARENT_ID))
    -.startWith(DIRECTORY.PARENT_ID.isNull())
    -.orderBy(1);]]></java>
    -</code-pair><html>
    -
    -    										<p>
    -    											The output might then look like this
    -   											</p>
    -
    -</html><text>+------------------------------------------------+
    -|substring                                       |
    -+------------------------------------------------+
    -|C:                                              |
    -|C:/eclipse                                      |
    -|C:/eclipse/configuration                        |
    -|C:/eclipse/dropins                              |
    -|C:/eclipse/eclipse.exe                          |
    -+------------------------------------------------+
    -|...21 record(s) truncated...
    -</text><html>
    -
    -											<p>
    -												Some of the supported functions and pseudo-columns are these (available from the <reference id="factory" title="Factory"/>):
    -											</p>
    -
    -											<ul>
    -												<li>LEVEL</li>
    -												<li>CONNECT_BY_IS_CYCLE</li>
    -												<li>CONNECT_BY_IS_LEAF</li>
    -												<li>CONNECT_BY_ROOT</li>
    -												<li>SYS_CONNECT_BY_PATH</li>
    -												<li>PRIOR</li>
    -											</ul>
    -
    -											<p>
    -												Note that this syntax is also supported in the CUBRID database.
    -											</p>
    -											
    -											<h3>ORDER SIBLINGS</h3>
    -											<p>
    -												The Oracle database allows for specifying a SIBLINGS keyword in the <reference id="order-by-clause" title="ORDER BY clause"/>. Instead of ordering the overall result, this will only order siblings among each other, keeping the hierarchy intact. An example is given here:
    -											</p>
    -											
    -</html><code-pair>
    -<sql><![CDATA[SELECT DIRECTORY.NAME
    -FROM DIRECTORY
    -CONNECT BY 
    -  PRIOR DIRECTORY.ID = DIRECTORY.PARENT_ID
    -START WITH DIRECTORY.PARENT_ID IS NULL
    -ORDER SIBLINGS BY 1]]></sql><java><![CDATA[.select(DIRECTORY.NAME)
    -.from(DIRECTORY)
    -.connectBy(
    -   prior(DIRECTORY.ID).equal(DIRECTORY.PARENT_ID))
    -.startWith(DIRECTORY.PARENT_ID.isNull())
    -.orderSiblingsBy(1);]]></java>
    -</code-pair><html>
    -											
    -										</html></content>
    -									</section>
    -
    -									<section id="group-by-clause">
    -										<title>The GROUP BY clause</title>
    -										<content><html>
    -											<p>
    -												GROUP BY can be used to create unique groups of data, to form aggregations, to remove duplicates and for other reasons. It will transform your previously defined <reference id="table-expressions" title="set of table expressions"/>, and return only one record per unique group as specified in this clause. For instance, you can group books by BOOK.AUTHOR_ID:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT AUTHOR_ID, COUNT(*)
    -FROM BOOK
    -GROUP BY AUTHOR_ID]]></sql><java><![CDATA[create.select(BOOK.AUTHOR_ID, count())
    -      .from(BOOK)
    -      .groupBy(AUTHOR_ID);]]></java></code-pair><html>
    -
    -											<p>
    -												As defined in the SQL standard, when grouping, you may no longer project any columns that are not a formal part of the GROUP BY clause, or <reference id="aggregate-functions" title="aggregate functions"/>. The above example counts all books per author
    -											</p>
    -
    -											<h3>MySQL's deviation from the SQL standard</h3>
    -											<p>
    -												MySQL has a peculiar way of not adhering to this standard behaviour. This is documented in the <a href="http://dev.mysql.com/doc/refman/5.6/en/group-by-hidden-columns.html">MySQL manual</a>. In short, with MySQL, you can also project any other field that are not part of the GROUP BY clause. The projected values will just be arbitrary values from within the group. You cannot rely on any ordering. For example:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT AUTHOR_ID, TITLE
    -FROM BOOK
    -GROUP BY AUTHOR_ID]]></sql><java><![CDATA[create.select(BOOK.AUTHOR_ID, BOOK.TITLE)
    -      .from(BOOK)
    -      .groupBy(AUTHOR_ID);]]></java></code-pair><html>
    -
    -											<p>
    -												This will return an arbitrary title per author. jOOQ supports this syntax, as jOOQ is not doing any checks internally, about the consistence of tables/fields/functions that you provide it.
    -											</p>
    -
    -											<h3>Empty GROUP BY clauses</h3>
    -											<p>
    -												jOOQ supports empty <code>GROUP BY ()</code> clauses as well. This will result in <reference id="select-statement" title="SELECT statements"/> that return only one record.
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT COUNT(*)
    -FROM BOOK
    -GROUP BY ()]]></sql><java><![CDATA[create.selectCount()
    -      .from(BOOK)
    -      .groupBy();]]></java></code-pair><html>
    -
    -											
    -											<h3>ROLLUP(), CUBE() and GROUPING SETS()</h3>
    -											<p>
    -												Some databases support the SQL standard grouping functions and some extensions thereof. See the manual's section about <reference id="grouping-functions" title="grouping functions"/> for more details.
    -											</p>
    -										</html></content>
    -									</section>
    -
    -									<section id="having-clause">
    -										<title>The HAVING clause</title>
    -										<content><html>
    -											<p>
    -												The HAVING clause is commonly used to further restrict data resulting from a previously issued <reference id="group-by-clause" title="GROUP BY clause"/>. An example, selecting only those authors that have written at least two books:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT AUTHOR_ID, COUNT(*)
    -FROM BOOK
    -GROUP BY AUTHOR_ID
    -HAVING COUNT(*) >= 2]]></sql><java><![CDATA[create.select(BOOK.AUTHOR_ID, count(*))
    -      .from(BOOK)
    -      .groupBy(AUTHOR_ID)
    -      .having(count().greaterOrEqual(2));]]></java></code-pair><html>
    -
    -											<p>
    -												According to the SQL standard, you may omit the GROUP BY clause and still issue a HAVING clause. This will implicitly GROUP BY (). jOOQ also supports this syntax. The following example selects one record, only if there are at least 4 books in the books table:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT COUNT(*)
    -FROM BOOK
    -HAVING COUNT(*) >= 4]]></sql><java><![CDATA[create.select(count(*))
    -      .from(BOOK)
    -      .having(count().greaterOrEqual(4));]]></java></code-pair><html>
    -
    -										</html></content>
    -									</section>
    -
    -									<section id="order-by-clause">
    -										<title>The ORDER BY clause</title>
    -										<content><html>
    -											<p>
    -												Databases are allowed to return data in any arbitrary order, unless you explicitly declare that order in the ORDER BY clause. In jOOQ, this is straight-forward:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT AUTHOR_ID, TITLE
    -FROM BOOK
    -ORDER BY AUTHOR_ID ASC, TITLE DESC]]></sql><java><![CDATA[create.select(BOOK.AUTHOR_ID, BOOK.TITLE)
    -      .from(BOOK)
    -      .orderBy(BOOK.AUTHOR_ID.asc(), BOOK.TITLE.desc());]]></java></code-pair><html>
    -
    -											<p>
    -												Any jOOQ <reference id="column-expressions" title="column expression (or field)"/> can be transformed into an <reference class="org.jooq.SortField"/> by calling the asc() and desc() methods.
    -											</p>
    -
    -											<h3>Ordering by field index</h3>
    -											<p>
    -												The SQL standard allows for specifying integer literals (<reference id="inlined-parameters" title="literals"/>, not <reference id="bind-values" title="bind values"/>!) to reference column indexes from the projection (<reference id="select-clause" title="SELECT clause"/>). This may be useful if you do not want to repeat a lengthy expression, by which you want to order - although most databases also allow for referencing <reference id="aliased-columns" title="aliased column references"/> in the ORDER BY clause. An example of this is given here:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT AUTHOR_ID, TITLE
    -FROM BOOK
    -ORDER BY 1 ASC, 2 DESC]]></sql><java><![CDATA[create.select(BOOK.AUTHOR_ID, BOOK.TITLE)
    -      .from(BOOK)
    -      .orderBy(one().asc(), inline(2).desc());]]></java></code-pair><html>
    -
    -											<p>
    -												Note, how one() is used as a convenience short-cut for inline(1)
    -											</p>
    -
    -											<h3>Ordering and NULLS</h3>
    -											<p>
    -												A few databases support the SQL standard "null ordering" clause in sort specification lists, to define whether NULL values should come first or last in an ordered result.
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT 
    -  BOOK.AUTHOR_ID, 
    -  BOOK.CO_AUTHOR_ID, 
    -  BOOK.TITLE
    -FROM BOOK
    -ORDER BY AUTHOR_ID ASC,
    -         CO_AUTHOR_ID ASC NULLS LAST]]></sql><java><![CDATA[create.select(
    -         BOOK.AUTHOR_ID, 
    -         BOOK.CO_AUTHOR_ID, 
    -         BOOK.TITLE)
    -      .from(BOOK)
    -      .orderBy(BOOK.AUTHOR_ID.asc(),
    -               BOOK.CO_AUTHOR_ID.asc().nullsLast());]]></java></code-pair><html>
    -
    -											<p>
    -												If your database doesn't support this syntax, jOOQ simulates it using a <reference id="case-expressions" title="CASE expression"/> as follows
    -											</p>
    -</html><code-pair>
    -<sql><![CDATA[SELECT 
    -  BOOK.AUTHOR_ID, BOOK.CO_AUTHOR_ID, BOOK.TITLE
    -FROM BOOK
    -ORDER BY AUTHOR_ID ASC,
    -         CASE WHEN CO_AUTHOR_ID IS NULL 
    -              THEN 1 ELSE 0 END ASC,
    -         CO_AUTHOR_ID ASC]]></sql><java><![CDATA[create.select(
    -         BOOK.AUTHOR_ID, 
    -         BOOK.CO_AUTHOR_ID,
    -         BOOK.TITLE)
    -      .from(BOOK)
    -      .orderBy(BOOK.AUTHOR_ID.asc(),
    -               BOOK.CO_AUTHOR_ID.asc().nullsLast());]]></java></code-pair><html>
    -
    -											<h3>Ordering using CASE expressions</h3>
    -											<p>
    -												Using <reference id="case-expressions" title="CASE expressions"/> in SQL ORDER BY clauses is a common pattern, if you want to introduce some sort indirection / sort mapping into your queries. As with SQL, you can add any type of <reference id="column-expressions" title="column expression"/> into your ORDER BY clause. For instance, if you have two favourite books that you always want to appear on top, you could write:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM BOOK
    -ORDER BY CASE TITLE
    -         WHEN '1984' THEN 0
    -         WHEN 'Animal Farm' THEN 1
    -         ELSE 2 END ASC]]></sql><java><![CDATA[create.select()
    -      .from(BOOK)
    -      .orderBy(decode().value(BOOK.TITLE)
    -                       .when("1984", 0)
    -                       .when("Animal Farm", 1)
    -                       .otherwise(2).asc());]]></java></code-pair><html>
    -
    -											<p>
    -												But writing these things can become quite verbose. jOOQ supports a convenient syntax for specifying sort mappings. The same query can be written in jOOQ as such:
    -											</p>
    -
    -</html><java><![CDATA[create.select()
    -      .from(BOOK)
    -      .orderBy(BOOK.TITLE.sortAsc("1984", "Animal Farm"));]]></java><html>
    -
    -											<p>
    -												More complex sort indirections can be provided using a Map:
    -											</p>
    -
    -</html><java><![CDATA[create.select()
    -      .from(BOOK)
    -      .orderBy(BOOK.TITLE.sort(new HashMap<String, Integer>() {{
    -          put("1984", 1);
    -          put("Animal Farm", 13);
    -          put("The jOOQ book", 10);
    -      }}));]]></java><html>
    -
    -      										<p>
    -      											Of course, you can combine this feature with the previously discussed NULLS FIRST / NULLS LAST feature. So, if in fact these two books are the ones you like least, you can put all NULLS FIRST (all the other books):
    -      										</p>
    -
    -</html><java><![CDATA[create.select()
    -      .from(BOOK)
    -      .orderBy(BOOK.TITLE.sortAsc("1984", "Animal Farm").nullsFirst());]]></java><html>
    -
    -											<h3>jOOQ's understanding of SELECT .. ORDER BY</h3>
    -											<p>
    -												The SQL standard defines that a "query expression" can be ordered, and that query expressions can contain <reference id="union-clause" title="UNION, INTERSECT and EXCEPT clauses"/>, whose subqueries cannot be ordered. While this is defined as such in the SQL standard, many databases allowing for the non-standard <reference id="limit-clause" title="LIMIT clause"/> in one way or another, do not adhere to this part of the SQL standard. Hence, jOOQ allows for ordering all SELECT statements, regardless whether they are constructed as a part of a UNION or not. Corner-cases are handled internally by jOOQ, by introducing synthetic subselects to adhere to the correct syntax, where this is needed.
    -											</p>
    -											
    -											
    -											<h3>Oracle's ORDER SIBLINGS BY clause</h3>
    -											<p>
    -												jOOQ also supports Oracle's SIBLINGS keyword to be used with ORDER BY clauses for <reference id="connect-by-clause" title="hierarchical queries using CONNECT BY"/>
    -											</p>
    -										</html></content>
    -									</section>
    -
    -									<section id="limit-clause">
    -										<title>The LIMIT .. OFFSET clause</title>
    -										<content><html>
    -											<p>
    -												While being extremely useful for every application that does paging, or just to limit result sets to reasonable sizes, this clause is not yet part of any SQL standard (up until SQL:2008). Hence, there exist a variety of possible implementations in various SQL dialects, concerning this limit clause. jOOQ chose to implement the LIMIT .. OFFSET clause as understood and supported by MySQL, H2, HSQLDB, Postgres, and SQLite. Here is an example of how to apply limits with jOOQ:
    -											</p>
    -
    -</html><java><![CDATA[create.select().from(BOOK).limit(1).offset(2);]]></java><html>
    -
    -											<p>
    -												This will limit the result to 1 books starting with the 2nd book (starting at offset 0!). limit() is supported in all dialects, offset() in all but Sybase ASE, which has no reasonable means to simulate it. This is how jOOQ simulates the above query in various SQL dialects:
    -											</p>
    -
    -</html><sql><![CDATA[-- MySQL, H2, HSQLDB, Postgres, and SQLite
    -SELECT * FROM BOOK LIMIT 1 OFFSET 2
    -
    --- CUBRID supports a MySQL variant of the LIMIT .. OFFSET clause
    -SELECT * FROM BOOK LIMIT 2, 1
    -
    --- Derby
    -SELECT * FROM BOOK OFFSET 2 ROWS FETCH NEXT 1 ROWS ONLY
    -
    --- Ingres
    -SELECT * FROM BOOK OFFSET 2 FETCH FIRST 1 ROWS ONLY
    -
    --- Firebird
    -SELECT * FROM BOOK ROWS 2 TO 3
    -
    --- Sybase SQL Anywhere
    -SELECT TOP 1 ROWS START AT 3 * FROM BOOK
    -
    --- DB2 (without OFFSET)
    -SELECT * FROM BOOK FETCH FIRST 1 ROWS ONLY
    -
    --- Sybase ASE, SQL Server (without OFFSET)
    -SELECT TOP 1 * FROM BOOK
    -
    --- DB2 (with OFFSET), SQL Server (with OFFSET), Oracle (actual query may vary)
    -SELECT * FROM (
    -  SELECT LIMIT_98843777.*, ROW_NUMBER() OVER (ORDER BY ID ASC) AS ROWNUM_98843777
    -  FROM (
    -    SELECT TOP 100 PERCENT *
    -    FROM BOOK
    -    ORDER BY ID ASC
    -  ) AS LIMIT_98843777
    -) AS OUTER_LIMIT_98843777
    -WHERE ROWNUM_98843777 > 1
    -AND ROWNUM_98843777 <= 3
    -]]></sql><html>
    -
    -											<p>
    -												As you can see, jOOQ will take care of the incredibly painful ROW_NUMBER() OVER() (or ROWNUM for Oracle) filtering in subselects for you, you'll just have to write limit(1).offset(2) in any dialect.
    -											</p>
    -
    -											<h3>SQL Server's ORDER BY, TOP and subqueries</h3>
    -											<p>
    -												As can be seen in the above example, writing correct SQL can be quite tricky, depending on the SQL dialect. For instance, with SQL Server, you cannot have an ORDER BY clause in a subquery, unless you also have a TOP clause. This is illustrated by the fact that jOOQ renders a TOP 100 PERCENT clause for you. The same applies to the fact that ROW_NUMBER() OVER() needs an ORDER BY windowing clause, even if you don't provide one to the jOOQ query. By default, jOOQ adds ordering by the first column of your projection.
    -											</p>
    -										</html></content>
    -									</section>
    -
    -									<section id="for-update-clause">
    -										<title>The FOR UPDATE clause</title>
    -										<content><html>
    -											<p>
    -												For inter-process synchronisation and other reasons, you may choose to use the SELECT .. FOR UPDATE clause to indicate to the database, that a set of cells or records should be locked by a given transaction for subsequent updates. With jOOQ, this can be achieved as such:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM BOOK
    -WHERE ID = 3
    -FOR UPDATE]]></sql><java><![CDATA[create.select()
    -      .from(BOOK)
    -      .where(BOOK.ID.equal(3))
    -      .forUpdate();]]></java></code-pair><html>
    -
    -											<p>
    -												The above example will produce a record-lock, locking the whole record for updates. Some databases also support cell-locks using FOR UPDATE OF ..
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM BOOK
    -WHERE ID = 3
    -FOR UPDATE OF TITLE]]></sql><java><![CDATA[create.select()
    -      .from(BOOK)
    -      .where(BOOK.ID.equal(3))
    -      .forUpdate().of(BOOK.TITLE);]]></java></code-pair><html>
    -
    -											<p>
    -												Oracle goes a bit further and also allows to specify the actual locking behaviour. It features these additional clauses, which are all supported by jOOQ:
    -											</p>
    -											<ul>
    -												<li>FOR UPDATE NOWAIT: This is the default behaviour. If the lock cannot be acquired, the query fails immediately</li>
    -												<li>FOR UPDATE WAIT n: Try to wait for [n] seconds for the lock acquisition. The query will fail only afterwards</li>
    -												<li>FOR UPDATE SKIP LOCKED: This peculiar syntax will skip all locked records. This is particularly useful when implementing queue tables with multiple consumers</li>
    -											</ul>
    -											<p>
    -												With jOOQ, you can use those Oracle extensions as such:
    -											</p>
    -
    -</html><java><![CDATA[create.select().from(BOOK).where(BOOK.ID.equal(3)).forUpdate().nowait();
    -create.select().from(BOOK).where(BOOK.ID.equal(3)).forUpdate().wait(5);
    -create.select().from(BOOK).where(BOOK.ID.equal(3)).forUpdate().skipLocked();]]></java><html>
    -
    -											<h3>FOR UPDATE in CUBRID and SQL Server</h3>
    -											<p>
    -												The SQL standard specifies a FOR UPDATE clause to be applicable for cursors. Most databases interpret this as being applicable for all SELECT statements. An exception to this rule are the CUBRID and SQL Server databases, that do not allow for any FOR UPDATE clause in a regular SQL SELECT statement. jOOQ simulates the FOR UPDATE behaviour, by locking record by record with JDBC. JDBC allows for specifying the flags TYPE_SCROLL_SENSITIVE, CONCUR_UPDATABLE for any statement, and then using ResultSet.updateXXX() methods to produce a cell-lock / row-lock. Here's a simplified example in JDBC:
    -											</p>
    -</html><java><![CDATA[PreparedStatement stmt = connection.prepareStatement(
    -  "SELECT * FROM author WHERE id IN (3, 4, 5)",
    -  ResultSet.TYPE_SCROLL_SENSITIVE,
    -  ResultSet.CONCUR_UPDATABLE);
    -ResultSet rs = stmt.executeQuery();
    -
    -while (rs.next()) {
    -  // UPDATE the primary key for row-locks, or any other columns for cell-locks
    -  rs.updateObject(1, rs.getObject(1));
    -  rs.updateRow();
    -
    -  // Do more stuff with this record
    -}]]></java><html>
    -
    -											<p>
    -												The main drawback of this approach is the fact that the database has to maintain a scrollable cursor, whose records are locked one by one. This can cause a major risk of deadlocks or race conditions if the JDBC driver can recover from the unsuccessful locking, if two Java threads execute the following statements:
    -											</p>
    -
    -</html><sql><![CDATA[-- thread 1
    -SELECT * FROM author ORDER BY id ASC;
    -
    --- thread 2
    -SELECT * FROM author ORDER BY id DESC;]]></sql><html>
    -
    -											<p>
    -												So use this technique with care, possibly only ever locking single rows!
    -											</p>
    -
    -											<h3>Pessimistic (shared) locking with the FOR SHARE clause</h3>
    -											<p>
    -												Some databases (MySQL, Postgres) also allow to issue a non-exclusive lock explicitly using a FOR SHARE clause. This is also supported by jOOQ
    -											</p>
    -
    -											<h3>Optimistic locking in jOOQ</h3>
    -											<p>
    -												Note, that jOOQ also supports optimistic locking, if you're doing simple CRUD. This is documented in the section's manual about <reference id="optimistic-locking" title="optimistic locking"/>.
    -											</p>
    -										</html></content>
    -									</section>
    -
    -									<section id="union-clause">
    -										<title>UNION, INTERSECTION and EXCEPT</title>
    -										<content><html>
    -											<p>
    -												SQL allows to perform set operations as understood in standard set theory on result sets. These operations include unions, intersections, subtractions. For two subselects to be combinable by such a set operator, each subselect must return a <reference id="table-expressions" title="table expression"/> of the same arity and type.
    -											</p>
    -											
    -											<h3>UNION and UNION ALL</h3>
    -											<p>
    -												These operators combine two results into one. While UNION removes all duplicate records resulting from this combination, UNION ALL leaves subselect results as they are. Typically, you should prefer UNION ALL over UNION, if you don't really need to remove duplicates. The following example shows how to use such a UNION operation in jOOQ.
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT * FROM BOOK WHERE ID = 3
    -UNION ALL
    -SELECT * FROM BOOK WHERE ID = 5]]></sql><java><![CDATA[create.selectFrom(BOOK).where(BOOK.ID.equal(3))
    -      .unionAll(
    -create.selectFrom(BOOK).where(BOOK.ID.equal(5)));]]></java></code-pair><html>
    -											
    -											<h3>INTERSECT [ ALL ] and EXCEPT [ ALL ]</h3>
    -											<p>
    -												INTERSECT is the operation that produces only those s that are returned by both subselects. EXCEPT is the operation that returns only those s that are returned exclusively in the first subselect. Both operators will remove duplicates from their results. The SQL standard allows to specify the ALL keyword for both of these operators as well, but this is hardly supported in any database. jOOQ does not support INTERSECT ALL, EXEPT ALL operations either. 
    -											</p>
    -											
    -											<h3>jOOQ's set operators and how they're different from standard SQL</h3>
    -											<p>
    -												As previously mentioned in the manual's section about the <reference id="order-by-clause" title="ORDER BY clause"/>, jOOQ has slightly changed the semantics of these set operators. While in SQL, a subselect may not contain any <reference id="order-by-clause" title="ORDER BY clause"/> or <reference id="limit-clause" title="LIMIT clause"/> (unless you wrap the subselect into a <reference id="nested-selects" title="nested SELECT"/>), jOOQ allows you to do so. In order to select both the youngest and the oldest author from the database, you can issue the following statement with jOOQ (rendered to the MySQL dialect):
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[  (SELECT * FROM AUTHOR 
    -   ORDER BY DATE_OF_BIRTH ASC LIMIT 1)
    -UNION
    -  (SELECT * FROM AUTHOR 
    -   ORDER BY DATE_OF_BIRTH DESC LIMIT 1)]]></sql><java><![CDATA[create.selectFrom(AUTHOR)
    -      .orderBy(AUTHOR.DATE_OF_BIRTH.asc()).limit(1)
    -      .union(
    -create.selectFrom(AUTHOR)
    -      .orderBy(AUTHOR.DATE_OF_BIRTH.desc()).limit(1));]]></java></code-pair><html>
    -		
    -										</html></content>
    -									</section>
    -
    -									<section id="oracle-hints">
    -										<title>Oracle-style hints</title>
    -										<content><html>
    -											<p>
    -												If you are closely coupling your application to an Oracle (or CUBRID) database,	you might need to be able to pass hints of the form /*+HINT*/ with your SQL statements to the Oracle database. For example:
    -											</p>
    -
    -</html><sql>SELECT /*+ALL_ROWS*/ FIRST_NAME, LAST_NAME
    -  FROM AUTHOR</sql><html>
    -
    -				  							<p>
    -				  								This can be done in jOOQ using the .hint() clause in your SELECT statement:
    -			  								</p>
    -
    -</html><java>create.select(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .hint("/*+ALL_ROWS*/")
    -      .from(AUTHOR);</java><html>
    -
    -											<p>
    -												Note that you can pass any string in the .hint() clause. If you use that clause, the passed string will always be put in between the SELECT [DISTINCT] keywords and the actual projection list
    -											</p>
    -										</html></content>
    -									</section>
    -								</sections>
    -							</section>
    -
    -							<section id="insert-statement">
    -								<title>The INSERT statement</title>
    -								<content><html>
    -									<p>
    -										The INSERT statement is used to insert new records into a database table. Records can either be supplied using a VALUES() constructor, or a SELECT statement. jOOQ supports both types of INSERT statements. An example of an INSERT statement using a VALUES() constructor is given here:
    -									</p>
    -
    -
    -</html><code-pair>
    -<sql>INSERT INTO AUTHOR 
    -       (ID, FIRST_NAME, LAST_NAME)
    -VALUES (100, 'Hermann', 'Hesse');</sql><java>create.insertInto(AUTHOR,
    -        AUTHOR.ID, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .values(100, "Hermann", "Hesse");</java></code-pair><html>
    -
    -									<h3>INSERT multiple rows with the VALUES() constructor</h3>
    -									<p>
    -										The SQL standard specifies that multiple rows can be supplied to the VALUES() constructor in an INSERT statement. Here's an example of a multi-record INSERT
    -									</p>
    -</html><code-pair>
    -<sql>INSERT INTO AUTHOR
    -       (ID, FIRST_NAME, LAST_NAME)
    -VALUES (100, 'Hermann', 'Hesse'),
    -       (101, 'Alfred', 'Döblin');</sql><java>create.insertInto(AUTHOR,
    -        AUTHOR.ID, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .values(100, "Hermann", "Hesse")
    -      .values(101, "Alfred", "Döblin");</java></code-pair><html>
    -
    -									<p>
    -										jOOQ tries to stay close to actual SQL. In detail, however, Java's expressiveness is limited. That's why the values() clause is repeated for every record in multi-record inserts. 
    -									</p>
    -									<p> 
    -										Some RDBMS do not support inserting several records in a single statement. In those cases, jOOQ simulates multi-record INSERTs using the following SQL:
    -									</p>
    -
    -</html><code-pair>
    -<sql>INSERT INTO AUTHOR
    -    (ID, FIRST_NAME, LAST_NAME)
    -SELECT 100, 'Hermann', 'Hesse' FROM DUAL UNION ALL
    -SELECT 101, 'Alfred', 'Döblin' FROM DUAL;</sql><java>create.insertInto(AUTHOR,
    -        AUTHOR.ID, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .values(100, "Hermann", "Hesse")
    -      .values(101, "Alfred", "Döblin");
    -</java></code-pair><html>
    -
    -									<h3>INSERT using jOOQ's alternative syntax</h3>
    -									<p>
    -										MySQL (and some other RDBMS) allow for using a non-SQL-standard, UPDATE-like syntax for INSERT statements. This is also supported in jOOQ, should you prefer that syntax. The above INSERT statement can also be expressed as follows:
    -									</p>
    -
    -</html><java>create.insertInto(AUTHOR)
    -      .set(AUTHOR.ID, 100)
    -      .set(AUTHOR.FIRST_NAME, "Hermann")
    -      .set(AUTHOR.LAST_NAME, "Hesse")
    -      .newRecord()
    -      .set(AUTHOR.ID, 101)
    -      .set(AUTHOR.FIRST_NAME, "Alfred")
    -      .set(AUTHOR.LAST_NAME, "Döblin");</java><html>
    -      
    -									<p>
    -										As you can see, this syntax is a bit more verbose, but also more type-safe, as every field can be matched with its value. Internally, the two syntaxes are strictly equivalent.
    -									</p>
    -
    -									<h3>MySQL's INSERT .. ON DUPLICATE KEY UPDATE</h3>
    -									<p>
    -										The MySQL database supports a very convenient way to INSERT or UPDATE a record. This is a non-standard extension to the SQL syntax, which is supported by jOOQ and simulated in other RDBMS, where this is possible (i.e. if they support the SQL standard <reference id="merge-statement" title="MERGE statement"/>). Here is an example how to use the ON DUPLICATE KEY UPDATE clause:
    -									</p>
    -									
    -</html><java>// Add a new author called "Koontz" with ID 3.
    -// If that ID is already present, update the author's name
    -create.insertInto(AUTHOR, AUTHOR.ID, AUTHOR.LAST_NAME)
    -      .values(3, "Koontz")
    -      .onDuplicateKeyUpdate()
    -      .set(AUTHOR.LAST_NAME, "Koontz");</java><html>
    -
    -									<h3>The synthetic ON DUPLICATE KEY IGNORE clause</h3>
    -							
    -									<p>
    -										The MySQL database also supports an INSERT IGNORE INTO clause. This is supported by jOOQ using the more convenient SQL syntax variant of ON DUPLICATE KEY IGNORE, which can be equally simulated in other databases using a <reference id="merge-statement" title="MERGE statement"/>:
    -									</p>
    -									
    -</html><java>// Add a new author called "Koontz" with ID 3.
    -// If that ID is already present, ignore the INSERT statement
    -create.insertInto(AUTHOR, AUTHOR.ID, AUTHOR.LAST_NAME)
    -      .values(3, "Koontz")
    -      .onDuplicateKeyIgnore();</java><html>
    -
    -      								<h3>Postgres's INSERT .. RETURNING</h3>
    -									<p>
    -										The Postgres database has native support for an INSERT .. RETURNING clause. This is a very powerful concept that is simulated for all other dialects using JDBC's <reference class="java.sql.Statement" anchor="#getGeneratedKeys()" title="getGeneratedKeys()"/> method. Take this example:
    -									</p>
    -
    -</html><java><![CDATA[// Add another author, with a generated ID
    -Record<?> record =
    -create.insertInto(AUTHOR, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .values("Charlotte", "Roche")
    -      .returning(AUTHOR.ID)
    -      .fetchOne();
    -
    -System.out.println(record.getValue(AUTHOR.ID));
    -
    -// For some RDBMS, this also works when inserting several values
    -// The following should return a 2x2 table
    -Result<?> result =
    -create.insertInto(AUTHOR, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .values("Johann Wolfgang", "von Goethe")
    -      .values("Friedrich", "Schiller")
    -      // You can request any field. Also trigger-generated values
    -      .returning(AUTHOR.ID, AUTHOR.CREATION_DATE)
    -      .fetch();]]></java><html>
    -
    -		      						<p>
    -		      							Some databases have poor support for returning generated keys after INSERTs. In those cases, jOOQ might need to issue another <reference id="select-statement" title="SELECT statement"/> in order to fetch an @@identity value. Be aware, that this can lead to race-conditions in those databases that cannot properly return generated ID values. For more information, please consider the jOOQ Javadoc for the returning() clause.
    -		      						</p>
    -
    -									<h3>The INSERT SELECT statement</h3>
    -							
    -									<p>
    -										In some occasions, you may prefer the INSERT SELECT syntax, for instance, when you copy records from one table to another:
    -									</p>
    -									
    -</html><java>create.insertInto(AUTHOR_ARCHIVE)
    -      .select(create.selectFrom(AUTHOR).where(AUTHOR.DECEASED.isTrue()));</java></content>
    -							</section>
    -
    -							<section id="update-statement">
    -								<title>The UPDATE statement</title>
    -								<content><html>
    -									<p>
    -										The UPDATE statement is used to modify one or several pre-existing records in a database table. UPDATE statements are only possible on single tables. Support for multi-table updates will be implemented in the near future. An example update query is given here:
    -									</p>
    -
    -</html><code-pair>
    -<sql>UPDATE AUTHOR
    -   SET FIRST_NAME = 'Hermann',
    -       LAST_NAME = 'Hesse'
    - WHERE ID = 3;</sql><java>create.update(AUTHOR)
    -      .set(AUTHOR.FIRST_NAME, "Hermann")
    -      .set(AUTHOR.LAST_NAME, "Hesse")
    -      .where(AUTHOR.ID.equal(3));</java>
    -</code-pair><html>
    -								
    -								</html></content>
    -							</section>
    -
    -							<section id="delete-statement">
    -								<title>The DELETE statement</title>
    -								<content><html>
    -									<p>
    -										The DELETE statement physically removes records from a database table. DELETE statements are only possible on single tables. Support for multi-table deletes will be implemented in the near future. An example delete query is given here:
    -									</p>
    -
    -</html><code-pair>
    -<sql>DELETE AUTHOR
    - WHERE ID = 100;</sql><java>create.delete(AUTHOR)
    -      .where(AUTHOR.ID.equal(100));</java>
    -</code-pair><html>
    -
    -								</html></content>
    -							</section>
    -
    -							<section id="merge-statement">
    -								<title>The MERGE statement</title>
    -								<content><html>
    -									<p>
    -										The MERGE statement is one of the most advanced standardised SQL constructs, which is supported by DB2, HSQLDB, Oracle, SQL Server and Sybase (MySQL has the similar INSERT .. ON DUPLICATE KEY UPDATE construct)
    -									</p>
    -									<p>
    -										The point of the standard MERGE statement is to take a TARGET table, and merge (INSERT, UPDATE) data from a SOURCE table into it. DB2, Oracle, SQL Server and Sybase also allow for DELETING some data and for adding many additional clauses. With jOOQ {jooq-version}, only Oracle's MERGE extensions are supported. Here is an example:
    -									</p>
    -
    -</html><code-pair>
    -<sql>-- Check if there is already an author called 'Hitchcock'
    --- If there is, rename him to John. If there isn't add him.
    -MERGE INTO AUTHOR
    -USING (SELECT 1 FROM DUAL)
    -ON (LAST_NAME = 'Hitchcock')
    -WHEN MATCHED THEN UPDATE SET FIRST_NAME = 'John'
    -WHEN NOT MATCHED THEN INSERT (LAST_NAME) VALUES ('Hitchcock')</sql><java>create.mergeInto(AUTHOR)
    -      .using(create().selectOne())
    -      .on(AUTHOR.LAST_NAME.equal("Hitchcock"))
    -      .whenMatchedThenUpdate()
    -      .set(AUTHOR.FIRST_NAME, "John")
    -      .whenNotMatchedThenInsert(AUTHOR.LAST_NAME)
    -      .values("Hitchcock");
    -
    -</java></code-pair><html>
    -
    -		                            <h3>MERGE Statement (H2-specific syntax)</h3>
    -									<p>
    -									    The H2 database ships with a somewhat less powerful but a little more intuitive syntax for its own version of the MERGE statement. An example more or less equivalent to the previous one can be seen here:
    -									</p>
    -									
    -</html><code-pair>
    -<sql>-- Check if there is already an author called 'Hitchcock'
    --- If there is, rename him to John. If there isn't add him.
    -
    -MERGE INTO AUTHOR (FIRST_NAME, LAST_NAME)
    -KEY (LAST_NAME)
    -VALUES ('John', 'Hitchcock')</sql><java>create.mergeInto(AUTHOR,
    -                 AUTHOR.FIRST_NAME,
    -                 AUTHOR.LAST_NAME)
    -      .key(AUTHOR.LAST_NAME)
    -      .values("John", "Hitchcock")
    -      .execute();
    -</java></code-pair><html>
    -
    -		                            <p>
    -		                                This syntax can be fully simulated by jOOQ for all other databases that support the SQL standard. For more information about the H2 MERGE syntax, see the documentation here:<br/>
    -		                                <a href="http://www.h2database.com/html/grammar.html#merge">http://www.h2database.com/html/grammar.html#merge</a>
    -		                            </p>
    -								
    -								</html></content>
    -							</section>
    -
    -							<section id="truncate-statement">
    -								<title>The TRUNCATE statement</title>
    -								<content><html>
    -									<p>
    -										The TRUNCATE statement is the only DDL statement supported by jOOQ so far. It is popular in many databases when you want to bypass constraints for table truncation. Databases may behave differently, when a truncated table is referenced by other tables. For instance, they may fail if records from a truncated table are referenced, even with ON DELETE CASCADE clauses in place. Please, consider your database manual to learn more about its TRUNCATE implementation.
    -									</p>
    -									<p>
    -										The TRUNCATE syntax is trivial:
    -									</p>
    -
    -</html><code-pair>
    -	<sql>TRUNCATE TABLE AUTHOR;</sql><java>create.truncate(AUTHOR).execute();</java>
    -</code-pair><html>
    -									
    -									<p>
    -										TRUNCATE is not supported by Ingres and SQLite. jOOQ will execute a DELETE FROM AUTHOR statement instead.
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="table-expressions">
    -						<title>Table expressions</title>
    -						<content><html>
    -							<p>
    -								The following sections explain the various types of table expressions supported by jOOQ
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="generated-tables">
    -								<title>Generated Tables</title>
    -								<content><html>
    -									<p>
    -										Most of the times, when thinking about a <reference id="table-expressions" title="table expression"/> you're probably thinking about an actual physical table in your database schema. If you're using jOOQ's <reference id="code-generation" title="code generator"/>, you will have all tables from your database schema available to you as type safe Java objects. You can then use these tables in SQL <reference id="from-clause" title="FROM clauses"/>, <reference id="join-clause" title="JOIN clauses"/> or in other <reference id="sql-statements" title="SQL statements"/>, just like any other table expression. An example is given here:
    -									</p>
    -							
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM AUTHOR -- Table expression AUTHOR
    -JOIN BOOK   -- Table expression BOOK
    -ON (AUTHOR.ID = BOOK.AUTHOR_ID)]]></sql><java><![CDATA[create.select()
    -      .from(AUTHOR) // Table expression AUTHOR
    -      .join(BOOK)   // Table expression BOOK
    -      .on(AUTHOR.ID.equal(BOOK.AUTHOR_ID));]]></java></code-pair><html>
    -							
    -									<p>
    -										The above example shows how AUTHOR and BOOK tables are joined in a <reference id="select-statement" title="SELECT statement"/>. It also shows how you can access physical <reference id="table-columns" title="table columns"/> by dereferencing the relevant Java attributes of their tables.
    -									</p>
    -									<p>
    -										See the manual's section about <reference id="codegen-tables" title="generated tables"/> for more information about what is really generated by the <reference id="code-generation" title="code generator"/>
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="aliased-tables">
    -								<title>Aliased Tables</title>
    -								<content><html>
    -									<p>
    -										The strength of jOOQ's <reference id="code-generation" title="code generator"/> becomes more obvious when you perform table aliasing and dereference fields from generated aliased tables. This can best be shown by example:
    -									</p>
    -
    -</html><code-pair><sql><![CDATA[-- Select all books by authors born after 1920,
    --- named "Paulo" from a catalogue:
    -
    -
    -
    -SELECT *
    -  FROM author a
    -  JOIN book b ON a.id = b.author_id
    - WHERE a.year_of_birth > 1920
    -   AND a.first_name = 'Paulo'
    - ORDER BY b.title]]></sql><java><![CDATA[// Declare your aliases before using them in SQL:
    -Author a = AUTHOR.as("a");
    -Book b = BOOK.as("b");
    -
    -// Use aliased tables in your statement
    -create.select()
    -      .from(a)
    -      .join(b).on(a.ID.equal(b.AUTHOR_ID))
    -      .where(a.YEAR_OF_BIRTH.greaterThan(1920)
    -      .and(a.FIRST_NAME.equal("Paulo")))
    -      .orderBy(b.TITLE);]]></java></code-pair><html>
    -								
    -									<p>
    -										As you can see in the above example, calling as() on generated tables returns an object of the same type as the table. This means that the resulting object can be used to dereference fields from the aliased table. This is quite powerful in terms of having your Java compiler check the syntax of your SQL statements. If you remove a column from a table, dereferencing that column from that table alias will cause compilation errors.
    -									</p>
    -									
    -									<h3>Dereferencing columns from other table expressions</h3>
    -									<p>
    -										TODO document this
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="joined-tables">
    -								<title>Joined tables</title>
    -								<content><html>
    -									<p>
    -										The <reference id="join-clause" title="JOIN operators"/> that can be used in <reference id="select-statement" title="SQL SELECT statements"/> are the most powerful and best supported means of creating new <reference id="table-expressions" title="table expressions"/> in SQL. Informally, the following can be said:
    -									</p>
    -									
    -</html><text>A(colA1, ..., colAn) "join" B(colB1, ..., colBm) "produces" C(colA1, ..., colAn, colB1, ..., colBm)</text><html>
    -
    -									<p>
    -										SQL and relational algebra distinguish between at least the following JOIN types (upper-case: SQL, lower-case: relational algebra):
    -									</p>
    -									<ul>
    -										<li><strong>CROSS JOIN or cartesian product</strong>: The basic JOIN in SQL, producing a relational cross product, combining every record of table A with every record of table B. Note that cartesian products can also be produced by listing comma-separated <reference id="table-expressions" title="table expressions"/> in the <reference id="from-clause" title="FROM clause"/> of a <reference id="select-statement" title="SELECT statement"/></li>
    -										<li><strong>NATURAL JOIN</strong>: The basic JOIN in relational algebra, yet a rarely used JOIN in databases with everyday degree of normalisation. This JOIN type unconditionally equi-joins two tables by all columns with the same name (requiring foreign keys and primary keys to share the same name). Note that the JOIN columns will only figure once in the resulting <reference id="table-expressions" title="table expression"/>.</li>
    -										<li><strong>INNER JOIN or equi-join</strong>: This JOIN operation performs a cartesian product (CROSS JOIN) with a <reference id="conditional-expressions" title="filtering predicate"/> being applied to the resulting <reference id="table-expressions" title="table expression"/>. Most often, a <reference id="comparison-predicate" title="equal comparison predicate"/> comparing foreign keys and primary keys will be applied as a filter, but any other predicate will work, too.</li>
    -										<li><strong>OUTER JOIN</strong>: This JOIN operation performs a cartesian product (CROSS JOIN) with a <reference id="conditional-expressions" title="filtering predicate"/> being applied to the resulting <reference id="table-expressions" title="table expression"/>. Most often, a <reference id="comparison-predicate" title="equal comparison predicate"/> comparing foreign keys and primary keys will be applied as a filter, but any other predicate will work, too. Unlike the INNER JOIN, an OUTER JOIN will add "empty records" to the left (table A) or right (table B) or both tables, in case the conditional expression fails to produce a .</li>										
    -										<li><strong>semi-join</strong>: In SQL, this JOIN operation can only be expressed implicitly using <reference id="in-predicate" title="IN predicates"/> or <reference id="exists-predicate" title="EXISTS predicates"/>. The <reference id="table-expressions" title="table expression"/> resulting from a semi-join will only contain the left-hand side table A</li>										
    -										<li><strong>anti-join</strong>: In SQL, this JOIN operation can only be expressed implicitly using <reference id="in-predicate" title="NOT IN predicates"/> or <reference id="exists-predicate" title="NOT EXISTS predicates"/>. The <reference id="table-expressions" title="table expression"/> resulting from a semi-join will only contain the left-hand side table A</li>
    -										<li><strong>division</strong>: This JOIN operation is hard to express at all, in SQL. See the manual's chapter about <reference id="relational-division" title="relational division"/> for details on how jOOQ simulates this operation.</li>
    -									</ul>									
    -									<p>
    -										jOOQ supports all of these JOIN types (except semi-join and anti-join) directly on any <reference id="table-expressions" title="table expression"/>:
    -									</p>
    -									
    -</html><java><![CDATA[// jOOQ's relational division convenience syntax 
    -DivideByOnStep divideBy(Table<?> table)
    -
    -// Various overloaded INNER JOINs
    -TableOnStep join(TableLike<?>)
    -TableOnStep join(String)
    -TableOnStep join(String, Object...)
    -TableOnStep join(String, QueryPart...)
    -
    -// Various overloaded OUTER JOINs (supporting Oracle's partitioned OUTER JOIN)
    -// Overloading is similar to that of INNER JOIN
    -TablePartitionByStep leftOuterJoin(TableLike<?>)
    -TablePartitionByStep rightOuterJoin(TableLike<?>)
    -
    -// Various overloaded FULL OUTER JOINs
    -TableOnStep fullOuterJoin(TableLike<?>)
    -
    -// Various overloaded CROSS JOINs
    -Table<Record> crossJoin(TableLike<?>)
    -
    -// Various overloaded NATURAL JOINs
    -Table<Record> naturalJoin(TableLike<?>)
    -Table<Record> naturalLeftOuterJoin(TableLike<?>)
    -Table<Record> naturalRightOuterJoin(TableLike<?>)]]></java><html>							
    -
    -									<p>
    -										Note that most of jOOQ's JOIN operations give way to a similar DSL API hierarchy as previously seen in the manual's section about the <reference id="join-clause" title="JOIN clause"/>
    -									</p>		
    -								</html></content>
    -							</section>
    -
    -							<section id="nested-selects">
    -								<title>Nested SELECTs</title>
    -								<content><html>
    -									<p>
    -										A <reference id="select-statement" title="SELECT statement"/> can appear almost anywhere a <reference id="table-expressions" title="table expression"/> can. Such a "nested SELECT" is often called a "derived table". Apart from many convenience methods accepting <reference class="org.jooq.Select"/> objects directly, a SELECT statement can always be transformed into a <reference class="org.jooq.Table"/> object using the asTable() method.
    -									</p>
    -									
    -									<h3>Example: Scalar subquery</h3>
    -									
    -</html><code-pair>
    -<sql>SELECT *
    -  FROM BOOK
    - WHERE BOOK.AUTHOR_ID = (
    - 		SELECT ID
    -          FROM AUTHOR
    -         WHERE LAST_NAME = 'Orwell')</sql><java>create.select()
    -      .from(BOOK)
    -      .where(BOOK.AUTHOR_ID.equal(create
    -             .select(AUTHOR.ID)
    -             .from(AUTHOR)
    -             .where(AUTHOR.LAST_NAME.equal("Orwell"))));</java>
    -</code-pair><html>
    -
    -									<h3>Example: Derived table</h3>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT nested.* FROM (
    -      SELECT AUTHOR_ID, count(*) books
    -        FROM BOOK
    -    GROUP BY AUTHOR_ID
    -) nested
    -ORDER BY nested.books DESC
    -
    -
    -
    -]]></sql><java><![CDATA[Table<Record> nested =
    -    create.select(BOOK.AUTHOR_ID, count().as("books"))
    -          .from(BOOK)
    -          .groupBy(BOOK.AUTHOR_ID).asTable("nested");
    -
    -create.select(nested.getFields())
    -      .from(nested)
    -      .orderBy(nested.getField("books"));]]></java>
    -</code-pair><html>
    -
    -									<h3>Example: Correlated subquery</h3>
    -</html><code-pair>
    -<sql><![CDATA[  SELECT LAST_NAME, (
    -      SELECT COUNT(*)
    -       FROM BOOK
    -      WHERE BOOK.AUTHOR_ID = AUTHOR.ID) books
    -    FROM AUTHOR
    -ORDER BY books DESC
    -
    -
    -
    -]]></sql><java><![CDATA[// The type of books cannot be inferred from the Select<?>
    -Field<Object> books =
    -    create.selectCount()
    -          .from(BOOK)
    -          .where(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -          .asField("books");
    -create.select(AUTHOR.ID, books)
    -      .from(AUTHOR)
    -      .orderBy(books, AUTHOR.ID));]]></java>
    -</code-pair><html>									
    -								</html></content>
    -							</section>
    -
    -							<section id="pivot-tables">
    -								<title>The Oracle 11g PIVOT clause</title>
    -								<content><html>
    -									<p>
    -										If you are closely coupling your application to an Oracle database, you can take advantage of some Oracle-specific features, such as the PIVOT clause, used for statistical analyses. The formal syntax definition is as follows:
    -									</p>
    -									
    -</html><sql>-- SELECT ..
    -     FROM table PIVOT (aggregateFunction [, aggregateFunction] FOR column IN (expression [, expression]))
    ---  WHERE ..</sql><html>
    -		
    -									<p>
    -										The PIVOT clause is available from the <reference class="org.jooq.Table"/> type, as pivoting is done directly on a table. Currently, only Oracle's PIVOT clause is supported. Support for SQL Server's slightly different PIVOT clause will be added later. Also, jOOQ may simulate PIVOT for other dialects in the future.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="relational-division">
    -								<title>jOOQ's relational division syntax</title>
    -								<content><html>
    -									<p>
    -									    There is one operation in relational algebra that is not given a lot of attention, because it is rarely used in real-world applications. It is the relational division, the opposite operation of the cross product (or, relational multiplication). The following is an approximate definition of a relational division:
    -									</p>
    -
    -</html><config>Assume the following cross join / cartesian product
    -C = A × B
    -
    -Then it can be said that
    -A = C ÷ B
    -B = C ÷ A</config><html>
    -
    -									<p>
    -									   With jOOQ, you can simplify using relational divisions by using the following syntax:
    -									</p>
    -
    -</html><java>C.divideBy(B).on(C.ID.equal(B.C_ID)).returning(C.TEXT)</java><html>
    -
    -									<p>
    -										The above roughly translates to
    -									</p>
    -
    -</html><sql>SELECT DISTINCT C.TEXT FROM C "c1"
    -WHERE NOT EXISTS (
    -  SELECT 1 FROM B
    -  WHERE NOT EXISTS (
    -    SELECT 1 FROM C "c2"
    -    WHERE "c2".TEXT = "c1".TEXT
    -    AND "c2".ID = B.C_ID
    -  )
    -)</sql><html>
    -
    -									<p>
    -										Or in plain text: Find those TEXT values in C whose ID's correspond to all ID's in B. Note that from the above SQL statement, it is immediately clear that proper indexing is of the essence. Be sure to have indexes on all columns referenced from the on(...) and returning(...) clauses.
    -									</p>
    -
    -									<p>
    -										For more information about relational division and some nice, real-life examples, see
    -									</p>
    -
    -									<ul>
    -										<li><a href="http://en.wikipedia.org/wiki/Relational_algebra#Division" title="Wikipedia article on relational division">http://en.wikipedia.org/wiki/Relational_algebra#Division</a></li>
    -										<li><a href="http://www.simple-talk.com/sql/t-sql-programming/divided-we-stand-the-sql-of-relational-division/" title="A nice summary of what relational division is and how it is best implemented in SQL">http://www.simple-talk.com/sql/t-sql-programming/divided-we-stand-the-sql-of-relational-division/</a></li>
    -									</ul>
    -								</html></content>
    -
    -							</section>
    -
    -							<section id="array-and-cursor-unnesting">
    -								<title>Array and cursor unnesting</title>
    -								<content><html>
    -									<p>
    -										The SQL standard specifies how SQL databases should implement ARRAY and TABLE types, as well as CURSOR types. Put simply, a CURSOR is a pointer to any materialised <reference id="table-expressions" title="table expression"/>. Depending on the cursor's features, this table expression can be scrolled through in both directions, records can be locked, updated, removed, inserted, etc. Often, CURSOR types contain s, whereas ARRAY and TABLE types contain simple scalar values, although that is not a requirement
    -									</p>
    -									
    -									<p>
    -										ARRAY types in SQL are similar to Java's array types. They contain a "component type" or "element type" and a "dimension". This sort of ARRAY type is implemented in H2, HSQLDB and Postgres and supported by jOOQ as such. Oracle uses strongly-typed arrays, which means that an ARRAY type (VARRAY or TABLE type) has a name and possibly a maximum capacity associated with it.
    -									</p>
    -
    -									<h3>Unnesting array and cursor types</h3>									
    -									<p>
    -										The real power of these types become more obvious when you fetch them from <reference id="stored-procedures" title="stored procedures"/> to unnest them as <reference id="table-expressions" title="table expressions"/> and use them in your <reference id="from-clause" title="FROM clause"/>. An example is given here, where Oracle's DBMS_XPLAN package is used to fetch a cursor containing data about the most recent execution plan:
    -									</p>									
    -
    -</html><code-pair>
    -	<sql><![CDATA[SELECT *
    -FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(null, null, 'ALLSTATS'));]]></sql><java><![CDATA[create.select()
    -      .from(table(DbmsXplan.displayCursor(null, null, "ALLSTATS"));]]></java>
    -</code-pair><html>
    -									<p>
    -										Note, in order to access the DbmsXplan package, you can use the <reference id="code-generation" title="code generator"/> to generate Oracle's SYS schema.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="dual">
    -								<title>The DUAL table</title>
    -								<content><html>
    -									<p>
    -										The SQL standard specifies that the <reference id="from-clause" title="FROM clause"/> is optional in a <reference id="select-statement" title="SELECT statement"/>. However, according to the standard, you may then no longer use some other clauses, such as the <reference id="where-clause" title="WHERE clause"/>. In the real world, there exist three types of databases:
    -									</p>
    -									<ul>
    -										<li>The ones that always require a FROM clause</li>
    -										<li>The ones that never require a FROM clause (and still allow a WHERE clause)</li>
    -										<li>The ones that correctly implement the SQL standard</li>
    -									</ul>
    -									<p>
    -										With jOOQ, you don't have to worry about the above distinction of SQL dialects. jOOQ never requires a FROM clause, but renders the necessary "DUAL" table, if needed. The following program shows how jOOQ renders "DUAL" tables
    -									</p>
    -
    -</html><code-pair>
    -	<sql><![CDATA[SELECT 1
    -SELECT 1 FROM "db_root"
    -SELECT 1 FROM "SYSIBM"."DUAL"
    -SELECT 1 FROM "SYSIBM"."SYSDUMMY1"
    -SELECT 1 FROM dual
    -SELECT 1 FROM "INFORMATION_SCHEMA"."SYSTEM_USERS"
    -SELECT 1 FROM (select 1 as dual) as dual
    -SELECT 1 FROM dual
    -SELECT 1 FROM dual
    -SELECT 1
    -SELECT 1
    -SELECT 1
    -SELECT 1 FROM [SYS].[DUMMY]
    -]]></sql><java><![CDATA[new Factory(SQLDialect.ASE      ).selectOne().getSQL();
    -new Factory(SQLDialect.CUBRID   ).selectOne().getSQL();
    -new Factory(SQLDialect.DB2      ).selectOne().getSQL();
    -new Factory(SQLDialect.DERBY    ).selectOne().getSQL();
    -new Factory(SQLDialect.H2       ).selectOne().getSQL();
    -new Factory(SQLDialect.HSQLDB   ).selectOne().getSQL();
    -new Factory(SQLDialect.INGRES   ).selectOne().getSQL();
    -new Factory(SQLDialect.MYSQL    ).selectOne().getSQL();
    -new Factory(SQLDialect.ORACLE   ).selectOne().getSQL();
    -new Factory(SQLDialect.POSTGRES ).selectOne().getSQL();
    -new Factory(SQLDialect.SQLITE   ).selectOne().getSQL();
    -new Factory(SQLDialect.SQLSERVER).selectOne().getSQL();
    -new Factory(SQLDialect.SYBASE   ).selectOne().getSQL();]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										Note, that some databases (H2, MySQL) can normally do without "dual". However, there exist some corner-cases with complex nested SELECT statements, where this will cause syntax errors (or parser bugs). To stay on the safe side, jOOQ will always render "dual" in those dialects.
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="column-expressions">
    -						<title>Column expressions</title>
    -						<content><html>
    -						    <p>
    -						    	Column expressions can be used in various SQL clauses in order to refer to one or several columns. This chapter explains how to form various types of column expressions with jOOQ. A particular type of column expression is given in the section about <reference id="row-value-expressions" title="s or row value expressions"/>, where an expression may have a degree of more than one.
    -						    </p>
    -						
    -						    <h3>Using column expressions in jOOQ</h3>
    -							<p>
    -								jOOQ allows you to freely create arbitrary column expressions using a fluent expression construction API. Many expressions can be formed as functions from <reference id="factory" title="Factory methods"/>, other expressions can be formed based on a pre-existing column expression. For example:
    -							</p>
    -							
    -</html><java><![CDATA[// A regular table column expression
    -Field<String> field1 = BOOK.TITLE;
    -
    -// A function created from the Factory using "prefix" notation
    -Field<String> field2 = trim(BOOK.TITLE);
    -
    -// The same function created from a pre-existing Field using "postfix" notation
    -Field<String> field3 = BOOK.TITLE.trim();
    -
    -// More complex function with advanced DSL syntax
    -Field<String> field4 = listAgg(BOOK.TITLE)
    -                          .withinGroupOrderBy(BOOK.ID.asc())
    -                          .over().partitionBy(AUTHOR.ID);]]></java><html>
    -
    -							<p>
    -								In general, it is up to you whether you want to use the "prefix" notation or the "postfix" notation to create new column expressions based on existing ones. The "SQL way" would be to use the "prefix notation", with functions created from the <reference id="factory" title="Factory"/>. The "Java way" or "object-oriented way" would be to use the "postfix" notation with functions created from <reference class="org.jooq.Field"/> objects. Both ways ultimately create the same query part, though.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="table-columns">
    -								<title>Table columns</title>
    -								<content><html>
    -									<p>
    -										Table columns are the most simple implementations of a <reference id="column-expressions" title="column expression"/>. They are mainly produced by jOOQ's <reference id="code-generation" title="code generator"/> and can be dereferenced from the generated tables. This manual is full of examples involving table columns. Another example is given in this query:
    -									</p>
    -
    -</html><code-pair>
    -	<sql><![CDATA[SELECT BOOK.ID, BOOK.TITLE
    -FROM BOOK
    -WHERE BOOK.TITLE LIKE '%SQL%'
    -ORDER BY BOOK.TITLE]]></sql><java><![CDATA[create.select(BOOK.ID, BOOK.TITLE)
    -	  .from(BOOK)
    -	  .where(BOOK.TITLE.like("%SQL%"))
    -	  .orderBy(BOOK.TITLE);]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										Table columns implement a more specific interface called <reference class="org.jooq.TableField"/>, which is parameterised with its associated &lt;R extends Record&gt; record type.
    -									</p>
    -									<p>
    -										See the manual's section about <reference id="codegen-tables" title="generated tables"/> for more information about what is really generated by the <reference id="code-generation" title="code generator"/>
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="aliased-columns">
    -								<title>Aliased columns</title>
    -								<content><html>
    -									<p>
    -										Just like <reference id="aliased-tables" title="tables"/>, columns can be renamed using aliases. Here is an example:
    -									</p>
    -									
    -</html><sql>  SELECT FIRST_NAME || ' ' || LAST_NAME author, COUNT(*) books
    -    FROM AUTHOR
    -    JOIN BOOK ON AUTHOR.ID = AUTHOR_ID
    -GROUP BY FIRST_NAME, LAST_NAME;</sql><html>
    -
    -									<p>
    -										Here is how it's done with jOOQ:
    -									</p>
    -									
    -</html><java>Record record = create.select(
    -         concat(AUTHOR.FIRST_NAME, val(" "), AUTHOR.LAST_NAME).as("author"),
    -         count().as("books"))
    -      .from(AUTHOR)
    -      .join(BOOK).on(AUTHOR.ID.equal(BOOK.AUTHOR_ID))
    -      .groupBy(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME).fetchAny();</java><html>
    -      
    -      								<p>
    -      									When you alias Fields like above, you can access those Fields' values using the alias name:
    -  									</p>
    -  									
    -</html><java>System.out.println("Author : " + record.getValue("author"));
    -System.out.println("Books  : " + record.getValue("books"));</java></content>
    -							</section>
    -
    -							<section id="cast-expressions">
    -								<title>Cast expressions</title>
    -								<content><html>
    -									<p>
    -										jOOQ's source code generator tries to find the most accurate type mapping between your vendor-specific data types and a matching Java type. For instance, most VARCHAR, CHAR, CLOB types will map to String. Most BINARY, BYTEA, BLOB types will map to byte[]. NUMERIC types will default to java.math.BigDecimal, but can also be any of java.math.BigInteger, Long, Integer, Short, Byte, Double, Float.
    -									</p>
    -									<p>
    -										Sometimes, this automatic mapping might not be what you needed, or jOOQ cannot know the type of a field. In those cases you would write SQL type CASTs like this:
    -									</p>
    -									
    -</html><sql>-- Let's say, your Postgres column LAST_NAME was VARCHAR(30)
    --- Then you could do this:
    -SELECT CAST(AUTHOR.LAST_NAME AS TEXT) FROM DUAL</sql><html>
    -
    -									<p>
    -										in jOOQ, you can write something like that:
    -									</p>
    -									
    -</html><java>create.select(TAuthor.LAST_NAME.cast(PostgresDataType.TEXT));</java><html>
    -
    -									<p>
    -										The same thing can be achieved by casting a Field directly to String.class, as TEXT is the default data type in Postgres to map to Java's String
    -									</p>
    -									
    -</html><java>create.select(TAuthor.LAST_NAME.cast(String.class));</java><html>
    -		
    -									<p>
    -										The complete CAST API in Field consists of these three methods:
    -									</p>
    -									
    -</html><java><![CDATA[public interface Field<T> {
    -
    -    // Cast this field to the type of another field
    -    <Z> Field<Z> cast(Field<Z> field);
    -    
    -    // Cast this field to a given DataType
    -    <Z> Field<Z> cast(DataType<Z> type);
    -    
    -    // Cast this field to the default DataType for a given Class
    -    <Z> Field<Z> cast(Class<? extends Z> type);
    -}
    -
    -// And additional convenience methods in the Factory:
    -public class Factory {
    -    <T> Field<T> cast(Object object, Field<T> field);
    -    <T> Field<T> cast(Object object, DataType<T> type);
    -    <T> Field<T> cast(Object object, Class<? extends T> type);
    -    <T> Field<T> castNull(Field<T> field);
    -    <T> Field<T> castNull(DataType<T> type);
    -    <T> Field<T> castNull(Class<? extends T> type);
    -}]]></java></content>
    -							</section>
    -
    -							<section id="arithmetic-expressions">
    -								<title>Arithmetic expressions</title>
    -								<content><html>
    -									<h3>Numeric arithmetic expressions</h3>
    -									<p>
    -										Your database can do the math for you. Arithmetic operations are implemented just like <reference id="numeric-functions" title="numeric functions"/>, with similar limitations as far as type restrictions are concerned. You can use any of these operators:
    -									</p>
    -
    -</html><config>  +  -  *  /  %</config><html>
    -
    -									<p>
    -										In order to express a SQL query like this one:
    -									</p>
    -									
    -</html><sql>SELECT ((1 + 2) * (5 - 3) / 2) % 10 FROM DUAL</sql><html>
    -							
    -									<p>
    -										You can write something like this in jOOQ:
    -									</p>
    -									
    -</html><java>create.select(val(1).add(2).mul(val(5).sub(3)).div(2).mod(10);</java><html>
    -
    -									<h3>Datetime arithmetic expressions</h3>
    -									<p>
    -										jOOQ also supports the Oracle-style syntax for adding days to a Field&lt;? extends java.util.Date&gt; 
    -									</p>
    -
    -</html><code-pair>
    -	<sql>SELECT SYSDATE + 3 FROM DUAL;</sql><java>create.select(currentTimestamp().add(3));</java>
    -</code-pair><html>
    -
    -									<p>
    -										For more advanced datetime arithmetic, use the Factory's timestampDiff() and dateDiff() functions, as well as jOOQ's built-in SQL standard INTERVAL data type support:
    -									</p>
    -									<ul>
    -										<li>INTERVAL YEAR TO MONTH: <reference class="org.jooq.types.YearToMonth"/></li>
    -										<li>INTERVAL DAY TO SECOND: <reference class="org.jooq.types.DayToSecond"/></li>
    -									</ul>
    -								</html></content>
    -							</section>
    -							
    -							<section id="string-concatenation">
    -								<title>String concatenation</title>
    -								<content><html>
    -									<p>
    -										The SQL standard defines the concatenation operator to be an infix operator, similar to the ones we've seen in the chapter about <reference id="arithmetic-expressions" title="arithmetic expressions"/>. This operator looks like this: <code>||</code>. Some other dialects do not support this operator, but expect a <code>concat()</code> function, instead. jOOQ renders the right operator / function, depending on your <reference id="sql-dialects" title="SQL dialect"/>:
    -									</p>
    -									
    -</html><code-pair>
    -<sql>SELECT 'A' || 'B' || 'C' FROM DUAL
    --- Or in MySQL:
    -SELECT concat('A', 'B', 'C') FROM DUAL</sql><java>&#160;
    -// For all RDBMS, including MySQL:
    -create.select(concat("A", "B", "C"));
    -</java>
    -</code-pair><html>								
    -								</html></content>
    -							</section>
    -
    -							<section id="general-functions">
    -								<title>General functions</title>
    -								<content><html>
    -									<p>
    -										There are a variety of general functions supported by jOOQ As discussed in the chapter about <reference id="sql-dialects" title="SQL dialects"/> functions are mostly simulated in your database, in case they are not natively supported.
    -									</p>
    -									<p>
    -										This is a list of general functions supported by jOOQ's <reference id="factory" title="Factory"/>:
    -									</p>
    -									<ul>
    -										<li><strong>COALESCE</strong>: Get the first non-null value in a list of arguments.</li>
    -										<li><strong>NULLIF</strong>: Return NULL if both arguments are equal, or the first argument, otherwise.</li>
    -										<li><strong>NVL</strong>: Get the first non-null value among two arguments.</li>
    -										<li><strong>NVL2</strong>: Get the second argument if the first is null, or the third argument, otherwise.</li>
    -									</ul>
    -																
    -									<p>
    -										Please refer to the <reference class="org.jooq.impl.Factory" title="Factory Javadoc"/> for more details.
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -							<section id="numeric-functions">
    -								<title>Numeric functions</title>
    -								<content><html>
    -									<p>
    -										Math can be done efficiently in the database before returning results to your Java application. In addition to the <reference id="arithmetic-expressions" title="arithmetic expressions" /> discussed previously, jOOQ also supports a variety of numeric functions. As discussed in the chapter about <reference id="sql-dialects" title="SQL dialects"/> numeric functions (as any function type) are mostly simulated in your database, in case they are not natively supported.
    -									</p>
    -									<p>
    -										This is a list of numeric functions supported by jOOQ's <reference id="factory" title="Factory"/>:
    -									</p>
    -									
    -									<ul>
    -										<li><strong>ABS</strong>: Get the absolute value of a value.</li>
    -										<li><strong>ACOS</strong>: Get the arc cosine of a value.</li>
    -										<li><strong>ASIN</strong>: Get the arc sine of a value.</li>
    -										<li><strong>ATAN</strong>: Get the arc tangent of a value.</li>
    -										<li><strong>ATAN2</strong>: Get the atan2 function of two values.</li>
    -										<li><strong>CEIL</strong>: Get the smalles integer value larger than a given numeric value.</li>
    -										<li><strong>COS</strong>: Get the cosine of a value.</li>
    -										<li><strong>COSH</strong>: Get the hyperbolic cosine of a value.</li>
    -										<li><strong>COT</strong>: Get the cotangent of a value.</li>
    -										<li><strong>COTH</strong>: Get the hyperbolic cotangent of a value.</li>
    -										<li><strong>DEG</strong>: Transform radians into degrees.</li>
    -										<li><strong>EXP</strong>: Calculate e^value.</li>
    -										<li><strong>FLOOR</strong>: Get the largest integer value smaller than a given numeric value.</li>
    -										<li><strong>GREATEST</strong>: Finds the greatest among all argument values (can also be used with non-numeric values).</li>
    -										<li><strong>LEAST</strong>: Finds the least among all argument values (can also be used with non-numeric values).</li>
    -										<li><strong>LN</strong>: Get the natural logarithm of a value.</li>
    -										<li><strong>LOG</strong>: Get the logarithm of a value given a base.</li>
    -										<li><strong>POWER</strong>: Calculate value^exponent.</li>
    -										<li><strong>RAD</strong>: Transform degrees into radians.</li>
    -										<li><strong>RAND</strong>: Get a random number.</li>
    -										<li><strong>ROUND</strong>: Rounds a value to the nearest integer.</li>
    -										<li><strong>SIGN</strong>: Get the sign of a value (-1, 0, 1).</li>
    -										<li><strong>SIN</strong>: Get the sine of a value.</li>
    -										<li><strong>SINH</strong>: Get the hyperbolic sine of a value.</li>
    -										<li><strong>SQRT</strong>: Calculate the square root of a value.</li>
    -										<li><strong>TAN</strong>: Get the tangent of a value.</li>
    -										<li><strong>TANH</strong>: Get the hyperbolic tangent of a value.</li>
    -										<li><strong>TRUNC</strong>: Truncate the decimals off a given value.</li>
    -									</ul>
    -									
    -									<p>
    -										Please refer to the <reference class="org.jooq.impl.Factory" title="Factory Javadoc"/> for more details.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="bitwise-functions">
    -								<title>Bitwise functions</title>
    -								<content><html>
    -									<p>
    -										Interestingly, bitwise functions and bitwise arithmetic is not very popular among SQL databases. Most databases only support a few bitwise operations, while others ship with the full set of operators. jOOQ's API includes most bitwise operations as listed below. In order to avoid ambiguities with <reference id="conditional-expressions" title="conditional operators"/>, all bitwise functions are prefixed with "bit"
    -									</p>
    -									<ul>
    -										<li><strong>BIT_COUNT</strong>: Count the number of bits set to 1 in a number</li>
    -										<li><strong>BIT_AND</strong>: Set only those bits that are set in two numbers</li>
    -										<li><strong>BIT_OR</strong>: Set all bits that are set in at least one number</li>
    -										<li><strong>BIT_NAND</strong>: Set only those bits that are set in two numbers, and inverse the result</li>
    -										<li><strong>BIT_NOR</strong>: Set all bits that are set in at least one number, and inverse the result</li>
    -										<li><strong>BIT_NOT</strong>: Inverse the bits in a number</li>
    -										<li><strong>BIT_XOR</strong>: Set all bits that are set in at exactly one number</li>
    -										<li><strong>BIT_XNOR</strong>: Set all bits that are set in at exactly one number, and inverse the result</li>
    -										<li><strong>SHL</strong>: Shift bits to the left</li>
    -										<li><strong>SHR</strong>: Shift bits to the right</li>
    -									</ul>
    -									
    -									<h3>Some background about bitwise operation simulation</h3>
    -									<p>
    -										As stated before, not all databases support all of these bitwise operations. jOOQ simulates them wherever this is possible. More details can be seen in this blog post: <br/>
    -										<a href="http://blog.jooq.org/2011/10/30/the-comprehensive-sql-bitwise-operations-compatibility-list/">http://blog.jooq.org/2011/10/30/the-comprehensive-sql-bitwise-operations-compatibility-list/</a>
    -									</p>
    -									
    -								</html></content>
    -							</section>
    -
    -							<section id="string-functions">
    -								<title>String functions</title>
    -								<content><html>
    -									<p>
    -										String formatting can be done efficiently in the database before returning results to your Java application. As discussed in the chapter about <reference id="sql-dialects" title="SQL dialects"/> string functions (as any function type) are mostly simulated in your database, in case they are not natively supported.
    -									</p>
    -									<p>
    -										This is a list of numeric functions supported by jOOQ's <reference id="factory" title="Factory"/>:
    -									</p>
    -									
    -									<ul>
    -										<li><strong>ASCII</strong>: Get the ASCII code of a character.</li>
    -										<li><strong>BIT_LENGTH</strong>: Get the length of a string in bits.</li>
    -										<li><strong>CHAR_LENGTH</strong>: Get the length of a string in characters.</li>
    -										<li><strong>CONCAT</strong>: Concatenate several strings.</li>
    -										<li><strong>ESCAPE</strong>: Escape a string for use with the <reference id="like-predicate" title="LIKE predicate"/>.</li>
    -										<li><strong>LENGTH</strong>: Get the length of a string.</li>
    -										<li><strong>LOWER</strong>: Get a string in lower case letters.</li>
    -										<li><strong>LPAD</strong>: Pad a string on the left side.</li>
    -										<li><strong>LTRIM</strong>: Trim a string on the left side.</li>
    -										<li><strong>OCTET_LENGTH</strong>: Get the length of a string in octets.</li>
    -										<li><strong>POSITION</strong>: Find a string within another string.</li>
    -										<li><strong>REPEAT</strong>: Repeat a string a given number of times.</li>
    -										<li><strong>REPLACE</strong>: Replace a string within another string.</li>
    -										<li><strong>RPAD</strong>: Pad a string on the right side.</li>
    -										<li><strong>RTRIM</strong>: Trim a string on the right side.</li>
    -										<li><strong>SUBSTRING</strong>: Get a substring of a string.</li>
    -										<li><strong>TRIM</strong>: Trim a string on both sides.</li>
    -										<li><strong>UPPER</strong>: Get a string in upper case letters.</li>
    -									</ul>
    -									
    -									<p>
    -										Please refer to the <reference class="org.jooq.impl.Factory" title="Factory Javadoc"/> for more details.
    -									</p>
    -									
    -									<h3>Regular expressions, REGEXP, REGEXP_LIKE, etc.</h3>
    -									<p>
    -										Various databases have some means of searching through columns using regular expressions if the <reference id="like-predicate" title="LIKE predicate"/> does not provide sufficient pattern matching power. While there are many different functions and operators in the various databases, jOOQ settled for the SQL:2008 standard REGEX_LIKE operator. Being an operator (and not a function), you should use the corresponding method on <reference class="org.jooq.Field"/>:
    -									</p>
    -									
    -</html><java><![CDATA[create.selectFrom(BOOK).where(TITLE.likeRegex("^.*SQL.*$"));]]></java><html>
    -
    -									<p>
    -										Note that the SQL standard specifies that patterns should follow the XQuery standards. In the real world, the POSIX regular expression standard is the most used one, some use Java regular expressions, and only a few ones use Perl regular expressions. jOOQ does not make any assumptions about regular expression syntax. For cross-database compatibility, please read the relevant database manuals carefully, to learn about the appropriate syntax. Please refer to the <reference class="org.jooq.impl.Factory" title="Factory Javadoc"/> for more details.
    -									</p>
    -								</html></content>
    -								<!-- don't forget regex here! -->
    -							</section>
    -
    -							<section id="date-and-time-functions">
    -								<title>Date and time functions</title>
    -								<content><html>
    -									<p>
    -										This is a list of date and time functions supported by jOOQ's <reference id="factory" title="Factory"/>:
    -									</p>
    -									
    -									<ul>
    -										<li><strong>CURRENT_DATE</strong>: Get current date as a DATE object.</li>
    -										<li><strong>CURRENT_TIME</strong>: Get current time as a TIME object.</li>
    -										<li><strong>CURRENT_TIMESTAMP</strong>: Get current date as a TIMESTAMP object.</li>
    -										<li><strong>DATE_ADD</strong>: Add a number of days or an interval to a date.</li>
    -										<li><strong>DATE_DIFF</strong>: Get the difference in days between two dates.</li>
    -										<li><strong>TIMESTAMP_ADD</strong>: Add a number of days or an interval to a timestamp.</li>
    -										<li><strong>TIMESTAMP_DIFF</strong>: Get the difference as an INTERVAL DAY TO SECOND between two dates.</li>
    -									</ul>
    -									
    -									<h3>Intervals in jOOQ</h3>
    -									<p>
    -										jOOQ fills a gap opened by JDBC, which neglects an important SQL data type as defined by the SQL standards: INTERVAL types. See the manual's section about <reference id="data-types-intervals" title="INTERVAL data types"/> for more details.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="system-functions">
    -								<title>System functions</title>
    -								<content><html>
    -									<p>
    -										This is a list of system functions supported by jOOQ's <reference id="factory" title="Factory"/>:
    -									</p>
    -									<ul>
    -										<li><strong>CURRENT_USER</strong>: Get current user.</li>
    -									</ul>
    -								</html></content>
    -							</section>
    -
    -							<section id="aggregate-functions">
    -								<title>Aggregate functions</title>
    -								<content><html>
    -									<p>
    -										Aggregate functions work just like functions, even if they have a slightly different semantics. Here are some example aggregate functions from the <reference id="factory" title="Factory"/>:
    -									</p>
    -
    -</html><java><![CDATA[// Every-day, SQL standard aggregate functions
    -AggregateFunction<Integer>    count();
    -AggregateFunction<Integer>    count(Field<?> field);
    -AggregateFunction<T>          max  (Field<T> field);
    -AggregateFunction<T>          min  (Field<T> field);
    -AggregateFunction<BigDecimal> sum  (Field<? extends Number> field);
    -AggregateFunction<BigDecimal> avg  (Field<? extends Number> field);
    -
    -// DISTINCT keyword in aggregate functions
    -AggregateFunction<Integer>    countDistinct(Field<?> field);
    -AggregateFunction<T>          maxDistinct  (Field<T> field);
    -AggregateFunction<T>          minDistinct  (Field<T> field);
    -AggregateFunction<BigDecimal> sumDistinct  (Field<? extends Number> field);
    -AggregateFunction<BigDecimal> avgDistinct  (Field<? extends Number> field);
    -
    -// String aggregate functions
    -AggregateFunction<String> groupConcat        (Field<?> field);
    -AggregateFunction<String> groupConcatDistinct(Field<?> field);
    -OrderedAggregateFunction<String> listAgg(Field<?> field);
    -OrderedAggregateFunction<String> listAgg(Field<?> field, String separator);
    -
    -// Statistical functions
    -AggregateFunction<BigDecimal> median    (Field<? extends Number> field);
    -AggregateFunction<BigDecimal> stddevPop (Field<? extends Number> field);
    -AggregateFunction<BigDecimal> stddevSamp(Field<? extends Number> field);
    -AggregateFunction<BigDecimal> varPop    (Field<? extends Number> field);
    -AggregateFunction<BigDecimal> varSamp   (Field<? extends Number> field);
    -
    -// Linear regression functions
    -AggregateFunction<BigDecimal> regrAvgX     (Field<? extends Number> y, Field<? extends Number> x);
    -AggregateFunction<BigDecimal> regrAvgY     (Field<? extends Number> y, Field<? extends Number> x);
    -AggregateFunction<BigDecimal> regrCount    (Field<? extends Number> y, Field<? extends Number> x);
    -AggregateFunction<BigDecimal> regrIntercept(Field<? extends Number> y, Field<? extends Number> x);
    -AggregateFunction<BigDecimal> regrR2       (Field<? extends Number> y, Field<? extends Number> x);
    -AggregateFunction<BigDecimal> regrSlope    (Field<? extends Number> y, Field<? extends Number> x);
    -AggregateFunction<BigDecimal> regrSXX      (Field<? extends Number> y, Field<? extends Number> x);
    -AggregateFunction<BigDecimal> regrSXY      (Field<? extends Number> y, Field<? extends Number> x);
    -AggregateFunction<BigDecimal> regrSYY      (Field<? extends Number> y, Field<? extends Number> x);]]></java><html>
    -
    -									<p>
    -										Here's an example, counting the number of books any author has written:
    -									</p>
    -
    -</html><code-pair>
    -<sql>SELECT AUTHOR_ID, COUNT(*)
    -FROM BOOK
    -GROUP BY AUTHOR_ID</sql><java>create.select(BOOK.AUTHOR_ID, count())
    -      .from(BOOK)
    -      .groupBy(BOOK.AUTHOR_ID);</java>
    -</code-pair><html>
    -
    -									<p>
    -										Aggregate functions have strong limitations about when they may be used and when not. For instance, you can use aggregate functions in scalar queries. Typically, this means you only select aggregate functions, no <reference id="table-columns" title="regular columns"/> or other <reference id="column-expressions" title="column expressions"/>. Another use case is to use them along with a <reference id="group-by-clause" title="GROUP BY clause"/> as seen in the previous example. Note, that jOOQ does not check whether your using of aggregate functions is correct according to the SQL standards, or according to your database's behaviour.
    -									</p>
    -
    -		                            <h3>Ordered aggregate functions</h3>
    -		                            <p>
    -		                            	Oracle and some other databases support "ordered aggregate functions". This means you can provide an ORDER BY clause to an aggregate function, which will be taken into consideration when aggregating. The best example for this is Oracle's <code>LISTAGG()</code> (also known as <code>GROUP_CONCAT</code> in other <reference id="sql-dialects" title="SQL dialects"/>). The following query groups by authors and concatenates their books' titles
    -		                           	</p>
    -</html><code-pair>
    -<sql>SELECT   LISTAGG(TITLE, ', ')
    -         WITHIN GROUP (ORDER BY TITLE)
    -FROM     BOOK
    -GROUP BY AUTHOR_ID</sql><java>create.select(listAgg(BOOK.TITLE, ", ")
    -      .withinGroupOrderBy(BOOK.TITLE))
    -      .from(BOOK)
    -      .groupBy(BOOK.AUTHOR_ID)</java>
    -</code-pair><html>
    -
    -									<p>
    -										The above query might yield:
    -									</p>
    -
    -</html><text>+---------------------+
    -| LISTAGG             |
    -+---------------------+
    -| 1984, Animal Farm   |
    -| O Alquimista, Brida |
    -+---------------------+</text><html>
    -
    -									<h3>FIRST and LAST: Oracle's "ranked" aggregate functions</h3>
    -									<p>
    -										Oracle allows for restricting aggregate functions using the <code>KEEP()</code> clause, which is supported by jOOQ. In Oracle, some aggregate functions (MIN, MAX, SUM, AVG, COUNT, VARIANCE, or STDDEV) can be restricted by this clause, hence <reference class="org.jooq.AggregateFunction"/> also allows for specifying it. Here are a couple of examples using this clause:
    -									</p>
    -
    -</html><code-pair>
    -<sql>SUM(BOOK.AMOUNT_SOLD)
    -  KEEP(DENSE_RANK FIRST ORDER BY BOOK.AUTHOR_ID)</sql><java>sum(BOOK.AMOUNT_SOLD)
    -  .keepDenseRankFirstOrderBy(BOOK.AUTHOR_ID)</java>
    -</code-pair><html>
    -
    -									<h3>User-defined aggregate functions</h3>
    -									<p>
    -										jOOQ also supports using your own user-defined aggregate functions. See the manual's section about <reference id="user-defined-aggregate-functions" title="user-defined aggregate functions"/> for more details.
    -									</p>
    -
    -									<h3>Window functions / analytical functions</h3>
    -									<p>
    -										In those databases that support <reference id="window-functions" title="window functions"/>, jOOQ's <reference class="org.jooq.AggregateFunction"/> can be transformed into a window function / analytical function by calling <code>over()</code> on it. See the manual's section about <reference id="window-functions" title="window functions"/> for more details.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="window-functions">
    -								<title>Window functions</title>
    -								<content><html>
    -									<p>
    -										Most major RDBMS support the concept of window functions. jOOQ knows of implementations in DB2, Oracle, Postgres, SQL Server, and Sybase SQL Anywhere, and supports most of their specific syntaxes. Note, that H2 and HSQLDB have implemented <code>ROW_NUMBER()</code> functions, without true windowing support.
    -									</p>
    -									<p>
    -										As previously discussed, any <reference class="org.jooq.AggregateFunction"/> can be transformed into a window function using the <code>over()</code> method. See the chapter about <reference id="aggregate-functions" title="aggregate functions"/> for details. In addition to those, there are also some more window functions supported by jOOQ, as declared in the <reference id="factory" title="Factory"/>:
    -									</p>
    -
    -</html><java><![CDATA[// Ranking functions
    -    WindowOverStep<Integer>    rowNumber();
    -    WindowOverStep<Integer>    rank();
    -    WindowOverStep<Integer>    denseRank();
    -    WindowOverStep<BigDecimal> percentRank();
    -    
    -// Windowing functions
    -<T> WindowIgnoreNullsStep<T>   firstValue(Field<T> field);
    -<T> WindowIgnoreNullsStep<T>   lastValue(Field<T> field)
    -<T> WindowIgnoreNullsStep<T>   lead(Field<T> field);
    -<T> WindowIgnoreNullsStep<T>   lead(Field<T> field, int offset);
    -<T> WindowIgnoreNullsStep<T>   lead(Field<T> field, int offset, T defaultValue);
    -<T> WindowIgnoreNullsStep<T>   lead(Field<T> field, int offset, Field<T> defaultValue);
    -<T> WindowIgnoreNullsStep<T>   lag(Field<T> field);
    -<T> WindowIgnoreNullsStep<T>   lag(Field<T> field, int offset);
    -<T> WindowIgnoreNullsStep<T>   lag(Field<T> field, int offset, T defaultValue);
    -<T> WindowIgnoreNullsStep<T>   lag(Field<T> field, int offset, Field<T> defaultValue);
    -
    -// Statistical functions
    -    WindowOverStep<BigDecimal> cumeDist();
    -    WindowOverStep<Integer>    ntile(int number);]]></java><html>	
    -    								
    -    								<p>
    -    									SQL distinguishes between various window function types (e.g. "ranking functions"). Depending on the function, SQL expects mandatory <code>PARTITION BY</code> or <code>ORDER BY</code> clauses within the <code>OVER()</code> clause. jOOQ does not enforce those rules for two reasons:
    -    								</p>
    -    								<ul>
    -    									<li>Your JDBC driver or database already checks SQL syntax semantics</li>
    -    									<li>Not all databases behave correctly according to the SQL standard</li>
    -    								</ul>
    -    								<p>
    -    									If possible, however, jOOQ tries to render missing clauses for you, if a given <reference id="sql-dialects" title="SQL dialect"/> is more restrictive.
    -    								</p>
    -    								<h3>Some examples</h3>
    -									<p>
    -										 Here are some simple examples of window functions with jOOQ:
    -									</p>
    -									
    -</html><code-pair>
    -<sql>-- Sample uses of ROW_NUMBER()
    -ROW_NUMBER() OVER()
    -ROW_NUMBER() OVER(PARTITION BY 1)
    -ROW_NUMBER() OVER(ORDER BY BOOK.ID)
    -ROW_NUMBER() OVER(PARTITION BY BOOK.AUTHOR_ID ORDER BY BOOK.ID)
    -                  
    --- Sample uses of FIRST_VALUE
    -FIRST_VALUE(BOOK.ID) OVER()
    -FIRST_VALUE(BOOK.ID IGNORE NULLS) OVER()
    -FIRST_VALUE(BOOK.ID RESPECT NULLS) OVER()
    -</sql><java>// Sample uses of rowNumber()
    -rowNumber().over()
    -rowNumber().over().partitionByOne()
    -rowNumber().over().partitionBy(BOOK.AUTHOR_ID)
    -rowNumber().over().partitionBy(BOOK.AUTHOR_ID).orderBy(BOOK.ID)
    -                  
    -// Sample uses of firstValue()
    -firstValue(BOOK.ID).over()
    -firstValue(BOOK.ID).ignoreNulls().over()
    -firstValue(BOOK.ID).respectNulls().over()
    -</java>
    -</code-pair><html>
    -    								
    -									<h3>An advanced window function example</h3>
    -									<p>
    -										Window functions can be used for things like calculating a "running total". The following example fetches transactions and the running total for every transaction going back to the beginning of the transaction table (ordered by booked_at). Window functions are accessible from the previously seen <reference class="org.jooq.AggregateFunction"/> type using the <code>over()</code> method:
    -									</p>
    -
    -</html><code-pair>
    -<sql>SELECT booked_at, amount,
    -   SUM(amount) OVER (PARTITION BY 1
    -                     ORDER BY booked_at
    -                     ROWS BETWEEN UNBOUNDED PRECEDING
    -                     AND CURRENT ROW) AS total
    -  FROM transactions</sql><java>create.select(t.BOOKED_AT, t.AMOUNT,
    -         sum(t.AMOUNT).over().partitionByOne()
    -                      .orderBy(t.BOOKED_AT)
    -                      .rowsBetweenUnboundedPreceding()
    -                      .andCurrentRow().as("total")
    -      .from(TRANSACTIONS.as("t"));</java>
    -</code-pair><html>
    -
    -
    -									<h3>Window functions created from ordered aggregate functions</h3>
    -									<p>
    -										In the previous chapter about <reference id="aggregate-functions" title="aggregate functions"/>, we have seen the concept of "ordered aggregate functions", such as Oracle's <code>LISTAGG()</code>. These functions have a window function / analytical function variant, as well. For example:
    -									</p>
    -									
    -</html><code-pair>
    -<sql>SELECT   LISTAGG(TITLE, ', ')
    -         WITHIN GROUP (ORDER BY TITLE)
    -         OVER (PARTITION BY BOOK.AUTHOR_ID)
    -FROM     BOOK</sql><java>create.select(listAgg(BOOK.TITLE, ", ")
    -      .withinGroupOrderBy(BOOK.TITLE)
    -      .over().partitionBy(BOOK.AUTHOR_ID))
    -      .from(BOOK)</java>
    -</code-pair><html>
    -
    -									<h3>Window functions created from Oracle's FIRST and LAST aggregate functions</h3>
    -									<p>
    -										In the previous chapter about <reference id="aggregate-functions" title="aggregate functions"/>, we have seen the concept of "FIRST and LAST aggregate functions". These functions have a window function / analytical function variant, as well. For example:
    -									</p>
    -
    -</html><code-pair>
    -<sql>SUM(BOOK.AMOUNT_SOLD)
    -  KEEP(DENSE_RANK FIRST ORDER BY BOOK.AUTHOR_ID)
    -  OVER(PARTITION BY 1)</sql><java>sum(BOOK.AMOUNT_SOLD)
    -  .keepDenseRankFirstOrderBy(BOOK.AUTHOR_ID)
    -  .over().partitionByOne()</java>
    -</code-pair><html>
    -
    -
    -									<h3>Window functions created from user-defined aggregate functions</h3>
    -									<p>
    -										User-defined aggregate functions also implement <reference class="org.jooq.AggregateFunction"/>, hence they can also be transformed into window functions using <code>over()</code>. This is supported by Oracle in particular. See the manual's section about <reference id="user-defined-aggregate-functions" title="user-defined aggregate functions"/> for more details.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="grouping-functions">
    -								<title>Grouping functions</title>
    -								<content><html>
    -									<h3>ROLLUP() explained in SQL</h3>
    -									<p>
    -										The SQL standard defines special functions that can be used in the <reference id="group-by-clause" title="GROUP BY clause"/>: the grouping functions. These functions can be used to generate several groupings in a single clause. This can best be explained in SQL. Let's take ROLLUP() for instance:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- ROLLUP() with one argument 
    -SELECT AUTHOR_ID, COUNT(*)
    -FROM BOOK
    -GROUP BY ROLLUP(AUTHOR_ID)
    -
    -
    --- ROLLUP() with two arguments
    -SELECT AUTHOR_ID, PUBLISHED_IN, COUNT(*)
    -FROM BOOK
    -GROUP BY ROLLUP(AUTHOR_ID, PUBLISHED_IN)
    -
    -
    -
    -
    -
    -
    -
    -]]></sql><sql><![CDATA[-- The same query using UNION ALL:
    -  SELECT AUTHOR_ID, COUNT(*) FROM BOOK GROUP BY (AUTHOR_ID)
    -UNION ALL
    -  SELECT NULL, COUNT(*) FROM BOOK GROUP BY ()
    -ORDER BY 1 NULLS LAST
    -
    --- The same query using UNION ALL:
    -  SELECT AUTHOR_ID, PUBLISHED_IN, COUNT(*) 
    -  FROM BOOK GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -UNION ALL
    -  SELECT AUTHOR_ID, NULL, COUNT(*) 
    -  FROM BOOK GROUP BY (AUTHOR_ID)
    -UNION ALL
    -  SELECT NULL, NULL, COUNT(*) 
    -  FROM BOOK GROUP BY ()
    -ORDER BY 1 NULLS LAST, 2 NULLS LAST
    -]]></sql>
    -</code-pair><html>
    -
    -									<p>
    -										In English, the <code>ROLLUP()</code> grouping function provides <code>N+1</code> groupings, when <code>N</code> is the number of arguments to the <code>ROLLUP()</code> function. Each grouping has an additional group field from the <code>ROLLUP()</code> argument field list. The results of the second query might look something like this:
    -									</p>
    -									
    -</html><text><![CDATA[+-----------+--------------+----------+
    -| AUTHOR_ID | PUBLISHED_IN | COUNT(*) |
    -+-----------+--------------+----------+
    -|         1 |         1945 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -|         1 |         1948 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -|         1 |         NULL |        2 | <- GROUP BY (AUTHOR_ID)
    -|         2 |         1988 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -|         2 |         1990 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -|         2 |         NULL |        2 | <- GROUP BY (AUTHOR_ID)
    -|      NULL |         NULL |        4 | <- GROUP BY ()
    -+-----------+--------------+----------+]]></text><html>
    -
    -									<h3>CUBE() explained in SQL</h3>
    -									<p>
    -										<code>CUBE()</code> is different from <code>ROLLUP()</code> in the way that it doesn't just create <code>N+1</code> groupings, it creates all <code>2^N</code> possible combinations between all group fields in the <code>CUBE()</code> function argument list. Let's re-consider our second query from before:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- CUBE() with two arguments
    -SELECT AUTHOR_ID, PUBLISHED_IN, COUNT(*)
    -FROM BOOK
    -GROUP BY CUBE(AUTHOR_ID, PUBLISHED_IN)
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -]]></sql><sql><![CDATA[-- The same query using UNION ALL:
    -  SELECT AUTHOR_ID, PUBLISHED_IN, COUNT(*) 
    -  FROM BOOK GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -UNION ALL
    -  SELECT AUTHOR_ID, NULL, COUNT(*) 
    -  FROM BOOK GROUP BY (AUTHOR_ID)
    -UNION ALL
    -  SELECT NULL, PUBLISHED_IN, COUNT(*) 
    -  FROM BOOK GROUP BY (PUBLISHED_IN)
    -UNION ALL
    -  SELECT NULL, NULL, COUNT(*) 
    -  FROM BOOK GROUP BY ()
    -ORDER BY 1 NULLS FIRST, 2 NULLS FIRST
    -]]></sql>
    -</code-pair><html>
    -
    -									<p>
    -										The results would then hold:
    -									</p>
    -
    -</html><text><![CDATA[+-----------+--------------+----------+
    -| AUTHOR_ID | PUBLISHED_IN | COUNT(*) |
    -+-----------+--------------+----------+
    -|      NULL |         NULL |        2 | <- GROUP BY ()
    -|      NULL |         1945 |        1 | <- GROUP BY (PUBLISHED_IN)
    -|      NULL |         1948 |        1 | <- GROUP BY (PUBLISHED_IN)
    -|      NULL |         1988 |        1 | <- GROUP BY (PUBLISHED_IN)
    -|      NULL |         1990 |        1 | <- GROUP BY (PUBLISHED_IN)
    -|         1 |         NULL |        2 | <- GROUP BY (AUTHOR_ID)
    -|         1 |         1945 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -|         1 |         1948 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -|         2 |         NULL |        2 | <- GROUP BY (AUTHOR_ID)
    -|         2 |         1988 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -|         2 |         1990 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -+-----------+--------------+----------+]]></text><html>
    -
    -									<h3>GROUPING SETS()</h3>
    -									<p>
    -										<code>GROUPING SETS()</code> are the generalised way to create multiple groupings. From our previous examples 
    -									</p>
    -									<ul>
    -										<li><code>ROLLUP(AUTHOR_ID, PUBLISHED_IN)</code> corresponds to <code>GROUPING SETS((AUTHOR_ID, PUBLISHED_IN), (AUTHOR_ID), ())</code></li>
    -										<li><code>CUBE(AUTHOR_ID, PUBLISHED_IN)</code> corresponds to <code>GROUPING SETS((AUTHOR_ID, PUBLISHED_IN), (AUTHOR_ID), (PUBLISHED_IN), ())</code></li>
    -									</ul>
    -									<p>
    -										This is nicely explained in the SQL Server manual pages about <code>GROUPING SETS()</code> and other grouping functions:<br/>
    -										<a href="http://msdn.microsoft.com/en-us/library/bb510427(v=sql.105)">http://msdn.microsoft.com/en-us/library/bb510427(v=sql.105)</a>
    -									</p>
    -									
    -									<h3>jOOQ's support for ROLLUP(), CUBE(), GROUPING SETS()</h3>
    -									<p>
    -										jOOQ fully supports all of these functions, as well as the utility functions <code>GROUPING()</code> and <code>GROUPING_ID()</code>, used for identifying the grouping set ID of a record. The <reference id="factory" title="Factory API"/> thus includes:
    -									</p>
    -									
    -</html><java><![CDATA[// The various grouping function constructors
    -Field<?> rollup(Field<?>... fields);
    -Field<?> cube(Field<?>... fields);
    -Field<?> groupingSets(Field<?>... fields);
    -Field<?> groupingSets(Field<?>[]... fields);
    -Field<?> groupingSets(Collection<Field<?>>... fields);
    -
    -// The utility functions generating IDs per GROUPING SET
    -Field<Integer> grouping(Field<?>);
    -Field<Integer> groupingId(Field<?>...);]]></java><html>
    -
    -									<h3>MySQL's and CUBRID's WITH ROLLUP syntax</h3>
    -									<p>
    -										MySQL and CUBRID don't know any grouping functions, but they support a <code>WITH ROLLUP</code> clause, that is equivalent to simple <code>ROLLUP()</code> grouping functions. jOOQ simulates <code>ROLLUP()</code> in MySQL and CUBRID, by rendering this <code>WITH ROLLUP</code> clause. The following two statements mean the same:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[-- Statement 1: SQL standard
    -GROUP BY ROLLUP(A, B, C)
    -
    --- Statement 2: SQL standard
    -GROUP BY A, ROLLUP(B, C)]]></sql><sql><![CDATA[-- Statement 1: MySQL
    -GROUP BY A, B, C WITH ROLLUP
    -
    --- Statement 2: MySQL
    --- This is not supported in MySQL]]></sql>
    -</code-pair><html>
    -								</html></content>
    -							</section>
    -
    -							<section id="user-defined-functions">
    -								<title>User-defined functions</title>
    -								<content><html>
    -									<p>
    -										Some databases support user-defined functions, which can be embedded in any SQL statement, if you're using jOOQ's <reference id="code-generation" title="code generator"/>. Let's say you have the following simple function in Oracle SQL:
    -									</p>
    -									
    -</html><sql><![CDATA[CREATE OR REPLACE FUNCTION echo (INPUT NUMBER)
    -RETURN NUMBER
    -IS
    -BEGIN
    -    RETURN INPUT;
    -END echo;
    -]]></sql><html>
    -
    -                                    <p>
    -                                    	The above function will be made available from a generated <reference id="codegen-procedures" title="Routines"/> class. You can use it like any other <reference id="column-expressions" title="column expression"/>:
    -                                    </p>
    -                                    
    -</html><code-pair>
    -<sql><![CDATA[SELECT echo(1) FROM DUAL WHERE echo(2) = 2]]></sql><java><![CDATA[create.select(echo(1)).where(echo(2).equal(2));]]></java>
    -</code-pair><html>
    -                                
    -                                	<p>
    -                                		Note that user-defined functions returning <reference id="data-types-cursors" title="CURSOR"/> or <reference id="data-types-arrays" title="ARRAY"/> data types can also be used wherever <reference id="table-expressions" title="table expressions"/> can be used, if they are <reference id="array-and-cursor-unnesting" title="unnested"/>
    -                                	</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="user-defined-aggregate-functions">
    -								<title>User-defined aggregate functions</title>
    -								<content><html>
    -									<p>
    -										Some databases support user-defined aggregate functions, which can then be used along with <reference id="group-by-clause" title="GROUP BY clauses"/> or as <reference id="window-functions" title="window functions"/>. An example for such a database is Oracle. With Oracle, you can define the following OBJECT type (the example was taken from the <a href="http://docs.oracle.com/cd/B28359_01/appdev.111/b28425/ext_agg_ref.htm">Oracle 11g documentation</a>): 
    -									</p>
    -									
    -</html><sql><![CDATA[CREATE TYPE U_SECOND_MAX AS OBJECT
    -(
    -  MAX NUMBER, -- highest value seen so far
    -  SECMAX NUMBER, -- second highest value seen so far
    -  STATIC FUNCTION ODCIAggregateInitialize(sctx IN OUT U_SECOND_MAX) RETURN NUMBER,
    -  MEMBER FUNCTION ODCIAggregateIterate(self IN OUT U_SECOND_MAX, value IN NUMBER) RETURN NUMBER,
    -  MEMBER FUNCTION ODCIAggregateTerminate(self IN U_SECOND_MAX, returnValue OUT NUMBER, flags IN NUMBER) RETURN NUMBER,
    -  MEMBER FUNCTION ODCIAggregateMerge(self IN OUT U_SECOND_MAX, ctx2 IN U_SECOND_MAX) RETURN NUMBER
    -);
    -
    -CREATE OR REPLACE TYPE BODY U_SECOND_MAX IS
    -STATIC FUNCTION ODCIAggregateInitialize(sctx IN OUT U_SECOND_MAX)
    -RETURN NUMBER IS
    -BEGIN
    -  SCTX := U_SECOND_MAX(0, 0);
    -  RETURN ODCIConst.Success;
    -END;
    -
    -MEMBER FUNCTION ODCIAggregateIterate(self IN OUT U_SECOND_MAX, value IN NUMBER) RETURN NUMBER IS
    -BEGIN
    -  IF VALUE > SELF.MAX THEN
    -    SELF.SECMAX := SELF.MAX;
    -    SELF.MAX := VALUE;
    -  ELSIF VALUE > SELF.SECMAX THEN
    -    SELF.SECMAX := VALUE;
    -  END IF;
    -  RETURN ODCIConst.Success;
    -END;
    -
    -MEMBER FUNCTION ODCIAggregateTerminate(self IN U_SECOND_MAX, returnValue OUT NUMBER, flags IN NUMBER) RETURN NUMBER IS
    -BEGIN
    -  RETURNVALUE := SELF.SECMAX;
    -  RETURN ODCIConst.Success;
    -END;
    -
    -MEMBER FUNCTION ODCIAggregateMerge(self IN OUT U_SECOND_MAX, ctx2 IN U_SECOND_MAX) RETURN NUMBER IS
    -BEGIN
    -  IF CTX2.MAX > SELF.MAX THEN
    -    IF CTX2.SECMAX > SELF.SECMAX THEN
    -      SELF.SECMAX := CTX2.SECMAX;
    -    ELSE
    -      SELF.SECMAX := SELF.MAX;
    -    END IF;
    -    SELF.MAX := CTX2.MAX;
    -  ELSIF CTX2.MAX > SELF.SECMAX THEN
    -    SELF.SECMAX := CTX2.MAX;
    -  END IF;
    -  RETURN ODCIConst.Success;
    -END;
    -END;]]></sql><html>
    -
    -									<p>
    -										The above OBJECT type is then available to function declarations as such:
    -									</p>
    -
    -</html><sql><![CDATA[
    -CREATE FUNCTION SECOND_MAX (input NUMBER) RETURN NUMBER
    -PARALLEL_ENABLE AGGREGATE USING U_SECOND_MAX;]]></sql><html>
    -
    -									<h3>Using the generated aggregate function</h3>
    -									<p>
    -										jOOQ's <reference id="code-generation" title="code generator"/> will detect such aggregate functions and generate them differently from regular <reference id="user-defined-functions" title="user-defined functions"/>. They implement the <reference class="org.jooq.AggregateFunction"/> type, as mentioned in the manual's section about <reference id="aggregate-functions" title="aggregate functions"/>. Here's how you can use the SECOND_MAX() aggregate function with jOOQ:
    -									</p>
    -				
    -</html><code-pair>					
    -<sql><![CDATA[-- Get the second-latest publishing date by author
    -SELECT SECOND_MAX(PUBLISHED_IN) 
    -FROM BOOK
    -GROUP BY AUTHOR_ID]]></sql><java><![CDATA[// Routines.secondMax() can be static-imported
    -create.select(secondMax(BOOK.PUBLISHED_IN))
    -      .from(BOOK)
    -      .groupBy(BOOK.AUTHOR_ID)]]></java>
    -</code-pair><html>
    -								</html></content>
    -							</section>
    -
    -							<section id="case-expressions">
    -								<title>The CASE expression</title>
    -								<content><html>
    -									<p>
    -										The CASE expression is part of the standard SQL syntax. While some RDBMS also offer an IF expression, or a DECODE function, you can always rely on the two types of CASE syntax:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[CASE WHEN AUTHOR.FIRST_NAME = 'Paulo'  THEN 'brazilian'
    -     WHEN AUTHOR.FIRST_NAME = 'George' THEN 'english'
    -                                       ELSE 'unknown'
    -END
    -
    --- OR:
    -
    -CASE AUTHOR.FIRST_NAME WHEN 'Paulo'  THEN 'brazilian'
    -                       WHEN 'George' THEN 'english'
    -                                     ELSE 'unknown'
    -END]]></sql><java><![CDATA[create.decode()
    -      .when(AUTHOR.FIRST_NAME.equal("Paulo"), "brazilian")
    -      .when(AUTHOR.FIRST_NAME.equal("George"), "english")
    -      .otherwise("unknown");
    -
    -// OR:
    -
    -create.decode().value(AUTHOR.FIRST_NAME)
    -               .when("Paulo", "brazilian")
    -               .when("George", "english")
    -               .otherwise("unknown");]]></java>
    -</code-pair><html>
    -
    -								<p>
    -									In jOOQ, both syntaxes are supported (The second one is simulated in Derby, which only knows the first one). Unfortunately, both case and else are reserved words in Java. jOOQ chose to use decode() from the Oracle DECODE function, and otherwise(), which means the same as else.
    -								</p>
    -
    -								<p>
    -									A CASE expression can be used anywhere where you can place a <reference id="column-expressions" title="column expression (or Field)"/>. For instance, you can SELECT the above expression, if you're selecting from AUTHOR:
    -							 	</p>
    -
    -</html><sql>SELECT AUTHOR.FIRST_NAME, [... CASE EXPR ...] AS nationality
    -  FROM AUTHOR</sql><html>
    -
    -								<h3>The Oracle DECODE() function</h3>
    -								<p>
    -									Oracle knows a more succinct, but maybe less readable DECODE() function with a variable number of arguments. This function roughly does the same as the second case expression syntax. jOOQ supports the DECODE() function and simulates it using CASE expressions in all dialects other than Oracle:
    -								</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- Oracle:
    -DECODE(FIRST_NAME, 'Paulo', 'brazilian',
    -                   'George', 'english',
    -                   'unknown');
    -
    --- Other SQL dialects
    -CASE AUTHOR.FIRST_NAME WHEN 'Paulo'  THEN 'brazilian'
    -                       WHEN 'George' THEN 'english'
    -                                     ELSE 'unknown'
    -END]]></sql><java><![CDATA[
    -
    -
    -
    -
    -// Use the Oracle-style DECODE() function with jOOQ.
    -// Note, that you will not be able to rely on type-safety
    -create.decode(AUTHOR.FIRST_NAME,
    -    "Paulo", "brazilian",
    -    "George", "english",
    -    "unknown");]]></java>
    -</code-pair><html>
    -
    -		  							<h3>CASE clauses in an ORDER BY clause</h3>
    -									<p>
    -										Sort indirection is often implemented with a CASE clause of a SELECT's ORDER BY clause. See the manual's section about the <reference id="order-by-clause" title="ORDER BY clause"/> for more details.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="sequences-and-serials">
    -								<title>Sequences and serials</title>
    -								<content><html>
    -									<p>
    -										Sequences implement the <reference class="org.jooq.Sequence"/> interface, providing essentially this functionality:
    -									</p>
    -
    -</html><java><![CDATA[// Get a field for the CURRVAL sequence property
    -Field<T> currval();
    -
    -// Get a field for the NEXTVAL sequence property
    -Field<T> nextval();]]></java><html>
    -
    -									<p>
    -										So if you have a sequence like this in Oracle:
    -									</p>
    -
    -</html><sql>CREATE SEQUENCE s_author_id</sql><html>
    -
    -									<p>
    -										You can then use your <reference id="codegen-sequences" title="generated sequence"/> object directly in a SQL statement as such:
    -									</p>
    -
    -</html><java><![CDATA[// Reference the sequence in a SELECT statement:
    -BigInteger nextID = create.select(s).fetchOne(S_AUTHOR_ID.nextval());
    -
    -// Reference the sequence in an INSERT statement:
    -create.insertInto(AUTHOR, AUTHOR.ID, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .values(S_AUTHOR_ID.nextval(), val("William"), val("Shakespeare"));
    -]]></java><html>
    -
    -									<ul>
    -										<li>For more information about generated sequences, refer to the manual's section about <reference id="codegen-sequences" title="generated sequences"/></li>
    -										<li>For more information about executing standalone calls to sequences, refer to the manual's section about <reference id="sequence-execution" title="sequence execution"/></li>
    -									</ul>
    -								</html></content>
    -							</section>
    -							
    -							<section id="row-value-expressions">
    -								<title>Tuples or row value expressions</title>
    -								<content><html>
    -									<p>
    -										According to the SQL standard, row value expressions can have a degree of more than one. This is commonly used in the <reference id="insert-statement" title="INSERT statement"/>, where the VALUES row value constructor allows for providing a row value expression as a source for INSERT data. Row value expressions can appear in various other places, though. They are supported by jOOQ as s / rows. jOOQ's <reference id="factory" title="Factory"/> allows for the construction of type-safe s up to the degree / arity of 8. Higher-degree s are supported as well, but without any type-safety.  types are modelled as follows:
    -									</p>
    -									
    -</html><java><![CDATA[// The Factory provides overloaded row value expression constructor methods:
    -public static <T1> Row1<T1> row(T1 t1) { ... }
    -public static <T1, T2> Row2<T1, T2> row(T1 t1, T2 t2) { ... }
    -public static <T1, T2, T3> Row3<T1, T2, T3> row(T1 t1, T2 t2, T3 t3) { ... }
    -public static <T1, T2, T3, T4> Row4<T1, T2, T3, T4> row(T1 t1, T2 t2, T3 t3, T4 t4) { ... }
    -
    -// [ ... idem for Row5, Row6, Row7, Row8 ... ]
    -
    -// Degrees of more than 8 are supported without type-safety
    -public static RowN row(Object... values) { ... }]]></java><html>
    -
    -									<h3>Using row value expressions in predicates</h3>
    -                                	<p>
    -                                		Row value expressions are incompatible with most other <reference id="queryparts" title="QueryParts"/>, but they can be used as a basis for constructing various <reference id="conditional-expressions" title="conditional expressions"/>, such as <reference id="comparison-predicate" title="comparison predicates"/>, <reference id="in-predicate" title="IN predicates"/>, or the "degree 2 row value expression only" <reference id="overlaps-predicate" title="OVERLAPS predicate"/>. See the relevant sections for more details about how to use row value expressions in predicates.
    -                                	</p>
    -                                	
    -                                	<h3>Using row value expressions in UPDATE statements</h3>
    -                                	<p>
    -                                		The <reference id="update-statement" title="UPDATE statement"/> also supports a variant where row value expressions are updated, rather than single columns. See the relevant section for more details
    -                                	</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="conditional-expressions">
    -					    <title>Conditional expressions</title>
    -						<content><html>
    -							<p>
    -								Conditions or conditional expressions are widely used in SQL and in the jOOQ API. They can be used in
    -							</p>
    -							<ul>
    -								<li>The <reference id="case-expressions" title="CASE expression"/></li>
    -								<li>The <reference id="join-clause" title="JOIN clause"/> (or JOIN .. ON clause, to be precise) of a <reference id="select-statement" title="SELECT statement"/>, <reference id="update-statement" title="UPDATE statement"/>, <reference id="delete-statement" title="DELETE statement"/></li>
    -								<li>The <reference id="where-clause" title="WHERE clause"/> of a <reference id="select-statement" title="SELECT statement"/>, <reference id="update-statement" title="UPDATE statement"/>, <reference id="delete-statement" title="DELETE statement"/></li>
    -								<li>The <reference id="connect-by-clause" title="CONNECT BY clause"/> of a <reference id="select-statement" title="SELECT statement"/></li>
    -								<li>The <reference id="having-clause" title="HAVING clause"/> of a <reference id="select-statement" title="SELECT statement"/></li>
    -								<li>The <reference id="merge-statement" title="MERGE statement"/>'s ON clause</li>
    -							</ul>
    -							
    -							<h3>Boolean types in SQL</h3>
    -							<p>
    -								Before SQL:1999, boolean types did not really exist in SQL. They were modelled by 0 and 1 numeric/char values. With SQL:1999, true booleans were introduced and are now supported by most databases. In short, these are possible boolean values:
    -							</p>
    -							<ul>
    -								<li>1 or TRUE</li>
    -								<li>0 or FALSE</li>
    -								<li>NULL or UNKNOWN</li>
    -							</ul>
    -							<p>
    -								It is important to know that SQL differs from many other languages in the way it interprets the NULL boolean value. Most importantly, the following facts are to be remembered:
    -							</p>
    -							<ul>
    -								<li>[ANY] = NULL yields NULL (not FALSE)</li>
    -								<li>[ANY] != NULL yields NULL (not TRUE)</li>
    -								<li>NULL = NULL yields NULL (not TRUE)</li>
    -								<li>NULL != NULL yields NULL (not FALSE)</li>
    -							</ul>
    -							<p>
    -								For simplified NULL handling, please refer to the section about the <reference id="distinct-predicate" title="DISTINCT predicate"/>.
    -							</p>
    -							<p>
    -								Note that jOOQ does not model these values as actual <reference id="column-expressions" title="column expression"/> compatible.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -						    <section id="condition-building">
    -							    <title>Condition building</title>
    -								<content><html>
    -									<p>
    -										With jOOQ, most <reference id="conditional-expressions" title="conditional expressions"/> are built from <reference id="column-expressions" title="column expressions"/>, calling various methods on them. For instance, to build a <reference id="comparison-predicate" title="comparison predicate"/>, you can write the following expression:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[TITLE  = 'Animal Farm'
    -TITLE != 'Animal Farm']]></sql><java><![CDATA[BOOK.TITLE.equal("Animal Farm")
    -BOOK.TITLE.notEqual("Animal Farm")]]></java>
    -</code-pair><html>
    -
    -									<h3>Create conditions from the Factory</h3>
    -									<p>
    -										There are a few types of conditions, that can be created statically from the <reference id="factory" title="Factory"/>. These are:
    -									</p>
    -									<ul>
    -										<li><reference id="plain-sql" title="plain SQL conditions"/>, that allow you to phrase your own SQL string <reference id="conditional-expressions" title="conditional expression"/></li>
    -										<li>The <reference id="exists-predicate" title="EXISTS predicate"/>, a standalone predicate that creates a conditional expression</li>
    -										<li>Constant TRUE and FALSE conditional expressions</li>
    -									</ul>
    -
    -									<h3>Connect conditions using boolean operators</h3>
    -									<p>
    -										Conditions can also be connected using <reference id="boolean-operators" title="boolean operators"/> as will be discussed in a subsequent chapter.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -						    <section id="boolean-operators">
    -							    <title>AND, OR, NOT boolean operators</title>
    -								<content><html>
    -									<p>
    -										In SQL, as in most other languages, <reference id="conditional-expressions" title="conditional expressions"/> can be connected using the AND and OR binary operators, as well as the NOT unary operator, to form new conditional expressions. In jOOQ, this is modelled as such: 
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- A simple conditional expression
    -TITLE = 'Animal Farm' OR TITLE = '1984'
    -
    --- A more complex conditional expression
    -        (TITLE = 'Animal Farm' OR TITLE = '1984') 
    -AND NOT (AUTHOR.LAST_NAME = 'Orwell')]]></sql><java><![CDATA[// A simple boolean connection
    -BOOK.TITLE.equal("Animal Farm").or(BOOK.TITLE.equal("1984"))
    -
    -// A more complex conditional expression
    -BOOK.TITLE.equal("Animal Farm").or(BOOK.TITLE.equal("1984"))
    -    .andNot(AUTHOR.LAST_NAME.equal("Orwell"))]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										The above example shows that the number of parentheses in Java can quickly explode. Proper indentation may become crucial in making such code readable. In order to understand how jOOQ composes combined conditional expressions, let's assign component expressions first:
    -									</p>
    -
    -</html><java><![CDATA[Condition a = BOOK.TITLE.equal("Animal Farm");
    -Condition b = BOOK.TITLE.equal("1984");
    -Condition c = AUTHOR.LAST_NAME.equal("Orwell");
    -
    -Condition combined1 = a.or(b);             // These OR-connected conditions form a new condition, wrapped in parentheses
    -Condition combined2 = combined1.andNot(c); // The left-hand side of the AND NOT () operator is already wrapped in parentheses]]></java><html>
    -
    -									<h3>The Condition API</h3>
    -									<p>
    -										Here are all boolean operators on the <reference class="org.jooq.Condition"/> interface:
    -									</p>
    -									
    -</html><java><![CDATA[and(Condition)            // Combine conditions with AND
    -and(String)               // Combine conditions with AND. Convenience for adding plain SQL to the right-hand side
    -and(String, Object...)    // Combine conditions with AND. Convenience for adding plain SQL to the right-hand side
    -and(String, QueryPart...) // Combine conditions with AND. Convenience for adding plain SQL to the right-hand side
    -andExists(Select<?>)      // Combine conditions with AND. Convenience for adding an exists predicate to the rhs
    -andNot(Condition)         // Combine conditions with AND. Convenience for adding an inverted condition to the rhs
    -andNotExists(Select<?>)   // Combine conditions with AND. Convenience for adding an inverted exists predicate to the rhs
    -
    -or(Condition)             // Combine conditions with OR
    -or(String)                // Combine conditions with OR. Convenience for adding plain SQL to the right-hand side
    -or(String, Object...)     // Combine conditions with OR. Convenience for adding plain SQL to the right-hand side
    -or(String, QueryPart...)  // Combine conditions with OR. Convenience for adding plain SQL to the right-hand side
    -orExists(Select<?>)       // Combine conditions with OR. Convenience for adding an exists predicate to the rhs
    -orNot(Condition)          // Combine conditions with OR. Convenience for adding an inverted condition to the rhs
    -orNotExists(Select<?>)    // Combine conditions with OR. Convenience for adding an inverted exists predicate to the rhs
    -
    -not()                     // Invert a condition (synonym for Factory.not(Condition)]]></java></content>
    -							</section>
    -
    -						    <section id="comparison-predicate">
    -							    <title>Comparison predicate</title>
    -								<content><html>
    -									<p>
    -										In SQL, comparison predicates are formed using common comparison operators:
    -									</p>
    -									<ul>
    -										<li><strong>=</strong> to test for equality</li>
    -										<li><strong>&lt;&gt;</strong> or <strong>!=</strong> to test for non-equality</li>
    -										<li><strong>&gt;</strong> to test for being strictly greater</li>
    -										<li><strong>&gt;=</strong> to test for being greater or equal</li>
    -										<li><strong>&lt;</strong> to test for being strictly less</li>
    -										<li><strong>&lt;=</strong> to test for being less or equal</li>
    -									</ul>
    -									
    -									<p>
    -										Unfortunately, Java does not support operator overloading, hence these operators are also implemented as methods in jOOQ, like any other SQL syntax elements. The relevant parts of the <reference class="org.jooq.Field"/> interface are these:
    -									</p>
    -									
    -</html><java><![CDATA[eq or equal(T);                  // =  (some bind value)
    -eq or equal(Field<T>);           // =  (some column expression)
    -eq or equal(Select<T>);          // =  (some scalar SELECT statement)
    -ne or notEqual(T);               // <> (some bind value)
    -ne or notEqual(Field<T>);        // <> (some column expression)
    -ne or notEqual(Select<T>);       // <> (some scalar SELECT statement)
    -lt or lessThan(T);               // <  (some bind value)
    -lt or lessThan(Field<T>);        // <  (some column expression)
    -lt or lessThan(Select<T>);       // <  (some scalar SELECT statement)
    -le or lessOrEqual(T);            // <= (some bind value)
    -le or lessOrEqual(Field<T>);     // <= (some column expression)
    -le or lessOrEqual(Select<T>);    // <= (some scalar SELECT statement)
    -gt or greaterThan(T);            // >  (some bind value)
    -gt or greaterThan(Field<T>);     // >  (some column expression)
    -gt or greaterThan(Select<T>);    // >  (some scalar SELECT statement)
    -ge or greaterOrEqual(T);         // >= (some bind value)
    -ge or greaterOrEqual(Field<T>);  // >= (some column expression)
    -ge or greaterOrEqual(Select<T>); // >= (some scalar SELECT statement)]]></java><html>
    -
    -									<p>
    -										Note that every operator is represented by two methods. A verbose one (such as equal()) and a two-character one (such as eq()). Both methods are the same. You may choose either one, depending on your taste. The manual will always use the more verbose one.
    -									</p>
    -									
    -									<h3>NULL in jOOQ's comparison predicates</h3>
    -									<p>
    -										jOOQ has a special way of dealing with null bind values, when you pass them to comparison predicates equal() and notEqual(). For convenience, jOOQ will render <reference id="null-predicate" title="IS NULL or IS NOT NULL"/> predicates.
    -									</p>
    -
    -									<h3>jOOQ's convenience methods using comparison operators</h3>
    -									<p>
    -										In addition to the above, jOOQ provides a few convenience methods for common operations performed on strings using comparison predicates:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[-- case insensitivity
    -LOWER(TITLE)  = LOWER('animal farm')
    -LOWER(TITLE) <> LOWER('animal farm')]]></sql><java><![CDATA[// case insensitivity
    -BOOK.TITLE.equalIgnoreCase("animal farm")
    -BOOK.TITLE.notEqualIgnoreCase("animal farm")]]></java>
    -</code-pair><html>
    -								</html></content>
    -							</section>
    -
    -						    <section id="quantified-comparison-predicate">
    -							    <title>Quantified comparison predicate</title>
    -								<content><html>
    -									<p>
    -										If the right-hand side of a <reference id="comparison-predicate" title="comparison predicate"/> turns out to be a non-scalar table subquery, you can wrap that subquery in a quantifier, such as ALL, ANY, or SOME. Note that the SQL standard defines ANY and SOME to be equivalent. jOOQ settled for the more intuitive ANY and doesn't support SOME. Here are some examples, supported by jOOQ:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[TITLE = ANY('Animal Farm', '1982')
    -PUBLISHED_IN > ALL(1920, 1940)]]></sql><java><![CDATA[BOOK.TITLE.equalAny("Animal Farm", "1982");
    -BOOK.PUBLISHED_IN.greaterThanAll(1920, 1940);]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										For the example, the right-hand side of the quantified comparison predicates were filled with argument lists. But it is easy to imagine that the source of values results from a <reference id="nested-selects" title="subselect"/>.
    -									</p>
    -
    -									<h3>ANY and the IN predicate</h3>
    -									<p>
    -										It is interesting to note that the SQL standard defines the <reference id="in-predicate" title="IN predicate"/> in terms of the ANY-quantified predicate. The following two expressions are equivalent:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[[ROW VALUE EXPRESSION] IN [IN PREDICATE VALUE]]]></sql><sql><![CDATA[[ROW VALUE EXPRESSION] = ANY [IN PREDICATE VALUE]]]></sql>
    -</code-pair><html>
    -
    -									<p>
    -										Typically, the <reference id="in-predicate" title="IN predicate"/> is more readable than the quantified comparison predicate.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -						    <section id="null-predicate">
    -							    <title>NULL predicate</title>
    -								<content><html>
    -									<p>
    -										In SQL, you cannot compare NULL with any value using <reference id="comparison-predicate" title="comparison predicates"/>, as the result would yield NULL again, which is neither TRUE nor FALSE (see also the manual's section about <reference id="conditional-expressions" title="conditional expressions"/>). In order to test a <reference id="column-expressions" title="column expression"/> for NULL, use the NULL predicate as such:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[TITLE IS NULL
    -TITLE IS NOT NULL]]></sql><java><![CDATA[BOOK.TITLE.isNull()
    -BOOK.TITLE.isNotNull()]]></java>
    -</code-pair><html>
    -
    -								</html></content>
    -							</section>
    -
    -						    <section id="distinct-predicate">
    -							    <title>DISTINCT predicate</title>
    -								<content><html>
    -									<p>
    -										Some databases support the DISTINCT predicate, which serves as a convenient, NULL-safe <reference id="comparison-predicate" title="comparison predicate"/>. With the DISTINCT predicate, the following truth table can be assumed:
    -									</p>
    -									<ul>
    -										<li>[ANY] IS DISTINCT FROM NULL yields TRUE</li>
    -										<li>[ANY] IS NOT DISTINCT FROM NULL yields FALSE</li>
    -										<li>NULL IS DISTINCT FROM NULL yields FALSE</li>
    -										<li>NULL IS NOT DISTINCT FROM NULL yields TRUE</li>
    -									</ul>
    -									<p>
    -										For instance, you can compare two fields for distinctness, ignoring the fact that any of the two could be NULL, which would lead to funny results. This is supported by jOOQ as such:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[TITLE IS DISTINCT FROM SUB_TITLE
    -TITLE IS NOT DISTINCT FROM SUB_TITLE]]></sql><java><![CDATA[BOOK.TITLE.isDistinctFrom(BOOK.SUB_TITLE)
    -BOOK.TITLE.isNotDistinctFrom(BOOK.SUB_TITLE)]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										If your database does not natively support the DISTINCT predicate, jOOQ simulates it with an equivalent <reference id="case-expressions" title="CASE expression"/>, modelling the above truth table:
    -									</p>
    -	
    -</html><code-pair>								
    -<sql><![CDATA[-- [A] IS DISTINCT FROM [B] 
    -CASE WHEN [A] IS     NULL AND [B] IS     NULL THEN FALSE
    -     WHEN [A] IS     NULL AND [B] IS NOT NULL THEN TRUE
    -     WHEN [A] IS NOT NULL AND [B] IS     NULL THEN TRUE
    -     WHEN [A] =               [B]             THEN FALSE
    -     ELSE                                          TRUE
    -END
    -]]></sql><sql><![CDATA[-- [A] IS NOT DISTINCT FROM [B] 
    -CASE WHEN [A] IS     NULL AND [B] IS     NULL THEN TRUE
    -     WHEN [A] IS     NULL AND [B] IS NOT NULL THEN FALSE
    -     WHEN [A] IS NOT NULL AND [B] IS     NULL THEN FALSE
    -     WHEN [A] =               [B]             THEN TRUE
    -     ELSE                                          FALSE
    -END
    -]]></sql>
    -</code-pair><html>							
    -								</html></content>
    -							</section>
    -
    -						    <section id="between-predicate">
    -							    <title>BETWEEN predicate</title>
    -								<content><html>
    -									<p>
    -										The BETWEEN predicate can be seen as syntactic sugar for a pair of <reference id="comparison-predicate" title="comparison predicates"/>. According to the SQL standard, the following two predicates are equivalent:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[[A] BETWEEN [B] AND [C]]]></sql><sql><![CDATA[[A] >= [B] AND [A] <= [C]]]></sql>
    -</code-pair><html>
    -
    -									<p>
    -										Note the inclusiveness of range boundaries in the definition of the BETWEEN predicate. Intuitively, this is supported in jOOQ as such:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[PUBLISHED_IN     BETWEEN 1920 AND 1940
    -PUBLISHED_IN NOT BETWEEN 1920 AND 1940]]></sql><java><![CDATA[BOOK.PUBLISHED_IN.between(1920).and(1940)
    -BOOK.PUBLISHED_IN.notBetween(1920).and(1940)]]></java>
    -</code-pair><html>
    -
    -									<h3>BETWEEN SYMMETRIC</h3>
    -									<p>
    -										The SQL standard defines the SYMMETRIC keyword to be used along with BETWEEN to indicate that you do not care which bound of the range is larger than the other. A database system should simply swap range bounds, in case the first bound is greater than the second one. jOOQ supports this keyword as well, simulating it if necessary.
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[PUBLISHED_IN     BETWEEN SYMMETRIC 1940 AND 1920
    -PUBLISHED_IN NOT BETWEEN SYMMETRIC 1940 AND 1920]]></sql><java><![CDATA[BOOK.PUBLISHED_IN.betweenSymmetric(1940).and(1920)
    -BOOK.PUBLISHED_IN.notBetweenSymmetric(1940).and(1920)]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										The simulation is done trivially:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[[A] BETWEEN SYMMETRIC [B] AND [C]]]></sql><sql><![CDATA[([A] BETWEEN [B] AND [C]) OR ([A] BETWEEN [C] AND [B])]]></sql>
    -</code-pair><html>
    -
    -								</html></content>
    -							</section>
    -
    -						    <section id="like-predicate">
    -							    <title>LIKE predicate</title>
    -								<content><html>
    -									<p>
    -										LIKE predicates are popular for simple wildcard-enabled pattern matching. Supported wildcards in all SQL databases are:
    -									</p>
    -									<ul>
    -										<li><strong>_</strong>: (single-character wildcard)</li>
    -										<li><strong>%</strong>: (multi-character wildcard)</li>
    -									</ul>
    -									<p>
    -										With jOOQ, the LIKE predicate can be created from any <reference id="column-expressions" title="column expression"/> as such:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[TITLE     LIKE '%abc%'
    -TITLE NOT LIKE '%abc%']]></sql><java><![CDATA[BOOK.TITLE.like("%abc%")
    -BOOK.TITLE.notLike("%abc%")]]></java>
    -</code-pair><html>
    -									
    -									<h3>Escaping operands with the LIKE predicate</h3>
    -									<p>
    -										Often, your pattern may contain any of the wildcard characters "_" and "%", in case of which you may want to escape them. jOOQ does not automatically escape patterns in like() and notLike() methods. Instead, you can explicitly define an escape character as such:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[TITLE     LIKE '%The !%-Sign Book%' ESCAPE '!'
    -TITLE NOT LIKE '%The !%-Sign Book%' ESCAPE '!']]></sql><java><![CDATA[BOOK.TITLE.like("%The !%-Sign Book%", '!')
    -BOOK.TITLE.notLike("%The !%-Sign Book%", '!')]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										In the above predicate expressions, the exclamation mark character is passed as the escape character to escape wildcard characters "!_" and "!%", as well as to escape the escape character itself: "!!"
    -									</p>
    -									<p>
    -										Please refer to your database manual for more details about escaping patterns with the LIKE predicate.
    -									</p>
    -									
    -									<h3>jOOQ's convenience methods using the LIKE predicate</h3>
    -									<p>
    -										In addition to the above, jOOQ provides a few convenience methods for common operations performed on strings using the LIKE predicate. Typical operations are "contains predicates", "starts with predicates", "ends with predicates", etc. Here is the full convenience API wrapping LIKE predicates:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[-- case insensitivity
    -LOWER(TITLE) LIKE LOWER('%abc%')
    -LOWER(TITLE) NOT LIKE LOWER('%abc%')
    -
    --- contains and similar methods
    -TITLE LIKE '%' || 'abc' || '%'
    -TITLE LIKE 'abc' || '%'
    -TITLE LIKE '%' || 'abc']]></sql><java><![CDATA[// case insensitivity
    -BOOK.TITLE.likeIgnoreCase("%abc%")
    -BOOK.TITLE.notLikeIgnoreCase("%abc%")
    -
    -// contains and similar methods
    -BOOK.TITLE.contains("abc")
    -BOOK.TITLE.startsWith("abc")
    -BOOK.TITLE.endsWith("abc")]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										Note, that jOOQ escapes % and _ characters in value in some of the above predicate implementations. For simplicity, this has been omitted in this manual.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -						    <section id="in-predicate">
    -							    <title>IN predicate</title>
    -								<content><html>
    -									<p>
    -										In SQL, apart from comparing a value against several values, the IN predicate can be used to create semi-joins or anti-joins. jOOQ knows the following methods on the <reference class="org.jooq.Field" /> interface, to construct such IN predicates:
    -									</p>
    -
    -</html><java><![CDATA[in(Collection<T>)    // Construct an IN predicate from a collection of bind values
    -in(T...)             // Construct an IN predicate from bind values
    -in(Field<?>...)      // Construct an IN predicate from column expressions
    -in(Select<?>)        // Construct an IN predicate from a subselect
    -notIn(Collection<T>) // Construct a NOT IN predicate from a collection of bind values
    -notIn(T...)          // Construct a NOT IN predicate from bind values
    -notIn(Field<?>...)   // Construct a NOT IN predicate from column expressions
    -notIn(Select<?>)     // Construct a NOT IN predicate from a subselect]]></java><html>
    -
    -									<p>
    -										A sample IN predicate might look like this:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[TITLE     IN ('Animal Farm', '1984')
    -TITLE NOT IN ('Animal Farm', '1984')]]></sql><java><![CDATA[BOOK.TITLE.in("Animal Farm", "1984")
    -BOOK.TITLE.notIn("Animal Farm", "1984")]]></java>
    -</code-pair><html>
    -
    -									
    -									<h3>NOT IN and NULL values</h3>
    -									<p>
    -										Beware that you should probably not have any NULL values in the right hand side of a NOT IN predicate, as the whole expression would evaluate to NULL, which is rarely desired. This can be shown informally using the following reasoning:
    -									</p>
    -									
    -</html><sql>-- The following conditional expressions are formally or informally equivalent
    -A NOT IN (B, C)
    -A != ANY(B, C)
    -A != B AND A != C
    -
    --- Substitute C for NULL, you'll get
    -A NOT IN (B, NULL)   -- Substitute C for NULL
    -A != B AND A != NULL -- From the above rules
    -A != B AND NULL      -- [ANY] != NULL yields NULL
    -NULL                 -- [ANY] AND NULL yields NULL</sql><html>
    -
    -									<p>
    -										A good way to prevent this from happening is to use the <reference id="exists-predicate" title="EXISTS predicate"/> for anti-joins, which is NULL-value insensitive. See the manual's section about <reference id="conditional-expressions" title="conditional expressions"/> to see a boolean truth table.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -						    <section id="exists-predicate">
    -							    <title>EXISTS predicate</title>
    -								<content><html>
    -									<p>
    -										Slightly less intuitive, yet more powerful than the previously discussed <reference id="in-predicate" title="IN predicate"/> is the EXISTS predicate, that can be used to form semi-joins or anti-joins. With jOOQ, the EXISTS predicate can be formed in various ways:
    -									</p>
    -									<ul>
    -										<li>From the <reference id="factory" title="Factory"/>, using static methods. This is probably the most used case</li>
    -										<li>From a <reference id="conditional-expressions" title="conditional expression"/> using <reference id="boolean-operators" title="convenience methods attached to boolean operators"/></li>
    -										<li>From a <reference id="select-statement" title="SELECT statement"/> using <reference id="where-clause" title="convenience methods attached to the where clause"/>, and from other clauses</li>
    -									</ul>
    -									
    -									<p>
    -										An example of an EXISTS predicate can be seen here:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[    EXISTS (SELECT 1 FROM BOOK 
    -            WHERE AUTHOR_ID = 3)
    -NOT EXISTS (SELECT 1 FROM BOOK 
    -            WHERE AUTHOR_ID = 3)]]></sql><java><![CDATA[   exists(create.selectOne().from(BOOK)
    -                .where(BOOK.AUTHOR_ID.equal(3)));
    -notExists(create.selectOne().from(BOOK)
    -                .where(BOOK.AUTHOR_ID.equal(3)));]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										Note that in SQL, the projection of a subselect in an EXISTS predicate is irrelevant. To help you write queries like the above, you can use jOOQ's selectZero() or selectOne() <reference id="factory" title="Factory"/> methods
    -									</p>
    -									
    -									<h3>Performance of IN vs. EXISTS</h3>
    -									<p>
    -										In theory, the two types of predicates can perform equally well. If your database system ships with a sophisticated cost-based optimiser, it will be able to transform one predicate into the other, if you have all necessary constraints set (e.g. referential constraints, not null constraints). However, in reality, performance between the two might differ substantially. An interesting blog post investigating this topic on the MySQL database can be seen here:<br/>
    -										<a href="http://blog.jooq.org/2012/07/27/not-in-vs-not-exists-vs-left-join-is-null-mysql/">http://blog.jooq.org/2012/07/27/not-in-vs-not-exists-vs-left-join-is-null-mysql/</a>
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -							<section id="overlaps-predicate">
    -								<title>OVERLAPS predicate</title>
    -								<content><html>
    -									<p>
    -										When comparing dates, the SQL standard allows for using a special OVERLAPS predicate, which checks whether two date ranges overlap each other. The following can be said:
    -									</p>
    -
    -</html><sql><![CDATA[-- This yields true
    -(DATE '2010-01-01', DATE '2010-01-03') OVERLAPS (DATE '2010-01-02' DATE '2010-01-04')
    -
    --- INTERVAL data types are also supported. This is equivalent to the above
    -(DATE '2010-01-01', CAST('+2 00:00:00' AS INTERVAL DAY TO SECOND)) OVERLAPS 
    -(DATE '2010-01-02', CAST('+2 00:00:00' AS INTERVAL DAY TO SECOND))]]></sql><html>
    -
    -									<h3>The OVERLAPS predicate in jOOQ</h3>
    -									<p>
    -									    jOOQ supports the OVERLAPS predicate on <reference id="row-value-expressions" title="row value expressions of degree 2"/>. The following methods are contained in <reference class="org.jooq.Row2"/>:
    -									</p>
    -
    -</html><java><![CDATA[Condition overlaps(T1 t1, T2 t2);
    -Condition overlaps(Field<T1> t1, Field<T2> t2);
    -Condition overlaps(Row2<T1, T2> row);]]></java><html>
    -
    -									<p>
    -										This allows for expressing the above predicates as such:
    -									</p>																		
    -
    -</html><java><![CDATA[// The date range tuples version
    -row(Date.valueOf('2010-01-01'), Date.valueOf('2010-01-03')).overlaps(Date.valueOf('2010-01-02'), Date.valueOf('2010-01-04'))
    -
    -// The INTERVAL tuples version
    -row(Date.valueOf('2010-01-01'), new DayToSecond(2)).overlaps(Date.valueOf('2010-01-02'), new DayToSecond(2))]]></java><html>
    -
    -									<h3>jOOQ's extensions to the standard</h3>
    -									<p>
    -										Unlike the standard (or any database implementing the standard), jOOQ also supports the OVERLAPS predicate for comparing arbitrary <reference id="row-value-expressions" title="row vlaue expressions of degree 2"/>. For instance, (1, 3) OVERLAPS (2, 4) will yield true in jOOQ. This is simulated as such
    -									</p>
    -									
    -</html><sql><![CDATA[-- This predicate
    -(A, B) OVERLAPS (C, D)
    -
    --- can be simulated as such
    -(C <= B) AND (A <= D)]]></sql></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="plain-sql">
    -						<title>Plain SQL</title>
    -						<content><html>
    -							<p>
    -								A DSL is a nice thing to have, it feels "fluent" and "natural", especially if it models a well-known language, such as SQL. But a DSL is always expressed in a host language (Java in this case), which was not made for exactly the same purposes as its hosted DSL. If it were, then jOOQ would be implemented on a compiler-level, similar to LINQ in .NET. But it's not, and so, the DSL is limited by language constraints of its host language. We have seen many functionalities where the DSL becomes a bit verbose. This can be especially true for:
    -							</p>
    -							<ul>
    -								<li><reference id="aliased-columns" title="aliasing"/></li>
    -								<li><reference id="nested-selects" title="nested selects"/></li>
    -								<li><reference id="arithmetic-expressions" title="arithmetic expressions"/></li>
    -								<li><reference id="cast-expressions" title="casting"/></li>
    -							</ul>
    -							
    -							<p>
    -								You'll probably find other examples. If verbosity scares you off, don't worry. The verbose use-cases for jOOQ are rather rare, and when they come up, you do have an option. Just write SQL the way you're used to!
    -							</p>
    -							<p>
    -								jOOQ allows you to embed SQL as a String into any supported <reference id="sql-statements" title="statement"/> in these contexts:
    -							</p>
    -							<ul>
    -								<li>Plain SQL as a <reference id="conditional-expressions" title="conditional expression"/></li>
    -								<li>Plain SQL as a <reference id="column-expressions" title="column expression"/></li>
    -								<li>Plain SQL as a <reference id="column-expressions" title="function"/></li>
    -								<li>Plain SQL as a <reference id="table-expressions" title="table expression"/></li>
    -								<li>Plain SQL as a <reference id="query-vs-resultquery" title="query"/></li>
    -							</ul>
    -
    -							<h3>The Factory plain SQL API</h3>
    -							<p>
    -								Plain SQL API methods are usually overloaded in three ways. Let's look at the <code>condition</code> query part constructor:
    -							</p>
    -</html><java><![CDATA[// Construct a condition without bind values
    -// Example: condition("a = b")
    -Condition condition(String sql);
    -
    -// Construct a condition with bind values
    -// Example: condition("a = ?", 1);
    -Condition condition(String sql, Object... bindings);
    -
    -// Construct a condition taking other jOOQ object arguments
    -// Example: condition("a = {0}", val(1));
    -Condition condition(String sql, QueryPart... parts);]]></java><html>
    -							
    -							<p>
    -								Please refer to the <reference class="org.jooq.impl.Factory"/> Javadoc for more details. The following is a more complete listing of plain SQL construction methods from the Factory:
    -							</p>
    -
    -</html><java><![CDATA[// A condition
    -Condition condition(String sql);
    -Condition condition(String sql, Object... bindings);
    -Condition condition(String sql, QueryPart... parts);
    -
    -// A field with an unknown data type
    -Field<Object> field(String sql);
    -Field<Object> field(String sql, Object... bindings);
    -Field<Object> field(String sql, QueryPart... parts);
    -
    -// A field with a known data type
    -<T> Field<T> field(String sql, Class<T> type);
    -<T> Field<T> field(String sql, Class<T> type, Object... bindings);
    -<T> Field<T> field(String sql, Class<T> type, QueryPart... parts);
    -<T> Field<T> field(String sql, DataType<T> type);
    -<T> Field<T> field(String sql, DataType<T> type, Object... bindings);
    -<T> Field<T> field(String sql, DataType<T> type, QueryPart... parts);
    -
    -// A field with a known name (properly escaped)
    -Field<Object> fieldByName(String... fieldName);
    -<T> Field<T>  fieldByName(Class<T> type, String... fieldName);
    -<T> Field<T>  fieldByName(DataType<T> type, String... fieldName)
    -
    -// A function
    -<T> Field<T> function(String name, Class<T> type, Field<?>... arguments);
    -<T> Field<T> function(String name, DataType<T> type, Field<?>... arguments);
    -
    -// A table
    -Table<?> table(String sql);
    -Table<?> table(String sql, Object... bindings);
    -Table<?> table(String sql, QueryPart... parts);
    -
    -// A table with a known name (properly escaped)
    -Table<Record> tableByName(String... fieldName);
    -
    -// A query without results (update, insert, etc)
    -Query query(String sql);
    -Query query(String sql, Object... bindings);
    -Query query(String sql, QueryPart... parts);
    -
    -// A query with results
    -ResultQuery<Record> resultQuery(String sql);
    -ResultQuery<Record> resultQuery(String sql, Object... bindings);
    -ResultQuery<Record> resultQuery(String sql, QueryPart... parts);
    -
    -// A query with results. This is the same as resultQuery(...).fetch();
    -Result<Record> fetch(String sql);
    -Result<Record> fetch(String sql, Object... bindings);
    -Result<Record> fetch(String sql, QueryPart... parts);]]></java><html>
    -
    -							<p>
    -								Apart from the general factory methods, plain SQL is also available in various other contexts. For instance, when adding a .where("a = b") clause to a query. Hence, there exist several convenience methods where plain SQL can be inserted usefully. This is an example displaying all various use-cases in one single query:
    -							</p>
    -							
    -</html><java><![CDATA[// You can use your table aliases in plain SQL fields
    -// As long as that will produce syntactically correct SQL
    -Field<?> LAST_NAME    = create.field("a.LAST_NAME");
    -
    -// You can alias your plain SQL fields
    -Field<?> COUNT1       = create.field("count(*) x");
    -
    -// If you know a reasonable Java type for your field, you
    -// can also provide jOOQ with that type
    -Field<Integer> COUNT2 = create.field("count(*) y", Integer.class);
    -
    -       // Use plain SQL as select fields
    -create.select(LAST_NAME, COUNT1, COUNT2)
    -
    -       // Use plain SQL as aliased tables (be aware of syntax!)
    -      .from("author a")
    -      .join("book b")
    -
    -       // Use plain SQL for conditions both in JOIN and WHERE clauses
    -      .on("a.id = b.author_id")
    -
    -       // Bind a variable in plain SQL
    -      .where("b.title != ?", "Brida")
    -
    -       // Use plain SQL again as fields in GROUP BY and ORDER BY clauses
    -      .groupBy(LAST_NAME)
    -      .orderBy(LAST_NAME);]]></java><html>
    -
    -							<h3>Important things to note about plain SQL!</h3>
    -							<p>
    -								There are some important things to keep in mind when using plain SQL:
    -							</p>
    -							<ul>
    -								<li>jOOQ doesn't know what you're doing. You're on your own again!</li>
    -								<li>You have to provide something that will be syntactically correct. If it's not, then jOOQ won't know. Only your JDBC driver or your RDBMS will detect the syntax error.</li>
    -								<li>You have to provide consistency when you use variable binding. The number of ? must match the number of variables</li>
    -								<li>Your SQL is inserted into jOOQ queries without further checks. Hence, jOOQ can't prevent SQL injection. </li>
    -							</ul>
    -						</html></content>
    -					</section>
    -
    -					<section id="bind-values">
    -					    <title>Bind values and parameters</title>
    -						<content><html>
    -							<p>
    -								Bind values are used in SQL / JDBC for various reasons. Among the most obvious ones are:
    -							</p>
    -							<ul>
    -								<li>
    -									Protection against SQL injection. Instead of inlining values possibly originating from user input, you bind those values to your prepared statement and let the JDBC driver / database take care of handling security aspects.
    -								</li>
    -								<li>
    -									Increased speed. Advanced databases such as Oracle can keep execution plans of similar queries in a dedicated cache to prevent hard-parsing your query again and again. In many cases, the actual value of a bind variable does not influence the execution plan, hence it can be reused. Preparing a statement will thus be faster
    -								</li>
    -								<li>
    -									On a JDBC level, you can also reuse the SQL string and prepared statement object instead of constructing it again, as you can bind new values to the prepared statement. jOOQ currently does not cache prepared statements, internally.
    -								</li>
    -							</ul>
    -							
    -							<p>
    -								The following sections explain how you can introduce bind values in jOOQ, and how you can control the way they are rendered and bound to SQL.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -						    <section id="indexed-parameters">
    -							    <title>Indexed parameters</title>
    -								<content><html>
    -									<p>
    -										JDBC only knows indexed bind values. A typical example for using bind values with JDBC is this:
    -									</p>
    -									
    -</html><java><![CDATA[PreparedStatement stmt = connection.prepareStatement("SELECT * FROM BOOK WHERE ID = ? AND TITLE = ?");
    -
    -// bind values to the above statement for appropriate indexes 
    -stmt.setInt(1, 5);
    -stmt.setString(2, "Animal Farm");
    -stmm.executeQuery();]]></java><html>
    -
    -									<p>
    -										With dynamic SQL, keeping track of the number of question marks and their corresponding index may turn out to be hard. jOOQ abstracts this and lets you provide the bind value right where it is needed. A trivial example is this:
    -									</p>
    -									
    -</html><java><![CDATA[create.select().from(BOOK).where(BOOK.ID.equal(5)).and(BOOK.TITLE.equal("Animal Farm"));
    -
    -// This notation is in fact a short form for the equivalent:
    -create.select().from(BOOK).where(BOOK.ID.equal(val(5))).and(BOOK.TITLE.equal(val("Animal Farm")));]]></java><html>
    -
    -									<p>
    -										Note the using of <reference class="org.jooq.impl.Factory" anchor="#val(java.lang.Object)" title="Factory.val()"/> to explicitly create an indexed bind value. You don't have to worry about that index. When the query is <reference id="sql-rendering" title="rendered"/>, each bind value will render a question mark. When the query <reference id="variable-binding" title="binds its variables"/>, each bind value will generate the appropriate bind value index. 
    -									</p>
    -									
    -									<h3>Extract bind values from a query</h3>
    -									<p>
    -										Should you decide to run the above query outside of jOOQ, using your own <reference class="java.sql.PreparedStatement"/>, you can do so as follows:
    -									</p>
    -									
    -</html><java><![CDATA[Select<?> select = create.select().from(BOOK).where(BOOK.ID.equal(5)).and(BOOK.TITLE.equal("Animal Farm"));
    -
    -// Render the SQL statement:
    -String sql = select.getSQL();
    -assertEquals("SELECT * FROM BOOK WHERE ID = ? AND TITLE = ?", sql);
    -
    -// Get the bind values:
    -List<Object> values = select.getBindValues();
    -assertEquals(2, values.size());
    -assertEquals(5, values.get(0));
    -assertEquals("Animal Farm", values.get(1));]]></java><html>
    -
    -									<p>
    -										You can also extract specific bind values by index from a query, if you wish to modify their underlying value after creating a query. This can be achieved as such:
    -									</p>
    -
    -</html><java><![CDATA[Select<?> select = create.select().from(BOOK).where(BOOK.ID.equal(5)).and(BOOK.TITLE.equal("Animal Farm"));
    -Param<?> param = select.getParam("2");
    -
    -// You could now modify the Query's underlying bind value:
    -if ("Animal Farm".equals(param.getValue())) {
    -    param.setConverted("1984");
    -}]]></java><html>
    -
    -									<p>
    -										For more details about jOOQ's internals, see the manual's section about <reference id="queryparts" title="QueryParts"/>.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -						    <section id="named-parameters">
    -							    <title>Named parameters</title>
    -								<content><html>
    -									<p>
    -										Some SQL access abstractions that are built on top of JDBC, or some that bypass JDBC may support named parameters. jOOQ allows you to give names to your parameters as well, although those names are not rendered to SQL strings by default. Here is an example of how to create named parameters using the <reference class="org.jooq.Param"/> type:
    -									</p>
    -
    -</html><java><![CDATA[// Create a query with a named parameter. You can then use that name for accessing the parameter again
    -Query query1 = create.select().from(AUTHOR).where(LAST_NAME.equal(param("lastName", "Poe")));
    -Param<?> param1 = query.getParam("lastName");
    -
    -// Or, keep a reference to the typed parameter in order not to lose the <T> type information:
    -Param<String> param2 = param("lastName", "Poe");
    -Query query2 = create.select().from(AUTHOR).where(LAST_NAME.equal(param2));
    -
    -// You can now change the bind value directly on the Param reference:
    -param2.setValue("Orwell");]]></java><html>
    -
    -									<p>
    -										The <reference class="org.jooq.Query"/> interface also allows for setting new bind values directly, without accessing the Param type:
    -									</p>
    -
    -</html><java><![CDATA[Query query1 = create.select().from(AUTHOR).where(LAST_NAME.equal("Poe"));
    -query1.bind(1, "Orwell");
    -
    -// Or, with named parameters
    -Query query2 = create.select().from(AUTHOR).where(LAST_NAME.equal(param("lastName", "Poe")));
    -query2.bind("lastName", "Orwell");]]></java><html>
    -
    -									<p>
    -										In order to actually render named parameter names in generated SQL, use the <reference class="org.jooq.impl.Factory" anchor="#renderNamedParams(org.jooq.QueryPart)" title="Factory.renderNamedParams()"/> method:
    -									</p>
    -
    -</html><code-pair>
    -<java><![CDATA[create.renderNamedParams(
    -    create.select()
    -          .from(AUTHOR)
    -          .where(LAST_NAME.equal(
    -                 param("lastName", "Poe"))));]]></java><sql><![CDATA[-- The named bind variable can be rendered
    -
    -SELECT *
    -FROM AUTHOR
    -WHERE LAST_NAME = :lastName]]></sql>
    -</code-pair><html>
    -								</html></content>
    -							</section>
    -
    -						    <section id="inlined-parameters">
    -							    <title>Inlined parameters</title>
    -								<content><html>
    -									<p>
    -										Sometimes, you may wish to avoid rendering bind variables while still using custom values in SQL. jOOQ refers to that as "inlined" bind values. When bind values are inlined, they render the actual value in SQL rather than a JDBC question mark. Bind value inlining can be achieved in two ways:
    -									</p>
    -									<ul>
    -										<li>
    -											By using the <reference id="custom-settings" title="Settings"/> and setting the <reference class="org.jooq.conf.StatementType"/> to STATIC_STATEMENT. This will inline all bind values for SQL statements rendered from such a Factory.
    -										</li>
    -										<li>
    -											By using <reference class="org.jooq.impl.Factory" anchor="#inline(java.lang.Object)" title="Factory.inline()"/> methods.
    -										</li>
    -									</ul>
    -									<p>
    -										In both cases, your inlined bind values will be properly escaped to avoid SQL syntax errors and SQL injection. Some examples:
    -									</p>
    -
    -</html><java><![CDATA[
    -// Use dedicated calls to inline() in order to specify
    -// single bind values to be rendered as inline values
    -// --------------------------------------------------
    -create.select()
    -      .from(AUTHOR)
    -      .where(LAST_NAME.equal(inline("Poe")));
    -
    -// Or render the whole query with inlined values
    -// --------------------------------------------------
    -Settings settings = new Settings()
    -    .withStatementType(StatementType.STATIC_STATEMENT);
    -
    -// Add the settings to the factory
    -Factory create = new Factory(connection, SQLDialect.ORACLE, settings);
    -
    -// Run queries that omit rendering schema names
    -create.select()
    -      .from(AUTHOR)
    -      .where(LAST_NAME.equal("Poe"));]]></java></content>
    -							</section>
    -
    -						    <section id="sql-injection-and-plain-sql-queryparts">
    -							    <title>SQL injection and plain SQL QueryParts</title>
    -								<content><html>
    -									<p>
    -										Special care needs to be taken when using <reference id="plain-sql" title="plain SQL QueryParts"/>. While jOOQ's API allows you to specify bind values for use with plain SQL, you're not forced to do that. For instance, both of the following queries will lead to the same, valid result:
    -									</p>
    -									
    -</html><java><![CDATA[// This query will use bind values, internally.
    -create.fetch("SELECT * FROM BOOK WHERE ID = ? AND TITLE = ?", 5 "Animal Farm");
    -
    -// This query will not use bind values, internally.
    -create.fetch("SELECT * FROM BOOK WHERE ID = 5 AND TITLE = 'Animal Farm'");]]></java><html>
    -
    -									<p>
    -										All methods in the jOOQ API that allow for plain (unescaped, untreated) SQL contain a warning message in their relevant Javadoc, to remind you of the risk of SQL injection in what is otherwise a SQL-injection-safe API.
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="queryparts">
    -					    <title>QueryParts</title>
    -						<content><html>
    -							<p>
    -								A <reference class="org.jooq.Query" /> and all its contained objects is a <reference class="org.jooq.QueryPart" />. QueryParts essentially provide this functionality:
    -							</p>
    -							<ul>
    -								<li>they can <reference id="sql-rendering" title="render SQL"/> using the <reference class="org.jooq.QueryPartInternal" anchor="#toSQL(org.jooq.RenderContext)" title="toSQL(RenderContext)"/> method</li>
    -								<li>they can <reference id="variable-binding" title="bind variables"/> using the <reference class="org.jooq.QueryPartInternal" anchor="#bind(org.jooq.BindContext)" title="bind(BindContext)"/> method</li>
    -							</ul>
    -
    -							<p>
    -								Both of these methods are contained in jOOQ's internal API's <reference class="org.jooq.QueryPartInternal"/>, which is internally implemented by every QueryPart.
    -							</p>
    -
    -							<p>
    -								The following sections explain some more details about <reference id="sql-rendering" title="SQL rendering"/> and <reference id="variable-binding" title="variable binding"/>, as well as other implementation details about QueryParts in general.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -						    <section id="sql-rendering">
    -							    <title>SQL rendering</title>
    -								<content><html>
    -									<p>
    -										Every <reference class="org.jooq.QueryPart"/> must implement the <reference class="org.jooq.QueryPartInternal" anchor="#toSQL(org.jooq.RenderContext)" title="toSQL(RenderContext)"/> method to render its SQL string to a <reference class="org.jooq.RenderContext"/>. This RenderContext has two purposes:
    -									</p>
    -									<ul>
    -										<li>It provides some information about the "state" of SQL rendering.</li>
    -										<li>It provides a common API for constructing SQL strings on the context's internal <reference class="java.lang.StringBuilder"/></li>
    -									</ul>
    -									<p>
    -										An overview of the <reference class="org.jooq.RenderContext"/> API is given here:
    -									</p>
    -
    -</html><java><![CDATA[// These methods are useful for generating unique aliases within a RenderContext (and thus within a Query)
    -String peekAlias();
    -String nextAlias();
    -
    -// These methods return rendered SQL
    -String render();
    -String render(QueryPart part);
    -
    -// These methods allow for fluent appending of SQL to the RenderContext's internal StringBuilder
    -RenderContext keyword(String keyword);
    -RenderContext literal(String literal);
    -RenderContext sql(String sql);
    -RenderContext sql(char sql);
    -RenderContext sql(int sql);
    -RenderContext sql(QueryPart part);
    -
    -// These methods allow for controlling formatting of SQL, if the relevant Setting is active
    -RenderContext formatNewLine();
    -RenderContext formatSeparator();
    -RenderContext formatIndentStart();
    -RenderContext formatIndentStart(int indent);
    -RenderContext formatIndentLockStart();
    -RenderContext formatIndentEnd();
    -RenderContext formatIndentEnd(int indent);
    -RenderContext formatIndentLockEnd();
    -
    -// These methods control the RenderContext's internal state
    -boolean       inline();
    -RenderContext inline(boolean inline);
    -boolean       qualify();
    -RenderContext qualify(boolean qualify);
    -boolean       namedParams();
    -RenderContext namedParams(boolean renderNamedParams);
    -CastMode      castMode();
    -RenderContext castMode(CastMode mode);
    -Boolean       cast();
    -RenderContext castModeSome(SQLDialect... dialects);]]></java><html>
    -
    -									<p>
    -										The following additional methods are inherited from a common <reference class="org.jooq.Context"/>, which is shared among <reference class="org.jooq.RenderContext"/> and <reference class="org.jooq.BindContext"/>:
    -									</p>
    -
    -</html><java><![CDATA[// These methods indicate whether fields or tables are being declared (MY_TABLE AS MY_ALIAS) or referenced (MY_ALIAS)
    -boolean declareFields();
    -Context declareFields(boolean declareFields);
    -boolean declareTables();
    -Context declareTables(boolean declareTables);
    -
    -// These methods indicate whether a top-level query is being rendered, or a subquery
    -boolean subquery();
    -Context subquery(boolean subquery);
    -
    -// These methods provide the bind value indices within the scope of the whole Context (and thus of the whole Query)
    -int nextIndex();
    -int peekIndex();]]></java><html>
    -
    -									<h3>An example of rendering SQL</h3>
    -								   	<p>
    -								   		A simple example can be provided by checking out jOOQ's internal representation of a (simplified) <reference id="comparison-predicate" title="CompareCondition"/>. It is used for any <reference class="org.jooq.Condition"/> comparing two fields as for example the AUTHOR.ID = BOOK.AUTHOR_ID condition here:
    -							   		</p>
    -							   		
    -</html><sql>-- [...]
    -FROM AUTHOR
    -JOIN BOOK ON AUTHOR.ID = BOOK.AUTHOR_ID
    --- [...]</sql><html>
    -
    -									<p>
    -										This is how jOOQ renders such a condition:
    -									</p>
    -
    -</html><java><![CDATA[@Override
    -public final void toSQL(RenderContext context) {
    -    // The CompareCondition delegates rendering of the Fields to the Fields
    -    // themselves and connects them using the Condition's comparator operator:
    -    context.sql(field1)
    -           .sql(" ");
    -
    -    // If the second field is null, some convenience behaviour can be
    -    // implemented here
    -    if (field2.isNullLiteral()) {
    -        switch (comparator) {
    -            case EQUALS:
    -                context.sql("is null");
    -                break;
    -
    -            case NOT_EQUALS:
    -                context.sql("is not null");
    -                break;
    -
    -            default:
    -                throw new IllegalStateException("Cannot compare null with " + comparator);
    -        }
    -    }
    -
    -    // By default, also delegate the right hand side's SQL rendering to the
    -    // underlying field
    -    else {
    -        context.sql(comparator.toSQL())
    -               .sql(" ")
    -               .sql(field2);
    -    }
    -}]]></java><html>
    -
    -									<p>
    -										See the manual's sections about <reference id="custom-queryparts" title="custom QueryParts"/> and <reference id="plain-sql-queryparts" title="plain SQL QueryParts"/> to learn about how to write your own query parts in order to extend jOOQ.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="pretty-printing">
    -								<title>Pretty printing SQL</title>
    -								<content><html>
    -									<p>
    -										As mentioned in the previous chapter about <reference id="sql-rendering" title="SQL rendering"/>, there are some elements in the <reference class="org.jooq.RenderContext"/> that are used for formatting / pretty-printing rendered SQL. In order to obtain pretty-printed SQL, just use the following <reference id="custom-settings" title="custom settings"/>: 
    -									</p>
    -	
    -	
    -</html><java><![CDATA[// Create a factory that will render "formatted" SQL
    -Factory pretty = new Factory(dialect, new Settings().withRenderFormatted(true));]]></java><html>
    -
    -									<p>
    -										And then, use the above factory to render pretty-printed SQL:
    -									</p>
    -									
    -</html><code-pair>
    -<java><![CDATA[String sql = pretty.select(
    -                       AUTHOR.LAST_NAME, count().as("c"))
    -                   .from(BOOK)
    -                   .join(AUTHOR)
    -                   .on(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -                   .where(BOOK.TITLE.notEqual("1984"))
    -                   .groupBy(AUTHOR.LAST_NAME)
    -                   .having(count().equal(2))
    -                   .getSQL();]]></java><sql><![CDATA[select 
    -  "TEST"."AUTHOR"."LAST_NAME", 
    -  count(*) "c"
    -from "TEST"."BOOK"
    -  join "TEST"."AUTHOR"
    -  on "TEST"."BOOK"."AUTHOR_ID" = "TEST"."AUTHOR"."ID"
    -where "TEST"."BOOK"."TITLE" <> '1984'
    -group by "TEST"."AUTHOR"."LAST_NAME"
    -having count(*) = 2]]></sql>
    -</code-pair><html>
    -
    -									<p>
    -										The section about <reference id="execute-listeners" title="ExecuteListeners"/> shows an example of how such pretty printing can be used to log readable SQL to the stdout.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -						    <section id="variable-binding">
    -							    <title>Variable binding</title>
    -								<content><html>
    -									<p>
    -										Every <reference class="org.jooq.QueryPart"/> must implement the <reference class="org.jooq.QueryPartInternal" anchor="#bind(org.jooq.BindContext)" title="bind(BindContext)"/> method. This BindContext has two purposes:
    -									</p>
    -									<ul>
    -										<li>It provides some information about the "state" of the variable binding in process.</li>
    -										<li>It provides a common API for binding values to the context's internal <reference class="java.sql.PreparedStatement"/></li>
    -									</ul>
    -									<p>
    -										An overview of the <reference class="org.jooq.RenderContext"/> API is given here:
    -									</p>
    -
    -</html><java><![CDATA[// This method provides access to the PreparedStatement to which bind values are bound
    -PreparedStatement statement();
    -
    -// These methods provide convenience to delegate variable binding
    -BindContext bind(QueryPart part) throws DataAccessException;
    -BindContext bind(Collection<? extends QueryPart> parts) throws DataAccessException;
    -BindContext bind(QueryPart[] parts) throws DataAccessException;
    -
    -// These methods perform the actual variable binding
    -BindContext bindValue(Object value, Class<?> type) throws DataAccessException;
    -BindContext bindValues(Object... values) throws DataAccessException;]]></java><html>
    -
    -									<p>
    -										Some additional methods are inherited from a common <reference class="org.jooq.Context"/>, which is shared among <reference class="org.jooq.RenderContext"/> and <reference class="org.jooq.BindContext"/>. Details are documented in the previous chapter about <reference id="sql-rendering" title="SQL rendering"/>
    -									</p>
    -
    -									<h3>An example of binding values to SQL</h3>
    -								   	<p>
    -								   		A simple example can be provided by checking out jOOQ's internal representation of a (simplified) <reference id="comparison-predicate" title="CompareCondition"/>. It is used for any <reference class="org.jooq.Condition"/> comparing two fields as for example the AUTHOR.ID = BOOK.AUTHOR_ID condition here:
    -							   		</p>
    -							   		
    -</html><sql>-- [...]
    -WHERE AUTHOR.ID = ?
    --- [...]</sql><html>
    -
    -									<p>
    -										This is how jOOQ binds values on such a condition:
    -									</p>
    -</html><java><![CDATA[@Override
    -public final void bind(BindContext context) throws DataAccessException {
    -    // The CompareCondition itself does not bind any variables.
    -    // But the two fields involved in the condition might do so...
    -    context.bind(field1).bind(field2);
    -}]]></java><html>
    -
    -									<p>
    -										See the manual's sections about <reference id="custom-queryparts" title="custom QueryParts"/> and <reference id="plain-sql-queryparts" title="plain SQL QueryParts"/> to learn about how to write your own query parts in order to extend jOOQ.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -						    <section id="custom-queryparts">
    -							    <title>Extend jOOQ with custom types</title>
    -								<content><html>
    -									<p>
    -										If a SQL clause is too complex to express with jOOQ, you can extend either one of the following types for use directly in a jOOQ query:
    -									</p>
    -									
    -</html><java><![CDATA[public abstract class CustomField<T> extends AbstractField<T> {}
    -public abstract class CustomCondition extends AbstractCondition {}
    -public abstract class CustomTable<R extends TableRecord<R>> extends TableImpl<R> {}
    -public abstract class CustomRecord<R extends TableRecord<R>> extends TableRecordImpl<R> {}]]></java><html>
    -
    -									<p>
    -										These classes are declared public and covered by jOOQ's integration tests. When you extend these classes, you will have to provide your own implementations for the <reference id="queryparts" title="QueryParts'"/> <reference id="sql-rendering" title="toSQL()"/> and <reference id="variable-binding" title="bind()"/> methods, as discussed before:
    -									</p>
    -									
    -</html><java><![CDATA[// This method must produce valid SQL. If your QueryPart contains other QueryParts, you may delegate SQL generation to them
    -// in the correct order, passing the render context.
    -//
    -// If context.inline() is true, you must inline all bind variables
    -// If context.inline() is false, you must generate ? for your bind variables
    -public void toSQL(RenderContext context);
    -
    -// This method must bind all bind variables to a PreparedStatement. If your QueryPart contains other QueryParts, $
    -// you may delegate variable binding to them in the correct order, passing the bind context.
    -//
    -// Every QueryPart must ensure, that it starts binding its variables at context.nextIndex().
    -public void bind(BindContext context) throws DataAccessException;]]></java><html>
    -
    -									<p>
    -										The above contract may be a bit tricky to understand at first. The best thing is to check out jOOQ source code and have a look at a couple of QueryParts, to see how it's done. Here's an example <reference class="org.jooq.impl.CustomField"/> showing how to create a field multiplying another field by 2
    -									</p>
    -									
    -</html><java><![CDATA[// Create an anonymous CustomField, initialised with BOOK.ID arguments
    -final Field<Integer> IDx2 = new CustomField<Integer>(BOOK.ID.getName(), BOOK.ID.getDataType()) {
    -    @Override
    -    public void toSQL(RenderContext context) {
    -    
    -        // In inline mode, render the multiplication directly
    -        if (context.inline()) {
    -            context.sql(BOOK.ID).sql(" * 2");
    -        }
    -        
    -        // In non-inline mode, render a bind value
    -        else {
    -            context.sql(BOOK.ID).sql(" * ?");
    -        }
    -    }
    -
    -    @Override
    -    public void bind(BindContext context) {
    -        try {
    -        
    -            // Manually bind the value 2
    -            context.statement().setInt(context.nextIndex(), 2);
    -            
    -            // Alternatively, you could also write:
    -            // context.bind(Factory.val(2));
    -        }
    -        catch (SQLException e) {
    -            throw translate(getSQL(), e);
    -        }
    -    }
    -};
    -
    -// Use the above field in a SQL statement:
    -create.select(IDx2).from(BOOK);]]></java></content>
    -							</section>
    -
    -						    <section id="plain-sql-queryparts">
    -							    <title>Plain SQL QueryParts</title>
    -								<content><html>
    -									<p>
    -										If you don't need the integration of rather complex QueryParts into jOOQ, then you might be safer using simple <reference id="plain-sql" title="Plain SQL"/> functionality, where you can provide jOOQ with a simple String representation of your embedded SQL. Plain SQL methods in jOOQ's API come in two flavours. 
    -									</p>
    -									<ul>
    -										<li><strong>method(String, Object...)</strong>: This is a method that accepts a SQL string and a list of bind values that are to be bound to the variables contained in the SQL string</li>
    -										<li><strong>method(String, QueryPart...)</strong>: This is a method that accepts a SQL string and a list of QueryParts that are "injected" at the position of their respective placeholders in the SQL string</li>
    -									</ul>
    -									<p>
    -										The above distinction is best explained using an example:
    -									</p>
    -									
    -</html><java><![CDATA[// Plain SQL using bind values. The value 5 is bound to the first variable, "Animal Farm" to the second variable:
    -create.selectFrom(BOOK).where("BOOK.ID = ? AND TITLE = ?", 5, "Animal Farm");
    -
    -// Plain SQL using placeholders (counting from zero). 
    -// The QueryPart "id" is substituted for the placeholder {0}, the QueryPart "title" for {1}
    -Field<Integer> id   = val(5);
    -Field<String> title = val("Animal Farm");
    -create.selectFrom(BOOK).where("BOOK.ID = {0} AND TITLE = {1}", id, title);]]></java><html>
    -
    -									<p>
    -										The above technique allows for creating rather complex SQL clauses that are currently not supported by jOOQ, without extending any of the <reference id="custom-queryparts" title="custom QueryParts"/> as indicated in the previous chapter.
    -									</p>									
    -								</html></content>
    -							</section>
    -
    -						    <section id="serializability">
    -							    <title>Serializability</title>
    -								<content><html>
    -									<p>
    -										The only transient, non-serializable element in any jOOQ object is the <reference id="factory" title="Factory's"/> underlying <reference class="java.sql.Connection"/>. When you want to execute queries after de-serialisation, or when you want to store/refresh/delete <reference id="crud-with-updatablerecords" title="Updatable Records"/>, you will have to "re-attach" them to a Factory
    -									</p>
    -
    -</html><java><![CDATA[// Deserialise a SELECT statement
    -ObjectInputStream in = new ObjectInputStream(...);
    -Select<?> select = (Select<?>) in.readObject();
    -
    -// This will throw a DetachedException:
    -select.execute();
    -
    -// In order to execute the above select, attach it first
    -Factory create = new Factory(connection, SQLDialect.ORACLE);
    -create.attach(select);]]></java><html>
    -
    -									<h3>Automatically attaching QueryParts</h3>
    -									<p>
    -										Another way of attaching QueryParts automatically, or rather providing them with a new <reference class="java.sql.Connection"/> at will, is to hook into the <reference id="execute-listeners" title="Execute Listener support"/>. More details about this can be found in the manual's chapter about <reference id="execute-listeners" title="ExecuteListeners"/>
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -					
    -					<section id="scala-sql-building">
    -						<title>SQL building in Scala</title>
    -						<content><html>
    -							<p>
    -								jOOQ-Scala is a maven module used for leveraging some advanced Scala features for those users that wish to use jOOQ with Scala.
    -							</p>
    -							
    -							<h3>Using Scala's implicit defs to allow for operator overloading</h3>
    -							<p>
    -								The most obvious Scala feature to use in jOOQ are implicit defs for implicit conversions in order to enhance the <reference class="org.jooq.Field"/> type with SQL-esque operators. 
    -							</p>
    -							<p>
    -								The following depicts a trait which wraps all fields:
    -							</p>
    -							
    -</html><scala><![CDATA[/**
    - * A Scala-esque representation of {@link org.jooq.Field}, adding overloaded
    - * operators for common jOOQ operations to arbitrary fields
    - */
    -trait SAnyField[T] extends Field[T] {
    -
    -    // String operations
    -    // -----------------
    -
    -    def ||(value : String)            : Field[String]
    -    def ||(value : Field[_])          : Field[String]
    -
    -    // Comparison predicates
    -    // ---------------------
    -
    -    def ===(value : T)                : Condition
    -    def ===(value : Field[T])         : Condition
    -
    -    def !==(value : T)                : Condition
    -    def !==(value : Field[T])         : Condition
    -
    -    def <>(value : T)                 : Condition
    -    def <>(value : Field[T])          : Condition
    -
    -    def >(value : T)                  : Condition
    -    def >(value : Field[T])           : Condition
    -
    -    def >=(value : T)                 : Condition
    -    def >=(value : Field[T])          : Condition
    -
    -    def <(value : T)                  : Condition
    -    def <(value : Field[T])           : Condition
    -
    -    def <=(value : T)                 : Condition
    -    def <=(value : Field[T])          : Condition
    -
    -    def <=>(value : T)                : Condition
    -    def <=>(value : Field[T])         : Condition
    -}]]></scala><html>
    -
    -							<p>
    -								The following depicts a trait which wraps numeric fields:
    -							</p>
    -							
    -</html><scala><![CDATA[/**
    - * A Scala-esque representation of {@link org.jooq.Field}, adding overloaded
    - * operators for common jOOQ operations to numeric fields
    - */
    -trait SNumberField[T <: Number] extends SAnyField[T] {
    -
    -    // Arithmetic operations
    -    // ---------------------
    -
    -    def unary_-                       : Field[T]
    -
    -    def +(value : Number)             : Field[T]
    -    def +(value : Field[_ <: Number]) : Field[T]
    -
    -    def -(value : Number)             : Field[T]
    -    def -(value : Field[_ <: Number]) : Field[T]
    -
    -    def *(value : Number)             : Field[T]
    -    def *(value : Field[_ <: Number]) : Field[T]
    -
    -    def /(value : Number)             : Field[T]
    -    def /(value : Field[_ <: Number]) : Field[T]
    -
    -    def %(value : Number)             : Field[T]
    -    def %(value : Field[_ <: Number]) : Field[T]
    -
    -    // Bitwise operations
    -    // ------------------
    -
    -    def unary_~                       : Field[T]
    -
    -    def &(value : T)                  : Field[T]
    -    def &(value : Field[T])           : Field[T]
    -
    -    def |(value : T)                  : Field[T]
    -    def |(value : Field[T])           : Field[T]
    -
    -    def ^(value : T)                  : Field[T]
    -    def ^(value : Field[T])           : Field[T]
    -
    -    def <<(value : T)                 : Field[T]
    -    def <<(value : Field[T])          : Field[T]
    -
    -    def >>(value : T)                 : Field[T]
    -    def >>(value : Field[T])          : Field[T]
    -}]]></scala><html>
    -
    -							<p>
    -								An example query using such overloaded operators would then look like this:
    -							</p>
    -							
    -</html><scala><![CDATA[select (
    -  T_BOOK.ID * T_BOOK.AUTHOR_ID,
    -  T_BOOK.ID + T_BOOK.AUTHOR_ID * 3 + 4,
    -  T_BOOK.TITLE || " abc" || " xy")
    -from T_BOOK
    -leftOuterJoin (
    -  f select (x.ID, x.YEAR_OF_BIRTH)
    -  from x
    -  limit 1
    -  asTable x.getName()
    -)
    -on T_BOOK.AUTHOR_ID === x.ID
    -where (T_BOOK.ID <> 2)
    -or (T_BOOK.TITLE in ("O Alquimista", "Brida"))
    -fetch]]></scala><html>
    -
    -							<h3>Scala 2.10 Macros</h3>
    -							<p>
    -								This feature is still being experimented with. With Scala Macros, it might be possible to inline a true SQL dialect into the Scala syntax, backed by the jOOQ API. Stay tuned!
    -							</p>
    -						</html></content>
    -					</section>
    -				</sections>
    -			</section>
    -
    -			<section id="sql-execution">
    -				<title>SQL execution</title>
    -				<content><html>
    -					<p>
    -						In a previous section of the manual, we've seen how jOOQ can be used to <reference id="sql-building" title="build SQL"/> that can be executed with any API including JDBC or ... jOOQ. This section of the manual deals with various means of actually executing SQL with jOOQ.
    -					</p>
    -					
    -					<h3>SQL execution with JDBC</h3>
    -					<p>
    -						JDBC calls executable objects "<reference class="java.sql.Statement"/>". It distinguishes between three types of statements:
    -					</p>
    -					<ul>
    -						<li><reference class="java.sql.Statement"/>, or "static statement": This statement type is used for any arbitrary type of SQL statement. It is particularly useful with <reference id="inlined-parameters" title="inlined parameters"/></li>
    -						<li><reference class="java.sql.PreparedStatement"/>: This statement type is used for any arbitrary type of SQL statement. It is particularly useful with <reference id="indexed-parameters" title="indexed parameters"/> (note that JDBC does not support <reference id="named-parameters" title="named parameters"/>)</li>
    -						<li><reference class="java.sql.CallableStatement"/>: This statement type is used for SQL statements that are "called" rather than "executed". In particular, this includes calls to <reference id="stored-procedures" title="stored procedures"/>. Callable statements can register OUT parameters</li>
    -					</ul>
    -					<p>
    -						Today, the JDBC API may look weird to users being used to object-oriented design. While statements hide a lot of SQL dialect-specific implementation details quite well, they assume a lot of knowledge about the internal state of a statement. For instance, you can use the <reference class="java.sql.PreparedStatement" anchor="#addBatch()" title="PreparedStatement.addBatch()"/> method, to add a the prepared statement being created to an "internal list" of batch statements. Instead of returning a new type, this method forces user to reflect on the prepared statement's internal state or "mode".
    -					</p>
    -					
    -					<h3>jOOQ is wrapping JDBC</h3>
    -					<p>						
    -						These things are abstracted away by jOOQ, which exposes such concepts in a more object-oriented way. For more details about jOOQ's batch query execution, see the manual's section about <reference id="batch-execution" title="batch execution"/>.
    -					</p> 
    -					<p>
    -						The following sections of this manual will show how jOOQ is wrapping JDBC for SQL execution
    -					</p>
    -				</html></content>
    -
    -				<sections>
    -					<section id="comparison-with-jdbc">
    -						<title>Comparison between jOOQ and JDBC</title>
    -						<content><html>
    -							<h3>Similarities with JDBC</h3>
    -							<p>
    -								Even if there are <reference id="query-vs-resultquery" title="two general types of Query"/>, there are a lot of similarities between JDBC and jOOQ. Just to name a few:
    -							</p>
    -							<ul>
    -								<li>Both APIs return the number of affected records in non-result queries. JDBC: <reference class="java.sql.Statement" anchor="#executeUpdate(java.lang.String)" title="Statement.executeUpdate()"/>, jOOQ: <reference class="org.jooq.Query" anchor="#execute()" title="Query.execute()"/></li>
    -								<li>Both APIs return a scrollable result set type from result queries. JDBC: <reference class="java.sql.ResultSet"/>, jOOQ: <reference class="org.jooq.Result"/></li>
    -							</ul>
    -							
    -							<h3>Differences to JDBC</h3>
    -							<p>
    -								Some of the most important differences between JDBC and jOOQ are listed here:
    -							</p>
    -							<ul>
    -								<li><reference id="query-vs-resultquery" title="Query vs. ResultQuery"/>: JDBC does not formally distinguish between queries that can return results, and queries that cannot. The same API is used for both. This greatly reduces the possibility for <reference id="fetching" title="fetching convenience methods"/></li>
    -								<li><reference id="exception-handling" title="Exception handling"/>: While SQL uses the checked <reference class="java.sql.SQLException"/>, jOOQ wraps all exceptions in an unchecked <reference class="org.jooq.exception.DataAccessException"/></li>
    -								<li><reference class="org.jooq.Result"/>: Unlike its JDBC counter-part, this type implements <reference class="java.util.List"/> and is fully loaded into Java memory, freeing resources as early as possible. Just like statements, this means that users don't have to deal with a "weird" internal result set state.</li>
    -								<li><reference class="org.jooq.Cursor"/>: If you want more fine-grained control over how many records are fetched into memory at once, you can still do that using jOOQ's <reference id="lazy-fetching" title="lazy fetching"/> feature</li>
    -								<li><reference id="statement-type" title="Statement type"/>: jOOQ does not formally distinguish between static statements and prepared statements. By default, all statements are prepared statements in jOOQ, internally. Executing a statement as a static statement can be done simply using a <reference id="custom-settings" title="custom settings flag"/></li>
    -								<li><reference id="reusing-statements" title="Closing Statements"/>: JDBC keeps open resources even if they are already consumed. With JDBC, there is a lot of verbosity around safely closing resources. In jOOQ, resources are closed after consumption, by default. If you want to keep them open after consumption, you have to explicitly say so.</li>
    -							</ul>
    -						</html></content>
    -					</section>
    -				    
    -				    <section id="query-vs-resultquery">
    -						<title>Query vs. ResultQuery</title>
    -						<content><html>
    -							<p>
    -								Unlike JDBC, jOOQ has a lot of knowledge about a SQL query's structure and internals (see the manual's section about <reference id="sql-building" title="SQL building"/>). Hence, jOOQ distinguishes between these two fundamental types of queries. While every <reference class="org.jooq.Query"/> can be executed, only <reference class="org.jooq.ResultQuery"/> can return results (see the manual's section about <reference id="fetching" title="fetching"/> to learn more about fetching results). With plain SQL, the distinction can be made clear most easily:
    -							</p>
    -							
    -</html><java><![CDATA[// Create a Query object and execute it:
    -Query query = create.query("DELETE FROM BOOK");
    -query.execute();
    -
    -// Create a ResultQuery object and execute it, fetching results:
    -ResultQuery<Record> resultQuery = create.resultQuery("SELECT * FROM BOOK");
    -Result<Record> resultQuery.fetch();]]></java></content>
    -					</section>
    -
    -				    <section id="fetching">
    -						<title>Fetching</title>
    -						<content><html>
    -							<p>
    -								Fetching is something that has been completely neglegted by JDBC and also by various other database abstraction libraries. Fetching is much more than just looping or listing records or mapped objects. There are so many ways you may want to fetch data from a database, it should be considered a first-class feature of any database abstraction API. Just to name a few, here are some of jOOQ's fetching modes:
    -							</p>
    -							<ul>
    -								<li><reference id="record-vs-tablerecord" title="Untyped vs. typed fetching"/>: Sometimes you care about the returned type of your records, sometimes (with arbitrary projections) you don't.</li>
    -								<li><reference id="arrays-maps-and-lists" title="Fetching arrays, maps, or lists"/>: Instead of letting you transform your result sets into any more suitable data type, a library should do that work for you.</li>
    -								<li><reference id="recordhandler" title="Fetching through handler callbacks"/>: This is an entirely different fetching paradigm. With Java 8's lambda expressions, this will become even more powerful.</li>
    -								<li><reference id="recordmapper" title="Fetching through mapper callbacks"/>: This is an entirely different fetching paradigm. With Java 8's lambda expressions, this will become even more powerful.</li>
    -								<li><reference id="pojos" title="Fetching custom POJOs"/>: This is what made Hibernate and JPA so strong. Automatic mapping of tables to custom POJOs.</li>
    -								<li><reference id="lazy-fetching" title="Lazy vs. eager fetching"/>: It should be easy to distinguish these two fetch modes.</li>
    -								<li><reference id="many-fetching" title="Fetching many results"/>: Some databases allow for returning many result sets from a single query. JDBC can handle this but it's very verbose. A list of results should be returned instead.</li>
    -								<li><reference id="later-fetching" title="Fetching data asynchronously"/>: Some queries take too long to execute to wait for their results. You should be able to spawn query execution in a separate process.</li>
    -							</ul>
    -							
    -							<h3>Convenience and how ResultQuery, Result, and Record share API</h3>
    -							<p>
    -								The term "fetch" is always reused in jOOQ when you can fetch data from the database. An <reference class="org.jooq.ResultQuery"/> provides many overloaded means of fetching data:
    -							</p>
    -							
    -							<h3>Various modes of fetching</h3>
    -							<p>
    -								These modes of fetching are also documented in subsequent sections of the manual
    -							</p>
    -							
    -</html><java><![CDATA[// The "standard" fetch
    -Result<R> fetch();    
    -
    -// The "standard" fetch when you know your query returns only one record
    -R fetchOne();
    -
    -// The "standard" fetch when you only want to fetch the first record
    -R fetchAny();
    -
    -// Create a "lazy" Cursor, that keeps an open underlying JDBC ResultSet
    -Cursor<R> fetchLazy();
    -Cursor<R> fetchLazy(int fetchSize);
    -
    -// Create a java.util.concurrent.Future, to handle asynchronous execution of the ResultQuery
    -FutureResult<R> fetchLater();
    -FutureResult<R> fetchLater(ExecutorService executor);
    -
    -// Fetch several results at once
    -List<Result<Record>> fetchMany();
    -
    -// Fetch records into a custom callback
    -<H extends RecordHandler<R>> H fetchInto(H handler);
    -
    -// Map records using a custom callback
    -<E> List<E> fetch(RecordMapper<? super R, E> mapper);
    -
    -// Execute a ResultQuery with jOOQ, but return a JDBC ResultSet, not a jOOQ object
    -ResultSet fetchResultSet();]]></java><html>
    -							
    -							<h3>Fetch convenience</h3>
    -							<p>
    -								These means of fetching are also available from <reference class="org.jooq.Result"/> and <reference class="org.jooq.Record"/> APIs
    -							</p>
    -
    -</html><java><![CDATA[// These methods are convenience for fetching only a single field, 
    -// possibly converting results to another type
    -<T>    List<T> fetch(Field<T> field);
    -<T>    List<T> fetch(Field<?> field, Class<? extends T> type);
    -<T, U> List<U> fetch(Field<T> field, Converter<? super T, U> converter);
    -       List<?> fetch(int fieldIndex);
    -<T>    List<T> fetch(int fieldIndex, Class<? extends T> type);
    -<U>    List<U> fetch(int fieldIndex, Converter<?, U> converter);
    -       List<?> fetch(String fieldName);
    -<T>    List<T> fetch(String fieldName, Class<? extends T> type);
    -<U>    List<U> fetch(String fieldName, Converter<?, U> converter);
    -
    -// These methods are convenience for fetching only a single field, possibly converting results to another type
    -// Instead of returning lists, these return arrays
    -<T>    T[]      fetchArray(Field<T> field);
    -<T>    T[]      fetchArray(Field<?> field, Class<? extends T> type);
    -<T, U> U[]      fetchArray(Field<T> field, Converter<? super T, U> converter);
    -       Object[] fetchArray(int fieldIndex);
    -<T>    T[]      fetchArray(int fieldIndex, Class<? extends T> type);
    -<U>    U[]      fetchArray(int fieldIndex, Converter<?, U> converter);
    -       Object[] fetchArray(String fieldName);
    -<T>    T[]      fetchArray(String fieldName, Class<? extends T> type);
    -<U>    U[]      fetchArray(String fieldName, Converter<?, U> converter);
    -
    -// These methods are convenience for fetching only a single field from a single record, 
    -// possibly converting results to another type
    -<T>    T      fetchOne(Field<T> field);
    -<T>    T      fetchOne(Field<?> field, Class<? extends T> type);
    -<T, U> U      fetchOne(Field<T> field, Converter<? super T, U> converter);
    -       Object fetchOne(int fieldIndex);
    -<T>    T      fetchOne(int fieldIndex, Class<? extends T> type);
    -<U>    U      fetchOne(int fieldIndex, Converter<?, U> converter);
    -       Object fetchOne(String fieldName);
    -<T>    T      fetchOne(String fieldName, Class<? extends T> type);
    -<U>    U      fetchOne(String fieldName, Converter<?, U> converter);]]></java><html>
    -
    -							<h3>Fetch transformations</h3>
    -							<p>
    -								These means of fetching are also available from <reference class="org.jooq.Result"/> and <reference class="org.jooq.Record"/> APIs
    -							</p>
    -							
    -</html><java><![CDATA[// Transform your Records into arrays, Results into matrices
    -       Object[][] fetchArrays();
    -       Object[]   fetchOneArray();
    -       
    -// Reduce your Result object into maps
    -<K>    Map<K, R>      fetchMap(Field<K> key);
    -<K, V> Map<K, V>      fetchMap(Field<K> key, Field<V> value);
    -<K, E> Map<K, E>      fetchMap(Field<K> key, Class<E> value);
    -       Map<Record, R> fetchMap(Field<?>[] key);
    -<E>    Map<Record, E> fetchMap(Field<?>[] key, Class<E> value);       
    -
    -// Transform your Result object into maps
    -       List<Map<String, Object>> fetchMaps();
    -       Map<String, Object>       fetchOneMap();
    -
    -// Transform your Result object into groups
    -<K>    Map<K, Result<R>>      fetchGroups(Field<K> key);
    -<K, V> Map<K, List<V>>        fetchGroups(Field<K> key, Field<V> value);
    -<K, E> Map<K, List<E>>        fetchGroups(Field<K> key, Class<E> value);
    -       Map<Record, Result<R>> fetchGroups(Field<?>[] key);
    -<E>    Map<Record, List<E>>   fetchGroups(Field<?>[] key, Class<E> value);
    -
    -// Transform your Records into custom POJOs
    -<E>    List<E> fetchInto(Class<? extends E> type);
    -
    -// Transform your records into another table type
    -<Z extends Record> Result<Z> fetchInto(Table<Z> table);]]></java><html>
    -
    -							<p>
    -								Note, that apart from the <reference class="org.jooq.ResultQuery" anchor="#fetchLazy()" title="fetchLazy()"/> methods, all fetch() methods will immediately close underlying JDBC result sets.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="record-vs-tablerecord">
    -								<title>Record vs. TableRecord</title>
    -								<content><html>
    -									<p>
    -										jOOQ understands that SQL is much more expressive than Java, when it comes to the declarative typing of <reference id="table-expressions" title="table expressions"/>. As a declarative language, SQL allows for creating ad-hoc row value expressions (records with indexed columns) and records (records with named columns). In Java, this is not possible to the same extent. Yet, still, sometimes you wish to use strongly typed records, when you know that you're selecting only from a single table
    -									</p>
    -									
    -									<h3>Fetching strongly or weakly typed records</h3>
    -									<p>
    -										When fetching data only from a single table, the <reference id="table-expressions" title="table expression's"/> type is known to jOOQ if you use jOOQ's <reference id="code-generation" title="code generator"/> to generate <reference id="codegen-records" title="TableRecords"/> for your database tables. In order to fetch such strongly typed records, you will have to use the <reference id="select-statement" title="simple select API"/>:
    -									</p>
    -
    -</html><java><![CDATA[// Use the selectFrom() method:
    -BookRecord book = create.selectFrom(BOOK).where(BOOK.ID.equal(1)).fetchOne();
    -
    -// Typesafe field access is now possible:
    -System.out.println("Title       : " + book.getTitle());
    -System.out.println("Published in: " + book.getPublishedIn());]]></java><html>
    -									
    -									<p>
    -										When you use the <reference class="org.jooq.FactoryOperations" anchor="#selectFrom(org.jooq.Table)" title="Factory.selectFrom()"/> method, jOOQ will return the record type supplied with the argument table. Beware though, that you will no longer be able to use any clause that modifies the type of your <reference id="table-expressions" title="table expression"/>. This includes: 
    -									</p>
    -									<ul>
    -                   						<li><reference id="select-clause" title="The SELECT clause"/></li>
    -                   						<li><reference id="join-clause" title="The JOIN clause"/></li>
    -                   						<li><reference id="group-by-clause" title="The GROUP BY clause"/></li>
    -                   						<li><reference id="having-clause" title="The HAVING clause"/></li>
    -                   					</ul>		
    -								</html></content>
    -							</section>
    -
    -							<section id="arrays-maps-and-lists">
    -								<title>Arrays, Maps and Lists</title>
    -								<content><html>
    -									<p>
    -										By default, jOOQ returns an <reference class="org.jooq.Result"/> object, which is essentially a <reference class="java.util.List"/> of <reference class="org.jooq.Record"/>. Often, you will find yourself wanting to transform this result object into a type that corresponds more to your specific needs. Or you just want to list all values of one specific column. Here are some examples to illustrate those use cases:
    -									</p>
    -									
    -</html><java><![CDATA[// Fetching only book titles (the two calls are equivalent):
    -List<String> titles1 = create.select().from(BOOK).fetch().getValues(BOOK.TITLE);
    -List<String> titles2 = create.select().from(BOOK).fetch(BOOK.TITLE);
    -String[]     titles3 = create.select().from(BOOK).fetchArray(BOOK.TITLE);
    -
    -// Fetching only book IDs, converted to Long
    -List<Long> ids1 = create.select().from(BOOK).fetch().getValues(BOOK.ID, Long.class);
    -List<Long> ids2 = create.select().from(BOOK).fetch(BOOK.ID, Long.class);
    -Long[]     ids3 = create.select().from(BOOK).fetchArray(BOOK.ID, Long.class);
    -
    -// Fetching book IDs and mapping each ID to their records or titles
    -Map<Integer, BookRecord> map1 = create.selectFrom(BOOK).fetch().intoMap(BOOK.ID);
    -Map<Integer, BookRecord> map2 = create.selectFrom(BOOK).fetchMap(BOOK.ID);
    -Map<Integer, String>     map3 = create.selectFrom(BOOK).fetch().intoMap(BOOK.ID, BOOK.TITLE);
    -Map<Integer, String>     map4 = create.selectFrom(BOOK).fetchMap(BOOK.ID, BOOK.TITLE);
    -
    -// Group by AUTHOR_ID and list all books written by any author:       
    -Map<Integer, Result<BookRecord>> group1 = create.selectFrom(BOOK).fetch().intoGroups(BOOK.AUTHOR_ID);
    -Map<Integer, Result<BookRecord>> group2 = create.selectFrom(BOOK).fetchGroups(BOOK.AUTHOR_ID);
    -Map<Integer, List<String>>       group3 = create.selectFrom(BOOK).fetch().intoGroups(BOOK.AUTHOR_ID, BOOK.TITLE);
    -Map<Integer, List<String>>       group4 = create.selectFrom(BOOK).fetchGroups(BOOK.AUTHOR_ID, BOOK.TITLE);]]></java><html>									
    -
    -									<p>
    -										Note that most of these convenience methods are available both through <reference class="org.jooq.ResultQuery"/> and <reference class="org.jooq.Result"/>, some are even available through <reference class="org.jooq.Record"/> as well.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="recordhandler">
    -								<title>RecordHandler</title>
    -								<content><html>
    -									<p>
    -										In a more functional operating mode, you might want to write callbacks that receive records from your select statement results in order to do some processing. This is a common data access pattern in Spring's JdbcTemplate, and it is also available in jOOQ. With jOOQ, you can implement your own <reference class="org.jooq.RecordHandler"/> classes and plug them into jOOQ's <reference class="org.jooq.ResultQuery"/>:
    -									</p>
    -									
    -</html><java><![CDATA[// Write callbacks to receive records from select statements
    -create.selectFrom(BOOK)
    -      .orderBy(BOOK.ID)
    -      .fetch()
    -      .into(new RecordHandler<BookRecord>() {
    -          @Override
    -          public void next(BookRecord book) {
    -              Util.doThingsWithBook(book);
    -          }
    -      });
    -      
    -// Or more concisely
    -create.selectFrom(BOOK)
    -      .orderBy(BOOK.ID)
    -      .fetchInto(new RecordHandler<BookRecord>() {...});
    -      
    -// Or even more concisely with Java 8's lambda expressions:
    -create.selectFrom(BOOK)
    -      .orderBy(BOOK.ID)
    -      .fetchInto(book -> { Util.doThingsWithBook(book); }; );
    -]]></java><html>
    -
    -									<p>
    -										See also the manual's section about the <reference id="recordmapper" title="RecordMapper"/>, which provides similar features
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="recordmapper">
    -								<title>RecordMapper</title>
    -								<content><html>
    -									<p>
    -										In a more functional operating mode, you might want to write callbacks that map records from your select statement results in order to do some processing. This is a common data access pattern in Spring's JdbcTemplate, and it is also available in jOOQ. With jOOQ, you can implement your own <reference class="org.jooq.RecordMapper"/> classes and plug them into jOOQ's <reference class="org.jooq.ResultQuery"/>:
    -									</p>
    -									
    -</html><java><![CDATA[// Write callbacks to receive records from select statements
    -List<Integer> ids =
    -create.selectFrom(BOOK)
    -      .orderBy(BOOK.ID)
    -      .fetch()
    -      .map(new RecordMapper<BookRecord, Integer>() {
    -          @Override
    -          public Integer map(BookRecord book) {
    -              return book.getId();
    -          }
    -      });
    -      
    -// Or more concisely
    -create.selectFrom(BOOK)
    -      .orderBy(BOOK.ID)
    -      .fetch(new RecordMapper<BookRecord, Integer>() {...});
    -      
    -// Or even more concisely with Java 8's lambda expressions:
    -create.selectFrom(BOOK)
    -      .orderBy(BOOK.ID)
    -      .fetch(book -> book.getId());
    -]]></java><html>
    -
    -									<p>
    -										See also the manual's section about the <reference id="recordhandler" title="RecordHandler"/>, which provides similar features
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="pojos">
    -								<title>POJOs</title>
    -								<content><html>
    -									<p>
    -										Fetching data in records is fine as long as your application is not really layered, or as long as you're still writing code in the DAO layer. But if you have a more advanced application architecture, you may not want to allow for jOOQ artefacts to leak into other layers. You may choose to write POJOs (Plain Old Java Objects) as your primary DTOs (Data Transfer Objects), without any dependencies on jOOQ's <reference class="org.jooq.Record"/> types, which may even potentially hold a reference to a <reference id="factory" title="Factory"/>, and thus a JDBC <reference class="java.sql.Connection"/>. Like Hibernate/JPA, jOOQ allows you to operate with POJOs. Unlike Hibernate/JPA, jOOQ does not "attach" those POJOs or create proxies with any magic in them.
    -									</p>
    -									<p>
    -										If you're using jOOQ's <reference id="code-generation" title="code generator"/>, you can configure it to <reference id="codegen-pojos" title="generate POJOs"/> for you, but you're not required to use those generated POJOs. You can use your own.
    -									</p>
    -									
    -									<h3>Using JPA-annotated POJOs</h3>									
    -									<p>
    -										jOOQ tries to find JPA annotations on your POJO types. If it finds any, they are used as the primary source for mapping meta-information. Only the <reference class="javax.persistence.Column"/> annotation is used and understood by jOOQ. An example:
    -									</p>
    -
    -</html><java><![CDATA[// A JPA-annotated POJO class
    -public class MyBook {
    -  @Column(name = "ID")
    -  public int myId;
    -  
    -  @Column(name = "TITLE")
    -  public String myTitle;
    -}
    -
    -// The various "into()" methods allow for fetching records into your custom POJOs:
    -MyBook myBook        = create.select().from(BOOK).fetchAny().into(MyBook.class); 
    -List<MyBook> myBooks = create.select().from(BOOK).fetch().into(MyBook.class);
    -List<MyBook> myBooks = create.select().from(BOOK).fetchInto(MyBook.class);]]></java><html>									
    -									
    -									<p>
    -										Just as with any other JPA implementation, you can put the <reference class="javax.persistence.Column"/> annotation on any class member, including attributes, setters and getters. Please refer to the <reference class="org.jooq.Record" anchor="#into(java.lang.Class)" title="Record.into()"/> Javadoc for more details.
    -									</p>
    -									
    -									<h3>Using simple POJOs</h3>
    -									<p>
    -										If jOOQ does not find any JPA-annotations, columns are mapped to the "best-matching" constructor, attribute or setter. An example illustrates this:
    -									</p>
    -									
    -</html><java><![CDATA[// A "mutable" POJO class
    -public class MyBook1 {
    -  public int id;
    -  public String title;
    -}
    -
    -// The various "into()" methods allow for fetching records into your custom POJOs:
    -MyBook1 myBook        = create.select().from(BOOK).fetchAny().into(MyBook1.class); 
    -List<MyBook1> myBooks = create.select().from(BOOK).fetch().into(MyBook1.class);
    -List<MyBook1> myBooks = create.select().from(BOOK).fetchInto(MyBook1.class);]]></java><html>	
    -
    -									<p>
    -										Please refer to the <reference class="org.jooq.Record" anchor="#into(java.lang.Class)" title="Record.into()"/> Javadoc for more details.
    -									</p>
    -									
    -									<h3>Using "immutable" POJOs</h3>
    -									<p>
    -										If jOOQ does not find any default constructor, columns are mapped to the "best-matching" constructor. This allows for using "immutable" POJOs with jOOQ. An example illustrates this:
    -									</p>
    -									
    -</html><java><![CDATA[// An "immutable" POJO class
    -public class MyBook2 {
    -  public final int id;
    -  public final String title;
    -  
    -  public MyBook2(int id, String title) {
    -    this.id = id;
    -    this.title = title;
    -  }
    -}
    -
    -// With "immutable" POJO classes, there must be an exact match between projected fields and available constructors:
    -MyBook2 myBook        = create.select(BOOK.ID, BOOK.TITLE).from(BOOK).fetchAny().into(MyBook2.class); 
    -List<MyBook2> myBooks = create.select(BOOK.ID, BOOK.TITLE).from(BOOK).fetch().into(MyBook2.class);
    -List<MyBook2> myBooks = create.select(BOOK.ID, BOOK.TITLE).from(BOOK).fetchInto(MyBook2.class);
    -
    -// An "immutable" POJO class with a java.beans.ConstructorProperties annotation
    -public class MyBook3 {
    -  public final String title;
    -  public final int id;
    -  
    -  @ConstructorProperties({ "title", "id"})
    -  public MyBook2(String title, int id) {
    -    this.title = title;
    -    this.id = id;
    -  }
    -}
    -
    -// With annotated "immutable" POJO classes, there doesn't need to be an exact match between fields and constructor arguments.
    -// In the below cases, only BOOK.ID is really set onto the POJO, BOOK.TITLE remains null and BOOK.AUTHOR_ID is ignored
    -MyBook3 myBook        = create.select(BOOK.ID, BOOK.AUTHOR_ID).from(BOOK).fetchAny().into(MyBook3.class); 
    -List<MyBook3> myBooks = create.select(BOOK.ID, BOOK.AUTHOR_ID).from(BOOK).fetch().into(MyBook3.class);
    -List<MyBook3> myBooks = create.select(BOOK.ID, BOOK.AUTHOR_ID).from(BOOK).fetchInto(MyBook3.class);
    -]]></java><html>	
    -									
    -									<p>
    -										Please refer to the <reference class="org.jooq.Record" anchor="#into(java.lang.Class)" title="Record.into()"/> Javadoc for more details.
    -									</p>
    -
    -									<h3>Using proxyable types</h3>
    -									<p>
    -										jOOQ also allows for fetching data into abstract classes or interfaces, or in other words, "proxyable" types. This means that jOOQ will return a <reference class="java.util.HashMap"/> wrapped in a <reference class="java.lang.reflect.Proxy"/> implementing your custom type. An example of this is given here:
    -									</p>
    -									
    -</html><java><![CDATA[// A "proxyable" type
    -public interface MyBook3 {
    -  int getId(); 
    -  void setId(int id);
    -  
    -  String getTitle();
    -  void setTitle(String title);
    -}
    -
    -// The various "into()" methods allow for fetching records into your custom POJOs:
    -MyBook3 myBook        = create.select(BOOK.ID, BOOK.TITLE).from(BOOK).fetchAny().into(MyBook3.class); 
    -List<MyBook3> myBooks = create.select(BOOK.ID, BOOK.TITLE).from(BOOK).fetch().into(MyBook3.class);
    -List<MyBook3> myBooks = create.select(BOOK.ID, BOOK.TITLE).from(BOOK).fetchInto(MyBook3.class);]]></java><html>									
    -
    -									<p>
    -										Please refer to the <reference class="org.jooq.Record" anchor="#into(java.lang.Class)" title="Record.into()"/> Javadoc for more details.
    -									</p>
    -
    -									<h3>Loading POJOs back into Records to store them</h3>
    -									<p>
    -										The above examples show how to fetch data into your own custom POJOs / DTOs. When you have modified the data contained in POJOs, you probably want to store those modifications back to the database. An example of this is given here:
    -									</p>
    -
    -</html><java><![CDATA[// A "mutable" POJO class
    -public class MyBook {
    -  public int id;
    -  public String title;
    -}
    -
    -// Create a new POJO instance
    -MyBook myBook = new MyBook();
    -myBook.id = 10;
    -myBook.title = "Animal Farm";
    -
    -// Load a jOOQ-generated BookRecord from your POJO
    -BookRecord book = create.newRecord(BOOK, myBook); 
    -
    -// Insert it (implicitly)
    -book.store();
    -
    -// Insert it (explicitly)
    -create.executeInsert(book);
    -
    -// or update it (ID = 10)
    -create.executeUpdate(book);]]></java><html>
    -							
    -									<p>
    -										Note: Because of your manual setting of ID = 10, jOOQ's store() method will asume that you want to insert a new record. See the manual's section about <reference id="crud-with-updatablerecords" title="CRUD with UpdatableRecords"/> for more details on this.
    -									</p>
    -											
    -									<h3>Interaction with DAOs</h3>
    -									<p>
    -										If you're using jOOQ's <reference id="code-generation" title="code generator"/>, you can configure it to <reference id="codegen-daos" title="generate DAOs"/> for you. Those DAOs operate on <reference id="codegen-pojos" title="generated POJOs"/>. An example of using such a DAO is given here:
    -									</p>
    -
    -</html><java><![CDATA[// Initialise a Factory
    -Factory create = new Factory(connection, SQLDialect.ORACLE);
    -
    -// Initialise the DAO with the Factory
    -BookDao bookDao = new BookDao(create);
    -
    -// Start using the DAO
    -Book book = bookDao.findById(5);
    -
    -// Modify and update the POJO
    -book.setTitle("1984");
    -book.setPublishedIn(1948);
    -bookDao.update(book);
    -
    -// Delete it again
    -bookDao.delete(book);]]></java><html>
    -									
    -									<h3>More complex data structures</h3>
    -									<p>
    -										jOOQ currently doesn't support more complex data structures, the way Hibernate/JPA attempt to map relational data onto POJOs. While future developments in this direction are not excluded, jOOQ claims that generic mapping strategies lead to an enormous additional complexity that only serves very few use cases. You are likely to find a solution using any of jOOQ's various <reference id="fetching" title="fetching modes"/>, with only little boiler-plate code on the client side.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="lazy-fetching">
    -								<title>Lazy fetching</title>
    -								<content><html>
    -									<p>
    -										Unlike JDBC's <reference class="java.sql.ResultSet"/>, jOOQ's <reference class="org.jooq.Result"/> does not represent an open database cursor with various fetch modes and scroll modes, that needs to be closed after usage. jOOQ's results are simple in-memory Java <reference class="java.util.List"/> objects, containing all of the result values. If your result sets are large, or if you have a lot of network latency, you may wish to fetch records one-by-one, or in small chunks. jOOQ supports a <reference class="org.jooq.Cursor"/> type for that purpose. In order to obtain such a reference, use the <reference class="org.jooq.ResultQuery" anchor="#fetchLazy()" title="ResultQuery.fetchLazy()"/> method. An example is given here:
    -									</p>
    -									
    -</html><java><![CDATA[// Obtain a Cursor reference:
    -Cursor<BookRecord> cursor = null;
    -
    -try {
    -    cursor = create.selectFrom(BOOK).fetchLazy();
    -
    -    // Cursor has similar methods as Iterator<R>
    -    while (cursor.hasNext()) {
    -        BookRecord book = cursor.fetchOne();
    -        
    -        Util.doThingsWithBook(book);
    -    }
    -}
    -
    -// Close the cursor and the cursor's underlying JDBC ResultSet
    -finally {
    -    if (cursor != null) {
    -        cursor.close();
    -    }
    -}]]></java><html>
    -
    -									<p>
    -										As a <reference class="org.jooq.Cursor"/> holds an internal reference to an open <reference class="java.sql.ResultSet"/>, it may need to be closed at the end of iteration. If a cursor is completely scrolled through, it will conveniently close the underlying ResultSet. However, you should not rely on that.
    -									</p>
    -									
    -									<h3>Cursors ship with all the other fetch features</h3>
    -									<p>
    -										Like <reference class="org.jooq.ResultQuery"/> or <reference class="org.jooq.Result"/>, <reference class="org.jooq.Cursor"/> gives access to all of the other fetch features that we've seen so far, i.e.
    -									</p>
    -									<ul>
    -										<li><reference id="record-vs-tablerecord" title="Strongly or weakly typed records"/>: Cursors are also typed with the &lt;R&gt; type, allowing to fetch custom, generated <reference class="org.jooq.TableRecord"/> or plain <reference class="org.jooq.Record"/> types.</li>
    -										<li><reference id="recordhandler" title="RecordHandler callbacks"/>: You can use your own <reference class="org.jooq.RecordHandler"/> callbacks to receive lazily fetched records.</li>
    -										<li><reference id="recordmapper" title="RecordMapper callbacks"/>: You can use your own <reference class="org.jooq.RecordMapper"/> callbacks to map lazily fetched records.</li>
    -										<li><reference id="pojos" title="POJOs"/>: You can fetch data into your own custom POJO types.</li>
    -									</ul>
    -								</html></content>
    -							</section>
    -
    -							<section id="many-fetching">
    -								<title>Many fetching</title>
    -								<content><html>
    -									<p>
    -										Many databases support returning several result sets, or cursors, from single queries. An example for this is Sybase ASE's sp_help command:
    -									</p>
    -</html><text><![CDATA[> sp_help 'author'
    -
    -+--------+-----+-----------+-------------+-------------------+
    -|Name    |Owner|Object_type|Object_status|Create_date        |
    -+--------+-----+-----------+-------------+-------------------+
    -|  author|dbo  |user table | -- none --  |Sep 22 2011 11:20PM|
    -+--------+-----+-----------+-------------+-------------------+
    -
    -+-------------+-------+------+----+-----+-----+
    -|Column_name  |Type   |Length|Prec|Scale|...  |
    -+-------------+-------+------+----+-----+-----+
    -|id           |int    |     4|NULL| NULL|    0|
    -|first_name   |varchar|    50|NULL| NULL|    1|
    -|last_name    |varchar|    50|NULL| NULL|    0|
    -|date_of_birth|date   |     4|NULL| NULL|    1|
    -|year_of_birth|int    |     4|NULL| NULL|    1|
    -+-------------+-------+------+----+-----+-----+]]></text><html>
    -
    -
    -									<p>
    -										The correct (and verbose) way to do this with JDBC is as follows:
    -									</p>
    -									
    -</html><java><![CDATA[ResultSet rs = statement.executeQuery();
    -
    -// Repeat until there are no more result sets
    -for (;;) {
    -
    -  // Empty the current result set
    -  while (rs.next()) {
    -    // [ .. do something with it .. ]
    -  }
    -
    -  // Get the next result set, if available
    -  if (statement.getMoreResults()) {
    -    rs = statement.getResultSet();
    -  }
    -  else {
    -    break;
    -  }
    -}
    -
    -// Be sure that all result sets are closed
    -statement.getMoreResults(Statement.CLOSE_ALL_RESULTS);
    -statement.close();]]></java><html>
    -
    -									<p>
    -										As previously discussed in the chapter about <reference id="comparison-with-jdbc" title="differences between jOOQ and JDBC"/>, jOOQ does not rely on an internal state of any JDBC object, which is "externalised" by Javadoc. Instead, it has a straight-forward API allowing you to do the above in a one-liner: 
    -									</p>
    -									
    -</html><java><![CDATA[// Get some information about the author table, its columns, keys, indexes, etc
    -List<Result<Record>> results = create.fetchMany("sp_help 'author'");]]></java><html>
    -
    -									<p>
    -										Using generics, the resulting structure is immediately clear.
    -									</p>									
    -								</html></content>
    -							</section>
    -
    -							<section id="later-fetching">
    -								<title>Later fetching</title>
    -								<content><html>
    -									<p>
    -										Some queries take very long to execute, yet they are not crucial for the continuation of the main program. For instance, you could be generating a complicated report in a Swing application, and while this report is being calculated in your database, you want to display a background progress bar, allowing the user to pursue some other work. This can be achived simply with jOOQ, by creating a <reference class="org.jooq.FutureResult"/>, a type that extends <reference class="java.util.concurrent.Future"/>. An example is given here:
    -									</p>
    -									
    -</html><java><![CDATA[// Spawn off this query in a separate process:
    -FutureResult<BookRecord> future = create.selectFrom(BOOK).where(... complex predicates ...).fetchLater();
    -
    -// This example actively waits for the result to be done
    -while (!future.isDone()) {
    -    progressBar.increment(1);
    -    Thread.sleep(50);
    -}
    -
    -// The result should be ready, now
    -Result<BookRecord> result = future.get();]]></java><html>
    -
    -									<p>
    -										Note, that instead of letting jOOQ spawn a new thread, you can also provide jOOQ with your own <reference class="java.util.concurrent.ExecutorService"/>:
    -									</p>
    -									
    -</html><java><![CDATA[// Spawn off this query in a separate process:
    -ExecutorService service = // [...]
    -FutureResult<BookRecord> future = create.selectFrom(BOOK).where(... complex predicates ...).fetchLater(service);]]></java></content>
    -							</section>
    -
    -							<section id="resultset-fetching">
    -								<title>ResultSet fetching</title>
    -								<content><html>
    -									<p>
    -										When interacting with legacy applications, you may prefer to have jOOQ return a <reference class="java.sql.ResultSet"/>, rather than jOOQ's own <reference class="org.jooq.Result"/> types. This can be done simply, in two ways:
    -									</p>
    -									
    -</html><java><![CDATA[// jOOQ's Cursor type exposes the underlying ResultSet:
    -ResultSet rs1 = create.selectFrom(BOOK).fetchLazy().resultSet();
    -
    -// But you can also directly access that ResultSet from ResultQuery:
    -ResultSet rs2 = create.selectFrom(BOOK).fetchResultSet();
    -
    -// Don't forget to close these, though!
    -rs1.close();
    -rs2.close();]]></java><html>
    -
    -									<h3>Transform jOOQ's Result into a JDBC ResultSet</h3>
    -									<p>
    -										Instead of operating on a JDBC ResultSet holding an open resource from your database, you can also let jOOQ's <reference class="org.jooq.Result"/> wrap itself in a <reference class="java.sql.ResultSet"/>. The advantage of this is that the so-created ResultSet has no open connection to the database. It is a completely in-memory ResultSet:								
    -									</p>
    -
    -</html><java><![CDATA[// Transform a jOOQ Result into a ResultSet
    -Result<BookRecord> result = create.selectFrom(BOOK).fetch();
    -ResultSet rs = result.intoResultSet();]]></java><html>
    -
    -									<h3>The inverse: Fetch data from a legacy ResultSet using jOOQ</h3>
    -									<p>
    -										The inverse of the above is possible too. Maybe, a legacy part of your application produces JDBC <reference class="java.sql.ResultSet"/>, and you want to turn them into a <reference class="org.jooq.Result"/>: 
    -									</p>
    -
    -</html><java><![CDATA[// Transform a JDBC ResultSet into a jOOQ Result
    -ResultSet rs = connection.createStatement().executeQuery("SELECT * FROM BOOK");
    -
    -// As a Result:
    -Result<Record> result = create.fetch(rs);
    -
    -// As a Cursor
    -Cursor<Record> cursor = create.fetchLazy(rs);]]></java></content>
    -							</section>
    -
    -							<section id="data-type-conversion">
    -								<title>Data type conversion</title>
    -								<content><html>
    -									<p>
    -										Apart from a few extra features (see the manual's section about <reference id="master-data-types" title="master data types"/> and <reference id="codegen-udts" title="user-defined types"/>), jOOQ only supports basic types as supported by the JDBC API. In your application, you may choose to transform these data types into your own ones, without writing too much boiler-plate code. This can be done using jOOQ's <reference class="org.jooq.Converter"/> types. A converter essentially allows for two-way conversion between two Java data types &lt;T&gt; and &lt;U&gt;. By convention, the &lt;T&gt; type corresponds to the type in your database whereas the &gt;U&gt; type corresponds to your own user type. The Converter API is given here:
    -									</p>
    -									
    -</html><java><![CDATA[public interface Converter<T, U> extends Serializable {
    -
    -    /**
    -     * Convert a database object to a user object
    -     */
    -    U from(T databaseObject);
    -
    -    /**
    -     * Convert a user object to a database object
    -     */
    -    T to(U userObject);
    -
    -    /**
    -     * The database type
    -     */
    -    Class<T> fromType();
    -
    -    /**
    -     * The user type
    -     */
    -    Class<U> toType();
    -}]]></java><html>
    -
    -									<p>
    -										Such a converter can be used in many parts of the jOOQ API. Some examples have been illustrated in the manual's section about <reference id="fetching" title="fetching"/>.
    -									</p>
    -									
    -									<h3>A Converter for GregorianCalendar</h3>
    -									<p>
    -										Here is a some more elaborate example involving a Converter for <reference class="java.util.GregorianCalendar"/>: 
    -									</p>
    -									
    -</html><java><![CDATA[// You may prefer Java Calendars over JDBC Timestamps
    -public class CalendarConverter implements Converter<Timestamp, GregorianCalendar> {
    -
    -    @Override
    -    public GregorianCalendar from(Timestamp databaseObject) {
    -        GregorianCalendar calendar = (GregorianCalendar) Calendar.getInstance();
    -        calendar.setTimeInMillis(databaseObject.getTime());
    -        return calendar;
    -    }
    -
    -    @Override
    -    public Timestamp to(GregorianCalendar userObject) {
    -        return new Timestamp(userObject.getTime().getTime());
    -    }
    -
    -    @Override
    -    public Class<Timestamp> fromType() {
    -        return Timestamp.class;
    -    }
    -
    -    @Override
    -    public Class<GregorianCalendar> toType() {
    -        return GregorianCalendar.class;
    -    }
    -}
    -
    -// Now you can fetch calendar values from jOOQ's API:
    -List<GregorianCalendar> dates1 = create.selectFrom(BOOK).fetch().getValues(BOOK.PUBLISHING_DATE, new CalendarConverter());
    -List<GregorianCalendar> dates2 = create.selectFrom(BOOK).fetch(BOOK.PUBLISHING_DATE, new CalendarConverter());
    -]]></java><html>									
    -									
    -									<h3>Enum Converters</h3>
    -									<p>
    -										jOOQ ships with a built-in default <reference class="org.jooq.impl.EnumConverter"/>, that you can use to map VARCHAR values to enum literals or NUMBER values to enum ordinals (both modes are supported). Let's say, you want to map a YES / NO / MAYBE column to a custom Enum:
    -									</p>
    -									
    -</html><java><![CDATA[// Define your Enum
    -public enum YNM {
    -    YES, NO, MAYBE
    -}
    -
    -// Define your converter
    -public class YNMConverter extends EnumConverter<String, YNM> {
    -    public YNMConverter() {
    -        super(String.class, YNM.class);
    -    }
    -}
    -
    -// And you're all set for converting records to your custom Enum:
    -for (BookRecord book : create.selectFrom(BOOK).fetch()) {
    -    switch (book.getValue(BOOK.I_LIKE, new YNMConverter())) {
    -        case YES:    System.out.println("I like this book             : " + book.getTitle()); break;
    -        case NO:     System.out.println("I didn't like this book      : " + book.getTitle()); break;
    -        case MAYBE:  System.out.println("I'm not sure about this book : " + book.getTitle()); break;
    -    }
    -}]]></java><html>
    -									
    -									<h3>Using Converters in generated source code</h3>
    -									<p>
    -										jOOQ also allows for generated source code to reference your own custom converters, in order to permanently replace a <reference id="table-columns" title="table column's"/> &lt;T&gt; type by your own, custom &lt;U&gt; type. See the manual's section about <reference id="custom-data-types" title="custom data types"/> for details.
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -					
    -					<section id="statement-type">
    -						<title>Static statements vs. Prepared Statements</title>
    -						<content><html>
    -							<p>
    -								With JDBC, you have full control over your SQL statements. You can decide yourself, if you want to execute a static <reference class="java.sql.Statement"/> without bind values, or a <reference class="java.sql.PreparedStatement"/> with (or without) bind values. But you have to decide early, which way to go. And you'll have to prevent SQL injection and syntax errors manually, when inlining your bind variables.
    -							</p>
    -							<p>
    -								With jOOQ, this is easier. As a matter of fact, it is plain simple. With jOOQ, you can just set a flag in your <reference id="factory" title="Factory's"/> <reference id="custom-settings" title="Settings"/>, and all queries produced by that factory will be executed as static statements, with all bind values inlined. An example is given here:
    -							</p>
    -							
    -</html><code-pair>
    -<sql><![CDATA[
    -
    -
    -
    -
    -
    -
    --- These statements are rendered by the two factories:
    -SELECT ? FROM DUAL WHERE ? = ?
    -SELECT 1 FROM DUAL WHERE 1 = 1]]></sql><java><![CDATA[// This Factory executes PreparedStatements
    -Factory prepare = new Factory(connection, SQLDialect.ORACLE);
    -
    -// This Factory exeecutes static Statements
    -Factory inlined = new Factory(connection, SQLDialect.ORACLE, 
    -  new Settings().withStatementType(StatementType.STATIC_STATEMENT));
    -  
    -prepare.select(val(1)).where(val(1).equal(1)).fetch();
    -inlined.select(val(1)).where(val(1).equal(1)).fetch();]]></java>
    -</code-pair><html>
    -
    -							<h3>Reasons for choosing one or the other</h3>
    -							<p>
    -								Not all databases are equal. Some databases show improved performance if you use <reference class="java.sql.PreparedStatement"/>, as the database will then be able to re-use execution plans for identical SQL statements, regardless of actual bind values. This heavily improves the time it takes for soft-parsing a SQL statement. In other situations, assuming that bind values are irrelevant for SQL execution plans may be a bad idea, as you might run into "bind value peeking" issues. You may be better off spending the extra cost for a new hard-parse of your SQL statement and instead having the database fine-tune the new plan to the concrete bind values.
    -							</p>
    -							<p>
    -								Whichever aproach is more optimal for you cannot be decided by jOOQ. In most cases, prepared statements are probably better. But you always have the option of forcing jOOQ to render inlined bind values.
    -							</p>
    -							
    -							<h3>Inlining bind values on a per-bind-value basis</h3>
    -							<p>
    -								Note that you don't have to inline all your bind values at once. If you know that a bind value is not really a variable and should be inlined explicitly, you can do so by using <reference class="org.jooq.impl.Factory" anchor="#inline(Object)" title="Factory.inline()"/>, as documented in the manual's section about <reference id="inlined-parameters" title="inlined parameters"/>
    -							</p>
    -						</html></content>
    -					</section>
    -
    -					<section id="reusing-statements">
    -						<title>Reusing a Query's PreparedStatement</title>
    -						<content><html>
    -							<p>
    -								As previously discussed in the chapter about <reference id="comparison-with-jdbc" title="differences between jOOQ and JDBC"/>, reusing PreparedStatements is handled a bit differently in jOOQ from how it is handled in JDBC
    -							</p>
    -							
    -							<h3>Keeping open PreparedStatements with JDBC</h3>
    -							<p>
    -								With JDBC, you can easily reuse a <reference class="java.sql.PreparedStatement"/> by not closing it between subsequent executions. An example is given here:
    -							</p>
    -							
    -</html><java><![CDATA[PreparedStatement stmt = null;
    -ResultSet rs1 = null;
    -ResultSet rs2 = null;
    -
    -try {
    -    // Execute the statement and fetch a first ResultSet
    -    stmt = connection.prepareStatement("SELECT 1 FROM DUAL");
    -    rs1  = stmt.executeQuery();
    -
    -    // Without closing the statement, execute it again to fetch another ResultSet
    -    rs2  = stmt.executeQuery();
    -}
    -finally {
    -    try { rs1.close();  } catch (Exception ignore) {}
    -    try { rs2.close();  } catch (Exception ignore) {}
    -    try { stmt.close(); } catch (Exception ignore) {}
    -}]]></java><html>
    -
    -							<p>
    -								The above technique can be quite useful when you want to reuse expensive database resources. This can be the case when your statement is executed very frequently and your database would take non-negligible time to soft-parse the prepared statement and generate a new statement / cursor resource.
    -							</p>
    -							
    -							<h3>Keeping open PreparedStatements with jOOQ</h3>
    -							<p>
    -								This is also modeled in jOOQ. However, the difference to JDBC is that closing a statement is the default action, whereas keeping it open has to be configured explicitly. This is better than JDBC, because the default action should be the one that is used most often. Keeping open statements is rarely done in average applications. Here's an example of how to keep open PreparedStatements with jOOQ:
    -							</p>
    -							
    -</html><java><![CDATA[// Create a query which is configured to keep its underlying PreparedStatement open
    -ResultQuery<Record> query = create.selectOne().keepStatement(true);
    -
    -// Execute the query twice, against the same underlying PreparedStatement:
    -try {
    -    Result<Record> result1 = query.fetch(); // This will lazily create a new PreparedStatement
    -    Result<Record> result2 = query.fetch(); // This will reuse the previous PreparedStatement
    -}
    -
    -// ... but now, you must not forget to close the query
    -finally {
    -    query.close();
    -}]]></java><html>
    -
    -							<p>
    -								The above example shows how a query can be executed twice against the same underlying PreparedStatement. Unlike in other execution scenarios, you must not forget to close this query now
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="batch-execution">
    -						<title>Using JDBC batch operations</title>
    -						<content><html>
    -							<p>
    -								With JDBC, you can easily execute several statements at once using the addBatch() method. Essentially, there are two modes in JDBC
    -							</p>
    -
    -							<ul>
    -								<li>Execute several queries without bind values</li>
    -								<li>Execute one query several times with bind values</li>
    -							</ul>
    -
    -							<p>
    -								In code, this looks like the following snippet:
    -							</p>
    -</html><java><![CDATA[// 1. several queries
    -// ------------------
    -Statement stmt = connection.createStatement();
    -stmt.addBatch("INSERT INTO author VALUES (1, 'Erich Gamma')");
    -stmt.addBatch("INSERT INTO author VALUES (2, 'Richard Helm')");
    -stmt.addBatch("INSERT INTO author VALUES (3, 'Ralph Johnson')");
    -stmt.addBatch("INSERT INTO author VALUES (4, 'John Vlissides')");
    -int[] result = stmt.executeBatch();
    -
    -// 2. a single query
    -// -----------------
    -PreparedStatement stmt = connection.prepareStatement("INSERT INTO autho VALUES (?, ?)");
    -stmt.setInt(1, 1);
    -stmt.setString(2, "Erich Gamma");
    -stmt.addBatch();
    -
    -stmt.setInt(1, 2);
    -stmt.setString(2, "Richard Helm");
    -stmt.addBatch();
    -
    -stmt.setInt(1, 3);
    -stmt.setString(2, "Ralph Johnson");
    -stmt.addBatch();
    -
    -stmt.setInt(1, 4);
    -stmt.setString(2, "John Vlissides");
    -stmt.addBatch();
    -
    -int[] result = stmt.executeBatch();]]></java><html>
    -
    -
    -							<h3>This will also be supported by jOOQ</h3>
    -							<p>
    -								jOOQ supports executing queries in batch mode as follows:
    -							</p>
    -							
    -</html><java><![CDATA[// 1. several queries
    -// ------------------
    -create.batch(
    -	create.insertInto(AUTHOR, ID, NAME).values(1, "Erich Gamma"),
    -	create.insertInto(AUTHOR, ID, NAME).values(2, "Richard Helm"),
    -	create.insertInto(AUTHOR, ID, NAME).values(3, "Ralph Johnson"),
    -	create.insertInto(AUTHOR, ID, NAME).values(4, "John Vlissides"))
    -.execute();
    -
    -// 2. a single query
    -// -----------------
    -create.batch(create.insertInto(AUTHOR, ID, NAME).values("?", "?"))
    -	  .bind(1, "Erich Gamma")
    -	  .bind(2, "Richard Helm")
    -	  .bind(3, "Ralph Johnson")
    -	  .bind(4, "John Vlissides")
    -	  .execute();]]></java></content>
    -					</section>
    -
    -				    <section id="sequence-execution">
    -						<title>Sequence execution</title>
    -						<content><html>
    -							<p>
    -								Most databases support sequences of some sort, to provide you with unique values to be used for primary keys and other enumerations. If you're using jOOQ's <reference id="code-generation" title="code generator"/>, it will generate a sequence object per sequence for you. There are two ways of using such a sequence object:
    -							</p>
    -
    -							<h3>Standalone calls to sequences</h3>
    -							<p>
    -								Instead of actually phrasing a select statement, you can also use the <reference id="factory" title="Factory's"/> convenience methods:
    -							</p>							
    -							
    -</html><java><![CDATA[// Fetch the next value from a sequence
    -BigInteger nextID = create.nextval(S_AUTHOR_ID);
    -
    -// Fetch the current value from a sequence
    -BigInteger currID = create.currval(S_AUTHOR_ID);]]></java><html>
    -							
    -							<h3>Inlining sequence references in SQL</h3>
    -							<p>
    -								You can inline sequence references in jOOQ SQL statements. The following are examples of how to do that:
    -							</p>
    -							
    -</html><java><![CDATA[// Reference the sequence in a SELECT statement:
    -BigInteger nextID = create.select(s).fetchOne(S_AUTHOR_ID.nextval());
    -
    -// Reference the sequence in an INSERT statement:
    -create.insertInto(AUTHOR, AUTHOR.ID, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .values(S_AUTHOR_ID.nextval(), val("William"), val("Shakespeare"));
    -]]></java><html>
    -
    -							<p>
    -								For more info about inlining sequence references in SQL statements, please refer to the manual's section about <reference id="sequences-and-serials" title="sequences and serials"/>.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="stored-procedures">
    -						<title>Stored procedures and functions</title>
    -						<content><html>
    -							<p>
    -								Many RDBMS support the concept of "routines", usually calling them procedures and/or functions. These concepts have been around in programming languages for a while, also outside of databases. Famous languages distinguishing procedures from functions are:
    -							</p>
    -							<ul>
    -								<li>Ada</li>
    -								<li>BASIC</li>
    -								<li>Pascal</li>
    -								<li>etc...</li>
    -							</ul>
    -							<p>
    -								The general distinction between (stored) procedures and (stored) functions can be summarised like this:
    -							</p>
    -							
    -							<h3>Procedures</h3>
    -							<ul>
    -								<li>Are called using JDBC CallableStatement</li>
    -								<li>Have no return value</li>
    -								<li>Usually support OUT parameters</li>
    -							</ul>
    -							
    -							<h3>Functions</h3>
    -							<ul>
    -								<li>Can be used in SQL statements</li>
    -								<li>Have a return value</li>
    -								<li>Usually don't support OUT parameters</li>
    -							</ul>
    -							
    -							<h3>Exceptions to these rules</h3>
    -							<ul>
    -								<li>DB2, H2, and HSQLDB don't allow for JDBC escape syntax when calling functions. Functions must be used in a SELECT statement</li>
    -								<li>H2 only knows functions (without OUT parameters)</li>
    -								<li>Oracle functions may have OUT parameters</li>
    -								<li>Oracle knows functions that must not be used in SQL statements for transactional reasons</li>
    -								<li>Postgres only knows functions (with all features combined). OUT parameters can also be interpreted as return values, which is quite elegant/surprising, depending on your taste</li>
    -								<li>The Sybase jconn3 JDBC driver doesn't handle null values correctly when using the JDBC escape syntax on functions</li>
    -							</ul>
    -							<p>
    -								In general, it can be said that the field of routines (procedures / functions) is far from being standardised in modern RDBMS even if the SQL:2008 standard specifies things quite well. Every database has its ways and JDBC only provides little abstraction over the great variety of procedures / functions implementations, especially when advanced data types such as cursors / UDT's / arrays are involved.
    -							</p>
    -							<p>
    -								To simplify things a little bit, jOOQ handles both procedures and functions the same way, using a more general <reference class="org.jooq.Routine"/> type.
    -							</p>
    -							
    -							<h3>Using jOOQ for standalone calls to stored procedures and functions</h3>
    -							<p>
    -								If you're using jOOQ's <reference id="code-generation" title="code generator"/>, it will generate <reference class="org.jooq.Routine"/> objects for you. Let's consider the following example:
    -							</p>
    -							
    -</html><sql><![CDATA[-- Check whether there is an author in AUTHOR by that name and get his ID
    -CREATE OR REPLACE PROCEDURE author_exists (author_name VARCHAR2, result OUT NUMBER, id OUT NUMBER);]]></sql><html>
    -
    -							<p>
    -								The generated artefacts can then be used as follows:
    -							</p>
    -							
    -</html><java><![CDATA[// Make an explicit call to the generated procedure object:
    -AuthorExists procedure = new AuthorExists();
    -
    -// All IN and IN OUT parameters generate setters
    -procedure.setAuthorName("Paulo");
    -procedure.execute(configuration);
    -
    -// All OUT and IN OUT parameters generate getters
    -assertEquals(new BigDecimal("1"), procedure.getResult());
    -assertEquals(new BigDecimal("2"), procedure.getId();]]></java><html>							
    -							
    -							<p>
    -								But you can also call the procedure using a generated convenience method in a global Routines class:
    -							</p>
    -
    -</html><java><![CDATA[// The generated Routines class contains static methods for every procedure.
    -// Results are also returned in a generated object, holding getters for every OUT or IN OUT parameter.
    -AuthorExists result = Routines.authorExists("Paulo");
    -
    -// All OUT and IN OUT parameters generate getters
    -assertEquals(new BigDecimal("1"), procedure.getResult());
    -assertEquals(new BigDecimal("2"), procedure.getId();]]></java><html>			
    -
    -							<p>
    -								For more details about <reference id="code-generation" title="code generation"/> for procedures, see the manual's section about <reference id="codegen-procedures" title="procedures and code generation"/>.
    -							</p>				
    -							
    -							<h3>Inlining stored function references in SQL</h3>
    -							<p>
    -								Unlike procedures, functions can be inlined in SQL statements to generate <reference id="column-expressions" title="column expressions"/> or <reference id="table-expressions" title="table expressions"/>, if you're using <reference id="array-and-cursor-unnesting" title="unnesting operators"/>. Assume you have a function like this:
    -							</p>
    -
    -</html><sql><![CDATA[-- Check whether there is an author in AUTHOR by that name and get his ID
    -CREATE OR REPLACE FUNCTION author_exists (author_name VARCHAR2) RETURN NUMBER;]]></sql><html>
    -							
    -							<p>
    -								The generated artefacts can then be used as follows:
    -							</p>
    -							
    -</html><code-pair>
    -<sql><![CDATA[-- This is the rendered SQL
    -
    -SELECT AUTHOR_EXISTS('Paulo') FROM DUAL]]></sql><java><![CDATA[// Use the static-imported method from Routines:
    -boolean exists = 
    -create.select(authorExists("Paulo")).fetchOne(0, boolean.class);]]></java>							
    -</code-pair><html>
    -							
    -							<p>
    -								For more info about inlining stored function references in SQL statements, please refer to the manual's section about <reference id="user-defined-functions" title="user-defined functions"/>.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="oracle-packages">
    -								<title>Oracle Packages</title>
    -								<content><html>
    -									<p>
    -										Oracle uses the concept of a PACKAGE to group several procedures/functions into a sort of namespace. The <a href="http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt" title="SQL 92 standard">SQL 92 standard</a> talks about "modules", to represent this concept, even if this is rarely implemented as such. This is reflected in jOOQ by the use of Java sub-packages in the <reference id="code-generation" title="source code generation"/> destination package. Every Oracle package will be reflected by
    -									</p>
    -									<ul>
    -										<li>A Java package holding classes for formal Java representations of the procedure/function in that package</li>
    -										<li>A Java class holding convenience methods to facilitate calling those procedures/functions</li>
    -									</ul>
    -									<p>
    -										Apart from this, the generated source code looks exactly like the one for standalone procedures/functions.
    -									</p>
    -									<p>
    -										For more details about <reference id="code-generation" title="code generation"/> for procedures and packages see the manual's section about <reference id="codegen-procedures" title="procedures and code generation"/>.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="oracle-member-procedures">
    -								<title>Oracle member procedures</title>
    -								<content><html>
    -									<p>
    -										Oracle UDTs can have object-oriented structures including member functions and procedures. With Oracle, you can do things like this:
    -									</p>
    -									
    -</html><sql><![CDATA[CREATE OR REPLACE TYPE u_author_type AS OBJECT (
    -  id NUMBER(7),
    -  first_name VARCHAR2(50),
    -  last_name VARCHAR2(50),
    -
    -  MEMBER PROCEDURE LOAD,
    -  MEMBER FUNCTION counBOOKs RETURN NUMBER
    -)
    -
    --- The type body is omitted for the example]]></sql><html>
    -
    -									<p>
    -										These member functions and procedures can simply be mapped to Java methods:
    -									</p>
    -
    -</html><java><![CDATA[// Create an empty, attached UDT record from the Factory
    -UAuthorType author = create.newRecord(U_AUTHOR_TYPE);
    -
    -// Set the author ID and load the record using the LOAD procedure
    -author.setId(1);
    -author.load();
    -
    -// The record is now updated with the LOAD implementation's content
    -assertNotNull(author.getFirstName());
    -assertNotNull(author.getLastName());]]></java><html>
    -
    -									<p>
    -										For more details about <reference id="code-generation" title="code generation"/> for UDTs see the manual's section about <reference id="codegen-udts" title="user-defined types and code generation"/>.
    -									</p>								
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -				    <section id="exporting">
    -						<title>Exporting to XML, CSV, JSON, HTML, Text</title>
    -						<content><html>
    -							<p>
    -								If you are using jOOQ for scripting purposes or in a slim, unlayered application server, you might be interested in using jOOQ's exporting functionality (see also the <reference id="importing" title="importing functionality"/>). You can export any Result&lt;Record&gt; into the formats discussed in the subsequent chapters of the manual
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="exporting-xml">
    -								<title>Exporting XML</title>
    -								<content><java>// Fetch books and format them as XML
    -String xml = create.selectFrom(BOOK).fetch().formatXML();</java><html>
    -
    -									<p>
    -										The above query will result in an XML document looking like the following one:
    -									</p>
    -
    -</html><xml><![CDATA[<result xmlns="http://www.jooq.org/xsd/jooq-export-2.6.0.xsd">
    -  <fields>
    -    <field name="ID" type="INTEGER"/>
    -    <field name="AUTHOR_ID" type="INTEGER"/>
    -    <field name="TITLE" type="VARCHAR"/>
    -  </fields>
    -  <records>
    -    <record>
    -      <value field="ID">1</value>
    -      <value field="AUTHOR_ID">1</value>
    -      <value field="TITLE">1984</value>
    -    </record>
    -    <record>
    -      <value field="ID">2</value>
    -      <value field="AUTHOR_ID">1</value>
    -      <value field="TITLE">Animal Farm</value>
    -    </record>
    -  </records>
    -</result>]]></xml><html>
    -
    -									<p>
    -										The same result as an <reference class="org.w3c.dom.Document"/> can be obtained using the Result.intoXML() method:
    -									</p>
    -
    -
    -</html><java>// Fetch books and format them as XML
    -Document xml = create.selectFrom(BOOK).fetch().intoXML();</java><html>
    -
    -									<p>
    -										See the XSD schema definition here, for a formal definition of the XML export format:<br/>
    -										<a href="http://www.jooq.org/xsd/jooq-export-1.6.2.xsd">http://www.jooq.org/xsd/jooq-export-1.6.2.xsd</a>
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="exporting-csv">
    -								<title>Exporting CSV</title>
    -								<content><java>// Fetch books and format them as CSV
    -String csv = create.selectFrom(BOOK).fetch().formatCSV();</java><html>
    -
    -									<p>
    -										The above query will result in a CSV document looking like the following one:
    -									</p>
    -
    -</html><text>ID,AUTHOR_ID,TITLE
    -1,1,1984
    -2,1,Animal Farm</text><html>
    -
    -									<p>
    -										In addition to the standard behaviour, you can also specify a separator character, as well as a special string to represent NULL values (which cannot be represented in standard CSV):
    -									</p>
    -
    -</html><java>// Use ";" as the separator character
    -String csv = create.selectFrom(BOOK).fetch().formatCSV(';');
    -
    -// Specify "{null}" as a representation for NULL values
    -String csv = create.selectFrom(BOOK).fetch().formatCSV(';', "{null}");</java></content>
    -							</section>
    -
    -							<section id="exporting-json">
    -								<title>Exporting JSON</title>
    -								<content><java>// Fetch books and format them as JSON
    -String json = create.selectFrom(BOOK).fetch().formatJSON();</java><html>
    -
    -									<p>
    -										The above query will result in a JSON document looking like the following one:
    -									</p>
    -
    -</html><text>{"fields":[{"name":"field-1","type":"type-1"},
    -           {"name":"field-2","type":"type-2"},
    -           ...,
    -           {"name":"field-n","type":"type-n"}],
    - "records":[[value-1-1,value-1-2,...,value-1-n],
    -            [value-2-1,value-2-2,...,value-2-n]]}</text><html>
    -             
    -             						<p>
    -             							Note: This format has changed in jOOQ 2.6.0
    -             						</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="exporting-html">
    -								<title>Exporting HTML</title>
    -								<content><java>// Fetch books and format them as HTML
    -String html = create.selectFrom(BOOK).fetch().formatHTML();</java><html>
    -
    -									<p>
    -										The above query will result in an HTML document looking like the following one
    -									</p>
    -
    -</html><xml><![CDATA[<table>
    -  <thead>
    -    <tr>
    -      <th>ID</th>
    -      <th>AUTHOR_ID</th>
    -      <th>TITLE</th>
    -    </tr>
    -  </thead>
    -  <tbody>
    -    <tr>
    -      <td>1</td>
    -      <td>1</td>
    -      <td>1984</td>
    -    </tr>
    -    <tr>
    -      <td>2</td>
    -      <td>1</td>
    -      <td>Animal Farm</td>
    -    </tr>
    -  </tbody>
    -</table>]]></xml></content>
    -							</section>
    -
    -							<section id="exporting-text">
    -								<title>Exporting Text</title>
    -								<content><java>// Fetch books and format them as text
    -String text = create.selectFrom(BOOK).fetch().format();</java><html>
    -
    -									<p>
    -										The above query will result in a text document looking like the following one
    -									</p>
    -
    -</html><text>+---+---------+-----------+
    -| ID|AUTHOR_ID|TITLE      |
    -+---+---------+-----------+
    -|  1|        1|1984       |
    -|  2|        1|Animal Farm|
    -+---+---------+-----------+</text><html>
    -
    -									<p>
    -										A simple text representation can also be obtained by calling toString() on a Result object. See also the manual's section about <reference id="logging" title="DEBUG logging"/>
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -				    <section id="importing">
    -						<title>Importing data</title>
    -						<content><html>
    -							<p>
    -								If you are using jOOQ for scripting purposes or in a slim, unlayered application server, you might be interested in using jOOQ's importing functionality (see also exporting functionality). You can import data directly into a table from the formats described in the subsequent sections of this manual.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="importing-csv">
    -								<title>Importing CSV</title>
    -								<content><html>
    -
    -									<p>
    -										The below CSV data represents two author records that may have been exported previously, by jOOQ's <reference id="exporting" title="exporting functionality"/>, and then modified in Microsoft Excel or any other spreadsheet tool:
    -									</p>
    -
    -</html><text>ID;AUTHOR_ID;TITLE
    -1;1;1984
    -2;1;Animal Farm</text><html>
    -
    -									<p>
    -										With jOOQ, you can load this data using various parameters from the	loader API. A simple load may look like this:
    -									</p>
    -
    -</html><java>Factory create = new Factory(connection, dialect);
    -
    -// Load data into the AUTHOR table from an input stream
    -// holding the CSV data.
    -create.loadInto(AUTHOR)
    -      .loadCSV(inputstream)
    -      .fields(ID, AUTHOR_ID, TITLE)
    -      .execute();</java><html>
    -
    -      								<p>
    -      									Here are various other examples:
    -   									</p>
    -
    -</html><java>// Ignore the AUTHOR_ID column from the CSV file when inserting
    -create.loadInto(AUTHOR)
    -      .loadCSV(inputstream)
    -      .fields(ID, null, TITLE)
    -      .execute();
    -
    -// Specify behaviour for duplicate records.
    -create.loadInto(AUTHOR)
    -
    -      // choose any of these methods
    -      .onDuplicateKeyUpdate()
    -      .onDuplicateKeyIgnore()
    -      .onDuplicateKeyError() // the default
    -
    -      .loadCSV(inputstream)
    -      .fields(ID, null, TITLE)
    -      .execute();
    -
    -// Specify behaviour when errors occur.
    -create.loadInto(AUTHOR)
    -
    -      // choose any of these methods
    -      .onErrorIgnore()
    -      .onErrorAbort() // the default
    -
    -      .loadCSV(inputstream)
    -      .fields(ID, null, TITLE)
    -      .execute();
    -
    -// Specify transactional behaviour where this is possible
    -// (e.g. not in container-managed transactions)
    -create.loadInto(AUTHOR)
    -
    -      // choose any of these methods
    -      .commitEach()
    -      .commitAfter(10)
    -      .commitAll()
    -      .commitNone() // the default
    -
    -      .loadCSV(inputstream)
    -      .fields(ID, null, TITLE)
    -      .execute();</java><html>
    -
    -									<p>
    -										Any of the above configuration methods can be combined to achieve the type of load you need. Please refer to the API's Javadoc to learn about more details. Errors that occur during the load are reported by the execute method's result:
    -									</p>
    -
    -</html><java><![CDATA[Loader<Author> loader = /* .. */ .execute();
    -
    -// The number of processed rows
    -int processed = loader.processed();
    -
    -// The number of stored rows (INSERT or UPDATE)
    -int stored = loader.stored();
    -
    -// The number of ignored rows (due to errors, or duplicate rule)
    -int ignored = loader.ignored();
    -
    -// The errors that may have occurred during loading
    -List<LoaderError> errors = loader.errors();
    -LoaderError error = errors.get(0);
    -
    -// The exception that caused the error
    -DataAccessException exception = error.exception();
    -
    -// The row that caused the error
    -int rowIndex = error.rowIndex();
    -String[] row = error.row();
    -
    -// The query that caused the error
    -Query query = error.query();]]></java></content>
    -							</section>
    -
    -							<section id="importing-xml">
    -								<title>Importing XML</title>
    -								<content><html>
    -									<p>This is not yet supported</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -				    <section id="crud-with-updatablerecords">
    -						<title>CRUD with UpdatableRecords</title>
    -						<content><html>
    -							<p>
    -								Your database application probably consists of 50% - 80% CRUD, whereas only the remaining 20% - 50% of querying is actual querying. Most often, you will operate on records of tables without using any advanced relational concepts. This is called CRUD for
    -							</p>
    -							<ul>
    -								<li>Create (<reference id="insert-statement" title="INSERT"/>)</li>
    -								<li>Read (<reference id="select-statement" title="SELECT"/>)</li>
    -								<li>Update (<reference id="update-statement" title="UPDATE"/>)</li>
    -								<li>Delete (<reference id="delete-statement" title="DELETE"/>)</li>
    -							</ul>
    -							<p>								
    -								CRUD always uses the same patterns, regardless of the nature of underlying tables. This again, leads to a lot of boilerplate code, if you have to issue your statements yourself. Like Hibernate / JPA and other ORMs, jOOQ facilitates CRUD using a specific API involving <reference class="org.jooq.UpdatableRecord"/> types.
    -							</p>
    -							
    -							<h3>Primary keys and updatability</h3>
    -							<p>
    -								In normalised databases, every table has a primary key by which a tuple/record within that table can be uniquely identified. In simple cases, this is a (possibly auto-generated) number called ID. But in many cases, primary keys include several non-numeric columns. An important feature of such keys is the fact that in most databases, they are enforced using an index that allows for very fast random access to the table. A typical way to access / modify / delete a book is this:
    -							</p>
    -							
    -</html><sql><![CDATA[-- Inserting uses a previously generated key value or generates it afresh
    -INSERT INTO BOOK (ID, TITLE) VALUES (5, 'Animal Farm');
    -
    --- Other operations can use a previously generated key value
    -SELECT * FROM BOOK WHERE ID = 5;
    -UPDATE BOOK SET TITLE = '1984' WHERE ID = 5;
    -DELETE FROM BOOK WHERE ID = 5;]]></sql><html>
    -							
    -							<p>
    -								Normalised databases assume that a primary key is unique "forever", i.e. that a key, once inserted into a table, will never be changed or re-inserted after deletion. In order to use jOOQ's <reference id="simple-crud" title="CRUD"/> operations correctly, you should design your database accordingly.
    -							</p>
    -							
    -							<h3>Main UNIQUE keys</h3>
    -							<p>
    -								In SQL, a primary key is always also a unique key. In fact, unique keys have very similar properties as primary keys. For instance, they can be referenced from other tables' foreign keys in most databases. In the absence of a formal primary key, jOOQ assumes that the first unique key it encounters will serve as a primary key substitute. This is called the "main key" in jOOQ. In other words, a main key is:
    -							</p>
    -							<ul>
    -								<li>The primary key, if available</li>
    -								<li>The first unique key, otherwise</li>
    -							</ul>
    -							
    -							<p>
    -								For simplicity, the term "primary key" will be used in the sense of such a "main unique key" in this manual.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="simple-crud">
    -								<title>Simple CRUD</title>
    -								<content><html>
    -									<p>
    -										If you're using jOOQ's <reference id="code-generation" title="code generator"/>, it will generate <reference class="org.jooq.UpdatableRecord"/> implementations for every table that has a primary key. When <reference id="fetching" title="fetching"/> such a record form the database, these records are "attached" to the <reference id="factory" title="Factory" /> that created them. This means that they hold an internal reference to the same database connection that was used to fetch them. This connection is used internally by any of the following methods of the UpdatableRecord:
    -									</p>
    -									
    -</html><java><![CDATA[// Refresh a record from the database.
    -void refresh() throws DataAccessException;
    -
    -// Store (insert or update) a record to the database.
    -int store() throws DataAccessException;
    -
    -// Delete a record from the database
    -int delete() throws DataAccessException;]]></java><html>
    -									
    -									<p>
    -										See the manual's section about <reference id="serializability" title="serializability"/> for some more insight on "attached" objects. 
    -									</p>
    -									
    -									<h3>Storing</h3>
    -									<p>
    -										Storing a record will perform an <reference id="insert-statement" title="INSERT statement"/> or an <reference id="update-statement" title="UPDATE statement"/>. In general, new records are always inserted, whereas records loaded from the database are always updated. This is best visualised in code:
    -									</p>
    -
    -</html><java><![CDATA[// Create a new record
    -BookRecord book1 = create.newRecord(BOOK);
    -
    -// Insert the record: INSERT INTO BOOK (TITLE) VALUES ('1984');
    -book1.setTitle("1984");
    -book1.store();
    -
    -// Update the record: UPDATE BOOK SET PUBLISHED_IN = 1984 WHERE ID = [id]
    -book1.setPublishedIn(1948);
    -book1.store();
    -
    -// Get the (possibly) auto-generated ID from the record
    -Integer id = book1.getId();
    -
    -// Get another instance of the same book
    -BookRecord book2 = create.fetchOne(BOOK, BOOK.ID.equal(id));
    -
    -// Update the record: UPDATE BOOK SET TITLE = 'Animal Farm' WHERE ID = [id]
    -book2.setTitle("Animal Farm");
    -book2.store();]]></java><html>
    -									
    -									<p>
    -										Some remarks about storing:
    -									</p>
    -									<ul>
    -										<li>jOOQ sets only modified values in <reference id="insert-statement" title="INSERT statements"/> or <reference id="update-statement" title="UPDATE statements"/>. This allows for default values to be applied to inserted records, as specified in CREATE TABLE DDL statements.</li>
    -										<li>When store() performs an <reference id="insert-statement" title="INSERT statement"/>, jOOQ attempts to load any generated keys from the database back into the record. For more details, see the manual's section about <reference id="identity-values" title="IDENTITY values"/>.</li>
    -										<li>When loading records from <reference id="pojos" title="POJOs"/>, jOOQ will assume the record is a new record. It will hence attempt to INSERT it.</li>
    -										<li>When you activate <reference id="optimistic-locking" title="optimistic locking"/>, storing a record may fail, if the underlying database record has been changed in the mean time.</li>
    -									</ul>
    -																		
    -									<h3>Deleting</h3>
    -									<p>
    -										Deleting a record will remove it from the database. Here's how you delete records:
    -									</p>
    -									
    -</html><java><![CDATA[// Get a previously inserted book
    -BookRecord book = create.fetchOne(BOOK, BOOK.ID.equal(5));
    -
    -// Delete the book
    -book.delete();]]></java><html>
    -									
    -									<h3>Refreshing</h3>
    -									<p>
    -										Refreshing a record from the database means that jOOQ will issue a <reference id="select-statement" title="SELECT statement"/> to refresh all record values that are not the primary key. This is particularly useful when you use jOOQ's <reference id="optimistic-locking" title="optimistic locking"/> feature, in case a modified record is "stale" and cannot be stored to the database, because the underlying database record has changed in the mean time.
    -									</p>
    -									<p>
    -										In order to perform a refresh, use the following Java code:
    -									</p>									
    -
    -</html><java><![CDATA[// Fetch an updatable record from the database
    -BookRecord book = create.fetchOne(BOOK, BOOK.ID.equal(5));
    -
    -// Refresh the record
    -book.refresh();]]></java><html>
    -
    -									<h3>CRUD and SELECT statements</h3>
    -									<p>
    -										CRUD operations can be combined with regular querying, if you select records from single database tables, as explained in the manual's section about <reference id="select-statement" title="SELECT statements"/>. For this, you will need to use the selectFrom() method from the <reference id="factory" title="Factory"/>:
    -									</p>
    -									
    -</html><java><![CDATA[// Loop over records returned from a SELECT statement
    -for (BookRecord book : create.fetch(BOOK, BOOK.PUBLISHED_IN.equal(1948))) {
    -
    -  // Perform actions on BookRecords depending on some conditions
    -  if ("Orwell".equals(book.fetchAuthorByAuthorId().getLastName())) {
    -    book.delete();
    -  }
    -}]]></java></content>
    -							</section>
    -
    -							<section id="identity-values">
    -								<title>IDENTITY values</title>
    -								<content><html>
    -									<p>
    -										Many databases support the concept of IDENTITY values, or <reference id="sequence-execution" title="SEQUENCE-generated"/> key values. This is reflected by JDBC's <reference class="java.sql.Statement" anchor="#getGeneratedKeys()" title="getGeneratedKeys()"/> method. jOOQ abstracts using this method as many databases and JDBC drivers behave differently with respect to generated keys. Let's assume the following SQL Server BOOK table:
    -									</p>
    -									
    -</html><sql><![CDATA[CREATE TABLE book (
    -  ID INTEGER IDENTITY(1,1) NOT NULL,
    -  
    -  -- [...]
    -  
    -  CONSTRAINT pk_book PRIMARY KEY (id)
    -)]]></sql><html>
    -
    -									<p>
    -										If you're using jOOQ's <reference id="code-generation" title="code generator"/>, the above table will generate a <reference class="org.jooq.UpdatableRecord"/> with an IDENTITY column. This information is used by jOOQ internally, to update IDs after calling <reference id="crud-with-updatablerecords" title="store()"/>: 
    -									</p>
    -									
    -</html><java><![CDATA[BookRecord book = create.newRecord(BOOK);
    -book.setTitle("1984");
    -book.store();
    -
    -// The generated ID value is fetched after the above INSERT statement
    -System.out.println(book.getId());]]></java><html>
    -
    -									<h3>Database compatibility</h3>
    -									<p>
    -										<strong>DB2, Derby, HSQLDB, Ingres</strong>
    -									</p>
    -									<p>
    -										These SQL dialects implement the standard very neatly.
    -									</p>
    -</html><sql><![CDATA[id INTEGER GENERATED BY DEFAULT AS IDENTITY
    -id INTEGER GENERATED BY DEFAULT AS IDENTITY (START WITH 1)]]></sql><html>
    -
    -									<p>
    -										<strong>H2, MySQL, Postgres, SQL Server, Sybase ASE, Sybase SQL Anywhere</strong>
    -									</p>
    -									<p>
    -										These SQL dialects implement identites, but the DDL syntax doesn’t follow the standard
    -									</p>
    -</html><sql><![CDATA[-- H2 mimicks MySQL's and SQL Server's syntax
    -ID INTEGER IDENTITY(1,1)
    -ID INTEGER AUTO_INCREMENT
    --- MySQL and SQLite
    -ID INTEGER NOT NULL AUTO_INCREMENT
    -
    --- Postgres serials implicitly create a sequence
    --- Postgres also allows for selecting from custom sequences
    --- That way, sequences can be shared among tables
    -id SERIAL NOT NULL
    -
    --- SQL Server
    -ID INTEGER IDENTITY(1,1) NOT NULL
    --- Sybase ASE
    -id INTEGER IDENTITY NOT NULL
    --- Sybase SQL Anywhere
    -id INTEGER NOT NULL IDENTITY]]></sql><html>
    -
    -									<p>
    -										<strong>Oracle</strong>
    -									</p>
    -									<p>
    -										Oracle does not know any identity columns at all. Instead, you will have to use a trigger and update the ID column yourself, using a custom sequence. Something along these lines:
    -									</p>
    -</html><sql><![CDATA[CREATE OR REPLACE TRIGGER my_trigger
    -BEFORE INSERT
    -ON my_table
    -REFERENCING NEW AS new
    -FOR EACH ROW
    -BEGIN
    -  SELECT my_sequence.nextval
    -  INTO :new.id
    -  FROM dual;
    -END my_trigger;]]></sql><html>
    -
    -									<p>
    -										Note, that this approach can be employed in most databases supporting sequences and triggers! It is a lot more flexible than standard identities
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="navigation-methods">
    -								<title>Navigation methods</title>
    -								<content><html>
    -									<p>
    -										When using jOOQ's <reference id="code-generation" title="code generator"/> along with its <reference id="codegen-records" title="record generation capabilities"/>, generated records can have navigation methods contained in them, if properly <reference id="codegen-advanced" title="configured"/>. These navigation methods allow for "navigating" inbound or outbound foreign key references by executing an appropriate query. An example is given here: 
    -									</p>
    -				
    -</html><code-pair>
    -<sql><![CDATA[CREATE TABLE book (
    -  AUTHOR_ID NUMBER(7) NOT NULL,
    -  
    -  -- [...]
    -  
    -  FOREIGN KEY (AUTHOR_ID) REFERENCES author(ID)
    -)]]></sql><java><![CDATA[BookRecord book = create.fetch(BOOK, BOOK.ID.equal(5));
    -
    -// Find the author of a book
    -AuthorRecord author = book.fetchAuthor();
    -
    -// Find other books by that author
    -List<BookRecord> books = author.fetchBookList();]]></java>
    -</code-pair><html>					
    -
    -									<p>
    -										These methods are safe for use with several foreign keys referencing the same tables:
    -									</p>
    -				
    -</html><code-pair>
    -<sql><![CDATA[CREATE TABLE book (
    -  AUTHOR_ID NUMBER(7) NOT NULL,
    -  CO_AUTHOR_ID NUMBER(7) NOT NULL,
    -  
    -  -- [...]
    -  
    -  FOREIGN KEY (AUTHOR_ID) REFERENCES author(ID),
    -  FOREIGN KEY (CO_AUTHOR_ID) REFERENCES author(ID)
    -)]]></sql><java><![CDATA[BookRecord book = create.fetch(BOOK, BOOK.ID.equal(5));
    -
    -// Find the author of a book
    -AuthorRecord author   = book.fetchAuthorByAuthorId();
    -AuthorRecord coAuthor = book.fetchAuthorByCoAuthorId();
    -
    -// Find other books by those authors
    -List<BookRecord> books = author.fetchBookListByAuthorId();
    -List<BookRecord> books = coAuthor.fetchBookListByCoAuthorId();]]></java>
    -</code-pair><html>					
    -
    -									<p>
    -										Note that, unlike in Hibernate, jOOQ's generated navigation methods will always lazy-fetch relevant records, without caching any results. In other words, every time you run such a fetch method, a new query will be issued.
    -									</p>
    -									<p>
    -										These fetch methods only work on "attached" records. See the manual's section about <reference id="serializability" title="serializability"/> for some more insight on "attached" objects.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="non-updatable-records">
    -								<title>Non-updatable records</title>
    -								<content><html>
    -									<p>
    -										Tables without UNIQUE keys are considered non-updatable by jOOQ, as jOOQ has no way of uniquely identifying such a record within the database. If you're using jOOQ's <reference id="code-generation" title="code generator"/>, such tables will generate <reference class="org.jooq.TableRecord"/> classes, instead of <reference class="org.jooq.UpdatableRecord"/> classes. When you fetch <reference id="record-vs-tablerecord" title="typed records"/> from such a table, the returned records will not allow for calling any of the <reference id="crud-with-updatablerecords" title="store(), refresh(), delete()"/> methods. 
    -									</p>
    -									
    -									<p>
    -										Note, that some databases use internal rowid or object-id values to identify such records. jOOQ does not support these vendor-specific record meta-data.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="optimistic-locking">
    -								<title>Optimistic locking</title>
    -								<content><html>
    -									<p>
    -										jOOQ allows you to perform <reference id="crud-with-updatablerecords" title="CRUD"/> operations using optimistic locking. You can immediately take advantage of this feature by activating the relevant <reference id="custom-settings" title="executeWithOptimisticLocking Setting"/>. Without any further knowledge of the underlying data semantics, this will have the following impact on store() and delete() methods:
    -									</p>
    -									<ul>
    -										<li>INSERT statements are not affected by this Setting flag</li>
    -										<li>Prior to UPDATE or DELETE statements, jOOQ will run a <reference id="for-update-clause" title="SELECT .. FOR UPDATE"/> statement, pessimistically locking the record for the subsequent UPDATE / DELETE</li>
    -										<li>The data fetched with the previous SELECT will be compared against the data in the record being stored or deleted</li>
    -										<li>An <reference class="org.jooq.exception.DataChangedException"/> is thrown if the record had been modified in the mean time</li>
    -										<li>The record is successfully stored / deleted, if the record had not been modified in the mean time.</li>
    -									</ul>
    -									<p>
    -										The above changes to jOOQ's behaviour are transparent to the API, the only thing you need to do for it to be activated is to set the Settings flag. Here is an example illustrating optimistic locking:
    -									</p>
    -
    -</html><java><![CDATA[// Properly configure the Factory
    -Factory optimistic = new Factory(connection, SQLDialect.ORACLE, 
    -  new Settings().withExecuteWithOptimisticLocking(true));
    -  
    -// Fetch a book two times
    -BookRecord book1 = optimistic.fetch(BOOK, BOOK.ID.equal(5));
    -BookRecord book2 = optimistic.fetch(BOOK, BOOK.ID.equal(5));
    -
    -// Change the title and store this book. The underlying database record has not been modified, it can be safely updated.
    -book1.setTitle("Animal Farm");
    -book1.store();
    -
    -// Book2 still references the original TITLE value, but the database holds a new value from book1.store(). 
    -// This store() will thus fail:
    -book2.setTitle("1984");
    -book2.store();]]></java><html>								
    -	
    -									<h3>Optimised optimistic locking using TIMESTAMP fields</h3>
    -									<p>
    -										If you're using jOOQ's <reference id="code-generation" title="code generator"/>, you can take indicate TIMESTAMP or UPDATE COUNTER fields for every generated table in the <reference id="codegen-advanced" title="code generation configuration"/>. Let's say we have this table:
    -									</p>
    -
    -</html><sql><![CDATA[CREATE TABLE book (
    -  
    -  -- This column indicates when each book record was modified for the last time
    -  MODIFIED TIMESTAMP NOT NULL,
    -  -- [...]
    -)]]></sql><html>									
    -
    -									<p>
    -										The MODIFIED column will contain a timestamp indicating the last modification timestamp for any book in the BOOK table. If you're using jOOQ and it's <reference id="crud-with-updatablerecords" title="store() methods on UpdatableRecords"/>, jOOQ will then generate this TIMESTAMP value for you, automatically. However, instead of running an additional <reference id="for-update-clause" title="SELECT .. FOR UPDATE"/> statement prior to an UPDATE or DELETE statement, jOOQ adds a WHERE-clause to the UPDATE or DELETE statement, checking for TIMESTAMP's integrity. This can be best illustrated with an example:   
    -									</p>
    -									
    -</html><java><![CDATA[// Properly configure the Factory
    -Factory optimistic = new Factory(connection, SQLDialect.ORACLE, 
    -  new Settings().withExecuteWithOptimisticLocking(true));
    -  
    -// Fetch a book two times
    -BookRecord book1 = optimistic.fetch(BOOK, BOOK.ID.equal(5));
    -BookRecord book2 = optimistic.fetch(BOOK, BOOK.ID.equal(5));
    -
    -// Change the title and store this book. The MODIFIED value has not been changed since the book was fetched. 
    -// It can be safely updated
    -book1.setTitle("Animal Farm");
    -book1.store();
    -
    -// Book2 still references the original MODIFIED value, but the database holds a new value from book1.store(). 
    -// This store() will thus fail:
    -book2.setTitle("1984");
    -book2.store();]]></java><html>
    -
    -									<p>
    -										As before, without the added TIMESTAMP column, optimistic locking is transparent to the API.
    -									</p>
    -									
    -									<h3>Optimised optimistic locking using VERSION fields</h3>
    -									<p>
    -										Instead of using TIMESTAMPs, you may also use numeric VERSION fields, containing version numbers that are incremented by jOOQ upon store() calls.
    -									</p>
    -
    -									<p>
    -										Note, for explicit pessimistic locking, please consider the manual's section about the <reference id="for-update-clause" title="FOR UPDATE clause"/>. For more details about how to configure TIMESTAMP or VERSION fields, consider the manual's section about <reference id="codegen-advanced" title="advanced code generator configuration"/>.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="batch-execution-for-crud">
    -								<title>Batch execution</title>
    -								<content><html>
    -									<p>
    -										When inserting, updating, deleting a lot of records, you may wish to profit from JDBC batch operations, which can be performed by jOOQ. These are available through jOOQ's <reference id="factory" title="Factory"/> as shown in the following example:
    -									</p>
    -									
    -</html><java><![CDATA[// Fetch a bunch of books
    -List<BookRecord> books = create.fetch(BOOK);
    -
    -// Modify the above books, and add some new ones:
    -modify(books);
    -addMore(books);
    -
    -// Batch-update and/or insert all of the above books
    -create.batchStore(books);]]></java><html>					
    -
    -									<p>
    -										Internally, jOOQ will render all the required SQL statements and execute them as a regular <reference id="batch-execution" title="JDBC batch execution"/>. 
    -									</p>				
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -				    <section id="daos">
    -						<title>DAOs</title>
    -						<content><html>
    -							<p>
    -								If you're using jOOQ's <reference id="code-generation" title="code generator"/>, you can configure it to generate <reference id="pojos" title="POJOs" /> and DAOs for you. jOOQ then generates one DAO per <reference id="crud-with-updatablerecords" title="UpdatableRecord"/>, i.e. per table with a single-column primary key. Generated DAOs implement a common jOOQ type called <reference class="org.jooq.DAO"/>. This type contains the following methods:
    -							</p>
    -							
    -</html><java><![CDATA[// <R> corresponds to the DAO's related table
    -// <P> corresponds to the DAO's related generated POJO type
    -// <T> corresponds to the DAO's related table's primary key type. 
    -// Note that multi-column primary keys are not yet supported by DAOs
    -public interface DAO<R extends TableRecord<R>, P, T> {
    -
    -    // These methods allow for inserting POJOs
    -    void insert(P object) throws DataAccessException;
    -    void insert(P... objects) throws DataAccessException;
    -    void insert(Collection<P> objects) throws DataAccessException;
    -    
    -    // These methods allow for updating POJOs based on their primary key
    -    void update(P object) throws DataAccessException;
    -    void update(P... objects) throws DataAccessException;
    -    void update(Collection<P> objects) throws DataAccessException;
    -    
    -    // These methods allow for deleting POJOs based on their primary key
    -    void delete(P... objects) throws DataAccessException;
    -    void delete(Collection<P> objects) throws DataAccessException;
    -    void deleteById(T... ids) throws DataAccessException;
    -    void deleteById(Collection<T> ids) throws DataAccessException;
    -    
    -    // These methods allow for checking record existence
    -    boolean exists(P object) throws DataAccessException;
    -    boolean existsById(T id) throws DataAccessException;
    -    long count() throws DataAccessException;
    -    
    -    // These methods allow for retrieving POJOs by primary key or by some other field
    -    List<P> findAll() throws DataAccessException;
    -    P findById(T id) throws DataAccessException;
    -    <Z> List<P> fetch(Field<Z> field, Z... values) throws DataAccessException;
    -    <Z> P fetchOne(Field<Z> field, Z value) throws DataAccessException;
    -
    -    // These methods provide DAO meta-information
    -    Table<R> getTable();
    -    Class<P> getType();
    -}]]></java><html>
    -
    -							<p>
    -								Besides these base methods, generated DAO classes implement various useful fetch methods. An incomplete example is given here, for the BOOK table:
    -							</p>
    -
    -</html><java><![CDATA[// An example generated BookDao class
    -public class BookDao extends DAOImpl<BookRecord, Book, Integer> {
    -
    -    // Columns with primary / unique keys produce fetchOne() methods    
    -    public Book fetchOneById(Integer value) { ... }
    -
    -    // Other columns produce fetch() methods, returning several records
    -    public List<Book> fetchByAuthorId(Integer... values) { ... }
    -    public List<Book> fetchByTitle(String... values) { ... }
    -}]]></java><html>
    -							<p>
    -								Note that you can further subtype those pre-generated DAO classes, to add more useful DAO methods to them. Using such a DAO is simple:
    -							</p>
    -							
    -</html><java><![CDATA[// Initialise a Factory
    -Factory create = new Factory(connection, SQLDialect.ORACLE);
    -
    -// Initialise the DAO with the Factory
    -BookDao bookDao = new BookDao(create);
    -
    -// Start using the DAO
    -Book book = bookDao.findById(5);
    -
    -// Modify and update the POJO
    -book.setTitle("1984");
    -book.setPublishedIn(1948);
    -bookDao.update(book);
    -
    -// Delete it again
    -bookDao.delete(book);]]></java></content>
    -					</section>
    -
    -				    <section id="exception-handling">
    -						<title>Exception handling</title>
    -						<content><html>
    -							<h3>Checked vs. unchecked exceptions</h3>
    -							<p>
    -								This is an eternal and religious debate. Pros and cons have been discussed time and again, and it still is a matter of taste, today. In this case, jOOQ clearly takes a side. jOOQ's exception strategy is simple:
    -							</p>
    -							<ul>
    -								<li>All "system exceptions" are unchecked. If in the middle of a transaction involving business logic, there is no way that you can recover sensibly from a lost database connection, or a constraint violation that indicates a bug in your understanding of your database model.</li>
    -								<li>All "business exceptions" are checked. Business exceptions are true exceptions that you should handle (e.g. not enough funds to complete a transaction).</li>
    -							</ul>
    -							<p>
    -								With jOOQ, it's simple. All of jOOQ's exceptions are "system exceptions", hence they are all unchecked.
    -							</p>
    -							
    -							<h3>jOOQ's DataAccessException</h3>
    -							<p>
    -								jOOQ uses its own <reference class="org.jooq.exception.DataAccessException"/> to wrap any underlying <reference class="java.sql.SQLException"/> that might have occurred. Note that all methods in jOOQ that may cause such a DataAccessException document this both in the Javadoc as well as in their method signature.
    -							</p>
    -							<p>
    -								DataAccessException is subtyped several times as follows:
    -							</p>
    -							<ul>
    -								<li><strong>DataAccessException</strong>: General exception usually originating from a <reference class="java.sql.SQLException"/></li>
    -								<li><strong>DataChangedException</strong>: An exception indicating that the database's underlying record has been changed in the mean time (see <reference id="optimistic-locking" title="optimistic locking"/>)</li>
    -								<li><strong>DataTypeException</strong>: Something went wrong during type conversion</li>
    -								<li><strong>DetachedException</strong>: A SQL statement was executed on a "detached" <reference id="crud-with-updatablerecords" title="UpdatableRecord"/> or a "detached" <reference id="sql-statements" title="SQL statement"/>.</li>
    -								<li><strong>InvalidResultException</strong>: An operation was performed expecting only one result, but several results were returned.</li>
    -								<li><strong>MappingException</strong>: Something went wrong when loading a record from a <reference id="pojos" title="POJO"/> or when mapping a record into a POJO</li>
    -							</ul>
    -							
    -							<h3>Override jOOQ's exception handling</h3>
    -							<p>
    -								The following section about <reference id="execute-listeners" title="execute listeners"/> documents means of overriding jOOQ's exception handling, if you wish to deal separately with some types of constraint violations, or if you raise business errors from your database, etc.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="execute-listeners">
    -						<title>ExecuteListeners</title>
    -						<content><html>
    -							<p>
    -								The <reference id="custom-settings" title="jOOQ Factory Settings"/> let you specify a list of <reference class="org.jooq.ExecuteListener"/> classes. The ExecuteListener is essentially an event listener for Query, Routine, or ResultSet render, prepare, bind, execute, fetch steps. It is a base type for loggers, debuggers, profilers, data collectors, triggers, etc. Advanced ExecuteListeners can also provide custom implementations of Connection, PreparedStatement and ResultSet to jOOQ in apropriate methods.
    -							</p>
    -							<p>
    -								For convenience and better backwards-compatibility, consider extending <reference class="org.jooq.impl.DefaultExecuteListener"/> instead of implementing this interface.
    -							</p>
    -							<p>
    -								Here is a sample implementation of an ExecuteListener, that is simply counting the number of queries per type that are being executed using jOOQ:
    -							</p>
    -
    -</html><java><![CDATA[package com.example;
    -
    -// Extending DefaultExecuteListener, which provides empty implementations for all methods...
    -public class StatisticsListener extends DefaultExecuteListener {
    -    public static Map<ExecuteType, Integer> STATISTICS = new HashMap<ExecuteType, Integer>();
    -
    -    // Count "start" events for every type of query executed by jOOQ
    -    @Override
    -    public void start(ExecuteContext ctx) {
    -        synchronized (STATISTICS) {
    -            Integer count = STATISTICS.get(ctx.type());
    -    
    -            if (count == null) {
    -                count = 0;
    -            }
    -    
    -            STATISTICS.put(ctx.type(), count + 1);
    -        }
    -    }
    -}]]></java><html>
    -
    -							<p>
    -								Now, configure jOOQ's runtime to load your listener
    -							</p>
    -
    -</html><xml><![CDATA[<settings>
    -  <executeListeners>
    -    <executeListener>com.example.StatisticsListener</executeListener>
    -  </executeListeners>
    -</settings>]]></xml><html>
    -
    -							<p>
    -								And log results any time with a snippet like this:
    -							</p>
    -
    -</html><java><![CDATA[log.info("STATISTICS");
    -log.info("----------");
    -
    -for (ExecuteType type : ExecuteType.values()) {
    -    log.info(type.name(), StatisticsListener.STATISTICS.get(type) + " executions");
    -}]]></java><html>
    -                            <p>
    -                            	This may result in the following log output:
    -                            </p>
    -
    -</html><config>15:16:52,982  INFO - TEST STATISTICS
    -15:16:52,982  INFO - ---------------
    -15:16:52,983  INFO - READ                     : 919 executions
    -15:16:52,983  INFO - WRITE                    : 117 executions
    -15:16:52,983  INFO - DDL                      : 2 executions
    -15:16:52,983  INFO - BATCH                    : 4 executions
    -15:16:52,983  INFO - ROUTINE                  : 21 executions
    -15:16:52,983  INFO - OTHER                    : 30 executions</config><html>
    -
    -							<p>
    -								Please read the <reference class="org.jooq.ExecuteListener" title="ExecuteListener Javadoc"/> for more details
    -							</p>
    -							
    -							<h3>Writing a custom ExecuteListener for logging</h3>
    -							<p>
    -								The following depicts an example of a custom ExecuteListener, which pretty-prints all queries being executed by jOOQ to stdout:
    -							</p>
    -
    -</html><java><![CDATA[import org.jooq.ExecuteContext;
    -import org.jooq.conf.Settings;
    -import org.jooq.impl.DefaultExecuteListener;
    -import org.jooq.impl.Factory;
    -import org.jooq.tools.StringUtils;
    -
    -public class PrettyPrinter extends DefaultExecuteListener {
    -
    -    /**
    -     * Hook into the query execution lifecycle before executing queries
    -     */
    -    @Override
    -    public void executeStart(ExecuteContext ctx) {
    -
    -        // Create a new factory for logging rendering purposes
    -        // This factory doesn't need a connection, only the SQLDialect...
    -        Factory factory = new Factory(ctx.getDialect(), 
    -        
    -        // ... and the flag for pretty-printing
    -        	new Settings().withRenderFormatted(true));
    -
    -        // If we're executing a query
    -        if (ctx.query() != null) {
    -            System.out.println(factory.renderInlined(ctx.query()));
    -        }
    -        
    -        // If we're executing a routine
    -        else if (ctx.routine() != null) {
    -            System.out.println(factory.renderInlined(ctx.routine()));
    -        }
    -        
    -        // If we're executing anything else (e.g. plain SQL)
    -        else if (!StringUtils.isBlank(ctx.sql())) {
    -            System.out.println(ctx.sql());
    -        }
    -    }
    -}]]></java><html>
    -							<p>
    -								See also the manual's sections about <reference id="logging" title="logging"/> and the <reference id="jooq-console" title="jOOQ Console"/> for more sample implementations of actual ExecuteListeners.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="logging">
    -						<title>Logging</title>
    -						<content><html>
    -							<p>
    -								jOOQ logs all SQL queries and fetched result sets to its internal DEBUG logger, which is implemented as an <reference id="execute-listeners" title="execute listener"/>. By default, execute logging is activated in the <reference id="custom-settings" title="jOOQ Factory Settings"/>. In order to see any DEBUG log output, put either log4j or slf4j on jOOQ's classpath along with their respective configuration. A sample log4j configuration can be seen here:
    -							</p>
    -							
    -</html><xml><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
    -<log4j:configuration>
    -    <appender name="stdout" class="org.apache.log4j.ConsoleAppender">
    -        <layout class="org.apache.log4j.PatternLayout">
    -            <param name="ConversionPattern" value="%m%n" />
    -        </layout>
    -    </appender>
    -
    -    <root>
    -        <priority value="debug" />
    -        <appender-ref ref="stdout" />
    -    </root>
    -</log4j:configuration>]]></xml><html>
    -
    -							<p>
    -								With the above configuration, let's fetch some data with jOOQ
    -							</p>
    -							
    -</html><java><![CDATA[// Using H2, this time
    -create.select(BOOK.ID, BOOK.TITLE).from(BOOK).orderBy(BOOK.ID).limit(1, 2).fetch();]]></java><html>
    -
    -							<p>
    -								The above query may result in the following log output:
    -							</p>
    -
    -</html><text><![CDATA[Executing query          : select "BOOK"."ID", "BOOK"."TITLE" from "BOOK" order by "BOOK"."ID" asc, limit ? offset ?
    --> with bind values      : select "BOOK"."ID", "BOOK"."TITLE" from "BOOK" order by "BOOK"."ID" asc, limit 2 offset 1
    -Query executed           : Total: 1.439ms
    -Fetched result           : +----+------------+
    -                         : |  ID|TITLE       |
    -                         : +----+------------+
    -                         : |   2|Animal Farm |
    -                         : |   3|O Alquimista|
    -                         : +----+------------+
    -Finishing                : Total: 4.814ms, +3.375ms
    -]]></text><html>
    -
    -							<p>
    -								Essentially, jOOQ will log
    -							</p>
    -							<ul>
    -								<li>The SQL statement as rendered to the prepared statement</li>
    -								<li>The SQL statement with inlined bind values (for improved debugging)</li>
    -								<li>The query execution time</li>
    -								<li>The first 5 records of the result. This is formatted using <reference id="exporting-text" title="jOOQ's text export"/></li>
    -								<li>The total execution + fetching time</li>
    -							</ul>
    -
    -							<p>
    -								If you wish to use your own logger (e.g. avoiding printing out sensitive data), you can deactivate jOOQ's logger using <reference id="custom-settings" title="your custom settings"/> and implement your own <reference id="execute-listeners" title="execute listener logger"/>.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="performance-considerations">
    -						<title>Performance considerations</title>
    -						<content><html>
    -							<p>
    -								Many users may have switched from higher-level abstractions such as Hibernate to jOOQ, because of Hibernate's hard-to-manage performance, when it comes to large database schemas and complex second-level caching strategies. jOOQ is not a lightweight database abstraction framework, and it comes with its own overhead. Please be sure to consider the following points:
    -							</p>
    -							<ul>
    -								<li>It takes some time to construct jOOQ queries. If you can reuse the same queries, you might cache them. Beware of thread-safety issues, though, as jOOQ's <reference id="factory" title="Factory"/> is not threadsafe, and queries are "attached" to their creating Factory</li>
    -								<li>It takes some time to render SQL strings. Internally, jOOQ reuses the same <reference class="java.lang.StringBuilder"/> for the complete query, but some rendering elements may take their time. You could, of course, cache SQL generated by jOOQ and prepare your own <reference class="java.sql.PreparedStatement"/> objects</li>
    -								<li>It takes some time to bind values to prepared statements. jOOQ does not keep any open prepared statements, internally. Use a sophisticated connection pool, that will cache prepared statements and inject them into jOOQ through the standard JDBC API</li>
    -								<li>It takes some time to fetch results. By default, jOOQ will always fetch the complete <reference class="java.sql.ResultSet"/> into memory. Use <reference id="lazy-fetching" title="lazy fetching"/> to prevent that, and scroll over an open underlying database cursor</li>
    -							</ul>
    -							
    -							<h3>Optimise wisely</h3>
    -							<p>
    -								Don't be put off by the above paragraphs. You should optimise wisely, i.e. only in places where you really need very high throughput to your database. jOOQ's overhead compared to plain JDBC is typically less than 1ms per query.
    -							</p>
    -						</html></content>
    -					</section>
    -				</sections>
    -			</section>
    -
    -			<section id="code-generation">
    -				<title>Code generation</title>
    -				<content><html>
    -					<p>
    -						While optional, source code generation is one of jOOQ's main assets if you wish to increase developer productivity. jOOQ's code generator takes your database schema and reverse-engineers it into a set of Java classes modelling <reference id="table-expressions" title="tables"/>, <reference id="record-vs-tablerecord" title="records"/>, <reference id="sequence-execution" title="sequences"/>, <reference id="pojos" title="POJOs"/>, <reference id="daos" title="DAOs"/>, <reference id="stored-procedures" title="stored procedures"/>, user-defined types and many more.
    -					</p>
    -					<p>
    -						The essential ideas behind source code generation are these:
    -					</p>
    -					<ul>
    -						<li><strong>Increased IDE support</strong>: Type your Java code directly against your database schema, with all type information available</li>
    -						<li><strong>Type-safety</strong>: When your database schema changes, your generated code will change as well. Removing columns will lead to compilation errors, which you can detect early.</li>
    -					</ul>
    -					<p>
    -						The following chapters will show how to configure the code generator and how to generate various artefacts.
    -					</p>
    -				</html></content>
    -
    -				<sections>
    -				    <section id="codegen-configuration">
    -						<title>Configuration and setup of the generator</title>
    -						<content><html>
    -							<p>
    -								There are three binaries available with jOOQ, to be downloaded from <a href="https://sourceforge.net/projects/jooq/">SourceForge</a> or from Maven central:
    -							</p>
    -							<ul>
    -								<li>
    -									<strong>jooq-{jooq-version}.jar</strong>
    -									<br />
    -									The main library that you will include in your application to run jOOQ
    -								</li>
    -								<li>
    -									<strong>jooq-meta-{jooq-version}.jar</strong>
    -									<br />
    -									The utility that you will include in your build to navigate your database schema for code generation. This can be used as a schema crawler as well.
    -								</li>
    -								<li>
    -									<strong>jooq-codegen-{jooq-version}.jar</strong>
    -									<br />
    -									The utility that you will include in your build to generate your database schema
    -								</li>
    -							</ul>
    -
    -							<h3>Configure jOOQ's code generator</h3>
    -							<p>
    -								You need to tell jOOQ some things about your database connection. Here's an example of how to do it for an Oracle database
    -							</p>
    -							
    -</html><xml><![CDATA[<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    -<configuration>
    -  <!-- Configure the database connection here -->
    -  <jdbc>
    -    <driver>oracle.jdbc.OracleDriver</driver>
    -    <url>jdbc:oracle:thin:@[your jdbc connection parameters]</url>
    -    <user>[your database user]</user>
    -    <password>[your database password]</password>
    -    
    -    <!-- You can also pass user/password and other JDBC properties in the optional properties tag: -->
    -    <properties>
    -      <property><key>user</key><value>[db-user]</value></property>
    -      <property><key>password</key><value>[db-password]</value></property>
    -    </properties>
    -  </jdbc>
    -
    -  <generator>
    -    <database>
    -      <!-- The database dialect from jooq-meta. Available dialects are
    -           named org.util.[database].[database]Database. Known values are:
    -
    -           org.jooq.util.ase.ASEDatabase (to be used with Sybase ASE)
    -           org.jooq.util.cubrid.CUBRIDDatabase
    -           org.jooq.util.db2.DB2Database
    -           org.jooq.util.derby.DerbyDatabase
    -           org.jooq.util.h2.H2Database
    -           org.jooq.util.hsqldb.HSQLDBDatabase
    -           org.jooq.util.ingres.IngresDatabase
    -           org.jooq.util.mysql.MySQLDatabase
    -           org.jooq.util.oracle.OracleDatabase
    -           org.jooq.util.postgres.PostgresDatabase
    -           org.jooq.util.sqlite.SQLiteDatabase
    -           org.jooq.util.sqlserver.SQLServerDatabase
    -           org.jooq.util.sybase.SybaseDatabase (to be used with Sybase SQL Anywhere)
    -
    -           You can also provide your own org.jooq.util.Database implementation
    -           here, if your database is currently not supported or if you wish to
    -           read the database schema from a file, such as a Hibernate .hbm.xml file -->
    -      <name>org.jooq.util.oracle.OracleDatabase</name>
    -
    -      <!-- All elements that are generated from your schema (several Java
    -           regular expressions, separated by comma) Watch out for
    -           case-sensitivity. Depending on your database, this might be
    -           important! You can create case-insensitive regular expressions
    -           using this syntax: (?i:expr)A comma-separated list of regular
    -           expressions -->
    -      <includes>.*</includes>
    -
    -      <!-- All elements that are excluded from your schema (several Java
    -           regular expressions, separated by comma). Excludes match before
    -           includes -->
    -      <excludes></excludes>
    -
    -      <!-- The schema that is used locally as a source for meta information.
    -           This could be your development schema or the production schema, etc
    -           This cannot be combined with the schemata element.
    -
    -           If left empty, jOOQ will generate all available schemata. See the
    -           manual's next section to learn how to generate several schemata -->
    -      <inputSchema>[your database schema / owner / name]</inputSchema>
    -    </database>
    -
    -    <generate>
    -      <!-- Generation flags: See advanced configuration properties -->
    -    </generate>
    -
    -    <target>
    -      <!-- The destination package of your generated classes (within the
    -           destination directory) -->
    -      <packageName>[org.jooq.your.packagename]</packageName>
    -
    -      <!-- The destination directory of your generated classes -->
    -      <directory>[/path/to/your/dir]</directory>
    -    </target>
    -  </generator>
    -</configuration>]]></xml><html>
    -
    -							<p>
    -								There are also lots of advanced configuration parameters, which will be treated in the <reference id="codegen-advanced" title="manual's section about advanced code generation features"/> Note, you can find the official XSD file for a formal specification at:<br/>
    -							    <a href="http://www.jooq.org/xsd/jooq-codegen-2.5.0.xsd" title="The jOOQ-codegen configuration XSD">http://www.jooq.org/xsd/jooq-codegen-2.5.0.xsd</a>
    -						    </p>
    -
    -							<h3>Run jOOQ code generation</h3>
    -							<p>
    -								Code generation works by calling this class with the above property file as argument.
    -							</p>
    -							
    -</html><config>org.jooq.util.GenerationTool /jooq-config.xml</config><html>
    -
    -							<p>
    -								Be sure that these elements are located on the classpath:
    -							</p>
    -							
    -							<ul>
    -								<li>The XML configuration file</li>
    -								<li>jooq-{jooq-version}.jar, jooq-meta-{jooq-version}.jar, jooq-codegen-{jooq-version}.jar</li>
    -								<li>The JDBC driver you configured</li>
    -							</ul>
    -
    -							<h3>A command-line example (For Windows, unix/linux/etc will be similar)</h3>
    -							<ul>
    -								<li>Put the property file, jooq*.jar and the JDBC driver into a directory, e.g. C:\temp\jooq</li>
    -							    <li>Go to C:\temp\jooq</li>
    -							    <li>Run java -cp jooq-{jooq-version}.jar;jooq-meta-{jooq-version}.jar;jooq-codegen-{jooq-version}.jar;[JDBC-driver].jar;. org.jooq.util.GenerationTool /[XML file] </li>
    -							</ul>
    -							<p>
    -								Note that the property file must be passed as a classpath resource
    -							</p>
    -
    -							<h3>Run code generation from Eclipse</h3>
    -							<p>
    -								Of course, you can also run code generation from your IDE. In Eclipse, set up a project like this. Note that this example uses jOOQ's log4j support by adding log4j.xml and log4j.jar to the project classpath:
    -							</p>
    -							<div class="screenshot">
    -							<img class="screenshot" src="&lt;?=$root?&gt;/img/eclipse-example-01.png" alt="Eclipse configuration"/>
    -							</div>
    -
    -							<p>
    -								Once the project is set up correctly with all required artefacts on the classpath, you can configure an Eclipse Run Configuration for org.jooq.util.GenerationTool.
    -							</p>
    -							<div class="screenshot">
    -							<img class="screenshot" src="&lt;?=$root?&gt;/img/eclipse-example-02.png" alt="Eclipse configuration"/>
    -							</div>
    -
    -							<p>
    -								With the XML file as an argument
    -							</p>
    -							<div class="screenshot">
    -							<img class="screenshot" src="&lt;?=$root?&gt;/img/eclipse-example-03.png" alt="Eclipse configuration"/>
    -							</div>
    -
    -							<p>
    -								And the classpath set up correctly
    -							</p>
    -							<div class="screenshot">
    -							<img class="screenshot" src="&lt;?=$root?&gt;/img/eclipse-example-04.png" alt="Eclipse configuration"/>
    -							</div>
    -
    -							<p>
    -								Finally, run the code generation and see your generated artefacts
    -							</p>
    -							<div class="screenshot">
    -							<img class="screenshot" src="&lt;?=$root?&gt;/img/eclipse-example-05.png" alt="Eclipse configuration"/>
    -							</div>
    -
    -							<h3>Run generation with ant</h3>
    -							<p>
    -								You can also use an ant task to generate your classes. As a rule of thumb, remove the dots "." and dashes "-" from the .properties file's property names to get the ant task's arguments:
    -							</p>
    -							
    -</html><xml><![CDATA[<!-- Task definition -->
    -<taskdef name="generate-classes" classname="org.jooq.util.GenerationTask">
    -  <classpath>
    -    <fileset dir="${path.to.jooq.distribution}">
    -      <include name="jooq-{jooq-version}.jar"/>
    -      <include name="jooq-meta-{jooq-version}.jar"/>
    -      <include name="jooq-codegen-{jooq-version}.jar"/>
    -    </fileset>
    -    <fileset dir="${path.to.mysql.driver}">
    -      <include name="${mysql.driver}.jar"/>
    -    </fileset>
    -  </classpath>
    -</taskdef>
    -
    -<!-- Run the code generation task -->
    -<target name="generate-test-classes">
    -  <generate-classes
    -      jdbcurl="jdbc:mysql://localhost/test"
    -      jdbcuser="root"
    -      jdbcpassword=""
    -      generatordatabaseinputschema="test"
    -      generatortargetpackage="org.jooq.test.generatedclasses"
    -      generatortargetdirectory="${basedir}/src"/>
    -</target>]]></xml><html>
    -
    -							<p>
    -								Note that when running code generation with ant's &lt;java/&gt; task, you may have to set fork="true":
    -							</p>
    -
    -</html><xml><![CDATA[<!-- Run the code generation task -->
    -<target name="generate-test-classes">
    -  <java fork="true" classname="org.jooq.util.GenerationTool">
    -    [...]
    -  </java><html>
    -</target>
    -]]></xml><html>
    -
    -							<h3>Integrate generation with Maven</h3>
    -							<p>
    -								Using the official jOOQ-codegen-maven plugin, you can integrate source code generation in your Maven build process:
    -							</p>
    -
    -</html><xml><![CDATA[<plugin>
    -
    -  <!-- Specify the maven code generator plugin -->
    -  <groupId>org.jooq</groupId>
    -  <artifactId>jooq-codegen-maven</artifactId>
    -  <version>{jooq-version}</version>
    -
    -  <!-- The plugin should hook into the generate goal -->
    -  <executions>
    -    <execution>
    -      <goals>
    -        <goal>generate</goal>
    -      </goals>
    -    </execution>
    -  </executions>
    -
    -  <!-- Manage the plugin's dependency. In this example, we'll use a PostgreSQL database -->
    -  <dependencies>
    -    <dependency>
    -      <groupId>postgresql</groupId>
    -      <artifactId>postgresql</artifactId>
    -      <version>8.4-702.jdbc4</version>
    -    </dependency>
    -  </dependencies>
    -
    -  <!-- Specify the plugin configuration.
    -       The configuration format is the same as for the standalone code generator -->
    -  <configuration>
    -
    -    <!-- JDBC connection parameters -->
    -    <jdbc>
    -      <driver>org.postgresql.Driver</driver>
    -      <url>jdbc:postgresql:postgres</url>
    -      <user>postgres</user>
    -      <password>test</password>
    -    </jdbc>
    -
    -    <!-- Generator parameters -->
    -    <generator>
    -      <name>org.jooq.util.DefaultGenerator</name>
    -      <database>
    -        <name>org.jooq.util.postgres.PostgresDatabase</name>
    -        <includes>.*</includes>
    -        <excludes></excludes>
    -        <inputSchema>public</inputSchema>
    -      </database>
    -      <target>
    -        <packageName>org.jooq.util.maven.example</packageName>
    -        <directory>target/generated-sources/jooq</directory>
    -      </target>
    -    </generator>
    -  </configuration>
    -</plugin>
    -]]></xml><html>
    -
    -							<p>
    -								See the full example of a pom.xml including the jOOQ-codegen artefact here:<br/>
    -								<a href="https://github.com/jOOQ/jOOQ/blob/master/jOOQ-codegen-maven-example/pom.xml"
    -								  title="jOOQ-codegen-maven example pom.xml file">https://github.com/jOOQ/jOOQ/blob/master/jOOQ-codegen-maven-example/pom.xml</a>
    -							  </p>
    -
    -                            <h3>Migrate properties files from jOOQ 1.7, early versions of jOOQ 2.0.x:</h3>
    -                            <p>
    -                                Before jOOQ 2.0.4, the code generator was configured using properties files. These files are still supported for source code generation, but their syntax won't be maintained any longer. If you wish to migrate to XML, you can migrate the file using this command on the command line
    -                            </p>
    -
    -</html><config>org.jooq.util.GenerationTool /jooq-config.properties migrate</config><html>
    -
    -							<p>
    -								Using the migrate flag, jOOQ will read the properties file and output a corresponding XML file on system out
    -							</p>
    -
    -							<h3>Use jOOQ generated classes in your application</h3>
    -							<p>
    -								Be sure, both jooq-{jooq-version}.jar and your generated package (see configuration) are located on your classpath. Once this is done, you can execute SQL statements with your generated classes.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-advanced">
    -						<title>Advanced generator configuration</title>
    -						<content><html>
    -							<p>
    -								In the <reference id="codegen-configuration" title="previous section"/> we have seen how jOOQ's source code generator is configured and run within a few steps. In this chapter we'll cover some advanced settings
    -							</p>
    -
    -</html><xml><![CDATA[<!-- These properties can be added directly to the generator element: -->
    -<generator>
    -  <!-- The default code generator. You can override this one, to generate your own code style
    -       Defaults to org.jooq.util.DefaultGenerator -->
    -  <name>org.jooq.util.DefaultGenerator</name>
    -
    -  <!-- The naming strategy used for class and field names.
    -       You may override this with your custom naming strategy. Some examples follow
    -       Defaults to org.jooq.util.DefaultGeneratorStrategy -->
    -  <strategy>
    -    <name>org.jooq.util.DefaultGeneratorStrategy</name>
    -  </strategy>
    -</generator>]]></xml><html>
    -
    -							<p>
    -								The following example shows how you can override the DefaultGeneratorStrategy to render table and column names the way they are defined in the database, rather than switching them to camel case:
    -							</p>
    -
    -</html><java><![CDATA[/**
    - * It is recommended that you extend the DefaultGeneratorStrategy. Most of the
    - * GeneratorStrategy API is already declared final. You only need to override any
    - * of the following methods, for whatever generation behaviour you'd like to achieve
    - *
    - * Beware that most methods also receive a "Mode" object, to tell you whether a
    - * TableDefinition is being rendered as a Table, Record, POJO, etc. Depending on
    - * that information, you can add a suffix only for TableRecords, not for Tables
    - */
    -public class AsInDatabaseStrategy extends DefaultGeneratorStrategy {
    -
    -    /**
    -     * Override this to specifiy what identifiers in Java should look like.
    -     * This will just take the identifier as defined in the database.
    -     */
    -    @Override
    -    public String getJavaIdentifier(Definition definition) {
    -        return definition.getOutputName();
    -    }
    -
    -    /**
    -     * Override these to specify what a setter in Java should look like. Setters
    -     * are used in TableRecords, UDTRecords, and POJOs. This example will name
    -     * setters "set[NAME_IN_DATABASE]"
    -     */
    -    @Override
    -    public String getJavaSetterName(Definition definition, Mode mode) {
    -        return "set" + definition.getOutputName();
    -    }
    -
    -    /**
    -     * Just like setters...
    -     */
    -    @Override
    -    public String getJavaGetterName(Definition definition, Mode mode) {
    -        return "get" + definition.getOutputName();
    -    }
    -
    -    /**
    -     * Override this method to define what a Java method generated from a database
    -     * Definition should look like. This is used mostly for convenience methods
    -     * when calling stored procedures and functions. This example shows how to
    -     * set a prefix to a CamelCase version of your procedure
    -     */
    -    @Override
    -    public String getJavaMethodName(Definition definition, Mode mode) {
    -        return "call" + org.jooq.tools.StringUtils.toCamelCase(definition.getOutputName());
    -    }
    -
    -    /**
    -     * Override this method to define how your Java classes and Java files should
    -     * be named. This example applies no custom setting and uses CamelCase versions
    -     * instead
    -     */
    -    @Override
    -    public String getJavaClassName(Definition definition, Mode mode) {
    -        return super.getJavaClassName(definition, mode);
    -    }
    -
    -    /**
    -     * Override this method to re-define the package names of your generated
    -     * artefacts.
    -     */
    -    @Override
    -    public String getJavaPackageName(Definition definition, Mode mode) {
    -        return super.getJavaPackageName(definition, mode);
    -    }
    -
    -    /**
    -     * Override this method to define how Java members should be named. This is
    -     * used for POJOs and method arguments
    -     */
    -    @Override
    -    public String getJavaMemberName(Definition definition, Mode mode) {
    -        return definition.getOutputName();
    -    }
    -
    -    /**
    -     * Override this method to define the base class for those artefacts that
    -     * allow for custom base classes
    -     */
    -    @Override
    -    public String getJavaClassExtends(Definition definition, Mode mode) {
    -        return Object.class.getName();
    -    }
    -
    -    /**
    -     * Override this method to define the interfaces to be implemented by those
    -     * artefacts that allow for custom interface implementation
    -     */
    -    @Override
    -    public List<String> getJavaClassImplements(Definition definition, Mode mode) {
    -        return Arrays.asList(Serializable.class.getName(), Cloneable.class.getName());
    -    }
    -
    -    /**
    -     * Override this method to define the suffix to apply to routines when
    -     * they are overloaded.
    -     *
    -     * Use this to resolve compile-time conflicts in generated source code, in
    -     * case you make heavy use of procedure overloading
    -     */
    -    @Override
    -    public String getOverloadSuffix(Definition definition, Mode mode, String overloadIndex) {
    -        return "_OverloadIndex_" + overloadIndex;
    -    }
    -}]]></java><html>
    -
    -                            <h3>jooq-meta configuration</h3>
    -							<p>
    -								Within the &lt;generator/&gt; element, there are other configuration elements:
    -							</p>
    -
    -</html><xml><![CDATA[<!-- These properties can be added to the database element: -->
    -<database>
    -
    -  <!-- All table and view columns that are used as "version" fields for
    -       optimistic locking (several Java regular expressions, separated by comma).
    -       See UpdatableRecord.store() and UpdatableRecord.delete() for details -->
    -  <recordVersionFields>REC_VERSION</recordVersionFields/>
    -
    -  <!-- All table and view columns that are used as "timestamp" fields for
    -       optimistic locking (several Java regular expressions, separated by comma).
    -       See UpdatableRecord.store() and UpdatableRecord.delete() for details -->
    -  <recordTimestampFields>REC_TIMESTAMP</recordTimestampFields/>
    -      
    -  <!-- Generate java.sql.Timestamp fields for DATE columns. This is
    -       particularly useful for Oracle databases.
    -       Defaults to false -->
    -  <dateAsTimestamp>false</dateAsTimestamp>
    -
    -  <!-- Generate jOOU data types for your unsigned data types, which are
    -       not natively supported in Java.
    -       Defaults to true -->
    -  <unsignedTypes>true</unsignedTypes>
    -
    -  <!-- The schema that is used in generated source code. This will be the
    -       production schema. Use this to override your local development
    -       schema name for source code generation. If not specified, this
    -       will be the same as the input-schema. -->
    -  <outputSchema>[your database schema / owner / name]</outputSchema>
    -
    -  <!-- A configuration element to configure several input and/or output
    -       schemata for jooq-meta, in case you're using jooq-meta in a multi-
    -       schema environment.
    -       This cannot be combined with the above inputSchema / outputSchema -->
    -  <schemata>
    -    <schema>
    -      <inputSchema>...</inputSchema>
    -      <outputSchema>...</outputSchema>
    -    </schema>
    -    [ <schema>...</schema> ... ]
    -  </schemata>
    -
    -  <!-- A configuration element to configure master data table enum classes -->
    -  <masterDataTables>...</masterDataTables>
    -
    -  <!-- A configuration element to configure custom data types -->
    -  <customTypes>...</customTypes>
    -
    -  <!-- A configuration element to configure type overrides for generated
    -       artefacts (e.g. in combination with customTypes) -->
    -  <forcedTypes>...</forcedTypes>
    -</database>]]></xml><html>
    -
    -							<p>
    -								Check out the some of the manual's "advanced" sections to find out more about the advanced configuration parameters.
    -							</p>
    -							<ul>
    -								<li><reference id="schema-mapping" title="Schema mapping"/></li>
    -								<li><reference id="master-data-types" title="Master data types"/></li>
    -								<li><reference id="custom-data-types" title="Custom types"/></li>
    -							</ul>
    -
    -							<h3>jooq-codegen configuration</h3>
    -                            <p>
    -                            	Also, you can add some optional advanced configuration parameters for the generator:
    -                           	</p>
    -
    -</html><xml><![CDATA[<!-- These properties can be added to the generate element: -->
    -<generate>
    -  <!-- Primary key / foreign key relations should be generated and used.
    -       This is a prerequisite for various advanced features.
    -       Defaults to true -->
    -  <relations>true</relations>
    -
    -  <!-- Generate navigation methods to navigate foreign key relationships
    -       directly from Record classes. This is only relevant if relations
    -       is set to true, too.
    -       Defaults to true -->
    -  <navigationMethods>true</navigationMethods>
    -
    -  <!-- Generate deprecated code for backwards compatibility
    -       Defaults to true -->
    -  <deprecated>true</deprecated>
    -
    -  <!-- Generate instance fields in your tables, as opposed to static
    -       fields. This simplifies aliasing.
    -       Defaults to true -->
    -  <instanceFields>true</instanceFields>
    -
    -  <!-- Generate the javax.annotation.Generated annotation to indicate
    -       jOOQ version used for source code.
    -       Defaults to true -->
    -  <generatedAnnotation>true</generatedAnnotation>
    -
    -  <!-- Generate jOOQ Record classes for type-safe querying. You can
    -       turn this off, if you don't need "active records" for CRUD
    -       Defaults to true -->
    -  <records>true</records>
    -
    -  <!-- Generate POJOs in addition to Record classes for usage of the
    -       ResultQuery.fetchInto(Class) API
    -       Defaults to false -->
    -  <pojos>false</pojos>
    -
    -  <!-- Generate immutable POJOs for usage of the ResultQuery.fetchInto(Class) API
    -       This overrides any value set in <pojos/>
    -       Defaults to false -->
    -  <immutablePojos>false</immutablePojos>
    -
    -  <!-- Generate interfaces that will be implemented by records and/or pojos.
    -       You can also use these interfaces in Record.into(Class<?>) and similar
    -       methods, to let jOOQ return proxy objects for them.
    -       Defaults to false -->
    -  <interfaces>false</interfaces>
    -
    -  <!-- Generate DAOs in addition to POJO classes
    -       Defaults to false -->
    -  <daos>false</daos>
    -
    -  <!-- Annotate POJOs and Records with JPA annotations for increased
    -       compatibility and better integration with JPA/Hibernate, etc
    -       Defaults to false -->
    -  <jpaAnnotations>false</jpaAnnotations>
    -
    -  <!-- Annotate POJOs and Records with JSR-303 validation annotations
    -       Defaults to false -->
    -  <validationAnnotations>false</validationAnnotations>
    -</generate>]]></xml></content>
    -					</section>
    -
    -				    <section id="codegen-globals">
    -						<title>Generated global artefacts</title>
    -						<content><html>
    -							<p>
    -								For increased convenience at the use-site, jOOQ generates "global" artefacts at the code generation root location, referencing tables, routines, sequences, etc. In detail, these global artefacts include the following:
    -							</p>
    -							<ul>
    -								<li><strong>Keys.java</strong>: This file contains all of the required primary key, unique key, foreign key and identity references in the form of static members of type <reference class="org.jooq.Key"/>.</li>
    -								<li><strong>Routines.java</strong>: This file contains all standalone routines (not in packages) in the form of static factory methods for <reference class="org.jooq.Routine"/> types.</li>
    -								<li><strong>Sequences.java</strong>: This file contains all sequence objects in the form of static members of type <reference class="org.jooq.Sequence"/>.</li>
    -								<li><strong>Tables.java</strong>: This file contains all table objects in the form of static member references to the actual singleton <reference class="org.jooq.Table"/> object</li>
    -								<li><strong>UDTs.java</strong>: This file contains all UDT objects in the form of static member references to the actual singleton <reference class="org.jooq.UDT"/> object</li>
    -							</ul>
    -							
    -							<h3>Referencing global artefacts</h3>
    -							<p>
    -								When referencing global artefacts from your client application, you would typically static import them as such:
    -							</p>
    -							
    -</html><java><![CDATA[// Static imports for all global artefacts
    -import static com.example.generated.Routines.*;
    -import static com.example.generated.Sequences.*;
    -import static com.example.generated.Tables.*;
    -
    -// You could then reference your artefacts as follows:
    -create.insertInto(MY_TABLE)
    -      .values(MY_SEQUENCE.nextval(), myFunction())
    -      
    -// as a more concise form of this:
    -create.insertInto(com.example.generated.Tables.MY_TABLE)
    -      .values(com.example.generated.Sequences.MY_SEQUENCE.nextval(), com.example.generated.Routines.myFunction())]]></java></content>
    -					</section>
    -
    -				    <section id="codegen-tables">
    -						<title>Generated tables</title>
    -						<content><html>
    -							<p>
    -								Every table in your database will generate a <reference class="org.jooq.Table"/> implementation that looks like this:
    -							</p>
    -							
    -</html><java><![CDATA[public class Book extends UpdatableTableImpl<BookRecord> {
    -
    -    // The singleton instance
    -    public static final Book BOOK = new Book();
    -
    -    // Generated columns
    -    public final TableField<BookRecord, Integer> ID        = createField("ID",        SQLDataType.INTEGER, this);
    -    public final TableField<BookRecord, Integer> AUTHOR_ID = createField("AUTHOR_ID", SQLDataType.INTEGER, this);
    -    public final TableField<BookRecord, String>  ITLE      = createField("TITLE",     SQLDataType.VARCHAR, this);
    -
    -    // Covariant aliasing method, returning a table of the same type as BOOK
    -    @Override
    -    public Book as(java.lang.String alias) {
    -        return new Book(alias);
    -    }
    -    
    -    // [...]
    -}]]></java><html>
    -
    -							<h3>Flags influencing generated tables</h3>
    -							<p>
    -								These flags from the <reference id="codegen-advanced" title="code generation configuration"/> influence generated tables:
    -							</p>
    -							<ul>
    -								<li><strong>recordVersionFields</strong>: Relevant methods from super classes are overridden to return the VERSION field</li>
    -								<li><strong>recordTimestampFields</strong>: Relevant methods from super classes are overridden to return the TIMESTAMP field</li>
    -								<li><strong>dateAsTimestamp</strong>: This influences all relevant columns</li>
    -								<li><strong>unsignedTypes</strong>: This influences all relevant columns</li>
    -								<li><strong>relations</strong>: Relevant methods from super classes are overridden to provide primary key, unique key, foreign key and identity information</li>
    -								<li><strong>instanceFields</strong>: This flag controls the "static" keyword on table columns, as well as aliasing convenience</li>
    -								<li><strong>records</strong>: The generated record type is referenced from tables allowing for type-safe single-table record fetching</li>
    -							</ul>
    -							
    -							<h3>Flags controlling table generation</h3>
    -							<p>
    -								Table generation cannot be deactivated
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-records">
    -						<title>Generated records</title>
    -						<content><html>
    -							<p>
    -								Every table in your database will generate a <reference class="org.jooq.Table"/> implementation that looks like this:
    -							</p>
    -							
    -</html><java><![CDATA[// JPA annotations can be generated, optionally
    -@Entity
    -@Table(name = "BOOK", schema = "TEST")
    -public class BookRecord extends UpdatableRecordImpl<BookRecord> 
    -
    -// An interface common to records and pojos can be generated, optionally
    -implements IBook {
    -
    -    // Every column generates a setter and a getter
    -    @Override
    -    public void setId(Integer value) {
    -        setValue(BOOK.ID, value);
    -    }
    -    
    -    @Id
    -    @Column(name = "ID", unique = true, nullable = false, precision = 7)
    -    @Override
    -    public Integer getId() {
    -        return getValue(BOOK.ID);
    -    }
    -    
    -    // More setters and getters
    -    public void setAuthorId(Integer value) {...}
    -    public Integer getAuthorId() {...}
    -    
    -    // Convenience methods for foreign key methods
    -    public void setAuthorId(AuthorRecord value) {
    -        if (value == null) {
    -            setValue(BOOK.AUTHOR_ID, null);
    -        }
    -        else {
    -            setValue(BOOK.AUTHOR_ID, value.getValue(AUTHOR.ID));
    -        }
    -    }
    -    
    -    // Navigation methods
    -    public AuthorRecord fetchAuthor() {
    -        return create().selectFrom(AUTHOR).where(AUTHOR.ID.equal(getValue(BOOK.AUTHOR_ID))).fetchOne();
    -    }
    -    
    -    // [...]
    -}]]></java><html>							
    -							
    -							<h3>Flags influencing generated records</h3>
    -							<p>
    -								These flags from the <reference id="codegen-advanced" title="code generation configuration"/> influence generated records:
    -							</p>
    -							<ul>
    -								<li><strong>dateAsTimestamp</strong>: This influences all relevant getters and setters</li>
    -								<li><strong>unsignedTypes</strong>: This influences all relevant getters and setters</li>
    -								<li><strong>relations</strong>: This is needed as a prerequisite for navigation methods</li>
    -								<li><strong>navigationMethods</strong>: This controls whether navigation methods will be generated or not</li>
    -								<li><strong>daos</strong>: Records are a pre-requisite for DAOs. If DAOs are generated, records are generated as well</li>
    -								<li><strong>interfaces</strong>: If interfaces are generated, records will implement them</li>
    -								<li><strong>jpaAnnotations</strong>: JPA annotations are used on generated records</li>
    -							</ul>
    -														
    -							<h3>Flags controlling record generation</h3>
    -							<p>
    -								Record generation can be deactivated using the <strong>records</strong> flag
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-pojos">
    -						<title>Generated POJOs</title>
    -						<content><html>
    -							<p>
    -								Every table in your database will generate a POJO implementation that looks like this:
    -							</p>
    -							
    -</html><java><![CDATA[// JPA annotations can be generated, optionally
    -@javax.persistence.Entity
    -@javax.persistence.Table(name = "BOOK", schema = "TEST")
    -public class Book implements java.io.Serializable
    -
    -// An interface common to records and pojos can be generated, optionally
    -, IBook {
    -
    -    // JSR-303 annotations can be generated, optionally
    -    @NotNull
    -    private Integer id;
    -
    -    @NotNull
    -    private Integer authorId;
    -
    -    @NotNull
    -    @Size(max = 400)
    -    private String title;
    -
    -    // Every column generates a getter and a setter
    -    @Id
    -    @Column(name = "ID", unique = true, nullable = false, precision = 7)
    -    @Override
    -    public Integer getId() {
    -        return this.id;
    -    }
    -
    -    @Override
    -    public void setId(Integer id) {
    -        this.id = id;
    -    }
    -    
    -    // [...]
    -}]]></java><html>							
    -							
    -							<h3>Flags influencing generated POJOs</h3>
    -							<p>
    -								These flags from the <reference id="codegen-advanced" title="code generation configuration"/> influence generated POJOs:
    -							</p>
    -							<ul>
    -								<li><strong>dateAsTimestamp</strong>: This influences all relevant getters and setters</li>
    -								<li><strong>unsignedTypes</strong>: This influences all relevant getters and setters</li>
    -								<li><strong>interfaces</strong>: If interfaces are generated, POJOs will implement them</li>
    -								<li><strong>immutablePojos</strong>: Immutable POJOs have final members and no setters. All members must be passed to the constructor</li>
    -								<li><strong>daos</strong>: POJOs are a pre-requisite for DAOs. If DAOs are generated, POJOs are generated as well</li>
    -								<li><strong>jpaAnnotations</strong>: JPA annotations are used on generated records</li>
    -								<li><strong>validationAnnotations</strong>: JSR-303 validation annotations are used on generated records</li>
    -							</ul>
    -														
    -							<h3>Flags controlling POJO generation</h3>
    -							<p>
    -								POJO generation can be activated using the <strong>pojos</strong> flag
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-interfaces">
    -						<title>Generated Interfaces</title>
    -						<content><html>
    -							<p>
    -								Every table in your database will generate an interface that looks like this:
    -							</p>
    -							
    -</html><java><![CDATA[public interface IBook extends java.io.Serializable {
    -
    -    // Every column generates a getter and a setter
    -    public void setId(Integer value);
    -    public Integer getId();
    -    
    -    // [...]
    -}]]></java><html>    						
    -							
    -							<h3>Flags influencing generated interfaces</h3>
    -							<p>
    -								These flags from the <reference id="codegen-advanced" title="code generation configuration"/> influence generated interfaces:
    -							</p>
    -							<ul>
    -								<li><strong>dateAsTimestamp</strong>: This influences all relevant getters and setters</li>
    -								<li><strong>unsignedTypes</strong>: This influences all relevant getters and setters</li>
    -							</ul>
    -														
    -							<h3>Flags controlling POJO generation</h3>
    -							<p>
    -								POJO generation can be activated using the <strong>interfaces</strong> flag
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-daos">
    -						<title>Generated DAOs</title>
    -						<content><html>
    -							<h3>Generated DAOs</h3>
    -							<p>
    -								Every table in your database will generate a <reference class="org.jooq.DAO"/> implementation that looks like this:
    -							</p>
    -							
    -</html><java><![CDATA[public class BookDao extends DAOImpl<BookRecord, Book, Integer> {
    -
    -    // Generated constructors
    -    public BookDao() {
    -        super(BOOK, Book.class);
    -    }
    -
    -    public BookDao(Factory factory) {
    -        super(BOOK, Book.class, factory);
    -    }
    -
    -    // Every column generates at least one fetch method
    -    public List<Book> fetchById(Integer... values) {
    -        return fetch(BOOK.ID, values);
    -    }
    -
    -    public Book fetchOneById(Integer value) {
    -        return fetchOne(BOOK.ID, value);
    -    }
    -
    -    public List<Book> fetchByAuthorId(Integer... values) {
    -        return fetch(BOOK.AUTHOR_ID, values);
    -    }
    -    
    -    // [...]
    -}]]></java><html>							
    -							
    -							<h3>Flags controlling DAO generation</h3>
    -							<p>
    -								DAO generation can be activated using the <strong>daos</strong> flag
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-sequences">
    -						<title>Generated sequences</title>
    -						<content><html>
    -							<p>
    -								Every sequence in your database will generate a <reference class="org.jooq.Sequence"/> implementation that looks like this:
    -							</p>
    -							
    -</html><java><![CDATA[public final class Sequences {
    -
    -    // Every sequence generates a member
    -    public static final Sequence<Integer> S_AUTHOR_ID = new SequenceImpl<Integer>("S_AUTHOR_ID", TEST, SQLDataType.INTEGER);
    -}]]></java><html>		
    -							
    -							<h3>Flags controlling sequence generation</h3>
    -							<p>
    -								Sequence generation cannot be deactivated
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-procedures">
    -						<title>Generated procedures</title>
    -						<content><html>
    -							<p>
    -								Every procedure or function (routine) in your database will generate a <reference class="org.jooq.Routine"/> implementation that looks like this:
    -							</p>
    -
    -</html><java><![CDATA[public class AuthorExists extends AbstractRoutine<java.lang.Void> {
    -
    -    // All IN, IN OUT, OUT parameters and function return values generate a static member
    -    public static final Parameter<String>     AUTHOR_NAME = createParameter("AUTHOR_NAME", SQLDataType.VARCHAR);
    -    public static final Parameter<BigDecimal> RESULT      = createParameter("RESULT",      SQLDataType.NUMERIC);
    -
    -    // A constructor for a new "empty" procedure call
    -    public AuthorExists() {
    -        super("AUTHOR_EXISTS", TEST);
    -
    -        addInParameter(AUTHOR_NAME);
    -        addOutParameter(RESULT);
    -    }
    -
    -    // Every IN and IN OUT parameter generates a setter
    -    public void setAuthorName(String value) {
    -        setValue(AUTHOR_NAME, value);
    -    }
    -
    -    // Every IN OUT, OUT and RETURN_VALUE generates a getter
    -    public BigDecimal getResult() {
    -        return getValue(RESULT);
    -    }
    -    
    -    // [...]
    -}]]></java><html>
    -
    -							<h3>Package and member procedures or functions</h3>
    -							<p>
    -								Procedures or functions contained in packages or UDTs are generated in a sub-package that corresponds to the package or UDT name.
    -							</p>
    -
    -							<h3>Flags controlling routine generation</h3>
    -							<p>
    -								Routine generation cannot be deactivated
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-udts">
    -						<title>Generated UDTs</title>
    -						<content><html>
    -							<p>
    -								Every UDT in your database will generate a <reference class="org.jooq.UDT"/> implementation that looks like this:
    -							</p>
    -						
    -</html><java><![CDATA[public class AddressType extends UDTImpl<AddressTypeRecord> {
    -
    -    // The singleton UDT instance
    -    public static final UAddressType U_ADDRESS_TYPE = new UAddressType();
    -
    -    // Every UDT attribute generates a static member
    -    public static final UDTField<AddressTypeRecord, String> ZIP     = 
    -      createField("ZIP",     SQLDataType.VARCHAR, U_ADDRESS_TYPE);
    -    public static final UDTField<AddressTypeRecord, String> CITY    = 
    -      createField("CITY",    SQLDataType.VARCHAR, U_ADDRESS_TYPE);
    -    public static final UDTField<AddressTypeRecord, String> COUNTRY = 
    -      createField("COUNTRY", SQLDataType.VARCHAR, U_ADDRESS_TYPE);
    -    
    -    // [...]
    -}]]></java><html>						
    -										
    -							<p>
    -								Besides the <reference class="org.jooq.UDT"/> implementation, a <reference class="org.jooq.UDTRecord"/> implementation is also generated
    -							</p>		
    -
    -</html><java><![CDATA[public class AddressTypeRecord extends UDTRecordImpl<AddressTypeRecord> {
    -
    -    // Every attribute generates a getter and a setter
    -
    -    public void setZip(String value) {...}
    -    public String getZip() {...}
    -    public void setCity(String value) {...}
    -    public String getCity() {...}
    -    public void setCountry(String value) {...}
    -    public String getCountry() {...}
    -    
    -    // [...]
    -}]]></java><html>						
    -
    -							<h3>Flags controlling UDT generation</h3>
    -							<p>
    -								UDT generation cannot be deactivated
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="master-data-types">
    -						<title>Master data and enumeration tables</title>
    -						<content><html>
    -							<p>
    -								<strong>NOTE</strong>: This feature is deprecated in jOOQ 2.5.0 and will be removed as of jOOQ 3.0
    -							</p>
    -							<p>
    -								Only MySQL and Postgres databases support true ENUM types natively. Some other RDBMS allow you to map the concept of an ENUM data type to a CHECK constraint, but those constraints can contain arbitrary SQL. With jOOQ, you can "simulate" ENUM types by declaring a table as a "master data table" in the configuration. At code-generation time, this table will be treated specially, and a Java enum type is generated from its data.
    -							</p>
    -
    -							<h3>Configure master data tables</h3>
    -							<p>
    -								As previously discussed, you can configure master data tables as follows:
    -							</p>
    -							
    -</html><xml><![CDATA[<!-- These properties can be added to the database element: -->
    -<database>
    -  <masterDataTables>
    -    <masterDataTable>
    -      <!-- The name of a master data table -->
    -      <name>[a table name]</name>
    -
    -      <!-- The column used for enum literals -->
    -      <literal>[a column name]</literal>
    -
    -      <!-- The column used for documentation -->
    -      <description>[a column name]</description>
    -    </masterDataTable>
    -
    -    [ <masterDataTable>...</masterDataTable> ... ]
    -  </masterDataTables>
    - </database>]]></xml><html>
    -
    -							<p>
    -								The results of this will be a Java enum that looks similar to this:
    -							</p>
    -							
    -</html><java><![CDATA[public enum Language implements MasterDataType<Integer> {
    -
    -  /**
    -   * English
    -   */
    -  en(1, "en", "English"),
    -
    -  /**
    -   * Deutsch
    -   */
    -  de(2, "de", "Deutsch"),
    -
    -  /**
    -   * Français
    -   */
    -  fr(3, "fr", "Français"),
    -
    -  /**
    -   * null
    -   */
    -  pt(4, "pt", null),
    -  ;
    -
    -  private final Integer id;
    -  private final String cd;
    -  private final String description;
    -
    -  // [ ... constructor and getters for the above properties ]
    -}]]></java><html>
    -
    -							<p>
    -								In the above example, you can see how the configured primary key is mapped to the id member, the configured literal column is mapped to the cd member and the configured description member is mapped to the description member and output as Javadoc. In other words, T_LANGUAGE is a table with 4 rows and at least three columns.
    -							</p>
    -							
    -							<p>
    -								The general contract is that there must be
    -							</p>
    -							<ul>
    -								<li>A single-column primary key column of character or integer type</li>
    -								<li>An optional unique literal column of character or integer type (otherwise, the primary key is used as enum literal) </li>
    -								<li>An optional description column of any type </li>
    -							</ul>
    -
    -							<h3>Using MasterDataTypes</h3>
    -							<p>
    -								The point of MasterDataTypes in jOOQ is that they behave exactly like true ENUM types. When the above T_LANGUAGE table is referenced by T_BOOK, instead of generating foreign key navigation methods and a LANGUAGE_ID Field&lt;Integer&gt;, a Field&lt;TLanguage&gt; is generated:
    -							</p>
    -
    -</html><java><![CDATA[public class Book extends UpdatableTableImpl<BookRecord> {
    -
    -  // [...]
    -  public static final TableField<BookRecord, Language> LANGUAGE_ID =
    -                  new TableFieldImpl<BookRecord, Language>( /* ... */ );
    -}]]></java><html>
    -
    -							<p>
    -								Which can then be used in the BookRecord directly:
    -							</p>
    -							
    -</html><java><![CDATA[public class BookRecord extends UpdatableRecordImpl<BookRecord> {
    -
    -  // [...]
    -  public Language getLanguageId() { // [...]
    -  public void setLanguageId(Language value) { // [...]
    -}]]></java><html>
    -
    -							<h3>When to use MasterDataTypes</h3>
    -							<p>
    -								You can use master data types when you're actually mapping master data to a Java enum. When the underlying table changes frequently, those updates will not be reflected by the statically generated code. Also, be aware that it will be difficult to perform actual JOIN operations on the underlying table with jOOQ, once the master data type is generated.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="custom-data-types">
    -						<title>Custom data types and type conversion</title>
    -						<content><html>
    -							<p>
    -								When using a custom type in jOOQ, you need to let jOOQ know about its associated <reference class="org.jooq.Converter"/>. Ad-hoc usages of such converters has been discussed in the chapter about <reference id="data-type-conversion" title="data type conversion"/>. A more common use-case, however, is to let jOOQ know about custom types at code generation time. Use the following configuration elements to specify, that you'd like to use GregorianCalendar for all database fields that start with DATE_OF_
    -      						</p>
    -
    -</html><xml><![CDATA[<database>
    -  <!-- First, register your custom types here -->
    -  <customTypes>
    -    <customType>
    -      <!-- Specify the fully-qualified class name of your custom type -->
    -      <name>java.util.GregorianCalendar</name>
    -
    -      <!-- Associate that custom type with your converter. Note, a
    -           custom type can only have one converter in jOOQ -->
    -      <converter>com.example.CalendarConverter</converter>
    -    </customType>
    -  </customTypes>
    -
    -  <!-- Then, associate custom types with database columns -->
    -  <forcedTypes>
    -    <forcedType>
    -      <!-- Specify again he fully-qualified class name of your custom type -->
    -      <name>java.util.GregorianCalendar</name>
    -
    -      <!-- Add a list of comma-separated regular expressions matching columns -->
    -      <expressions>.*\.DATE_OF_.*</expressions>
    -    </forcedType>
    -  </forcedTypes>
    -</database>]]></xml><html>
    -
    -                            <p>
    -                            	The above configuration will lead to AUTHOR.DATE_OF_BIRTH being generated like this:
    -                            </p>
    -
    -</html><java><![CDATA[public class TAuthor extends UpdatableTableImpl<TAuthorRecord> {
    -
    -    // [...]
    -    public final TableField<TAuthorRecord, GregorianCalendar> DATE_OF_BIRTH =    // [...]
    -    // [...]
    -
    -}]]></java><html>
    -
    -                            <p>
    -                            	This means that the bound type of &lt;T&gt; will be GregorianCalendar, wherever you reference DATE_OF_BIRTH. jOOQ will use your custom converter when binding variables and when fetching data from <reference class="java.util.ResultSet"/>:
    -                            </p>
    -
    -</html><java><![CDATA[// Get all date of births of authors born after 1980
    -List<GregorianCalendar> result =
    -create.selectFrom(AUTHOR)
    -      .where(AUTHOR.DATE_OF_BIRTH.greaterThan(new GregorianCalendar(1980, 0, 1)))
    -      .fetch(AUTHOR.DATE_OF_BIRTH);]]></java></content>
    -					</section>
    -
    -				    <section id="schema-mapping">
    -						<title>Mapping generated schemata and tables</title>
    -						<content><html>
    -							<p>
    -								We've seen previously in the chapter about <reference id="runtime-schema-mapping" title="runtime schema mapping"/>, that schemata and tables can be mapped at runtime to other names. But you can also hard-wire schema mapping in generated artefacts at code generation time, e.g. when you have 5 developers with their own dedicated developer databases, and a common integration database. In the code generation configuration, you would then write.
    -							</p>
    -
    -</html><xml><![CDATA[<schemata>
    -  <schema>
    -    <!-- Use this as the developer's schema: -->
    -    <inputSchema>LUKAS_DEV_SCHEMA</inputSchema>
    -
    -    <!-- Use this as the integration / production database: -->
    -    <outputSchema>PROD</outputSchema>
    -  </schema>
    -</schemata>]]></xml></content>
    -					</section>
    -				</sections>
    -			</section>
    -
    -			<section id="tools">
    -				<title>Tools</title>
    -				<content><html>
    -					<p>
    -						These chapters hold some information about tools to be used with jOOQ
    -					</p>
    -				</html></content>
    -
    -				<sections>
    -					<section id="jooq-console">
    -						<title>jOOQ Console</title>
    -						<content><html>
    -							<p>
    -							    The <reference id="execute-listeners" title="ExecuteListener API"/> was driven by a feature request by Christopher Deckers, who has had the courtesy to contribute the jOOQ Console, a sample application interfacing with jOOQ's ExecuteListeners. The jOOQ Console logs all queries executed by jOOQ and displays them nicely in a Swing application. With the jOOQ Console's logger, you can:
    -						    </p>
    -						    <ul>
    -						    	<li>Activate the console's DebugListener anytime (in-process or if the remote server is active).</li>
    -						    	<li>View simple and batch queries and their parameters.</li>
    -						    	<li>Reformat queries along with syntax highlighting for better readability.</li>
    -						    	<li>View stack trace of originator of the call.</li>
    -						    	<li>Dump the stack to stdout when in an IDE, to directly navigate to relevant classes.</li>
    -						    	<li>Track execution time, binding time, parsing time, rows read, fields read.</li>
    -						    	<li>Show/hide queries depending on their type (SELECT, UPDATE, etc.).</li>
    -						    	<li>Sort any column (timing columns, queries, types, etc.)</li>
    -						    	<li>Easy copy paste of rows/columns to Spreadsheet editors.</li>
    -						    </ul>
    -
    -						    <p>
    -						    	A short overview of such a debugging session can be seen here:
    -						    </p>
    -   							<div class="screenshot">
    -								<img class="screenshot" src="&lt;?=$root?&gt;/img/jooq-console-01.png" alt="jOOQ Console example"/>
    -							</div>
    -						    <p>
    -							    Please note that the jOOQ Console is still experimental. Any feedback is very welcome on <br/>
    -							    <a href="http://groups.google.com/group/jooq-user" title="the jooq-user group">the jooq-user group</a>
    -							</p>
    -
    -							<h3>jOOQ Console operation modes</h3>
    -							<p>
    -								The jOOQ Console can be run in two different modes:
    -							</p>
    -							<ul>
    -								<li>In-process mode: running in the same process as the queries you're analysing</li>
    -								<li>"headless" mode: running remotely</li>
    -							</ul>
    -
    -							<p>
    -								Both modes will require that you set the <reference class="org.jooq.debug.impl.DebugListener"/> in the Factory's settings. When using XML settings:
    -							</p>
    -
    -</html><xml><![CDATA[<settings>
    -  <executeListeners>
    -    <executeListener>org.jooq.debug.impl.DebugListener</executeListener>
    -  </executeListeners>
    -</settings>]]></xml><html>
    -
    -							<p>
    -								Or when using programmatic settings:
    -							</p>
    -							
    -</html><java><![CDATA[Settings settings = new Settings()
    -    .getExecuteListeners().add("org.jooq.debug.impl.DebugListener");
    -Factory factory = new Factory(connection, dialect, settings);]]></java><html>
    -
    -							<h3>In-process mode</h3>
    -							<p>
    -								The in-process mode is useful for Swing applications or other, locally run Java programs accessing the database via jOOQ. In order to launch the jOOQ Console "in-process", specify the previously documented settings and launch the Console as follows:
    -							</p>
    -
    -</html><java><![CDATA[// Define a DatabaseDescriptor for the "in-process" mode
    -// It is needed for the "Editor" tab
    -DatabaseDescriptor descriptor = new DatabaseDescriptor() {
    -
    -    // Return your generated schema. This is used by the console
    -    // to introspect your schema data
    -    @Override
    -    public Schema getSchema() {
    -        return com.example.MySchema.MY_SCHEMA;
    -    }
    -
    -    // Return the SQL dialect that you're using
    -    @Override
    -    public SQLDialect getSQLDialect() {
    -        return SQLDialect.ORACLE;
    -    }
    -
    -    // Return a connection
    -    @Override
    -    public Connection createConnection() {
    -        try {
    -            return DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "test", "test");
    -        }
    -        catch (Exception ignore) {}
    -    }
    -};
    -
    -// Now pass this database descriptor to the Console and make it visible
    -try {
    -
    -    // Use this for a nicer look-and-feel
    -    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    -
    -    // Create a new Console
    -    Console console = new Console(descriptor, true);
    -    console.setLoggingActive(true);
    -    console.setVisible(true);
    -}
    -catch (Exception ignore) {}
    -]]></java><html>
    -
    -							<p>
    -								Only in the in-process mode, you can execute ad-hoc queries directly from the console, if you provide it with proper DatabaseDescriptor. These queries are executed from the Editor pane which features:
    -							</p>
    -							<ul>
    -								<li>SQL editing within the console.</li>
    -								<li>Incremental search on tables.</li>
    -								<li>Simple code completion with tables/columns/SQL keywords.</li>
    -								<li>Syntax highlighting and formatting capabilities.</li>
    -								<li>Results shown in one or several tabs.</li>
    -								<li>Easy analysis of Logger output by copy/pasting/running queries in the Editor.</li>
    -							</ul>
    -   							<div class="screenshot">
    -								<img class="screenshot" src="&lt;?=$root?&gt;/img/jooq-console-02.png" alt="jOOQ Console example"/>
    -							</div>
    -
    -                            <h3>"Headless" mode</h3>
    -							<p>
    -								In J2EE or other server/client environments, you may not be able to run the console in the same process as your application. You can then run the jOOQ Console in "headless" mode. In addition to the previously documented settings, you'll have to start a debugger server in your application process, that the console can connect to:
    -							</p>
    -
    -</html><java>// Create a new RemoteDebuggerServer in your application that listens to
    -// incoming connections on a given port
    -SERVER = new RemoteDebuggerServer(DEBUGGER_PORT);</java><html>
    -
    -							<p>
    -								Now start your application along with the debugger server and launch the console with this command:
    -							</p>
    -
    -</html><config>java -jar jooq-console-2.1.0.jar [host] [port]</config><html>
    -
    -							<p>
    -								Depending on your distribution, you may have to manually add rsyntaxtextarea-1.5.0.jar and jOOQ artefacts on your classpath.
    -							</p>
    -						</html></content>
    -					</section>
    -				</sections>
    -			</section>
    -
    -			<section id="reference">
    -				<title>Reference</title>
    -				<content><html>
    -					<p>
    -						These chapters hold some general jOOQ reference information
    -					</p>
    -				</html></content>
    -
    -				<sections>
    -					<section id="supported-rdbms">
    -						<title>Supported RDBMS</title>
    -						<content><html>
    -							<h3>A list of supported databases</h3>
    -							<p>
    -						   		Every RDMBS out there has its own little specialties. jOOQ considers those specialties as much as possible, while trying to standardise the behaviour in jOOQ. In order to increase the quality of jOOQ, some 70 unit tests are run for syntax and variable binding verification, as well as some 180 integration tests with an overall of around 1200 queries for any of these databases:
    -					   		</p>
    -							<ul>
    -							    <li>CUBRID 8.4.1</li>
    -							    <li>DB2 9.7</li>
    -							    <li>Derby 10.8</li>
    -							    <li>Firebird 2.5.1</li>
    -							    <li>H2 1.3.161</li>
    -							    <li>HSQLDB 2.2.5</li>
    -							    <li>Ingres 10.1.0</li>
    -							    <li>MySQL 5.1.41 and 5.5.8</li>
    -							    <li>Oracle XE 10.2.0.1.0 and 11g</li>
    -							    <li>PostgreSQL 9.0</li>
    -							    <li>SQLite with inofficial JDBC driver v056</li>
    -							    <li>SQL Server 2008 R8</li>
    -							    <li>Sybase Adaptive Server Enterprise 15.5</li>
    -							    <li>Sybase SQL Anywhere 12</li>
    -							</ul>
    -							<p>
    -								These platforms have been observed to work as well, but are not integration-tested
    -							</p>
    -							<ul>
    -								<li>Google Cloud SQL (MySQL)</li>
    -							</ul>
    -								
    -							<h3>Databases planned for support</h3>
    -							<p>
    -								Any of the following databases might be available in the future
    -							</p>
    -						    <ul>
    -							    <li>Informix</li>
    -							    <li>Interbase</li>
    -							    <li>MS Access</li>
    -							    <li>MS Excel</li>
    -							    <li>SQL Azure</li>
    -							    <li>Sybase SQL Anywhere OnDemand</li>
    -							    <li>Teradata</li>
    -						    </ul>
    -						    
    -							<h3>Databases being watched</h3>
    -							<p>
    -								Any of the following databases are being observed for a potential integration
    -							</p>
    -							<ul>
    -								<li>Mondrian</li>
    -								<li>Netezza</li>
    -								<li>SQLFire</li>
    -								<li>Vectorwise</li>
    -								<li>Vertica</li>
    -								<li>VoltDB</li>
    -							</ul>
    -
    -							<h3>Feature matrix</h3>
    -							<p>
    -								This section will soon contain a feature matrix, documenting what feature is available for which database.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -					<section id="reference-data-types">
    -						<title>Data types</title>
    -						<content><html>
    -							<p>
    -								There is always a small mismatch between SQL data types and Java data types. This is for two reasons:
    -							</p>
    -							<ul>
    -								<li>SQL data types are insufficiently covered by the JDBC API.</li>
    -								<li>Java data types are often less expressive than SQL data types</li>
    -							</ul>
    -							<p>
    -								This chapter should document the most important notes about SQL, JDBC and jOOQ data types.
    -							</p>
    -						</html></content>
    -						
    -						<sections>
    -							<section id="data-types-lobs">
    -								<title>BLOBs and CLOBs</title>
    -								<content><html>
    -									<p>
    -										jOOQ currently doesn't explicitly support JDBC BLOB and CLOB data types. If you use any of these data types in your database, jOOQ will map them to byte[] and String instead. In simple cases (small data), this simplification is sufficient. In more sophisticated cases, you may have to bypass jOOQ, in order to deal with these data types and their respective resources. True support for LOBs is on the roadmap, though.
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -							<section id="data-types-unsigned">
    -								<title>Unsigned integer types</title>
    -								<content><html>
    -									<p>
    -										Some databases explicitly support unsigned integer data types. In most normal JDBC-based applications, they would just be mapped to their signed counterparts letting bit-wise shifting and tweaking to the user. jOOQ ships with a set of unsigned <reference class="java.lang.Number"/> implementations modelling the following types:
    -									</p>
    -									<ul>
    -										<li><reference class="org.jooq.tools.unsigned.UByte"/>: Unsigned byte, an 8-bit unsigned integer</li>
    -										<li><reference class="org.jooq.tools.unsigned.UShort"/>: Unsigned short, a 16-bit unsigned integer</li>
    -										<li><reference class="org.jooq.tools.unsigned.UInteger"/>: Unsigned int, a 32-bit unsigned integer</li>
    -										<li><reference class="org.jooq.tools.unsigned.ULong"/>: Unsigned long, a 64-bit unsigned integer</li>
    -									</ul>
    -									<p>
    -										Each of these wrapper types extends <reference class="java.lang.Number"/>, wrapping a higher-level integer type, internally:
    -									</p>
    -									<ul>
    -										<li>UByte wraps <reference class="java.lang.Short"/></li>
    -										<li>UShort wraps <reference class="java.lang.Integer"/></li>
    -										<li>UInteger wraps <reference class="java.lang.Long"/></li>
    -										<li>ULong wraps <reference class="java.math.BigInteger"/></li>
    -									</ul>
    -								</html></content>
    -							</section>
    -							
    -							<section id="data-types-intervals">
    -								<title>INTERVAL data types</title>
    -								<content><html>
    -									<p>
    -										jOOQ fills a gap opened by JDBC, which neglects an important SQL data type as defined by the SQL standards: INTERVAL types. SQL knows two different types of intervals:
    -									</p>
    -									<ul>
    -										<li><strong>YEAR TO MONTH</strong>: This interval type models a number of months and years</li>
    -										<li><strong>DAY TO SECOND</strong>: This interval type models a number of days, hours, minutes, seconds and milliseconds</li>
    -									</ul>
    -									
    -									<p>
    -										Both interval types ship with a variant of subtypes, such as DAY TO HOUR, HOUR TO SECOND, etc. jOOQ models these types as Java objects extending <reference class="java.lang.Number"/>: <reference class="org.jooq.types.YearToMonth"/> (where Number.intValue() corresponds to the absolute number of months) and <reference class="org.jooq.types.DayToSecond"/> (where Number.intValue() corresponds to the absolute number of milliseconds)
    -									</p>
    -									
    -									<h3>Interval arithmetic</h3>
    -									<p>
    -										In addition to the <reference id="arithmetic-expressions" title="arithmetic expressions"/> documented previously, interval arithmetic is also supported by jOOQ. Essentially, the following operations are supported:
    -									</p>
    -									<ul>
    -										<li>DATETIME - DATETIME => INTERVAL</li>
    -										<li>DATETIME + or - INTERVAL => DATETIME</li>
    -										<li>INTERVAL + DATETIME => DATETIME</li>
    -										<li>INTERVAL + - INTERVAL => INTERVAL</li>
    -										<li>INTERVAL * or / NUMERIC => INTERVAL</li>
    -										<li>NUMERIC * INTERVAL => INTERVAL</li>
    -									</ul>
    -								</html></content>
    -							</section>
    -							
    -							<section id="data-types-xml">
    -								<title>XML data types</title>
    -								<content><html>
    -									<p>
    -										XML data types are currently not supported
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -							<section id="data-types-geospacial">
    -								<title>Geospacial data types</title>
    -								<content><html>
    -									<h3>Geospacial data types</h3>
    -									<p>
    -										Geospacial data types are currently not supported
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -							<section id="data-types-cursors">
    -								<title>CURSOR data types</title>
    -								<content><html>
    -									<p>
    -										Some databases support cursors returned from stored procedures. They are mapped to the following jOOQ data type:
    -									</p>
    -
    -</html><java><![CDATA[Field<Result<Record>> cursor;]]></java><html>
    -									
    -									<p>
    -										In fact, such a cursor will be fetched immediately by jOOQ and wrapped in an <reference class="org.jooq.Result"/> object.
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -							<section id="data-types-arrays">
    -								<title>ARRAY and TABLE data types</title>
    -								<content><html>
    -									<p>
    -										The SQL standard specifies ARRAY data types, that can be mapped to Java arrays as such:
    -									</p>
    -									
    -</html><java><![CDATA[Field<Integer[]> intArray;]]></java><html>
    -										
    -									<p>
    -										The above array type is supported by these SQL dialects:
    -									</p>
    -									<ul>
    -										<li>H2</li>
    -										<li>HSQLDB</li>
    -										<li>Postgres</li>
    -									</ul>
    -									
    -									<h3>Oracle typed arrays</h3>
    -									<p>
    -										Oracle has strongly-typed arrays and table types (as opposed to the previously seen anonymously typed arrays). These arrays are wrapped by <reference class="org.jooq.ArrayRecord"/> types.
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="reference-bnf-notation">
    -						<title>jOOQ's BNF pseudo-notation</title>
    -						<content><html>
    -							<p>
    -								This chapter will soon contain an overview over jOOQ's API using a pseudo BNF notation.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -					<section id="reference-credits">
    -						<title>Credits</title>
    -						<content><html>
    -							<p>
    -								jOOQ lives in a very challenging ecosystem. The Java to SQL interface is still one of the most important system interfaces. Yet there are still a lot of open questions, best practices and no "true" standard has been established. This situation gave way to a lot of tools, APIs, utilities which essentially tackle the same problem domain as jOOQ. jOOQ has gotten great inspiration from pre-existing tools and this section should give them some credit. Here is a list of inspirational tools in alphabetical order:
    -							</p>
    -							<ul>
    -								<li><a href="http://avaje.org">Avajé EBean</a>: Play! Framework's preferred ORM has a feature called asynchronous query execution. This idea made it into jOOQ as <reference class="org.jooq.ResultQuery" anchor="#fetchLater()"/></li>
    -								<li><a href="http://www.hibernate.org">Hibernate</a>: The de-facto standard (JPA) with its useful table-to-POJO mapping features have influenced jOOQ's <reference class="org.jooq.ResultQuery" anchor="#fetchInto(java.lang.Class)"/> facilities</li>
    -								<li><a href="http://www.h2database.com/html/jaqu.html">JaQu</a>: H2's own fluent API for querying databases</li>
    -								<li><a href="http://www.oracle.com/technetwork/java/javaee/tech/persistence-jsp-140049.html">JPA</a>: The de-facto standard in the javax.persistence packages, supplied by Oracle. Its annotations are useful to jOOQ as well.</li>
    -								<li><a href="http://onewebsql.com">OneWebSQL</a>: A commercial SQL abstraction API with support for DAO source code generation, which was integrated also in jOOQ</li>
    -								<li><a href="http://www.querydsl.com">QueryDSL</a>: A "LINQ-port" to Java. It has a similar fluent API, a similar code-generation facility, yet quite a different purpose. While jOOQ is all about SQL, QueryDSL (like LINQ) is mostly about querying.</li>
    -								<li><a href="http://www.springsource.org/features/data-access">Spring Data</a>: Spring's JdbcTemplate knows RowMappers, which are reflected by jOOQ's <reference id="recordhandler"/> or <reference id="recordmapper"/></li>
    -							</ul>
    -						</html></content>
    -					</section>
    -				</sections>
    -			</section>
    -		</sections>
    -	</section>
    -</manual>
    diff --git a/jOOQ-website/src/main/resources/manual-3.0.xml b/jOOQ-website/src/main/resources/manual-3.0.xml
    deleted file mode 100644
    index 8d7967763e..0000000000
    --- a/jOOQ-website/src/main/resources/manual-3.0.xml
    +++ /dev/null
    @@ -1,10436 +0,0 @@
    -<?xml version="1.0" encoding="UTF-8"?>
    -<!-- 
    -  - Copyright (c) 2009-2013, Lukas Eder, lukas.eder@gmail.com
    -  - All rights reserved.
    -  -
    -  - This software is licensed to you under the Apache License, Version 2.0
    -  - (the "License"); You may obtain a copy of the License at
    -  -
    -  -   http://www.apache.org/licenses/LICENSE-2.0
    -  -
    -  - Redistribution and use in source and binary forms, with or without
    -  - modification, are permitted provided that the following conditions are met:
    -  -
    -  - . Redistributions of source code must retain the above copyright notice, this
    -  -   list of conditions and the following disclaimer.
    -  -
    -  - . Redistributions in binary form must reproduce the above copyright notice,
    -  -   this list of conditions and the following disclaimer in the documentation
    -  -   and/or other materials provided with the distribution.
    -  -
    -  - . Neither the name "jOOQ" nor the names of its contributors may be
    -  -   used to endorse or promote products derived from this software without
    -  -   specific prior written permission.
    -  -
    -  - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    -  - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -  - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -  - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -  - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -  - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -  - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -  - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -  - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -  - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -  - POSSIBILITY OF SUCH DAMAGE.
    -  -->
    -<manual>
    -	<section id="manual">
    -		<title>The jOOQ User Manual. Multiple Pages</title>
    -		<content><html>
    -			<h2 id="Overview"><a href="#Overview" name="Overview">#</a> Overview</h2>
    -			<p>This manual is divided into six main sections:</p>
    -
    -			<ul>
    -				<li>
    -					<reference id="getting-started"/>
    -					<p>
    -						This section will get you started with jOOQ quickly. It contains
    -						simple explanations about what jOOQ is, what jOOQ isn't and how
    -						to set it up for the first time
    -					</p>
    -				</li>
    -				<li>
    -					<reference id="sql-building"/>
    -					<p>
    -						This section explains all about the jOOQ syntax used for building
    -						queries. It explains the central factories, the supported SQL
    -						statements and various other syntax elements
    -					</p>
    -				</li>
    -				<li>
    -					<reference id="code-generation"/>
    -					<p>
    -						This section explains how to configure and use the built-in source code
    -						generator
    -					</p>
    -				</li>
    -				<li>
    -					<reference id="sql-execution"/>
    -					<p>
    -						This section will get you through the specifics of what can be done
    -						with jOOQ at runtime, in order to execute queries, perform CRUD
    -						operations, import and export data, and hook into the jOOQ execution
    -						lifecycle for debugging
    -					</p>
    -				</li>
    -				<li>
    -					<reference id="tools"/>
    -					<p>
    -						This section is dedicated to tools that ship with jOOQ, such as the
    -						jOOQ console
    -					</p>
    -				</li>
    -				<li>
    -					<reference id="reference"/>
    -					<p>
    -						This section is a reference for elements in this manual
    -					</p>
    -				</li>
    -			</ul>
    -		</html></content>
    -
    -		<sections>
    -			<section id="preface">
    -				<title>Preface</title>
    -				<content><html>
    -					<h3>jOOQ's reason for being - compared to JPA</h3>
    -					<p>
    -						Java and SQL have come a long way. SQL is an "ancient", yet established and well-understood technology. Java is a legacy too, although its platform JVM allows for many new and contemporary languages built on top of it. Yet, after all these years, libraries dealing with the interface between SQL and Java have come and gone, leaving JPA to be a standard that is accepted only with doubts, short of any surviving options.
    -					</p>
    -					<p>
    -						So far, there had been only few database abstraction frameworks or libraries, that truly respected SQL as a first class citizen among languages. Most frameworks, including the industry standards JPA, EJB, Hibernate, JDO, Criteria Query, and many others try to hide SQL itself, minimising its scope to things called JPQL, HQL, JDOQL and various other inferior query languages
    -					</p>
    -					<p>
    -						jOOQ has come to fill this gap.
    -					</p>
    -
    -					<h3>jOOQ's reason for being - compared to LINQ</h3>
    -					<p>
    -						Other platforms incorporate ideas such as LINQ (with LINQ-to-SQL), or Scala's SLICK, or also Java's QueryDSL to better integrate querying as a concept into their respective language. By querying, they understand querying of arbitrary targets, such as SQL, XML, Collections and other heterogeneous data stores. jOOQ claims that this is going the wrong way too.
    -					</p>
    -					<p>
    - 						In more advanced querying use-cases (more than simple CRUD and the occasional JOIN), people will want to profit from the expressivity of SQL. Due to the relational nature of SQL, this is quite different from what object-oriented and partially functional languages such as C#, Scala, or Java can offer.
    - 					</p>
    - 					<p>
    - 						It is very hard to formally express and validate joins and the ad-hoc table expression types they create. It gets even harder when you want support for more advanced table expressions, such as pivot tables, unnested cursors, or just arbitrary projections from derived tables. With a very strong object-oriented typing model, these features will probably stay out of scope.
    - 					</p>
    - 					<p>
    - 						In essence, the decision of creating an API that looks like SQL or one that looks like C#, Scala, Java is a definite decision in favour of one or the other platform. While it will be easier to evolve SLICK in similar ways as LINQ (or QueryDSL in the Java world), SQL feature scope that clearly communicates its underlying intent will be very hard to add, later on (e.g. how would you model Oracle's partitioned outer join syntax? How would you model ANSI/ISO SQL:1999 grouping sets? How can you support scalar subquery caching? etc...).					
    -					</p>
    -					<p>
    -						jOOQ has come to fill this gap.
    -					</p>
    -					
    -					<h3>jOOQ's reason for being - compared to SQL / JDBC</h3>
    -					<p>
    -						So why not just use SQL?
    -					</p> 
    -					<p>
    -						SQL can be written as plain text and passed through the JDBC API. Over the years, people have become wary of this approach for many reasons:
    -					</p>
    -					<ul>
    -						<li>No typesafety</li>
    -						<li>No syntax safety</li>
    -						<li>No bind value index safety</li>
    -						<li>Verbose SQL String concatenation</li>
    -						<li>Boring bind value indexing techniques</li>
    -						<li>Verbose resource and exception handling in JDBC</li>
    -						<li>A very "stateful", not very object-oriented JDBC API, which is hard to use</li>
    -					</ul>
    -					<p>
    -						For these many reasons, other frameworks have tried to abstract JDBC away in the past in one way or another. Unfortunately, many have completely abstracted SQL away as well
    -					</p>
    -					<p>
    -						jOOQ has come to fill this gap.
    -					</p>					
    -					
    -					<h3>jOOQ is different</h3>
    -					<p>
    -						SQL was never meant to be abstracted. To be confined in the narrow boundaries of heavy mappers, hiding the beauty and simplicity of relational data. SQL was never meant to be object-oriented. SQL was never meant to be anything other than... SQL!
    -					</p>					
    -				</html></content>
    -			</section>
    -			
    -			<section id="copyright">
    -				<title>Copyright, License, and Trademarks</title>
    -				<content><html>
    -                    <p>
    -                        This section lists the various licenses that apply to different versions of jOOQ. Prior to version 3.2, jOOQ was shipped for free under the terms of the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache Software License 2.0</a>. With jOOQ 3.2, jOOQ became dual-licensed: <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache Software License 2.0</a> (for use with Open Source databases) and <a href="http://www.jooq.org/licensing">commercial</a> (for use with commercial databases). Please contact <a href="mailto:sales@datageekery.com">sales@datageekery.com</a>, should you have any questions regarding licensing.
    -                    </p>
    -                    <h3>License for jOOQ 1.x, 2.x, 3.0, 3.1</h3>
    -                    
    -</html><text>Copyright (c) 2009-2013, Lukas Eder, lukas.eder@gmail.com
    -All rights reserved.
    -
    -This software is licensed to you under the Apache License, Version 2.0
    -(the "License"); You may obtain a copy of the License at
    -
    -  http://www.apache.org/licenses/LICENSE-2.0
    -
    -Redistribution and use in source and binary forms, with or without
    -modification, are permitted provided that the following conditions are met:
    -
    -. Redistributions of source code must retain the above copyright notice, this
    -  list of conditions and the following disclaimer.
    -
    -. Redistributions in binary form must reproduce the above copyright notice,
    -  this list of conditions and the following disclaimer in the documentation
    -  and/or other materials provided with the distribution.
    -
    -. Neither the name "jOOQ" nor the names of its contributors may be
    -  used to endorse or promote products derived from this software without
    -  specific prior written permission.
    -
    -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -POSSIBILITY OF SUCH DAMAGE.</text><html>
    -
    -                    <h3>License for jOOQ 3.2 and later</h3>
    -                    
    -</html><text>Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com)
    -All rights reserved.
    -
    -This work is dual-licensed
    -- under the Apache Software License 2.0 (the "ASL")
    -- under the jOOQ License and Maintenance Agreement (the "jOOQ License")
    -=============================================================================
    -You may choose which license applies to you:
    -
    -- If you're using this work with Open Source databases, you may choose
    -  either ASL or jOOQ License.
    -- If you're using this work with at least one commercial database, you must
    -  choose jOOQ License
    -
    -For more information, please visit http://www.jooq.org/licenses
    -
    -Apache Software License 2.0:
    ------------------------------------------------------------------------------
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    - http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -
    -jOOQ License and Maintenance Agreement:
    ------------------------------------------------------------------------------
    -Data Geekery grants the Customer the non-exclusive, timely limited and
    -non-transferable license to install and use the Software under the terms of
    -the jOOQ License and Maintenance Agreement.
    -
    -This library is distributed with a LIMITED WARRANTY. See the jOOQ License
    -and Maintenance Agreement for more details: http://www.jooq.org/licensing</text><html>
    -
    -                    <h3>Trademarks owned by Data Geekeryâ„¢ GmbH</h3>
    -                    <ul>
    -                        <li>jOOQâ„¢ is a trademark by Data Geekeryâ„¢ GmbH</li>
    -                        <li>jOOXâ„¢ is a trademark by Data Geekeryâ„¢ GmbH</li>
    -                        <li>jOORâ„¢ is a trademark by Data Geekeryâ„¢ GmbH</li>
    -                        <li>jOOUâ„¢ is a trademark by Data Geekeryâ„¢ GmbH</li>
    -                    </ul>
    -                    
    -                    <h3>Trademarks owned by database vendors with no affiliation to Data Geekeryâ„¢ GmbH</h3>
    -                    <ul>
    -                        <li>Access® is a registered trademark of Microsoft® Inc.</li>
    -                        <li>Adaptive Server® Enterprise is a registered trademark of Sybase®, Inc.</li>
    -                        <li>CUBRID™ is a trademark of NHN® Corp.</li>
    -                        <li>DB2® is a registered trademark of IBM® Corp.</li>
    -                        <li>Derby is a trademark of the Apacheâ„¢ Software Foundation</li>
    -                        <li>H2 is a trademark of the H2 Group</li>
    -                        <li>HSQLDB is a trademark of The hsql Development Group</li>
    -                        <li>Ingres is a trademark of Actianâ„¢ Corp.</li>
    -                        <li>MariaDB is a trademark of Monty Program Ab</li>
    -                        <li>MySQL® is a registered trademark of Oracle® Corp.</li>
    -                        <li>Firebird® is a registered trademark of Firebird Foundation Inc.</li>
    -                        <li>Oracle® database is a registered trademark of Oracle® Corp.</li>
    -                        <li>PostgreSQL® is a registered trademark of The PostgreSQL Global Development Group</li>
    -                        <li>Postgres Plus® is a registered trademark of EnterpriseDB® software</li>
    -                        <li>SQL Anywhere® is a registered trademark of Sybase®, Inc.</li>
    -                        <li>SQL Server® is a registered trademark of Microsoft® Inc.</li>
    -                        <li>SQLite is a trademark of Hipp, Wyrick &amp; Company, Inc.</li>
    -                    </ul>
    -                    
    -                    <h3>Other trademarks by vendors with no affiliation to Data Geekeryâ„¢ GmbH</h3>
    -                    <ul>
    -                        <li>Java® is a registered trademark by Oracle® Corp. and/or its affiliates</li>
    -                        <li>Scala is a trademark of EPFL</li>
    -                    </ul>
    -                    
    -                    <h3>Other trademark remarks</h3>
    -                    <p>
    -                        Other names may be trademarks of their respective owners.
    -                    </p>
    -                    
    -                    <p>
    -                        Throughout the manual, the above trademarks are referenced without a formal ® (R) or ™ (TM) symbol. It is believed that referencing third-party trademarks in this manual or on the jOOQ website constitutes "fair use". Please <a href="mailto:contact@datageekery.com">contact us</a> if you think that your trademark(s) are not properly attributed.
    -                    </p>
    -				</html></content>
    -			</section>
    -			
    -			<section id="getting-started">
    -				<title>Getting started with jOOQ</title>
    -				<content><html>
    -					<p>
    -						These chapters contain a quick overview of how to get started with this manual and with jOOQ. While the subsequent chapters contain a lot of reference information, this chapter here just wraps up the essentials.
    -					</p>
    -				</html></content>
    -
    -				<sections>
    -					<section id="the-manual">
    -					    <title>How to read this manual</title>
    -						<content><html>
    -							<p>
    -								This section helps you correctly interpret this manual in the context of jOOQ.
    -							</p>
    -							
    -							<h3>Code blocks</h3>
    -							<p>
    -								The following are code blocks:
    -							</p>
    -							
    -</html><sql><![CDATA[-- A SQL code block
    -SELECT 1 FROM DUAL]]></sql><java><![CDATA[// A Java code block
    -for (int i = 0; i < 10; i++);]]></java><xml><![CDATA[<!-- An XML code block -->
    -<hello what="world"></hello>]]></xml><config><![CDATA[# A config file code block
    -org.jooq.property=value]]></config><html>		
    -
    -							<p>
    -								These are useful to provide examples in code. Often, with jOOQ, it is even more useful to compare SQL code with its corresponding Java/jOOQ code. When this is done, the blocks are aligned side-by-side, with SQL usually being on the left, and Java usually being on the right:
    -							</p>					
    -							
    -</html><code-pair>
    -<sql><![CDATA[-- In SQL:
    -SELECT 1 FROM DUAL]]></sql><java><![CDATA[// Using jOOQ:
    -create.selectOne()]]></java>
    -</code-pair><html>
    -
    -							<h3>Code block contents</h3>
    -							<p>
    -								The contents of code blocks follow conventions, too. If nothing else is mentioned next to any given code block, then the following can be assumed:
    -							</p>
    -							
    -							
    -</html><sql><![CDATA[-- SQL assumptions
    -------------------
    -
    --- If nothing else is specified, assume that the Oracle syntax is used 
    -SELECT 1 FROM DUAL]]></sql><java><![CDATA[// Java assumptions
    -// ----------------
    - 
    -// Whenever you see "standalone functions", assume they were static imported from org.jooq.impl.DSL 
    -exists(); max(); min(); val(); inline(); // correspond to DSL.exists(); DSL.max(); DSL.min(); etc...
    -
    -// Whenever you see BOOK/Book, AUTHOR/Author and similar entities, assume they were (static) imported from the generated schema
    -BOOK.TITLE, AUTHOR.LAST_NAME // correspond to com.example.generated.Tables.BOOK.TITLE, com.example.generated.Tables.BOOK.TITLE
    -
    -// Whenever you see "create" being used in Java code, assume that this is an instance of org.jooq.DSLContext.
    -// The reason why it is called "create" is the fact, that a jOOQ QueryPart is being created from the DSL object:
    -DSLContext create = DSL.using(connection, SQLDialect.ORACLE);]]></java><html>
    -
    -                            <p>
    -                                Your naming may differ, of course. For instance, you could name the "create" instance "db", instead.
    -                            </p>
    -
    -							<h3>Degree (arity)</h3>
    -							<p>
    -							    jOOQ records (and many other API elements) have a degree N between 1 and {max-row-degree}. The variable degree of an API element is denoted as [N], e.g. Row[N] or Record[N]. The term "degree" is preferred over arity, as "degree" is the term used in the SQL standard, whereas "arity" is used more often in mathematics and relational theory.
    -							</p>
    -
    -							<h3>Settings</h3>
    -							<p>
    -								jOOQ allows to override runtime behaviour using <reference class="org.jooq.conf.Settings"/>. If nothing is specified, the default runtime settings are assumed.
    -							</p>
    -							
    -							<h3>Sample database</h3>
    -							<p>
    -								jOOQ query examples run against the sample database. See the manual's section about <reference id="sample-database" title="the sample database used in this manual"/> to learn more about the sample database.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -					<section id="sample-database">
    -					    <title>The sample database used in this manual</title>
    -						<content><html>
    -							<p>
    -							For the examples in this manual, the same database will always be referred to. It essentially consists of these entities created using the Oracle dialect
    -							</p>
    -</html><sql>CREATE TABLE language (
    -  id              NUMBER(7)     NOT NULL PRIMARY KEY,
    -  cd              CHAR(2)       NOT NULL,
    -  description     VARCHAR2(50)
    -)
    -
    -CREATE TABLE author (
    -  id              NUMBER(7)     NOT NULL PRIMARY KEY,
    -  first_name      VARCHAR2(50),
    -  last_name       VARCHAR2(50)  NOT NULL,
    -  date_of_birth   DATE,
    -  year_of_birth   NUMBER(7),
    -  distinguished   NUMBER(1)
    -)
    -
    -CREATE TABLE book (
    -  id              NUMBER(7)     NOT NULL PRIMARY KEY,
    -  author_id       NUMBER(7)     NOT NULL,
    -  title           VARCHAR2(400) NOT NULL,
    -  published_in    NUMBER(7)     NOT NULL,
    -  language_id     NUMBER(7)     NOT NULL,
    -  
    -  CONSTRAINT fk_book_author     FOREIGN KEY (author_id)   REFERENCES author(id),
    -  CONSTRAINT fk_book_language   FOREIGN KEY (language_id) REFERENCES language(id)
    -)
    -
    -CREATE TABLE book_store (
    -  name            VARCHAR2(400) NOT NULL UNIQUE
    -)
    -
    -CREATE TABLE book_to_book_store (
    -  name            VARCHAR2(400) NOT NULL,
    -  book_id         INTEGER       NOT NULL,
    -  stock           INTEGER,
    -  
    -  PRIMARY KEY(name, book_id),
    -  CONSTRAINT fk_b2bs_book_store FOREIGN KEY (name)        REFERENCES book_store (name) ON DELETE CASCADE,
    -  CONSTRAINT fk_b2bs_book       FOREIGN KEY (book_id)     REFERENCES book (id)         ON DELETE CASCADE
    -)</sql><html>
    -							<p>
    -								More entities, types (e.g. UDT's, ARRAY types, ENUM types, etc), stored procedures and packages are introduced for specific examples
    -							</p>
    -						</html></content>
    -					</section>
    -
    -					<section id="use-cases">
    -						<title>Different use cases for jOOQ</title>
    -						<content><html>
    -							<p>
    -								jOOQ has originally been created as a library for complete abstraction of JDBC and all database interaction. Various best practices that are frequently encountered in pre-existing software products are applied to this library. This includes:
    -							</p>
    -							<ul>
    -								<li>Typesafe database object referencing through generated schema, table, column, record, procedure, type, dao, pojo artefacts (see the chapter about <reference id="code-generation" title="code generation"/>)</li>
    -								<li>Typesafe SQL construction through a complete API modelling SQL as a domain specific language in Java (see the chapter about <reference id="dsl-and-non-dsl" title="the DSL API"/>)</li>
    -								<li>Convenient query execution through an improved API for result fetching (see the chapters about <reference id="fetching" title="the various types of data fetching"/>)</li>
    -								<li>SQL dialect abstraction and SQL clause simulation to improve cross-database compatibility and to enable missing features in simpler databases (see the chapter about <reference id="sql-dialects" title="SQL dialects"/>)</li>
    -								<li>SQL logging and debugging using jOOQ as an integral part of your development process (see the chapters about <reference id="logging" title="logging"/> and about the <reference id="jooq-console" title="jOOQ Console"/>)</li>
    -							</ul>
    -							<p>
    -								Effectively, jOOQ was originally designed to replace any other database abstraction framework short of the ones handling connection pooling and transaction management (see also the <reference id="reference-credits" title="credits for other database abstraction libraries"/>)
    -							</p>
    -							
    -							<h3>Use jOOQ the way you prefer</h3>
    -							<p>
    -								... but open source is community-driven. And the community has shown various ways of using jOOQ that diverge from its original intent. Some use cases encountered are:
    -							</p>
    -							<ul>
    -								<li>Using Hibernate for 70% of the queries (i.e. <reference id="crud-with-updatablerecords" title="CRUD"/>) and jOOQ for the remaining 30% where SQL is really needed</li>
    -								<li>Using jOOQ for SQL building and JDBC for SQL execution</li> 
    -								<li>Using jOOQ for SQL building and Spring Data for SQL execution</li>
    -								<li>Using jOOQ without the <reference id="code-generation" title="source code generator"/> to build the basis of a framework for dynamic SQL execution.</li> 
    -							</ul>
    -							
    -							<p>
    -								The following sections explain about various use cases for using jOOQ in your application.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="jooq-as-a-standalone-sql-builder">
    -								<title>jOOQ as a SQL builder</title>
    -								<content><html>
    -									<p>
    -										This is the most simple of all use cases, allowing for construction of valid SQL for any database. In this use case, you will not use <reference id="jooq-as-a-sql-builder-with-code-generation" title="jOOQ's code generator"/> and probably not even <reference id="jooq-as-a-sql-executor" title="jOOQ's query execution facilities"/>. Instead, you'll use jOOQ to wrap strings, literals and other user-defined objects into an object-oriented, type-safe AST modelling your SQL statements. An example is given here: 
    -									</p>
    -									
    -</html><java><![CDATA[// Fetch a SQL string from a jOOQ Query in order to manually execute it with another tool.
    -String sql = create.select(fieldByName("BOOK","TITLE"), fieldByName("AUTHOR","FIRST_NAME"), fieldByName("AUTHOR","LAST_NAME"))
    -                   .from(tableByName("BOOK"))
    -                   .join(tableByName("AUTHOR"))
    -                   .on(fieldByName("BOOK", "AUTHOR_ID").equal("AUTHOR", "ID"))
    -                   .where(fieldByName("BOOK", "PUBLISHED_IN").equal(1948))
    -                   .getSQL();]]></java><html>
    -                   
    -                   					<p>
    -                   						The SQL string that you can generate as such can then be executed using JDBC directly, using Spring's JdbcTemplate, using Apache DbUtils and many other tools.
    -                   					</p>
    -                   					<p>
    -                   						If you wish to use jOOQ only as a SQL builder, the following sections of the manual will be of interest to you:
    -                  					</p>
    -                  					<ul>
    -                  						<li><reference id="sql-building" title="SQL building"/>: This section contains a lot of information about creating SQL statements using the jOOQ API</li>
    -                  						<li><reference id="plain-sql" title="Plain SQL"/>: This section contains information useful in particular to those that want to supply <reference id="table-expressions" title="table expressions"/>, <reference id="column-expressions" title="column expressions"/>, etc. as plain SQL to jOOQ, rather than through generated artefacts</li>
    -                  					</ul>
    -								</html></content>
    -							</section>
    -
    -							<section id="jooq-as-a-sql-builder-with-code-generation">
    -								<title>jOOQ as a SQL builder with code generation</title>
    -								<content><html>
    -									<p>
    -										In addition to using jOOQ as a <reference id="jooq-as-a-standalone-sql-builder" title="standalone SQL builder"/>, you can also use jOOQ's code generation features in order to compile your SQL statements using a Java compiler against an actual database schema. This adds a lot of power and expressiveness to just simply constructing SQL using custom strings and literals, as you can be sure that all database artefacts actually exist in the database, and that their type is correct. An example is given here: 
    -									</p>
    -
    -</html><java><![CDATA[// Fetch a SQL string from a jOOQ Query in order to manually execute it with another tool.
    -String sql = create.select(BOOK.TITLE, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -                   .from(BOOK)
    -                   .join(AUTHOR)
    -                   .on(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -                   .where(BOOK.PUBLISHED_IN.equal(1948))
    -                   .getSQL();]]></java><html>
    -                   
    -                   					<p>
    -                   						The SQL string that you can generate as such can then be executed using JDBC directly, using Spring's JdbcTemplate, using Apache DbUtils and many other tools.
    -                   					</p>
    -                   					<p>
    -                   						If you wish to use jOOQ only as a SQL builder with code generation, the following sections of the manual will be of interest to you:
    -                  					</p>
    -                  					<ul>
    -                  						<li><reference id="sql-building" title="SQL building"/>: This section contains a lot of information about creating SQL statements using the jOOQ API</li>
    -                  						<li><reference id="code-generation" title="Code generation"/>: This section contains the necessary information to run jOOQ's code generator against your developer database</li>
    -                  					</ul>
    -								</html></content>
    -							</section>
    -
    -							<section id="jooq-as-a-sql-executor">
    -								<title>jOOQ as a SQL executor</title>
    -								<content><html>
    -									<p>
    -										Instead of any tool mentioned in the previous chapters, you can also use jOOQ directly to execute your jOOQ-generated SQL statements. This will add a lot of convenience on top of the previously discussed API for typesafe SQL construction, when you can re-use the information from generated classes to fetch records and custom data types. An example is given here:
    -									</p>
    -									
    -</html><java><![CDATA[// Typesafely execute the SQL statement directly with jOOQ
    -Result<Record3<String, String, String>> result = 
    -create.select(BOOK.TITLE, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .from(BOOK)
    -      .join(AUTHOR)
    -      .on(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -      .where(BOOK.PUBLISHED_IN.equal(1948))
    -      .fetch();]]></java><html>
    -
    -									<p>
    -										jOOQ doesn't stop here, though! You can execute any SQL with jOOQ. In other words, you can use any other SQL building tool and run the SQL statements with jOOQ. An example is given here:
    -									</p>
    -
    -</html><java><![CDATA[// Use your favourite tool to construct SQL strings:
    -String sql = "SELECT title, first_name, last_name FROM book JOIN author ON book.author_id = author.id " +
    -             "WHERE book.published_in = 1984";
    -
    -// Fetch results using jOOQ
    -Result<Record> result = create.fetch(sql);
    -
    -// Or execute that SQL with JDBC, fetching the ResultSet with jOOQ:
    -ResultSet rs = connection.createStatement().executeQuery(sql);
    -Result<Record> result = create.fetch(rs);]]></java><html>
    -
    -									<p>
    -                   						If you wish to use jOOQ as a SQL executor with (or without) code generation, the following sections of the manual will be of interest to you:
    -                  					</p>
    -                  					<ul>
    -                  						<li><reference id="sql-building" title="SQL building"/>: This section contains a lot of information about creating SQL statements using the jOOQ API</li>
    -                  						<li><reference id="code-generation" title="Code generation"/>: This section contains the necessary information to run jOOQ's code generator against your developer database</li>
    -                  						<li><reference id="sql-execution" title="SQL execution"/>: This section contains a lot of information about executing SQL statements using the jOOQ API</li>
    -                  						<li><reference id="fetching"/>: This section contains some useful information about the various ways of fetching data with jOOQ</li>
    -                  					</ul>
    -								</html></content>
    -							</section>
    -
    -							<section id="jooq-for-crud">
    -								<title>jOOQ for CRUD</title>
    -								<content><html>
    -									<p>
    -										This is probably the most complete use-case for jOOQ: Use all of jOOQ's features. Apart from jOOQ's fluent API for query construction, jOOQ can also help you execute everyday CRUD operations. An example is given here:
    -									</p>
    -
    -</html><java><![CDATA[// Fetch all authors
    -for (AuthorRecord author : create.fetch(AUTHOR)) {
    -
    -    // Skip previously distinguished authors  
    -    if ((int) author.getDistinguished() == 1)
    -        continue;
    -  
    -    // Check if the author has written more than 5 books
    -    if (author.fetchChildren(FK_BOOK_AUTHOR).size() > 5) {
    -    
    -        // Mark the author as a "distinguished" author
    -        author.setDistinguished(1);
    -        author.store();
    -    }
    -}]]></java><html>
    -
    -									<p>
    -                   						If you wish to use all of jOOQ's features, the following sections of the manual will be of interest to you (including all sub-sections):
    -                  					</p>
    -                  					<ul>
    -                  						<li><reference id="sql-building" title="SQL building"/>: This section contains a lot of information about creating SQL statements using the jOOQ API</li>
    -                  						<li><reference id="code-generation" title="Code generation"/>: This section contains the necessary information to run jOOQ's code generator against your developer database</li>
    -                  						<li><reference id="sql-execution" title="SQL execution"/>: This section contains a lot of information about executing SQL statements using the jOOQ API</li>
    -                  					</ul>
    -								</html></content>
    -							</section>
    -							
    -							<section id="jooq-for-pros">
    -								<title>jOOQ for PROs</title>
    -								<content><html>
    -									<p>
    -										jOOQ isn't just a library that helps you <reference id="sql-building" title="build"/> and <reference id="sql-execution" title="execute"/> SQL against your <reference id="code-generation" title="generated, compilable schema"/>. jOOQ ships with a lot of tools. Here are some of the most important tools shipped with jOOQ:
    -									</p>
    -									<ul>
    -										<li><reference id="jooq-console" title="jOOQ Console"/>: This small application hooks into jOOQ's execute listener support to allow for tracing, debugging and introspecting any SQL statement executed through the jOOQ API. This includes setting breakpoints, introspecting bind values, running probe SQL statements, ad-hoc patching of SQL, measuring execution times, exporting stack traces. Use this tool to better know your SQL!</li>
    -										<li><reference id="execute-listeners" title="jOOQ's Execute Listeners"/>: jOOQ allows you to hook your custom execute listeners into jOOQ's SQL statement execution lifecycle in order to centrally coordinate any arbitrary operation performed on SQL being executed. Use this for logging, identity generation, SQL tracing, performance measurements, etc.</li>
    -										<li><reference id="logging" title="Logging"/>: jOOQ has a standard DEBUG logger built-in, for logging and tracing all your executed SQL statements and fetched result sets</li>
    -										<li><reference id="stored-procedures" title="Stored Procedures"/>: jOOQ supports stored procedures and functions of your favourite database. All routines and user-defined types are generated and can be included in jOOQ's SQL building API as function references.</li>
    -										<li><reference id="batch-execution" title="Batch execution"/>: Batch execution is important when executing a big load of SQL statements. jOOQ simplifies these operations compared to JDBC</li>
    -										<li><reference id="exporting" title="Exporting"/> and <reference id="importing" title="Importing"/>: jOOQ ships with an API to easily export/import data in various formats</li>
    -									</ul>
    -									<p>
    -										If you're a power user of your favourite, feature-rich database, jOOQ will help you access all of your database's vendor-specific features, such as OLAP features, stored procedures, user-defined types, vendor-specific SQL, functions, etc. Examples are given throughout this manual.
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="tutorials">
    -						<title>Tutorials</title>
    -						<content><html>
    -							<p>
    -								Don't have time to read the full manual? Here are a couple of tutorials that will get you into the most essential parts of jOOQ as quick as possible.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="jooq-in-7-steps">
    -								<title>jOOQ in 7 easy steps</title>
    -								<content><html>
    -									<p>
    -										This manual section is intended for new users, to help them get a running application with jOOQ, quickly.
    -									</p>
    -								</html></content>
    -								
    -								<sections>
    -									<section id="jooq-in-7-steps-step1">
    -										<title>Step 1: Preparation</title>
    -										<content><html>
    -											<p>
    -												If you haven't already downloaded it, download jOOQ:<br/>
    -												<a href="https://sourceforge.net/projects/jooq/files/Release/" title="jOOQ download">https://sourceforge.net/projects/jooq/files/Release/</a>
    -											</p>
    -											
    -											<p>
    -												Alternatively, you can create a Maven dependency to download jOOQ artefacts:
    -											</p>
    -</html><xml><![CDATA[<dependency>
    -  <groupId>org.jooq</groupId>
    -  <artifactId>jooq</artifactId>
    -  <version>{jooq-version}</version>
    -</dependency>
    -<dependency>
    -  <groupId>org.jooq</groupId>
    -  <artifactId>jooq-meta</artifactId>
    -  <version>{jooq-version}</version>
    -</dependency>
    -<dependency>
    -  <groupId>org.jooq</groupId>
    -  <artifactId>jooq-codegen</artifactId>
    -  <version>{jooq-version}</version>
    -</dependency>]]></xml><html>
    -
    -											<p>
    -												Please refer to the manual's section about <reference id="codegen-configuration" title="Code generation configuration"/> to learn how to use jOOQ's code generator with Maven.
    -											</p>
    -
    -											<p>
    -												For this example, we'll be using MySQL. If you haven't already downloaded MySQL Connector/J, download it here:<br/>
    -												<a href="http://dev.mysql.com/downloads/connector/j/" target="_blank" title="MySQL JDBC driver">http://dev.mysql.com/downloads/connector/j/</a>
    -											</p>
    -
    -											<p>
    -												If you don't have a MySQL instance up and running yet, get <a href="http://www.apachefriends.org/en/xampp.html" title="XAMPP">XAMPP</a> now! XAMPP is a simple installation bundle for Apache, MySQL, PHP and Perl
    -											</p>
    -										</html></content>
    -									</section>
    -									
    -									<section id="jooq-in-7-steps-step2">
    -										<title>Step 2: Your database</title>
    -										<content><html>
    -											<p>
    -												We're going to create a database called "guestbook" and a corresponding "posts" table. Connect to MySQL via your command line client and type the following:
    -											</p>
    -											
    -</html><sql>CREATE DATABASE guestbook;
    -
    -CREATE TABLE `posts` (
    -  `id` bigint(20) NOT NULL,
    -  `body` varchar(255) DEFAULT NULL,
    -  `timestamp` datetime DEFAULT NULL,
    -  `title` varchar(255) DEFAULT NULL,
    -  PRIMARY KEY (`id`)
    -);
    -</sql></content>
    -									</section>
    -									
    -									<section id="jooq-in-7-steps-step3">
    -										<title>Step 3: Code generation</title>
    -										<content><html>
    -											<p>
    -												In this step, we're going to use jOOQ's command line tools to generate classes that map to the Posts table we just created. More detailed information about how to set up the jOOQ code generator can be found here:<br/>
    -												<reference id="code-generation" title="jOOQ manual pages about setting up the code generator"/>
    -											</p>
    -
    -											<p>
    -												The easiest way to generate a schema is to copy the jOOQ jar files (there should be 3) and the MySQL Connector jar file to a temporary directory. Then, create a guestbook.xml that looks like this:
    -											</p>
    -											
    -</html><xml><![CDATA[<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    -<configuration xmlns="http://www.jooq.org/xsd/jooq-codegen-{codegen-xsd-version}.xsd">
    -  <!-- Configure the database connection here -->
    -  <jdbc>
    -    <driver>com.mysql.jdbc.Driver</driver>
    -    <url>jdbc:mysql://localhost:3306/guestbook</url>
    -    <user>root</user>
    -    <password></password>
    -  </jdbc>
    -
    -  <generator>
    -    <!-- The default code generator. You can override this one, to generate your own code style
    -         Defaults to org.jooq.util.DefaultGenerator -->
    -    <name>org.jooq.util.DefaultGenerator</name>
    -
    -    <database>
    -      <!-- The database type. The format here is:
    -           org.util.[database].[database]Database -->
    -      <name>org.jooq.util.mysql.MySQLDatabase</name>
    -
    -      <!-- The database schema (or in the absence of schema support, in your RDBMS this
    -           can be the owner, user, database name) to be generated -->
    -      <inputSchema>guestbook</inputSchema>
    -
    -      <!-- All elements that are generated from your schema 
    -           (A Java regular expression. Use the pipe to separate several expressions)
    -           Watch out for case-sensitivity. Depending on your database, this might be important! -->
    -      <includes>.*</includes>
    -
    -      <!-- All elements that are excluded from your schema 
    -           (A Java regular expression. Use the pipe to separate several expressions).
    -           Excludes match before includes -->
    -      <excludes></excludes>
    -    </database>
    -
    -    <target>
    -      <!-- The destination package of your generated classes (within the destination directory) -->
    -      <packageName>test.generated</packageName>
    -
    -      <!-- The destination directory of your generated classes -->
    -      <directory>C:/workspace/MySQLTest/src</directory>
    -    </target>
    -  </generator>
    -</configuration>]]></xml><html>
    -											<p>
    -												Replace the username with whatever user has the appropriate privileges to query the database meta data. You'll also want to look at the other values and replace as necessary. Here are the two interesting properties:
    -											</p>
    -											<p>
    -												<code>generator.target.package</code> - set this to the parent package you want to create for the generated classes. The setting of <code>test.generated</code> will cause the <code>test.generated.Posts</code> and <code>test.generated.PostsRecord</code> to be created
    -											</p>
    -											<p>
    -												<code>generator.target.directory</code> - the directory to output to.
    -											</p>
    -											
    -											<p>
    -												Once you have the JAR files and guestbook.xml in your temp directory, type this (use colons instead of semi-colons on UNIX/Linux systems):
    -											</p>
    -
    -</html><text>java -classpath jooq-{jooq-version}.jar;jooq-meta-{jooq-version}.jar;jooq-codegen-{jooq-version}.jar;mysql-connector-java-5.1.18-bin.jar;. 
    -  org.jooq.util.GenerationTool /guestbook.xml
    -</text><html>
    -
    -											<p>
    -												Note the prefix slash before guestbook.xml. Even though it's in our working directory, we need to prepend a slash, as the configuration file is loaded from the classpath. Replace the filenames with your filenames. In this example, jOOQ {jooq-version} is being used. If everything has worked, you should see this in your console output:
    -											</p>
    -
    -</html><text>Nov 1, 2011 7:25:06 PM org.jooq.impl.JooqLogger info
    -INFO: Initialising properties  : /guestbook.xml
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Database parameters
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: ----------------------------------------------------------
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO:   dialect                : MYSQL
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO:   schema                 : guestbook
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO:   target dir             : C:/workspace/MySQLTest/src
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO:   target package         : test.generated
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: ----------------------------------------------------------
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Emptying                 : C:/workspace/MySQLTest/src/test/generated
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Generating classes in    : C:/workspace/MySQLTest/src/test/generated
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Generating schema        : Guestbook.java
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Schema generated         : Total: 122.18ms
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Sequences fetched        : 0 (0 included, 0 excluded)
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Tables fetched           : 5 (5 included, 0 excluded)
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Generating tables        : C:/workspace/MySQLTest/src/test/generated/tables
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: ARRAYs fetched           : 0 (0 included, 0 excluded)
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Enums fetched            : 0 (0 included, 0 excluded)
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: UDTs fetched             : 0 (0 included, 0 excluded)
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Generating table         : Posts.java
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Tables generated         : Total: 680.464ms, +558.284ms
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Generating Keys          : C:/workspace/MySQLTest/src/test/generated/tables
    -Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info
    -INFO: Keys generated           : Total: 718.621ms, +38.157ms
    -Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info
    -INFO: Generating records       : C:/workspace/MySQLTest/src/test/generated/tables/records
    -Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info
    -INFO: Generating record        : PostsRecord.java
    -Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info
    -INFO: Table records generated  : Total: 782.545ms, +63.924ms
    -Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info
    -INFO: Routines fetched         : 0 (0 included, 0 excluded)
    -Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info
    -INFO: Packages fetched         : 0 (0 included, 0 excluded)
    -Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info
    -INFO: GENERATION FINISHED!     : Total: 791.688ms, +9.143ms
    -</text></content>
    -									</section>
    -									
    -									<section id="jooq-in-7-steps-step4">
    -										<title>Step 4: Connect to your database</title>
    -										<content><html>
    -											<p>
    -												Let's just write a vanilla main class in the project containing the generated classes:
    -											</p>
    -											
    -</html><java><![CDATA[// For convenience, always static import your generated tables and jOOQ functions to decrease verbosity:
    -import static test.generated.Tables.*;
    -import static org.jooq.impl.DSL.*;
    -
    -public class Main {
    -    public static void main(String[] args) {
    -        Connection conn = null;
    -
    -        String userName = "root";
    -        String password = "";
    -        String url = "jdbc:mysql://localhost:3306/guestbook";
    -
    -        try {
    -            Class.forName("com.mysql.jdbc.Driver").newInstance();
    -            conn = DriverManager.getConnection(url, userName, password);
    -        } catch (Exception e) {
    -            // For the sake of this tutorial, let's keep exception handling simple
    -            e.printStackTrace();
    -        } finally {
    -            if (conn != null) {
    -                try {
    -                    conn.close();
    -                } catch (SQLException ignore) {
    -                }
    -            }
    -        }
    -    }
    -}]]></java><html>
    -
    -											<p>
    -												This is pretty standard code for establishing a MySQL connection.
    -											</p>
    -										</html></content>
    -									</section>
    -									
    -									<section id="jooq-in-7-steps-step5">
    -										<title>Step 5: Querying</title>
    -										<content><html>
    -											<p>
    -												Let's add a simple query:
    -											</p>
    -											
    -</html><java><![CDATA[DSLContext create = DSL.using(conn, SQLDialect.MYSQL);
    -Result<Record> result = create.select().from(POSTS).fetch();]]></java><html>
    -
    -											<p>
    -												First get an instance of <code>DSLContext</code> so we can write a simple <code>SELECT</code> query. We pass an instance of the MySQL connection to <code>DSL</code>. Note that the DSLContext doesn't close the connection. We'll have to do that ourselves.
    -											</p>
    -											<p>
    -												We then use jOOQ's DSL to return an instance of Result. We'll be using this result in the next step.
    -											</p>
    -										</html></content>
    -									</section>
    -									
    -									<section id="jooq-in-7-steps-step6">
    -										<title>Step 6: Iterating</title>
    -										<content><html>
    -											<p>
    -												After the line where we retrieve the results, let's iterate over the results and print out the data:
    -											</p>
    -
    -</html><java><![CDATA[for (Record r : result) {
    -    Long id = r.getValue(POSTS.ID);
    -    String title = r.getValue(POSTS.TITLE);
    -    String description = r.getValue(POSTS.BODY);
    -
    -    System.out.println("ID: " + id + " title: " + title + " desciption: " + description);
    -}]]></java><html>
    -
    -											<p>
    -												The full program should now look like this:
    -											</p>
    -											
    -</html><java><![CDATA[package test;
    -
    -// For convenience, always static import your generated tables and
    -// jOOQ functions to decrease verbosity:
    -import static test.generated.Tables.*;
    -import static org.jooq.impl.DSL.*;
    -
    -import java.sql.*;
    -
    -import org.jooq.*;
    -import org.jooq.impl.*;
    -
    -public class Main {
    -
    -    /**
    -     * @param args
    -     */
    -    public static void main(String[] args) {
    -        Connection conn = null;
    -
    -        String userName = "root";
    -        String password = "";
    -        String url = "jdbc:mysql://localhost:3306/guestbook";
    -
    -        try {
    -            Class.forName("com.mysql.jdbc.Driver").newInstance();
    -            conn = DriverManager.getConnection(url, userName, password);
    -
    -            DSLContext create = DSL.using(conn, SQLDialect.MYSQL);
    -            Result<Record> result = create.select().from(POSTS).fetch();
    -
    -            for (Record r : result) {
    -                Long id = r.getValue(POSTS.ID);
    -                String title = r.getValue(POSTS.TITLE);
    -                String description = r.getValue(POSTS.BODY);
    -
    -                System.out.println("ID: " + id + " title: " + title + " desciption: " + description);
    -            }
    -        } catch (Exception e) {
    -            // For the sake of this tutorial, let's keep exception handling simple
    -            e.printStackTrace();
    -        } finally {
    -            if (conn != null) {
    -                try {
    -                    conn.close();
    -                } catch (SQLException ignore) {
    -                }
    -            }
    -        }
    -    }
    -}]]></java></content>
    -									</section>
    -									
    -									<section id="jooq-in-7-steps-step7">
    -										<title>Step 7: Explore!</title>
    -										<content><html>
    -											<p>
    -												jOOQ has grown to be a comprehensive SQL library. For more information, please consider the documentation:<br/>
    -												<a href="http://www.jooq.org/learn.php" title="jOOQ Manual">http://www.jooq.org/learn.php</a>
    -											</p>
    -											<p>
    -												... explore the Javadoc:<br/>
    -												<a href="http://www.jooq.org/javadoc/latest/" title="jOOQ Javadoc">http://www.jooq.org/javadoc/latest/</a>
    -											</p>
    -											<p>
    -												... or join the news group:<br/>
    -												<a href="https://groups.google.com/forum/#!forum/jooq-user" title="jOOQ news group">https://groups.google.com/forum/#!forum/jooq-user</a>
    -											</p>
    -											<p>
    -											    This tutorial is the courtesy of Ikai Lan. See the original source here:<br/>
    -											    <a href="http://ikaisays.com/2011/11/01/getting-started-with-jooq-a-tutorial/" target="_blank" title="Ikai Lan's jOOQ tutorial">http://ikaisays.com/2011/11/01/getting-started-with-jooq-a-tutorial/</a>
    -											</p>
    -										</html></content>
    -									</section>
    -								</sections>
    -							</section>
    -
    -							<section id="jooq-in-modern-ides">
    -								<title>Using jOOQ in modern IDEs</title>
    -								<content><html>
    -									<p>Feel free to contribute a tutorial!</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="jooq-with-spring">
    -								<title>Using jOOQ with Spring</title>
    -								<content><html>
    -									<p>Feel free to contribute a tutorial!</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="a-simple-web-application">
    -								<title>A simple web application with jOOQ</title>
    -								<content><html>
    -									<p>Feel free to contribute a tutorial!</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -					
    -					<section id="jooq-and-scala">
    -						<title>jOOQ and Scala</title>
    -						<content><html>
    -							<p>
    -								As any other library, jOOQ can be easily used in Scala, taking advantage of the many Scala language features such as for example:
    -							</p>
    -							<ul>
    -								<li>Optional "." to dereference methods from expressions</li>
    -								<li>Optional "(" and ")" to delimit method argument lists</li>
    -								<li>Optioanl ";" at the end of a Scala statement</li>
    -								<li>Type inference using "var" and "val" keywords</li>
    -							</ul>
    -						
    -							<p>
    -								But jOOQ also leverages other useful Scala features, such as
    -							</p>
    -							<ul>
    -								<li>implicit defs for operator overloading</li>
    -								<li>Scala Macros (soon to come)</li>
    -							</ul>
    -							
    -							<p>
    -								A short example jOOQ application in Scala might look like this:
    -							</p>
    -							
    -</html><scala><![CDATA[
    -import collection.JavaConversions._                                  // Import implicit defs for iteration over org.jooq.Result
    -                                                                     //
    -import java.sql.DriverManager                                        //
    -                                                                     //
    -import org.jooq._                                                    //
    -import org.jooq.impl._                                               //
    -import org.jooq.impl.DSL._                                           //
    -import org.jooq.scala.example.h2.Tables._                            //
    -import org.jooq.scala.Conversions._                                  // Import implicit defs for overloaded jOOQ/SQL operators
    -                                                                     //
    -object Test {                                                        //
    -  def main(args: Array[String]): Unit = {                            //
    -    val c = DriverManager.getConnection("jdbc:h2:~/test", "sa", ""); // Standard JDBC connection
    -    val e = DSL.using(c, SQLDialect.H2);                             //
    -    val x = T_AUTHOR as "x"                                          // SQL-esque table aliasing
    -                                                                     //
    -    for (r <- e                                                      // Iteration over Result. "r" is an org.jooq.Record3
    -        select (                                                     //
    -          T_BOOK.ID * T_BOOK.AUTHOR_ID,                              // Using the overloaded "*" operator
    -          T_BOOK.ID + T_BOOK.AUTHOR_ID * 3 + 4,                      // Using the overloaded "+" operator
    -          T_BOOK.TITLE || " abc" || " xy"                            // Using the overloaded "||" operator
    -        )                                                            //
    -        from T_BOOK                                                  // No need to use parentheses or "." here
    -        leftOuterJoin (                                              //
    -          select (x.ID, x.YEAR_OF_BIRTH)                             // Dereference fields from aliased table
    -          from x                                                     //
    -          limit 1                                                    //
    -          asTable x.getName()                                        //
    -        )                                                            //
    -        on T_BOOK.AUTHOR_ID === x.ID                                 // Using the overloaded "===" operator
    -        where (T_BOOK.ID <> 2)                                       // Using the olerloaded "<>" operator
    -        or (T_BOOK.TITLE in ("O Alquimista", "Brida"))               // Neat IN predicate expression
    -        fetch                                                        //
    -    ) {                                                              //
    -      println(r)                                                     //
    -    }                                                                //
    -  }                                                                  //
    -}]]></scala><html>
    -
    -							<p>
    -								For more details about jOOQ's Scala integration, please refer to the manual's section about <reference id="scala-sql-building" title="SQL building with Scala"/>.
    -							</p>
    -						</html></content>
    -					</section>
    -					
    -					<section id="dependencies">
    -						<title>Dependencies</title>
    -						<content><html>
    -							<p>
    -								Dependencies are a big hassle in modern software. Many libraries depend on other, non-JDK library parts that come in different, incompatible versions, potentially causing trouble in your runtime environment. jOOQ has no external dependencies on any third-party libraries.
    -							</p>
    -							<p>
    -								However, the above rule has some exceptions:
    -							</p>
    -							<ul>
    -								<li><reference id="logging" title="logging APIs"/> are referenced as "optional dependencies". jOOQ tries to find <a href="http://www.slf4j.org/">slf4j</a> or <a href="http://logging.apache.org/log4j">log4j</a> on the classpath. If it fails, it will use the <reference class="java.util.logging.Logger"/></li>
    -								<li>Oracle ojdbc types used for array creation are loaded using reflection. The same applies to Postgres PG* types.</li>
    -								<li>Small libraries with compatible licenses are incorporated into jOOQ. These include <a href="https://github.com/jOOQ/jOOR">jOOR</a>, <a href="https://github.com/jOOQ/jOOU">jOOU</a>, parts of <a href="http://opencsv.sourceforge.net/">OpenCSV</a>, <a href="http://code.google.com/p/json-simple/">json simple</a>, parts of <a href="http://commons.apache.org/lang/">commons-lang</a></li>
    -								<li><a href="http://docs.oracle.com/javaee/6/api/javax/persistence/package-summary.html">javax.persistence</a> and <a href="http://docs.oracle.com/javaee/6/api/javax/validation/package-summary.html">javax.validation</a> will be needed if you activate the relevant <reference id="code-generation" title="code generation flags"/></li>
    -							</ul>
    -						</html></content>
    -					</section>
    -					
    -					<section id="build-your-own">
    -						<title>Build your own</title>
    -						<content><html>
    -							<p>
    -								In order to build jOOQ yourself, please download the sources from <a href="https://github.com/jOOQ/jOOQ">https://github.com/jOOQ/jOOQ</a> and use Maven to build jOOQ, preferably in Eclipse. jOOQ requires Java 6+ to compile and run.
    -							</p>
    -							<p>
    -								Some useful hints to build jOOQ yourself:
    -							</p>
    -							<ul>
    -								<li>Get the latest version of <a href="http://git-scm.com">Git</a> or <a href="http://www.eclipse.org/egit">EGit</a></li>
    -								<li>Get the latest version of <a href="http://maven.apache.org">Maven</a> or <a href="http://eclipse.org/m2e">M2E</a></li>
    -								<li>Check out the jOOQ sources from <a href="https://github.com/jOOQ/jOOQ">https://github.com/jOOQ/jOOQ</a></li>
    -								<li>Optionally, import Maven artefacts into an Eclipse workspace using the following command (see the <a href="http://maven.apache.org/plugins/maven-eclipse-plugin/">maven-eclipse-plugin</a> documentation for details):
    -									<ul>
    -										<li><code>mvn eclipse:eclipse</code></li>
    -									</ul>
    -								</li>
    -								<li>Build the <code>jooq-parent</code> artefact by using any of these commands:
    -									<ul>
    -										<li><code>mvn clean package</code><br/>create .jar files in <code>${project.build.directory}</code></li>
    -										<li><code>mvn clean install</code><br/>install the .jar files in your local repository (e.g. <code>~/.m2</code>)</li>
    -										<li><code>mvn clean {goal} -Dmaven.test.skip=true</code><br/>don't run unit tests when building artefacts</li>
    -									</ul>
    -								</li>
    -							</ul>
    -						</html></content>
    -					</section>
    -					
    -					<section id="semantic-versioning">
    -						<title>jOOQ and backwards-compatibility</title>
    -						<content><html>
    -							<p>
    -								jOOQ follows the rules of semantic versioning according to <a href="http://semver.org">http://semver.org</a> quite strictly. Those rules impose a versioning scheme [X].[Y].[Z] that can be summarised as follows:
    -							</p>
    -							<ul>
    -								<li>If a patch release includes bugfixes, performance improvements and API-irrelevant new features, [Z] is incremented by one.</li>
    -								<li>If a minor release includes backwards-compatible, API-relevant new features, [Y] is incremented by one and [Z] is reset to zero.</li>
    -								<li>If a major release includes backwards-incompatible, API-relevant new features, [X] is incremented by one and [Y], [Z] are reset to zero.</li>
    -							</ul>
    -							
    -							<h3>jOOQ's understanding of backwards-compatibility</h3>
    -							<p>
    -								Backwards-compatibility is important to jOOQ. You've chosen jOOQ as a strategic SQL engine and you don't want your SQL to break. That is why there is at most one major release per year, which changes only those parts of jOOQ's API and functionality, which were agreed upon on the user group. During the year, only minor releases are shipped, adding new features in a backwards-compatible way
    -							</p>
    -							<p>
    -								However, there are some elements of API evolution that would be considered backwards-incompatible in other APIs, but not in jOOQ. As discussed later on in the section about <reference id="dsl-and-non-dsl" title="jOOQ's DSL API"/>, much of jOOQ's API is indeed an internal domain-specific language implemented mostly using Java interfaces. Adding language elements to these interfaces means any of these actions:  
    -							</p>
    -							<ul>
    -								<li>Adding methods to the interface</li>
    -								<li>Overloading methods for convenience</li>
    -								<li>Changing the type hierarchy of interfaces</li>
    -							</ul>
    -							
    -							<p>
    -								It becomes obvious that it would be impossible to add new language elements (e.g. new <reference id="column-expressions" title="SQL functions"/>, new <reference id="select-statement" title="SELECT clauses"/>) to the API without breaking any client code that actually implements those interfaces. Hence, the following rule should be observed: 
    -							</p>
    -							
    -							<p>jOOQ's DSL interfaces should not be implemented by client code! Extend only those extension points that are explicitly documented as "extendable" (e.g. <reference id="custom-queryparts" title="custom QueryParts"/>)</p>
    -						</html></content>
    -					</section>
    -				</sections>
    -			</section>
    -
    -			<section id="sql-building">
    -				<title>SQL building</title>
    -				<content><html>
    -					<p>
    -					    SQL is a declarative language that is hard to integrate into procedural, object-oriented, functional or any other type of programming languages. jOOQ's philosophy is to give SQL the credit it deserves and integrate SQL itself as an <a href="http://en.wikipedia.org/wiki/Domain_Specific_Language">"internal domain specific language"</a> directly into Java.
    -					</p>
    -					<p>
    -						With this philosophy in mind, SQL building is the main feature of jOOQ. All other features (such as <reference id="sql-execution" title="SQL execution"/> and <reference id="code-generation" title="code generation"/>) are mere convenience built on top of jOOQ's SQL building capabilities.
    -					</p>
    -					<p>
    -						This section explains all about the various syntax elements involved with jOOQ's SQL building capabilities. For a complete overview of all syntax elements, please refer to the manual's section about <reference id="reference-bnf-notation"/>
    -					</p>
    -				</html></content>
    -
    -				<sections>
    -                    <redirect id="factory" redirect-to="dsl">
    -                        <redirect id="factory-subclasses" redirect-to="dsl-subclasses"/>
    -                    </redirect>
    -                    
    -					<section id="dsl">
    -					    <title>The DSL type</title>
    -					    <content><html>
    -							<p>
    -								jOOQ exposes a lot of interfaces and hides most implementation facts from client code. The reasons for this are:
    -							</p>
    -							<ul>
    -								<li>Interface-driven design. This allows for modelling queries in a fluent API most efficiently</li>
    -								<li>Reduction of complexity for client code.</li>
    -								<li>API guarantee. You only depend on the exposed interfaces, not concrete (potentially dialect-specific) implementations.</li>
    -							</ul>
    -							<p>
    -								The <reference class="org.jooq.impl.DSL"/> class is the main class from where you will create all jOOQ objects.	It serves as a static factory for <reference id="table-expressions" title="table expressions"/>, <reference id="column-expressions" title="column expressions"/> (or "fields"), <reference id="conditional-expressions" title="conditional expressions"/> and many other <reference id="queryparts" title="QueryParts"/>.
    -							</p>
    -
    -							<h3>The static DSL API</h3>
    -							<p>
    -								With jOOQ 2.0, static factory methods have been introduced in order to make client code look more like SQL. Ideally, when working with jOOQ, you will simply static import all methods from the DSL class:
    -							</p>
    -
    -</html><java>import static org.jooq.impl.DSL.*;</java><html>
    -
    -							<p>
    -							    Note, that when working with Eclipse, you could also add the DSL to your favourites. This will allow to access functions even more fluently:
    -							</p>
    -</html><java>concat(trim(FIRST_NAME), trim(LAST_NAME));
    -
    -// ... which is in fact the same as:
    -DSL.concat(DSL.trim(FIRST_NAME), DSL.trim(LAST_NAME));</java></content>
    -					    
    -					    <sections>
    -							<section id="dsl-subclasses">
    -								<title>DSL subclasses</title>
    -								<content><html>
    -									<p>
    -										There are a couple of subclasses for the general DSL. Each SQL dialect has its own dialect-specific DSL. For instance, if you're only using the MySQL dialect, you can choose to reference the MySQLDSL instead of the standard DSL:
    -									</p>
    -									<p>
    -										The advantage of referencing a dialect-specific DSL lies in the fact that you have access to more proprietary RDMBS functionality. This may include:
    -									</p>
    -									<ul>
    -		    							<li>MySQL's encryption functions</li>
    -		    							<li>PL/SQL constructs, pgplsql, or any other dialect's ROUTINE-language (maybe in the future)</li>
    -									</ul>
    -								</html></content>
    -							</section>
    -					    </sections>
    -					</section>
    -                    
    -                    <redirect id="executor" redirect-to="dsl-context">
    -                        <redirect id="sql-dialects" redirect-to="sql-dialects"/>
    -                        <redirect id="connection-vs-datasource" redirect-to="connection-vs-datasource"/>
    -                        <redirect id="custom-data" redirect-to="custom-data"/>
    -                        <redirect id="custom-execute-listeners" redirect-to="custom-execute-listeners"/>
    -                        <redirect id="custom-settings" redirect-to="custom-settings"/>
    -                        <redirect id="runtime-schema-mapping" redirect-to="runtime-schema-mapping"/>
    -                    </redirect>
    -					
    -					<section id="dsl-context">
    -						<title>The DSLContext class</title>
    -						<content><html>
    -							<p>
    -							    DSLContext references a <reference class="org.jooq.Configuration"/>, an object that configures jOOQ's behaviour when executing queries (see <reference id="sql-execution"/> for more details). Unlike the static DSL, the DSLContext allow for creating <reference id="sql-statements" title="SQL statements"/> that are already "configured" and ready for execution.
    -							</p>
    -							
    -                            <h3>Fluent creation of a DSLContext object</h3>
    -                            <p>
    -                                The DSLContext object can be created fluently from the <reference id="dsl" title="DSL type"/>:
    -                            </p>
    -
    -</html><java><![CDATA[// Create it from a pre-existing configuration
    -DSLContext create = DSL.using(configuration);
    -
    -// Create it from ad-hoc arguments
    -DSLContext create = DSL.using(connection, dialect);]]></java><html>
    -
    -                            <p>
    -                                If you do not have a reference to a pre-existing Configuration object (e.g. created from <reference class="org.jooq.impl.DefaultConfiguration"/>), the various overloaded <code>DSL.using()</code> methods will create one for you.
    -                            </p>
    -                            
    -							<h3>Contents of a Configuration object</h3>
    -							<p>
    -							    A Configuration can be supplied with these objects:
    -							</p>
    -							<ul>
    -								<li><reference class="org.jooq.SQLDialect"/> : The dialect of your database. This may be any of the currently supported database types (see <reference id="sql-dialects"/> for more details)</li>
    -    							<li><reference class="org.jooq.conf.Settings"/> : An optional runtime configuration (see <reference id="custom-settings"/> for more details)</li>
    -								<li><reference class="org.jooq.ExecuteListenerProvider"/> : An optional reference to a provider class that can provide execute listeners to jOOQ (see <reference id="execute-listeners"/> for more details)</li>
    -                                <li>
    -									Any of these:
    -									<ul>
    -										<li><reference class="java.sql.Connection"/> : An optional JDBC Connection that will be re-used for the whole lifecycle of your Configuration (see <reference id="connection-vs-datasource"/> for more details). For simplicity, this is the use-case referenced from this manual, most of the time.</li>
    -		    							<li><reference class="java.sql.DataSource"/> : An optional JDBC DataSource that will be re-used for the whole lifecycle of your Configuration. If you prefer using DataSources over Connections, jOOQ will internally fetch new Connections from your DataSource, conveniently closing them again after query execution. This is particularly useful in J2EE or Spring contexts (see <reference id="connection-vs-datasource"/> for more details)</li>
    -		    							<li><reference class="org.jooq.ConnectionProvider"/> : A custom abstraction that is used by jOOQ to "acquire" and "release" connections. jOOQ will internally "acquire" new Connections from your ConnectionProvider, conveniently "releasing" them again after query execution. (see <reference id="connection-vs-datasource"/> for more details)</li>
    -									</ul>
    -								</li>
    -							</ul>
    -							
    -							<p>
    -								Wrapping a Configuration object, a DSLContext can construct <reference id="sql-statements" title="statements"/>, for later <reference id="sql-execution" title="execution"/>. An example is given here:
    -							</p>
    -</html><java><![CDATA[// The DSLContext is "configured" with a Connection and a SQLDialect
    -DSLContext create = DSL.using(connection, dialect);
    -
    -// This select statement contains an internal reference to the DSLContext's Configuration:
    -Select<?> select = create.selectOne();
    -
    -// Using the internally referenced Configuration, the select statement can now be executed:
    -Result<?> result = select.fetch();]]></java><html>
    -
    -                            <p>
    -                                Note that you do not need to keep a reference to a DSLContext. You may as well inline your local variable, and fluently execute a SQL statement as such:
    -                            </p>
    -
    -</html><java><![CDATA[// Execute a statement from a single execution chain:
    -Result<?> result =
    -DSL.using(connection, dialect)
    -   .select()
    -   .from(BOOK)
    -   .where(BOOK.TITLE.like("Animal%"))
    -   .fetch();]]></java></content>
    -
    -						<sections>
    -							<section id="sql-dialects">
    -								<title>SQL Dialect</title>
    -								<content><html>
    -									<p>
    -										While jOOQ tries to represent the SQL standard as much as possible, many features are vendor-specific to a given database and to its "SQL dialect". jOOQ models this using the <reference class="org.jooq.SQLDialect"/> enum type.
    -									</p>
    -									<p>
    -										The SQL dialect is one of the main attributes of a <reference id="dsl-context" title="Configuration"/>. Queries created from DSLContexts will assume dialect-specific behaviour when <reference id="sql-rendering" title="rendering SQL"/> and <reference id="variable-binding" title="binding bind values"/>.
    -									</p>
    -									<p>
    -										Some parts of the jOOQ API are officially supported only by a given subset of the supported SQL dialects. For instance, the <reference id="connect-by-clause" title="Oracle CONNECT BY clause"/>, which is supported by the Oracle and CUBRID databases, is annotated with a <reference class="org.jooq.Support"/> annotation, as such:
    -									</p>
    -</html><java><![CDATA[/**
    - * Add an Oracle-specific <code>CONNECT BY</code> clause to the query
    - */
    -@Support({ SQLDialect.CUBRID, SQLDialect.ORACLE })
    -SelectConnectByConditionStep<R> connectBy(Condition condition);]]></java><html>
    -
    -									<p>
    -									    jOOQ API methods which are not annotated with the <reference class="org.jooq.Support"/> annotation, or which are annotated with the Support annotation, but without any SQL dialects can be safely used in all SQL dialects. An example for this is the <reference id="select-statement" title="SELECT statement"/> factory method:
    -									</p>
    -</html><java><![CDATA[/**
    - * Create a new DSL select statement.
    - */
    -@Support
    -SelectSelectStep<R> select(Field<?>... fields);]]></java><html>
    -
    -									<h3>jOOQ's SQL clause simulation capabilities</h3>
    -									<p>
    -										The aforementioned Support annotation does not only designate, which databases natively support a feature. It also indicates that a feature is simulated by jOOQ for some databases lacking this feature. An example of this is the <reference id="distinct-predicate" title="DISTINCT predicate"/>, a predicate syntax defined by SQL:1999 and implemented only by H2, HSQLDB, and Postgres:
    -									</p>
    -
    -</html><sql><![CDATA[A IS DISTINCT FROM B]]></sql><html>
    -
    -									<p>
    -										Nevertheless, the <code>IS DISTINCT FROM</code> predicate is supported by jOOQ in all dialects, as its semantics can be expressed with an equivalent <reference id="case-expressions" title="CASE expression"/>. For more details, see the manual's section about the <reference id="distinct-predicate" title="DISTINCT predicate"/>.
    -									</p>
    -									
    -									<h3>jOOQ and the Oracle SQL dialect</h3>
    -									<p>
    -										Oracle SQL is much more expressive than many other SQL dialects. It features many unique keywords, clauses and functions that are out of scope for the SQL standard. Some examples for this are
    -									</p>
    -									<ul>
    -										<li>The <reference id="connect-by-clause" title="CONNECT BY clause"/>, for hierarchical queries</li>
    -										<li>The <reference id="pivot-tables" title="PIVOT"/> keyword for creating PIVOT tables</li>
    -										<li><reference id="oracle-packages" title="Packages"/>, <reference id="oracle-member-procedures" title="object-oriented user-defined types, member procedures"/> as described in the section about <reference id="stored-procedures" title="stored procedures and functions"/></li>
    -										<li>Advanced analytical functions as described in the section about <reference id="window-functions" title="window functions"/></li>
    -									</ul>
    -
    -									<p>
    -										jOOQ has a historic affinity to Oracle's SQL extensions. If something is supported in Oracle SQL, it has a high probability of making it into the jOOQ API
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="connection-vs-datasource">
    -								<title>Connection vs. DataSource</title>
    -								<content><html>
    -									<h3>Interact with JDBC Connections</h3>
    -									<p>
    -										While you can use jOOQ for <reference id="sql-building" title="SQL building"/> only, you can also run queries against a JDBC <reference class="java.sql.Connection"/>. Internally, jOOQ creates <reference class="java.sql.Statement"/> or <reference class="java.sql.PreparedStatement"/> objects from such a Connection, in order to execute statements. The normal operation mode is to provide a <reference id="dsl-context" title="Configuration"/> with a JDBC Connection, whose lifecycle you will control yourself. This means that jOOQ will not actively close connections, rollback or commit transactions.
    -									</p>
    -									<p>
    -										Note, in this case, jOOQ will internally use a <reference class="org.jooq.impl.DefaultConnectionProvider"/>, which you can reference directly if you prefer that. The DefaultConnectionProvider exposes various transaction-control methods, such as commit(), rollback(), etc.
    -									</p>
    -									
    -									<h3>Interact with JDBC DataSources</h3>
    -									<p>
    -										If you're in a J2EE or Spring context, however, you may wish to use a <reference class="javax.sql.DataSource"/> instead. Connections obtained from such a DataSource will be closed after query execution by jOOQ. The semantics of such a close operation should be the returning of the connection into a connection pool, not the actual closing of the underlying physical connection. Typically, this makes sense in an environment using distributed JTA transactions. An example of using DataSources with jOOQ can be seen in the tutorial section about <reference id="jooq-with-spring" title="using jOOQ with Spring"/>.
    -									</p>
    -									<p>
    -										Note, in this case, jOOQ iwll internally use a <reference class="org.jooq.impl.DataSourceConnectionProvider"/>, which you can reference directly if you prefer that.
    -									</p>
    -									
    -									<h3>Inject custom behaviour</h3>
    -									<p>
    -										If your specific environment works differently from any of the above approaches, you can inject your own custom implementation of a ConnectionProvider into jOOQ. This is the API contract you have to fulfil:
    -									</p>
    -									
    -</html><java><![CDATA[public interface ConnectionProvider {
    -
    -    // Provide jOOQ with a connection
    -    Connection acquire() throws DataAccessException;
    -  
    -    // Get a connection back from jOOQ
    -    void release(Connection connection) throws DataAccessException;
    -}]]></java><html>
    -
    -									<p>
    -									    Note that <code>acquire()</code> should always return the same Connection until this connection is returned via <code>release()</code> 
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -							<section id="custom-data">
    -								<title>Custom data</title>
    -								<content><html>
    -									<p>
    -										In advanced use cases of integrating your application with jOOQ, you may want to put custom data into your <reference id="dsl-context" title="Configuration"/>, which you can then access from your...
    -									</p>
    -									
    -									<ul>
    -										<li><reference id="custom-execute-listeners" title="Custom ExecuteListeners"/></li>
    -										<li><reference id="custom-queryparts" title="Custom QueryParts"/></li>
    -									</ul>
    -									
    -									<p>
    -										Here is an example of how to use the custom data API. Let's assume that you have written an <reference id="execute-listeners" title="ExecuteListener"/>, that prevents <code>INSERT</code> statements, when a given flag is set to <code>true</code>: 
    -									</p>
    -
    -</html><java><![CDATA[// Implement an ExecuteListener
    -public class NoInsertListener extends DefaultExecuteListener {
    -
    -    @Override
    -    public void start(ExecuteContext ctx) {
    -    
    -        // This listener is active only, when your custom flag is set to true
    -        if (Boolean.TRUE.equals(ctx.configuration().data("com.example.my-namespace.no-inserts"))) {
    -        
    -            // If active, fail this execution, if an INSERT statement is being executed
    -            if (ctx.query() instanceof Insert) {
    -                throw new DataAccessException("No INSERT statements allowed");
    -            }
    -        }
    -    }
    -}]]></java><html>
    -									<p>
    -										See the manual's section about <reference id="execute-listeners" title="ExecuteListeners"/> to learn more about how to implement an <code>ExecuteListener</code>.
    -									</p>
    -									
    -									<p>
    -										Now, the above listener can be added to your <reference id="dsl-context" title="Configuration"/>, but you will also need to pass the flag to the <code>Configuration</code>, in order for the listener to work:
    -									</p>
    -									
    -</html><java><![CDATA[// Create your Configuration
    -Configuration configuration = new DefaultConfiguration().set(connection).set(dialect);
    -
    -// Set a new execute listener provider onto the configuration:
    -configuration.set(new DefaultExecuteListenerProvider(new NoInsertListener()));
    -
    -// Use any String literal to identify your custom data
    -configuration.data("com.example.my-namespace.no-inserts", true);
    -
    -// Try to execute an INSERT statement
    -try {
    -    DSL.using(configuration)
    -       .insertInto(AUTHOR, AUTHOR.ID, AUTHOR.LAST_NAME)
    -       .values(1, "Orwell")
    -       .execute();
    -          
    -    // You shouldn't get here
    -    Assert.fail();
    -}
    -
    -// Your NoInsertListener should be throwing this exception here:
    -catch (DataAccessException expected) {
    -    Assert.assertEquals("No INSERT statements allowed", expected.getMessage());
    -}]]></java><html>
    -
    -									<p>
    -										Using the <code>data()</code> methods, you can store and retrieve custom data in your <code>Configurations</code>.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="custom-execute-listeners">
    -								<title>Custom ExecuteListeners</title>
    -								<content><html>
    -									<p>
    -										<code>ExecuteListeners</code> are a useful tool to...
    -									</p>
    -									
    -									<ul>
    -										<li>implement custom logging</li>
    -										<li>apply triggers written in Java</li>
    -										<li>collect query execution statistics</li>
    -										<li>integrate with the <reference id="jooq-console" title="jOOQ Console"/></li>
    -									</ul>
    -									
    -									<p>
    -										ExecuteListeners are hooked into your <reference id="dsl-context" title="Configuration"/> by returning them from an <reference class="org.jooq.ExecuteListenerProvider"/>:
    -									</p>
    -
    -</html><java><![CDATA[// Create your Configuration
    -Configuration configuration = new DefaultConfiguration().set(connection).set(dialect);
    -
    -// Hook your listener providers into the configuration:
    -configuration.set(
    -    new DefaultExecuteListenerProvider(new MyFirstListener()),
    -    new DefaultExecuteListenerProvider(new PerformanceLoggingListener()),
    -    new DefaultExecuteListenerProvider(new NoInsertListener())
    -);]]></java><html>
    -									
    -									<p>
    -										See the manual's section about <reference id="execute-listeners" title="ExecuteListeners"/> to see examples of such listener implementations.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="custom-settings">
    -								<title>Custom Settings</title>
    -								<content><html>
    -									<p>
    -										The jOOQ Configuration allows for some optional configuration elements to be used by advanced users. The <reference class="org.jooq.conf.Settings" /> class is a JAXB-annotated type, that can be provided to a Configuration in several ways:
    -									</p>
    -									<ul>
    -										<li>In the DSLContext constructor (<code>DSL.using()</code>). This will override default settings below</li>
    -										<li>in the <reference class="org.jooq.impl.DefaultConfiguration"/> constructor. This will override default settings below</li>
    -                                        <li>From a location specified by a JVM parameter: -Dorg.jooq.settings</li>
    -										<li>From the classpath at /jooq-settings.xml</li>
    -										<li>From the settings defaults, as specified in <a href="http://www.jooq.org/xsd/jooq-runtime-{runtime-xsd-version}.xsd" title="The jOOQ Runtime configuration XSD">http://www.jooq.org/xsd/jooq-runtime-{runtime-xsd-version}.xsd</a></li>
    -									</ul>
    -									<h3>Example</h3>
    -									<p>
    -										For example, if you want to indicate to jOOQ, that it should inline all bind variables, and execute static <reference class="java.sql.Statement"/> instead of binding its variables to <reference class="java.sql.PreparedStatement"/>, you can do so by creating the following DSLContext:
    -									</p>
    -</html><java><![CDATA[Settings settings = new Settings();
    -settings.setStatementType(StatementType.STATIC_STATEMENT);
    -DSLContext create = DSL.using(connection, dialect, settings);]]></java><html>
    -									<p>
    -										Subsequent sections of the manual contain some more in-depth explanations about these settings:
    -									</p>
    -									<ul>
    -										<li>
    -		     								<reference id="schema-mapping" title="Runtime schema and table mapping"/>
    -		   								</li>
    -		     							<li>
    -		     								<reference id="optimistic-locking" title="Execute CRUD with optimistic locking enabled"/>
    -		     							</li>
    -		     							<li>
    -		     								<reference id="logging" title="Enabling DEBUG logging of all executed SQL"/>
    -		     							</li>
    -		   							</ul>
    -		   							<p>
    -										Please refer to the jOOQ runtime configuration XSD for more details:<br/>
    -										<a href="http://www.jooq.org/xsd/jooq-runtime-{runtime-xsd-version}.xsd" title="The jOOQ Runtime configuration XSD">http://www.jooq.org/xsd/jooq-runtime-{runtime-xsd-version}.xsd</a>
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -							<section id="runtime-schema-mapping">
    -								<title>Runtime schema and table mapping</title>
    -								<content><html>
    -									<h3>Mapping your DEV schema to a productive environment</h3>
    -									<p>
    -										You may wish to design your database in a way that you have several instances of your schema. This is useful when you want to cleanly separate data belonging to several customers / organisation units / branches / users and put each of those entities' data in a separate database or schema.
    -									</p>
    -									
    -									<p>
    -										In our AUTHOR example this would mean that you provide a book reference database to several companies, such as My Book World and Books R Us. In that case, you'll probably have a schema setup like this:
    -									</p>
    -									<ul>
    -										<li>DEV: Your development schema. This will be the schema that you base code generation upon, with jOOQ </li>
    -										<li>MY_BOOK_WORLD: The schema instance for My Book World </li>
    -										<li>BOOKS_R_US: The schema instance for Books R Us </li>
    -									</ul>
    -
    -									<h3>Mapping DEV to MY_BOOK_WORLD with jOOQ</h3>
    -									<p>
    -										When a user from My Book World logs in, you want them to access the MY_BOOK_WORLD schema using classes generated from DEV. This can be achieved with the <reference class="org.jooq.conf.RenderMapping"/> class, that you can equip your Configuration's <reference id="custom-settings" title="settings"/> with. Take the following example:
    -									</p>
    -
    -</html><java>Settings settings = new Settings()
    -    .withRenderMapping(new RenderMapping()
    -    .withSchemata(
    -        new MappedSchema().withInput("DEV")
    -                          .withOutput("MY_BOOK_WORLD")));
    -
    -// Add the settings to the DSLContext
    -DSLContext create = DSL.using(connection, SQLDialect.ORACLE, settings);
    -
    -// Run queries with the "mapped" Configuration
    -create.selectFrom(AUTHOR).fetch();</java><html>
    -
    -									<p>
    -										The query executed with a Configuration equipped with the above mapping will in fact produce this SQL statement:
    -									</p>
    -									
    -</html><sql>SELECT * FROM MY_BOOK_WORLD.AUTHOR</sql><html>
    -									<p>
    -										Even if AUTHOR was generated from DEV.
    -									</p>
    -
    -									<h3>Mapping several schemata</h3>
    -									<p>
    -										Your development database may not be restricted to hold only one DEV schema. You may also have a LOG schema and a MASTER schema. Let's say the MASTER schema is shared among all customers, but each customer has their own LOG schema instance. Then you can enhance your RenderMapping like this (e.g. using an XML configuration file):
    -									</p>
    -
    -</html><xml><![CDATA[<settings xmlns="http://www.jooq.org/xsd/jooq-runtime-{runtime-xsd-version}.xsd">
    -  <renderMapping>
    -    <schemata>
    -      <schema>
    -        <input>DEV</input>
    -        <output>MY_BOOK_WORLD</output>
    -      </schema>
    -      <schema>
    -        <input>LOG</input>
    -        <output>MY_BOOK_WORLD_LOG</output>
    -      </schema>
    -    </schemata>
    -  </renderMapping>
    -</settings>]]></xml><html>
    -
    -                            		<p>
    -                            			Note, you can load the above XML file like this:
    -                           			</p>
    -
    -</html><java>Settings settings = JAXB.unmarshal(new File("jooq-runtime.xml"), Settings.class);</java><html>
    -
    -									<p>
    -										This will map generated classes from DEV to MY_BOOK_WORLD, from LOG to MY_BOOK_WORLD_LOG, but leave the MASTER schema alone. Whenever you want to change your mapping configuration, you will have to create a new Configuration.
    -									</p>
    -
    -
    -									<h3>Using a default schema</h3>
    -                            		<p>
    -                            			If you wish not to render any schema name at all, use the following Settings property for this:
    -                           			</p>
    -
    -
    -</html><java>Settings settings = new Settings()
    -    .withRenderSchema(false);
    -
    -// Add the settings to the Configuration
    -DSLContext create = DSL.using(connection, SQLDialect.ORACLE, settings);
    -
    -// Run queries that omit rendering schema names
    -create.selectFrom(AUTHOR).fetch();</java><html>
    -
    -									<h3>Mapping of tables</h3>
    -									<p>
    -										Not only schemata can be mapped, but also tables. If you are not the owner of the database your application connects to, you might need to install your schema with some sort of prefix to every table. In our examples, this might mean that you will have to map DEV.AUTHOR to something MY_BOOK_WORLD.MY_APP__AUTHOR, where MY_APP__ is a prefix applied to all of your tables. This can be achieved by creating the following mapping: 
    -									</p>
    -
    -</html><java>Settings settings = new Settings()
    -    .withRenderMapping(new RenderMapping()
    -    .withSchemata(
    -        new MappedSchema().withInput("DEV")
    -                          .withOutput("MY_BOOK_WORLD")
    -                          .withTables(
    -         new MappedTable().withInput("AUTHOR")
    -                          .withOutput("MY_APP__AUTHOR"))));
    -
    -// Add the settings to the Configuration
    -DSLContext create = DSL.using(connection, SQLDialect.ORACLE, settings);
    -
    -// Run queries with the "mapped" configuration
    -create.selectFrom(AUTHOR).fetch();</java><html>
    -
    -									<p>
    -										The query executed with a Configuration equipped with the above mapping will in fact produce this SQL statement:
    -									</p>
    -									
    -</html><sql>SELECT * FROM MY_BOOK_WORLD.MY_APP__AUTHOR</sql><html>
    -
    -		                            <p>
    -		                           		Table mapping and schema mapping can be applied independently, by specifying several MappedSchema entries in the above configuration. jOOQ will process them in order of appearance and map at first match. Note that you can always omit a MappedSchema's output value, in case of which, only the table mapping is applied. If you omit a MappedSchema's input value, the table mapping is applied to all schemata!
    -		                            </p>
    -
    -									<h3>Hard-wiring mappings at code-generation time</h3>
    -									<p>
    -										Note that the manual's section about <reference id="schema-mapping" title="code generation schema mapping"/> explains how you can hard-wire your schema mappings at code generation time
    -									</p>									
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="sql-statements">
    -						<title>SQL Statements</title>
    -						<content><html>
    -							<p>
    -								jOOQ currently supports 6 types of SQL statements. All of these statements are constructed from a DSLContext instance with an optional <reference id="connection-vs-datasource" title="JDBC Connection or DataSource"/>. If supplied with a Connection or DataSource, they can be executed. Depending on the <reference id="query-vs-resultquery" title="query type"/>, executed queries can return results.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="dsl-and-non-dsl">
    -								<title>jOOQ's DSL and model API</title>
    -								<content><html>
    -									<p>
    -										jOOQ ships with its own DSL (or	<a href="http://en.wikipedia.org/wiki/Domain-specific_language" title="Domain Specific Language">Domain Specific Language</a>) that	simulates SQL in Java. This means, that you can	write SQL statements almost as if Java natively supported it, just like .NET's C# does with <a href="http://msdn.microsoft.com/en-us/library/bb425822.aspx">LINQ to SQL.</a>
    -									</p>
    -									<p>
    -										Here is an example to illustrate what that means:
    -									</p>
    -									
    -</html><code-pair><sql><![CDATA[-- Select all books by authors born after 1920,
    --- named "Paulo" from a catalogue:
    -SELECT *
    -  FROM author a
    -  JOIN book b ON a.id = b.author_id
    - WHERE a.year_of_birth > 1920
    -   AND a.first_name = 'Paulo'
    - ORDER BY b.title]]></sql><java><![CDATA[Result<Record> result =
    -create.select()
    -      .from(AUTHOR.as("a"))
    -      .join(BOOK.as("b")).on(a.ID.equal(b.AUTHOR_ID))
    -      .where(a.YEAR_OF_BIRTH.greaterThan(1920)
    -      .and(a.FIRST_NAME.equal("Paulo")))
    -      .orderBy(b.TITLE)
    -      .fetch();]]></java></code-pair><html>
    -
    -									<p>
    -										We'll see how the aliasing works later in the section about <reference id="aliased-tables" title="aliased tables"/>
    -									</p>
    -
    -									<h3>jOOQ as an internal domain specific language in Java (a.k.a. the DSL API)</h3>
    -									<p>
    -										Many other frameworks have similar APIs with similar feature sets. Yet, what makes jOOQ special is its informal <reference id="reference-bnf-notation" title="BNF notation"/> modelling a unified SQL dialect suitable for many vendor-specific dialects, and implementing that BNF notation as a hierarchy of interfaces in Java. This concept is extremely powerful, when <reference id="jooq-in-modern-ides" title="using jOOQ in modern IDEs" /> with syntax completion. Not only can you code much faster, your SQL code will be compile-checked to a certain extent. An example of a DSL query equivalent to the previous one is given here:
    -									</p>
    -									
    -</html><java><![CDATA[DSLContext create = DSL.using(connection, dialect);
    -Result<?> result = create.select()
    -                         .from(AUTHOR)
    -                         .join(BOOK).on(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -                         .fetch();]]></java><html>
    -
    -                         			<p>
    -                         				Unlike other, simpler frameworks that use <a href="http://en.wikipedia.org/wiki/Fluent_interface">"fluent APIs"</a> or <a href="http://en.wikipedia.org/wiki/Method_chaining">"method chaining"</a>, jOOQ's BNF-based interface hierarchy will not allow bad query syntax. The following will not compile, for instance:
    -                         			</p>
    -</html><java><![CDATA[DSLContext create = DSL.using(connection, dialect);
    -Result<?> result = create.select()
    -                         .join(BOOK).on(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -                      //  ^^^^ "join" is not possible here
    -                         .from(AUTHOR)
    -                         .fetch();
    -
    -Result<?> result = create.select()
    -                         .from(AUTHOR)
    -                         .join(BOOK)
    -                         .fetch();
    -                      //  ^^^^^ "on" is missing here
    -
    -Result<?> result = create.select(rowNumber())
    -                      //         ^^^^^^^^^ "over()" is missing here
    -                         .from(AUTHOR)
    -                         .fetch();
    -
    -Result<?> result = create.select()
    -                         .from(AUTHOR)
    -                         .where(AUTHOR.ID.in(select(BOOK.TITLE).from(BOOK)))
    -                      //                     ^^^^^^^^^^^^^^^^^^
    -                      // AUTHOR.ID is of type Field<Integer> but subselect returns Record1<String>
    -                         .fetch();
    -
    -Result<?> result = create.select()
    -                         .from(AUTHOR)
    -                         .where(AUTHOR.ID.in(select(BOOK.AUTHOR_ID, BOOK.ID).from(BOOK)))
    -                      //                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    -                      // AUTHOR.ID is of degree 1 but subselect returns Record2<Integer, Integer>
    -                         .fetch();]]></java><html>
    -
    -									<h3>History of SQL building and incremental query building (a.k.a. the model API)</h3>
    -									<p>
    -										Historically, jOOQ started out as an object-oriented SQL builder library like any other. This meant that all queries and their syntactic components were modeled as so-called <reference id="queryparts" title="QueryParts"/>, which delegate <reference id="sql-rendering" title="SQL rendering"/> and <reference id="variable-binding" title="variable binding"/> to child components. This part of the API will be referred to as the model API (or non-DSL API), which is still maintained and used internally by jOOQ for incremental query building. An example of incremental query building is given here:
    -									</p>
    -									
    -</html><java><![CDATA[DSLContext create = DSL.using(connection, dialect);
    -SelectQuery<Record> query = create.selectQuery();
    -query.addFrom(AUTHOR);
    -
    -// Join books only under certain circumstances
    -if (join) {
    -    query.addJoin(BOOK, BOOK.AUTHOR_ID.equal(AUTHOR.ID));
    -}
    -
    -Result<?> result = query.fetch();]]></java><html>
    -
    -									<p>
    -										This query is equivalent to the one shown before using the DSL syntax. In fact, internally, the DSL API constructs precisely this SelectQuery object. Note, that you can always access the SelectQuery object to switch between DSL and model APIs:
    -									</p>
    -
    -</html><java><![CDATA[DSLContext create = DSL.using(connection, dialect);
    -SelectFinalStep<?> select = create.select().from(AUTHOR);
    -
    -// Add the JOIN clause on the internal QueryObject representation
    -SelectQuery<?> query = select.getQuery();
    -query.addJoin(BOOK, BOOK.AUTHOR_ID.equal(AUTHOR.ID));]]></java><html>
    -
    -									<h3>Mutability</h3>
    -									<p>
    -										Note, that for historic reasons, the DSL API mixes mutable and immutable behaviour with respect to the internal representation of the <reference id="queryparts" title="QueryPart"/> being constructed. While creating <reference id="conditional-expressions" title="conditional expressions"/>, <reference id="column-expressions" title="column expressions"/> (such as functions) assumes immutable behaviour, creating <reference id="sql-statements" title="SQL statements"/> does not. In other words, the following can be said:
    -									</p>
    -									
    -</html><java><![CDATA[// Conditional expressions (immutable)
    -// -----------------------------------
    -Condition a = BOOK.TITLE.equal("1984");
    -Condition b = BOOK.TITLE.equal("Animal Farm");
    -
    -// The following can be said
    -a       != a.or(b); // or() does not modify a
    -a.or(b) != a.or(b); // or() always creates new objects
    -
    -// Statements (mutable)
    -// --------------------
    -SelectFromStep<?> s1 = select();
    -SelectJoinStep<?> s2 = s1.from(BOOK);
    -SelectJoinStep<?> s3 = s1.from(AUTHOR);
    -
    -// The following can be said
    -s1 == s2; // The internal object is always the same
    -s2 == s3; // The internal object is always the same]]></java><html>
    -
    -									<p>
    -										On the other hand, beware that you can always extract and modify <reference id="bind-values" title="bind values"/> from any <code>QueryPart</code>.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="select-statement">
    -								<title>The SELECT statement</title>
    -								<content><html>
    -									<p>
    -										When you don't just perform <reference id="crud-with-updatablerecords" title="CRUD"/> (i.e. SELECT * FROM your_table WHERE ID = ?), you're usually generating new record types using custom projections. With jOOQ, this is as intuitive, as if using SQL directly. A more or less complete example of the "standard" SQL syntax, plus some extensions, is provided by a query like this:
    -									</p>
    -
    -									<h3>SELECT from a complex table expression</h3>
    -</html><code-pair>
    -<sql><![CDATA[-- get all authors' first and last names, and the number
    --- of books they've written in German, if they have written
    --- more than five books in German in the last three years
    --- (from 2011), and sort those authors by last names
    --- limiting results to the second and third row, locking
    --- the rows for a subsequent update... whew!
    -
    -  SELECT AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME, COUNT(*)
    -    FROM AUTHOR
    -    JOIN BOOK ON AUTHOR.ID = BOOK.AUTHOR_ID
    -   WHERE BOOK.LANGUAGE = 'DE'
    -     AND BOOK.PUBLISHED > '2008-01-01'
    -GROUP BY AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME
    -  HAVING COUNT(*) > 5
    -ORDER BY AUTHOR.LAST_NAME ASC NULLS FIRST
    -   LIMIT 2
    -  OFFSET 1
    -     FOR UPDATE]]></sql><java><![CDATA[// And with jOOQ...
    -
    -
    -
    -
    -DSLContext create = DSL.using(connection, dialect);
    -
    -create.select(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME, count())
    -      .from(AUTHOR)
    -      .join(BOOK).on(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -      .where(BOOK.LANGUAGE.equal("DE"))
    -      .and(BOOK.PUBLISHED.greaterThan("2008-01-01"))
    -      .groupBy(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .having(count().greaterThan(5))
    -      .orderBy(AUTHOR.LAST_NAME.asc().nullsFirst())
    -      .limit(1)
    -      .offset(2)
    -      .forUpdate();]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										Details about the various clauses of this query will be provided in subsequent sections.
    -									</p>
    -
    -									<h3>SELECT from single physical tables</h3>
    -									<p>
    -										A very similar, but limited API is available, if you want to select from single physical tables in order to retrieve <reference id="crud-with-updatablerecords" title="TableRecords or even UpdatableRecords"/>. The decision, which type of select to create is already made at the very first step, when you create the <code>SELECT</code> statement with the DSL or DSLContext types:
    -									</p>
    -
    -</html><java><![CDATA[public <R extends Record> SelectWhereStep<R> selectFrom(Table<R> table);]]></java><html>
    -									<p>
    -										As you can see, there is no way to further restrict/project the selected fields. This just selects all known TableFields in the supplied Table, and it also binds &lt;R extends Record&gt; to your Table's associated Record. An example of such a Query would then be:
    -									</p>
    -</html><java><![CDATA[BookRecord book = create.selectFrom(BOOK)
    -                        .where(BOOK.LANGUAGE.equal("DE"))
    -                        .orderBy(BOOK.TITLE)
    -                        .fetchAny();]]></java><html>
    -
    -                   					<p>
    -                   						The "reduced" SELECT API is limited in the way that it skips DSL access to any of these clauses:
    -                   					</p>
    -                   					<ul>
    -                   						<li><reference id="select-clause"/></li>
    -                   						<li><reference id="join-clause"/></li>
    -                   					</ul>
    -                   					<p>
    -                   						In most parts of this manual, it is assumed that you do not use the "reduced" SELECT API. For more information about the simple SELECT API, see the manual's section about <reference id="record-vs-tablerecord" title="fetching strongly or weakly typed records"/>.
    -                   					</p>
    -								</html></content>
    -
    -								<sections>
    -									<section id="select-clause">
    -										<title>The SELECT clause</title>
    -										<content><html>
    -											<p>
    -												The SELECT clause lets you project your own record types, referencing table fields, functions, arithmetic expressions, etc. The DSL type provides several methods for expressing a SELECT clause:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- The SELECT clause
    -SELECT BOOK.ID, BOOK.TITLE
    -SELECT BOOK.ID, TRIM(BOOK.TITLE)
    -]]></sql><java><![CDATA[// Provide a varargs Fields list to the SELECT clause:
    -Select<?> s1 = create.select(BOOK.ID, BOOK.TITLE);
    -Select<?> s2 = create.select(BOOK.ID, trim(BOOK.TITLE));]]></java>
    -</code-pair><html>
    -
    -											<p>
    -												Some commonly used projections can be easily created using convenience methods:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- Simple SELECTs
    -SELECT COUNT(*)
    -SELECT 0 -- Not a bind variable
    -SELECT 1 -- Not a bind variable
    -]]></sql><java><![CDATA[// Select commonly used values
    -Select<?> select1 = create.selectCount();
    -Select<?> select2 = create.selectZero();
    -Select<?> select2 = create.selectOne();]]></java>
    -</code-pair><html>
    -
    -											<p>
    -												See more details about functions and expressions in the manual's section about <reference id="column-expressions"/>
    -											</p>
    -
    -											<h3>The SELECT DISTINCT clause</h3>
    -											<p>
    -												The DISTINCT keyword can be included in the method name, constructing a SELECT clause
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT DISTINCT BOOK.TITLE]]></sql><java><![CDATA[Select<?> select1 = create.selectDistinct(BOOK.TITLE);]]></java>
    -</code-pair><html>
    -
    -                                            <h3>SELECT *</h3>
    -                                            <p>
    -                                            	jOOQ does not explicitly support the asterisk operator in projections. However, you can omit the projection as in these examples:
    -                                            </p>
    -                                            
    -</html><java><![CDATA[// Explicitly selects all columns available from BOOK
    -create.select().from(BOOK);
    -
    -// Explicitly selects all columns available from BOOK and AUTHOR
    -create.select().from(BOOK, AUTHOR);
    -create.select().from(BOOK).crossJoin(AUTHOR);
    -
    -// Renders a SELECT * statement, as columns are unknown to jOOQ
    -create.select().from(tableByName("BOOK"));]]></java><html>                                            
    -
    -											<h3>Typesafe projections with degree up to {max-row-degree}</h3>
    -											<p>
    -												Since jOOQ 3.0, <reference id="record-n" title="records"/> and <reference id="row-value-expressions" title="row value expressions"/> up to degree {max-row-degree} are now generically typesafe. This is reflected by an overloaded <code>SELECT</code> (and <code>SELECT DISTINCT</code>) API in both DSL and DSLContext. An extract from the DSL type:
    -											</p>
    -											
    -</html><java><![CDATA[// Non-typesafe select methods:
    -public static SelectSelectStep<Record> select(Collection<? extends Field<?>> fields);
    -public static SelectSelectStep<Record> select(Field<?>... fields);
    -
    -// Typesafe select methods:
    -public static <T1>         SelectSelectStep<Record1<T1>>         select(Field<T1> field1);
    -public static <T1, T2>     SelectSelectStep<Record2<T1, T2>>     select(Field<T1> field1, Field<T2> field2);
    -public static <T1, T2, T3> SelectSelectStep<Record3<T1, T2, T3>> select(Field<T1> field1, Field<T2> field2, Field<T3> field3);
    -// [...]]]></java><html>
    -		
    -											<p>
    -												Since the generic R type is bound to some <reference id="record-n" title="Record[N]"/>, the associated T type information can be used in various other contexts, e.g. the <reference id="in-predicate" title="IN predicate"/>. Such a <code>SELECT</code> statement can be assigned typesafely:
    -											</p>
    -
    -</html><java><![CDATA[Select<Record2<Integer, String>> s1 = create.select(BOOK.ID, BOOK.TITLE);
    -Select<Record2<Integer, String>> s2 = create.select(BOOK.ID, trim(BOOK.TITLE));]]></java><html>
    -																				
    -											<p>
    -												For more information about typesafe record types with degree up to {max-row-degree}, see the manual's section about <reference id="record-n" title="Record1 to Record{max-row-degree}"/>.
    -											</p>
    -										</html></content>
    -									</section>
    -
    -									<section id="from-clause">
    -										<title>The FROM clause</title>
    -										<content><html>
    -											<p>
    -												The SQL FROM clause allows for specifying any number of <reference id="table-expressions" title="table expressions"/> to select data from. The following are examples of how to form normal FROM clauses:
    -											</p>
    -
    -</html><code-pair>
    -	<sql><![CDATA[SELECT 1 FROM BOOK
    -SELECT 1 FROM BOOK, AUTHOR
    -SELECT 1 FROM BOOK "b", AUTHOR "a"]]></sql><java><![CDATA[create.selectOne().from(BOOK);
    -create.selectOne().from(BOOK, AUTHOR);
    -create.selectOne().from(BOOK.as("b"), AUTHOR.as("a"));]]></java>
    -</code-pair><html>
    -
    -											<p>
    -												Read more about aliasing in the manual's section about <reference id="aliased-tables" title="aliased tables"/>.
    -											</p>
    -											
    -											<h3>More advanced table expressions</h3>
    -											<p>
    -												Apart from simple tables, you can pass any arbitrary <reference id="table-expressions" title="table expression"/> to the jOOQ FROM clause. This may include <reference id="array-and-cursor-unnesting" title="unnested cursors"/> in Oracle:
    -											</p>
    -
    -</html><code-pair>
    -	<sql><![CDATA[SELECT *
    -FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(null, null, 'ALLSTATS'));]]></sql><java><![CDATA[create.select()
    -      .from(table(DbmsXplan.displayCursor(null, null, "ALLSTATS"));]]></java>
    -</code-pair><html>
    -
    -											<p>
    -												Note, in order to access the DbmsXplan package, you can use the <reference id="code-generation" title="code generator"/> to generate Oracle's SYS schema.
    -											</p>
    -
    -
    -											<h3>Selecting FROM DUAL with jOOQ</h3>
    -											<p>
    -												In many SQL dialects, FROM is a mandatory clause, in some it isn't. jOOQ allows you to omit the FROM clause, returning just one record. An example:
    -											</p>
    -
    -</html><code-pair>
    -	<sql><![CDATA[SELECT 1 FROM DUAL
    -SELECT 1]]></sql><java><![CDATA[DSL.using(SQLDialect.ORACLE).selectOne().getSQL();
    -DSL.using(SQLDialect.POSTGRES).selectOne().getSQL();]]></java>
    -</code-pair><html>
    -
    -											<p>
    -												Read more about dual or dummy tables in the manual's section about <reference id="dual" title="the DUAL table"/>. The following are examples of how to form normal FROM clauses:
    -											</p>
    -										</html></content>
    -									</section>
    -
    -									<section id="join-clause">
    -										<title>The JOIN clause</title>
    -										<content><html>
    -											<p>
    -												jOOQ supports many different types of standard SQL JOIN operations:
    -											</p>
    -											<ul>
    -												<li>[ INNER ] JOIN</li>
    -												<li>LEFT [ OUTER ] JOIN</li>
    -												<li>RIGHT [ OUTER ] JOIN</li>
    -												<li>FULL OUTER JOIN</li>
    -												<li>CROSS JOIN</li>
    -												<li>NATURAL JOIN</li>
    -												<li>NATURAL LEFT [ OUTER ] JOIN</li>
    -												<li>NATURAL RIGHT [ OUTER ] JOIN</li>
    -											</ul>
    -
    -											<p>
    -												All of these JOIN methods can be called on <reference class="org.jooq.Table"/> types, or directly after the FROM clause for convenience. The following example joins AUTHOR and BOOK
    -											</p>
    -
    -</html><java><![CDATA[DSLContext create = DSL.using(connection, dialect);
    -
    -// Call "join" directly on the AUTHOR table
    -Result<?> result = create.select()
    -                         .from(AUTHOR.join(BOOK)
    -                                     .on(BOOK.AUTHOR_ID.equal(AUTHOR.ID)))
    -                         .fetch();
    -
    -// Call "join" on the type returned by "from"
    -Result<?> result = create.select()
    -                         .from(AUTHOR)
    -                         .join(BOOK)
    -                         .on(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -                         .fetch();]]></java><html>
    -
    -											<p>
    -												The two syntaxes will produce the same SQL statement. However, calling "join" on <reference class="org.jooq.Table"/> objects allows for more powerful, nested JOIN expressions (if you can handle the parentheses):
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM AUTHOR
    -LEFT OUTER JOIN (
    -  BOOK JOIN BOOK_TO_BOOK_STORE
    -       ON BOOK_TO_BOOK_STORE.BOOK_ID = BOOK.ID
    -)
    -ON BOOK.AUTHOR_ID = AUTHOR.ID]]></sql><java><![CDATA[// Nest joins and provide JOIN conditions only at the end
    -create.select()
    -      .from(AUTHOR
    -      .leftOuterJoin(BOOK
    -        .join(BOOK_TO_BOOK_STORE)
    -        .on(BOOK_TO_BOOK_STORE.BOOK_ID.equal(BOOK.ID)))
    -      .on(BOOK.AUTHOR_ID.equal(AUTHOR.ID)));]]></java></code-pair><html>
    -
    -      										<ul>
    -      											<li>See the section about <reference id="conditional-expressions" title="conditional expressions"/> to learn more about the many ways to create <reference class="org.jooq.Condition"/> objects in jOOQ.</li>
    -      											<li>See the section about <reference id="table-expressions" title="table expressions"/> to learn about the various ways of referencing <reference class="org.jooq.Table"/> objects in jOOQ</li>
    -      										</ul>
    -
    -											<h3>JOIN ON KEY, convenience provided by jOOQ</h3>
    -											<p>
    -												Surprisingly, the SQL standard does not allow to formally JOIN on well-known foreign key relationship information. Naturally, when you join BOOK to AUTHOR, you will want to do that based on the BOOK.AUTHOR_ID foreign key to AUTHOR.ID primary key relation. Not being able to do this in SQL leads to a lot of repetitive code, re-writing the same JOIN predicate again and again - especially, when your foreign keys contain more than one column. With jOOQ, when you use <reference id="code-generation" title="code generation"/>, you can use foreign key constraint information in JOIN expressions as such:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM AUTHOR
    -JOIN BOOK ON BOOK.AUTHOR_ID = AUTHOR.ID]]></sql><java><![CDATA[create.select()
    -      .from(AUTHOR)
    -      .join(BOOK).onKey();]]></java></code-pair><html>
    -
    -      										<p>
    -      											In case of ambiguity, you can also supply field references for your foreign keys, or the generated foreign key reference to the onKey() method.
    -      										</p>
    -      										<p>
    -      											Note that formal support for the Sybase <code>JOIN ON KEY</code> syntax is on the roadmap.
    -      										</p>
    -
    -											<h3>The JOIN USING syntax</h3>
    -											<p>
    -												Most often, you will provide jOOQ with JOIN conditions in the JOIN .. ON clause. SQL supports a different means of specifying how two tables are to be joined. This is the JOIN .. USING clause. Instead of a condition, you supply a set of fields whose names are common to both tables to the left and right of a JOIN operation. This can be useful when your database schema has a high degree of <a href="http://en.wikipedia.org/wiki/Database_normalization">relational normalisation</a>. An example:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- Assuming that both tables contain AUTHOR_ID columns
    -SELECT *
    -FROM AUTHOR
    -JOIN BOOK USING (AUTHOR_ID)]]></sql><java><![CDATA[// join(...).using(...)
    -create.select()
    -      .from(AUTHOR)
    -      .join(BOOK).using(AUTHOR.AUTHOR_ID);]]></java></code-pair><html>
    -
    -											<p>
    -												In schemas with high degrees of normalisation, you may also choose to use NATURAL JOIN, which takes no JOIN arguments as it joins using all fields that are common to the table expressions to the left and to the right of the JOIN operator. An example:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- Assuming that both tables contain AUTHOR_ID columns
    -SELECT *
    -FROM AUTHOR
    -NATURAL JOIN BOOK]]></sql><java><![CDATA[// naturalJoin(...)
    -create.select()
    -      .from(AUTHOR)
    -      .naturalJoin(BOOK);]]></java></code-pair><html>
    -
    -											<h3>Oracle's partitioned OUTER JOIN</h3>
    -											<p>
    -												Oracle SQL ships with a special syntax available for OUTER JOIN clauses. According to the <a href="http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_10002.htm#i2196190">Oracle documentation about partitioned outer joins</a> this can be used to fill gaps for simplified analytical calculations. jOOQ only supports putting the PARTITION BY clause to the right of the OUTER JOIN clause. The following example will create at least one record per AUTHOR and per existing value in BOOK.PUBLISHED_IN, regardless if an AUTHOR has actually published a book in that year.
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM AUTHOR
    -LEFT OUTER JOIN BOOK
    -PARTITION BY (PUBLISHED_IN)
    -ON BOOK.AUTHOR_ID = AUTHOR.ID]]></sql><java><![CDATA[create.select()
    -      .from(AUTHOR)
    -      .leftOuterJoin(BOOK)
    -      .partitionBy(BOOK.PUBLISHED_IN)
    -      .on(BOOK.AUTHOR_ID.equal(AUTHOR.ID));]]></java></code-pair><html>
    -
    -										</html></content>
    -									</section>
    -
    -									<section id="where-clause">
    -										<title>The WHERE clause</title>
    -										<content><html>
    -											<p>
    -												The WHERE clause can be used for JOIN or filter predicates, in order to restrict the data returned by the <reference id="table-expressions" title="table expressions"/> supplied to the previously specified <reference id="from-clause" title="from clause"/> and <reference id="join-clause" title="join clause"/>. Here is an example:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM BOOK
    -WHERE AUTHOR_ID = 1
    -AND TITLE = '1984']]></sql><java><![CDATA[create.select()
    -      .from(BOOK)
    -      .where(BOOK.AUTHOR_ID.equal(1))
    -      .and(BOOK.TITLE.equal("1984"));]]></java></code-pair><html>
    -
    -											<p>
    -												The above syntax is convenience provided by jOOQ, allowing you to connect the <reference class="org.jooq.Condition"/> supplied in the WHERE clause with another condition using an AND operator. You can of course also create a more complex condition and supply that to the WHERE clause directly (observe the different placing of parentheses). The results will be the same:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM BOOK
    -WHERE AUTHOR_ID = 1
    -AND TITLE = '1984']]></sql><java><![CDATA[create.select()
    -      .from(BOOK)
    -      .where(BOOK.AUTHOR_ID.equal(1).and(
    -             BOOK.TITLE.equal("1984")));]]></java></code-pair><html>
    -
    -											<p>
    -												You will find more information about creating <reference id="conditional-expressions" title="conditional expressions"/> later in the manual.
    -											</p>
    -										</html></content>
    -									</section>
    -
    -									<section id="connect-by-clause">
    -										<title>The CONNECT BY clause</title>
    -										<content><html>
    -											<p>
    -												The Oracle database knows a very succinct syntax for creating hierarchical queries: the CONNECT BY clause, which is fully supported by jOOQ, including all related functions and pseudo-columns. A more or less formal definition of this clause is given here:
    -											</p>
    -</html><sql>--   SELECT ..
    ---     FROM ..
    ---    WHERE ..
    - CONNECT BY [ NOCYCLE ] condition [ AND condition, ... ] [ START WITH condition ]
    --- GROUP BY ..
    --- ORDER [ SIBLINGS ] BY ..</sql><html>
    -
    -											<p>
    -												An example for an iterative query, iterating through values between 1 and 5 is this:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT LEVEL
    -FROM DUAL
    -CONNECT BY LEVEL <= 5]]></sql><java><![CDATA[// Get a table with elements 1, 2, 3, 4, 5
    -create.select(level())
    -      .connectBy(level().lessOrEqual(5));]]></java></code-pair><html>
    -
    -											<p>
    -												Here's a more complex example where you can recursively fetch directories in your database, and concatenate them to a path:
    -											</p>
    -</html><code-pair>
    -<sql><![CDATA[SELECT 
    -  SUBSTR(SYS_CONNECT_BY_PATH(DIRECTORY.NAME, '/'), 2)
    -FROM DIRECTORY
    -CONNECT BY 
    -  PRIOR DIRECTORY.ID = DIRECTORY.PARENT_ID
    -START WITH DIRECTORY.PARENT_ID IS NULL
    -ORDER BY 1]]></sql><java><![CDATA[.select(
    -   sysConnectByPath(DIRECTORY.NAME, "/").substring(2))
    -.from(DIRECTORY)
    -.connectBy(
    -   prior(DIRECTORY.ID).equal(DIRECTORY.PARENT_ID))
    -.startWith(DIRECTORY.PARENT_ID.isNull())
    -.orderBy(1);]]></java>
    -</code-pair><html>
    -
    -    										<p>
    -    											The output might then look like this
    -   											</p>
    -
    -</html><text>+------------------------------------------------+
    -|substring                                       |
    -+------------------------------------------------+
    -|C:                                              |
    -|C:/eclipse                                      |
    -|C:/eclipse/configuration                        |
    -|C:/eclipse/dropins                              |
    -|C:/eclipse/eclipse.exe                          |
    -+------------------------------------------------+
    -|...21 record(s) truncated...
    -</text><html>
    -
    -											<p>
    -												Some of the supported functions and pseudo-columns are these (available from the <reference id="dsl" title="DSL"/>):
    -											</p>
    -
    -											<ul>
    -												<li>LEVEL</li>
    -												<li>CONNECT_BY_IS_CYCLE</li>
    -												<li>CONNECT_BY_IS_LEAF</li>
    -												<li>CONNECT_BY_ROOT</li>
    -												<li>SYS_CONNECT_BY_PATH</li>
    -												<li>PRIOR</li>
    -											</ul>
    -
    -											<p>
    -												Note that this syntax is also supported in the CUBRID database and might be simulated in other dialects supporting common table expressions in the future.
    -											</p>
    -											
    -											<h3>ORDER SIBLINGS</h3>
    -											<p>
    -												The Oracle database allows for specifying a SIBLINGS keyword in the <reference id="order-by-clause" title="ORDER BY clause"/>. Instead of ordering the overall result, this will only order siblings among each other, keeping the hierarchy intact. An example is given here:
    -											</p>
    -											
    -</html><code-pair>
    -<sql><![CDATA[SELECT DIRECTORY.NAME
    -FROM DIRECTORY
    -CONNECT BY 
    -  PRIOR DIRECTORY.ID = DIRECTORY.PARENT_ID
    -START WITH DIRECTORY.PARENT_ID IS NULL
    -ORDER SIBLINGS BY 1]]></sql><java><![CDATA[.select(DIRECTORY.NAME)
    -.from(DIRECTORY)
    -.connectBy(
    -   prior(DIRECTORY.ID).equal(DIRECTORY.PARENT_ID))
    -.startWith(DIRECTORY.PARENT_ID.isNull())
    -.orderSiblingsBy(1);]]></java>
    -</code-pair><html>
    -											
    -										</html></content>
    -									</section>
    -
    -									<section id="group-by-clause">
    -										<title>The GROUP BY clause</title>
    -										<content><html>
    -											<p>
    -												GROUP BY can be used to create unique groups of data, to form aggregations, to remove duplicates and for other reasons. It will transform your previously defined <reference id="table-expressions" title="set of table expressions"/>, and return only one record per unique group as specified in this clause. For instance, you can group books by BOOK.AUTHOR_ID:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT AUTHOR_ID, COUNT(*)
    -FROM BOOK
    -GROUP BY AUTHOR_ID]]></sql><java><![CDATA[create.select(BOOK.AUTHOR_ID, count())
    -      .from(BOOK)
    -      .groupBy(BOOK.AUTHOR_ID);]]></java></code-pair><html>
    -
    -											<p>
    -												The above example counts all books per author.
    -											</p>
    -											<p>
    -												Note, as defined in the SQL standard, when grouping, you may no longer project any columns that are not a formal part of the GROUP BY clause, or <reference id="aggregate-functions" title="aggregate functions"/>.
    -											</p>
    -											
    -											<h3>MySQL's deviation from the SQL standard</h3>
    -											<p>
    -												MySQL has a peculiar way of not adhering to this standard behaviour. This is documented in the <a href="http://dev.mysql.com/doc/refman/5.6/en/group-by-hidden-columns.html">MySQL manual</a>. In short, with MySQL, you can also project any other field that is not part of the GROUP BY clause. The projected values will just be arbitrary values from within the group. You cannot rely on any ordering. For example:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT AUTHOR_ID, TITLE
    -FROM BOOK
    -GROUP BY AUTHOR_ID]]></sql><java><![CDATA[create.select(BOOK.AUTHOR_ID, BOOK.TITLE)
    -      .from(BOOK)
    -      .groupBy(AUTHOR_ID);]]></java></code-pair><html>
    -
    -											<p>
    -												This will return an arbitrary title per author. jOOQ supports this syntax, as jOOQ is not doing any checks internally, about the consistence of tables/fields/functions that you provide it.
    -											</p>
    -
    -											<h3>Empty GROUP BY clauses</h3>
    -											<p>
    -												jOOQ supports empty <code>GROUP BY ()</code> clause as well. This will result in <reference id="select-statement" title="SELECT statements"/> that return only one record.
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT COUNT(*)
    -FROM BOOK
    -GROUP BY ()]]></sql><java><![CDATA[create.selectCount()
    -      .from(BOOK)
    -      .groupBy();]]></java></code-pair><html>
    -
    -											
    -											<h3>ROLLUP(), CUBE() and GROUPING SETS()</h3>
    -											<p>
    -												Some databases support the SQL standard grouping functions and some extensions thereof. See the manual's section about <reference id="grouping-functions" title="grouping functions"/> for more details.
    -											</p>
    -										</html></content>
    -									</section>
    -
    -									<section id="having-clause">
    -										<title>The HAVING clause</title>
    -										<content><html>
    -											<p>
    -												The HAVING clause is commonly used to further restrict data resulting from a previously issued <reference id="group-by-clause" title="GROUP BY clause"/>. An example, selecting only those authors that have written at least two books:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT AUTHOR_ID, COUNT(*)
    -FROM BOOK
    -GROUP BY AUTHOR_ID
    -HAVING COUNT(*) >= 2]]></sql><java><![CDATA[create.select(BOOK.AUTHOR_ID, count(*))
    -      .from(BOOK)
    -      .groupBy(AUTHOR_ID)
    -      .having(count().greaterOrEqual(2));]]></java></code-pair><html>
    -
    -											<p>
    -												According to the SQL standard, you may omit the GROUP BY clause and still issue a HAVING clause. This will implicitly GROUP BY (). jOOQ also supports this syntax. The following example selects one record, only if there are at least 4 books in the books table:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT COUNT(*)
    -FROM BOOK
    -HAVING COUNT(*) >= 4]]></sql><java><![CDATA[create.select(count(*))
    -      .from(BOOK)
    -      .having(count().greaterOrEqual(4));]]></java></code-pair><html>
    -
    -										</html></content>
    -									</section>
    -
    -									<section id="order-by-clause">
    -										<title>The ORDER BY clause</title>
    -										<content><html>
    -											<p>
    -												Databases are allowed to return data in any arbitrary order, unless you explicitly declare that order in the ORDER BY clause. In jOOQ, this is straight-forward:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT AUTHOR_ID, TITLE
    -FROM BOOK
    -ORDER BY AUTHOR_ID ASC, TITLE DESC]]></sql><java><![CDATA[create.select(BOOK.AUTHOR_ID, BOOK.TITLE)
    -      .from(BOOK)
    -      .orderBy(BOOK.AUTHOR_ID.asc(), BOOK.TITLE.desc());]]></java></code-pair><html>
    -
    -											<p>
    -												Any jOOQ <reference id="column-expressions" title="column expression (or field)"/> can be transformed into an <reference class="org.jooq.SortField"/> by calling the asc() and desc() methods.
    -											</p>
    -
    -											<h3>Ordering by field index</h3>
    -											<p>
    -												The SQL standard allows for specifying integer literals (<reference id="inlined-parameters" title="literals"/>, not <reference id="bind-values" title="bind values"/>!) to reference column indexes from the projection (<reference id="select-clause" title="SELECT clause"/>). This may be useful if you do not want to repeat a lengthy expression, by which you want to order - although most databases also allow for referencing <reference id="aliased-columns" title="aliased column references"/> in the ORDER BY clause. An example of this is given here:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT AUTHOR_ID, TITLE
    -FROM BOOK
    -ORDER BY 1 ASC, 2 DESC]]></sql><java><![CDATA[create.select(BOOK.AUTHOR_ID, BOOK.TITLE)
    -      .from(BOOK)
    -      .orderBy(one().asc(), inline(2).desc());]]></java></code-pair><html>
    -
    -											<p>
    -												Note, how <code>one()</code> is used as a convenience short-cut for <code>inline(1)</code>
    -											</p>
    -
    -											<h3>Ordering and NULLS</h3>
    -											<p>
    -												A few databases support the SQL standard "null ordering" clause in sort specification lists, to define whether <code>NULL</code> values should come first or last in an ordered result.
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT 
    -  BOOK.AUTHOR_ID, 
    -  BOOK.CO_AUTHOR_ID, 
    -  BOOK.TITLE
    -FROM BOOK
    -ORDER BY AUTHOR_ID ASC,
    -         CO_AUTHOR_ID ASC NULLS LAST]]></sql><java><![CDATA[create.select(
    -         BOOK.AUTHOR_ID, 
    -         BOOK.CO_AUTHOR_ID, 
    -         BOOK.TITLE)
    -      .from(BOOK)
    -      .orderBy(BOOK.AUTHOR_ID.asc(),
    -               BOOK.CO_AUTHOR_ID.asc().nullsLast());]]></java></code-pair><html>
    -
    -											<p>
    -												If your database doesn't support this syntax, jOOQ simulates it using a <reference id="case-expressions" title="CASE expression"/> as follows
    -											</p>
    -</html><code-pair>
    -<sql><![CDATA[SELECT 
    -  BOOK.AUTHOR_ID, BOOK.CO_AUTHOR_ID, BOOK.TITLE
    -FROM BOOK
    -ORDER BY AUTHOR_ID ASC,
    -         CASE WHEN CO_AUTHOR_ID IS NULL 
    -              THEN 1 ELSE 0 END ASC,
    -         CO_AUTHOR_ID ASC]]></sql><java><![CDATA[create.select(
    -         BOOK.AUTHOR_ID, 
    -         BOOK.CO_AUTHOR_ID,
    -         BOOK.TITLE)
    -      .from(BOOK)
    -      .orderBy(BOOK.AUTHOR_ID.asc(),
    -               BOOK.CO_AUTHOR_ID.asc().nullsLast());]]></java></code-pair><html>
    -
    -											<h3>Ordering using CASE expressions</h3>
    -											<p>
    -												Using <reference id="case-expressions" title="CASE expressions"/> in SQL ORDER BY clauses is a common pattern, if you want to introduce some sort indirection / sort mapping into your queries. As with SQL, you can add any type of <reference id="column-expressions" title="column expression"/> into your ORDER BY clause. For instance, if you have two favourite books that you always want to appear on top, you could write:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM BOOK
    -ORDER BY CASE TITLE
    -         WHEN '1984' THEN 0
    -         WHEN 'Animal Farm' THEN 1
    -         ELSE 2 END ASC]]></sql><java><![CDATA[create.select()
    -      .from(BOOK)
    -      .orderBy(decode().value(BOOK.TITLE)
    -                       .when("1984", 0)
    -                       .when("Animal Farm", 1)
    -                       .otherwise(2).asc());]]></java></code-pair><html>
    -
    -											<p>
    -												But writing these things can become quite verbose. jOOQ supports a convenient syntax for specifying sort mappings. The same query can be written in jOOQ as such:
    -											</p>
    -
    -</html><java><![CDATA[create.select()
    -      .from(BOOK)
    -      .orderBy(BOOK.TITLE.sortAsc("1984", "Animal Farm"));]]></java><html>
    -
    -											<p>
    -												More complex sort indirections can be provided using a Map:
    -											</p>
    -
    -</html><java><![CDATA[create.select()
    -      .from(BOOK)
    -      .orderBy(BOOK.TITLE.sort(new HashMap<String, Integer>() {{
    -          put("1984", 1);
    -          put("Animal Farm", 13);
    -          put("The jOOQ book", 10);
    -      }}));]]></java><html>
    -
    -      										<p>
    -      											Of course, you can combine this feature with the previously discussed NULLS FIRST / NULLS LAST feature. So, if in fact these two books are the ones you like least, you can put all NULLS FIRST (all the other books):
    -      										</p>
    -
    -</html><java><![CDATA[create.select()
    -      .from(BOOK)
    -      .orderBy(BOOK.TITLE.sortAsc("1984", "Animal Farm").nullsFirst());]]></java><html>
    -
    -											<h3>jOOQ's understanding of SELECT .. ORDER BY</h3>
    -											<p>
    -												The SQL standard defines that a "query expression" can be ordered, and that query expressions can contain <reference id="union-clause" title="UNION, INTERSECT and EXCEPT clauses"/>, whose subqueries cannot be ordered. While this is defined as such in the SQL standard, many databases allowing for the non-standard <reference id="limit-clause" title="LIMIT clause"/> in one way or another, do not adhere to this part of the SQL standard. Hence, jOOQ allows for ordering all SELECT statements, regardless whether they are constructed as a part of a UNION or not. Corner-cases are handled internally by jOOQ, by introducing synthetic subselects to adhere to the correct syntax, where this is needed.
    -											</p>
    -											
    -											
    -											<h3>Oracle's ORDER SIBLINGS BY clause</h3>
    -											<p>
    -												jOOQ also supports Oracle's SIBLINGS keyword to be used with ORDER BY clauses for <reference id="connect-by-clause" title="hierarchical queries using CONNECT BY"/>
    -											</p>
    -										</html></content>
    -									</section>
    -
    -									<section id="limit-clause">
    -										<title>The LIMIT .. OFFSET clause</title>
    -										<content><html>
    -											<p>
    -												While being extremely useful for every application that does paging, or just to limit result sets to reasonable sizes, this clause is not yet part of any SQL standard (up until SQL:2008). Hence, there exist a variety of possible implementations in various SQL dialects, concerning this limit clause. jOOQ chose to implement the LIMIT .. OFFSET clause as understood and supported by MySQL, H2, HSQLDB, Postgres, and SQLite. Here is an example of how to apply limits with jOOQ:
    -											</p>
    -
    -</html><java><![CDATA[create.select().from(BOOK).limit(1).offset(2);]]></java><html>
    -
    -											<p>
    -												This will limit the result to 1 books starting with the 2nd book (starting at offset 0!). limit() is supported in all dialects, offset() in all but Sybase ASE, which has no reasonable means to simulate it. This is how jOOQ simulates the above query in various SQL dialects:
    -											</p>
    -
    -</html><sql><![CDATA[-- MySQL, H2, HSQLDB, Postgres, and SQLite
    -SELECT * FROM BOOK LIMIT 1 OFFSET 2
    -
    --- CUBRID supports a MySQL variant of the LIMIT .. OFFSET clause
    -SELECT * FROM BOOK LIMIT 2, 1
    -
    --- Derby
    -SELECT * FROM BOOK OFFSET 2 ROWS FETCH NEXT 1 ROWS ONLY
    -
    --- Ingres
    -SELECT * FROM BOOK OFFSET 2 FETCH FIRST 1 ROWS ONLY
    -
    --- Firebird
    -SELECT * FROM BOOK ROWS 2 TO 3
    -
    --- Sybase SQL Anywhere
    -SELECT TOP 1 ROWS START AT 3 * FROM BOOK
    -
    --- DB2 (without OFFSET)
    -SELECT * FROM BOOK FETCH FIRST 1 ROWS ONLY
    -
    --- Sybase ASE, SQL Server (without OFFSET)
    -SELECT TOP 1 * FROM BOOK
    -
    --- DB2 (with OFFSET), SQL Server (with OFFSET), Oracle (actual query may vary)
    -SELECT * FROM (
    -  SELECT LIMIT_98843777.*, ROW_NUMBER() OVER (ORDER BY ID ASC) AS ROWNUM_98843777
    -  FROM (
    -    SELECT TOP 100 PERCENT *
    -    FROM BOOK
    -    ORDER BY ID ASC
    -  ) AS LIMIT_98843777
    -) AS OUTER_LIMIT_98843777
    -WHERE ROWNUM_98843777 > 1
    -AND ROWNUM_98843777 <= 3
    -]]></sql><html>
    -
    -											<p>
    -												As you can see, jOOQ will take care of the incredibly painful ROW_NUMBER() OVER() (or ROWNUM for Oracle) filtering in subselects for you, you'll just have to write limit(1).offset(2) in any dialect.
    -											</p>
    -
    -											<h3>SQL Server's ORDER BY, TOP and subqueries</h3>
    -											<p>
    -												As can be seen in the above example, writing correct SQL can be quite tricky, depending on the SQL dialect. For instance, with SQL Server, you cannot have an ORDER BY clause in a subquery, unless you also have a TOP clause. This is illustrated by the fact that jOOQ renders a TOP 100 PERCENT clause for you. The same applies to the fact that ROW_NUMBER() OVER() needs an ORDER BY windowing clause, even if you don't provide one to the jOOQ query. By default, jOOQ adds ordering by the first column of your projection.
    -											</p>
    -										</html></content>
    -									</section>
    -
    -									<section id="for-update-clause">
    -										<title>The FOR UPDATE clause</title>
    -										<content><html>
    -											<p>
    -												For inter-process synchronisation and other reasons, you may choose to use the SELECT .. FOR UPDATE clause to indicate to the database, that a set of cells or records should be locked by a given transaction for subsequent updates. With jOOQ, this can be achieved as such:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM BOOK
    -WHERE ID = 3
    -FOR UPDATE]]></sql><java><![CDATA[create.select()
    -      .from(BOOK)
    -      .where(BOOK.ID.equal(3))
    -      .forUpdate();]]></java></code-pair><html>
    -
    -											<p>
    -												The above example will produce a record-lock, locking the whole record for updates. Some databases also support cell-locks using FOR UPDATE OF ..
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM BOOK
    -WHERE ID = 3
    -FOR UPDATE OF TITLE]]></sql><java><![CDATA[create.select()
    -      .from(BOOK)
    -      .where(BOOK.ID.equal(3))
    -      .forUpdate().of(BOOK.TITLE);]]></java></code-pair><html>
    -
    -											<p>
    -												Oracle goes a bit further and also allows to specify the actual locking behaviour. It features these additional clauses, which are all supported by jOOQ:
    -											</p>
    -											<ul>
    -												<li><code>FOR UPDATE NOWAIT</code>: This is the default behaviour. If the lock cannot be acquired, the query fails immediately</li>
    -												<li><code>FOR UPDATE WAIT n</code>: Try to wait for [n] seconds for the lock acquisition. The query will fail only afterwards</li>
    -												<li><code>FOR UPDATE SKIP LOCKED</code>: This peculiar syntax will skip all locked records. This is particularly useful when implementing queue tables with multiple consumers</li>
    -											</ul>
    -											<p>
    -												With jOOQ, you can use those Oracle extensions as such:
    -											</p>
    -
    -</html><java><![CDATA[create.select().from(BOOK).where(BOOK.ID.equal(3)).forUpdate().nowait();
    -create.select().from(BOOK).where(BOOK.ID.equal(3)).forUpdate().wait(5);
    -create.select().from(BOOK).where(BOOK.ID.equal(3)).forUpdate().skipLocked();]]></java><html>
    -
    -											<h3>FOR UPDATE in CUBRID and SQL Server</h3>
    -											<p>
    -												The SQL standard specifies a <code>FOR UPDATE</code> clause to be applicable for cursors. Most databases interpret this as being applicable for all <code>SELECT</code> statements. An exception to this rule are the CUBRID and SQL Server databases, that do not allow for any <code>FOR UPDATE</code> clause in a regular SQL <code>SELECT</code> statement. jOOQ simulates the <code>FOR UPDATE</code> behaviour, by locking record by record with JDBC. JDBC allows for specifying the flags <code>TYPE_SCROLL_SENSITIVE</code>, <code>CONCUR_UPDATABLE</code> for any statement, and then using ResultSet.updateXXX() methods to produce a cell-lock / row-lock. Here's a simplified example in JDBC:
    -											</p>
    -</html><java><![CDATA[PreparedStatement stmt = connection.prepareStatement(
    -  "SELECT * FROM author WHERE id IN (3, 4, 5)",
    -  ResultSet.TYPE_SCROLL_SENSITIVE,
    -  ResultSet.CONCUR_UPDATABLE);
    -ResultSet rs = stmt.executeQuery();
    -
    -while (rs.next()) {
    -  // UPDATE the primary key for row-locks, or any other columns for cell-locks
    -  rs.updateObject(1, rs.getObject(1));
    -  rs.updateRow();
    -
    -  // Do more stuff with this record
    -}]]></java><html>
    -
    -											<p>
    -												The main drawback of this approach is the fact that the database has to maintain a scrollable cursor, whose records are locked one by one. This can cause a major risk of deadlocks or race conditions if the JDBC driver can recover from the unsuccessful locking, if two Java threads execute the following statements:
    -											</p>
    -
    -</html><sql><![CDATA[-- thread 1
    -SELECT * FROM author ORDER BY id ASC;
    -
    --- thread 2
    -SELECT * FROM author ORDER BY id DESC;]]></sql><html>
    -
    -											<p>
    -												So use this technique with care, possibly only ever locking single rows!
    -											</p>
    -
    -											<h3>Pessimistic (shared) locking with the <code>FOR SHARE</code> clause</h3>
    -											<p>
    -												Some databases (MySQL, Postgres) also allow to issue a non-exclusive lock explicitly using a <code>FOR SHARE</code> clause. This is also supported by jOOQ
    -											</p>
    -
    -											<h3>Optimistic locking in jOOQ</h3>
    -											<p>
    -												Note, that jOOQ also supports optimistic locking, if you're doing simple CRUD. This is documented in the section's manual about <reference id="optimistic-locking" title="optimistic locking"/>.
    -											</p>
    -										</html></content>
    -									</section>
    -
    -									<section id="union-clause">
    -										<title>UNION, INTERSECTION and EXCEPT</title>
    -										<content><html>
    -											<p>
    -												SQL allows to perform set operations as understood in standard set theory on result sets. These operations include unions, intersections, subtractions. For two subselects to be combinable by such a set operator, each subselect must return a <reference id="table-expressions" title="table expression"/> of the same degree and type.
    -											</p>
    -											
    -											<h3>UNION and UNION ALL</h3>
    -											<p>
    -												These operators combine two results into one. While <code>UNION</code> removes all duplicate records resulting from this combination, <code>UNION ALL</code> leaves subselect results as they are. Typically, you should prefer <code>UNION ALL</code> over <code>UNION</code>, if you don't really need to remove duplicates. The following example shows how to use such a <code>UNION</code> operation in jOOQ.
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT * FROM BOOK WHERE ID = 3
    -UNION ALL
    -SELECT * FROM BOOK WHERE ID = 5]]></sql><java><![CDATA[create.selectFrom(BOOK).where(BOOK.ID.equal(3))
    -      .unionAll(
    -create.selectFrom(BOOK).where(BOOK.ID.equal(5)));]]></java></code-pair><html>
    -											
    -											<h3>INTERSECT [ ALL ] and EXCEPT [ ALL ]</h3>
    -											<p>
    -												<code>INTERSECT</code> is the operation that produces only those values that are returned by both subselects. <code>EXCEPT</code> is the operation that returns only those values that are returned exclusively in the first subselect. Both operators will remove duplicates from their results. The SQL standard allows to specify the <code>ALL</code> keyword for both of these operators as well, but this is hardly supported in any database. jOOQ does not support <code>INTERSECT ALL</code>, <code>EXEPT ALL</code> operations either. 
    -											</p>
    -											
    -											<h3>jOOQ's set operators and how they're different from standard SQL</h3>
    -											<p>
    -												As previously mentioned in the manual's section about the <reference id="order-by-clause" title="ORDER BY clause"/>, jOOQ has slightly changed the semantics of these set operators. While in SQL, a subselect may not contain any <reference id="order-by-clause" title="ORDER BY clause"/> or <reference id="limit-clause" title="LIMIT clause"/> (unless you wrap the subselect into a <reference id="nested-selects" title="nested SELECT"/>), jOOQ allows you to do so. In order to select both the youngest and the oldest author from the database, you can issue the following statement with jOOQ (rendered to the MySQL dialect):
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[  (SELECT * FROM AUTHOR 
    -   ORDER BY DATE_OF_BIRTH ASC LIMIT 1)
    -UNION
    -  (SELECT * FROM AUTHOR 
    -   ORDER BY DATE_OF_BIRTH DESC LIMIT 1)]]></sql><java><![CDATA[create.selectFrom(AUTHOR)
    -      .orderBy(AUTHOR.DATE_OF_BIRTH.asc()).limit(1)
    -      .union(
    -create.selectFrom(AUTHOR)
    -      .orderBy(AUTHOR.DATE_OF_BIRTH.desc()).limit(1));]]></java></code-pair><html>
    -		
    -											<h3>Projection typesafety for degrees between 1 and {max-row-degree}</h3>
    -											<p>
    -												Two subselects that are combined by a set operator are required to be of the same degree and, in most databases, also of the same type. jOOQ 3.0's introduction of <reference id="record-n" title="Typesafe Record[N] types"/> helps compile-checking these constraints:
    -											</p>
    -											
    -</html><java><![CDATA[// Some sample SELECT statements
    -Select<Record2<Integer, String>>  s1 = select(BOOK.ID, BOOK.TITLE).from(BOOK);
    -Select<Record1<Integer>>          s2 = selectOne();
    -Select<Record2<Integer, Integer>> s3 = select(one(), zero());
    -Select<Record2<Integer, String>>  s4 = select(one(), inline("abc"));
    -
    -// Let's try to combine them:
    -s1.union(s2); // Doesn't compile because of a degree mismatch. Expected: Record2<...>, got: Record1<...>
    -s1.union(s3); // Doesn't compile because of a type mismatch. Expected: <Integer, String>, got: <Integer, Integer>
    -s1.union(s4); // OK. The two Record[N] types match]]></java></content>
    -									</section>
    -
    -									<section id="oracle-hints">
    -										<title>Oracle-style hints</title>
    -										<content><html>
    -											<p>
    -												If you are closely coupling your application to an Oracle (or CUBRID) database,	you might need to be able to pass hints of the form <code>/*+HINT*/</code> with your SQL statements to the Oracle database. For example:
    -											</p>
    -
    -</html><sql>SELECT /*+ALL_ROWS*/ FIRST_NAME, LAST_NAME
    -  FROM AUTHOR</sql><html>
    -
    -				  							<p>
    -				  								This can be done in jOOQ using the <code>.hint()</code> clause in your SELECT statement:
    -			  								</p>
    -
    -</html><java>create.select(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .hint("/*+ALL_ROWS*/")
    -      .from(AUTHOR);</java><html>
    -
    -											<p>
    -												Note that you can pass any string in the <code>.hint()</code> clause. If you use that clause, the passed string will always be put in between the <code>SELECT [DISTINCT]</code> keywords and the actual projection list. This can be useful in other databases too, such as MySQL, for instance:
    -											</p>
    -											
    -</html><code-pair>
    -<sql><![CDATA[SELECT SQL_CALC_FOUND_ROWS field1, field2
    -FROM table1
    -]]></sql><java><![CDATA[create.select(field1, field2)
    -       .hint("SQL_CALC_FOUND_ROWS")
    -       .from(table1)]]></java>
    -</code-pair><html>
    -										</html></content>
    -									</section>
    -									
    -									<section id="select-lexical-vs-logical-order">
    -										<title>Lexical and logical SELECT clause order</title>
    -										<content><html>
    -											<p>
    -												SQL has a lexical and a logical order of <code>SELECT</code> clauses. The lexical order of <code>SELECT</code> clauses is inspired by the English language. As SQL statements are commands for the database, it is natural to express a statement in an imperative tense, such as "SELECT this and that!".
    -											</p>
    -											
    -											<h3>Logical SELECT clause order</h3>
    -											<p>
    -												The logical order of <code>SELECT</code> clauses, however, does not correspond to the syntax. In fact, the logical order is this:
    -											</p>
    -											
    -											<ul>
    -												<li><reference id="from-clause" title="The FROM clause"/>: First, all data sources are defined and joined</li>
    -												<li><reference id="where-clause" title="The WHERE clause"/>: Then, data is filtered as early as possible</li>
    -												<li><reference id="connect-by-clause" title="The CONNECT BY clause"/>: Then, data is traversed iteratively or recursively, to produce new tuples</li>
    -												<li><reference id="group-by-clause" title="The GROUP BY clause"/>: Then, data is reduced to groups, possibly producing new tuples if <reference id="grouping-functions" title="grouping functions like ROLLUP(), CUBE(), GROUPING SETS()"/> are used</li>
    -												<li><reference id="having-clause" title="The HAVING clause"/>: Then, data is filtered again</li>
    -												<li><reference id="select-clause" title="The SELECT clause"/>: Only now, the projection is evaluated. In case of a <code>SELECT DISTINCT</code> statement, data is further reduced to remove duplicates</li>
    -												<li><reference id="union-clause" title="The UNION clause"/>: Optionally, the above is repeated for several <code>UNION</code>-connected subqueries. Unless this is a <code>UNION ALL</code> clause, data is further reduced to remove duplicates</li>
    -												<li><reference id="order-by-clause" title="The ORDER BY clause"/>: Now, all remaining tuples are ordered</li>
    -												<li><reference id="limit-clause" title="The LIMIT clause"/>: Then, a paging view is created for the ordered tuples</li>
    -												<li><reference id="for-update-clause" title="The FOR UPDATE clause"/>: Finally, pessimistic locking is applied</li>
    -											</ul>
    -											
    -											<p>
    -												The <a href="http://msdn.microsoft.com/en-us/library/ms189499.aspx">SQL Server documentation</a> also explains this, with slightly different clauses:
    -											</p>
    -											
    -											<ul>
    -												<li><code>FROM</code></li>
    -												<li><code>ON</code></li>
    -												<li><code>JOIN</code></li>
    -												<li><code>WHERE</code></li>
    -												<li><code>GROUP BY</code></li>
    -												<li><code>WITH CUBE</code> or <code>WITH ROLLUP</code></li>
    -												<li><code>HAVING</code></li>
    -												<li><code>SELECT</code></li>
    -												<li><code>DISTINCT</code></li>
    -												<li><code>ORDER BY</code></li>
    -												<li><code>TOP</code></li>
    -											</ul>
    -											
    -											<p>
    -												As can be seen, databases have to logically reorder a SQL statement in order to determine the best execution plan. 
    -											</p>
    -											
    -											<h3>Alternative syntaxes: LINQ, SLICK</h3>
    -											<p>
    -											    Some "higher-level" abstractions, such as C#'s LINQ or Scala's SLICK try to inverse the lexical order of <code>SELECT</code> clauses to what appears to be closer to the logical order. The obvious advantage of moving the <code>SELECT</code> clause to the end is the fact that the projection type, which is the record type returned by the <code>SELECT</code> statement can be re-used more easily in the target environment of the internal domain specific language.
    -											</p>
    -											
    -											<p>
    -												A LINQ example:
    -											</p>
    -</html><java><![CDATA[// LINQ-to-SQL looks somewhat similar to SQL
    -// AS clause    // FROM clause
    -From p          In db.Products
    -
    -// WHERE clause
    -Where p.UnitsInStock <= p.ReorderLevel AndAlso Not p.Discontinued
    -
    -// SELECT clause
    -Select p]]></java><html>											
    -											
    -											<p> 
    -											    A SLICK example:
    -											</p>
    -											
    -</html><scala><![CDATA[// "for" is the "entry-point" to the DSL
    -val q = for {
    -
    -    // FROM clause   WHERE clause
    -    c <- Coffees     if c.supID === 101
    -
    -// SELECT clause and projection to a tuple
    -} yield (c.name, c.price)]]></scala><html>
    -
    -											<p>
    -												While this looks like a good idea at first, it only complicates translation to more advanced SQL statements while impairing readability for those users that are used to writing SQL. jOOQ is designed to look just like SQL. This is specifically true for SLICK, which not only changed the <code>SELECT</code> clause order, but also heavily "integrated" SQL clauses with the Scala language.
    -											</p>
    -											<p>
    -												For these reasons, the jOOQ DSL API is modelled in SQL's lexical order.
    -											</p>
    -										</html></content>
    -									</section>
    -								</sections>
    -							</section>
    -
    -							<section id="insert-statement">
    -								<title>The INSERT statement</title>
    -								<content><html>
    -									<p>
    -										The <code>INSERT</code> statement is used to insert new records into a database table. Records can either be supplied using a <code>VALUES()</code> constructor, or a <code>SELECT</code> statement. jOOQ supports both types of <code>INSERT</code> statements. An example of an <code>INSERT</code> statement using a <code>VALUES()</code> constructor is given here:
    -									</p>
    -
    -
    -</html><code-pair>
    -<sql>INSERT INTO AUTHOR 
    -       (ID, FIRST_NAME, LAST_NAME)
    -VALUES (100, 'Hermann', 'Hesse');</sql><java>create.insertInto(AUTHOR,
    -        AUTHOR.ID, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .values(100, "Hermann", "Hesse");</java></code-pair><html>
    -
    -									<p>
    -										Note that for explicit degrees up to {max-row-degree}, the <code>VALUES()</code> constructor provides additional typesafety. The following example illustrates this:
    -									</p>
    -
    -</html><java><![CDATA[InsertValuesStep3<AuthorRecord, Integer, String, String> step = 
    -  create.insertInto(AUTHOR, AUTHOR.ID, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME);
    -    step.values("A", "B", "C");
    -         // ^^^ Doesn't compile, the expected type is Integer]]></java><html>
    -									<h3>INSERT multiple rows with the VALUES() constructor</h3>
    -									<p>
    -										The SQL standard specifies that multiple rows can be supplied to the VALUES() constructor in an INSERT statement. Here's an example of a multi-record INSERT
    -									</p>
    -</html><code-pair>
    -<sql>INSERT INTO AUTHOR
    -       (ID, FIRST_NAME, LAST_NAME)
    -VALUES (100, 'Hermann', 'Hesse'),
    -       (101, 'Alfred', 'Döblin');</sql><java>create.insertInto(AUTHOR,
    -        AUTHOR.ID, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .values(100, "Hermann", "Hesse")
    -      .values(101, "Alfred", "Döblin");</java></code-pair><html>
    -
    -									<p>
    -										jOOQ tries to stay close to actual SQL. In detail, however, Java's expressiveness is limited. That's why the values() clause is repeated for every record in multi-record inserts. 
    -									</p>
    -									<p> 
    -										Some RDBMS do not support inserting several records in a single statement. In those cases, jOOQ simulates multi-record INSERTs using the following SQL:
    -									</p>
    -
    -</html><code-pair>
    -<sql>INSERT INTO AUTHOR
    -    (ID, FIRST_NAME, LAST_NAME)
    -SELECT 100, 'Hermann', 'Hesse' FROM DUAL UNION ALL
    -SELECT 101, 'Alfred', 'Döblin' FROM DUAL;</sql><java>create.insertInto(AUTHOR,
    -        AUTHOR.ID, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .values(100, "Hermann", "Hesse")
    -      .values(101, "Alfred", "Döblin");
    -</java></code-pair><html>
    -
    -									<h3>INSERT using jOOQ's alternative syntax</h3>
    -									<p>
    -										MySQL (and some other RDBMS) allow for using a non-SQL-standard, UPDATE-like syntax for INSERT statements. This is also supported in jOOQ, should you prefer that syntax. The above INSERT statement can also be expressed as follows:
    -									</p>
    -
    -</html><java>create.insertInto(AUTHOR)
    -      .set(AUTHOR.ID, 100)
    -      .set(AUTHOR.FIRST_NAME, "Hermann")
    -      .set(AUTHOR.LAST_NAME, "Hesse")
    -      .newRecord()
    -      .set(AUTHOR.ID, 101)
    -      .set(AUTHOR.FIRST_NAME, "Alfred")
    -      .set(AUTHOR.LAST_NAME, "Döblin");</java><html>
    -      
    -									<p>
    -										As you can see, this syntax is a bit more verbose, but also more readable, as every field can be matched with its value. Internally, the two syntaxes are strictly equivalent.
    -									</p>
    -
    -									<h3>MySQL's INSERT .. ON DUPLICATE KEY UPDATE</h3>
    -									<p>
    -										The MySQL database supports a very convenient way to INSERT or UPDATE a record. This is a non-standard extension to the SQL syntax, which is supported by jOOQ and simulated in other RDBMS, where this is possible (i.e. if they support the SQL standard <reference id="merge-statement" title="MERGE statement"/>). Here is an example how to use the ON DUPLICATE KEY UPDATE clause:
    -									</p>
    -									
    -</html><java>// Add a new author called "Koontz" with ID 3.
    -// If that ID is already present, update the author's name
    -create.insertInto(AUTHOR, AUTHOR.ID, AUTHOR.LAST_NAME)
    -      .values(3, "Koontz")
    -      .onDuplicateKeyUpdate()
    -      .set(AUTHOR.LAST_NAME, "Koontz");</java><html>
    -
    -									<h3>The synthetic ON DUPLICATE KEY IGNORE clause</h3>
    -							
    -									<p>
    -										The MySQL database also supports an INSERT IGNORE INTO clause. This is supported by jOOQ using the more convenient SQL syntax variant of ON DUPLICATE KEY IGNORE, which can be equally simulated in other databases using a <reference id="merge-statement" title="MERGE statement"/>:
    -									</p>
    -									
    -</html><java>// Add a new author called "Koontz" with ID 3.
    -// If that ID is already present, ignore the INSERT statement
    -create.insertInto(AUTHOR, AUTHOR.ID, AUTHOR.LAST_NAME)
    -      .values(3, "Koontz")
    -      .onDuplicateKeyIgnore();</java><html>
    -
    -      								<h3>Postgres's INSERT .. RETURNING</h3>
    -									<p>
    -										The Postgres database has native support for an INSERT .. RETURNING clause. This is a very powerful concept that is simulated for all other dialects using JDBC's <reference class="java.sql.Statement" anchor="#getGeneratedKeys()" title="getGeneratedKeys()"/> method. Take this example:
    -									</p>
    -
    -</html><java><![CDATA[// Add another author, with a generated ID
    -Record<?> record =
    -create.insertInto(AUTHOR, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .values("Charlotte", "Roche")
    -      .returning(AUTHOR.ID)
    -      .fetchOne();
    -
    -System.out.println(record.getValue(AUTHOR.ID));
    -
    -// For some RDBMS, this also works when inserting several values
    -// The following should return a 2x2 table
    -Result<?> result =
    -create.insertInto(AUTHOR, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .values("Johann Wolfgang", "von Goethe")
    -      .values("Friedrich", "Schiller")
    -      // You can request any field. Also trigger-generated values
    -      .returning(AUTHOR.ID, AUTHOR.CREATION_DATE)
    -      .fetch();]]></java><html>
    -
    -		      						<p>
    -		      							Some databases have poor support for returning generated keys after INSERTs. In those cases, jOOQ might need to issue another <reference id="select-statement" title="SELECT statement"/> in order to fetch an @@identity value. Be aware, that this can lead to race-conditions in those databases that cannot properly return generated ID values. For more information, please consider the jOOQ Javadoc for the returning() clause.
    -		      						</p>
    -
    -									<h3>The INSERT SELECT statement</h3>
    -							
    -									<p>
    -										In some occasions, you may prefer the INSERT SELECT syntax, for instance, when you copy records from one table to another:
    -									</p>
    -									
    -</html><java>create.insertInto(AUTHOR_ARCHIVE)
    -      .select(create.selectFrom(AUTHOR).where(AUTHOR.DECEASED.isTrue()));</java></content>
    -							</section>
    -
    -							<section id="update-statement">
    -								<title>The UPDATE statement</title>
    -								<content><html>
    -									<p>
    -										The UPDATE statement is used to modify one or several pre-existing records in a database table. UPDATE statements are only possible on single tables. Support for multi-table updates will be implemented in the near future. An example update query is given here:
    -									</p>
    -
    -</html><code-pair>
    -<sql>UPDATE AUTHOR
    -   SET FIRST_NAME = 'Hermann',
    -       LAST_NAME = 'Hesse'
    - WHERE ID = 3;</sql><java>create.update(AUTHOR)
    -      .set(AUTHOR.FIRST_NAME, "Hermann")
    -      .set(AUTHOR.LAST_NAME, "Hesse")
    -      .where(AUTHOR.ID.equal(3));</java>
    -</code-pair><html>
    -
    -									<p>
    -										Most databases allow for using scalar subselects in UPDATE statements in one way or another. jOOQ models this through a <code>set(Field&lt;T>, Select&lt;? extends Record1&lt;T>>) method in the UPDATE DSL API:</code>
    -									</p>
    -
    -</html><code-pair>
    -<sql>UPDATE AUTHOR
    -   SET FIRST_NAME = (
    -         SELECT FIRST_NAME
    -         FROM PERSON
    -         WHERE PERSON.ID = AUTHOR.ID
    -       ),
    - WHERE ID = 3;</sql><java>create.update(AUTHOR)
    -      .set(AUTHOR.FIRST_NAME, 
    -         select(PERSON.FIRST_NAME)
    -        .from(PERSON)
    -        .where(PERSON.ID.equal(AUTHOR.ID))
    -      )
    -      .where(AUTHOR.ID.equal(3));</java>
    -</code-pair><html>
    -
    -
    -									<h3>Using row value expressions in an UPDATE statement</h3>
    -									<p>
    -										jOOQ supports formal <reference id="row-value-expressions" title="row value expressions"/> in various contexts, among which the UPDATE statement. Only one row value expression can be updated at a time. Here's an example:
    -									</p>
    -									
    -</html><code-pair>
    -<sql>UPDATE AUTHOR
    -   SET (FIRST_NAME, LAST_NAME) = 
    -       ('Hermann',  'Hesse')
    - WHERE ID = 3;</sql><java>create.update(AUTHOR)
    -      .set(row(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME),
    -           row("Herman",          "Hesse"))
    -      .where(AUTHOR.ID.equal(3));</java>
    -</code-pair><html>
    -
    -									<p>
    -										This can be particularly useful when using subselects:
    -									</p>
    -
    -</html><code-pair>
    -<sql>UPDATE AUTHOR
    -   SET (FIRST_NAME, LAST_NAME) = (
    -         SELECT PERSON.FIRST_NAME, PERSON.LAST_NAME
    -         FROM PERSON
    -         WHERE PERSON.ID = AUTHOR.ID
    -       )
    - WHERE ID = 3;</sql><java>create.update(AUTHOR)
    -      .set(row(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME),
    -           select(PERSON.FIRST_NAME, PERSON.LAST_NAME)
    -          .from(PERSON)
    -          .where(PERSON.ID.equal(AUTHOR.ID))
    -      )
    -      .where(AUTHOR.ID.equal(3));</java>
    -</code-pair><html>
    -
    -									<p>
    -										The above row value expressions usages are completely typesafe.
    -									</p>
    -									
    -									<h3>UPDATE .. RETURNING</h3>
    -									<p>
    -										The Firebird and Postgres databases support a <code>RETURNING</code> clause on their <code>UPDATE</code> statements, similar as the <code>RETURNING</code> clause in <reference id="insert-statement" title="INSERT statements"/>. This is useful to fetch trigger-generated values in one go. An example is given here:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[-- Fetch a trigger-generated value
    -UPDATE BOOK
    -SET TITLE = 'Animal Farm'
    -WHERE ID = 5
    -RETURNING UPDATE_COUNT]]></sql><java><![CDATA[int count = create.update(BOOK)
    -                  .set(BOOK.TITLE, "Animal Farm")
    -                  .where(BOOK.ID.equal(5))
    -                  .returning(BOOK.UPDATE_COUNT)
    -                  .fetchOne().getValue(BOOK.UPDATE_COUNT);]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										The <code>UPDATE .. RETURNING</code> clause is currently not simulated for other databases. Future versions might execute an additional <reference id="select-statement" title="SELECT statement"/> to fetch results.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="delete-statement">
    -								<title>The DELETE statement</title>
    -								<content><html>
    -									<p>
    -										The DELETE statement physically removes records from a database table. DELETE statements are only possible on single tables. Support for multi-table deletes will be implemented in the near future. An example delete query is given here:
    -									</p>
    -
    -</html><code-pair>
    -<sql>DELETE AUTHOR
    - WHERE ID = 100;</sql><java>create.delete(AUTHOR)
    -      .where(AUTHOR.ID.equal(100));</java>
    -</code-pair><html>
    -
    -								</html></content>
    -							</section>
    -
    -							<section id="merge-statement">
    -								<title>The MERGE statement</title>
    -								<content><html>
    -									<p>
    -										The MERGE statement is one of the most advanced standardised SQL constructs, which is supported by DB2, HSQLDB, Oracle, SQL Server and Sybase (MySQL has the similar INSERT .. ON DUPLICATE KEY UPDATE construct)
    -									</p>
    -									<p>
    -										The point of the standard MERGE statement is to take a TARGET table, and merge (INSERT, UPDATE) data from a SOURCE table into it. DB2, Oracle, SQL Server and Sybase also allow for DELETING some data and for adding many additional clauses. With jOOQ {jooq-version}, only Oracle's MERGE extensions are supported. Here is an example:
    -									</p>
    -
    -</html><code-pair>
    -<sql>-- Check if there is already an author called 'Hitchcock'
    --- If there is, rename him to John. If there isn't add him.
    -MERGE INTO AUTHOR
    -USING (SELECT 1 FROM DUAL)
    -ON (LAST_NAME = 'Hitchcock')
    -WHEN MATCHED THEN UPDATE SET FIRST_NAME = 'John'
    -WHEN NOT MATCHED THEN INSERT (LAST_NAME) VALUES ('Hitchcock')</sql><java>create.mergeInto(AUTHOR)
    -      .using(create().selectOne())
    -      .on(AUTHOR.LAST_NAME.equal("Hitchcock"))
    -      .whenMatchedThenUpdate()
    -      .set(AUTHOR.FIRST_NAME, "John")
    -      .whenNotMatchedThenInsert(AUTHOR.LAST_NAME)
    -      .values("Hitchcock");
    -
    -</java></code-pair><html>
    -
    -		                            <h3>MERGE Statement (H2-specific syntax)</h3>
    -									<p>
    -									    The H2 database ships with a somewhat less powerful but a little more intuitive syntax for its own version of the MERGE statement. An example more or less equivalent to the previous one can be seen here:
    -									</p>
    -									
    -</html><code-pair>
    -<sql>-- Check if there is already an author called 'Hitchcock'
    --- If there is, rename him to John. If there isn't add him.
    -
    -MERGE INTO AUTHOR (FIRST_NAME, LAST_NAME)
    -KEY (LAST_NAME)
    -VALUES ('John', 'Hitchcock')</sql><java>create.mergeInto(AUTHOR,
    -                 AUTHOR.FIRST_NAME,
    -                 AUTHOR.LAST_NAME)
    -      .key(AUTHOR.LAST_NAME)
    -      .values("John", "Hitchcock")
    -      .execute();
    -</java></code-pair><html>
    -
    -		                            <p>
    -		                                This syntax can be fully simulated by jOOQ for all other databases that support the SQL standard. For more information about the H2 MERGE syntax, see the documentation here:<br/>
    -		                                <a href="http://www.h2database.com/html/grammar.html#merge">http://www.h2database.com/html/grammar.html#merge</a>
    -		                            </p>
    -								
    -									<h3>Typesafety of VALUES() for degrees up to {max-row-degree}</h3>
    -									<p>
    -										Much like the <reference id="insert-statement" title="INSERT statement"/>, the <code>MERGE</code> statement's <code>VALUES()</code> clause provides typesafety for degrees up to {max-row-degree}, in both the standard syntax variant as well as the H2 variant.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="truncate-statement">
    -								<title>The TRUNCATE statement</title>
    -								<content><html>
    -									<p>
    -										The TRUNCATE statement is the only DDL statement supported by jOOQ so far. It is popular in many databases when you want to bypass constraints for table truncation. Databases may behave differently, when a truncated table is referenced by other tables. For instance, they may fail if records from a truncated table are referenced, even with ON DELETE CASCADE clauses in place. Please, consider your database manual to learn more about its TRUNCATE implementation.
    -									</p>
    -									<p>
    -										The TRUNCATE syntax is trivial:
    -									</p>
    -
    -</html><code-pair>
    -	<sql>TRUNCATE TABLE AUTHOR;</sql><java>create.truncate(AUTHOR).execute();</java>
    -</code-pair><html>
    -									
    -									<p>
    -										TRUNCATE is not supported by Ingres and SQLite. jOOQ will execute a DELETE FROM AUTHOR statement instead.
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="table-expressions">
    -						<title>Table expressions</title>
    -						<content><html>
    -							<p>
    -								The following sections explain the various types of table expressions supported by jOOQ
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="generated-tables">
    -								<title>Generated Tables</title>
    -								<content><html>
    -									<p>
    -										Most of the times, when thinking about a <reference id="table-expressions" title="table expression"/> you're probably thinking about an actual physical table in your database schema. If you're using jOOQ's <reference id="code-generation" title="code generator"/>, you will have all tables from your database schema available to you as type safe Java objects. You can then use these tables in SQL <reference id="from-clause" title="FROM clauses"/>, <reference id="join-clause" title="JOIN clauses"/> or in other <reference id="sql-statements" title="SQL statements"/>, just like any other table expression. An example is given here:
    -									</p>
    -							
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM AUTHOR -- Table expression AUTHOR
    -JOIN BOOK   -- Table expression BOOK
    -ON (AUTHOR.ID = BOOK.AUTHOR_ID)]]></sql><java><![CDATA[create.select()
    -      .from(AUTHOR) // Table expression AUTHOR
    -      .join(BOOK)   // Table expression BOOK
    -      .on(AUTHOR.ID.equal(BOOK.AUTHOR_ID));]]></java></code-pair><html>
    -							
    -									<p>
    -										The above example shows how AUTHOR and BOOK tables are joined in a <reference id="select-statement" title="SELECT statement"/>. It also shows how you can access physical <reference id="table-columns" title="table columns"/> by dereferencing the relevant Java attributes of their tables.
    -									</p>
    -									<p>
    -										See the manual's section about <reference id="codegen-tables" title="generated tables"/> for more information about what is really generated by the <reference id="code-generation" title="code generator"/>
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="aliased-tables">
    -								<title>Aliased Tables</title>
    -								<content><html>
    -									<p>
    -										The strength of jOOQ's <reference id="code-generation" title="code generator"/> becomes more obvious when you perform table aliasing and dereference fields from generated aliased tables. This can best be shown by example:
    -									</p>
    -
    -</html><code-pair><sql><![CDATA[-- Select all books by authors born after 1920,
    --- named "Paulo" from a catalogue:
    -
    -
    -
    -SELECT *
    -  FROM author a
    -  JOIN book b ON a.id = b.author_id
    - WHERE a.year_of_birth > 1920
    -   AND a.first_name = 'Paulo'
    - ORDER BY b.title]]></sql><java><![CDATA[// Declare your aliases before using them in SQL:
    -Author a = AUTHOR.as("a");
    -Book b = BOOK.as("b");
    -
    -// Use aliased tables in your statement
    -create.select()
    -      .from(a)
    -      .join(b).on(a.ID.equal(b.AUTHOR_ID))
    -      .where(a.YEAR_OF_BIRTH.greaterThan(1920)
    -      .and(a.FIRST_NAME.equal("Paulo")))
    -      .orderBy(b.TITLE);]]></java></code-pair><html>
    -								
    -									<p>
    -										As you can see in the above example, calling <code>as()</code> on generated tables returns an object of the same type as the table. This means that the resulting object can be used to dereference fields from the aliased table. This is quite powerful in terms of having your Java compiler check the syntax of your SQL statements. If you remove a column from a table, dereferencing that column from that table alias will cause compilation errors.
    -									</p>
    -									
    -									<h3>Dereferencing columns from other table expressions</h3>
    -									<p>
    -										Only few table expressions provide the SQL syntax typesafety as shown above, where generated tables are used. Most tables, however, expose their fields through <code>field()</code> methods:
    -									</p>
    -
    -</html><java><![CDATA[// "Type-unsafe" aliased table:
    -Table<?> a = AUTHOR.as("a");
    -
    -// Get fields from a:
    -Field<?> id = a.field("ID");
    -Field<?> firstName = a.field("FIRST_NAME");]]></java><html>
    -									
    -									<h3>Derived column lists</h3>
    -									<p>
    -										The SQL standard specifies how a table can be renamed / aliased in one go along with its columns. It references the term "derived column list" for the following syntax (as supported by Postgres, for instance):
    -									</p>
    -									
    -</html><sql><![CDATA[SELECT t.a, t.b
    -FROM (
    -  SELECT 1, 2
    -) t(a, b)]]></sql><html>
    -
    -									<p>
    -										This feature is useful in various use-cases where column names are not known in advance (but the table's degree is!). An example for this are <reference id="array-and-cursor-unnesting" title="unnested tables"/>, or the <reference id="values" title="VALUES() table constructor"/>:
    -									</p>
    -
    -</html><sql><![CDATA[-- Unnested tables
    -SELECT t.a, t.b
    -FROM unnest(my_table_function()) t(a, b)
    -
    --- VALUES() constructor
    -SELECT t.a, t.b
    -FROM VALUES(1, 2),(3, 4) t(a, b)]]></sql><html>
    -
    -									<p>
    -										Only few databases really support such a syntax, but fortunately, jOOQ can simulate it easily using <code>UNION ALL</code> and an empty dummy record specifying the new column names. The two statements are equivalent:
    -									</p>
    -
    -</html><sql><![CDATA[-- Using derived column lists
    -SELECT t.a, t.b
    -FROM (
    -  SELECT 1, 2
    -) t(a, b)
    -
    --- Using UNION ALL and a dummy record
    -SELECT t.a, t.b
    -FROM (
    -  SELECT null a, null b FROM DUAL WHERE 1 = 0
    -  UNION ALL
    -  SELECT 1, 2 FROM DUAL
    -) t]]></sql><html>
    -									<p>
    -										In jOOQ, you would simply specify a varargs list of column aliases as such:
    -									</p>
    -									
    -</html><java><![CDATA[// Unnested tables
    -create.select().from(unnest(myTableFunction()).as("t", "a", "b"));
    -
    -// VALUES() constructor
    -create.select().from(values(
    -  row(1, 2),
    -  row(3, 4)
    -).as("t", "a", "b"));]]></java></content>
    -							</section>
    -
    -							<section id="joined-tables">
    -								<title>Joined tables</title>
    -								<content><html>
    -									<p>
    -										The <reference id="join-clause" title="JOIN operators"/> that can be used in <reference id="select-statement" title="SQL SELECT statements"/> are the most powerful and best supported means of creating new <reference id="table-expressions" title="table expressions"/> in SQL. Informally, the following can be said:
    -									</p>
    -									
    -</html><text>A(colA1, ..., colAn) "join" B(colB1, ..., colBm) "produces" C(colA1, ..., colAn, colB1, ..., colBm)</text><html>
    -
    -									<p>
    -										SQL and relational algebra distinguish between at least the following JOIN types (upper-case: SQL, lower-case: relational algebra):
    -									</p>
    -									<ul>
    -										<li><strong>CROSS JOIN or cartesian product</strong>: The basic JOIN in SQL, producing a relational cross product, combining every record of table A with every record of table B. Note that cartesian products can also be produced by listing comma-separated <reference id="table-expressions" title="table expressions"/> in the <reference id="from-clause" title="FROM clause"/> of a <reference id="select-statement" title="SELECT statement"/></li>
    -										<li><strong>NATURAL JOIN</strong>: The basic JOIN in relational algebra, yet a rarely used JOIN in databases with everyday degree of normalisation. This JOIN type unconditionally equi-joins two tables by all columns with the same name (requiring foreign keys and primary keys to share the same name). Note that the JOIN columns will only figure once in the resulting <reference id="table-expressions" title="table expression"/>.</li>
    -										<li><strong>INNER JOIN or equi-join</strong>: This JOIN operation performs a cartesian product (CROSS JOIN) with a <reference id="conditional-expressions" title="filtering predicate"/> being applied to the resulting <reference id="table-expressions" title="table expression"/>. Most often, a <reference id="comparison-predicate" title="equal comparison predicate"/> comparing foreign keys and primary keys will be applied as a filter, but any other predicate will work, too.</li>
    -										<li><strong>OUTER JOIN</strong>: This JOIN operation performs a cartesian product (CROSS JOIN) with a <reference id="conditional-expressions" title="filtering predicate"/> being applied to the resulting <reference id="table-expressions" title="table expression"/>. Most often, a <reference id="comparison-predicate" title="equal comparison predicate"/> comparing foreign keys and primary keys will be applied as a filter, but any other predicate will work, too. Unlike the INNER JOIN, an OUTER JOIN will add "empty records" to the left (table A) or right (table B) or both tables, in case the conditional expression fails to produce a .</li>										
    -										<li><strong>semi-join</strong>: In SQL, this JOIN operation can only be expressed implicitly using <reference id="in-predicate" title="IN predicates"/> or <reference id="exists-predicate" title="EXISTS predicates"/>. The <reference id="table-expressions" title="table expression"/> resulting from a semi-join will only contain the left-hand side table A</li>										
    -										<li><strong>anti-join</strong>: In SQL, this JOIN operation can only be expressed implicitly using <reference id="in-predicate" title="NOT IN predicates"/> or <reference id="exists-predicate" title="NOT EXISTS predicates"/>. The <reference id="table-expressions" title="table expression"/> resulting from a semi-join will only contain the left-hand side table A</li>
    -										<li><strong>division</strong>: This JOIN operation is hard to express at all, in SQL. See the manual's chapter about <reference id="relational-division" title="relational division"/> for details on how jOOQ simulates this operation.</li>
    -									</ul>									
    -									<p>
    -										jOOQ supports all of these JOIN types (except semi-join and anti-join) directly on any <reference id="table-expressions" title="table expression"/>:
    -									</p>
    -									
    -</html><java><![CDATA[// jOOQ's relational division convenience syntax 
    -DivideByOnStep divideBy(Table<?> table)
    -
    -// Various overloaded INNER JOINs
    -TableOnStep join(TableLike<?>)
    -TableOnStep join(String)
    -TableOnStep join(String, Object...)
    -TableOnStep join(String, QueryPart...)
    -
    -// Various overloaded OUTER JOINs (supporting Oracle's partitioned OUTER JOIN)
    -// Overloading is similar to that of INNER JOIN
    -TablePartitionByStep leftOuterJoin(TableLike<?>)
    -TablePartitionByStep rightOuterJoin(TableLike<?>)
    -
    -// Various overloaded FULL OUTER JOINs
    -TableOnStep fullOuterJoin(TableLike<?>)
    -
    -// Various overloaded CROSS JOINs
    -Table<Record> crossJoin(TableLike<?>)
    -
    -// Various overloaded NATURAL JOINs
    -Table<Record> naturalJoin(TableLike<?>)
    -Table<Record> naturalLeftOuterJoin(TableLike<?>)
    -Table<Record> naturalRightOuterJoin(TableLike<?>)]]></java><html>							
    -
    -									<p>
    -										Note that most of jOOQ's JOIN operations give way to a similar DSL API hierarchy as previously seen in the manual's section about the <reference id="join-clause" title="JOIN clause"/>
    -									</p>		
    -								</html></content>
    -							</section>
    -
    -							<section id="values">
    -								<title>The VALUES() table constructor</title>
    -								<content><html>
    -									<p>
    -										Some databases allow for expressing in-memory temporary tables using a <code>VALUES()</code> constructor. This constructor usually works the same way as the <code>VALUES()</code> clause known from the <reference id="insert-statement" title="INSERT statement"/> or from the <reference id="merge-statement" title="MERGE statement"/>. With jOOQ, you can also use the <code>VALUES()</code> table constructor, to create tables that can be used in a <reference id="select-statement" title="SELECT statement's"/> <reference id="from-clause" title="FROM clause"/>:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[SELECT a, b
    -FROM VALUES(1, 'a'), 
    -           (2, 'b') t(a, b)]]></sql><java><![CDATA[create.select()
    -      .from(values(row(1, "a"),
    -                   row(2, "b")).as("t", "a", "b"));]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										Note, that it is usually quite useful to provide column aliases ("derived column lists") along with the table alias for the <code>VALUES()</code> constructor.
    -									</p>
    -									
    -									<p>
    -										The above statement is simulated by jOOQ for those databases that do not support the <code>VALUES()</code> constructor, natively (actual simulations may vary):
    -									</p>
    -									
    -</html><sql><![CDATA[-- If derived column expressions are supported:
    -SELECT a, b
    -FROM (
    -  SELECT 1, 'a' FROM DUAL UNION ALL
    -  SELECT 2, 'b' FROM DUAL
    -) t(a, b)
    -
    --- If derived column expressions are not supported:
    -SELECT a, b
    -FROM (
    -
    -  -- An empty dummy record is added to provide column names for the simulated derived column expression
    -  SELECT NULL a, NULL b FROM DUAL WHERE 1 = 0 UNION ALL
    -  
    -  -- Then, the actual VALUES() constructor is simulated
    -  SELECT 1,      'a'    FROM DUAL             UNION ALL
    -  SELECT 2,      'b'    FROM DUAL
    -) t
    -]]></sql></content>
    -							</section>
    -
    -							<section id="nested-selects">
    -								<title>Nested SELECTs</title>
    -								<content><html>
    -									<p>
    -										A <reference id="select-statement" title="SELECT statement"/> can appear almost anywhere a <reference id="table-expressions" title="table expression"/> can. Such a "nested SELECT" is often called a "derived table". Apart from many convenience methods accepting <reference class="org.jooq.Select"/> objects directly, a SELECT statement can always be transformed into a <reference class="org.jooq.Table"/> object using the asTable() method.
    -									</p>
    -									
    -									<h3>Example: Scalar subquery</h3>
    -									
    -</html><code-pair>
    -<sql>SELECT *
    -  FROM BOOK
    - WHERE BOOK.AUTHOR_ID = (
    - 		SELECT ID
    -          FROM AUTHOR
    -         WHERE LAST_NAME = 'Orwell')</sql><java>create.select()
    -      .from(BOOK)
    -      .where(BOOK.AUTHOR_ID.equal(create
    -             .select(AUTHOR.ID)
    -             .from(AUTHOR)
    -             .where(AUTHOR.LAST_NAME.equal("Orwell"))));</java>
    -</code-pair><html>
    -
    -									<h3>Example: Derived table</h3>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT nested.* FROM (
    -      SELECT AUTHOR_ID, count(*) books
    -        FROM BOOK
    -    GROUP BY AUTHOR_ID
    -) nested
    -ORDER BY nested.books DESC
    -
    -
    -
    -]]></sql><java><![CDATA[Table<Record> nested =
    -    create.select(BOOK.AUTHOR_ID, count().as("books"))
    -          .from(BOOK)
    -          .groupBy(BOOK.AUTHOR_ID).asTable("nested");
    -
    -create.select(nested.getFields())
    -      .from(nested)
    -      .orderBy(nested.getField("books"));]]></java>
    -</code-pair><html>
    -
    -									<h3>Example: Correlated subquery</h3>
    -</html><code-pair>
    -<sql><![CDATA[  SELECT LAST_NAME, (
    -      SELECT COUNT(*)
    -       FROM BOOK
    -      WHERE BOOK.AUTHOR_ID = AUTHOR.ID) books
    -    FROM AUTHOR
    -ORDER BY books DESC
    -
    -
    -
    -]]></sql><java><![CDATA[// The type of books cannot be inferred from the Select<?>
    -Field<Object> books =
    -    create.selectCount()
    -          .from(BOOK)
    -          .where(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -          .asField("books");
    -create.select(AUTHOR.ID, books)
    -      .from(AUTHOR)
    -      .orderBy(books, AUTHOR.ID));]]></java>
    -</code-pair><html>									
    -								</html></content>
    -							</section>
    -
    -							<section id="pivot-tables">
    -								<title>The Oracle 11g PIVOT clause</title>
    -								<content><html>
    -									<p>
    -										If you are closely coupling your application to an Oracle database, you can take advantage of some Oracle-specific features, such as the PIVOT clause, used for statistical analyses. The formal syntax definition is as follows:
    -									</p>
    -									
    -</html><sql>-- SELECT ..
    -     FROM table PIVOT (aggregateFunction [, aggregateFunction] FOR column IN (expression [, expression]))
    ---  WHERE ..</sql><html>
    -		
    -									<p>
    -										The PIVOT clause is available from the <reference class="org.jooq.Table"/> type, as pivoting is done directly on a table. Currently, only Oracle's PIVOT clause is supported. Support for SQL Server's slightly different PIVOT clause will be added later. Also, jOOQ may simulate PIVOT for other dialects in the future.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="relational-division">
    -								<title>jOOQ's relational division syntax</title>
    -								<content><html>
    -									<p>
    -									    There is one operation in relational algebra that is not given a lot of attention, because it is rarely used in real-world applications. It is the relational division, the opposite operation of the cross product (or, relational multiplication). The following is an approximate definition of a relational division:
    -									</p>
    -
    -</html><config>Assume the following cross join / cartesian product
    -C = A × B
    -
    -Then it can be said that
    -A = C ÷ B
    -B = C ÷ A</config><html>
    -
    -									<p>
    -									   With jOOQ, you can simplify using relational divisions by using the following syntax:
    -									</p>
    -
    -</html><java>C.divideBy(B).on(C.ID.equal(B.C_ID)).returning(C.TEXT)</java><html>
    -
    -									<p>
    -										The above roughly translates to
    -									</p>
    -
    -</html><sql>SELECT DISTINCT C.TEXT FROM C "c1"
    -WHERE NOT EXISTS (
    -  SELECT 1 FROM B
    -  WHERE NOT EXISTS (
    -    SELECT 1 FROM C "c2"
    -    WHERE "c2".TEXT = "c1".TEXT
    -    AND "c2".ID = B.C_ID
    -  )
    -)</sql><html>
    -
    -									<p>
    -										Or in plain text: Find those TEXT values in C whose ID's correspond to all ID's in B. Note that from the above SQL statement, it is immediately clear that proper indexing is of the essence. Be sure to have indexes on all columns referenced from the on(...) and returning(...) clauses.
    -									</p>
    -
    -									<p>
    -										For more information about relational division and some nice, real-life examples, see
    -									</p>
    -
    -									<ul>
    -										<li><a href="http://en.wikipedia.org/wiki/Relational_algebra#Division" title="Wikipedia article on relational division">http://en.wikipedia.org/wiki/Relational_algebra#Division</a></li>
    -										<li><a href="http://www.simple-talk.com/sql/t-sql-programming/divided-we-stand-the-sql-of-relational-division/" title="A nice summary of what relational division is and how it is best implemented in SQL">http://www.simple-talk.com/sql/t-sql-programming/divided-we-stand-the-sql-of-relational-division/</a></li>
    -									</ul>
    -								</html></content>
    -
    -							</section>
    -
    -							<section id="array-and-cursor-unnesting">
    -								<title>Array and cursor unnesting</title>
    -								<content><html>
    -									<p>
    -										The SQL standard specifies how SQL databases should implement ARRAY and TABLE types, as well as CURSOR types. Put simply, a CURSOR is a pointer to any materialised <reference id="table-expressions" title="table expression"/>. Depending on the cursor's features, this table expression can be scrolled through in both directions, records can be locked, updated, removed, inserted, etc. Often, CURSOR types contain s, whereas ARRAY and TABLE types contain simple scalar values, although that is not a requirement
    -									</p>
    -									
    -									<p>
    -										ARRAY types in SQL are similar to Java's array types. They contain a "component type" or "element type" and a "dimension". This sort of ARRAY type is implemented in H2, HSQLDB and Postgres and supported by jOOQ as such. Oracle uses strongly-typed arrays, which means that an ARRAY type (VARRAY or TABLE type) has a name and possibly a maximum capacity associated with it.
    -									</p>
    -
    -									<h3>Unnesting array and cursor types</h3>									
    -									<p>
    -										The real power of these types become more obvious when you fetch them from <reference id="stored-procedures" title="stored procedures"/> to unnest them as <reference id="table-expressions" title="table expressions"/> and use them in your <reference id="from-clause" title="FROM clause"/>. An example is given here, where Oracle's DBMS_XPLAN package is used to fetch a cursor containing data about the most recent execution plan:
    -									</p>									
    -
    -</html><code-pair>
    -	<sql><![CDATA[SELECT *
    -FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(null, null, 'ALLSTATS'));]]></sql><java><![CDATA[create.select()
    -      .from(table(DbmsXplan.displayCursor(null, null, "ALLSTATS"));]]></java>
    -</code-pair><html>
    -									<p>
    -										Note, in order to access the DbmsXplan package, you can use the <reference id="code-generation" title="code generator"/> to generate Oracle's SYS schema.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="dual">
    -								<title>The DUAL table</title>
    -								<content><html>
    -									<p>
    -										The SQL standard specifies that the <reference id="from-clause" title="FROM clause"/> is optional in a <reference id="select-statement" title="SELECT statement"/>. However, according to the standard, you may then no longer use some other clauses, such as the <reference id="where-clause" title="WHERE clause"/>. In the real world, there exist three types of databases:
    -									</p>
    -									<ul>
    -										<li>The ones that always require a <code>FROM</code> clause</li>
    -										<li>The ones that never require a <code>FROM</code> clause (and still allow a <code>WHERE</code> clause)</li>
    -										<li>The ones that correctly implement the SQL standard</li>
    -									</ul>
    -									<p>
    -										With jOOQ, you don't have to worry about the above distinction of SQL dialects. jOOQ never requires a <code>FROM</code> clause, but renders the necessary <code>"DUAL"</code> table, if needed. The following program shows how jOOQ renders <code>"DUAL"</code> tables
    -									</p>
    -
    -</html><code-pair>
    -	<sql><![CDATA[SELECT 1
    -SELECT 1 FROM "db_root"
    -SELECT 1 FROM "SYSIBM"."DUAL"
    -SELECT 1 FROM "SYSIBM"."SYSDUMMY1"
    -SELECT 1 FROM "RDB$DATABASE"
    -SELECT 1 FROM dual
    -SELECT 1 FROM "INFORMATION_SCHEMA"."SYSTEM_USERS"
    -SELECT 1 FROM (select 1 as dual) as dual
    -SELECT 1 FROM dual
    -SELECT 1 FROM dual
    -SELECT 1
    -SELECT 1
    -SELECT 1
    -SELECT 1 FROM [SYS].[DUMMY]
    -]]></sql><java><![CDATA[DSL.using(SQLDialect.ASE      ).selectOne().getSQL();
    -DSL.using(SQLDialect.CUBRID   ).selectOne().getSQL();
    -DSL.using(SQLDialect.DB2      ).selectOne().getSQL();
    -DSL.using(SQLDialect.DERBY    ).selectOne().getSQL();
    -DSL.using(SQLDialect.FIREBIRD ).selectOne().getSQL();
    -DSL.using(SQLDialect.H2       ).selectOne().getSQL();
    -DSL.using(SQLDialect.HSQLDB   ).selectOne().getSQL();
    -DSL.using(SQLDialect.INGRES   ).selectOne().getSQL();
    -DSL.using(SQLDialect.MYSQL    ).selectOne().getSQL();
    -DSL.using(SQLDialect.ORACLE   ).selectOne().getSQL();
    -DSL.using(SQLDialect.POSTGRES ).selectOne().getSQL();
    -DSL.using(SQLDialect.SQLITE   ).selectOne().getSQL();
    -DSL.using(SQLDialect.SQLSERVER).selectOne().getSQL();
    -DSL.using(SQLDialect.SYBASE   ).selectOne().getSQL();]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										Note, that some databases (H2, MySQL) can normally do without <code>"DUAL"</code>. However, there exist some corner-cases with complex nested <code>SELECT</code> statements, where this will cause syntax errors (or parser bugs). To stay on the safe side, jOOQ will always render "dual" in those dialects.
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="column-expressions">
    -						<title>Column expressions</title>
    -						<content><html>
    -						    <p>
    -						    	Column expressions can be used in various SQL clauses in order to refer to one or several columns. This chapter explains how to form various types of column expressions with jOOQ. A particular type of column expression is given in the section about <reference id="row-value-expressions" title="tuples or row value expressions"/>, where an expression may have a degree of more than one.
    -						    </p>
    -						
    -						    <h3>Using column expressions in jOOQ</h3>
    -							<p>
    -								jOOQ allows you to freely create arbitrary column expressions using a fluent expression construction API. Many expressions can be formed as functions from <reference id="dsl" title="DSL methods"/>, other expressions can be formed based on a pre-existing column expression. For example:
    -							</p>
    -							
    -</html><java><![CDATA[// A regular table column expression
    -Field<String> field1 = BOOK.TITLE;
    -
    -// A function created from the DSL using "prefix" notation
    -Field<String> field2 = trim(BOOK.TITLE);
    -
    -// The same function created from a pre-existing Field using "postfix" notation
    -Field<String> field3 = BOOK.TITLE.trim();
    -
    -// More complex function with advanced DSL syntax
    -Field<String> field4 = listAgg(BOOK.TITLE)
    -                          .withinGroupOrderBy(BOOK.ID.asc())
    -                          .over().partitionBy(AUTHOR.ID);]]></java><html>
    -
    -							<p>
    -								In general, it is up to you whether you want to use the "prefix" notation or the "postfix" notation to create new column expressions based on existing ones. The "SQL way" would be to use the "prefix notation", with functions created from the <reference id="dsl" title="DSL"/>. The "Java way" or "object-oriented way" would be to use the "postfix" notation with functions created from <reference class="org.jooq.Field"/> objects. Both ways ultimately create the same query part, though.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="table-columns">
    -								<title>Table columns</title>
    -								<content><html>
    -									<p>
    -										Table columns are the most simple implementations of a <reference id="column-expressions" title="column expression"/>. They are mainly produced by jOOQ's <reference id="code-generation" title="code generator"/> and can be dereferenced from the generated tables. This manual is full of examples involving table columns. Another example is given in this query:
    -									</p>
    -
    -</html><code-pair>
    -	<sql><![CDATA[SELECT BOOK.ID, BOOK.TITLE
    -FROM BOOK
    -WHERE BOOK.TITLE LIKE '%SQL%'
    -ORDER BY BOOK.TITLE]]></sql><java><![CDATA[create.select(BOOK.ID, BOOK.TITLE)
    -	  .from(BOOK)
    -	  .where(BOOK.TITLE.like("%SQL%"))
    -	  .orderBy(BOOK.TITLE);]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										Table columns implement a more specific interface called <reference class="org.jooq.TableField"/>, which is parameterised with its associated <code>&lt;R extends Record&gt;</code> record type.
    -									</p>
    -									<p>
    -										See the manual's section about <reference id="codegen-tables" title="generated tables"/> for more information about what is really generated by the <reference id="code-generation" title="code generator"/>
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="aliased-columns">
    -								<title>Aliased columns</title>
    -								<content><html>
    -									<p>
    -										Just like <reference id="aliased-tables" title="tables"/>, columns can be renamed using aliases. Here is an example:
    -									</p>
    -									
    -</html><sql>  SELECT FIRST_NAME || ' ' || LAST_NAME author, COUNT(*) books
    -    FROM AUTHOR
    -    JOIN BOOK ON AUTHOR.ID = AUTHOR_ID
    -GROUP BY FIRST_NAME, LAST_NAME;</sql><html>
    -
    -									<p>
    -										Here is how it's done with jOOQ:
    -									</p>
    -									
    -</html><java>Record record = create.select(
    -         concat(AUTHOR.FIRST_NAME, val(" "), AUTHOR.LAST_NAME).as("author"),
    -         count().as("books"))
    -      .from(AUTHOR)
    -      .join(BOOK).on(AUTHOR.ID.equal(BOOK.AUTHOR_ID))
    -      .groupBy(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME).fetchAny();</java><html>
    -      
    -      								<p>
    -      									When you alias Fields like above, you can access those Fields' values using the alias name:
    -  									</p>
    -  									
    -</html><java>System.out.println("Author : " + record.getValue("author"));
    -System.out.println("Books  : " + record.getValue("books"));</java></content>
    -							</section>
    -
    -							<section id="cast-expressions">
    -								<title>Cast expressions</title>
    -								<content><html>
    -									<p>
    -										jOOQ's source code generator tries to find the most accurate type mapping between your vendor-specific data types and a matching Java type. For instance, most <code>VARCHAR</code>, <code>CHAR</code>, <code>CLOB</code> types will map to String. Most <code>BINARY</code>, <code>BYTEA</code>, <code>BLOB</code> types will map to <code>byte[]</code>. <code>NUMERIC</code> types will default to <reference class="java.math.BigDecimal"/>, but can also be any of <reference class="java.math.BigInteger"/>, <reference class="java.lang.Long"/>, <reference class="java.lang.Integer"/>, <reference class="java.lang.Short"/>, <reference class="java.lang.Byte"/>, <reference class="java.lang.Double"/>, <reference class="java.lang.Float"/>.
    -									</p>
    -									<p>
    -										Sometimes, this automatic mapping might not be what you needed, or jOOQ cannot know the type of a field. In those cases you would write SQL type <code>CAST</code> like this:
    -									</p>
    -									
    -</html><sql>-- Let's say, your Postgres column LAST_NAME was VARCHAR(30)
    --- Then you could do this:
    -SELECT CAST(AUTHOR.LAST_NAME AS TEXT) FROM DUAL</sql><html>
    -
    -									<p>
    -										in jOOQ, you can write something like that:
    -									</p>
    -									
    -</html><java>create.select(TAuthor.LAST_NAME.cast(PostgresDataType.TEXT));</java><html>
    -
    -									<p>
    -										The same thing can be achieved by casting a Field directly to String.class, as <code>TEXT</code> is the default data type in Postgres to map to Java's String
    -									</p>
    -									
    -</html><java>create.select(TAuthor.LAST_NAME.cast(String.class));</java><html>
    -		
    -									<p>
    -										The complete <code>CAST</code> API in <reference class="org.jooq.Field"/> consists of these three methods:
    -									</p>
    -									
    -</html><java><![CDATA[public interface Field<T> {
    -
    -    // Cast this field to the type of another field
    -    <Z> Field<Z> cast(Field<Z> field);
    -    
    -    // Cast this field to a given DataType
    -    <Z> Field<Z> cast(DataType<Z> type);
    -    
    -    // Cast this field to the default DataType for a given Class
    -    <Z> Field<Z> cast(Class<? extends Z> type);
    -}
    -
    -// And additional convenience methods in the DSL:
    -public class DSL {
    -    <T> Field<T> cast(Object object, Field<T> field);
    -    <T> Field<T> cast(Object object, DataType<T> type);
    -    <T> Field<T> cast(Object object, Class<? extends T> type);
    -    <T> Field<T> castNull(Field<T> field);
    -    <T> Field<T> castNull(DataType<T> type);
    -    <T> Field<T> castNull(Class<? extends T> type);
    -}]]></java></content>
    -							</section>
    -
    -							<section id="arithmetic-expressions">
    -								<title>Arithmetic expressions</title>
    -								<content><html>
    -									<h3>Numeric arithmetic expressions</h3>
    -									<p>
    -										Your database can do the math for you. Arithmetic operations are implemented just like <reference id="numeric-functions" title="numeric functions"/>, with similar limitations as far as type restrictions are concerned. You can use any of these operators:
    -									</p>
    -
    -</html><config>  +  -  *  /  %</config><html>
    -
    -									<p>
    -										In order to express a SQL query like this one:
    -									</p>
    -									
    -</html><sql>SELECT ((1 + 2) * (5 - 3) / 2) % 10 FROM DUAL</sql><html>
    -							
    -									<p>
    -										You can write something like this in jOOQ:
    -									</p>
    -									
    -</html><java>create.select(val(1).add(2).mul(val(5).sub(3)).div(2).mod(10);</java><html>
    -
    -									<h3>Datetime arithmetic expressions</h3>
    -									<p>
    -										jOOQ also supports the Oracle-style syntax for adding days to a Field&lt;? extends java.util.Date&gt; 
    -									</p>
    -
    -</html><code-pair>
    -	<sql>SELECT SYSDATE + 3 FROM DUAL;</sql><java>create.select(currentTimestamp().add(3));</java>
    -</code-pair><html>
    -
    -									<p>
    -										For more advanced datetime arithmetic, use the DSL's timestampDiff() and dateDiff() functions, as well as jOOQ's built-in SQL standard <code>INTERVAL</code> data type support:
    -									</p>
    -									<ul>
    -										<li><code>INTERVAL YEAR TO MONTH</code>: <reference class="org.jooq.types.YearToMonth"/></li>
    -										<li><code>INTERVAL DAY TO SECOND</code>: <reference class="org.jooq.types.DayToSecond"/></li>
    -									</ul>
    -								</html></content>
    -							</section>
    -							
    -							<section id="string-concatenation">
    -								<title>String concatenation</title>
    -								<content><html>
    -									<p>
    -										The SQL standard defines the concatenation operator to be an infix operator, similar to the ones we've seen in the chapter about <reference id="arithmetic-expressions" title="arithmetic expressions"/>. This operator looks like this: <code>||</code>. Some other dialects do not support this operator, but expect a <code>concat()</code> function, instead. jOOQ renders the right operator / function, depending on your <reference id="sql-dialects" title="SQL dialect"/>:
    -									</p>
    -									
    -</html><code-pair>
    -<sql>SELECT 'A' || 'B' || 'C' FROM DUAL
    --- Or in MySQL:
    -SELECT concat('A', 'B', 'C') FROM DUAL</sql><java>&#160;
    -// For all RDBMS, including MySQL:
    -create.select(concat("A", "B", "C"));
    -</java>
    -</code-pair><html>								
    -								</html></content>
    -							</section>
    -
    -							<section id="general-functions">
    -								<title>General functions</title>
    -								<content><html>
    -									<p>
    -										There are a variety of general functions supported by jOOQ As discussed in the chapter about <reference id="sql-dialects" title="SQL dialects"/> functions are mostly simulated in your database, in case they are not natively supported.
    -									</p>
    -									<p>
    -										This is a list of general functions supported by jOOQ's <reference id="dsl" title="DSL"/>:
    -									</p>
    -									<ul>
    -										<li><strong><code>COALESCE</code></strong>: Get the first non-null value in a list of arguments.</li>
    -										<li><strong><code>NULLIF</code></strong>: Return <code>NULL</code> if both arguments are equal, or the first argument, otherwise.</li>
    -										<li><strong><code>NVL</code></strong>: Get the first non-null value among two arguments.</li>
    -										<li><strong><code>NVL2</code></strong>: Get the second argument if the first is null, or the third argument, otherwise.</li>
    -									</ul>
    -																
    -									<p>
    -										Please refer to the <reference class="org.jooq.impl.DSL" title="DSL Javadoc"/> for more details.
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -							<section id="numeric-functions">
    -								<title>Numeric functions</title>
    -								<content><html>
    -									<p>
    -										Math can be done efficiently in the database before returning results to your Java application. In addition to the <reference id="arithmetic-expressions" title="arithmetic expressions" /> discussed previously, jOOQ also supports a variety of numeric functions. As discussed in the chapter about <reference id="sql-dialects" title="SQL dialects"/> numeric functions (as any function type) are mostly simulated in your database, in case they are not natively supported.
    -									</p>
    -									<p>
    -										This is a list of numeric functions supported by jOOQ's <reference id="dsl" title="DSL"/>:
    -									</p>
    -									
    -									<ul>
    -										<li><strong><code>ABS</code></strong>: Get the absolute value of a value.</li>
    -										<li><strong><code>ACOS</code></strong>: Get the arc cosine of a value.</li>
    -										<li><strong><code>ASIN</code></strong>: Get the arc sine of a value.</li>
    -										<li><strong><code>ATAN</code></strong>: Get the arc tangent of a value.</li>
    -										<li><strong><code>ATAN2</code></strong>: Get the atan2 function of two values.</li>
    -										<li><strong><code>CEIL</code></strong>: Get the smalles integer value larger than a given numeric value.</li>
    -										<li><strong><code>COS</code></strong>: Get the cosine of a value.</li>
    -										<li><strong><code>COSH</code></strong>: Get the hyperbolic cosine of a value.</li>
    -										<li><strong><code>COT</code></strong>: Get the cotangent of a value.</li>
    -										<li><strong><code>COTH</code></strong>: Get the hyperbolic cotangent of a value.</li>
    -										<li><strong><code>DEG</code></strong>: Transform radians into degrees.</li>
    -										<li><strong><code>EXP</code></strong>: Calculate e^value.</li>
    -										<li><strong><code>FLOOR</code></strong>: Get the largest integer value smaller than a given numeric value.</li>
    -										<li><strong><code>GREATEST</code></strong>: Finds the greatest among all argument values (can also be used with non-numeric values).</li>
    -										<li><strong><code>LEAST</code></strong>: Finds the least among all argument values (can also be used with non-numeric values).</li>
    -										<li><strong><code>LN</code></strong>: Get the natural logarithm of a value.</li>
    -										<li><strong><code>LOG</code></strong>: Get the logarithm of a value given a base.</li>
    -										<li><strong><code>POWER</code></strong>: Calculate value^exponent.</li>
    -										<li><strong><code>RAD</code></strong>: Transform degrees into radians.</li>
    -										<li><strong><code>RAND</code></strong>: Get a random number.</li>
    -										<li><strong><code>ROUND</code></strong>: Rounds a value to the nearest integer.</li>
    -										<li><strong><code>SIGN</code></strong>: Get the sign of a value (-1, 0, 1).</li>
    -										<li><strong><code>SIN</code></strong>: Get the sine of a value.</li>
    -										<li><strong><code>SINH</code></strong>: Get the hyperbolic sine of a value.</li>
    -										<li><strong><code>SQRT</code></strong>: Calculate the square root of a value.</li>
    -										<li><strong><code>TAN</code></strong>: Get the tangent of a value.</li>
    -										<li><strong><code>TANH</code></strong>: Get the hyperbolic tangent of a value.</li>
    -										<li><strong><code>TRUNC</code></strong>: Truncate the decimals off a given value.</li>
    -									</ul>
    -									
    -									<p>
    -										Please refer to the <reference class="org.jooq.impl.DSL" title="DSL Javadoc"/> for more details.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="bitwise-functions">
    -								<title>Bitwise functions</title>
    -								<content><html>
    -									<p>
    -										Interestingly, bitwise functions and bitwise arithmetic is not very popular among SQL databases. Most databases only support a few bitwise operations, while others ship with the full set of operators. jOOQ's API includes most bitwise operations as listed below. In order to avoid ambiguities with <reference id="conditional-expressions" title="conditional operators"/>, all bitwise functions are prefixed with "bit"
    -									</p>
    -									<ul>
    -										<li><strong><code>BIT_COUNT</code></strong>: Count the number of bits set to 1 in a number</li>
    -										<li><strong><code>BIT_AND</code></strong>: Set only those bits that are set in two numbers</li>
    -										<li><strong><code>BIT_OR</code></strong>: Set all bits that are set in at least one number</li>
    -										<li><strong><code>BIT_NAND</code></strong>: Set only those bits that are set in two numbers, and inverse the result</li>
    -										<li><strong><code>BIT_NOR</code></strong>: Set all bits that are set in at least one number, and inverse the result</li>
    -										<li><strong><code>BIT_NOT</code></strong>: Inverse the bits in a number</li>
    -										<li><strong><code>BIT_XOR</code></strong>: Set all bits that are set in at exactly one number</li>
    -										<li><strong><code>BIT_XNOR</code></strong>: Set all bits that are set in at exactly one number, and inverse the result</li>
    -										<li><strong><code>SHL</code></strong>: Shift bits to the left</li>
    -										<li><strong><code>SHR</code></strong>: Shift bits to the right</li>
    -									</ul>
    -									
    -									<h3>Some background about bitwise operation simulation</h3>
    -									<p>
    -										As stated before, not all databases support all of these bitwise operations. jOOQ simulates them wherever this is possible. More details can be seen in this blog post: <br/>
    -										<a href="http://blog.jooq.org/2011/10/30/the-comprehensive-sql-bitwise-operations-compatibility-list/">http://blog.jooq.org/2011/10/30/the-comprehensive-sql-bitwise-operations-compatibility-list/</a>
    -									</p>
    -									
    -								</html></content>
    -							</section>
    -
    -							<section id="string-functions">
    -								<title>String functions</title>
    -								<content><html>
    -									<p>
    -										String formatting can be done efficiently in the database before returning results to your Java application. As discussed in the chapter about <reference id="sql-dialects" title="SQL dialects"/> string functions (as any function type) are mostly simulated in your database, in case they are not natively supported.
    -									</p>
    -									<p>
    -										This is a list of numeric functions supported by jOOQ's <reference id="dsl" title="DSL"/>:
    -									</p>
    -									
    -									<ul>
    -										<li><strong><code>ASCII</code></strong>: Get the <code>ASCII</code> code of a character.</li>
    -										<li><strong><code>BIT_LENGTH</code></strong>: Get the length of a string in bits.</li>
    -										<li><strong><code>CHAR_LENGTH</code></strong>: Get the length of a string in characters.</li>
    -										<li><strong><code>CONCAT</code></strong>: Concatenate several strings.</li>
    -										<li><strong><code>ESCAPE</code></strong>: Escape a string for use with the <reference id="like-predicate" title="LIKE predicate"/>.</li>
    -										<li><strong><code>LENGTH</code></strong>: Get the length of a string.</li>
    -										<li><strong><code>LOWER</code></strong>: Get a string in lower case letters.</li>
    -										<li><strong><code>LPAD</code></strong>: Pad a string on the left side.</li>
    -										<li><strong><code>LTRIM</code></strong>: Trim a string on the left side.</li>
    -										<li><strong><code>OCTET_LENGTH</code></strong>: Get the length of a string in octets.</li>
    -										<li><strong><code>POSITION</code></strong>: Find a string within another string.</li>
    -										<li><strong><code>REPEAT</code></strong>: Repeat a string a given number of times.</li>
    -										<li><strong><code>REPLACE</code></strong>: Replace a string within another string.</li>
    -										<li><strong><code>RPAD</code></strong>: Pad a string on the right side.</li>
    -										<li><strong><code>RTRIM</code></strong>: Trim a string on the right side.</li>
    -										<li><strong><code>SUBSTRING</code></strong>: Get a substring of a string.</li>
    -										<li><strong><code>TRIM</code></strong>: Trim a string on both sides.</li>
    -										<li><strong><code>UPPER</code></strong>: Get a string in upper case letters.</li>
    -									</ul>
    -									
    -									<p>
    -										Please refer to the <reference class="org.jooq.impl.DSL" title="DSL Javadoc"/> for more details.
    -									</p>
    -									
    -									<h3>Regular expressions, <code>REGEXP</code>, <code>REGEXP_LIKE</code>, etc.</h3>
    -									<p>
    -										Various databases have some means of searching through columns using regular expressions if the <reference id="like-predicate" title="LIKE predicate"/> does not provide sufficient pattern matching power. While there are many different functions and operators in the various databases, jOOQ settled for the SQL:2008 standard <code>REGEX_LIKE</code> operator. Being an operator (and not a function), you should use the corresponding method on <reference class="org.jooq.Field"/>:
    -									</p>
    -									
    -</html><java><![CDATA[create.selectFrom(BOOK).where(TITLE.likeRegex("^.*SQL.*$"));]]></java><html>
    -
    -									<p>
    -										Note that the SQL standard specifies that patterns should follow the XQuery standards. In the real world, the POSIX regular expression standard is the most used one, some use Java regular expressions, and only a few ones use Perl regular expressions. jOOQ does not make any assumptions about regular expression syntax. For cross-database compatibility, please read the relevant database manuals carefully, to learn about the appropriate syntax. Please refer to the <reference class="org.jooq.impl.DSL" title="DSL Javadoc"/> for more details.
    -									</p>
    -								</html></content>
    -								<!-- don't forget regex here! -->
    -							</section>
    -
    -							<section id="date-and-time-functions">
    -								<title>Date and time functions</title>
    -								<content><html>
    -									<p>
    -										This is a list of date and time functions supported by jOOQ's <reference id="dsl" title="DSL"/>:
    -									</p>
    -									
    -									<ul>
    -										<li><strong><code>CURRENT_DATE</code></strong>: Get current date as a <code>DATE</code> object.</li>
    -										<li><strong><code>CURRENT_TIME</code></strong>: Get current time as a <code>TIME</code> object.</li>
    -										<li><strong><code>CURRENT_TIMESTAMP</code></strong>: Get current date as a <code>TIMESTAMP</code> object.</li>
    -										<li><strong><code>DATE_ADD</code></strong>: Add a number of days or an interval to a date.</li>
    -										<li><strong><code>DATE_DIFF</code></strong>: Get the difference in days between two dates.</li>
    -										<li><strong><code>TIMESTAMP_ADD</code></strong>: Add a number of days or an interval to a timestamp.</li>
    -										<li><strong><code>TIMESTAMP_DIFF</code></strong>: Get the difference as an <code>INTERVAL DAY TO SECOND</code> between two dates.</li>
    -									</ul>
    -									
    -									<h3>Intervals in jOOQ</h3>
    -									<p>
    -										jOOQ fills a gap opened by JDBC, which neglects an important SQL data type as defined by the SQL standards: <code>INTERVAL</code> types. See the manual's section about <reference id="data-types-intervals" title="INTERVAL data types"/> for more details.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="system-functions">
    -								<title>System functions</title>
    -								<content><html>
    -									<p>
    -										This is a list of system functions supported by jOOQ's <reference id="dsl" title="DSL"/>:
    -									</p>
    -									<ul>
    -										<li><strong><code>CURRENT_USER</code></strong>: Get current user.</li>
    -									</ul>
    -								</html></content>
    -							</section>
    -
    -							<section id="aggregate-functions">
    -								<title>Aggregate functions</title>
    -								<content><html>
    -									<p>
    -										Aggregate functions work just like functions, even if they have a slightly different semantics. Here are some example aggregate functions from the <reference id="dsl" title="DSL"/>:
    -									</p>
    -
    -</html><java><![CDATA[// Every-day, SQL standard aggregate functions
    -AggregateFunction<Integer>    count();
    -AggregateFunction<Integer>    count(Field<?> field);
    -AggregateFunction<T>          max  (Field<T> field);
    -AggregateFunction<T>          min  (Field<T> field);
    -AggregateFunction<BigDecimal> sum  (Field<? extends Number> field);
    -AggregateFunction<BigDecimal> avg  (Field<? extends Number> field);
    -
    -// DISTINCT keyword in aggregate functions
    -AggregateFunction<Integer>    countDistinct(Field<?> field);
    -AggregateFunction<T>          maxDistinct  (Field<T> field);
    -AggregateFunction<T>          minDistinct  (Field<T> field);
    -AggregateFunction<BigDecimal> sumDistinct  (Field<? extends Number> field);
    -AggregateFunction<BigDecimal> avgDistinct  (Field<? extends Number> field);
    -
    -// String aggregate functions
    -AggregateFunction<String> groupConcat        (Field<?> field);
    -AggregateFunction<String> groupConcatDistinct(Field<?> field);
    -OrderedAggregateFunction<String> listAgg(Field<?> field);
    -OrderedAggregateFunction<String> listAgg(Field<?> field, String separator);
    -
    -// Statistical functions
    -AggregateFunction<BigDecimal> median    (Field<? extends Number> field);
    -AggregateFunction<BigDecimal> stddevPop (Field<? extends Number> field);
    -AggregateFunction<BigDecimal> stddevSamp(Field<? extends Number> field);
    -AggregateFunction<BigDecimal> varPop    (Field<? extends Number> field);
    -AggregateFunction<BigDecimal> varSamp   (Field<? extends Number> field);
    -
    -// Linear regression functions
    -AggregateFunction<BigDecimal> regrAvgX     (Field<? extends Number> y, Field<? extends Number> x);
    -AggregateFunction<BigDecimal> regrAvgY     (Field<? extends Number> y, Field<? extends Number> x);
    -AggregateFunction<BigDecimal> regrCount    (Field<? extends Number> y, Field<? extends Number> x);
    -AggregateFunction<BigDecimal> regrIntercept(Field<? extends Number> y, Field<? extends Number> x);
    -AggregateFunction<BigDecimal> regrR2       (Field<? extends Number> y, Field<? extends Number> x);
    -AggregateFunction<BigDecimal> regrSlope    (Field<? extends Number> y, Field<? extends Number> x);
    -AggregateFunction<BigDecimal> regrSXX      (Field<? extends Number> y, Field<? extends Number> x);
    -AggregateFunction<BigDecimal> regrSXY      (Field<? extends Number> y, Field<? extends Number> x);
    -AggregateFunction<BigDecimal> regrSYY      (Field<? extends Number> y, Field<? extends Number> x);]]></java><html>
    -
    -									<p>
    -										Here's an example, counting the number of books any author has written:
    -									</p>
    -
    -</html><code-pair>
    -<sql>SELECT AUTHOR_ID, COUNT(*)
    -FROM BOOK
    -GROUP BY AUTHOR_ID</sql><java>create.select(BOOK.AUTHOR_ID, count())
    -      .from(BOOK)
    -      .groupBy(BOOK.AUTHOR_ID);</java>
    -</code-pair><html>
    -
    -									<p>
    -										Aggregate functions have strong limitations about when they may be used and when not. For instance, you can use aggregate functions in scalar queries. Typically, this means you only select aggregate functions, no <reference id="table-columns" title="regular columns"/> or other <reference id="column-expressions" title="column expressions"/>. Another use case is to use them along with a <reference id="group-by-clause" title="GROUP BY clause"/> as seen in the previous example. Note, that jOOQ does not check whether your using of aggregate functions is correct according to the SQL standards, or according to your database's behaviour.
    -									</p>
    -
    -		                            <h3>Ordered aggregate functions</h3>
    -		                            <p>
    -		                            	Oracle and some other databases support "ordered aggregate functions". This means you can provide an <code>ORDER BY</code> clause to an aggregate function, which will be taken into consideration when aggregating. The best example for this is Oracle's <code>LISTAGG()</code> (also known as <code>GROUP_CONCAT</code> in other <reference id="sql-dialects" title="SQL dialects"/>). The following query groups by authors and concatenates their books' titles
    -		                           	</p>
    -</html><code-pair>
    -<sql>SELECT   LISTAGG(TITLE, ', ')
    -         WITHIN GROUP (ORDER BY TITLE)
    -FROM     BOOK
    -GROUP BY AUTHOR_ID</sql><java>create.select(listAgg(BOOK.TITLE, ", ")
    -      .withinGroupOrderBy(BOOK.TITLE))
    -      .from(BOOK)
    -      .groupBy(BOOK.AUTHOR_ID)</java>
    -</code-pair><html>
    -
    -									<p>
    -										The above query might yield:
    -									</p>
    -
    -</html><text>+---------------------+
    -| LISTAGG             |
    -+---------------------+
    -| 1984, Animal Farm   |
    -| O Alquimista, Brida |
    -+---------------------+</text><html>
    -
    -									<h3>FIRST and LAST: Oracle's "ranked" aggregate functions</h3>
    -									<p>
    -										Oracle allows for restricting aggregate functions using the <code>KEEP()</code> clause, which is supported by jOOQ. In Oracle, some aggregate functions (<code>MIN</code>, <code>MAX</code>, <code>SUM</code>, <code>AVG</code>, <code>COUNT</code>, <code>VARIANCE</code>, or <code>STDDEV</code>) can be restricted by this clause, hence <reference class="org.jooq.AggregateFunction"/> also allows for specifying it. Here are a couple of examples using this clause:
    -									</p>
    -
    -</html><code-pair>
    -<sql>SUM(BOOK.AMOUNT_SOLD)
    -  KEEP(DENSE_RANK FIRST ORDER BY BOOK.AUTHOR_ID)</sql><java>sum(BOOK.AMOUNT_SOLD)
    -  .keepDenseRankFirstOrderBy(BOOK.AUTHOR_ID)</java>
    -</code-pair><html>
    -
    -									<h3>User-defined aggregate functions</h3>
    -									<p>
    -										jOOQ also supports using your own user-defined aggregate functions. See the manual's section about <reference id="user-defined-aggregate-functions" title="user-defined aggregate functions"/> for more details.
    -									</p>
    -
    -									<h3>Window functions / analytical functions</h3>
    -									<p>
    -										In those databases that support <reference id="window-functions" title="window functions"/>, jOOQ's <reference class="org.jooq.AggregateFunction"/> can be transformed into a window function / analytical function by calling <code>over()</code> on it. See the manual's section about <reference id="window-functions" title="window functions"/> for more details.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="window-functions">
    -								<title>Window functions</title>
    -								<content><html>
    -									<p>
    -										Most major RDBMS support the concept of window functions. jOOQ knows of implementations in DB2, Oracle, Postgres, SQL Server, and Sybase SQL Anywhere, and supports most of their specific syntaxes. Note, that H2 and HSQLDB have implemented <code>ROW_NUMBER()</code> functions, without true windowing support.
    -									</p>
    -									<p>
    -										As previously discussed, any <reference class="org.jooq.AggregateFunction"/> can be transformed into a window function using the <code>over()</code> method. See the chapter about <reference id="aggregate-functions" title="aggregate functions"/> for details. In addition to those, there are also some more window functions supported by jOOQ, as declared in the <reference id="dsl" title="DSL"/>:
    -									</p>
    -
    -</html><java><![CDATA[// Ranking functions
    -    WindowOverStep<Integer>    rowNumber();
    -    WindowOverStep<Integer>    rank();
    -    WindowOverStep<Integer>    denseRank();
    -    WindowOverStep<BigDecimal> percentRank();
    -    
    -// Windowing functions
    -<T> WindowIgnoreNullsStep<T>   firstValue(Field<T> field);
    -<T> WindowIgnoreNullsStep<T>   lastValue(Field<T> field)
    -<T> WindowIgnoreNullsStep<T>   lead(Field<T> field);
    -<T> WindowIgnoreNullsStep<T>   lead(Field<T> field, int offset);
    -<T> WindowIgnoreNullsStep<T>   lead(Field<T> field, int offset, T defaultValue);
    -<T> WindowIgnoreNullsStep<T>   lead(Field<T> field, int offset, Field<T> defaultValue);
    -<T> WindowIgnoreNullsStep<T>   lag(Field<T> field);
    -<T> WindowIgnoreNullsStep<T>   lag(Field<T> field, int offset);
    -<T> WindowIgnoreNullsStep<T>   lag(Field<T> field, int offset, T defaultValue);
    -<T> WindowIgnoreNullsStep<T>   lag(Field<T> field, int offset, Field<T> defaultValue);
    -
    -// Statistical functions
    -    WindowOverStep<BigDecimal> cumeDist();
    -    WindowOverStep<Integer>    ntile(int number);]]></java><html>	
    -    								
    -    								<p>
    -    									SQL distinguishes between various window function types (e.g. "ranking functions"). Depending on the function, SQL expects mandatory <code>PARTITION BY</code> or <code>ORDER BY</code> clauses within the <code>OVER()</code> clause. jOOQ does not enforce those rules for two reasons:
    -    								</p>
    -    								<ul>
    -    									<li>Your JDBC driver or database already checks SQL syntax semantics</li>
    -    									<li>Not all databases behave correctly according to the SQL standard</li>
    -    								</ul>
    -    								<p>
    -    									If possible, however, jOOQ tries to render missing clauses for you, if a given <reference id="sql-dialects" title="SQL dialect"/> is more restrictive.
    -    								</p>
    -    								<h3>Some examples</h3>
    -									<p>
    -										 Here are some simple examples of window functions with jOOQ:
    -									</p>
    -									
    -</html><code-pair>
    -<sql>-- Sample uses of ROW_NUMBER()
    -ROW_NUMBER() OVER()
    -ROW_NUMBER() OVER(PARTITION BY 1)
    -ROW_NUMBER() OVER(ORDER BY BOOK.ID)
    -ROW_NUMBER() OVER(PARTITION BY BOOK.AUTHOR_ID ORDER BY BOOK.ID)
    -                  
    --- Sample uses of FIRST_VALUE
    -FIRST_VALUE(BOOK.ID) OVER()
    -FIRST_VALUE(BOOK.ID IGNORE NULLS) OVER()
    -FIRST_VALUE(BOOK.ID RESPECT NULLS) OVER()
    -</sql><java>// Sample uses of rowNumber()
    -rowNumber().over()
    -rowNumber().over().partitionByOne()
    -rowNumber().over().partitionBy(BOOK.AUTHOR_ID)
    -rowNumber().over().partitionBy(BOOK.AUTHOR_ID).orderBy(BOOK.ID)
    -                  
    -// Sample uses of firstValue()
    -firstValue(BOOK.ID).over()
    -firstValue(BOOK.ID).ignoreNulls().over()
    -firstValue(BOOK.ID).respectNulls().over()
    -</java>
    -</code-pair><html>
    -    								
    -									<h3>An advanced window function example</h3>
    -									<p>
    -										Window functions can be used for things like calculating a "running total". The following example fetches transactions and the running total for every transaction going back to the beginning of the transaction table (ordered by booked_at). Window functions are accessible from the previously seen <reference class="org.jooq.AggregateFunction"/> type using the <code>over()</code> method:
    -									</p>
    -
    -</html><code-pair>
    -<sql>SELECT booked_at, amount,
    -   SUM(amount) OVER (PARTITION BY 1
    -                     ORDER BY booked_at
    -                     ROWS BETWEEN UNBOUNDED PRECEDING
    -                     AND CURRENT ROW) AS total
    -  FROM transactions</sql><java>create.select(t.BOOKED_AT, t.AMOUNT,
    -         sum(t.AMOUNT).over().partitionByOne()
    -                      .orderBy(t.BOOKED_AT)
    -                      .rowsBetweenUnboundedPreceding()
    -                      .andCurrentRow().as("total")
    -      .from(TRANSACTIONS.as("t"));</java>
    -</code-pair><html>
    -
    -
    -									<h3>Window functions created from ordered aggregate functions</h3>
    -									<p>
    -										In the previous chapter about <reference id="aggregate-functions" title="aggregate functions"/>, we have seen the concept of "ordered aggregate functions", such as Oracle's <code>LISTAGG()</code>. These functions have a window function / analytical function variant, as well. For example:
    -									</p>
    -									
    -</html><code-pair>
    -<sql>SELECT   LISTAGG(TITLE, ', ')
    -         WITHIN GROUP (ORDER BY TITLE)
    -         OVER (PARTITION BY BOOK.AUTHOR_ID)
    -FROM     BOOK</sql><java>create.select(listAgg(BOOK.TITLE, ", ")
    -      .withinGroupOrderBy(BOOK.TITLE)
    -      .over().partitionBy(BOOK.AUTHOR_ID))
    -      .from(BOOK)</java>
    -</code-pair><html>
    -
    -									<h3>Window functions created from Oracle's <code>FIRST</code> and <code>LAST</code> aggregate functions</h3>
    -									<p>
    -										In the previous chapter about <reference id="aggregate-functions" title="aggregate functions"/>, we have seen the concept of "<code>FIRST</code> and <code>LAST</code> aggregate functions". These functions have a window function / analytical function variant, as well. For example:
    -									</p>
    -
    -</html><code-pair>
    -<sql>SUM(BOOK.AMOUNT_SOLD)
    -  KEEP(DENSE_RANK FIRST ORDER BY BOOK.AUTHOR_ID)
    -  OVER(PARTITION BY 1)</sql><java>sum(BOOK.AMOUNT_SOLD)
    -  .keepDenseRankFirstOrderBy(BOOK.AUTHOR_ID)
    -  .over().partitionByOne()</java>
    -</code-pair><html>
    -
    -
    -									<h3>Window functions created from user-defined aggregate functions</h3>
    -									<p>
    -										User-defined aggregate functions also implement <reference class="org.jooq.AggregateFunction"/>, hence they can also be transformed into window functions using <code>over()</code>. This is supported by Oracle in particular. See the manual's section about <reference id="user-defined-aggregate-functions" title="user-defined aggregate functions"/> for more details.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="grouping-functions">
    -								<title>Grouping functions</title>
    -								<content><html>
    -									<h3>ROLLUP() explained in SQL</h3>
    -									<p>
    -										The SQL standard defines special functions that can be used in the <reference id="group-by-clause" title="GROUP BY clause"/>: the grouping functions. These functions can be used to generate several groupings in a single clause. This can best be explained in SQL. Let's take <code>ROLLUP()</code> for instance:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- ROLLUP() with one argument 
    -SELECT AUTHOR_ID, COUNT(*)
    -FROM BOOK
    -GROUP BY ROLLUP(AUTHOR_ID)
    -
    -
    --- ROLLUP() with two arguments
    -SELECT AUTHOR_ID, PUBLISHED_IN, COUNT(*)
    -FROM BOOK
    -GROUP BY ROLLUP(AUTHOR_ID, PUBLISHED_IN)
    -
    -
    -
    -
    -
    -
    -
    -]]></sql><sql><![CDATA[-- The same query using UNION ALL:
    -  SELECT AUTHOR_ID, COUNT(*) FROM BOOK GROUP BY (AUTHOR_ID)
    -UNION ALL
    -  SELECT NULL, COUNT(*) FROM BOOK GROUP BY ()
    -ORDER BY 1 NULLS LAST
    -
    --- The same query using UNION ALL:
    -  SELECT AUTHOR_ID, PUBLISHED_IN, COUNT(*) 
    -  FROM BOOK GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -UNION ALL
    -  SELECT AUTHOR_ID, NULL, COUNT(*) 
    -  FROM BOOK GROUP BY (AUTHOR_ID)
    -UNION ALL
    -  SELECT NULL, NULL, COUNT(*) 
    -  FROM BOOK GROUP BY ()
    -ORDER BY 1 NULLS LAST, 2 NULLS LAST
    -]]></sql>
    -</code-pair><html>
    -
    -									<p>
    -										In English, the <code>ROLLUP()</code> grouping function provides <code>N+1</code> groupings, when <code>N</code> is the number of arguments to the <code>ROLLUP()</code> function. Each grouping has an additional group field from the <code>ROLLUP()</code> argument field list. The results of the second query might look something like this:
    -									</p>
    -									
    -</html><text><![CDATA[+-----------+--------------+----------+
    -| AUTHOR_ID | PUBLISHED_IN | COUNT(*) |
    -+-----------+--------------+----------+
    -|         1 |         1945 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -|         1 |         1948 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -|         1 |         NULL |        2 | <- GROUP BY (AUTHOR_ID)
    -|         2 |         1988 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -|         2 |         1990 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -|         2 |         NULL |        2 | <- GROUP BY (AUTHOR_ID)
    -|      NULL |         NULL |        4 | <- GROUP BY ()
    -+-----------+--------------+----------+]]></text><html>
    -
    -									<h3>CUBE() explained in SQL</h3>
    -									<p>
    -										<code>CUBE()</code> is different from <code>ROLLUP()</code> in the way that it doesn't just create <code>N+1</code> groupings, it creates all <code>2^N</code> possible combinations between all group fields in the <code>CUBE()</code> function argument list. Let's re-consider our second query from before:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- CUBE() with two arguments
    -SELECT AUTHOR_ID, PUBLISHED_IN, COUNT(*)
    -FROM BOOK
    -GROUP BY CUBE(AUTHOR_ID, PUBLISHED_IN)
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -]]></sql><sql><![CDATA[-- The same query using UNION ALL:
    -  SELECT AUTHOR_ID, PUBLISHED_IN, COUNT(*) 
    -  FROM BOOK GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -UNION ALL
    -  SELECT AUTHOR_ID, NULL, COUNT(*) 
    -  FROM BOOK GROUP BY (AUTHOR_ID)
    -UNION ALL
    -  SELECT NULL, PUBLISHED_IN, COUNT(*) 
    -  FROM BOOK GROUP BY (PUBLISHED_IN)
    -UNION ALL
    -  SELECT NULL, NULL, COUNT(*) 
    -  FROM BOOK GROUP BY ()
    -ORDER BY 1 NULLS FIRST, 2 NULLS FIRST
    -]]></sql>
    -</code-pair><html>
    -
    -									<p>
    -										The results would then hold:
    -									</p>
    -
    -</html><text><![CDATA[+-----------+--------------+----------+
    -| AUTHOR_ID | PUBLISHED_IN | COUNT(*) |
    -+-----------+--------------+----------+
    -|      NULL |         NULL |        2 | <- GROUP BY ()
    -|      NULL |         1945 |        1 | <- GROUP BY (PUBLISHED_IN)
    -|      NULL |         1948 |        1 | <- GROUP BY (PUBLISHED_IN)
    -|      NULL |         1988 |        1 | <- GROUP BY (PUBLISHED_IN)
    -|      NULL |         1990 |        1 | <- GROUP BY (PUBLISHED_IN)
    -|         1 |         NULL |        2 | <- GROUP BY (AUTHOR_ID)
    -|         1 |         1945 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -|         1 |         1948 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -|         2 |         NULL |        2 | <- GROUP BY (AUTHOR_ID)
    -|         2 |         1988 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -|         2 |         1990 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -+-----------+--------------+----------+]]></text><html>
    -
    -									<h3>GROUPING SETS()</h3>
    -									<p>
    -										<code>GROUPING SETS()</code> are the generalised way to create multiple groupings. From our previous examples 
    -									</p>
    -									<ul>
    -										<li><code>ROLLUP(AUTHOR_ID, PUBLISHED_IN)</code> corresponds to <code>GROUPING SETS((AUTHOR_ID, PUBLISHED_IN), (AUTHOR_ID), ())</code></li>
    -										<li><code>CUBE(AUTHOR_ID, PUBLISHED_IN)</code> corresponds to <code>GROUPING SETS((AUTHOR_ID, PUBLISHED_IN), (AUTHOR_ID), (PUBLISHED_IN), ())</code></li>
    -									</ul>
    -									<p>
    -										This is nicely explained in the SQL Server manual pages about <code>GROUPING SETS()</code> and other grouping functions:<br/>
    -										<a href="http://msdn.microsoft.com/en-us/library/bb510427(v=sql.105)">http://msdn.microsoft.com/en-us/library/bb510427(v=sql.105)</a>
    -									</p>
    -									
    -									<h3>jOOQ's support for ROLLUP(), CUBE(), GROUPING SETS()</h3>
    -									<p>
    -										jOOQ fully supports all of these functions, as well as the utility functions <code>GROUPING()</code> and <code>GROUPING_ID()</code>, used for identifying the grouping set ID of a record. The <reference id="dsl" title="DSL API"/> thus includes:
    -									</p>
    -									
    -</html><java><![CDATA[// The various grouping function constructors
    -GroupField rollup(Field<?>... fields);
    -GroupField cube(Field<?>... fields);
    -GroupField groupingSets(Field<?>... fields);
    -GroupField groupingSets(Field<?>[]... fields);
    -GroupField groupingSets(Collection<? extends Field<?>>... fields);
    -
    -// The utility functions generating IDs per GROUPING SET
    -Field<Integer> grouping(Field<?>);
    -Field<Integer> groupingId(Field<?>...);]]></java><html>
    -
    -									<h3>MySQL's and CUBRID's WITH ROLLUP syntax</h3>
    -									<p>
    -										MySQL and CUBRID don't know any grouping functions, but they support a <code>WITH ROLLUP</code> clause, that is equivalent to simple <code>ROLLUP()</code> grouping functions. jOOQ simulates <code>ROLLUP()</code> in MySQL and CUBRID, by rendering this <code>WITH ROLLUP</code> clause. The following two statements mean the same:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[-- Statement 1: SQL standard
    -GROUP BY ROLLUP(A, B, C)
    -
    --- Statement 2: SQL standard
    -GROUP BY A, ROLLUP(B, C)]]></sql><sql><![CDATA[-- Statement 1: MySQL
    -GROUP BY A, B, C WITH ROLLUP
    -
    --- Statement 2: MySQL
    --- This is not supported in MySQL]]></sql>
    -</code-pair><html>
    -								</html></content>
    -							</section>
    -
    -							<section id="user-defined-functions">
    -								<title>User-defined functions</title>
    -								<content><html>
    -									<p>
    -										Some databases support user-defined functions, which can be embedded in any SQL statement, if you're using jOOQ's <reference id="code-generation" title="code generator"/>. Let's say you have the following simple function in Oracle SQL:
    -									</p>
    -									
    -</html><sql><![CDATA[CREATE OR REPLACE FUNCTION echo (INPUT NUMBER)
    -RETURN NUMBER
    -IS
    -BEGIN
    -    RETURN INPUT;
    -END echo;
    -]]></sql><html>
    -
    -                                    <p>
    -                                    	The above function will be made available from a generated <reference id="codegen-procedures" title="Routines"/> class. You can use it like any other <reference id="column-expressions" title="column expression"/>:
    -                                    </p>
    -                                    
    -</html><code-pair>
    -<sql><![CDATA[SELECT echo(1) FROM DUAL WHERE echo(2) = 2]]></sql><java><![CDATA[create.select(echo(1)).where(echo(2).equal(2));]]></java>
    -</code-pair><html>
    -                                
    -                                	<p>
    -                                		Note that user-defined functions returning <reference id="data-types-cursors" title="CURSOR"/> or <reference id="data-types-arrays" title="ARRAY"/> data types can also be used wherever <reference id="table-expressions" title="table expressions"/> can be used, if they are <reference id="array-and-cursor-unnesting" title="unnested"/>
    -                                	</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="user-defined-aggregate-functions">
    -								<title>User-defined aggregate functions</title>
    -								<content><html>
    -									<p>
    -										Some databases support user-defined aggregate functions, which can then be used along with <reference id="group-by-clause" title="GROUP BY clauses"/> or as <reference id="window-functions" title="window functions"/>. An example for such a database is Oracle. With Oracle, you can define the following <code>OBJECT</code> type (the example was taken from the <a href="http://docs.oracle.com/cd/B28359_01/appdev.111/b28425/ext_agg_ref.htm">Oracle 11g documentation</a>): 
    -									</p>
    -									
    -</html><sql><![CDATA[CREATE TYPE U_SECOND_MAX AS OBJECT
    -(
    -  MAX NUMBER, -- highest value seen so far
    -  SECMAX NUMBER, -- second highest value seen so far
    -  STATIC FUNCTION ODCIAggregateInitialize(sctx IN OUT U_SECOND_MAX) RETURN NUMBER,
    -  MEMBER FUNCTION ODCIAggregateIterate(self IN OUT U_SECOND_MAX, value IN NUMBER) RETURN NUMBER,
    -  MEMBER FUNCTION ODCIAggregateTerminate(self IN U_SECOND_MAX, returnValue OUT NUMBER, flags IN NUMBER) RETURN NUMBER,
    -  MEMBER FUNCTION ODCIAggregateMerge(self IN OUT U_SECOND_MAX, ctx2 IN U_SECOND_MAX) RETURN NUMBER
    -);
    -
    -CREATE OR REPLACE TYPE BODY U_SECOND_MAX IS
    -STATIC FUNCTION ODCIAggregateInitialize(sctx IN OUT U_SECOND_MAX)
    -RETURN NUMBER IS
    -BEGIN
    -  SCTX := U_SECOND_MAX(0, 0);
    -  RETURN ODCIConst.Success;
    -END;
    -
    -MEMBER FUNCTION ODCIAggregateIterate(self IN OUT U_SECOND_MAX, value IN NUMBER) RETURN NUMBER IS
    -BEGIN
    -  IF VALUE > SELF.MAX THEN
    -    SELF.SECMAX := SELF.MAX;
    -    SELF.MAX := VALUE;
    -  ELSIF VALUE > SELF.SECMAX THEN
    -    SELF.SECMAX := VALUE;
    -  END IF;
    -  RETURN ODCIConst.Success;
    -END;
    -
    -MEMBER FUNCTION ODCIAggregateTerminate(self IN U_SECOND_MAX, returnValue OUT NUMBER, flags IN NUMBER) RETURN NUMBER IS
    -BEGIN
    -  RETURNVALUE := SELF.SECMAX;
    -  RETURN ODCIConst.Success;
    -END;
    -
    -MEMBER FUNCTION ODCIAggregateMerge(self IN OUT U_SECOND_MAX, ctx2 IN U_SECOND_MAX) RETURN NUMBER IS
    -BEGIN
    -  IF CTX2.MAX > SELF.MAX THEN
    -    IF CTX2.SECMAX > SELF.SECMAX THEN
    -      SELF.SECMAX := CTX2.SECMAX;
    -    ELSE
    -      SELF.SECMAX := SELF.MAX;
    -    END IF;
    -    SELF.MAX := CTX2.MAX;
    -  ELSIF CTX2.MAX > SELF.SECMAX THEN
    -    SELF.SECMAX := CTX2.MAX;
    -  END IF;
    -  RETURN ODCIConst.Success;
    -END;
    -END;]]></sql><html>
    -
    -									<p>
    -										The above <code>OBJECT</code> type is then available to function declarations as such:
    -									</p>
    -
    -</html><sql><![CDATA[
    -CREATE FUNCTION SECOND_MAX (input NUMBER) RETURN NUMBER
    -PARALLEL_ENABLE AGGREGATE USING U_SECOND_MAX;]]></sql><html>
    -
    -									<h3>Using the generated aggregate function</h3>
    -									<p>
    -										jOOQ's <reference id="code-generation" title="code generator"/> will detect such aggregate functions and generate them differently from regular <reference id="user-defined-functions" title="user-defined functions"/>. They implement the <reference class="org.jooq.AggregateFunction"/> type, as mentioned in the manual's section about <reference id="aggregate-functions" title="aggregate functions"/>. Here's how you can use the <code>SECOND_MAX()</code> aggregate function with jOOQ:
    -									</p>
    -				
    -</html><code-pair>					
    -<sql><![CDATA[-- Get the second-latest publishing date by author
    -SELECT SECOND_MAX(PUBLISHED_IN) 
    -FROM BOOK
    -GROUP BY AUTHOR_ID]]></sql><java><![CDATA[// Routines.secondMax() can be static-imported
    -create.select(secondMax(BOOK.PUBLISHED_IN))
    -      .from(BOOK)
    -      .groupBy(BOOK.AUTHOR_ID)]]></java>
    -</code-pair><html>
    -								</html></content>
    -							</section>
    -
    -							<section id="case-expressions">
    -								<title>The CASE expression</title>
    -								<content><html>
    -									<p>
    -										The <code>CASE</code> expression is part of the standard SQL syntax. While some RDBMS also offer an <code>IF</code> expression, or a <code>DECODE</code> function, you can always rely on the two types of <code>CASE</code> syntax:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[CASE WHEN AUTHOR.FIRST_NAME = 'Paulo'  THEN 'brazilian'
    -     WHEN AUTHOR.FIRST_NAME = 'George' THEN 'english'
    -                                       ELSE 'unknown'
    -END
    -
    --- OR:
    -
    -CASE AUTHOR.FIRST_NAME WHEN 'Paulo'  THEN 'brazilian'
    -                       WHEN 'George' THEN 'english'
    -                                     ELSE 'unknown'
    -END]]></sql><java><![CDATA[create.decode()
    -      .when(AUTHOR.FIRST_NAME.equal("Paulo"), "brazilian")
    -      .when(AUTHOR.FIRST_NAME.equal("George"), "english")
    -      .otherwise("unknown");
    -
    -// OR:
    -
    -create.decode().value(AUTHOR.FIRST_NAME)
    -               .when("Paulo", "brazilian")
    -               .when("George", "english")
    -               .otherwise("unknown");]]></java>
    -</code-pair><html>
    -
    -								<p>
    -									In jOOQ, both syntaxes are supported (The second one is simulated in Derby, which only knows the first one). Unfortunately, both case and else are reserved words in Java. jOOQ chose to use decode() from the Oracle <code>DECODE</code> function, and otherwise(), which means the same as else.
    -								</p>
    -
    -								<p>
    -									A <code>CASE</code> expression can be used anywhere where you can place a <reference id="column-expressions" title="column expression (or Field)"/>. For instance, you can <code>SELECT</code> the above expression, if you're selecting from <code>AUTHOR</code>:
    -							 	</p>
    -
    -</html><sql>SELECT AUTHOR.FIRST_NAME, [... CASE EXPR ...] AS nationality
    -  FROM AUTHOR</sql><html>
    -
    -								<h3>The Oracle DECODE() function</h3>
    -								<p>
    -									Oracle knows a more succinct, but maybe less readable <code>DECODE()</code> function with a variable number of arguments. This function roughly does the same as the second case expression syntax. jOOQ supports the <code>DECODE()</code> function and simulates it using <code>CASE</code> expressions in all dialects other than Oracle:
    -								</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- Oracle:
    -DECODE(FIRST_NAME, 'Paulo', 'brazilian',
    -                   'George', 'english',
    -                   'unknown');
    -
    --- Other SQL dialects
    -CASE AUTHOR.FIRST_NAME WHEN 'Paulo'  THEN 'brazilian'
    -                       WHEN 'George' THEN 'english'
    -                                     ELSE 'unknown'
    -END]]></sql><java><![CDATA[
    -
    -
    -
    -
    -// Use the Oracle-style DECODE() function with jOOQ.
    -// Note, that you will not be able to rely on type-safety
    -create.decode(AUTHOR.FIRST_NAME,
    -    "Paulo", "brazilian",
    -    "George", "english",
    -    "unknown");]]></java>
    -</code-pair><html>
    -
    -		  							<h3>CASE clauses in an ORDER BY clause</h3>
    -									<p>
    -										Sort indirection is often implemented with a <code>CASE</code> clause of a <code>SELECT</code>'s <code>ORDER BY</code> clause. See the manual's section about the <reference id="order-by-clause" title="ORDER BY clause"/> for more details.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="sequences-and-serials">
    -								<title>Sequences and serials</title>
    -								<content><html>
    -									<p>
    -										Sequences implement the <reference class="org.jooq.Sequence"/> interface, providing essentially this functionality:
    -									</p>
    -
    -</html><java><![CDATA[// Get a field for the CURRVAL sequence property
    -Field<T> currval();
    -
    -// Get a field for the NEXTVAL sequence property
    -Field<T> nextval();]]></java><html>
    -
    -									<p>
    -										So if you have a sequence like this in Oracle:
    -									</p>
    -
    -</html><sql>CREATE SEQUENCE s_author_id</sql><html>
    -
    -									<p>
    -										You can then use your <reference id="codegen-sequences" title="generated sequence"/> object directly in a SQL statement as such:
    -									</p>
    -
    -</html><java><![CDATA[// Reference the sequence in a SELECT statement:
    -BigInteger nextID = create.select(s).fetchOne(S_AUTHOR_ID.nextval());
    -
    -// Reference the sequence in an INSERT statement:
    -create.insertInto(AUTHOR, AUTHOR.ID, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .values(S_AUTHOR_ID.nextval(), val("William"), val("Shakespeare"));
    -]]></java><html>
    -
    -									<ul>
    -										<li>For more information about generated sequences, refer to the manual's section about <reference id="codegen-sequences" title="generated sequences"/></li>
    -										<li>For more information about executing standalone calls to sequences, refer to the manual's section about <reference id="sequence-execution" title="sequence execution"/></li>
    -									</ul>
    -								</html></content>
    -							</section>
    -							
    -							<section id="row-value-expressions">
    -								<title>Tuples or row value expressions</title>
    -								<content><html>
    -									<p>
    -										According to the SQL standard, row value expressions can have a degree of more than one. This is commonly used in the <reference id="insert-statement" title="INSERT statement"/>, where the <code>VALUES</code> row value constructor allows for providing a row value expression as a source for <code>INSERT</code> data. Row value expressions can appear in various other places, though. They are supported by jOOQ as records / rows. jOOQ's <reference id="dsl" title="DSL"/> allows for the construction of type-safe records up to the degree of {max-row-degree}. Higher-degree Rows are supported as well, but without any type-safety. Row types are modelled as follows:
    -									</p>
    -									
    -</html><java><![CDATA[// The DSL provides overloaded row value expression constructor methods:
    -public static <T1>             Row1<T1>             row(T1 t1)                      { ... }
    -public static <T1, T2>         Row2<T1, T2>         row(T1 t1, T2 t2)               { ... }
    -public static <T1, T2, T3>     Row3<T1, T2, T3>     row(T1 t1, T2 t2, T3 t3)        { ... }
    -public static <T1, T2, T3, T4> Row4<T1, T2, T3, T4> row(T1 t1, T2 t2, T3 t3, T4 t4) { ... }
    -
    -// [ ... idem for Row5, Row6, Row7, ..., Row{max-row-degree} ]
    -
    -// Degrees of more than {max-row-degree} are supported without type-safety
    -public static RowN row(Object... values) { ... }]]></java><html>
    -
    -									<h3>Using row value expressions in predicates</h3>
    -                                	<p>
    -                                		Row value expressions are incompatible with most other <reference id="queryparts" title="QueryParts"/>, but they can be used as a basis for constructing various <reference id="conditional-expressions" title="conditional expressions"/>, such as:
    -                                	</p>
    -                                	<ul>
    -                                		<li><reference id="comparison-predicate-degree-n" title="comparison predicates"/></li>
    -                                		<li><reference id="null-predicate-degree-n" title="NULL predicates"/></li>
    -                                		<li><reference id="between-predicate-degree-n" title="BETWEEN predicates"/></li>
    -                                		<li><reference id="in-predicate-degree-n" title="IN predicates"/></li>
    -                                		<li><reference id="overlaps-predicate" title="OVERLAPS predicate"/> (for degree 2 row value expressions only)</li>
    -                                	</ul>
    -                                	<p>
    -                                		See the relevant sections for more details about how to use row value expressions in predicates.
    -                                	</p>
    -                                	
    -                                	<h3>Using row value expressions in UPDATE statements</h3>
    -                                	<p>
    -                                		The <reference id="update-statement" title="UPDATE statement"/> also supports a variant where row value expressions are updated, rather than single columns. See the relevant section for more details
    -                                	</p>
    -                                	
    -									<h3>Higher-degree row value expressions</h3>
    -									<p>
    -										jOOQ chose to explicitly support degrees up to {max-row-degree} to match Scala's typesafe tuple, function and product support. Unlike Scala, however, jOOQ also supports higher degrees without the additional typesafety. 
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="conditional-expressions">
    -					    <title>Conditional expressions</title>
    -						<content><html>
    -							<p>
    -								Conditions or conditional expressions are widely used in SQL and in the jOOQ API. They can be used in
    -							</p>
    -							<ul>
    -								<li>The <reference id="case-expressions" title="CASE expression"/></li>
    -								<li>The <reference id="join-clause" title="JOIN clause"/> (or <code>JOIN .. ON</code> clause, to be precise) of a <reference id="select-statement" title="SELECT statement"/>, <reference id="update-statement" title="UPDATE statement"/>, <reference id="delete-statement" title="DELETE statement"/></li>
    -								<li>The <reference id="where-clause" title="WHERE clause"/> of a <reference id="select-statement" title="SELECT statement"/>, <reference id="update-statement" title="UPDATE statement"/>, <reference id="delete-statement" title="DELETE statement"/></li>
    -								<li>The <reference id="connect-by-clause" title="CONNECT BY clause"/> of a <reference id="select-statement" title="SELECT statement"/></li>
    -								<li>The <reference id="having-clause" title="HAVING clause"/> of a <reference id="select-statement" title="SELECT statement"/></li>
    -								<li>The <reference id="merge-statement" title="MERGE statement"/>'s ON clause</li>
    -							</ul>
    -							
    -							<h3>Boolean types in SQL</h3>
    -							<p>
    -								Before SQL:1999, boolean types did not really exist in SQL. They were modelled by 0 and 1 numeric/char values. With SQL:1999, true booleans were introduced and are now supported by most databases. In short, these are possible boolean values:
    -							</p>
    -							<ul>
    -								<li><code>1</code> or <code>TRUE</code></li>
    -								<li><code>0</code> or <code>FALSE</code></li>
    -								<li><code>NULL</code> or <code>UNKNOWN</code></li>
    -							</ul>
    -							<p>
    -								It is important to know that SQL differs from many other languages in the way it interprets the <code>NULL</code> boolean value. Most importantly, the following facts are to be remembered:
    -							</p>
    -							<ul>
    -								<li><code>[ANY] = NULL</code> yields <code>NULL</code> (not <code>FALSE</code>)</li>
    -								<li><code>[ANY] != NULL</code> yields <code>NULL</code> (not <code>TRUE</code>)</li>
    -								<li><code>NULL = NULL</code> yields <code>NULL</code> (not <code>TRUE</code>)</li>
    -								<li><code>NULL != NULL</code> yields <code>NULL</code> (not <code>FALSE</code>)</li>
    -							</ul>
    -							<p>
    -								For simplified <code>NULL</code> handling, please refer to the section about the <reference id="distinct-predicate" title="DISTINCT predicate"/>.
    -							</p>
    -							<p>
    -								Note that jOOQ does not model these values as actual <reference id="column-expressions" title="column expression"/> compatible.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -						    <section id="condition-building">
    -							    <title>Condition building</title>
    -								<content><html>
    -									<p>
    -										With jOOQ, most <reference id="conditional-expressions" title="conditional expressions"/> are built from <reference id="column-expressions" title="column expressions"/>, calling various methods on them. For instance, to build a <reference id="comparison-predicate" title="comparison predicate"/>, you can write the following expression:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[TITLE  = 'Animal Farm'
    -TITLE != 'Animal Farm']]></sql><java><![CDATA[BOOK.TITLE.equal("Animal Farm")
    -BOOK.TITLE.notEqual("Animal Farm")]]></java>
    -</code-pair><html>
    -
    -									<h3>Create conditions from the DSL</h3>
    -									<p>
    -										There are a few types of conditions, that can be created statically from the <reference id="dsl" title="DSL"/>. These are:
    -									</p>
    -									<ul>
    -										<li><reference id="plain-sql" title="plain SQL conditions"/>, that allow you to phrase your own SQL string <reference id="conditional-expressions" title="conditional expression"/></li>
    -										<li>The <reference id="exists-predicate" title="EXISTS predicate"/>, a standalone predicate that creates a conditional expression</li>
    -										<li>Constant <code>TRUE</code> and <code>FALSE</code> conditional expressions</li>
    -									</ul>
    -
    -									<h3>Connect conditions using boolean operators</h3>
    -									<p>
    -										Conditions can also be connected using <reference id="boolean-operators" title="boolean operators"/> as will be discussed in a subsequent chapter.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -						    <section id="boolean-operators">
    -							    <title>AND, OR, NOT boolean operators</title>
    -								<content><html>
    -									<p>
    -										In SQL, as in most other languages, <reference id="conditional-expressions" title="conditional expressions"/> can be connected using the <code>AND</code> and <code>OR</code> binary operators, as well as the <code>NOT</code> unary operator, to form new conditional expressions. In jOOQ, this is modelled as such: 
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- A simple conditional expression
    -TITLE = 'Animal Farm' OR TITLE = '1984'
    -
    --- A more complex conditional expression
    -        (TITLE = 'Animal Farm' OR TITLE = '1984') 
    -AND NOT (AUTHOR.LAST_NAME = 'Orwell')]]></sql><java><![CDATA[// A simple boolean connection
    -BOOK.TITLE.equal("Animal Farm").or(BOOK.TITLE.equal("1984"))
    -
    -// A more complex conditional expression
    -BOOK.TITLE.equal("Animal Farm").or(BOOK.TITLE.equal("1984"))
    -    .andNot(AUTHOR.LAST_NAME.equal("Orwell"))]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										The above example shows that the number of parentheses in Java can quickly explode. Proper indentation may become crucial in making such code readable. In order to understand how jOOQ composes combined conditional expressions, let's assign component expressions first:
    -									</p>
    -
    -</html><java><![CDATA[Condition a = BOOK.TITLE.equal("Animal Farm");
    -Condition b = BOOK.TITLE.equal("1984");
    -Condition c = AUTHOR.LAST_NAME.equal("Orwell");
    -
    -Condition combined1 = a.or(b);             // These OR-connected conditions form a new condition, wrapped in parentheses
    -Condition combined2 = combined1.andNot(c); // The left-hand side of the AND NOT () operator is already wrapped in parentheses]]></java><html>
    -
    -									<h3>The Condition API</h3>
    -									<p>
    -										Here are all boolean operators on the <reference class="org.jooq.Condition"/> interface:
    -									</p>
    -									
    -</html><java><![CDATA[and(Condition)            // Combine conditions with AND
    -and(String)               // Combine conditions with AND. Convenience for adding plain SQL to the right-hand side
    -and(String, Object...)    // Combine conditions with AND. Convenience for adding plain SQL to the right-hand side
    -and(String, QueryPart...) // Combine conditions with AND. Convenience for adding plain SQL to the right-hand side
    -andExists(Select<?>)      // Combine conditions with AND. Convenience for adding an exists predicate to the rhs
    -andNot(Condition)         // Combine conditions with AND. Convenience for adding an inverted condition to the rhs
    -andNotExists(Select<?>)   // Combine conditions with AND. Convenience for adding an inverted exists predicate to the rhs
    -
    -or(Condition)             // Combine conditions with OR
    -or(String)                // Combine conditions with OR. Convenience for adding plain SQL to the right-hand side
    -or(String, Object...)     // Combine conditions with OR. Convenience for adding plain SQL to the right-hand side
    -or(String, QueryPart...)  // Combine conditions with OR. Convenience for adding plain SQL to the right-hand side
    -orExists(Select<?>)       // Combine conditions with OR. Convenience for adding an exists predicate to the rhs
    -orNot(Condition)          // Combine conditions with OR. Convenience for adding an inverted condition to the rhs
    -orNotExists(Select<?>)    // Combine conditions with OR. Convenience for adding an inverted exists predicate to the rhs
    -
    -not()                     // Invert a condition (synonym for DSL.not(Condition)]]></java></content>
    -							</section>
    -
    -						    <section id="comparison-predicate">
    -							    <title>Comparison predicate</title>
    -								<content><html>
    -									<p>
    -										In SQL, comparison predicates are formed using common comparison operators:
    -									</p>
    -									<ul>
    -										<li><strong>=</strong> to test for equality</li>
    -										<li><strong>&lt;&gt;</strong> or <strong>!=</strong> to test for non-equality</li>
    -										<li><strong>&gt;</strong> to test for being strictly greater</li>
    -										<li><strong>&gt;=</strong> to test for being greater or equal</li>
    -										<li><strong>&lt;</strong> to test for being strictly less</li>
    -										<li><strong>&lt;=</strong> to test for being less or equal</li>
    -									</ul>
    -									
    -									<p>
    -										Unfortunately, Java does not support operator overloading, hence these operators are also implemented as methods in jOOQ, like any other SQL syntax elements. The relevant parts of the <reference class="org.jooq.Field"/> interface are these:
    -									</p>
    -									
    -</html><java><![CDATA[eq or equal(T);                                     // =  (some bind value)
    -eq or equal(Field<T>);                              // =  (some column expression)
    -eq or equal(Select<? extends Record1<T>>);          // =  (some scalar SELECT statement)
    -ne or notEqual(T);                                  // <> (some bind value)
    -ne or notEqual(Field<T>);                           // <> (some column expression)
    -ne or notEqual(Select<? extends Record1<T>>);       // <> (some scalar SELECT statement)
    -lt or lessThan(T);                                  // <  (some bind value)
    -lt or lessThan(Field<T>);                           // <  (some column expression)
    -lt or lessThan(Select<? extends Record1<T>>);       // <  (some scalar SELECT statement)
    -le or lessOrEqual(T);                               // <= (some bind value)
    -le or lessOrEqual(Field<T>);                        // <= (some column expression)
    -le or lessOrEqual(Select<? extends Record1<T>>);    // <= (some scalar SELECT statement)
    -gt or greaterThan(T);                               // >  (some bind value)
    -gt or greaterThan(Field<T>);                        // >  (some column expression)
    -gt or greaterThan(Select<? extends Record1<T>>);    // >  (some scalar SELECT statement)
    -ge or greaterOrEqual(T);                            // >= (some bind value)
    -ge or greaterOrEqual(Field<T>);                     // >= (some column expression)
    -ge or greaterOrEqual(Select<? extends Record1<T>>); // >= (some scalar SELECT statement)]]></java><html>
    -
    -									<p>
    -										Note that every operator is represented by two methods. A verbose one (such as <code>equal()</code>) and a two-character one (such as <code>eq()</code>). Both methods are the same. You may choose either one, depending on your taste. The manual will always use the more verbose one.
    -									</p>
    -									
    -									<h3>jOOQ's convenience methods using comparison operators</h3>
    -									<p>
    -										In addition to the above, jOOQ provides a few convenience methods for common operations performed on strings using comparison predicates:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[-- case insensitivity
    -LOWER(TITLE)  = LOWER('animal farm')
    -LOWER(TITLE) <> LOWER('animal farm')]]></sql><java><![CDATA[// case insensitivity
    -BOOK.TITLE.equalIgnoreCase("animal farm")
    -BOOK.TITLE.notEqualIgnoreCase("animal farm")]]></java>
    -</code-pair><html>
    -								</html></content>
    -							</section>
    -
    -							<section id="comparison-predicate-degree-n">
    -							    <title>Comparison predicate (degree > 1)</title>
    -							    <content><html>
    -							    	<p>
    -							    		All variants of the <reference id="comparison-predicate" title="comparison predicate"/> that we've seen in the previous chapter also work for <reference id="row-value-expressions" title="row value expressions"/>. If your database does not support row value expression comparison predicates, jOOQ simulates them the way they are defined in the SQL standard:
    -							    	</p>
    -	
    -</html><code-pair>
    -<sql><![CDATA[-- Row value expressions (equal)
    -(A, B)    =  (X, Y)
    -(A, B, C) =  (X, Y, Z)
    --- greater than
    -(A, B)    >  (X, Y)
    -
    -(A, B, C) >  (X, Y, Z)
    -
    -
    --- greater or equal  
    -(A, B)    >= (X, Y)
    -
    -
    -(A, B, C) >= (X, Y, Z)
    -
    -
    -
    --- Inverse comparisons
    -
    -(A, B)    <> (X, Y)
    -(A, B)    <  (X, Y)
    -(A, B)    <= (X, Y)]]></sql><sql><![CDATA[-- Equivalent factored-out predicates (equal)
    -(A = X) AND (B = Y)
    -(A = X) AND (B = Y) AND (C = Z)
    --- greater than
    -(A > X) 
    -  OR ((A = X) AND (B > Y)) 
    -(A > X) 
    -  OR ((A = X) AND (B > Y)) 
    -  OR ((A = X) AND (B = Y) AND (C > Z))
    --- greater or equal  
    -(A > X) 
    -  OR ((A = X) AND (B > Y))
    -  OR ((A = X) AND (B = Y))
    -(A > X) 
    -  OR ((A = X) AND (B > Y)) 
    -  OR ((A = X) AND (B = Y) AND (C > Z))
    -  OR ((A = X) AND (B = Y) AND (C = Z))
    --- For simplicity, these predicates are shown in terms
    --- of their negated counter parts
    -NOT((A, B) =  (X, Y))
    -NOT((A, B) >= (X, Y))
    -NOT((A, B) >  (X, Y))]]></sql>	
    -</code-pair><html>						    	
    -
    -									<p>
    -										jOOQ supports all of the above row value expression comparison predicates, both with <reference id="column-expressions" title="column expression lists"/> and <reference id="select-statement" title="scalar subselects"/> at the right-hand side:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[-- With regular column expressions
    -(BOOK.AUTHOR_ID, BOOK.TITLE) = (1, 'Animal Farm')
    -
    --- With scalar subselects
    -(BOOK.AUTHOR_ID, BOOK.TITLE) = (
    -  SELECT PERSON.ID, 'Animal Farm'
    -  FROM PERSON
    -  WHERE PERSON.ID = 1
    -)]]></sql><java><![CDATA[// Column expressions
    -row(BOOK.AUTHOR_ID, BOOK.TITLE).equal(1, "Animal Farm");
    -
    -// Subselects
    -row(BOOK.AUTHOR_ID, BOOK.TITLE).equal(
    -  select(PERSON.ID, val("Animal Farm"))
    -  .from(PERSON)
    -  .where(PERSON.ID.equal(1))
    -);]]></java>
    -</code-pair><html>									
    -							    </html></content>
    -						    </section>
    -						    
    -						    <section id="quantified-comparison-predicate">
    -							    <title>Quantified comparison predicate</title>
    -								<content><html>
    -									<p>
    -										If the right-hand side of a <reference id="comparison-predicate" title="comparison predicate"/> turns out to be a non-scalar table subquery, you can wrap that subquery in a quantifier, such as <code>ALL</code>, <code>ANY</code>, or <code>SOME</code>. Note that the SQL standard defines <code>ANY</code> and <code>SOME</code> to be equivalent. jOOQ settled for the more intuitive <code>ANY</code> and doesn't support <code>SOME</code>. Here are some examples, supported by jOOQ:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[TITLE = ANY('Animal Farm', '1982')
    -PUBLISHED_IN > ALL(1920, 1940)]]></sql><java><![CDATA[BOOK.TITLE.equal(any("Animal Farm", "1982"));
    -BOOK.PUBLISHED_IN.greaterThan(all(1920, 1940));]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										For the example, the right-hand side of the quantified comparison predicates were filled with argument lists. But it is easy to imagine that the source of values results from a <reference id="nested-selects" title="subselect"/>.
    -									</p>
    -
    -									<h3>ANY and the IN predicate</h3>
    -									<p>
    -										It is interesting to note that the SQL standard defines the <reference id="in-predicate" title="IN predicate"/> in terms of the <code>ANY</code>-quantified predicate. The following two expressions are equivalent:
    -									</p>
    -									
    -</html><code-pair>
    -<text><![CDATA[[ROW VALUE EXPRESSION] IN [IN PREDICATE VALUE]]]></text><text><![CDATA[[ROW VALUE EXPRESSION] = ANY [IN PREDICATE VALUE]]]></text>
    -</code-pair><html>
    -
    -									<p>
    -										Typically, the <reference id="in-predicate" title="IN predicate"/> is more readable than the quantified comparison predicate.
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -						    <section id="null-predicate">
    -							    <title>NULL predicate</title>
    -								<content><html>
    -									<p>
    -										In SQL, you cannot compare <code>NULL</code> with any value using <reference id="comparison-predicate" title="comparison predicates"/>, as the result would yield <code>NULL</code> again, which is neither <code>TRUE</code> nor <code>FALSE</code> (see also the manual's section about <reference id="conditional-expressions" title="conditional expressions"/>). In order to test a <reference id="column-expressions" title="column expression"/> for <code>NULL</code>, use the <code>NULL</code> predicate as such:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[TITLE IS NULL
    -TITLE IS NOT NULL]]></sql><java><![CDATA[BOOK.TITLE.isNull()
    -BOOK.TITLE.isNotNull()]]></java>
    -</code-pair><html>
    -
    -								</html></content>
    -							</section>
    -
    -						    <section id="null-predicate-degree-n">
    -							    <title>NULL predicate (degree > 1)</title>
    -							    <content><html>
    -							    	<p>
    -							    		The SQL <code>NULL</code> predicate also works well for <reference id="row-value-expressions" title="row value expressions"/>, although it has some subtle, counter-intuitive features when it comes to inversing predicates with the <code>NOT()</code> operator! Here are some examples:
    -							    	</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- Row value expressions
    -(A, B) IS     NULL
    -(A, B) IS NOT NULL
    -
    --- Inverse of the above
    -NOT((A, B) IS     NULL)
    -NOT((A, B) IS NOT NULL)]]></sql><sql><![CDATA[-- Equivalent factored-out predicates
    -(A IS     NULL) AND (B IS     NULL)
    -(A IS NOT NULL) AND (B IS NOT NULL)
    -
    --- Inverse
    -(A IS NOT NULL) OR  (B IS NOT NULL)
    -(A IS     NULL) OR  (B IS     NULL)]]></sql>	
    -</code-pair><html>						    	
    -
    -									<p>
    -										The SQL standard contains a nice truth table for the above rules:
    -									</p>
    -									
    -</html><text>+-----------------------+-----------+---------------+---------------+-------------------+
    -| Expression            | R IS NULL | R IS NOT NULL | NOT R IS NULL | NOT R IS NOT NULL |
    -+-----------------------+-----------+---------------+---------------+-------------------+
    -| degree 1: null        | true      | false         | false         |  true             |
    -| degree 1: not null    | false     | true          | true          |  false            |
    -| degree > 1: all null  | true      | false         | false         |  true             |
    -| degree > 1: some null | false     | false         | true          |  true             |
    -| degree > 1: none null | false     | true          | true          |  false            |
    -+-----------------------+-----------+---------------+---------------+-------------------+</text><html>		
    -
    -									<p>
    -										In jOOQ, you would simply use the <code>isNull()</code> and <code>isNotNull()</code> methods on row value expressions. Again, as with the <reference id="comparison-predicate-degree-n" title="row value expression comparison predicate"/>, the row value expression <code>NULL</code> predicate is simulated by jOOQ, if your database does not natively support it:
    -									</p>
    -									
    -</html><java><![CDATA[row(BOOK.ID, BOOK.TITLE).isNull();
    -row(BOOK.ID, BOOK.TITLE).isNotNull();]]></java></content>
    -						    </section>
    -						    
    -						    <section id="distinct-predicate">
    -							    <title>DISTINCT predicate</title>
    -								<content><html>
    -									<p>
    -										Some databases support the <code>DISTINCT</code> predicate, which serves as a convenient, <code>NULL</code>-safe <reference id="comparison-predicate" title="comparison predicate"/>. With the <code>DISTINCT</code> predicate, the following truth table can be assumed:
    -									</p>
    -									<ul>
    -										<li><code>[ANY] IS DISTINCT FROM NULL</code> yields <code>TRUE</code></li>
    -										<li><code>[ANY] IS NOT DISTINCT FROM NULL</code> yields <code>FALSE</code></li>
    -										<li><code>NULL IS DISTINCT FROM NULL</code> yields <code>FALSE</code></li>
    -										<li><code>NULL IS NOT DISTINCT FROM NULL</code> yields <code>TRUE</code></li>
    -									</ul>
    -									<p>
    -										For instance, you can compare two fields for distinctness, ignoring the fact that any of the two could be <code>NULL</code>, which would lead to funny results. This is supported by jOOQ as such:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[TITLE IS DISTINCT FROM SUB_TITLE
    -TITLE IS NOT DISTINCT FROM SUB_TITLE]]></sql><java><![CDATA[BOOK.TITLE.isDistinctFrom(BOOK.SUB_TITLE)
    -BOOK.TITLE.isNotDistinctFrom(BOOK.SUB_TITLE)]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										If your database does not natively support the <code>DISTINCT</code> predicate, jOOQ simulates it with an equivalent <reference id="case-expressions" title="CASE expression"/>, modelling the above truth table:
    -									</p>
    -	
    -</html><code-pair>								
    -<sql><![CDATA[-- [A] IS DISTINCT FROM [B] 
    -CASE WHEN [A] IS     NULL AND [B] IS     NULL THEN FALSE
    -     WHEN [A] IS     NULL AND [B] IS NOT NULL THEN TRUE
    -     WHEN [A] IS NOT NULL AND [B] IS     NULL THEN TRUE
    -     WHEN [A] =               [B]             THEN FALSE
    -     ELSE                                          TRUE
    -END
    -]]></sql><sql><![CDATA[-- [A] IS NOT DISTINCT FROM [B] 
    -CASE WHEN [A] IS     NULL AND [B] IS     NULL THEN TRUE
    -     WHEN [A] IS     NULL AND [B] IS NOT NULL THEN FALSE
    -     WHEN [A] IS NOT NULL AND [B] IS     NULL THEN FALSE
    -     WHEN [A] =               [B]             THEN TRUE
    -     ELSE                                          FALSE
    -END
    -]]></sql>
    -</code-pair><html>							
    -								</html></content>
    -							</section>
    -
    -						    <section id="between-predicate">
    -							    <title>BETWEEN predicate</title>
    -								<content><html>
    -									<p>
    -										The <code>BETWEEN</code> predicate can be seen as syntactic sugar for a pair of <reference id="comparison-predicate" title="comparison predicates"/>. According to the SQL standard, the following two predicates are equivalent:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[[A] BETWEEN [B] AND [C]]]></sql><sql><![CDATA[[A] >= [B] AND [A] <= [C]]]></sql>
    -</code-pair><html>
    -
    -									<p>
    -										Note the inclusiveness of range boundaries in the definition of the <code>BETWEEN</code> predicate. Intuitively, this is supported in jOOQ as such:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[PUBLISHED_IN     BETWEEN 1920 AND 1940
    -PUBLISHED_IN NOT BETWEEN 1920 AND 1940]]></sql><java><![CDATA[BOOK.PUBLISHED_IN.between(1920).and(1940)
    -BOOK.PUBLISHED_IN.notBetween(1920).and(1940)]]></java>
    -</code-pair><html>
    -
    -									<h3>BETWEEN SYMMETRIC</h3>
    -									<p>
    -										The SQL standard defines the <code>SYMMETRIC</code> keyword to be used along with <code>BETWEEN</code> to indicate that you do not care which bound of the range is larger than the other. A database system should simply swap range bounds, in case the first bound is greater than the second one. jOOQ supports this keyword as well, simulating it if necessary.
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[PUBLISHED_IN     BETWEEN SYMMETRIC 1940 AND 1920
    -PUBLISHED_IN NOT BETWEEN SYMMETRIC 1940 AND 1920]]></sql><java><![CDATA[BOOK.PUBLISHED_IN.betweenSymmetric(1940).and(1920)
    -BOOK.PUBLISHED_IN.notBetweenSymmetric(1940).and(1920)]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										The simulation is done trivially:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[[A] BETWEEN SYMMETRIC [B] AND [C]]]></sql><sql><![CDATA[([A] BETWEEN [B] AND [C]) OR ([A] BETWEEN [C] AND [B])]]></sql>
    -</code-pair><html>
    -
    -								</html></content>
    -							</section>
    -
    -						    <section id="between-predicate-degree-n">
    -							    <title>BETWEEN predicate (degree > 1)</title>
    -							    <content><html>
    -							    	<p>
    -							    	    The SQL <code>BETWEEN</code> predicate also works well for <reference id="row-value-expressions" title="row value expressions"/>. Much like the <reference id="between-predicate" title="BETWEEN predicate for degree 1"/>, it is defined in terms of a pair of regular <reference id="comparison-predicate" title="comparison predicates"/>:
    -							    	</p>
    -							    	
    -</html><code-pair>
    -<sql><![CDATA[[A] BETWEEN           [B] AND [C]
    -[A] BETWEEN SYMMETRIC [B] AND [C]]]></sql><sql><![CDATA[ [A] >= [B] AND [A] <= [C]
    -([A] >= [B] AND [A] <= [C]) OR ([A] >= [C] AND [A] <= [B])]]></sql>
    -</code-pair><html>
    -							    	
    -							    	<p>
    -							    		The above can be factored out according to the rules listed in the manual's section about <reference id="comparison-predicate-degree-n" title="row value expression comparison predicates"/>.
    -							    	</p>
    -							    	
    -							    	<p>
    -							    		jOOQ supports the <code>BETWEEN [SYMMETRIC]</code> predicate and simulates it in all SQL dialects where necessary. An example is given here:
    -							    	</p>
    -							    	
    -</html><java><![CDATA[row(BOOK.ID, BOOK.TITLE).between(1, "A").and(10, "Z");]]></java></content>
    -							</section>
    -							
    -						    <section id="like-predicate">
    -							    <title>LIKE predicate</title>
    -								<content><html>
    -									<p>
    -										<code>LIKE</code> predicates are popular for simple wildcard-enabled pattern matching. Supported wildcards in all SQL databases are:
    -									</p>
    -									<ul>
    -										<li><strong>_</strong>: (single-character wildcard)</li>
    -										<li><strong>%</strong>: (multi-character wildcard)</li>
    -									</ul>
    -									<p>
    -										With jOOQ, the <code>LIKE</code> predicate can be created from any <reference id="column-expressions" title="column expression"/> as such:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[TITLE     LIKE '%abc%'
    -TITLE NOT LIKE '%abc%']]></sql><java><![CDATA[BOOK.TITLE.like("%abc%")
    -BOOK.TITLE.notLike("%abc%")]]></java>
    -</code-pair><html>
    -									
    -									<h3>Escaping operands with the LIKE predicate</h3>
    -									<p>
    -										Often, your pattern may contain any of the wildcard characters <code>"_"</code> and <code>"%"</code>, in case of which you may want to escape them. jOOQ does not automatically escape patterns in <code>like()</code> and <code>notLike()</code> methods. Instead, you can explicitly define an escape character as such:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[TITLE     LIKE '%The !%-Sign Book%' ESCAPE '!'
    -TITLE NOT LIKE '%The !%-Sign Book%' ESCAPE '!']]></sql><java><![CDATA[BOOK.TITLE.like("%The !%-Sign Book%", '!')
    -BOOK.TITLE.notLike("%The !%-Sign Book%", '!')]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										In the above predicate expressions, the exclamation mark character is passed as the escape character to escape wildcard characters <code>"!_"</code> and <code>"!%"</code>, as well as to escape the escape character itself: <code>"!!"</code>
    -									</p>
    -									<p>
    -										Please refer to your database manual for more details about escaping patterns with the <code>LIKE</code> predicate.
    -									</p>
    -									
    -									<h3>jOOQ's convenience methods using the LIKE predicate</h3>
    -									<p>
    -										In addition to the above, jOOQ provides a few convenience methods for common operations performed on strings using the <code>LIKE</code> predicate. Typical operations are "contains predicates", "starts with predicates", "ends with predicates", etc. Here is the full convenience API wrapping <code>LIKE</code> predicates:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[-- case insensitivity
    -LOWER(TITLE) LIKE LOWER('%abc%')
    -LOWER(TITLE) NOT LIKE LOWER('%abc%')
    -
    --- contains and similar methods
    -TITLE LIKE '%' || 'abc' || '%'
    -TITLE LIKE 'abc' || '%'
    -TITLE LIKE '%' || 'abc']]></sql><java><![CDATA[// case insensitivity
    -BOOK.TITLE.likeIgnoreCase("%abc%")
    -BOOK.TITLE.notLikeIgnoreCase("%abc%")
    -
    -// contains and similar methods
    -BOOK.TITLE.contains("abc")
    -BOOK.TITLE.startsWith("abc")
    -BOOK.TITLE.endsWith("abc")]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										Note, that jOOQ escapes <code>%</code> and <code>_</code> characters in value in some of the above predicate implementations. For simplicity, this has been omitted in this manual.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -						    <section id="in-predicate">
    -							    <title>IN predicate</title>
    -								<content><html>
    -									<p>
    -										In SQL, apart from comparing a value against several values, the <code>IN</code> predicate can be used to create semi-joins or anti-joins. jOOQ knows the following methods on the <reference class="org.jooq.Field" /> interface, to construct such <code>IN</code> predicates:
    -									</p>
    -
    -</html><java><![CDATA[in(Collection<T>)                   // Construct an IN predicate from a collection of bind values
    -in(T...)                            // Construct an IN predicate from bind values
    -in(Field<?>...)                     // Construct an IN predicate from column expressions
    -in(Select<? extends Record1<T>>)    // Construct an IN predicate from a subselect
    -notIn(Collection<T>)                // Construct a NOT IN predicate from a collection of bind values
    -notIn(T...)                         // Construct a NOT IN predicate from bind values
    -notIn(Field<?>...)                  // Construct a NOT IN predicate from column expressions
    -notIn(Select<? extends Record1<T>>) // Construct a NOT IN predicate from a subselect]]></java><html>
    -
    -									<p>
    -										A sample <code>IN</code> predicate might look like this:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[TITLE     IN ('Animal Farm', '1984')
    -TITLE NOT IN ('Animal Farm', '1984')]]></sql><java><![CDATA[BOOK.TITLE.in("Animal Farm", "1984")
    -BOOK.TITLE.notIn("Animal Farm", "1984")]]></java>
    -</code-pair><html>
    -
    -									
    -									<h3>NOT IN and NULL values</h3>
    -									<p>
    -										Beware that you should probably not have any <code>NULL</code> values in the right hand side of a <code>NOT IN</code> predicate, as the whole expression would evaluate to <code>NULL</code>, which is rarely desired. This can be shown informally using the following reasoning:
    -									</p>
    -									
    -</html><sql>-- The following conditional expressions are formally or informally equivalent
    -A NOT IN (B, C)
    -A != ANY(B, C)
    -A != B AND A != C
    -
    --- Substitute C for NULL, you'll get
    -A NOT IN (B, NULL)   -- Substitute C for NULL
    -A != B AND A != NULL -- From the above rules
    -A != B AND NULL      -- [ANY] != NULL yields NULL
    -NULL                 -- [ANY] AND NULL yields NULL</sql><html>
    -
    -									<p>
    -										A good way to prevent this from happening is to use the <reference id="exists-predicate" title="EXISTS predicate"/> for anti-joins, which is <code>NULL</code>-value insensitive. See the manual's section about <reference id="conditional-expressions" title="conditional expressions"/> to see a boolean truth table.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -						    <section id="in-predicate-degree-n">
    -							    <title>IN predicate (degree > 1)</title>
    -							    <content><html>
    -							    	<p>
    -							    	    The SQL <code>IN</code> predicate also works well for <reference id="row-value-expressions" title="row value expressions"/>. Much like the <reference id="in-predicate" title="IN predicate for degree 1"/>, it is defined in terms of a <reference id="quantified-comparison-predicate" title="quantified comparison predicate"/>. The two expressions are equivalent:
    -							    	</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[R IN [IN predicate value]]]></sql><sql><![CDATA[R = ANY [IN predicate value]]]></sql>
    -</code-pair><html>		
    -
    -									<p>
    -							    		jOOQ supports the <code>IN</code> predicate. Simulation of the <code>IN</code> predicate where row value expressions aren't well supported is currently only available for <code>IN</code> predicates that do not take a subselect as an <code>IN</code> predicate value. An example is given here:
    -							    	</p>
    -							    	
    -</html><java><![CDATA[row(BOOK.ID, BOOK.TITLE).in(row(1, "A"), row(2, "B"));]]></java></content>
    -							</section>
    -							
    -						    <section id="exists-predicate">
    -							    <title>EXISTS predicate</title>
    -								<content><html>
    -									<p>
    -										Slightly less intuitive, yet more powerful than the previously discussed <reference id="in-predicate" title="IN predicate"/> is the <code>EXISTS</code> predicate, that can be used to form semi-joins or anti-joins. With jOOQ, the <code>EXISTS</code> predicate can be formed in various ways:
    -									</p>
    -									<ul>
    -										<li>From the <reference id="dsl" title="DSL"/>, using static methods. This is probably the most used case</li>
    -										<li>From a <reference id="conditional-expressions" title="conditional expression"/> using <reference id="boolean-operators" title="convenience methods attached to boolean operators"/></li>
    -										<li>From a <reference id="select-statement" title="SELECT statement"/> using <reference id="where-clause" title="convenience methods attached to the where clause"/>, and from other clauses</li>
    -									</ul>
    -									
    -									<p>
    -										An example of an <code>EXISTS</code> predicate can be seen here:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[    EXISTS (SELECT 1 FROM BOOK 
    -            WHERE AUTHOR_ID = 3)
    -NOT EXISTS (SELECT 1 FROM BOOK 
    -            WHERE AUTHOR_ID = 3)]]></sql><java><![CDATA[   exists(create.selectOne().from(BOOK)
    -                .where(BOOK.AUTHOR_ID.equal(3)));
    -notExists(create.selectOne().from(BOOK)
    -                .where(BOOK.AUTHOR_ID.equal(3)));]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										Note that in SQL, the projection of a subselect in an <code>EXISTS</code> predicate is irrelevant. To help you write queries like the above, you can use jOOQ's selectZero() or selectOne() <reference id="dsl" title="DSL"/> methods
    -									</p>
    -									
    -									<h3>Performance of IN vs. EXISTS</h3>
    -									<p>
    -										In theory, the two types of predicates can perform equally well. If your database system ships with a sophisticated cost-based optimiser, it will be able to transform one predicate into the other, if you have all necessary constraints set (e.g. referential constraints, not null constraints). However, in reality, performance between the two might differ substantially. An interesting blog post investigating this topic on the MySQL database can be seen here:<br/>
    -										<a href="http://blog.jooq.org/2012/07/27/not-in-vs-not-exists-vs-left-join-is-null-mysql/">http://blog.jooq.org/2012/07/27/not-in-vs-not-exists-vs-left-join-is-null-mysql/</a>
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -							<section id="overlaps-predicate">
    -								<title>OVERLAPS predicate</title>
    -								<content><html>
    -									<p>
    -										When comparing dates, the SQL standard allows for using a special <code>OVERLAPS</code> predicate, which checks whether two date ranges overlap each other. The following can be said:
    -									</p>
    -
    -</html><sql><![CDATA[-- This yields true
    -(DATE '2010-01-01', DATE '2010-01-03') OVERLAPS (DATE '2010-01-02' DATE '2010-01-04')
    -
    --- INTERVAL data types are also supported. This is equivalent to the above
    -(DATE '2010-01-01', CAST('+2 00:00:00' AS INTERVAL DAY TO SECOND)) OVERLAPS 
    -(DATE '2010-01-02', CAST('+2 00:00:00' AS INTERVAL DAY TO SECOND))]]></sql><html>
    -
    -									<h3>The OVERLAPS predicate in jOOQ</h3>
    -									<p>
    -									    jOOQ supports the <code>OVERLAPS</code> predicate on <reference id="row-value-expressions" title="row value expressions of degree 2"/>. The following methods are contained in <reference class="org.jooq.Row2"/>:
    -									</p>
    -
    -</html><java><![CDATA[Condition overlaps(T1 t1, T2 t2);
    -Condition overlaps(Field<T1> t1, Field<T2> t2);
    -Condition overlaps(Row2<T1, T2> row);]]></java><html>
    -
    -									<p>
    -										This allows for expressing the above predicates as such:
    -									</p>																		
    -
    -</html><java><![CDATA[// The date range tuples version
    -row(Date.valueOf('2010-01-01'), Date.valueOf('2010-01-03')).overlaps(Date.valueOf('2010-01-02'), Date.valueOf('2010-01-04'))
    -
    -// The INTERVAL tuples version
    -row(Date.valueOf('2010-01-01'), new DayToSecond(2)).overlaps(Date.valueOf('2010-01-02'), new DayToSecond(2))]]></java><html>
    -
    -									<h3>jOOQ's extensions to the standard</h3>
    -									<p>
    -										Unlike the standard (or any database implementing the standard), jOOQ also supports the <code>OVERLAPS</code> predicate for comparing arbitrary <reference id="row-value-expressions" title="row vlaue expressions of degree 2"/>. For instance, <code>(1, 3) OVERLAPS (2, 4)</code> will yield true in jOOQ. This is simulated as such
    -									</p>
    -									
    -</html><sql><![CDATA[-- This predicate
    -(A, B) OVERLAPS (C, D)
    -
    --- can be simulated as such
    -(C <= B) AND (A <= D)]]></sql></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="plain-sql">
    -						<title>Plain SQL</title>
    -						<content><html>
    -							<p>
    -								A DSL is a nice thing to have, it feels "fluent" and "natural", especially if it models a well-known language, such as SQL. But a DSL is always expressed in a host language (Java in this case), which was not made for exactly the same purposes as its hosted DSL. If it were, then jOOQ would be implemented on a compiler-level, similar to LINQ in .NET. But it's not, and so, the DSL is limited by language constraints of its host language. We have seen many functionalities where the DSL becomes a bit verbose. This can be especially true for:
    -							</p>
    -							<ul>
    -								<li><reference id="aliased-columns" title="aliasing"/></li>
    -								<li><reference id="nested-selects" title="nested selects"/></li>
    -								<li><reference id="arithmetic-expressions" title="arithmetic expressions"/></li>
    -								<li><reference id="cast-expressions" title="casting"/></li>
    -							</ul>
    -							
    -							<p>
    -								You'll probably find other examples. If verbosity scares you off, don't worry. The verbose use-cases for jOOQ are rather rare, and when they come up, you do have an option. Just write SQL the way you're used to!
    -							</p>
    -							<p>
    -								jOOQ allows you to embed SQL as a String into any supported <reference id="sql-statements" title="statement"/> in these contexts:
    -							</p>
    -							<ul>
    -								<li>Plain SQL as a <reference id="conditional-expressions" title="conditional expression"/></li>
    -								<li>Plain SQL as a <reference id="column-expressions" title="column expression"/></li>
    -								<li>Plain SQL as a <reference id="column-expressions" title="function"/></li>
    -								<li>Plain SQL as a <reference id="table-expressions" title="table expression"/></li>
    -								<li>Plain SQL as a <reference id="query-vs-resultquery" title="query"/></li>
    -							</ul>
    -
    -							<h3>The DSL plain SQL API</h3>
    -							<p>
    -								Plain SQL API methods are usually overloaded in three ways. Let's look at the <code>condition</code> query part constructor:
    -							</p>
    -</html><java><![CDATA[// Construct a condition without bind values
    -// Example: condition("a = b")
    -Condition condition(String sql);
    -
    -// Construct a condition with bind values
    -// Example: condition("a = ?", 1);
    -Condition condition(String sql, Object... bindings);
    -
    -// Construct a condition taking other jOOQ object arguments
    -// Example: condition("a = {0}", val(1));
    -Condition condition(String sql, QueryPart... parts);]]></java><html>
    -							
    -							<p>
    -								Please refer to the <reference class="org.jooq.impl.DSL"/> Javadoc for more details. The following is a more complete listing of plain SQL construction methods from the DSL:
    -							</p>
    -
    -</html><java><![CDATA[// A condition
    -Condition condition(String sql);
    -Condition condition(String sql, Object... bindings);
    -Condition condition(String sql, QueryPart... parts);
    -
    -// A field with an unknown data type
    -Field<Object> field(String sql);
    -Field<Object> field(String sql, Object... bindings);
    -Field<Object> field(String sql, QueryPart... parts);
    -
    -// A field with a known data type
    -<T> Field<T> field(String sql, Class<T> type);
    -<T> Field<T> field(String sql, Class<T> type, Object... bindings);
    -<T> Field<T> field(String sql, Class<T> type, QueryPart... parts);
    -<T> Field<T> field(String sql, DataType<T> type);
    -<T> Field<T> field(String sql, DataType<T> type, Object... bindings);
    -<T> Field<T> field(String sql, DataType<T> type, QueryPart... parts);
    -
    -// A field with a known name (properly escaped)
    -Field<Object> fieldByName(String... fieldName);
    -<T> Field<T>  fieldByName(Class<T> type, String... fieldName);
    -<T> Field<T>  fieldByName(DataType<T> type, String... fieldName)
    -
    -// A function
    -<T> Field<T> function(String name, Class<T> type, Field<?>... arguments);
    -<T> Field<T> function(String name, DataType<T> type, Field<?>... arguments);
    -
    -// A table
    -Table<?> table(String sql);
    -Table<?> table(String sql, Object... bindings);
    -Table<?> table(String sql, QueryPart... parts);
    -
    -// A table with a known name (properly escaped)
    -Table<Record> tableByName(String... fieldName);
    -
    -// A query without results (update, insert, etc)
    -Query query(String sql);
    -Query query(String sql, Object... bindings);
    -Query query(String sql, QueryPart... parts);
    -
    -// A query with results
    -ResultQuery<Record> resultQuery(String sql);
    -ResultQuery<Record> resultQuery(String sql, Object... bindings);
    -ResultQuery<Record> resultQuery(String sql, QueryPart... parts);
    -
    -// A query with results. This is the same as resultQuery(...).fetch();
    -Result<Record> fetch(String sql);
    -Result<Record> fetch(String sql, Object... bindings);
    -Result<Record> fetch(String sql, QueryPart... parts);]]></java><html>
    -
    -							<p>
    -								Apart from the general factory methods, plain SQL is also available in various other contexts. For instance, when adding a <code>.where("a = b")</code> clause to a query. Hence, there exist several convenience methods where plain SQL can be inserted usefully. This is an example displaying all various use-cases in one single query:
    -							</p>
    -							
    -</html><java><![CDATA[// You can use your table aliases in plain SQL fields
    -// As long as that will produce syntactically correct SQL
    -Field<?> LAST_NAME    = create.field("a.LAST_NAME");
    -
    -// You can alias your plain SQL fields
    -Field<?> COUNT1       = create.field("count(*) x");
    -
    -// If you know a reasonable Java type for your field, you
    -// can also provide jOOQ with that type
    -Field<Integer> COUNT2 = create.field("count(*) y", Integer.class);
    -
    -       // Use plain SQL as select fields
    -create.select(LAST_NAME, COUNT1, COUNT2)
    -
    -       // Use plain SQL as aliased tables (be aware of syntax!)
    -      .from("author a")
    -      .join("book b")
    -
    -       // Use plain SQL for conditions both in JOIN and WHERE clauses
    -      .on("a.id = b.author_id")
    -
    -       // Bind a variable in plain SQL
    -      .where("b.title != ?", "Brida")
    -
    -       // Use plain SQL again as fields in GROUP BY and ORDER BY clauses
    -      .groupBy(LAST_NAME)
    -      .orderBy(LAST_NAME);]]></java><html>
    -
    -							<h3>Important things to note about plain SQL!</h3>
    -							<p>
    -								There are some important things to keep in mind when using plain SQL:
    -							</p>
    -							<ul>
    -								<li>jOOQ doesn't know what you're doing. You're on your own again!</li>
    -								<li>You have to provide something that will be syntactically correct. If it's not, then jOOQ won't know. Only your JDBC driver or your RDBMS will detect the syntax error.</li>
    -								<li>You have to provide consistency when you use variable binding. The number of ? must match the number of variables</li>
    -								<li>Your SQL is inserted into jOOQ queries without further checks. Hence, jOOQ can't prevent SQL injection. </li>
    -							</ul>
    -						</html></content>
    -					</section>
    -
    -					<section id="bind-values">
    -					    <title>Bind values and parameters</title>
    -						<content><html>
    -							<p>
    -								Bind values are used in SQL / JDBC for various reasons. Among the most obvious ones are:
    -							</p>
    -							<ul>
    -								<li>
    -									Protection against SQL injection. Instead of inlining values possibly originating from user input, you bind those values to your prepared statement and let the JDBC driver / database take care of handling security aspects.
    -								</li>
    -								<li>
    -									Increased speed. Advanced databases such as Oracle can keep execution plans of similar queries in a dedicated cache to prevent hard-parsing your query again and again. In many cases, the actual value of a bind variable does not influence the execution plan, hence it can be reused. Preparing a statement will thus be faster
    -								</li>
    -								<li>
    -									On a JDBC level, you can also reuse the SQL string and prepared statement object instead of constructing it again, as you can bind new values to the prepared statement. jOOQ currently does not cache prepared statements, internally.
    -								</li>
    -							</ul>
    -							
    -							<p>
    -								The following sections explain how you can introduce bind values in jOOQ, and how you can control the way they are rendered and bound to SQL.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -						    <section id="indexed-parameters">
    -							    <title>Indexed parameters</title>
    -								<content><html>
    -									<p>
    -										JDBC only knows indexed bind values. A typical example for using bind values with JDBC is this:
    -									</p>
    -									
    -</html><java><![CDATA[PreparedStatement stmt = connection.prepareStatement("SELECT * FROM BOOK WHERE ID = ? AND TITLE = ?");
    -
    -// bind values to the above statement for appropriate indexes 
    -stmt.setInt(1, 5);
    -stmt.setString(2, "Animal Farm");
    -stmm.executeQuery();]]></java><html>
    -
    -									<p>
    -										With dynamic SQL, keeping track of the number of question marks and their corresponding index may turn out to be hard. jOOQ abstracts this and lets you provide the bind value right where it is needed. A trivial example is this:
    -									</p>
    -									
    -</html><java><![CDATA[create.select().from(BOOK).where(BOOK.ID.equal(5)).and(BOOK.TITLE.equal("Animal Farm"));
    -
    -// This notation is in fact a short form for the equivalent:
    -create.select().from(BOOK).where(BOOK.ID.equal(val(5))).and(BOOK.TITLE.equal(val("Animal Farm")));]]></java><html>
    -
    -									<p>
    -										Note the using of <reference class="org.jooq.impl.DSL" anchor="#val(java.lang.Object)" title="DSL.val()"/> to explicitly create an indexed bind value. You don't have to worry about that index. When the query is <reference id="sql-rendering" title="rendered"/>, each bind value will render a question mark. When the query <reference id="variable-binding" title="binds its variables"/>, each bind value will generate the appropriate bind value index. 
    -									</p>
    -									
    -									<h3>Extract bind values from a query</h3>
    -									<p>
    -										Should you decide to run the above query outside of jOOQ, using your own <reference class="java.sql.PreparedStatement"/>, you can do so as follows:
    -									</p>
    -									
    -</html><java><![CDATA[Select<?> select = create.select().from(BOOK).where(BOOK.ID.equal(5)).and(BOOK.TITLE.equal("Animal Farm"));
    -
    -// Render the SQL statement:
    -String sql = select.getSQL();
    -assertEquals("SELECT * FROM BOOK WHERE ID = ? AND TITLE = ?", sql);
    -
    -// Get the bind values:
    -List<Object> values = select.getBindValues();
    -assertEquals(2, values.size());
    -assertEquals(5, values.get(0));
    -assertEquals("Animal Farm", values.get(1));]]></java><html>
    -
    -									<p>
    -										You can also extract specific bind values by index from a query, if you wish to modify their underlying value after creating a query. This can be achieved as such:
    -									</p>
    -
    -</html><java><![CDATA[Select<?> select = create.select().from(BOOK).where(BOOK.ID.equal(5)).and(BOOK.TITLE.equal("Animal Farm"));
    -Param<?> param = select.getParam("2");
    -
    -// You could now modify the Query's underlying bind value:
    -if ("Animal Farm".equals(param.getValue())) {
    -    param.setConverted("1984");
    -}]]></java><html>
    -
    -									<p>
    -										For more details about jOOQ's internals, see the manual's section about <reference id="queryparts" title="QueryParts"/>.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -						    <section id="named-parameters">
    -							    <title>Named parameters</title>
    -								<content><html>
    -									<p>
    -										Some SQL access abstractions that are built on top of JDBC, or some that bypass JDBC may support named parameters. jOOQ allows you to give names to your parameters as well, although those names are not rendered to SQL strings by default. Here is an example of how to create named parameters using the <reference class="org.jooq.Param"/> type:
    -									</p>
    -
    -</html><java><![CDATA[// Create a query with a named parameter. You can then use that name for accessing the parameter again
    -Query query1 = create.select().from(AUTHOR).where(LAST_NAME.equal(param("lastName", "Poe")));
    -Param<?> param1 = query.getParam("lastName");
    -
    -// Or, keep a reference to the typed parameter in order not to lose the <T> type information:
    -Param<String> param2 = param("lastName", "Poe");
    -Query query2 = create.select().from(AUTHOR).where(LAST_NAME.equal(param2));
    -
    -// You can now change the bind value directly on the Param reference:
    -param2.setValue("Orwell");]]></java><html>
    -
    -									<p>
    -										The <reference class="org.jooq.Query"/> interface also allows for setting new bind values directly, without accessing the Param type:
    -									</p>
    -
    -</html><java><![CDATA[Query query1 = create.select().from(AUTHOR).where(LAST_NAME.equal("Poe"));
    -query1.bind(1, "Orwell");
    -
    -// Or, with named parameters
    -Query query2 = create.select().from(AUTHOR).where(LAST_NAME.equal(param("lastName", "Poe")));
    -query2.bind("lastName", "Orwell");]]></java><html>
    -
    -									<p>
    -										In order to actually render named parameter names in generated SQL, use the <reference class="org.jooq.DSLContext" anchor="#renderNamedParams(org.jooq.QueryPart)" title="DSLContext.renderNamedParams()"/> method:
    -									</p>
    -
    -</html><code-pair>
    -<java><![CDATA[create.renderNamedParams(
    -    create.select()
    -          .from(AUTHOR)
    -          .where(LAST_NAME.equal(
    -                 param("lastName", "Poe"))));]]></java><sql><![CDATA[-- The named bind variable can be rendered
    -
    -SELECT *
    -FROM AUTHOR
    -WHERE LAST_NAME = :lastName]]></sql>
    -</code-pair><html>
    -								</html></content>
    -							</section>
    -
    -						    <section id="inlined-parameters">
    -							    <title>Inlined parameters</title>
    -								<content><html>
    -									<p>
    -										Sometimes, you may wish to avoid rendering bind variables while still using custom values in SQL. jOOQ refers to that as "inlined" bind values. When bind values are inlined, they render the actual value in SQL rather than a JDBC question mark. Bind value inlining can be achieved in two ways:
    -									</p>
    -									<ul>
    -										<li>
    -											By using the <reference id="custom-settings" title="Settings"/> and setting the <reference class="org.jooq.conf.StatementType"/> to STATIC_STATEMENT. This will inline all bind values for SQL statements rendered from such a Configuration.
    -										</li>
    -										<li>
    -											By using <reference class="org.jooq.impl.DSL" anchor="#inline(java.lang.Object)" title="DSL.inline()"/> methods.
    -										</li>
    -									</ul>
    -									<p>
    -										In both cases, your inlined bind values will be properly escaped to avoid SQL syntax errors and SQL injection. Some examples:
    -									</p>
    -
    -</html><java><![CDATA[
    -// Use dedicated calls to inline() in order to specify
    -// single bind values to be rendered as inline values
    -// --------------------------------------------------
    -create.select()
    -      .from(AUTHOR)
    -      .where(LAST_NAME.equal(inline("Poe")));
    -
    -// Or render the whole query with inlined values
    -// --------------------------------------------------
    -Settings settings = new Settings()
    -    .withStatementType(StatementType.STATIC_STATEMENT);
    -
    -// Add the settings to the Configuration
    -DSLContext create = DSL.using(connection, SQLDialect.ORACLE, settings);
    -
    -// Run queries that omit rendering schema names
    -create.select()
    -      .from(AUTHOR)
    -      .where(LAST_NAME.equal("Poe"));]]></java></content>
    -							</section>
    -
    -						    <section id="sql-injection-and-plain-sql-queryparts">
    -							    <title>SQL injection and plain SQL QueryParts</title>
    -								<content><html>
    -									<p>
    -										Special care needs to be taken when using <reference id="plain-sql" title="plain SQL QueryParts"/>. While jOOQ's API allows you to specify bind values for use with plain SQL, you're not forced to do that. For instance, both of the following queries will lead to the same, valid result:
    -									</p>
    -									
    -</html><java><![CDATA[// This query will use bind values, internally.
    -create.fetch("SELECT * FROM BOOK WHERE ID = ? AND TITLE = ?", 5 "Animal Farm");
    -
    -// This query will not use bind values, internally.
    -create.fetch("SELECT * FROM BOOK WHERE ID = 5 AND TITLE = 'Animal Farm'");]]></java><html>
    -
    -									<p>
    -										All methods in the jOOQ API that allow for plain (unescaped, untreated) SQL contain a warning message in their relevant Javadoc, to remind you of the risk of SQL injection in what is otherwise a SQL-injection-safe API.
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="queryparts">
    -					    <title>QueryParts</title>
    -						<content><html>
    -							<p>
    -								A <reference class="org.jooq.Query" /> and all its contained objects is a <reference class="org.jooq.QueryPart" />. QueryParts essentially provide this functionality:
    -							</p>
    -							<ul>
    -								<li>they can <reference id="sql-rendering" title="render SQL"/> using the <reference class="org.jooq.QueryPartInternal" anchor="#toSQL(org.jooq.RenderContext)" title="toSQL(RenderContext)"/> method</li>
    -								<li>they can <reference id="variable-binding" title="bind variables"/> using the <reference class="org.jooq.QueryPartInternal" anchor="#bind(org.jooq.BindContext)" title="bind(BindContext)"/> method</li>
    -							</ul>
    -
    -							<p>
    -								Both of these methods are contained in jOOQ's internal API's <reference class="org.jooq.QueryPartInternal"/>, which is internally implemented by every QueryPart.
    -							</p>
    -
    -							<p>
    -								The following sections explain some more details about <reference id="sql-rendering" title="SQL rendering"/> and <reference id="variable-binding" title="variable binding"/>, as well as other implementation details about QueryParts in general.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -						    <section id="sql-rendering">
    -							    <title>SQL rendering</title>
    -								<content><html>
    -									<p>
    -										Every <reference class="org.jooq.QueryPart"/> must implement the <reference class="org.jooq.QueryPartInternal" anchor="#toSQL(org.jooq.RenderContext)" title="toSQL(RenderContext)"/> method to render its SQL string to a <reference class="org.jooq.RenderContext"/>. This RenderContext has two purposes:
    -									</p>
    -									<ul>
    -										<li>It provides some information about the "state" of SQL rendering.</li>
    -										<li>It provides a common API for constructing SQL strings on the context's internal <reference class="java.lang.StringBuilder"/></li>
    -									</ul>
    -									<p>
    -										An overview of the <reference class="org.jooq.RenderContext"/> API is given here:
    -									</p>
    -
    -</html><java><![CDATA[// These methods are useful for generating unique aliases within a RenderContext (and thus within a Query)
    -String peekAlias();
    -String nextAlias();
    -
    -// These methods return rendered SQL
    -String render();
    -String render(QueryPart part);
    -
    -// These methods allow for fluent appending of SQL to the RenderContext's internal StringBuilder
    -RenderContext keyword(String keyword);
    -RenderContext literal(String literal);
    -RenderContext sql(String sql);
    -RenderContext sql(char sql);
    -RenderContext sql(int sql);
    -RenderContext sql(QueryPart part);
    -
    -// These methods allow for controlling formatting of SQL, if the relevant Setting is active
    -RenderContext formatNewLine();
    -RenderContext formatSeparator();
    -RenderContext formatIndentStart();
    -RenderContext formatIndentStart(int indent);
    -RenderContext formatIndentLockStart();
    -RenderContext formatIndentEnd();
    -RenderContext formatIndentEnd(int indent);
    -RenderContext formatIndentLockEnd();
    -
    -// These methods control the RenderContext's internal state
    -boolean       inline();
    -RenderContext inline(boolean inline);
    -boolean       qualify();
    -RenderContext qualify(boolean qualify);
    -boolean       namedParams();
    -RenderContext namedParams(boolean renderNamedParams);
    -CastMode      castMode();
    -RenderContext castMode(CastMode mode);
    -Boolean       cast();
    -RenderContext castModeSome(SQLDialect... dialects);]]></java><html>
    -
    -									<p>
    -										The following additional methods are inherited from a common <reference class="org.jooq.Context"/>, which is shared among <reference class="org.jooq.RenderContext"/> and <reference class="org.jooq.BindContext"/>:
    -									</p>
    -
    -</html><java><![CDATA[// These methods indicate whether fields or tables are being declared (MY_TABLE AS MY_ALIAS) or referenced (MY_ALIAS)
    -boolean declareFields();
    -Context declareFields(boolean declareFields);
    -boolean declareTables();
    -Context declareTables(boolean declareTables);
    -
    -// These methods indicate whether a top-level query is being rendered, or a subquery
    -boolean subquery();
    -Context subquery(boolean subquery);
    -
    -// These methods provide the bind value indices within the scope of the whole Context (and thus of the whole Query)
    -int nextIndex();
    -int peekIndex();]]></java><html>
    -
    -									<h3>An example of rendering SQL</h3>
    -								   	<p>
    -								   		A simple example can be provided by checking out jOOQ's internal representation of a (simplified) <reference id="comparison-predicate" title="CompareCondition"/>. It is used for any <reference class="org.jooq.Condition"/> comparing two fields as for example the <code>AUTHOR.ID = BOOK.AUTHOR_ID</code> condition here:
    -							   		</p>
    -							   		
    -</html><sql>-- [...]
    -FROM AUTHOR
    -JOIN BOOK ON AUTHOR.ID = BOOK.AUTHOR_ID
    --- [...]</sql><html>
    -
    -									<p>
    -										This is how jOOQ renders such a condition (simplified example):
    -									</p>
    -
    -</html><java><![CDATA[@Override
    -public final void toSQL(RenderContext context) {
    -    // The CompareCondition delegates rendering of the Fields to the Fields
    -    // themselves and connects them using the Condition's comparator operator:
    -    context.sql(field1)
    -           .sql(" ")
    -           .sql(comparator.toSQL())
    -           .sql(" ")
    -           .sql(field2);
    -}]]></java><html>
    -
    -									<p>
    -										See the manual's sections about <reference id="custom-queryparts" title="custom QueryParts"/> and <reference id="plain-sql-queryparts" title="plain SQL QueryParts"/> to learn about how to write your own query parts in order to extend jOOQ.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="pretty-printing">
    -								<title>Pretty printing SQL</title>
    -								<content><html>
    -									<p>
    -										As mentioned in the previous chapter about <reference id="sql-rendering" title="SQL rendering"/>, there are some elements in the <reference class="org.jooq.RenderContext"/> that are used for formatting / pretty-printing rendered SQL. In order to obtain pretty-printed SQL, just use the following <reference id="custom-settings" title="custom settings"/>: 
    -									</p>
    -	
    -	
    -</html><java><![CDATA[// Create a DSLContext that will render "formatted" SQL
    -DSLContext pretty = DSL.using(dialect, new Settings().withRenderFormatted(true));]]></java><html>
    -
    -									<p>
    -										And then, use the above DSLContext to render pretty-printed SQL:
    -									</p>
    -									
    -</html><code-pair>
    -<java><![CDATA[String sql = pretty.select(
    -                       AUTHOR.LAST_NAME, count().as("c"))
    -                   .from(BOOK)
    -                   .join(AUTHOR)
    -                   .on(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -                   .where(BOOK.TITLE.notEqual("1984"))
    -                   .groupBy(AUTHOR.LAST_NAME)
    -                   .having(count().equal(2))
    -                   .getSQL();]]></java><sql><![CDATA[select 
    -  "TEST"."AUTHOR"."LAST_NAME", 
    -  count(*) "c"
    -from "TEST"."BOOK"
    -  join "TEST"."AUTHOR"
    -  on "TEST"."BOOK"."AUTHOR_ID" = "TEST"."AUTHOR"."ID"
    -where "TEST"."BOOK"."TITLE" <> '1984'
    -group by "TEST"."AUTHOR"."LAST_NAME"
    -having count(*) = 2]]></sql>
    -</code-pair><html>
    -
    -									<p>
    -										The section about <reference id="execute-listeners" title="ExecuteListeners"/> shows an example of how such pretty printing can be used to log readable SQL to the stdout.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -						    <section id="variable-binding">
    -							    <title>Variable binding</title>
    -								<content><html>
    -									<p>
    -										Every <reference class="org.jooq.QueryPart"/> must implement the <reference class="org.jooq.QueryPartInternal" anchor="#bind(org.jooq.BindContext)" title="bind(BindContext)"/> method. This BindContext has two purposes:
    -									</p>
    -									<ul>
    -										<li>It provides some information about the "state" of the variable binding in process.</li>
    -										<li>It provides a common API for binding values to the context's internal <reference class="java.sql.PreparedStatement"/></li>
    -									</ul>
    -									<p>
    -										An overview of the <reference class="org.jooq.RenderContext"/> API is given here:
    -									</p>
    -
    -</html><java><![CDATA[// This method provides access to the PreparedStatement to which bind values are bound
    -PreparedStatement statement();
    -
    -// These methods provide convenience to delegate variable binding
    -BindContext bind(QueryPart part) throws DataAccessException;
    -BindContext bind(Collection<? extends QueryPart> parts) throws DataAccessException;
    -BindContext bind(QueryPart[] parts) throws DataAccessException;
    -
    -// These methods perform the actual variable binding
    -BindContext bindValue(Object value, Class<?> type) throws DataAccessException;
    -BindContext bindValues(Object... values) throws DataAccessException;]]></java><html>
    -
    -									<p>
    -										Some additional methods are inherited from a common <reference class="org.jooq.Context"/>, which is shared among <reference class="org.jooq.RenderContext"/> and <reference class="org.jooq.BindContext"/>. Details are documented in the previous chapter about <reference id="sql-rendering" title="SQL rendering"/>
    -									</p>
    -
    -									<h3>An example of binding values to SQL</h3>
    -								   	<p>
    -								   		A simple example can be provided by checking out jOOQ's internal representation of a (simplified) <reference id="comparison-predicate" title="CompareCondition"/>. It is used for any <reference class="org.jooq.Condition"/> comparing two fields as for example the <code>AUTHOR.ID = BOOK.AUTHOR_ID</code> condition here:
    -							   		</p>
    -							   		
    -</html><sql>-- [...]
    -WHERE AUTHOR.ID = ?
    --- [...]</sql><html>
    -
    -									<p>
    -										This is how jOOQ binds values on such a condition:
    -									</p>
    -</html><java><![CDATA[@Override
    -public final void bind(BindContext context) throws DataAccessException {
    -    // The CompareCondition itself does not bind any variables.
    -    // But the two fields involved in the condition might do so...
    -    context.bind(field1).bind(field2);
    -}]]></java><html>
    -
    -									<p>
    -										See the manual's sections about <reference id="custom-queryparts" title="custom QueryParts"/> and <reference id="plain-sql-queryparts" title="plain SQL QueryParts"/> to learn about how to write your own query parts in order to extend jOOQ.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -						    <section id="custom-queryparts">
    -							    <title>Extend jOOQ with custom types</title>
    -								<content><html>
    -									<p>
    -										If a SQL clause is too complex to express with jOOQ, you can extend either one of the following types for use directly in a jOOQ query:
    -									</p>
    -									
    -</html><java><![CDATA[public abstract class CustomField<T> extends AbstractField<T> {}
    -public abstract class CustomCondition extends AbstractCondition {}
    -public abstract class CustomTable<R extends TableRecord<R>> extends TableImpl<R> {}
    -public abstract class CustomRecord<R extends TableRecord<R>> extends TableRecordImpl<R> {}]]></java><html>
    -
    -									<p>
    -										These classes are declared public and covered by jOOQ's integration tests. When you extend these classes, you will have to provide your own implementations for the <reference id="queryparts" title="QueryParts'"/> <reference id="sql-rendering" title="toSQL()"/> and <reference id="variable-binding" title="bind()"/> methods, as discussed before:
    -									</p>
    -									
    -</html><java><![CDATA[// This method must produce valid SQL. If your QueryPart contains other QueryParts, you may delegate SQL generation to them
    -// in the correct order, passing the render context.
    -//
    -// If context.inline() is true, you must inline all bind variables
    -// If context.inline() is false, you must generate ? for your bind variables
    -public void toSQL(RenderContext context);
    -
    -// This method must bind all bind variables to a PreparedStatement. If your QueryPart contains other QueryParts, $
    -// you may delegate variable binding to them in the correct order, passing the bind context.
    -//
    -// Every QueryPart must ensure, that it starts binding its variables at context.nextIndex().
    -public void bind(BindContext context) throws DataAccessException;]]></java><html>
    -
    -									<p>
    -										The above contract may be a bit tricky to understand at first. The best thing is to check out jOOQ source code and have a look at a couple of QueryParts, to see how it's done. Here's an example <reference class="org.jooq.impl.CustomField"/> showing how to create a field multiplying another field by 2
    -									</p>
    -									
    -</html><java><![CDATA[// Create an anonymous CustomField, initialised with BOOK.ID arguments
    -final Field<Integer> IDx2 = new CustomField<Integer>(BOOK.ID.getName(), BOOK.ID.getDataType()) {
    -    @Override
    -    public void toSQL(RenderContext context) {
    -    
    -        // In inline mode, render the multiplication directly
    -        if (context.inline()) {
    -            context.sql(BOOK.ID).sql(" * 2");
    -        }
    -        
    -        // In non-inline mode, render a bind value
    -        else {
    -            context.sql(BOOK.ID).sql(" * ?");
    -        }
    -    }
    -
    -    @Override
    -    public void bind(BindContext context) {
    -        try {
    -        
    -            // Manually bind the value 2
    -            context.statement().setInt(context.nextIndex(), 2);
    -            
    -            // Alternatively, you could also write:
    -            // context.bind(DSL.val(2));
    -        }
    -        catch (SQLException e) {
    -            throw translate(getSQL(), e);
    -        }
    -    }
    -};
    -
    -// Use the above field in a SQL statement:
    -create.select(IDx2).from(BOOK);]]></java></content>
    -							</section>
    -							
    -						    <section id="plain-sql-queryparts">
    -							    <title>Plain SQL QueryParts</title>
    -								<content><html>
    -									<p>
    -										If you don't need the integration of rather complex QueryParts into jOOQ, then you might be safer using simple <reference id="plain-sql" title="Plain SQL"/> functionality, where you can provide jOOQ with a simple String representation of your embedded SQL. Plain SQL methods in jOOQ's API come in two flavours. 
    -									</p>
    -									<ul>
    -										<li><strong>method(String, Object...)</strong>: This is a method that accepts a SQL string and a list of bind values that are to be bound to the variables contained in the SQL string</li>
    -										<li><strong>method(String, QueryPart...)</strong>: This is a method that accepts a SQL string and a list of QueryParts that are "injected" at the position of their respective placeholders in the SQL string</li>
    -									</ul>
    -									<p>
    -										The above distinction is best explained using an example:
    -									</p>
    -									
    -</html><java><![CDATA[// Plain SQL using bind values. The value 5 is bound to the first variable, "Animal Farm" to the second variable:
    -create.selectFrom(BOOK).where("BOOK.ID = ? AND TITLE = ?", 5, "Animal Farm");
    -
    -// Plain SQL using placeholders (counting from zero). 
    -// The QueryPart "id" is substituted for the placeholder {0}, the QueryPart "title" for {1}
    -Field<Integer> id   = val(5);
    -Field<String> title = val("Animal Farm");
    -create.selectFrom(BOOK).where("BOOK.ID = {0} AND TITLE = {1}", id, title);]]></java><html>
    -
    -									<p>
    -										The above technique allows for creating rather complex SQL clauses that are currently not supported by jOOQ, without extending any of the <reference id="custom-queryparts" title="custom QueryParts"/> as indicated in the previous chapter.
    -									</p>									
    -								</html></content>
    -							</section>
    -
    -						    <section id="serializability">
    -							    <title>Serializability</title>
    -								<content><html>
    -									<p>
    -										The only transient, non-serializable element in any jOOQ object is the <reference id="dsl-context" title="Configuration's"/> underlying <reference class="java.sql.Connection"/>. When you want to execute queries after de-serialisation, or when you want to store/refresh/delete <reference id="crud-with-updatablerecords" title="Updatable Records"/>, you may have to "re-attach" them to a Configuration
    -									</p>
    -
    -</html><java><![CDATA[// Deserialise a SELECT statement
    -ObjectInputStream in = new ObjectInputStream(...);
    -Select<?> select = (Select<?>) in.readObject();
    -
    -// This will throw a DetachedException:
    -select.execute();
    -
    -// In order to execute the above select, attach it first
    -DSLContext create = DSL.using(connection, SQLDialect.ORACLE);
    -create.attach(select);]]></java><html>
    -
    -									<h3>Automatically attaching QueryParts</h3>
    -									<p>
    -										Another way of attaching QueryParts automatically, or rather providing them with a new <reference class="java.sql.Connection"/> at will, is to hook into the <reference id="execute-listeners" title="Execute Listener support"/>. More details about this can be found in the manual's chapter about <reference id="execute-listeners" title="ExecuteListeners"/>
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -					
    -					<section id="scala-sql-building">
    -						<title>SQL building in Scala</title>
    -						<content><html>
    -							<p>
    -								jOOQ-Scala is a maven module used for leveraging some advanced Scala features for those users that wish to use jOOQ with Scala.
    -							</p>
    -							
    -							<h3>Using Scala's implicit defs to allow for operator overloading</h3>
    -							<p>
    -								The most obvious Scala feature to use in jOOQ are implicit defs for implicit conversions in order to enhance the <reference class="org.jooq.Field"/> type with SQL-esque operators. 
    -							</p>
    -							<p>
    -								The following depicts a trait which wraps all fields:
    -							</p>
    -							
    -</html><scala><![CDATA[/**
    - * A Scala-esque representation of {@link org.jooq.Field}, adding overloaded
    - * operators for common jOOQ operations to arbitrary fields
    - */
    -trait SAnyField[T] extends Field[T] {
    -
    -    // String operations
    -    // -----------------
    -
    -    def ||(value : String)            : Field[String]
    -    def ||(value : Field[_])          : Field[String]
    -
    -    // Comparison predicates
    -    // ---------------------
    -
    -    def ===(value : T)                : Condition
    -    def ===(value : Field[T])         : Condition
    -
    -    def !==(value : T)                : Condition
    -    def !==(value : Field[T])         : Condition
    -
    -    def <>(value : T)                 : Condition
    -    def <>(value : Field[T])          : Condition
    -
    -    def >(value : T)                  : Condition
    -    def >(value : Field[T])           : Condition
    -
    -    def >=(value : T)                 : Condition
    -    def >=(value : Field[T])          : Condition
    -
    -    def <(value : T)                  : Condition
    -    def <(value : Field[T])           : Condition
    -
    -    def <=(value : T)                 : Condition
    -    def <=(value : Field[T])          : Condition
    -
    -    def <=>(value : T)                : Condition
    -    def <=>(value : Field[T])         : Condition
    -}]]></scala><html>
    -
    -							<p>
    -								The following depicts a trait which wraps numeric fields:
    -							</p>
    -							
    -</html><scala><![CDATA[/**
    - * A Scala-esque representation of {@link org.jooq.Field}, adding overloaded
    - * operators for common jOOQ operations to numeric fields
    - */
    -trait SNumberField[T <: Number] extends SAnyField[T] {
    -
    -    // Arithmetic operations
    -    // ---------------------
    -
    -    def unary_-                       : Field[T]
    -
    -    def +(value : Number)             : Field[T]
    -    def +(value : Field[_ <: Number]) : Field[T]
    -
    -    def -(value : Number)             : Field[T]
    -    def -(value : Field[_ <: Number]) : Field[T]
    -
    -    def *(value : Number)             : Field[T]
    -    def *(value : Field[_ <: Number]) : Field[T]
    -
    -    def /(value : Number)             : Field[T]
    -    def /(value : Field[_ <: Number]) : Field[T]
    -
    -    def %(value : Number)             : Field[T]
    -    def %(value : Field[_ <: Number]) : Field[T]
    -
    -    // Bitwise operations
    -    // ------------------
    -
    -    def unary_~                       : Field[T]
    -
    -    def &(value : T)                  : Field[T]
    -    def &(value : Field[T])           : Field[T]
    -
    -    def |(value : T)                  : Field[T]
    -    def |(value : Field[T])           : Field[T]
    -
    -    def ^(value : T)                  : Field[T]
    -    def ^(value : Field[T])           : Field[T]
    -
    -    def <<(value : T)                 : Field[T]
    -    def <<(value : Field[T])          : Field[T]
    -
    -    def >>(value : T)                 : Field[T]
    -    def >>(value : Field[T])          : Field[T]
    -}]]></scala><html>
    -
    -							<p>
    -								An example query using such overloaded operators would then look like this:
    -							</p>
    -							
    -</html><scala><![CDATA[select (
    -  T_BOOK.ID * T_BOOK.AUTHOR_ID,
    -  T_BOOK.ID + T_BOOK.AUTHOR_ID * 3 + 4,
    -  T_BOOK.TITLE || " abc" || " xy")
    -from T_BOOK
    -leftOuterJoin (
    -  select (x.ID, x.YEAR_OF_BIRTH)
    -  from x
    -  limit 1
    -  asTable x.getName()
    -)
    -on T_BOOK.AUTHOR_ID === x.ID
    -where (T_BOOK.ID <> 2)
    -or (T_BOOK.TITLE in ("O Alquimista", "Brida"))
    -fetch]]></scala><html>
    -
    -							<h3>Scala 2.10 Macros</h3>
    -							<p>
    -								This feature is still being experimented with. With Scala Macros, it might be possible to inline a true SQL dialect into the Scala syntax, backed by the jOOQ API. Stay tuned!
    -							</p>
    -						</html></content>
    -					</section>
    -				</sections>
    -			</section>
    -
    -			<section id="sql-execution">
    -				<title>SQL execution</title>
    -				<content><html>
    -					<p>
    -						In a previous section of the manual, we've seen how jOOQ can be used to <reference id="sql-building" title="build SQL"/> that can be executed with any API including JDBC or ... jOOQ. This section of the manual deals with various means of actually executing SQL with jOOQ.
    -					</p>
    -					
    -					<h3>SQL execution with JDBC</h3>
    -					<p>
    -						JDBC calls executable objects "<reference class="java.sql.Statement"/>". It distinguishes between three types of statements:
    -					</p>
    -					<ul>
    -						<li><reference class="java.sql.Statement"/>, or "static statement": This statement type is used for any arbitrary type of SQL statement. It is particularly useful with <reference id="inlined-parameters" title="inlined parameters"/></li>
    -						<li><reference class="java.sql.PreparedStatement"/>: This statement type is used for any arbitrary type of SQL statement. It is particularly useful with <reference id="indexed-parameters" title="indexed parameters"/> (note that JDBC does not support <reference id="named-parameters" title="named parameters"/>)</li>
    -						<li><reference class="java.sql.CallableStatement"/>: This statement type is used for SQL statements that are "called" rather than "executed". In particular, this includes calls to <reference id="stored-procedures" title="stored procedures"/>. Callable statements can register OUT parameters</li>
    -					</ul>
    -					<p>
    -						Today, the JDBC API may look weird to users being used to object-oriented design. While statements hide a lot of SQL dialect-specific implementation details quite well, they assume a lot of knowledge about the internal state of a statement. For instance, you can use the <reference class="java.sql.PreparedStatement" anchor="#addBatch()" title="PreparedStatement.addBatch()"/> method, to add a the prepared statement being created to an "internal list" of batch statements. Instead of returning a new type, this method forces user to reflect on the prepared statement's internal state or "mode".
    -					</p>
    -					
    -					<h3>jOOQ is wrapping JDBC</h3>
    -					<p>						
    -						These things are abstracted away by jOOQ, which exposes such concepts in a more object-oriented way. For more details about jOOQ's batch query execution, see the manual's section about <reference id="batch-execution" title="batch execution"/>.
    -					</p> 
    -					<p>
    -						The following sections of this manual will show how jOOQ is wrapping JDBC for SQL execution
    -					</p>
    -				</html></content>
    -
    -				<sections>
    -					<section id="comparison-with-jdbc">
    -						<title>Comparison between jOOQ and JDBC</title>
    -						<content><html>
    -							<h3>Similarities with JDBC</h3>
    -							<p>
    -								Even if there are <reference id="query-vs-resultquery" title="two general types of Query"/>, there are a lot of similarities between JDBC and jOOQ. Just to name a few:
    -							</p>
    -							<ul>
    -								<li>Both APIs return the number of affected records in non-result queries. JDBC: <reference class="java.sql.Statement" anchor="#executeUpdate(java.lang.String)" title="Statement.executeUpdate()"/>, jOOQ: <reference class="org.jooq.Query" anchor="#execute()" title="Query.execute()"/></li>
    -								<li>Both APIs return a scrollable result set type from result queries. JDBC: <reference class="java.sql.ResultSet"/>, jOOQ: <reference class="org.jooq.Result"/></li>
    -							</ul>
    -							
    -							<h3>Differences to JDBC</h3>
    -							<p>
    -								Some of the most important differences between JDBC and jOOQ are listed here:
    -							</p>
    -							<ul>
    -								<li><reference id="query-vs-resultquery" title="Query vs. ResultQuery"/>: JDBC does not formally distinguish between queries that can return results, and queries that cannot. The same API is used for both. This greatly reduces the possibility for <reference id="fetching" title="fetching convenience methods"/></li>
    -								<li><reference id="exception-handling" title="Exception handling"/>: While SQL uses the checked <reference class="java.sql.SQLException"/>, jOOQ wraps all exceptions in an unchecked <reference class="org.jooq.exception.DataAccessException"/></li>
    -								<li><reference class="org.jooq.Result"/>: Unlike its JDBC counter-part, this type implements <reference class="java.util.List"/> and is fully loaded into Java memory, freeing resources as early as possible. Just like statements, this means that users don't have to deal with a "weird" internal result set state.</li>
    -								<li><reference class="org.jooq.Cursor"/>: If you want more fine-grained control over how many records are fetched into memory at once, you can still do that using jOOQ's <reference id="lazy-fetching" title="lazy fetching"/> feature</li>
    -								<li><reference id="statement-type" title="Statement type"/>: jOOQ does not formally distinguish between static statements and prepared statements. By default, all statements are prepared statements in jOOQ, internally. Executing a statement as a static statement can be done simply using a <reference id="custom-settings" title="custom settings flag"/></li>
    -								<li><reference id="reusing-statements" title="Closing Statements"/>: JDBC keeps open resources even if they are already consumed. With JDBC, there is a lot of verbosity around safely closing resources. In jOOQ, resources are closed after consumption, by default. If you want to keep them open after consumption, you have to explicitly say so.</li>
    -							</ul>
    -						</html></content>
    -					</section>
    -				    
    -				    <section id="query-vs-resultquery">
    -						<title>Query vs. ResultQuery</title>
    -						<content><html>
    -							<p>
    -								Unlike JDBC, jOOQ has a lot of knowledge about a SQL query's structure and internals (see the manual's section about <reference id="sql-building" title="SQL building"/>). Hence, jOOQ distinguishes between these two fundamental types of queries. While every <reference class="org.jooq.Query"/> can be executed, only <reference class="org.jooq.ResultQuery"/> can return results (see the manual's section about <reference id="fetching" title="fetching"/> to learn more about fetching results). With plain SQL, the distinction can be made clear most easily:
    -							</p>
    -							
    -</html><java><![CDATA[// Create a Query object and execute it:
    -Query query = create.query("DELETE FROM BOOK");
    -query.execute();
    -
    -// Create a ResultQuery object and execute it, fetching results:
    -ResultQuery<Record> resultQuery = create.resultQuery("SELECT * FROM BOOK");
    -Result<Record> resultQuery.fetch();]]></java></content>
    -					</section>
    -
    -				    <section id="fetching">
    -						<title>Fetching</title>
    -						<content><html>
    -							<p>
    -								Fetching is something that has been completely neglegted by JDBC and also by various other database abstraction libraries. Fetching is much more than just looping or listing records or mapped objects. There are so many ways you may want to fetch data from a database, it should be considered a first-class feature of any database abstraction API. Just to name a few, here are some of jOOQ's fetching modes:
    -							</p>
    -							<ul>
    -								<li><reference id="record-vs-tablerecord" title="Untyped vs. typed fetching"/>: Sometimes you care about the returned type of your records, sometimes (with arbitrary projections) you don't.</li>
    -								<li><reference id="arrays-maps-and-lists" title="Fetching arrays, maps, or lists"/>: Instead of letting you transform your result sets into any more suitable data type, a library should do that work for you.</li>
    -								<li><reference id="recordhandler" title="Fetching through handler callbacks"/>: This is an entirely different fetching paradigm. With Java 8's lambda expressions, this will become even more powerful.</li>
    -								<li><reference id="recordmapper" title="Fetching through mapper callbacks"/>: This is an entirely different fetching paradigm. With Java 8's lambda expressions, this will become even more powerful.</li>
    -								<li><reference id="pojos" title="Fetching custom POJOs"/>: This is what made Hibernate and JPA so strong. Automatic mapping of tables to custom POJOs.</li>
    -								<li><reference id="lazy-fetching" title="Lazy vs. eager fetching"/>: It should be easy to distinguish these two fetch modes.</li>
    -								<li><reference id="many-fetching" title="Fetching many results"/>: Some databases allow for returning many result sets from a single query. JDBC can handle this but it's very verbose. A list of results should be returned instead.</li>
    -								<li><reference id="later-fetching" title="Fetching data asynchronously"/>: Some queries take too long to execute to wait for their results. You should be able to spawn query execution in a separate process.</li>
    -							</ul>
    -							
    -							<h3>Convenience and how ResultQuery, Result, and Record share API</h3>
    -							<p>
    -								The term "fetch" is always reused in jOOQ when you can fetch data from the database. An <reference class="org.jooq.ResultQuery"/> provides many overloaded means of fetching data:
    -							</p>
    -							
    -							<h3>Various modes of fetching</h3>
    -							<p>
    -								These modes of fetching are also documented in subsequent sections of the manual
    -							</p>
    -							
    -</html><java><![CDATA[// The "standard" fetch
    -Result<R> fetch();    
    -
    -// The "standard" fetch when you know your query returns only one record
    -R fetchOne();
    -
    -// The "standard" fetch when you only want to fetch the first record
    -R fetchAny();
    -
    -// Create a "lazy" Cursor, that keeps an open underlying JDBC ResultSet
    -Cursor<R> fetchLazy();
    -Cursor<R> fetchLazy(int fetchSize);
    -
    -// Create a java.util.concurrent.Future, to handle asynchronous execution of the ResultQuery
    -FutureResult<R> fetchLater();
    -FutureResult<R> fetchLater(ExecutorService executor);
    -
    -// Fetch several results at once
    -List<Result<Record>> fetchMany();
    -
    -// Fetch records into a custom callback
    -<H extends RecordHandler<R>> H fetchInto(H handler);
    -
    -// Map records using a custom callback
    -<E> List<E> fetch(RecordMapper<? super R, E> mapper);
    -
    -// Execute a ResultQuery with jOOQ, but return a JDBC ResultSet, not a jOOQ object
    -ResultSet fetchResultSet();]]></java><html>
    -							
    -							<h3>Fetch convenience</h3>
    -							<p>
    -								These means of fetching are also available from <reference class="org.jooq.Result"/> and <reference class="org.jooq.Record"/> APIs
    -							</p>
    -
    -</html><java><![CDATA[// These methods are convenience for fetching only a single field, 
    -// possibly converting results to another type
    -<T>    List<T> fetch(Field<T> field);
    -<T>    List<T> fetch(Field<?> field, Class<? extends T> type);
    -<T, U> List<U> fetch(Field<T> field, Converter<? super T, U> converter);
    -       List<?> fetch(int fieldIndex);
    -<T>    List<T> fetch(int fieldIndex, Class<? extends T> type);
    -<U>    List<U> fetch(int fieldIndex, Converter<?, U> converter);
    -       List<?> fetch(String fieldName);
    -<T>    List<T> fetch(String fieldName, Class<? extends T> type);
    -<U>    List<U> fetch(String fieldName, Converter<?, U> converter);
    -
    -// These methods are convenience for fetching only a single field, possibly converting results to another type
    -// Instead of returning lists, these return arrays
    -<T>    T[]      fetchArray(Field<T> field);
    -<T>    T[]      fetchArray(Field<?> field, Class<? extends T> type);
    -<T, U> U[]      fetchArray(Field<T> field, Converter<? super T, U> converter);
    -       Object[] fetchArray(int fieldIndex);
    -<T>    T[]      fetchArray(int fieldIndex, Class<? extends T> type);
    -<U>    U[]      fetchArray(int fieldIndex, Converter<?, U> converter);
    -       Object[] fetchArray(String fieldName);
    -<T>    T[]      fetchArray(String fieldName, Class<? extends T> type);
    -<U>    U[]      fetchArray(String fieldName, Converter<?, U> converter);
    -
    -// These methods are convenience for fetching only a single field from a single record, 
    -// possibly converting results to another type
    -<T>    T      fetchOne(Field<T> field);
    -<T>    T      fetchOne(Field<?> field, Class<? extends T> type);
    -<T, U> U      fetchOne(Field<T> field, Converter<? super T, U> converter);
    -       Object fetchOne(int fieldIndex);
    -<T>    T      fetchOne(int fieldIndex, Class<? extends T> type);
    -<U>    U      fetchOne(int fieldIndex, Converter<?, U> converter);
    -       Object fetchOne(String fieldName);
    -<T>    T      fetchOne(String fieldName, Class<? extends T> type);
    -<U>    U      fetchOne(String fieldName, Converter<?, U> converter);]]></java><html>
    -
    -							<h3>Fetch transformations</h3>
    -							<p>
    -								These means of fetching are also available from <reference class="org.jooq.Result"/> and <reference class="org.jooq.Record"/> APIs
    -							</p>
    -							
    -</html><java><![CDATA[// Transform your Records into arrays, Results into matrices
    -       Object[][] fetchArrays();
    -       Object[]   fetchOneArray();
    -       
    -// Reduce your Result object into maps
    -<K>    Map<K, R>      fetchMap(Field<K> key);
    -<K, V> Map<K, V>      fetchMap(Field<K> key, Field<V> value);
    -<K, E> Map<K, E>      fetchMap(Field<K> key, Class<E> value);
    -       Map<Record, R> fetchMap(Field<?>[] key);
    -<E>    Map<Record, E> fetchMap(Field<?>[] key, Class<E> value);       
    -
    -// Transform your Result object into maps
    -       List<Map<String, Object>> fetchMaps();
    -       Map<String, Object>       fetchOneMap();
    -
    -// Transform your Result object into groups
    -<K>    Map<K, Result<R>>      fetchGroups(Field<K> key);
    -<K, V> Map<K, List<V>>        fetchGroups(Field<K> key, Field<V> value);
    -<K, E> Map<K, List<E>>        fetchGroups(Field<K> key, Class<E> value);
    -       Map<Record, Result<R>> fetchGroups(Field<?>[] key);
    -<E>    Map<Record, List<E>>   fetchGroups(Field<?>[] key, Class<E> value);
    -
    -// Transform your Records into custom POJOs
    -<E>    List<E> fetchInto(Class<? extends E> type);
    -
    -// Transform your records into another table type
    -<Z extends Record> Result<Z> fetchInto(Table<Z> table);]]></java><html>
    -
    -							<p>
    -								Note, that apart from the <reference class="org.jooq.ResultQuery" anchor="#fetchLazy()" title="fetchLazy()"/> methods, all fetch() methods will immediately close underlying JDBC result sets.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="record-vs-tablerecord">
    -								<title>Record vs. TableRecord</title>
    -								<content><html>
    -									<p>
    -										jOOQ understands that SQL is much more expressive than Java, when it comes to the declarative typing of <reference id="table-expressions" title="table expressions"/>. As a declarative language, SQL allows for creating ad-hoc row value expressions (records with indexed columns, or tuples) and records (records with named columns). In Java, this is not possible to the same extent. Yet, still, sometimes you wish to use strongly typed records, when you know that you're selecting only from a single table
    -									</p>
    -									
    -									<h3>Fetching strongly or weakly typed records</h3>
    -									<p>
    -										When fetching data only from a single table, the <reference id="table-expressions" title="table expression's"/> type is known to jOOQ if you use jOOQ's <reference id="code-generation" title="code generator"/> to generate <reference id="codegen-records" title="TableRecords"/> for your database tables. In order to fetch such strongly typed records, you will have to use the <reference id="select-statement" title="simple select API"/>:
    -									</p>
    -
    -</html><java><![CDATA[// Use the selectFrom() method:
    -BookRecord book = create.selectFrom(BOOK).where(BOOK.ID.equal(1)).fetchOne();
    -
    -// Typesafe field access is now possible:
    -System.out.println("Title       : " + book.getTitle());
    -System.out.println("Published in: " + book.getPublishedIn());]]></java><html>
    -									
    -									<p>
    -										When you use the <reference class="org.jooq.DSLContext" anchor="#selectFrom(org.jooq.Table)" title="DSLContext.selectFrom()"/> method, jOOQ will return the record type supplied with the argument table. Beware though, that you will no longer be able to use any clause that modifies the type of your <reference id="table-expressions" title="table expression"/>. This includes: 
    -									</p>
    -									<ul>
    -                   						<li><reference id="select-clause" title="The SELECT clause"/></li>
    -                   						<li><reference id="join-clause" title="The JOIN clause"/></li>
    -                   					</ul>		
    -								</html></content>
    -							</section>
    -
    -							<section id="record-n">
    -								<title>Record1 to Record{max-row-degree}</title>
    -								<content><html>
    -									<p>
    -										jOOQ's <reference id="row-value-expressions" title="row value expression (or tuple)"/> support has been explained earlier in this manual. It is useful for constructing row value expressions where they can be used in SQL. The same typesafety is also applied to records for degrees up to {max-row-degree}. To express this fact, <reference class="org.jooq.Record"/> is extended by <reference class="org.jooq.Record1"/> to <reference class="org.jooq.Record{max-row-degree}"/>. Apart from the fact that these extensions of the R type can be used throughout the <reference id="dsl-and-non-dsl" title="jOOQ DSL"/>, they also provide a useful API. Here is <reference class="org.jooq.Record2"/>, for instance: 
    -									</p>
    -
    -</html><java><![CDATA[public interface Record2<T1, T2> extends Record {
    -
    -    // Access fields and values as row value expressions
    -    Row2<T1, T2> fieldsRow();
    -    Row2<T1, T2> valuesRow();
    -
    -    // Access fields by index
    -    Field<T1> field1();
    -    Field<T2> field2();
    -
    -    // Access values by index
    -    T1 value1();
    -    T2 value2();
    -}]]></java><html>
    -
    -									<h3>Higher-degree records</h3>
    -									<p>
    -										jOOQ chose to explicitly support degrees up to {max-row-degree} to match Scala's typesafe tuple, function and product support. Unlike Scala, however, jOOQ also supports higher degrees without the additional typesafety. 
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="arrays-maps-and-lists">
    -								<title>Arrays, Maps and Lists</title>
    -								<content><html>
    -									<p>
    -										By default, jOOQ returns an <reference class="org.jooq.Result"/> object, which is essentially a <reference class="java.util.List"/> of <reference class="org.jooq.Record"/>. Often, you will find yourself wanting to transform this result object into a type that corresponds more to your specific needs. Or you just want to list all values of one specific column. Here are some examples to illustrate those use cases:
    -									</p>
    -									
    -</html><java><![CDATA[// Fetching only book titles (the two calls are equivalent):
    -List<String> titles1 = create.select().from(BOOK).fetch().getValues(BOOK.TITLE);
    -List<String> titles2 = create.select().from(BOOK).fetch(BOOK.TITLE);
    -String[]     titles3 = create.select().from(BOOK).fetchArray(BOOK.TITLE);
    -
    -// Fetching only book IDs, converted to Long
    -List<Long> ids1 = create.select().from(BOOK).fetch().getValues(BOOK.ID, Long.class);
    -List<Long> ids2 = create.select().from(BOOK).fetch(BOOK.ID, Long.class);
    -Long[]     ids3 = create.select().from(BOOK).fetchArray(BOOK.ID, Long.class);
    -
    -// Fetching book IDs and mapping each ID to their records or titles
    -Map<Integer, BookRecord> map1 = create.selectFrom(BOOK).fetch().intoMap(BOOK.ID);
    -Map<Integer, BookRecord> map2 = create.selectFrom(BOOK).fetchMap(BOOK.ID);
    -Map<Integer, String>     map3 = create.selectFrom(BOOK).fetch().intoMap(BOOK.ID, BOOK.TITLE);
    -Map<Integer, String>     map4 = create.selectFrom(BOOK).fetchMap(BOOK.ID, BOOK.TITLE);
    -
    -// Group by AUTHOR_ID and list all books written by any author:       
    -Map<Integer, Result<BookRecord>> group1 = create.selectFrom(BOOK).fetch().intoGroups(BOOK.AUTHOR_ID);
    -Map<Integer, Result<BookRecord>> group2 = create.selectFrom(BOOK).fetchGroups(BOOK.AUTHOR_ID);
    -Map<Integer, List<String>>       group3 = create.selectFrom(BOOK).fetch().intoGroups(BOOK.AUTHOR_ID, BOOK.TITLE);
    -Map<Integer, List<String>>       group4 = create.selectFrom(BOOK).fetchGroups(BOOK.AUTHOR_ID, BOOK.TITLE);]]></java><html>									
    -
    -									<p>
    -										Note that most of these convenience methods are available both through <reference class="org.jooq.ResultQuery"/> and <reference class="org.jooq.Result"/>, some are even available through <reference class="org.jooq.Record"/> as well.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="recordhandler">
    -								<title>RecordHandler</title>
    -								<content><html>
    -									<p>
    -										In a more functional operating mode, you might want to write callbacks that receive records from your select statement results in order to do some processing. This is a common data access pattern in Spring's JdbcTemplate, and it is also available in jOOQ. With jOOQ, you can implement your own <reference class="org.jooq.RecordHandler"/> classes and plug them into jOOQ's <reference class="org.jooq.ResultQuery"/>:
    -									</p>
    -									
    -</html><java><![CDATA[// Write callbacks to receive records from select statements
    -create.selectFrom(BOOK)
    -      .orderBy(BOOK.ID)
    -      .fetch()
    -      .into(new RecordHandler<BookRecord>() {
    -          @Override
    -          public void next(BookRecord book) {
    -              Util.doThingsWithBook(book);
    -          }
    -      });
    -      
    -// Or more concisely
    -create.selectFrom(BOOK)
    -      .orderBy(BOOK.ID)
    -      .fetchInto(new RecordHandler<BookRecord>() {...});
    -      
    -// Or even more concisely with Java 8's lambda expressions:
    -create.selectFrom(BOOK)
    -      .orderBy(BOOK.ID)
    -      .fetchInto(book -> { Util.doThingsWithBook(book); }; );
    -]]></java><html>
    -
    -									<p>
    -										See also the manual's section about the <reference id="recordmapper" title="RecordMapper"/>, which provides similar features
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="recordmapper">
    -								<title>RecordMapper</title>
    -								<content><html>
    -									<p>
    -										In a more functional operating mode, you might want to write callbacks that map records from your select statement results in order to do some processing. This is a common data access pattern in Spring's JdbcTemplate, and it is also available in jOOQ. With jOOQ, you can implement your own <reference class="org.jooq.RecordMapper"/> classes and plug them into jOOQ's <reference class="org.jooq.ResultQuery"/>:
    -									</p>
    -									
    -</html><java><![CDATA[// Write callbacks to receive records from select statements
    -List<Integer> ids =
    -create.selectFrom(BOOK)
    -      .orderBy(BOOK.ID)
    -      .fetch()
    -      .map(new RecordMapper<BookRecord, Integer>() {
    -          @Override
    -          public Integer map(BookRecord book) {
    -              return book.getId();
    -          }
    -      });
    -      
    -// Or more concisely
    -create.selectFrom(BOOK)
    -      .orderBy(BOOK.ID)
    -      .fetch(new RecordMapper<BookRecord, Integer>() {...});
    -      
    -// Or even more concisely with Java 8's lambda expressions:
    -create.selectFrom(BOOK)
    -      .orderBy(BOOK.ID)
    -      .fetch(book -> book.getId());
    -]]></java><html>
    -
    -									<p>
    -										See also the manual's section about the <reference id="recordhandler" title="RecordHandler"/>, which provides similar features
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="pojos">
    -								<title>POJOs</title>
    -								<content><html>
    -									<p>
    -										Fetching data in records is fine as long as your application is not really layered, or as long as you're still writing code in the DAO layer. But if you have a more advanced application architecture, you may not want to allow for jOOQ artefacts to leak into other layers. You may choose to write POJOs (Plain Old Java Objects) as your primary DTOs (Data Transfer Objects), without any dependencies on jOOQ's <reference class="org.jooq.Record"/> types, which may even potentially hold a reference to a <reference id="dsl-context" title="Configuration"/>, and thus a JDBC <reference class="java.sql.Connection"/>. Like Hibernate/JPA, jOOQ allows you to operate with POJOs. Unlike Hibernate/JPA, jOOQ does not "attach" those POJOs or create proxies with any magic in them.
    -									</p>
    -									<p>
    -										If you're using jOOQ's <reference id="code-generation" title="code generator"/>, you can configure it to <reference id="codegen-pojos" title="generate POJOs"/> for you, but you're not required to use those generated POJOs. You can use your own.
    -									</p>
    -									
    -									<h3>Using JPA-annotated POJOs</h3>									
    -									<p>
    -										jOOQ tries to find JPA annotations on your POJO types. If it finds any, they are used as the primary source for mapping meta-information. Only the <reference class="javax.persistence.Column"/> annotation is used and understood by jOOQ. An example:
    -									</p>
    -
    -</html><java><![CDATA[// A JPA-annotated POJO class
    -public class MyBook {
    -  @Column(name = "ID")
    -  public int myId;
    -  
    -  @Column(name = "TITLE")
    -  public String myTitle;
    -}
    -
    -// The various "into()" methods allow for fetching records into your custom POJOs:
    -MyBook myBook        = create.select().from(BOOK).fetchAny().into(MyBook.class); 
    -List<MyBook> myBooks = create.select().from(BOOK).fetch().into(MyBook.class);
    -List<MyBook> myBooks = create.select().from(BOOK).fetchInto(MyBook.class);]]></java><html>									
    -									
    -									<p>
    -										Just as with any other JPA implementation, you can put the <reference class="javax.persistence.Column"/> annotation on any class member, including attributes, setters and getters. Please refer to the <reference class="org.jooq.Record" anchor="#into(java.lang.Class)" title="Record.into()"/> Javadoc for more details.
    -									</p>
    -									
    -									<h3>Using simple POJOs</h3>
    -									<p>
    -										If jOOQ does not find any JPA-annotations, columns are mapped to the "best-matching" constructor, attribute or setter. An example illustrates this:
    -									</p>
    -									
    -</html><java><![CDATA[// A "mutable" POJO class
    -public class MyBook1 {
    -  public int id;
    -  public String title;
    -}
    -
    -// The various "into()" methods allow for fetching records into your custom POJOs:
    -MyBook1 myBook        = create.select().from(BOOK).fetchAny().into(MyBook1.class); 
    -List<MyBook1> myBooks = create.select().from(BOOK).fetch().into(MyBook1.class);
    -List<MyBook1> myBooks = create.select().from(BOOK).fetchInto(MyBook1.class);]]></java><html>	
    -
    -									<p>
    -										Please refer to the <reference class="org.jooq.Record" anchor="#into(java.lang.Class)" title="Record.into()"/> Javadoc for more details.
    -									</p>
    -									
    -									<h3>Using "immutable" POJOs</h3>
    -									<p>
    -										If jOOQ does not find any default constructor, columns are mapped to the "best-matching" constructor. This allows for using "immutable" POJOs with jOOQ. An example illustrates this:
    -									</p>
    -									
    -</html><java><![CDATA[// An "immutable" POJO class
    -public class MyBook2 {
    -  public final int id;
    -  public final String title;
    -  
    -  public MyBook2(int id, String title) {
    -    this.id = id;
    -    this.title = title;
    -  }
    -}
    -
    -// With "immutable" POJO classes, there must be an exact match between projected fields and available constructors:
    -MyBook2 myBook        = create.select(BOOK.ID, BOOK.TITLE).from(BOOK).fetchAny().into(MyBook2.class); 
    -List<MyBook2> myBooks = create.select(BOOK.ID, BOOK.TITLE).from(BOOK).fetch().into(MyBook2.class);
    -List<MyBook2> myBooks = create.select(BOOK.ID, BOOK.TITLE).from(BOOK).fetchInto(MyBook2.class);
    -
    -// An "immutable" POJO class with a java.beans.ConstructorProperties annotation
    -public class MyBook3 {
    -  public final String title;
    -  public final int id;
    -  
    -  @ConstructorProperties({ "title", "id"})
    -  public MyBook2(String title, int id) {
    -    this.title = title;
    -    this.id = id;
    -  }
    -}
    -
    -// With annotated "immutable" POJO classes, there doesn't need to be an exact match between fields and constructor arguments.
    -// In the below cases, only BOOK.ID is really set onto the POJO, BOOK.TITLE remains null and BOOK.AUTHOR_ID is ignored
    -MyBook3 myBook        = create.select(BOOK.ID, BOOK.AUTHOR_ID).from(BOOK).fetchAny().into(MyBook3.class); 
    -List<MyBook3> myBooks = create.select(BOOK.ID, BOOK.AUTHOR_ID).from(BOOK).fetch().into(MyBook3.class);
    -List<MyBook3> myBooks = create.select(BOOK.ID, BOOK.AUTHOR_ID).from(BOOK).fetchInto(MyBook3.class);
    -]]></java><html>	
    -									
    -									<p>
    -										Please refer to the <reference class="org.jooq.Record" anchor="#into(java.lang.Class)" title="Record.into()"/> Javadoc for more details.
    -									</p>
    -
    -									<h3>Using proxyable types</h3>
    -									<p>
    -										jOOQ also allows for fetching data into abstract classes or interfaces, or in other words, "proxyable" types. This means that jOOQ will return a <reference class="java.util.HashMap"/> wrapped in a <reference class="java.lang.reflect.Proxy"/> implementing your custom type. An example of this is given here:
    -									</p>
    -									
    -</html><java><![CDATA[// A "proxyable" type
    -public interface MyBook3 {
    -  int getId(); 
    -  void setId(int id);
    -  
    -  String getTitle();
    -  void setTitle(String title);
    -}
    -
    -// The various "into()" methods allow for fetching records into your custom POJOs:
    -MyBook3 myBook        = create.select(BOOK.ID, BOOK.TITLE).from(BOOK).fetchAny().into(MyBook3.class); 
    -List<MyBook3> myBooks = create.select(BOOK.ID, BOOK.TITLE).from(BOOK).fetch().into(MyBook3.class);
    -List<MyBook3> myBooks = create.select(BOOK.ID, BOOK.TITLE).from(BOOK).fetchInto(MyBook3.class);]]></java><html>									
    -
    -									<p>
    -										Please refer to the <reference class="org.jooq.Record" anchor="#into(java.lang.Class)" title="Record.into()"/> Javadoc for more details.
    -									</p>
    -
    -									<h3>Loading POJOs back into Records to store them</h3>
    -									<p>
    -										The above examples show how to fetch data into your own custom POJOs / DTOs. When you have modified the data contained in POJOs, you probably want to store those modifications back to the database. An example of this is given here:
    -									</p>
    -
    -</html><java><![CDATA[// A "mutable" POJO class
    -public class MyBook {
    -  public int id;
    -  public String title;
    -}
    -
    -// Create a new POJO instance
    -MyBook myBook = new MyBook();
    -myBook.id = 10;
    -myBook.title = "Animal Farm";
    -
    -// Load a jOOQ-generated BookRecord from your POJO
    -BookRecord book = create.newRecord(BOOK, myBook); 
    -
    -// Insert it (implicitly)
    -book.store();
    -
    -// Insert it (explicitly)
    -create.executeInsert(book);
    -
    -// or update it (ID = 10)
    -create.executeUpdate(book);]]></java><html>
    -							
    -									<p>
    -										Note: Because of your manual setting of ID = 10, jOOQ's store() method will asume that you want to insert a new record. See the manual's section about <reference id="crud-with-updatablerecords" title="CRUD with UpdatableRecords"/> for more details on this.
    -									</p>
    -											
    -									<h3>Interaction with DAOs</h3>
    -									<p>
    -										If you're using jOOQ's <reference id="code-generation" title="code generator"/>, you can configure it to <reference id="codegen-daos" title="generate DAOs"/> for you. Those DAOs operate on <reference id="codegen-pojos" title="generated POJOs"/>. An example of using such a DAO is given here:
    -									</p>
    -
    -</html><java><![CDATA[// Initialise a Configuration
    -Configuration configuration = new DefaultConfiguration().set(connection).set(SQLDialect.ORACLE);
    -
    -// Initialise the DAO with the Configuration
    -BookDao bookDao = new BookDao(configuration);
    -
    -// Start using the DAO
    -Book book = bookDao.findById(5);
    -
    -// Modify and update the POJO
    -book.setTitle("1984");
    -book.setPublishedIn(1948);
    -bookDao.update(book);
    -
    -// Delete it again
    -bookDao.delete(book);]]></java><html>
    -									
    -									<h3>More complex data structures</h3>
    -									<p>
    -										jOOQ currently doesn't support more complex data structures, the way Hibernate/JPA attempt to map relational data onto POJOs. While future developments in this direction are not excluded, jOOQ claims that generic mapping strategies lead to an enormous additional complexity that only serves very few use cases. You are likely to find a solution using any of jOOQ's various <reference id="fetching" title="fetching modes"/>, with only little boiler-plate code on the client side.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="lazy-fetching">
    -								<title>Lazy fetching</title>
    -								<content><html>
    -									<p>
    -										Unlike JDBC's <reference class="java.sql.ResultSet"/>, jOOQ's <reference class="org.jooq.Result"/> does not represent an open database cursor with various fetch modes and scroll modes, that needs to be closed after usage. jOOQ's results are simple in-memory Java <reference class="java.util.List"/> objects, containing all of the result values. If your result sets are large, or if you have a lot of network latency, you may wish to fetch records one-by-one, or in small chunks. jOOQ supports a <reference class="org.jooq.Cursor"/> type for that purpose. In order to obtain such a reference, use the <reference class="org.jooq.ResultQuery" anchor="#fetchLazy()" title="ResultQuery.fetchLazy()"/> method. An example is given here:
    -									</p>
    -									
    -</html><java><![CDATA[// Obtain a Cursor reference:
    -Cursor<BookRecord> cursor = null;
    -
    -try {
    -    cursor = create.selectFrom(BOOK).fetchLazy();
    -
    -    // Cursor has similar methods as Iterator<R>
    -    while (cursor.hasNext()) {
    -        BookRecord book = cursor.fetchOne();
    -        
    -        Util.doThingsWithBook(book);
    -    }
    -}
    -
    -// Close the cursor and the cursor's underlying JDBC ResultSet
    -finally {
    -    if (cursor != null) {
    -        cursor.close();
    -    }
    -}]]></java><html>
    -
    -									<p>
    -										As a <reference class="org.jooq.Cursor"/> holds an internal reference to an open <reference class="java.sql.ResultSet"/>, it may need to be closed at the end of iteration. If a cursor is completely scrolled through, it will conveniently close the underlying ResultSet. However, you should not rely on that.
    -									</p>
    -									
    -									<h3>Cursors ship with all the other fetch features</h3>
    -									<p>
    -										Like <reference class="org.jooq.ResultQuery"/> or <reference class="org.jooq.Result"/>, <reference class="org.jooq.Cursor"/> gives access to all of the other fetch features that we've seen so far, i.e.
    -									</p>
    -									<ul>
    -										<li><reference id="record-vs-tablerecord" title="Strongly or weakly typed records"/>: Cursors are also typed with the &lt;R&gt; type, allowing to fetch custom, generated <reference class="org.jooq.TableRecord"/> or plain <reference class="org.jooq.Record"/> types.</li>
    -										<li><reference id="recordhandler" title="RecordHandler callbacks"/>: You can use your own <reference class="org.jooq.RecordHandler"/> callbacks to receive lazily fetched records.</li>
    -										<li><reference id="recordmapper" title="RecordMapper callbacks"/>: You can use your own <reference class="org.jooq.RecordMapper"/> callbacks to map lazily fetched records.</li>
    -										<li><reference id="pojos" title="POJOs"/>: You can fetch data into your own custom POJO types.</li>
    -									</ul>
    -								</html></content>
    -							</section>
    -
    -							<section id="many-fetching">
    -								<title>Many fetching</title>
    -								<content><html>
    -									<p>
    -										Many databases support returning several result sets, or cursors, from single queries. An example for this is Sybase ASE's sp_help command:
    -									</p>
    -</html><text><![CDATA[> sp_help 'author'
    -
    -+--------+-----+-----------+-------------+-------------------+
    -|Name    |Owner|Object_type|Object_status|Create_date        |
    -+--------+-----+-----------+-------------+-------------------+
    -|  author|dbo  |user table | -- none --  |Sep 22 2011 11:20PM|
    -+--------+-----+-----------+-------------+-------------------+
    -
    -+-------------+-------+------+----+-----+-----+
    -|Column_name  |Type   |Length|Prec|Scale|...  |
    -+-------------+-------+------+----+-----+-----+
    -|id           |int    |     4|NULL| NULL|    0|
    -|first_name   |varchar|    50|NULL| NULL|    1|
    -|last_name    |varchar|    50|NULL| NULL|    0|
    -|date_of_birth|date   |     4|NULL| NULL|    1|
    -|year_of_birth|int    |     4|NULL| NULL|    1|
    -+-------------+-------+------+----+-----+-----+]]></text><html>
    -
    -
    -									<p>
    -										The correct (and verbose) way to do this with JDBC is as follows:
    -									</p>
    -									
    -</html><java><![CDATA[ResultSet rs = statement.executeQuery();
    -
    -// Repeat until there are no more result sets
    -for (;;) {
    -
    -  // Empty the current result set
    -  while (rs.next()) {
    -    // [ .. do something with it .. ]
    -  }
    -
    -  // Get the next result set, if available
    -  if (statement.getMoreResults()) {
    -    rs = statement.getResultSet();
    -  }
    -  else {
    -    break;
    -  }
    -}
    -
    -// Be sure that all result sets are closed
    -statement.getMoreResults(Statement.CLOSE_ALL_RESULTS);
    -statement.close();]]></java><html>
    -
    -									<p>
    -										As previously discussed in the chapter about <reference id="comparison-with-jdbc" title="differences between jOOQ and JDBC"/>, jOOQ does not rely on an internal state of any JDBC object, which is "externalised" by Javadoc. Instead, it has a straight-forward API allowing you to do the above in a one-liner: 
    -									</p>
    -									
    -</html><java><![CDATA[// Get some information about the author table, its columns, keys, indexes, etc
    -List<Result<Record>> results = create.fetchMany("sp_help 'author'");]]></java><html>
    -
    -									<p>
    -										Using generics, the resulting structure is immediately clear.
    -									</p>									
    -								</html></content>
    -							</section>
    -
    -							<section id="later-fetching">
    -								<title>Later fetching</title>
    -								<content><html>
    -									<p>
    -										Some queries take very long to execute, yet they are not crucial for the continuation of the main program. For instance, you could be generating a complicated report in a Swing application, and while this report is being calculated in your database, you want to display a background progress bar, allowing the user to pursue some other work. This can be achived simply with jOOQ, by creating a <reference class="org.jooq.FutureResult"/>, a type that extends <reference class="java.util.concurrent.Future"/>. An example is given here:
    -									</p>
    -									
    -</html><java><![CDATA[// Spawn off this query in a separate process:
    -FutureResult<BookRecord> future = create.selectFrom(BOOK).where(... complex predicates ...).fetchLater();
    -
    -// This example actively waits for the result to be done
    -while (!future.isDone()) {
    -    progressBar.increment(1);
    -    Thread.sleep(50);
    -}
    -
    -// The result should be ready, now
    -Result<BookRecord> result = future.get();]]></java><html>
    -
    -									<p>
    -										Note, that instead of letting jOOQ spawn a new thread, you can also provide jOOQ with your own <reference class="java.util.concurrent.ExecutorService"/>:
    -									</p>
    -									
    -</html><java><![CDATA[// Spawn off this query in a separate process:
    -ExecutorService service = // [...]
    -FutureResult<BookRecord> future = create.selectFrom(BOOK).where(... complex predicates ...).fetchLater(service);]]></java></content>
    -							</section>
    -
    -							<section id="resultset-fetching">
    -								<title>ResultSet fetching</title>
    -								<content><html>
    -									<p>
    -										When interacting with legacy applications, you may prefer to have jOOQ return a <reference class="java.sql.ResultSet"/>, rather than jOOQ's own <reference class="org.jooq.Result"/> types. This can be done simply, in two ways:
    -									</p>
    -									
    -</html><java><![CDATA[// jOOQ's Cursor type exposes the underlying ResultSet:
    -ResultSet rs1 = create.selectFrom(BOOK).fetchLazy().resultSet();
    -
    -// But you can also directly access that ResultSet from ResultQuery:
    -ResultSet rs2 = create.selectFrom(BOOK).fetchResultSet();
    -
    -// Don't forget to close these, though!
    -rs1.close();
    -rs2.close();]]></java><html>
    -
    -									<h3>Transform jOOQ's Result into a JDBC ResultSet</h3>
    -									<p>
    -										Instead of operating on a JDBC ResultSet holding an open resource from your database, you can also let jOOQ's <reference class="org.jooq.Result"/> wrap itself in a <reference class="java.sql.ResultSet"/>. The advantage of this is that the so-created ResultSet has no open connection to the database. It is a completely in-memory ResultSet:								
    -									</p>
    -
    -</html><java><![CDATA[// Transform a jOOQ Result into a ResultSet
    -Result<BookRecord> result = create.selectFrom(BOOK).fetch();
    -ResultSet rs = result.intoResultSet();]]></java><html>
    -
    -									<h3>The inverse: Fetch data from a legacy ResultSet using jOOQ</h3>
    -									<p>
    -										The inverse of the above is possible too. Maybe, a legacy part of your application produces JDBC <reference class="java.sql.ResultSet"/>, and you want to turn them into a <reference class="org.jooq.Result"/>: 
    -									</p>
    -
    -</html><java><![CDATA[// Transform a JDBC ResultSet into a jOOQ Result
    -ResultSet rs = connection.createStatement().executeQuery("SELECT * FROM BOOK");
    -
    -// As a Result:
    -Result<Record> result = create.fetch(rs);
    -
    -// As a Cursor
    -Cursor<Record> cursor = create.fetchLazy(rs);]]></java><html>
    -
    -                                    <p>
    -                                        You can also tighten the interaction with jOOQ's data type system and <reference id="data-type-conversion" title="data type conversion"/> features, by passing the record type to the above fetch methods:
    -                                    </p>
    -                                    
    -</html><java><![CDATA[// Pass an array of types:
    -Result<Record> result = create.fetch    (rs, Integer.class, String.class);
    -Cursor<Record> result = create.fetchLazy(rs, Integer.class, String.class);
    -
    -// Pass an array of data types:
    -Result<Record> result = create.fetch    (rs, SQLDataType.INTEGER, SQLDataType.VARCHAR);
    -Cursor<Record> result = create.fetchLazy(rs, SQLDataType.INTEGER, SQLDataType.VARCHAR);
    -
    -// Pass an array of fields:
    -Result<Record> result = create.fetch    (rs, BOOK.ID, BOOK.TITLE);
    -Cursor<Record> result = create.fetchLazy(rs, BOOK.ID, BOOK.TITLE);]]></java><html>
    -
    -                                    <p>
    -                                        If supplied, the additional information is used to override the information obtained from the <reference class="java.sql.ResultSet" title="ResultSet"/>'s <reference class="java.sql.ResultSetMetaData"/> information.
    -                                    </p>                                    
    -								</html></content>
    -							</section>
    -
    -							<section id="data-type-conversion">
    -								<title>Data type conversion</title>
    -								<content><html>
    -									<p>
    -										Apart from a few extra features (<reference id="codegen-udts" title="user-defined types"/>), jOOQ only supports basic types as supported by the JDBC API. In your application, you may choose to transform these data types into your own ones, without writing too much boiler-plate code. This can be done using jOOQ's <reference class="org.jooq.Converter"/> types. A converter essentially allows for two-way conversion between two Java data types &lt;T&gt; and &lt;U&gt;. By convention, the &lt;T&gt; type corresponds to the type in your database whereas the &gt;U&gt; type corresponds to your own user type. The Converter API is given here:
    -									</p>
    -									
    -</html><java><![CDATA[public interface Converter<T, U> extends Serializable {
    -
    -    /**
    -     * Convert a database object to a user object
    -     */
    -    U from(T databaseObject);
    -
    -    /**
    -     * Convert a user object to a database object
    -     */
    -    T to(U userObject);
    -
    -    /**
    -     * The database type
    -     */
    -    Class<T> fromType();
    -
    -    /**
    -     * The user type
    -     */
    -    Class<U> toType();
    -}]]></java><html>
    -
    -									<p>
    -										Such a converter can be used in many parts of the jOOQ API. Some examples have been illustrated in the manual's section about <reference id="fetching" title="fetching"/>.
    -									</p>
    -									
    -									<h3>A Converter for GregorianCalendar</h3>
    -									<p>
    -										Here is a some more elaborate example involving a Converter for <reference class="java.util.GregorianCalendar"/>: 
    -									</p>
    -									
    -</html><java><![CDATA[// You may prefer Java Calendars over JDBC Timestamps
    -public class CalendarConverter implements Converter<Timestamp, GregorianCalendar> {
    -
    -    @Override
    -    public GregorianCalendar from(Timestamp databaseObject) {
    -        GregorianCalendar calendar = (GregorianCalendar) Calendar.getInstance();
    -        calendar.setTimeInMillis(databaseObject.getTime());
    -        return calendar;
    -    }
    -
    -    @Override
    -    public Timestamp to(GregorianCalendar userObject) {
    -        return new Timestamp(userObject.getTime().getTime());
    -    }
    -
    -    @Override
    -    public Class<Timestamp> fromType() {
    -        return Timestamp.class;
    -    }
    -
    -    @Override
    -    public Class<GregorianCalendar> toType() {
    -        return GregorianCalendar.class;
    -    }
    -}
    -
    -// Now you can fetch calendar values from jOOQ's API:
    -List<GregorianCalendar> dates1 = create.selectFrom(BOOK).fetch().getValues(BOOK.PUBLISHING_DATE, new CalendarConverter());
    -List<GregorianCalendar> dates2 = create.selectFrom(BOOK).fetch(BOOK.PUBLISHING_DATE, new CalendarConverter());
    -]]></java><html>									
    -									
    -									<h3>Enum Converters</h3>
    -									<p>
    -										jOOQ ships with a built-in default <reference class="org.jooq.impl.EnumConverter"/>, that you can use to map VARCHAR values to enum literals or NUMBER values to enum ordinals (both modes are supported). Let's say, you want to map a YES / NO / MAYBE column to a custom Enum:
    -									</p>
    -									
    -</html><java><![CDATA[// Define your Enum
    -public enum YNM {
    -    YES, NO, MAYBE
    -}
    -
    -// Define your converter
    -public class YNMConverter extends EnumConverter<String, YNM> {
    -    public YNMConverter() {
    -        super(String.class, YNM.class);
    -    }
    -}
    -
    -// And you're all set for converting records to your custom Enum:
    -for (BookRecord book : create.selectFrom(BOOK).fetch()) {
    -    switch (book.getValue(BOOK.I_LIKE, new YNMConverter())) {
    -        case YES:    System.out.println("I like this book             : " + book.getTitle()); break;
    -        case NO:     System.out.println("I didn't like this book      : " + book.getTitle()); break;
    -        case MAYBE:  System.out.println("I'm not sure about this book : " + book.getTitle()); break;
    -    }
    -}]]></java><html>
    -									
    -									<h3>Using Converters in generated source code</h3>
    -									<p>
    -										jOOQ also allows for generated source code to reference your own custom converters, in order to permanently replace a <reference id="table-columns" title="table column's"/> &lt;T&gt; type by your own, custom &lt;U&gt; type. See the manual's section about <reference id="custom-data-types" title="custom data types"/> for details.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="interning">
    -								<title>Interning data</title>
    -								<content><html>
    -									<p>
    -										SQL result tables are not optimal in terms of used memory as they are not designed to represent hierarchical data as produced by <code>JOIN</code> operations. Specifically, <code>FOREIGN KEY</code> values may repeat themselves unnecessarily:
    -									</p>
    -
    -</html><text>+----+-----------+--------------+
    -| ID | AUTHOR_ID | TITLE        |
    -+----+-----------+--------------+
    -|  1 |         1 | 1984         |
    -|  2 |         1 | Animal Farm  |
    -|  3 |         2 | O Alquimista |
    -|  4 |         2 | Brida        |
    -+----+-----------+--------------+</text><html>
    -
    -									<p>
    -										Now, if you have millions of records with only few distinct values for <code>AUTHOR_ID</code>, you may not want to hold references to distinct (but equal) <reference class="java.lang.Integer"/> objects. This is specifically true for IDs of type <reference class="java.util.UUID"/> or string representations thereof. jOOQ allows you to "intern" those values:
    -									</p>
    -
    -</html><java><![CDATA[// Interning data after fetching
    -Result<?> r1 = create.select(BOOK.ID, BOOK.AUTHOR_ID, BOOK.TITLE)
    -                     .from(BOOK)
    -                     .join(AUTHOR).on(BOOK.AUTHOR_ID.eq(AUTHOR.ID))
    -                     .fetch()
    -                     .intern(BOOK.AUTHOR_ID);
    -
    -// Interning data while fetching
    -Result<?> r1 = create.select(BOOK.ID, BOOK.AUTHOR_ID, BOOK.TITLE)
    -                     .from(BOOK)
    -                     .join(AUTHOR).on(BOOK.AUTHOR_ID.eq(AUTHOR.ID))
    -                     .intern(BOOK.AUTHOR_ID)
    -                     .fetch();]]></java><html>
    -                     
    -                     				<p>
    -                     					You can specify as many fields as you want for interning. The above has the following effect:
    -                     				</p>
    -                     				
    -                     				<ul>
    -                     					<li>If the interned Field is of type <reference class="java.lang.String"/>, then <reference class="java.lang.String" anchor="#intern()" title="String.intern()"/> is called upon each string</li>
    -                     					<li>If the interned Field is of any other type, then the call is ignored</li>
    -                     				</ul>
    -                     				
    -                     				<p>
    -                     					Future versions of jOOQ will implement interning of data for non-String data types by collecting values in <reference class="java.util.Set"/>, removing duplicate instances.
    -                     				</p>
    -                     				
    -                     				<p>
    -                     					Note, that jOOQ will not use interned data for identity comparisons: <code>string1 == string2</code>. Interning is used only to reduce the memory footprint of <reference class="org.jooq.Result"/> objects.
    -                     				</p>
    -								</html></content>
    -							</section>							
    -						</sections>
    -					</section>
    -					
    -					<section id="statement-type">
    -						<title>Static statements vs. Prepared Statements</title>
    -						<content><html>
    -							<p>
    -								With JDBC, you have full control over your SQL statements. You can decide yourself, if you want to execute a static <reference class="java.sql.Statement"/> without bind values, or a <reference class="java.sql.PreparedStatement"/> with (or without) bind values. But you have to decide early, which way to go. And you'll have to prevent SQL injection and syntax errors manually, when inlining your bind variables.
    -							</p>
    -							<p>
    -								With jOOQ, this is easier. As a matter of fact, it is plain simple. With jOOQ, you can just set a flag in your <reference id="dsl-context" title="Configuration's"/> <reference id="custom-settings" title="Settings"/>, and all queries produced by that configuration will be executed as static statements, with all bind values inlined. An example is given here:
    -							</p>
    -							
    -</html><code-pair>
    -<sql><![CDATA[
    -
    -
    -
    -
    -
    -
    --- These statements are rendered by the two factories:
    -SELECT ? FROM DUAL WHERE ? = ?
    -SELECT 1 FROM DUAL WHERE 1 = 1]]></sql><java><![CDATA[// This DSLContext executes PreparedStatements
    -DSLContext prepare = DSL.using(connection, SQLDialect.ORACLE);
    -
    -// This DSLContext executes static Statements
    -DSLContext inlined = DSL.using(connection, SQLDialect.ORACLE, 
    -  new Settings().withStatementType(StatementType.STATIC_STATEMENT));
    -  
    -prepare.select(val(1)).where(val(1).equal(1)).fetch();
    -inlined.select(val(1)).where(val(1).equal(1)).fetch();]]></java>
    -</code-pair><html>
    -
    -							<h3>Reasons for choosing one or the other</h3>
    -							<p>
    -								Not all databases are equal. Some databases show improved performance if you use <reference class="java.sql.PreparedStatement"/>, as the database will then be able to re-use execution plans for identical SQL statements, regardless of actual bind values. This heavily improves the time it takes for soft-parsing a SQL statement. In other situations, assuming that bind values are irrelevant for SQL execution plans may be a bad idea, as you might run into "bind value peeking" issues. You may be better off spending the extra cost for a new hard-parse of your SQL statement and instead having the database fine-tune the new plan to the concrete bind values.
    -							</p>
    -							<p>
    -								Whichever aproach is more optimal for you cannot be decided by jOOQ. In most cases, prepared statements are probably better. But you always have the option of forcing jOOQ to render inlined bind values.
    -							</p>
    -							
    -							<h3>Inlining bind values on a per-bind-value basis</h3>
    -							<p>
    -								Note that you don't have to inline all your bind values at once. If you know that a bind value is not really a variable and should be inlined explicitly, you can do so by using <reference class="org.jooq.impl.DSL" anchor="#inline(Object)" title="DSL.inline()"/>, as documented in the manual's section about <reference id="inlined-parameters" title="inlined parameters"/>
    -							</p>
    -						</html></content>
    -					</section>
    -
    -					<section id="reusing-statements">
    -						<title>Reusing a Query's PreparedStatement</title>
    -						<content><html>
    -							<p>
    -								As previously discussed in the chapter about <reference id="comparison-with-jdbc" title="differences between jOOQ and JDBC"/>, reusing PreparedStatements is handled a bit differently in jOOQ from how it is handled in JDBC
    -							</p>
    -							
    -							<h3>Keeping open PreparedStatements with JDBC</h3>
    -							<p>
    -								With JDBC, you can easily reuse a <reference class="java.sql.PreparedStatement"/> by not closing it between subsequent executions. An example is given here:
    -							</p>
    -							
    -</html><java><![CDATA[PreparedStatement stmt = null;
    -ResultSet rs1 = null;
    -ResultSet rs2 = null;
    -
    -try {
    -    // Execute the statement and fetch a first ResultSet
    -    stmt = connection.prepareStatement("SELECT 1 FROM DUAL");
    -    rs1  = stmt.executeQuery();
    -
    -    // Without closing the statement, execute it again to fetch another ResultSet
    -    rs2  = stmt.executeQuery();
    -}
    -finally {
    -    try { rs1.close();  } catch (Exception ignore) {}
    -    try { rs2.close();  } catch (Exception ignore) {}
    -    try { stmt.close(); } catch (Exception ignore) {}
    -}]]></java><html>
    -
    -							<p>
    -								The above technique can be quite useful when you want to reuse expensive database resources. This can be the case when your statement is executed very frequently and your database would take non-negligible time to soft-parse the prepared statement and generate a new statement / cursor resource.
    -							</p>
    -							
    -							<h3>Keeping open PreparedStatements with jOOQ</h3>
    -							<p>
    -								This is also modeled in jOOQ. However, the difference to JDBC is that closing a statement is the default action, whereas keeping it open has to be configured explicitly. This is better than JDBC, because the default action should be the one that is used most often. Keeping open statements is rarely done in average applications. Here's an example of how to keep open PreparedStatements with jOOQ:
    -							</p>
    -							
    -</html><java><![CDATA[// Create a query which is configured to keep its underlying PreparedStatement open
    -ResultQuery<Record> query = create.selectOne().keepStatement(true);
    -
    -// Execute the query twice, against the same underlying PreparedStatement:
    -try {
    -    Result<Record> result1 = query.fetch(); // This will lazily create a new PreparedStatement
    -    Result<Record> result2 = query.fetch(); // This will reuse the previous PreparedStatement
    -}
    -
    -// ... but now, you must not forget to close the query
    -finally {
    -    query.close();
    -}]]></java><html>
    -
    -							<p>
    -								The above example shows how a query can be executed twice against the same underlying PreparedStatement. Unlike in other execution scenarios, you must not forget to close this query now
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="batch-execution">
    -						<title>Using JDBC batch operations</title>
    -						<content><html>
    -							<p>
    -								With JDBC, you can easily execute several statements at once using the addBatch() method. Essentially, there are two modes in JDBC
    -							</p>
    -
    -							<ul>
    -								<li>Execute several queries without bind values</li>
    -								<li>Execute one query several times with bind values</li>
    -							</ul>
    -
    -							<p>
    -								In code, this looks like the following snippet:
    -							</p>
    -</html><java><![CDATA[// 1. several queries
    -// ------------------
    -Statement stmt = connection.createStatement();
    -stmt.addBatch("INSERT INTO author(id, first_name, last_name) VALUES (1, 'Erich', 'Gamma')");
    -stmt.addBatch("INSERT INTO author(id, first_name, last_name) VALUES (2, 'Richard', 'Helm')");
    -stmt.addBatch("INSERT INTO author(id, first_name, last_name) VALUES (3, 'Ralph', 'Johnson')");
    -stmt.addBatch("INSERT INTO author(id, first_name, last_name) VALUES (4, 'John', 'Vlissides')");
    -int[] result = stmt.executeBatch();
    -
    -// 2. a single query
    -// -----------------
    -PreparedStatement stmt = connection.prepareStatement("INSERT INTO author(id, first_name, last_name) VALUES (?, ?, ?)");
    -stmt.setInt(1, 1);
    -stmt.setString(2, "Erich");
    -stmt.setString(3, "Gamma");
    -stmt.addBatch();
    -
    -stmt.setInt(1, 2);
    -stmt.setString(2, "Richard");
    -stmt.setString(3, "Helm");
    -stmt.addBatch();
    -
    -stmt.setInt(1, 3);
    -stmt.setString(2, "Ralph");
    -stmt.setString(3, "Johnson");
    -stmt.addBatch();
    -
    -stmt.setInt(1, 4);
    -stmt.setString(2, "John");
    -stmt.setString(3, "Vlissides");
    -stmt.addBatch();
    -
    -int[] result = stmt.executeBatch();]]></java><html>
    -
    -
    -							<h3>This will also be supported by jOOQ</h3>
    -							<p>
    -								jOOQ supports executing queries in batch mode as follows:
    -							</p>
    -							
    -</html><java><![CDATA[// 1. several queries
    -// ------------------
    -create.batch(
    -	create.insertInto(AUTHOR, ID, FIRST_NAME, LAST_NAME).values(1, "Erich", "Gamma"),
    -	create.insertInto(AUTHOR, ID, FIRST_NAME, LAST_NAME).values(2, "Richard", "Helm"),
    -	create.insertInto(AUTHOR, ID, FIRST_NAME, LAST_NAME).values(3, "Ralph", "Johnson"),
    -	create.insertInto(AUTHOR, ID, FIRST_NAME, LAST_NAME).values(4, "John", "Vlissides"))
    -.execute();
    -
    -// 2. a single query
    -// -----------------
    -create.batch(create.insertInto(AUTHOR, ID, FIRST_NAME, LAST_NAME).values((Integer) null, null, null))
    -      .bind(1, "Erich", "Gamma")
    -      .bind(2, "Richard", "Helm")
    -      .bind(3, "Ralph", "Johnson")
    -      .bind(4, "John", "Vlissides")
    -      .execute();]]></java><html>
    -      
    -                            <p>
    -                                When creating a batch execution with a single query and multiple bind values, you will still have to provide jOOQ with dummy bind values for the original query. In the above example, these are set to <code>null</code>. For subsequent calls to <code>bind()</code>, there will be no type safety provided by jOOQ.
    -                            </p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="sequence-execution">
    -						<title>Sequence execution</title>
    -						<content><html>
    -							<p>
    -								Most databases support sequences of some sort, to provide you with unique values to be used for primary keys and other enumerations. If you're using jOOQ's <reference id="code-generation" title="code generator"/>, it will generate a sequence object per sequence for you. There are two ways of using such a sequence object:
    -							</p>
    -
    -							<h3>Standalone calls to sequences</h3>
    -							<p>
    -								Instead of actually phrasing a select statement, you can also use the <reference id="dsl-context" title="DSLContext's"/> convenience methods:
    -							</p>							
    -							
    -</html><java><![CDATA[// Fetch the next value from a sequence
    -BigInteger nextID = create.nextval(S_AUTHOR_ID);
    -
    -// Fetch the current value from a sequence
    -BigInteger currID = create.currval(S_AUTHOR_ID);]]></java><html>
    -							
    -							<h3>Inlining sequence references in SQL</h3>
    -							<p>
    -								You can inline sequence references in jOOQ SQL statements. The following are examples of how to do that:
    -							</p>
    -							
    -</html><java><![CDATA[// Reference the sequence in a SELECT statement:
    -BigInteger nextID = create.select(s).fetchOne(S_AUTHOR_ID.nextval());
    -
    -// Reference the sequence in an INSERT statement:
    -create.insertInto(AUTHOR, AUTHOR.ID, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .values(S_AUTHOR_ID.nextval(), val("William"), val("Shakespeare"));
    -]]></java><html>
    -
    -							<p>
    -								For more info about inlining sequence references in SQL statements, please refer to the manual's section about <reference id="sequences-and-serials" title="sequences and serials"/>.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="stored-procedures">
    -						<title>Stored procedures and functions</title>
    -						<content><html>
    -							<p>
    -								Many RDBMS support the concept of "routines", usually calling them procedures and/or functions. These concepts have been around in programming languages for a while, also outside of databases. Famous languages distinguishing procedures from functions are:
    -							</p>
    -							<ul>
    -								<li>Ada</li>
    -								<li>BASIC</li>
    -								<li>Pascal</li>
    -								<li>etc...</li>
    -							</ul>
    -							<p>
    -								The general distinction between (stored) procedures and (stored) functions can be summarised like this:
    -							</p>
    -							
    -							<h3>Procedures</h3>
    -							<ul>
    -								<li>Are called using JDBC CallableStatement</li>
    -								<li>Have no return value</li>
    -								<li>Usually support OUT parameters</li>
    -							</ul>
    -							
    -							<h3>Functions</h3>
    -							<ul>
    -								<li>Can be used in SQL statements</li>
    -								<li>Have a return value</li>
    -								<li>Usually don't support OUT parameters</li>
    -							</ul>
    -							
    -							<h3>Exceptions to these rules</h3>
    -							<ul>
    -								<li>DB2, H2, and HSQLDB don't allow for JDBC escape syntax when calling functions. Functions must be used in a SELECT statement</li>
    -								<li>H2 only knows functions (without OUT parameters)</li>
    -								<li>Oracle functions may have OUT parameters</li>
    -								<li>Oracle knows functions that must not be used in SQL statements for transactional reasons</li>
    -								<li>Postgres only knows functions (with all features combined). OUT parameters can also be interpreted as return values, which is quite elegant/surprising, depending on your taste</li>
    -								<li>The Sybase jconn3 JDBC driver doesn't handle null values correctly when using the JDBC escape syntax on functions</li>
    -							</ul>
    -							<p>
    -								In general, it can be said that the field of routines (procedures / functions) is far from being standardised in modern RDBMS even if the SQL:2008 standard specifies things quite well. Every database has its ways and JDBC only provides little abstraction over the great variety of procedures / functions implementations, especially when advanced data types such as cursors / UDT's / arrays are involved.
    -							</p>
    -							<p>
    -								To simplify things a little bit, jOOQ handles both procedures and functions the same way, using a more general <reference class="org.jooq.Routine"/> type.
    -							</p>
    -							
    -							<h3>Using jOOQ for standalone calls to stored procedures and functions</h3>
    -							<p>
    -								If you're using jOOQ's <reference id="code-generation" title="code generator"/>, it will generate <reference class="org.jooq.Routine"/> objects for you. Let's consider the following example:
    -							</p>
    -							
    -</html><sql><![CDATA[-- Check whether there is an author in AUTHOR by that name and get his ID
    -CREATE OR REPLACE PROCEDURE author_exists (author_name VARCHAR2, result OUT NUMBER, id OUT NUMBER);]]></sql><html>
    -
    -							<p>
    -								The generated artefacts can then be used as follows:
    -							</p>
    -							
    -</html><java><![CDATA[// Make an explicit call to the generated procedure object:
    -AuthorExists procedure = new AuthorExists();
    -
    -// All IN and IN OUT parameters generate setters
    -procedure.setAuthorName("Paulo");
    -procedure.execute(configuration);
    -
    -// All OUT and IN OUT parameters generate getters
    -assertEquals(new BigDecimal("1"), procedure.getResult());
    -assertEquals(new BigDecimal("2"), procedure.getId();]]></java><html>							
    -							
    -							<p>
    -								But you can also call the procedure using a generated convenience method in a global Routines class:
    -							</p>
    -
    -</html><java><![CDATA[// The generated Routines class contains static methods for every procedure.
    -// Results are also returned in a generated object, holding getters for every OUT or IN OUT parameter.
    -AuthorExists result = Routines.authorExists("Paulo");
    -
    -// All OUT and IN OUT parameters generate getters
    -assertEquals(new BigDecimal("1"), procedure.getResult());
    -assertEquals(new BigDecimal("2"), procedure.getId();]]></java><html>			
    -
    -							<p>
    -								For more details about <reference id="code-generation" title="code generation"/> for procedures, see the manual's section about <reference id="codegen-procedures" title="procedures and code generation"/>.
    -							</p>				
    -							
    -							<h3>Inlining stored function references in SQL</h3>
    -							<p>
    -								Unlike procedures, functions can be inlined in SQL statements to generate <reference id="column-expressions" title="column expressions"/> or <reference id="table-expressions" title="table expressions"/>, if you're using <reference id="array-and-cursor-unnesting" title="unnesting operators"/>. Assume you have a function like this:
    -							</p>
    -
    -</html><sql><![CDATA[-- Check whether there is an author in AUTHOR by that name and get his ID
    -CREATE OR REPLACE FUNCTION author_exists (author_name VARCHAR2) RETURN NUMBER;]]></sql><html>
    -							
    -							<p>
    -								The generated artefacts can then be used as follows:
    -							</p>
    -							
    -</html><code-pair>
    -<sql><![CDATA[-- This is the rendered SQL
    -
    -SELECT AUTHOR_EXISTS('Paulo') FROM DUAL]]></sql><java><![CDATA[// Use the static-imported method from Routines:
    -boolean exists = 
    -create.select(authorExists("Paulo")).fetchOne(0, boolean.class);]]></java>							
    -</code-pair><html>
    -							
    -							<p>
    -								For more info about inlining stored function references in SQL statements, please refer to the manual's section about <reference id="user-defined-functions" title="user-defined functions"/>.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="oracle-packages">
    -								<title>Oracle Packages</title>
    -								<content><html>
    -									<p>
    -										Oracle uses the concept of a PACKAGE to group several procedures/functions into a sort of namespace. The <a href="http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt" title="SQL 92 standard">SQL 92 standard</a> talks about "modules", to represent this concept, even if this is rarely implemented as such. This is reflected in jOOQ by the use of Java sub-packages in the <reference id="code-generation" title="source code generation"/> destination package. Every Oracle package will be reflected by
    -									</p>
    -									<ul>
    -										<li>A Java package holding classes for formal Java representations of the procedure/function in that package</li>
    -										<li>A Java class holding convenience methods to facilitate calling those procedures/functions</li>
    -									</ul>
    -									<p>
    -										Apart from this, the generated source code looks exactly like the one for standalone procedures/functions.
    -									</p>
    -									<p>
    -										For more details about <reference id="code-generation" title="code generation"/> for procedures and packages see the manual's section about <reference id="codegen-procedures" title="procedures and code generation"/>.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="oracle-member-procedures">
    -								<title>Oracle member procedures</title>
    -								<content><html>
    -									<p>
    -										Oracle UDTs can have object-oriented structures including member functions and procedures. With Oracle, you can do things like this:
    -									</p>
    -									
    -</html><sql><![CDATA[CREATE OR REPLACE TYPE u_author_type AS OBJECT (
    -  id NUMBER(7),
    -  first_name VARCHAR2(50),
    -  last_name VARCHAR2(50),
    -
    -  MEMBER PROCEDURE LOAD,
    -  MEMBER FUNCTION counBOOKs RETURN NUMBER
    -)
    -
    --- The type body is omitted for the example]]></sql><html>
    -
    -									<p>
    -										These member functions and procedures can simply be mapped to Java methods:
    -									</p>
    -
    -</html><java><![CDATA[// Create an empty, attached UDT record from the DSLContext
    -UAuthorType author = create.newRecord(U_AUTHOR_TYPE);
    -
    -// Set the author ID and load the record using the LOAD procedure
    -author.setId(1);
    -author.load();
    -
    -// The record is now updated with the LOAD implementation's content
    -assertNotNull(author.getFirstName());
    -assertNotNull(author.getLastName());]]></java><html>
    -
    -									<p>
    -										For more details about <reference id="code-generation" title="code generation"/> for UDTs see the manual's section about <reference id="codegen-udts" title="user-defined types and code generation"/>.
    -									</p>								
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -				    <section id="exporting">
    -						<title>Exporting to XML, CSV, JSON, HTML, Text</title>
    -						<content><html>
    -							<p>
    -								If you are using jOOQ for scripting purposes or in a slim, unlayered application server, you might be interested in using jOOQ's exporting functionality (see also the <reference id="importing" title="importing functionality"/>). You can export any Result&lt;Record&gt; into the formats discussed in the subsequent chapters of the manual
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="exporting-xml">
    -								<title>Exporting XML</title>
    -								<content><java>// Fetch books and format them as XML
    -String xml = create.selectFrom(BOOK).fetch().formatXML();</java><html>
    -
    -									<p>
    -										The above query will result in an XML document looking like the following one:
    -									</p>
    -
    -</html><xml><![CDATA[<result xmlns="http://www.jooq.org/xsd/jooq-export-{export-xsd-version}.xsd">
    -  <fields>
    -    <field name="ID" type="INTEGER"/>
    -    <field name="AUTHOR_ID" type="INTEGER"/>
    -    <field name="TITLE" type="VARCHAR"/>
    -  </fields>
    -  <records>
    -    <record>
    -      <value field="ID">1</value>
    -      <value field="AUTHOR_ID">1</value>
    -      <value field="TITLE">1984</value>
    -    </record>
    -    <record>
    -      <value field="ID">2</value>
    -      <value field="AUTHOR_ID">1</value>
    -      <value field="TITLE">Animal Farm</value>
    -    </record>
    -  </records>
    -</result>]]></xml><html>
    -
    -									<p>
    -										The same result as an <reference class="org.w3c.dom.Document"/> can be obtained using the Result.intoXML() method:
    -									</p>
    -
    -
    -</html><java>// Fetch books and format them as XML
    -Document xml = create.selectFrom(BOOK).fetch().intoXML();</java><html>
    -
    -									<p>
    -										See the XSD schema definition here, for a formal definition of the XML export format:<br/>
    -										<a href="http://www.jooq.org/xsd/jooq-export-{export-xsd-version}.xsd">http://www.jooq.org/xsd/jooq-export-{export-xsd-version}.xsd</a>
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="exporting-csv">
    -								<title>Exporting CSV</title>
    -								<content><java>// Fetch books and format them as CSV
    -String csv = create.selectFrom(BOOK).fetch().formatCSV();</java><html>
    -
    -									<p>
    -										The above query will result in a CSV document looking like the following one:
    -									</p>
    -
    -</html><text>ID,AUTHOR_ID,TITLE
    -1,1,1984
    -2,1,Animal Farm</text><html>
    -
    -									<p>
    -										In addition to the standard behaviour, you can also specify a separator character, as well as a special string to represent NULL values (which cannot be represented in standard CSV):
    -									</p>
    -
    -</html><java>// Use ";" as the separator character
    -String csv = create.selectFrom(BOOK).fetch().formatCSV(';');
    -
    -// Specify "{null}" as a representation for NULL values
    -String csv = create.selectFrom(BOOK).fetch().formatCSV(';', "{null}");</java></content>
    -							</section>
    -
    -							<section id="exporting-json">
    -								<title>Exporting JSON</title>
    -								<content><java>// Fetch books and format them as JSON
    -String json = create.selectFrom(BOOK).fetch().formatJSON();</java><html>
    -
    -									<p>
    -										The above query will result in a JSON document looking like the following one:
    -									</p>
    -
    -</html><text>{"fields":[{"name":"field-1","type":"type-1"},
    -           {"name":"field-2","type":"type-2"},
    -           ...,
    -           {"name":"field-n","type":"type-n"}],
    - "records":[[value-1-1,value-1-2,...,value-1-n],
    -            [value-2-1,value-2-2,...,value-2-n]]}</text><html>
    -             
    -             						<p>
    -             							Note: This format has changed in jOOQ 2.6.0
    -             						</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="exporting-html">
    -								<title>Exporting HTML</title>
    -								<content><java>// Fetch books and format them as HTML
    -String html = create.selectFrom(BOOK).fetch().formatHTML();</java><html>
    -
    -									<p>
    -										The above query will result in an HTML document looking like the following one
    -									</p>
    -
    -</html><xml><![CDATA[<table>
    -  <thead>
    -    <tr>
    -      <th>ID</th>
    -      <th>AUTHOR_ID</th>
    -      <th>TITLE</th>
    -    </tr>
    -  </thead>
    -  <tbody>
    -    <tr>
    -      <td>1</td>
    -      <td>1</td>
    -      <td>1984</td>
    -    </tr>
    -    <tr>
    -      <td>2</td>
    -      <td>1</td>
    -      <td>Animal Farm</td>
    -    </tr>
    -  </tbody>
    -</table>]]></xml></content>
    -							</section>
    -
    -							<section id="exporting-text">
    -								<title>Exporting Text</title>
    -								<content><java>// Fetch books and format them as text
    -String text = create.selectFrom(BOOK).fetch().format();</java><html>
    -
    -									<p>
    -										The above query will result in a text document looking like the following one
    -									</p>
    -
    -</html><text>+---+---------+-----------+
    -| ID|AUTHOR_ID|TITLE      |
    -+---+---------+-----------+
    -|  1|        1|1984       |
    -|  2|        1|Animal Farm|
    -+---+---------+-----------+</text><html>
    -
    -									<p>
    -										A simple text representation can also be obtained by calling toString() on a Result object. See also the manual's section about <reference id="logging" title="DEBUG logging"/>
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -				    <section id="importing">
    -						<title>Importing data</title>
    -						<content><html>
    -							<p>
    -								If you are using jOOQ for scripting purposes or in a slim, unlayered application server, you might be interested in using jOOQ's importing functionality (see also exporting functionality). You can import data directly into a table from the formats described in the subsequent sections of this manual.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="importing-csv">
    -								<title>Importing CSV</title>
    -								<content><html>
    -
    -									<p>
    -										The below CSV data represents two author records that may have been exported previously, by jOOQ's <reference id="exporting" title="exporting functionality"/>, and then modified in Microsoft Excel or any other spreadsheet tool:
    -									</p>
    -
    -</html><text>ID;AUTHOR_ID;TITLE
    -1;1;1984
    -2;1;Animal Farm</text><html>
    -
    -									<p>
    -										With jOOQ, you can load this data using various parameters from the	loader API. A simple load may look like this:
    -									</p>
    -
    -</html><java>DSLContext create = DSL.using(connection, dialect);
    -
    -// Load data into the AUTHOR table from an input stream
    -// holding the CSV data.
    -create.loadInto(AUTHOR)
    -      .loadCSV(inputstream)
    -      .fields(ID, AUTHOR_ID, TITLE)
    -      .execute();</java><html>
    -
    -      								<p>
    -      									Here are various other examples:
    -   									</p>
    -
    -</html><java>// Ignore the AUTHOR_ID column from the CSV file when inserting
    -create.loadInto(AUTHOR)
    -      .loadCSV(inputstream)
    -      .fields(ID, null, TITLE)
    -      .execute();
    -
    -// Specify behaviour for duplicate records.
    -create.loadInto(AUTHOR)
    -
    -      // choose any of these methods
    -      .onDuplicateKeyUpdate()
    -      .onDuplicateKeyIgnore()
    -      .onDuplicateKeyError() // the default
    -
    -      .loadCSV(inputstream)
    -      .fields(ID, null, TITLE)
    -      .execute();
    -
    -// Specify behaviour when errors occur.
    -create.loadInto(AUTHOR)
    -
    -      // choose any of these methods
    -      .onErrorIgnore()
    -      .onErrorAbort() // the default
    -
    -      .loadCSV(inputstream)
    -      .fields(ID, null, TITLE)
    -      .execute();
    -
    -// Specify transactional behaviour where this is possible
    -// (e.g. not in container-managed transactions)
    -create.loadInto(AUTHOR)
    -
    -      // choose any of these methods
    -      .commitEach()
    -      .commitAfter(10)
    -      .commitAll()
    -      .commitNone() // the default
    -
    -      .loadCSV(inputstream)
    -      .fields(ID, null, TITLE)
    -      .execute();</java><html>
    -
    -									<p>
    -										Any of the above configuration methods can be combined to achieve the type of load you need. Please refer to the API's Javadoc to learn about more details. Errors that occur during the load are reported by the execute method's result:
    -									</p>
    -
    -</html><java><![CDATA[Loader<Author> loader = /* .. */ .execute();
    -
    -// The number of processed rows
    -int processed = loader.processed();
    -
    -// The number of stored rows (INSERT or UPDATE)
    -int stored = loader.stored();
    -
    -// The number of ignored rows (due to errors, or duplicate rule)
    -int ignored = loader.ignored();
    -
    -// The errors that may have occurred during loading
    -List<LoaderError> errors = loader.errors();
    -LoaderError error = errors.get(0);
    -
    -// The exception that caused the error
    -DataAccessException exception = error.exception();
    -
    -// The row that caused the error
    -int rowIndex = error.rowIndex();
    -String[] row = error.row();
    -
    -// The query that caused the error
    -Query query = error.query();]]></java></content>
    -							</section>
    -
    -							<section id="importing-xml">
    -								<title>Importing XML</title>
    -								<content><html>
    -									<p>This is not yet supported</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -				    <section id="crud-with-updatablerecords">
    -						<title>CRUD with UpdatableRecords</title>
    -						<content><html>
    -							<p>
    -								Your database application probably consists of 50% - 80% CRUD, whereas only the remaining 20% - 50% of querying is actual querying. Most often, you will operate on records of tables without using any advanced relational concepts. This is called CRUD for
    -							</p>
    -							<ul>
    -								<li>Create (<reference id="insert-statement" title="INSERT"/>)</li>
    -								<li>Read (<reference id="select-statement" title="SELECT"/>)</li>
    -								<li>Update (<reference id="update-statement" title="UPDATE"/>)</li>
    -								<li>Delete (<reference id="delete-statement" title="DELETE"/>)</li>
    -							</ul>
    -							<p>								
    -								CRUD always uses the same patterns, regardless of the nature of underlying tables. This again, leads to a lot of boilerplate code, if you have to issue your statements yourself. Like Hibernate / JPA and other ORMs, jOOQ facilitates CRUD using a specific API involving <reference class="org.jooq.UpdatableRecord"/> types.
    -							</p>
    -							
    -							<h3>Primary keys and updatability</h3>
    -							<p>
    -								In normalised databases, every table has a primary key by which a tuple/record within that table can be uniquely identified. In simple cases, this is a (possibly auto-generated) number called ID. But in many cases, primary keys include several non-numeric columns. An important feature of such keys is the fact that in most databases, they are enforced using an index that allows for very fast random access to the table. A typical way to access / modify / delete a book is this:
    -							</p>
    -							
    -</html><sql><![CDATA[-- Inserting uses a previously generated key value or generates it afresh
    -INSERT INTO BOOK (ID, TITLE) VALUES (5, 'Animal Farm');
    -
    --- Other operations can use a previously generated key value
    -SELECT * FROM BOOK WHERE ID = 5;
    -UPDATE BOOK SET TITLE = '1984' WHERE ID = 5;
    -DELETE FROM BOOK WHERE ID = 5;]]></sql><html>
    -							
    -							<p>
    -								Normalised databases assume that a primary key is unique "forever", i.e. that a key, once inserted into a table, will never be changed or re-inserted after deletion. In order to use jOOQ's <reference id="simple-crud" title="CRUD"/> operations correctly, you should design your database accordingly.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="simple-crud">
    -								<title>Simple CRUD</title>
    -								<content><html>
    -									<p>
    -										If you're using jOOQ's <reference id="code-generation" title="code generator"/>, it will generate <reference class="org.jooq.UpdatableRecord"/> implementations for every table that has a primary key. When <reference id="fetching" title="fetching"/> such a record form the database, these records are "attached" to the <reference id="dsl-context" title="Configuration" /> that created them. This means that they hold an internal reference to the same database connection that was used to fetch them. This connection is used internally by any of the following methods of the UpdatableRecord:
    -									</p>
    -									
    -</html><java><![CDATA[// Refresh a record from the database.
    -void refresh() throws DataAccessException;
    -
    -// Store (insert or update) a record to the database.
    -int store() throws DataAccessException;
    -
    -// Delete a record from the database
    -int delete() throws DataAccessException;]]></java><html>
    -									
    -									<p>
    -										See the manual's section about <reference id="serializability" title="serializability"/> for some more insight on "attached" objects. 
    -									</p>
    -									
    -									<h3>Storing</h3>
    -									<p>
    -										Storing a record will perform an <reference id="insert-statement" title="INSERT statement"/> or an <reference id="update-statement" title="UPDATE statement"/>. In general, new records are always inserted, whereas records loaded from the database are always updated. This is best visualised in code:
    -									</p>
    -
    -</html><java><![CDATA[// Create a new record
    -BookRecord book1 = create.newRecord(BOOK);
    -
    -// Insert the record: INSERT INTO BOOK (TITLE) VALUES ('1984');
    -book1.setTitle("1984");
    -book1.store();
    -
    -// Update the record: UPDATE BOOK SET PUBLISHED_IN = 1984 WHERE ID = [id]
    -book1.setPublishedIn(1948);
    -book1.store();
    -
    -// Get the (possibly) auto-generated ID from the record
    -Integer id = book1.getId();
    -
    -// Get another instance of the same book
    -BookRecord book2 = create.fetchOne(BOOK, BOOK.ID.equal(id));
    -
    -// Update the record: UPDATE BOOK SET TITLE = 'Animal Farm' WHERE ID = [id]
    -book2.setTitle("Animal Farm");
    -book2.store();]]></java><html>
    -									
    -									<p>
    -										Some remarks about storing:
    -									</p>
    -									<ul>
    -										<li>jOOQ sets only modified values in <reference id="insert-statement" title="INSERT statements"/> or <reference id="update-statement" title="UPDATE statements"/>. This allows for default values to be applied to inserted records, as specified in CREATE TABLE DDL statements.</li>
    -										<li>When store() performs an <reference id="insert-statement" title="INSERT statement"/>, jOOQ attempts to load any generated keys from the database back into the record. For more details, see the manual's section about <reference id="identity-values" title="IDENTITY values"/>.</li>
    -										<li>When loading records from <reference id="pojos" title="POJOs"/>, jOOQ will assume the record is a new record. It will hence attempt to INSERT it.</li>
    -										<li>When you activate <reference id="optimistic-locking" title="optimistic locking"/>, storing a record may fail, if the underlying database record has been changed in the mean time.</li>
    -									</ul>
    -																		
    -									<h3>Deleting</h3>
    -									<p>
    -										Deleting a record will remove it from the database. Here's how you delete records:
    -									</p>
    -									
    -</html><java><![CDATA[// Get a previously inserted book
    -BookRecord book = create.fetchOne(BOOK, BOOK.ID.equal(5));
    -
    -// Delete the book
    -book.delete();]]></java><html>
    -									
    -									<h3>Refreshing</h3>
    -									<p>
    -										Refreshing a record from the database means that jOOQ will issue a <reference id="select-statement" title="SELECT statement"/> to refresh all record values that are not the primary key. This is particularly useful when you use jOOQ's <reference id="optimistic-locking" title="optimistic locking"/> feature, in case a modified record is "stale" and cannot be stored to the database, because the underlying database record has changed in the mean time.
    -									</p>
    -									<p>
    -										In order to perform a refresh, use the following Java code:
    -									</p>									
    -
    -</html><java><![CDATA[// Fetch an updatable record from the database
    -BookRecord book = create.fetchOne(BOOK, BOOK.ID.equal(5));
    -
    -// Refresh the record
    -book.refresh();]]></java><html>
    -
    -									<h3>CRUD and SELECT statements</h3>
    -									<p>
    -										CRUD operations can be combined with regular querying, if you select records from single database tables, as explained in the manual's section about <reference id="select-statement" title="SELECT statements"/>. For this, you will need to use the <code>selectFrom()</code> method from the <reference id="dsl-context" title="DSLContext"/>:
    -									</p>
    -									
    -</html><java><![CDATA[// Loop over records returned from a SELECT statement
    -for (BookRecord book : create.fetch(BOOK, BOOK.PUBLISHED_IN.equal(1948))) {
    -
    -  // Perform actions on BookRecords depending on some conditions
    -  if ("Orwell".equals(book.fetchParent(FK_BOOK_AUTHOR).getLastName())) {
    -    book.delete();
    -  }
    -}]]></java></content>
    -							</section>
    -
    -							<section id="internal-flags">
    -								<title>Records' internal flags</title>
    -								<content><html>
    -									<p>
    -										All of jOOQ's <reference id="record-vs-tablerecord" title="Record types and subtypes"/> maintain an internal state for every column value. This state is composed of three elements:
    -									</p>
    -									<ul>
    -										<li>The value itself</li>
    -										<li>The "original" value, i.e. the value as it was originally fetched from the database or <code>null</code>, if the record was never in the database</li>
    -										<li>The "changed" flag, indicating if the value was ever changed through the <code>Record</code> API.</li>
    -									</ul>
    -									
    -									<p>
    -										The purpose of the above information is for jOOQ's <reference id="simple-crud" title="CRUD operations"/> to know, which values need to be stored to the database, and which values have been left untouched.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="identity-values">
    -								<title>IDENTITY values</title>
    -								<content><html>
    -									<p>
    -										Many databases support the concept of IDENTITY values, or <reference id="sequence-execution" title="SEQUENCE-generated"/> key values. This is reflected by JDBC's <reference class="java.sql.Statement" anchor="#getGeneratedKeys()" title="getGeneratedKeys()"/> method. jOOQ abstracts using this method as many databases and JDBC drivers behave differently with respect to generated keys. Let's assume the following SQL Server BOOK table:
    -									</p>
    -									
    -</html><sql><![CDATA[CREATE TABLE book (
    -  ID INTEGER IDENTITY(1,1) NOT NULL,
    -  
    -  -- [...]
    -  
    -  CONSTRAINT pk_book PRIMARY KEY (id)
    -)]]></sql><html>
    -
    -									<p>
    -										If you're using jOOQ's <reference id="code-generation" title="code generator"/>, the above table will generate a <reference class="org.jooq.UpdatableRecord"/> with an IDENTITY column. This information is used by jOOQ internally, to update IDs after calling <reference id="crud-with-updatablerecords" title="store()"/>: 
    -									</p>
    -									
    -</html><java><![CDATA[BookRecord book = create.newRecord(BOOK);
    -book.setTitle("1984");
    -book.store();
    -
    -// The generated ID value is fetched after the above INSERT statement
    -System.out.println(book.getId());]]></java><html>
    -
    -									<h3>Database compatibility</h3>
    -									<p>
    -										<strong>DB2, Derby, HSQLDB, Ingres</strong>
    -									</p>
    -									<p>
    -										These SQL dialects implement the standard very neatly.
    -									</p>
    -</html><sql><![CDATA[id INTEGER GENERATED BY DEFAULT AS IDENTITY
    -id INTEGER GENERATED BY DEFAULT AS IDENTITY (START WITH 1)]]></sql><html>
    -
    -									<p>
    -										<strong>H2, MySQL, Postgres, SQL Server, Sybase ASE, Sybase SQL Anywhere</strong>
    -									</p>
    -									<p>
    -										These SQL dialects implement identites, but the DDL syntax doesn’t follow the standard
    -									</p>
    -</html><sql><![CDATA[-- H2 mimicks MySQL's and SQL Server's syntax
    -ID INTEGER IDENTITY(1,1)
    -ID INTEGER AUTO_INCREMENT
    --- MySQL and SQLite
    -ID INTEGER NOT NULL AUTO_INCREMENT
    -
    --- Postgres serials implicitly create a sequence
    --- Postgres also allows for selecting from custom sequences
    --- That way, sequences can be shared among tables
    -id SERIAL NOT NULL
    -
    --- SQL Server
    -ID INTEGER IDENTITY(1,1) NOT NULL
    --- Sybase ASE
    -id INTEGER IDENTITY NOT NULL
    --- Sybase SQL Anywhere
    -id INTEGER NOT NULL IDENTITY]]></sql><html>
    -
    -									<p>
    -										<strong>Oracle</strong>
    -									</p>
    -									<p>
    -										Oracle does not know any identity columns at all. Instead, you will have to use a trigger and update the ID column yourself, using a custom sequence. Something along these lines:
    -									</p>
    -</html><sql><![CDATA[CREATE OR REPLACE TRIGGER my_trigger
    -BEFORE INSERT
    -ON my_table
    -REFERENCING NEW AS new
    -FOR EACH ROW
    -BEGIN
    -  SELECT my_sequence.nextval
    -  INTO :new.id
    -  FROM dual;
    -END my_trigger;]]></sql><html>
    -
    -									<p>
    -										Note, that this approach can be employed in most databases supporting sequences and triggers! It is a lot more flexible than standard identities
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="navigation-methods">
    -								<title>Navigation methods</title>
    -								<content><html>
    -									<p>
    -										<reference class="org.jooq.TableRecord"/> and <reference class="org.jooq.UpdatableRecord"/> contain foreign key navigation methods. These navigation methods allow for "navigating" inbound or outbound foreign key references by executing an appropriate query. An example is given here: 
    -									</p>
    -				
    -</html><code-pair>
    -<sql><![CDATA[CREATE TABLE book (
    -  AUTHOR_ID NUMBER(7) NOT NULL,
    -  
    -  -- [...]
    -  
    -  FOREIGN KEY (AUTHOR_ID) REFERENCES author(ID)
    -)]]></sql><java><![CDATA[BookRecord book = create.fetch(BOOK, BOOK.ID.equal(5));
    -
    -// Find the author of a book
    -AuthorRecord author = book.fetchParent(FK_BOOK_AUTHOR);
    -
    -// Find other books by that author
    -List<BookRecord> books = author.fetchChildren(FK_BOOK_AUTHOR);]]></java>
    -</code-pair><html>					
    -
    -									<p>
    -										Note that, unlike in Hibernate, jOOQ's navigation methods will always lazy-fetch relevant records, without caching any results. In other words, every time you run such a fetch method, a new query will be issued.
    -									</p>
    -									<p>
    -										These fetch methods only work on "attached" records. See the manual's section about <reference id="serializability" title="serializability"/> for some more insight on "attached" objects.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="non-updatable-records">
    -								<title>Non-updatable records</title>
    -								<content><html>
    -									<p>
    -										Tables without a <code>PRIMARY KEY</code> are considered non-updatable by jOOQ, as jOOQ has no way of uniquely identifying such a record within the database. If you're using jOOQ's <reference id="code-generation" title="code generator"/>, such tables will generate <reference class="org.jooq.TableRecord"/> classes, instead of <reference class="org.jooq.UpdatableRecord"/> classes. When you fetch <reference id="record-vs-tablerecord" title="typed records"/> from such a table, the returned records will not allow for calling any of the <reference id="crud-with-updatablerecords" title="store(), refresh(), delete()"/> methods. 
    -									</p>
    -									
    -									<p>
    -										Note, that some databases use internal rowid or object-id values to identify such records. jOOQ does not support these vendor-specific record meta-data.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="optimistic-locking">
    -								<title>Optimistic locking</title>
    -								<content><html>
    -									<p>
    -										jOOQ allows you to perform <reference id="crud-with-updatablerecords" title="CRUD"/> operations using optimistic locking. You can immediately take advantage of this feature by activating the relevant <reference id="custom-settings" title="executeWithOptimisticLocking Setting"/>. Without any further knowledge of the underlying data semantics, this will have the following impact on store() and delete() methods:
    -									</p>
    -									<ul>
    -										<li>INSERT statements are not affected by this Setting flag</li>
    -										<li>Prior to UPDATE or DELETE statements, jOOQ will run a <reference id="for-update-clause" title="SELECT .. FOR UPDATE"/> statement, pessimistically locking the record for the subsequent UPDATE / DELETE</li>
    -										<li>The data fetched with the previous SELECT will be compared against the data in the record being stored or deleted</li>
    -										<li>An <reference class="org.jooq.exception.DataChangedException"/> is thrown if the record had been modified in the mean time</li>
    -										<li>The record is successfully stored / deleted, if the record had not been modified in the mean time.</li>
    -									</ul>
    -									<p>
    -										The above changes to jOOQ's behaviour are transparent to the API, the only thing you need to do for it to be activated is to set the Settings flag. Here is an example illustrating optimistic locking:
    -									</p>
    -
    -</html><java><![CDATA[// Properly configure the DSLContext
    -DSLContext optimistic = DSLContext.using(connection, SQLDialect.ORACLE, 
    -  new Settings().withExecuteWithOptimisticLocking(true));
    -  
    -// Fetch a book two times
    -BookRecord book1 = optimistic.fetch(BOOK, BOOK.ID.equal(5));
    -BookRecord book2 = optimistic.fetch(BOOK, BOOK.ID.equal(5));
    -
    -// Change the title and store this book. The underlying database record has not been modified, it can be safely updated.
    -book1.setTitle("Animal Farm");
    -book1.store();
    -
    -// Book2 still references the original TITLE value, but the database holds a new value from book1.store(). 
    -// This store() will thus fail:
    -book2.setTitle("1984");
    -book2.store();]]></java><html>								
    -	
    -									<h3>Optimised optimistic locking using TIMESTAMP fields</h3>
    -									<p>
    -										If you're using jOOQ's <reference id="code-generation" title="code generator"/>, you can take indicate TIMESTAMP or UPDATE COUNTER fields for every generated table in the <reference id="codegen-advanced" title="code generation configuration"/>. Let's say we have this table:
    -									</p>
    -
    -</html><sql><![CDATA[CREATE TABLE book (
    -  
    -  -- This column indicates when each book record was modified for the last time
    -  MODIFIED TIMESTAMP NOT NULL,
    -  -- [...]
    -)]]></sql><html>									
    -
    -									<p>
    -										The MODIFIED column will contain a timestamp indicating the last modification timestamp for any book in the BOOK table. If you're using jOOQ and it's <reference id="crud-with-updatablerecords" title="store() methods on UpdatableRecords"/>, jOOQ will then generate this TIMESTAMP value for you, automatically. However, instead of running an additional <reference id="for-update-clause" title="SELECT .. FOR UPDATE"/> statement prior to an UPDATE or DELETE statement, jOOQ adds a WHERE-clause to the UPDATE or DELETE statement, checking for TIMESTAMP's integrity. This can be best illustrated with an example:   
    -									</p>
    -									
    -</html><java><![CDATA[// Properly configure the DSLContext
    -DSLContext optimistic = DSL.using(connection, SQLDialect.ORACLE, 
    -  new Settings().withExecuteWithOptimisticLocking(true));
    -  
    -// Fetch a book two times
    -BookRecord book1 = optimistic.fetch(BOOK, BOOK.ID.equal(5));
    -BookRecord book2 = optimistic.fetch(BOOK, BOOK.ID.equal(5));
    -
    -// Change the title and store this book. The MODIFIED value has not been changed since the book was fetched. 
    -// It can be safely updated
    -book1.setTitle("Animal Farm");
    -book1.store();
    -
    -// Book2 still references the original MODIFIED value, but the database holds a new value from book1.store(). 
    -// This store() will thus fail:
    -book2.setTitle("1984");
    -book2.store();]]></java><html>
    -
    -									<p>
    -										As before, without the added TIMESTAMP column, optimistic locking is transparent to the API.
    -									</p>
    -									
    -									<h3>Optimised optimistic locking using VERSION fields</h3>
    -									<p>
    -										Instead of using TIMESTAMPs, you may also use numeric VERSION fields, containing version numbers that are incremented by jOOQ upon store() calls.
    -									</p>
    -
    -									<p>
    -										Note, for explicit pessimistic locking, please consider the manual's section about the <reference id="for-update-clause" title="FOR UPDATE clause"/>. For more details about how to configure TIMESTAMP or VERSION fields, consider the manual's section about <reference id="codegen-advanced" title="advanced code generator configuration"/>.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="batch-execution-for-crud">
    -								<title>Batch execution</title>
    -								<content><html>
    -									<p>
    -										When inserting, updating, deleting a lot of records, you may wish to profit from JDBC batch operations, which can be performed by jOOQ. These are available through jOOQ's <reference id="dsl-context" title="DSLContext"/> as shown in the following example:
    -									</p>
    -									
    -</html><java><![CDATA[// Fetch a bunch of books
    -List<BookRecord> books = create.fetch(BOOK);
    -
    -// Modify the above books, and add some new ones:
    -modify(books);
    -addMore(books);
    -
    -// Batch-update and/or insert all of the above books
    -create.batchStore(books);]]></java><html>					
    -
    -									<p>
    -										Internally, jOOQ will render all the required SQL statements and execute them as a regular <reference id="batch-execution" title="JDBC batch execution"/>. 
    -									</p>				
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -				    <section id="daos">
    -						<title>DAOs</title>
    -						<content><html>
    -							<p>
    -								If you're using jOOQ's <reference id="code-generation" title="code generator"/>, you can configure it to generate <reference id="pojos" title="POJOs" /> and DAOs for you. jOOQ then generates one DAO per <reference id="crud-with-updatablerecords" title="UpdatableRecord"/>, i.e. per table with a single-column primary key. Generated DAOs implement a common jOOQ type called <reference class="org.jooq.DAO"/>. This type contains the following methods:
    -							</p>
    -							
    -</html><java><![CDATA[// <R> corresponds to the DAO's related table
    -// <P> corresponds to the DAO's related generated POJO type
    -// <T> corresponds to the DAO's related table's primary key type. 
    -// Note that multi-column primary keys are not yet supported by DAOs
    -public interface DAO<R extends TableRecord<R>, P, T> {
    -
    -    // These methods allow for inserting POJOs
    -    void insert(P object) throws DataAccessException;
    -    void insert(P... objects) throws DataAccessException;
    -    void insert(Collection<P> objects) throws DataAccessException;
    -    
    -    // These methods allow for updating POJOs based on their primary key
    -    void update(P object) throws DataAccessException;
    -    void update(P... objects) throws DataAccessException;
    -    void update(Collection<P> objects) throws DataAccessException;
    -    
    -    // These methods allow for deleting POJOs based on their primary key
    -    void delete(P... objects) throws DataAccessException;
    -    void delete(Collection<P> objects) throws DataAccessException;
    -    void deleteById(T... ids) throws DataAccessException;
    -    void deleteById(Collection<T> ids) throws DataAccessException;
    -    
    -    // These methods allow for checking record existence
    -    boolean exists(P object) throws DataAccessException;
    -    boolean existsById(T id) throws DataAccessException;
    -    long count() throws DataAccessException;
    -    
    -    // These methods allow for retrieving POJOs by primary key or by some other field
    -    List<P> findAll() throws DataAccessException;
    -    P findById(T id) throws DataAccessException;
    -    <Z> List<P> fetch(Field<Z> field, Z... values) throws DataAccessException;
    -    <Z> P fetchOne(Field<Z> field, Z value) throws DataAccessException;
    -
    -    // These methods provide DAO meta-information
    -    Table<R> getTable();
    -    Class<P> getType();
    -}]]></java><html>
    -
    -							<p>
    -								Besides these base methods, generated DAO classes implement various useful fetch methods. An incomplete example is given here, for the BOOK table:
    -							</p>
    -
    -</html><java><![CDATA[// An example generated BookDao class
    -public class BookDao extends DAOImpl<BookRecord, Book, Integer> {
    -
    -    // Columns with primary / unique keys produce fetchOne() methods    
    -    public Book fetchOneById(Integer value) { ... }
    -
    -    // Other columns produce fetch() methods, returning several records
    -    public List<Book> fetchByAuthorId(Integer... values) { ... }
    -    public List<Book> fetchByTitle(String... values) { ... }
    -}]]></java><html>
    -							<p>
    -								Note that you can further subtype those pre-generated DAO classes, to add more useful DAO methods to them. Using such a DAO is simple:
    -							</p>
    -							
    -</html><java><![CDATA[// Initialise an Configuration
    -Configuration configuration = new DefaultConfiguration().set(connection).set(SQLDialect.ORACLE);
    -
    -// Initialise the DAO with the Configuration
    -BookDao bookDao = new BookDao(configuration);
    -
    -// Start using the DAO
    -Book book = bookDao.findById(5);
    -
    -// Modify and update the POJO
    -book.setTitle("1984");
    -book.setPublishedIn(1948);
    -bookDao.update(book);
    -
    -// Delete it again
    -bookDao.delete(book);]]></java></content>
    -					</section>
    -
    -				    <section id="exception-handling">
    -						<title>Exception handling</title>
    -						<content><html>
    -							<h3>Checked vs. unchecked exceptions</h3>
    -							<p>
    -								This is an eternal and religious debate. Pros and cons have been discussed time and again, and it still is a matter of taste, today. In this case, jOOQ clearly takes a side. jOOQ's exception strategy is simple:
    -							</p>
    -							<ul>
    -								<li>All "system exceptions" are unchecked. If in the middle of a transaction involving business logic, there is no way that you can recover sensibly from a lost database connection, or a constraint violation that indicates a bug in your understanding of your database model.</li>
    -								<li>All "business exceptions" are checked. Business exceptions are true exceptions that you should handle (e.g. not enough funds to complete a transaction).</li>
    -							</ul>
    -							<p>
    -								With jOOQ, it's simple. All of jOOQ's exceptions are "system exceptions", hence they are all unchecked.
    -							</p>
    -							
    -							<h3>jOOQ's DataAccessException</h3>
    -							<p>
    -								jOOQ uses its own <reference class="org.jooq.exception.DataAccessException"/> to wrap any underlying <reference class="java.sql.SQLException"/> that might have occurred. Note that all methods in jOOQ that may cause such a DataAccessException document this both in the Javadoc as well as in their method signature.
    -							</p>
    -							<p>
    -								DataAccessException is subtyped several times as follows:
    -							</p>
    -							<ul>
    -								<li><strong>DataAccessException</strong>: General exception usually originating from a <reference class="java.sql.SQLException"/></li>
    -								<li><strong>DataChangedException</strong>: An exception indicating that the database's underlying record has been changed in the mean time (see <reference id="optimistic-locking" title="optimistic locking"/>)</li>
    -								<li><strong>DataTypeException</strong>: Something went wrong during type conversion</li>
    -								<li><strong>DetachedException</strong>: A SQL statement was executed on a "detached" <reference id="crud-with-updatablerecords" title="UpdatableRecord"/> or a "detached" <reference id="sql-statements" title="SQL statement"/>.</li>
    -								<li><strong>InvalidResultException</strong>: An operation was performed expecting only one result, but several results were returned.</li>
    -								<li><strong>MappingException</strong>: Something went wrong when loading a record from a <reference id="pojos" title="POJO"/> or when mapping a record into a POJO</li>
    -							</ul>
    -							
    -							<h3>Override jOOQ's exception handling</h3>
    -							<p>
    -								The following section about <reference id="execute-listeners" title="execute listeners"/> documents means of overriding jOOQ's exception handling, if you wish to deal separately with some types of constraint violations, or if you raise business errors from your database, etc.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="execute-listeners">
    -						<title>ExecuteListeners</title>
    -						<content><html>
    -							<p>
    -								The <reference id="dsl-context" title="Executor class"/> lets you specify a list of <reference class="org.jooq.ExecuteListener"/> instances. The ExecuteListener is essentially an event listener for Query, Routine, or ResultSet render, prepare, bind, execute, fetch steps. It is a base type for loggers, debuggers, profilers, data collectors, triggers, etc. Advanced ExecuteListeners can also provide custom implementations of Connection, PreparedStatement and ResultSet to jOOQ in apropriate methods.
    -							</p>
    -							<p>
    -								For convenience and better backwards-compatibility, consider extending <reference class="org.jooq.impl.DefaultExecuteListener"/> instead of implementing this interface.
    -							</p>
    -							<p>
    -								Here is a sample implementation of an ExecuteListener, that is simply counting the number of queries per type that are being executed using jOOQ:
    -							</p>
    -
    -</html><java><![CDATA[package com.example;
    -
    -// Extending DefaultExecuteListener, which provides empty implementations for all methods...
    -public class StatisticsListener extends DefaultExecuteListener {
    -    public static Map<ExecuteType, Integer> STATISTICS = new HashMap<ExecuteType, Integer>();
    -
    -    // Count "start" events for every type of query executed by jOOQ
    -    @Override
    -    public void start(ExecuteContext ctx) {
    -        synchronized (STATISTICS) {
    -            Integer count = STATISTICS.get(ctx.type());
    -    
    -            if (count == null) {
    -                count = 0;
    -            }
    -    
    -            STATISTICS.put(ctx.type(), count + 1);
    -        }
    -    }
    -}]]></java><html>
    -
    -							<p>
    -								Now, configure jOOQ's runtime to load your listener
    -							</p>
    -
    -</html><java><![CDATA[// Create a configuration with an appropriate listener provider:
    -Configuration configuration = new DefaultConfiguration().set(connection).set(dialect);
    -configuration.set(new DefaultExecuteListenerProvider(new StatisticsListener()));
    -
    -// Create a DSLContext from the above configuration
    -DSLContext create = DSL.using(configuration);]]></java><html>
    -
    -							<p>
    -								And log results any time with a snippet like this:
    -							</p>
    -
    -</html><java><![CDATA[log.info("STATISTICS");
    -log.info("----------");
    -
    -for (ExecuteType type : ExecuteType.values()) {
    -    log.info(type.name(), StatisticsListener.STATISTICS.get(type) + " executions");
    -}]]></java><html>
    -                            <p>
    -                            	This may result in the following log output:
    -                            </p>
    -
    -</html><config>15:16:52,982  INFO - TEST STATISTICS
    -15:16:52,982  INFO - ---------------
    -15:16:52,983  INFO - READ                     : 919 executions
    -15:16:52,983  INFO - WRITE                    : 117 executions
    -15:16:52,983  INFO - DDL                      : 2 executions
    -15:16:52,983  INFO - BATCH                    : 4 executions
    -15:16:52,983  INFO - ROUTINE                  : 21 executions
    -15:16:52,983  INFO - OTHER                    : 30 executions</config><html>
    -
    -							<p>
    -								Please read the <reference class="org.jooq.ExecuteListener" title="ExecuteListener Javadoc"/> for more details
    -							</p>
    -							
    -							<h3>Writing a custom ExecuteListener for logging</h3>
    -							<p>
    -								The following depicts an example of a custom ExecuteListener, which pretty-prints all queries being executed by jOOQ to stdout:
    -							</p>
    -
    -</html><java><![CDATA[import org.jooq.DSLContext;
    -import org.jooq.ExecuteContext;
    -import org.jooq.conf.Settings;
    -import org.jooq.impl.DefaultExecuteListener;
    -import org.jooq.tools.StringUtils;
    -
    -public class PrettyPrinter extends DefaultExecuteListener {
    -
    -    /**
    -     * Hook into the query execution lifecycle before executing queries
    -     */
    -    @Override
    -    public void executeStart(ExecuteContext ctx) {
    -
    -        // Create a new DSLContext for logging rendering purposes
    -        // This DSLContext doesn't need a connection, only the SQLDialect...
    -        DSLContext create = DSL.using(ctx.dialect(), 
    -        
    -        // ... and the flag for pretty-printing
    -        	new Settings().withRenderFormatted(true));
    -
    -        // If we're executing a query
    -        if (ctx.query() != null) {
    -            System.out.println(create.renderInlined(ctx.query()));
    -        }
    -        
    -        // If we're executing a routine
    -        else if (ctx.routine() != null) {
    -            System.out.println(create.renderInlined(ctx.routine()));
    -        }
    -        
    -        // If we're executing anything else (e.g. plain SQL)
    -        else if (!StringUtils.isBlank(ctx.sql())) {
    -            System.out.println(ctx.sql());
    -        }
    -    }
    -}]]></java><html>
    -							<p>
    -								See also the manual's sections about <reference id="logging" title="logging"/> and the <reference id="jooq-console" title="jOOQ Console"/> for more sample implementations of actual ExecuteListeners.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -					<section id="meta-data">
    -						<title>Database meta data</title>
    -						<content><html>
    -							<p>
    -								Since jOOQ 3.0, a simple wrapping API has been added to wrap JDBC's rather awkward <reference class="java.sql.DatabaseMetaData"/>. This API is still experimental, as the calls to the underlying JDBC type are not always available for all SQL dialects.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="logging">
    -						<title>Logging</title>
    -						<content><html>
    -							<p>
    -								jOOQ logs all SQL queries and fetched result sets to its internal DEBUG logger, which is implemented as an <reference id="execute-listeners" title="execute listener"/>. By default, execute logging is activated in the <reference id="custom-settings" title="jOOQ Settings"/>. In order to see any DEBUG log output, put either log4j or slf4j on jOOQ's classpath along with their respective configuration. A sample log4j configuration can be seen here:
    -							</p>
    -							
    -</html><xml><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
    -<log4j:configuration>
    -    <appender name="stdout" class="org.apache.log4j.ConsoleAppender">
    -        <layout class="org.apache.log4j.PatternLayout">
    -            <param name="ConversionPattern" value="%m%n" />
    -        </layout>
    -    </appender>
    -
    -    <root>
    -        <priority value="debug" />
    -        <appender-ref ref="stdout" />
    -    </root>
    -</log4j:configuration>]]></xml><html>
    -
    -							<p>
    -								With the above configuration, let's fetch some data with jOOQ
    -							</p>
    -							
    -</html><java><![CDATA[// Using H2, this time
    -create.select(BOOK.ID, BOOK.TITLE).from(BOOK).orderBy(BOOK.ID).limit(1, 2).fetch();]]></java><html>
    -
    -							<p>
    -								The above query may result in the following log output:
    -							</p>
    -
    -</html><text><![CDATA[Executing query          : select "BOOK"."ID", "BOOK"."TITLE" from "BOOK" order by "BOOK"."ID" asc, limit ? offset ?
    --> with bind values      : select "BOOK"."ID", "BOOK"."TITLE" from "BOOK" order by "BOOK"."ID" asc, limit 2 offset 1
    -Query executed           : Total: 1.439ms
    -Fetched result           : +----+------------+
    -                         : |  ID|TITLE       |
    -                         : +----+------------+
    -                         : |   2|Animal Farm |
    -                         : |   3|O Alquimista|
    -                         : +----+------------+
    -Finishing                : Total: 4.814ms, +3.375ms
    -]]></text><html>
    -
    -							<p>
    -								Essentially, jOOQ will log
    -							</p>
    -							<ul>
    -								<li>The SQL statement as rendered to the prepared statement</li>
    -								<li>The SQL statement with inlined bind values (for improved debugging)</li>
    -								<li>The query execution time</li>
    -								<li>The first 5 records of the result. This is formatted using <reference id="exporting-text" title="jOOQ's text export"/></li>
    -								<li>The total execution + fetching time</li>
    -							</ul>
    -
    -							<p>
    -								If you wish to use your own logger (e.g. avoiding printing out sensitive data), you can deactivate jOOQ's logger using <reference id="custom-settings" title="your custom settings"/> and implement your own <reference id="execute-listeners" title="execute listener logger"/>.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="performance-considerations">
    -						<title>Performance considerations</title>
    -						<content><html>
    -							<p>
    -								Many users may have switched from higher-level abstractions such as Hibernate to jOOQ, because of Hibernate's difficult-to-manage performance, when it comes to large database schemas and complex second-level caching strategies. However, jOOQ itself is not a lightweight database abstraction framework, and it comes with its own overhead. Please be sure to consider the following points:
    -							</p>
    -							<ul>
    -								<li>It takes some time to construct jOOQ queries. If you can reuse the same queries, you might cache them. Beware of thread-safety issues, though, as jOOQ's <reference id="dsl-context" title="Configuration"/> is not necessarily threadsafe, and queries are "attached" to their creating DSLContext</li>
    -								<li>It takes some time to render SQL strings. Internally, jOOQ reuses the same <reference class="java.lang.StringBuilder"/> for the complete query, but some rendering elements may take their time. You could, of course, cache SQL generated by jOOQ and prepare your own <reference class="java.sql.PreparedStatement"/> objects</li>
    -								<li>It takes some time to bind values to prepared statements. jOOQ does not keep any open prepared statements, internally. Use a sophisticated connection pool, that will cache prepared statements and inject them into jOOQ through the standard JDBC API</li>
    -								<li>It takes some time to fetch results. By default, jOOQ will always fetch the complete <reference class="java.sql.ResultSet"/> into memory. Use <reference id="lazy-fetching" title="lazy fetching"/> to prevent that, and scroll over an open underlying database cursor</li>
    -							</ul>
    -							
    -							<h3>Optimise wisely</h3>
    -							<p>
    -								Don't be put off by the above paragraphs. You should optimise wisely, i.e. only in places where you really need very high throughput to your database. jOOQ's overhead compared to plain JDBC is typically less than 1ms per query.
    -							</p>
    -						</html></content>
    -					</section>
    -				</sections>
    -			</section>
    -
    -			<section id="code-generation">
    -				<title>Code generation</title>
    -				<content><html>
    -					<p>
    -						While optional, source code generation is one of jOOQ's main assets if you wish to increase developer productivity. jOOQ's code generator takes your database schema and reverse-engineers it into a set of Java classes modelling <reference id="table-expressions" title="tables"/>, <reference id="record-vs-tablerecord" title="records"/>, <reference id="sequence-execution" title="sequences"/>, <reference id="pojos" title="POJOs"/>, <reference id="daos" title="DAOs"/>, <reference id="stored-procedures" title="stored procedures"/>, user-defined types and many more.
    -					</p>
    -					<p>
    -						The essential ideas behind source code generation are these:
    -					</p>
    -					<ul>
    -						<li><strong>Increased IDE support</strong>: Type your Java code directly against your database schema, with all type information available</li>
    -						<li><strong>Type-safety</strong>: When your database schema changes, your generated code will change as well. Removing columns will lead to compilation errors, which you can detect early.</li>
    -					</ul>
    -					<p>
    -						The following chapters will show how to configure the code generator and how to generate various artefacts.
    -					</p>
    -				</html></content>
    -
    -				<sections>
    -				    <section id="codegen-configuration">
    -						<title>Configuration and setup of the generator</title>
    -						<content><html>
    -							<p>
    -								There are three binaries available with jOOQ, to be downloaded from <a href="https://sourceforge.net/projects/jooq/">SourceForge</a> or from Maven central:
    -							</p>
    -							<ul>
    -								<li>
    -									<strong>jooq-{jooq-version}.jar</strong>
    -									<br />
    -									The main library that you will include in your application to run jOOQ
    -								</li>
    -								<li>
    -									<strong>jooq-meta-{jooq-version}.jar</strong>
    -									<br />
    -									The utility that you will include in your build to navigate your database schema for code generation. This can be used as a schema crawler as well.
    -								</li>
    -								<li>
    -									<strong>jooq-codegen-{jooq-version}.jar</strong>
    -									<br />
    -									The utility that you will include in your build to generate your database schema
    -								</li>
    -							</ul>
    -
    -							<h3>Configure jOOQ's code generator</h3>
    -							<p>
    -								You need to tell jOOQ some things about your database connection. Here's an example of how to do it for an Oracle database
    -							</p>
    -							
    -</html><xml><![CDATA[<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    -<configuration>
    -  <!-- Configure the database connection here -->
    -  <jdbc>
    -    <driver>oracle.jdbc.OracleDriver</driver>
    -    <url>jdbc:oracle:thin:@[your jdbc connection parameters]</url>
    -    <user>[your database user]</user>
    -    <password>[your database password]</password>
    -    
    -    <!-- You can also pass user/password and other JDBC properties in the optional properties tag: -->
    -    <properties>
    -      <property><key>user</key><value>[db-user]</value></property>
    -      <property><key>password</key><value>[db-password]</value></property>
    -    </properties>
    -  </jdbc>
    -
    -  <generator>
    -    <database>
    -      <!-- The database dialect from jooq-meta. Available dialects are
    -           named org.util.[database].[database]Database. Known values are:
    -
    -           org.jooq.util.ase.ASEDatabase (to be used with Sybase ASE)
    -           org.jooq.util.cubrid.CUBRIDDatabase
    -           org.jooq.util.db2.DB2Database
    -           org.jooq.util.derby.DerbyDatabase
    -           org.jooq.util.h2.H2Database
    -           org.jooq.util.hsqldb.HSQLDBDatabase
    -           org.jooq.util.ingres.IngresDatabase
    -           org.jooq.util.mysql.MySQLDatabase
    -           org.jooq.util.oracle.OracleDatabase
    -           org.jooq.util.postgres.PostgresDatabase
    -           org.jooq.util.sqlite.SQLiteDatabase
    -           org.jooq.util.sqlserver.SQLServerDatabase
    -           org.jooq.util.sybase.SybaseDatabase (to be used with Sybase SQL Anywhere)
    -
    -           You can also provide your own org.jooq.util.Database implementation
    -           here, if your database is currently not supported or if you wish to
    -           read the database schema from a file, such as a Hibernate .hbm.xml file -->
    -      <name>org.jooq.util.oracle.OracleDatabase</name>
    -
    -      <!-- All elements that are generated from your schema (A Java regular expression. 
    -           Use the pipe to separate several expressions) Watch out for
    -           case-sensitivity. Depending on your database, this might be
    -           important! You can create case-insensitive regular expressions
    -           using this syntax: (?i:expr) -->
    -      <includes>.*</includes>
    -
    -      <!-- All elements that are excluded from your schema (A Java regular expression. 
    -           Use the pipe to separate several expressions). Excludes match before
    -           includes -->
    -      <excludes></excludes>
    -
    -      <!-- The schema that is used locally as a source for meta information.
    -           This could be your development schema or the production schema, etc
    -           This cannot be combined with the schemata element.
    -
    -           If left empty, jOOQ will generate all available schemata. See the
    -           manual's next section to learn how to generate several schemata -->
    -      <inputSchema>[your database schema / owner / name]</inputSchema>
    -    </database>
    -
    -    <generate>
    -      <!-- Generation flags: See advanced configuration properties -->
    -    </generate>
    -
    -    <target>
    -      <!-- The destination package of your generated classes (within the
    -           destination directory) -->
    -      <packageName>[org.jooq.your.packagename]</packageName>
    -
    -      <!-- The destination directory of your generated classes -->
    -      <directory>[/path/to/your/dir]</directory>
    -    </target>
    -  </generator>
    -</configuration>]]></xml><html>
    -
    -							<p>
    -								There are also lots of advanced configuration parameters, which will be treated in the <reference id="codegen-advanced" title="manual's section about advanced code generation features"/> Note, you can find the official XSD file for a formal specification at:<br/>
    -							    <a href="http://www.jooq.org/xsd/jooq-codegen-{codegen-xsd-version}.xsd" title="The jOOQ-codegen configuration XSD">http://www.jooq.org/xsd/jooq-codegen-{codegen-xsd-version}.xsd</a>
    -						    </p>
    -
    -							<h3>Run jOOQ code generation</h3>
    -							<p>
    -								Code generation works by calling this class with the above property file as argument.
    -							</p>
    -							
    -</html><config>org.jooq.util.GenerationTool /jooq-config.xml</config><html>
    -
    -							<p>
    -								Be sure that these elements are located on the classpath:
    -							</p>
    -							
    -							<ul>
    -								<li>The XML configuration file</li>
    -								<li>jooq-{jooq-version}.jar, jooq-meta-{jooq-version}.jar, jooq-codegen-{jooq-version}.jar</li>
    -								<li>The JDBC driver you configured</li>
    -							</ul>
    -
    -							<h3>A command-line example (For Windows, unix/linux/etc will be similar)</h3>
    -							<ul>
    -								<li>Put the property file, jooq*.jar and the JDBC driver into a directory, e.g. C:\temp\jooq</li>
    -							    <li>Go to C:\temp\jooq</li>
    -							    <li>Run java -cp jooq-{jooq-version}.jar;jooq-meta-{jooq-version}.jar;jooq-codegen-{jooq-version}.jar;[JDBC-driver].jar;. org.jooq.util.GenerationTool /[XML file] </li>
    -							</ul>
    -							<p>
    -								Note that the property file must be passed as a classpath resource
    -							</p>
    -
    -							<h3>Run code generation from Eclipse</h3>
    -							<p>
    -								Of course, you can also run code generation from your IDE. In Eclipse, set up a project like this. Note that:
    -							</p>
    -                            <ul>
    -                                <li>this example uses jOOQ's log4j support by adding log4j.xml and log4j.jar to the project classpath.</li>
    -                                <li>the actual jooq-{jooq-version}.jar, jooq-meta-{jooq-version}.jar, jooq-codegen-{jooq-version}.jar artefacts may contain version numbers in the file names.</li>
    -                            </ul>
    -                            
    -							<div class="screenshot">
    -							<img class="screenshot" src="&lt;?=$root?&gt;/img/eclipse-example-01.png" alt="Eclipse configuration"/>
    -							</div>
    -
    -							<p>
    -								Once the project is set up correctly with all required artefacts on the classpath, you can configure an Eclipse Run Configuration for org.jooq.util.GenerationTool.
    -							</p>
    -							<div class="screenshot">
    -							<img class="screenshot" src="&lt;?=$root?&gt;/img/eclipse-example-02.png" alt="Eclipse configuration"/>
    -							</div>
    -
    -							<p>
    -								With the XML file as an argument
    -							</p>
    -							<div class="screenshot">
    -							<img class="screenshot" src="&lt;?=$root?&gt;/img/eclipse-example-03.png" alt="Eclipse configuration"/>
    -							</div>
    -
    -							<p>
    -								And the classpath set up correctly
    -							</p>
    -							<div class="screenshot">
    -							<img class="screenshot" src="&lt;?=$root?&gt;/img/eclipse-example-04.png" alt="Eclipse configuration"/>
    -							</div>
    -
    -							<p>
    -								Finally, run the code generation and see your generated artefacts
    -							</p>
    -							<div class="screenshot">
    -							<img class="screenshot" src="&lt;?=$root?&gt;/img/eclipse-example-05.png" alt="Eclipse configuration"/>
    -							</div>
    -
    -							<h3>Run generation with ant</h3>
    -							<p>
    -								When running code generation with ant's &lt;java/&gt; task, you may have to set fork="true":
    -							</p>
    -
    -</html><xml><![CDATA[<!-- Run the code generation task -->
    -<target name="generate-test-classes">
    -  <java fork="true" classname="org.jooq.util.GenerationTool">
    -    [...]
    -  </java><html>
    -</target>
    -]]></xml><html>
    -
    -							<h3>Integrate generation with Maven</h3>
    -							<p>
    -								Using the official jOOQ-codegen-maven plugin, you can integrate source code generation in your Maven build process:
    -							</p>
    -
    -</html><xml><![CDATA[<plugin>
    -
    -  <!-- Specify the maven code generator plugin -->
    -  <groupId>org.jooq</groupId>
    -  <artifactId>jooq-codegen-maven</artifactId>
    -  <version>{jooq-version}</version>
    -
    -  <!-- The plugin should hook into the generate goal -->
    -  <executions>
    -    <execution>
    -      <goals>
    -        <goal>generate</goal>
    -      </goals>
    -    </execution>
    -  </executions>
    -
    -  <!-- Manage the plugin's dependency. In this example, we'll use a PostgreSQL database -->
    -  <dependencies>
    -    <dependency>
    -      <groupId>postgresql</groupId>
    -      <artifactId>postgresql</artifactId>
    -      <version>8.4-702.jdbc4</version>
    -    </dependency>
    -  </dependencies>
    -
    -  <!-- Specify the plugin configuration.
    -       The configuration format is the same as for the standalone code generator -->
    -  <configuration>
    -
    -    <!-- JDBC connection parameters -->
    -    <jdbc>
    -      <driver>org.postgresql.Driver</driver>
    -      <url>jdbc:postgresql:postgres</url>
    -      <user>postgres</user>
    -      <password>test</password>
    -    </jdbc>
    -
    -    <!-- Generator parameters -->
    -    <generator>
    -      <name>org.jooq.util.DefaultGenerator</name>
    -      <database>
    -        <name>org.jooq.util.postgres.PostgresDatabase</name>
    -        <includes>.*</includes>
    -        <excludes></excludes>
    -        <inputSchema>public</inputSchema>
    -      </database>
    -      <target>
    -        <packageName>org.jooq.util.maven.example</packageName>
    -        <directory>target/generated-sources/jooq</directory>
    -      </target>
    -    </generator>
    -  </configuration>
    -</plugin>
    -]]></xml><html>
    -
    -							<p>
    -								See the full example of a pom.xml including the jOOQ-codegen artefact here:<br/>
    -								<a href="https://github.com/jOOQ/jOOQ/blob/master/jOOQ-codegen-maven-example/pom.xml"
    -								  title="jOOQ-codegen-maven example pom.xml file">https://github.com/jOOQ/jOOQ/blob/master/jOOQ-codegen-maven-example/pom.xml</a>
    -							  </p>
    -
    -							<h3>Use jOOQ generated classes in your application</h3>
    -							<p>
    -								Be sure, both jooq-{jooq-version}.jar and your generated package (see configuration) are located on your classpath. Once this is done, you can execute SQL statements with your generated classes.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-advanced">
    -						<title>Advanced generator configuration</title>
    -						<content><html>
    -							<p>
    -								In the <reference id="codegen-configuration" title="previous section"/> we have seen how jOOQ's source code generator is configured and run within a few steps. In this chapter we'll cover some advanced settings
    -							</p>
    -
    -</html><xml><![CDATA[<!-- These properties can be added directly to the generator element: -->
    -<generator>
    -  <!-- The default code generator. You can override this one, to generate your own code style
    -       Defaults to org.jooq.util.DefaultGenerator -->
    -  <name>org.jooq.util.DefaultGenerator</name>
    -
    -  <!-- The naming strategy used for class and field names.
    -       You may override this with your custom naming strategy. Some examples follow
    -       Defaults to org.jooq.util.DefaultGeneratorStrategy -->
    -  <strategy>
    -    <name>org.jooq.util.DefaultGeneratorStrategy</name>
    -  </strategy>
    -</generator>]]></xml><html>
    -
    -							<p>
    -								The following example shows how you can override the DefaultGeneratorStrategy to render table and column names the way they are defined in the database, rather than switching them to camel case:
    -							</p>
    -
    -</html><java><![CDATA[/**
    - * It is recommended that you extend the DefaultGeneratorStrategy. Most of the
    - * GeneratorStrategy API is already declared final. You only need to override any
    - * of the following methods, for whatever generation behaviour you'd like to achieve
    - *
    - * Beware that most methods also receive a "Mode" object, to tell you whether a
    - * TableDefinition is being rendered as a Table, Record, POJO, etc. Depending on
    - * that information, you can add a suffix only for TableRecords, not for Tables
    - */
    -public class AsInDatabaseStrategy extends DefaultGeneratorStrategy {
    -
    -    /**
    -     * Override this to specifiy what identifiers in Java should look like.
    -     * This will just take the identifier as defined in the database.
    -     */
    -    @Override
    -    public String getJavaIdentifier(Definition definition) {
    -        return definition.getOutputName();
    -    }
    -
    -    /**
    -     * Override these to specify what a setter in Java should look like. Setters
    -     * are used in TableRecords, UDTRecords, and POJOs. This example will name
    -     * setters "set[NAME_IN_DATABASE]"
    -     */
    -    @Override
    -    public String getJavaSetterName(Definition definition, Mode mode) {
    -        return "set" + definition.getOutputName();
    -    }
    -
    -    /**
    -     * Just like setters...
    -     */
    -    @Override
    -    public String getJavaGetterName(Definition definition, Mode mode) {
    -        return "get" + definition.getOutputName();
    -    }
    -
    -    /**
    -     * Override this method to define what a Java method generated from a database
    -     * Definition should look like. This is used mostly for convenience methods
    -     * when calling stored procedures and functions. This example shows how to
    -     * set a prefix to a CamelCase version of your procedure
    -     */
    -    @Override
    -    public String getJavaMethodName(Definition definition, Mode mode) {
    -        return "call" + org.jooq.tools.StringUtils.toCamelCase(definition.getOutputName());
    -    }
    -
    -    /**
    -     * Override this method to define how your Java classes and Java files should
    -     * be named. This example applies no custom setting and uses CamelCase versions
    -     * instead
    -     */
    -    @Override
    -    public String getJavaClassName(Definition definition, Mode mode) {
    -        return super.getJavaClassName(definition, mode);
    -    }
    -
    -    /**
    -     * Override this method to re-define the package names of your generated
    -     * artefacts.
    -     */
    -    @Override
    -    public String getJavaPackageName(Definition definition, Mode mode) {
    -        return super.getJavaPackageName(definition, mode);
    -    }
    -
    -    /**
    -     * Override this method to define how Java members should be named. This is
    -     * used for POJOs and method arguments
    -     */
    -    @Override
    -    public String getJavaMemberName(Definition definition, Mode mode) {
    -        return definition.getOutputName();
    -    }
    -
    -    /**
    -     * Override this method to define the base class for those artefacts that
    -     * allow for custom base classes
    -     */
    -    @Override
    -    public String getJavaClassExtends(Definition definition, Mode mode) {
    -        return Object.class.getName();
    -    }
    -
    -    /**
    -     * Override this method to define the interfaces to be implemented by those
    -     * artefacts that allow for custom interface implementation
    -     */
    -    @Override
    -    public List<String> getJavaClassImplements(Definition definition, Mode mode) {
    -        return Arrays.asList(Serializable.class.getName(), Cloneable.class.getName());
    -    }
    -
    -    /**
    -     * Override this method to define the suffix to apply to routines when
    -     * they are overloaded.
    -     *
    -     * Use this to resolve compile-time conflicts in generated source code, in
    -     * case you make heavy use of procedure overloading
    -     */
    -    @Override
    -    public String getOverloadSuffix(Definition definition, Mode mode, String overloadIndex) {
    -        return "_OverloadIndex_" + overloadIndex;
    -    }
    -}]]></java><html>
    -
    -                            <p>
    -                                More examples can be found here:
    -                            </p>
    -                            <ul>
    -                                <li><a href="https://github.com/jOOQ/jOOQ/blob/master/jOOQ-codegen/src/main/java/org/jooq/util/example/JPrefixGeneratorStrategy.java">org.jooq.util.example.JPrefixGeneratorStrategy</a></li>
    -                                <li><a href="https://github.com/jOOQ/jOOQ/blob/master/jOOQ-codegen/src/main/java/org/jooq/util/example/JVMArgsGeneratorStrategy.java">org.jooq.util.example.JVMArgsGeneratorStrategy</a></li>
    -                            </ul>
    -
    -                            <h3>jooq-meta configuration</h3>
    -							<p>
    -								Within the &lt;generator/&gt; element, there are other configuration elements:
    -							</p>
    -
    -</html><xml><![CDATA[<!-- These properties can be added to the database element: -->
    -<database>
    -
    -  <!-- All table and view columns that are used as "version" fields for
    -       optimistic locking (A Java regular expression. Use the pipe to separate several expressions).
    -       See UpdatableRecord.store() and UpdatableRecord.delete() for details -->
    -  <recordVersionFields>REC_VERSION</recordVersionFields/>
    -
    -  <!-- All table and view columns that are used as "timestamp" fields for
    -       optimistic locking (A Java regular expression. Use the pipe to separate several expressions).
    -       See UpdatableRecord.store() and UpdatableRecord.delete() for details -->
    -  <recordTimestampFields>REC_TIMESTAMP</recordTimestampFields/>
    -      
    -  <!-- Generate java.sql.Timestamp fields for DATE columns. This is
    -       particularly useful for Oracle databases.
    -       Defaults to false -->
    -  <dateAsTimestamp>false</dateAsTimestamp>
    -
    -  <!-- Generate jOOU data types for your unsigned data types, which are
    -       not natively supported in Java.
    -       Defaults to true -->
    -  <unsignedTypes>true</unsignedTypes>
    -
    -  <!-- The schema that is used in generated source code. This will be the
    -       production schema. Use this to override your local development
    -       schema name for source code generation. If not specified, this
    -       will be the same as the input-schema. -->
    -  <outputSchema>[your database schema / owner / name]</outputSchema>
    -
    -  <!-- A configuration element to configure several input and/or output
    -       schemata for jooq-meta, in case you're using jooq-meta in a multi-
    -       schema environment.
    -       This cannot be combined with the above inputSchema / outputSchema -->
    -  <schemata>
    -    <schema>
    -      <inputSchema>...</inputSchema>
    -      <outputSchema>...</outputSchema>
    -    </schema>
    -    [ <schema>...</schema> ... ]
    -  </schemata>
    -
    -  <!-- A configuration element to configure custom data types -->
    -  <customTypes>...</customTypes>
    -
    -  <!-- A configuration element to configure type overrides for generated
    -       artefacts (e.g. in combination with customTypes) -->
    -  <forcedTypes>...</forcedTypes>
    -</database>]]></xml><html>
    -
    -							<p>
    -								Check out the some of the manual's "advanced" sections to find out more about the advanced configuration parameters.
    -							</p>
    -							<ul>
    -								<li><reference id="schema-mapping" title="Schema mapping"/></li>
    -								<li><reference id="custom-data-types" title="Custom types"/></li>
    -							</ul>
    -
    -							<h3>jooq-codegen configuration</h3>
    -                            <p>
    -                            	Also, you can add some optional advanced configuration parameters for the generator:
    -                           	</p>
    -
    -</html><xml><![CDATA[<!-- These properties can be added to the generate element: -->
    -<generate>
    -  <!-- Primary key / foreign key relations should be generated and used.
    -       This is a prerequisite for various advanced features.
    -       Defaults to true -->
    -  <relations>true</relations>
    -
    -  <!-- Generate deprecated code for backwards compatibility
    -       Defaults to true -->
    -  <deprecated>true</deprecated>
    -
    -  <!-- Generate instance fields in your tables, as opposed to static
    -       fields. This simplifies aliasing.
    -       Defaults to true -->
    -  <instanceFields>true</instanceFields>
    -
    -  <!-- Generate the javax.annotation.Generated annotation to indicate
    -       jOOQ version used for source code.
    -       Defaults to true -->
    -  <generatedAnnotation>true</generatedAnnotation>
    -
    -  <!-- Generate jOOQ Record classes for type-safe querying. You can
    -       turn this off, if you don't need "active records" for CRUD
    -       Defaults to true -->
    -  <records>true</records>
    -
    -  <!-- Generate POJOs in addition to Record classes for usage of the
    -       ResultQuery.fetchInto(Class) API
    -       Defaults to false -->
    -  <pojos>false</pojos>
    -
    -  <!-- Generate immutable POJOs for usage of the ResultQuery.fetchInto(Class) API
    -       This overrides any value set in <pojos/>
    -       Defaults to false -->
    -  <immutablePojos>false</immutablePojos>
    -
    -  <!-- Generate interfaces that will be implemented by records and/or pojos.
    -       You can also use these interfaces in Record.into(Class<?>) and similar
    -       methods, to let jOOQ return proxy objects for them.
    -       Defaults to false -->
    -  <interfaces>false</interfaces>
    -
    -  <!-- Generate DAOs in addition to POJO classes
    -       Defaults to false -->
    -  <daos>false</daos>
    -
    -  <!-- Annotate POJOs and Records with JPA annotations for increased
    -       compatibility and better integration with JPA/Hibernate, etc
    -       Defaults to false -->
    -  <jpaAnnotations>false</jpaAnnotations>
    -
    -  <!-- Annotate POJOs and Records with JSR-303 validation annotations
    -       Defaults to false -->
    -  <validationAnnotations>false</validationAnnotations>
    -  
    -  <!-- Allow to turn off the generation of global object references, which include
    -  
    -       - Tables.java
    -       - Sequences.java
    -       - UDTs.java
    -  
    -       Turning off the generation of the above files may be necessary for very
    -       large schemas, which exceed the amount of allowed constants in a class's
    -       constant pool (64k) or, whose static initialiser would exceed 64k of
    -       byte code
    -       
    -       Defaults to true -->
    -  <globalObjectReferences>true</globalObjectReferences>
    -</generate>]]></xml><html>
    -
    -							<h3>Property interdependencies</h3>
    -							<p>
    -								Some of the above properties depend on other properties to work correctly. For instance, when generating immutable pojos, pojos must be generated. jOOQ will enforce such properties even if you tell it otherwise. Here is a list of property interdependencies:
    -							</p>
    -							
    -							<ul>
    -								<li>When <code>daos = true</code>, then jOOQ will set <code>relations = true</code></li>
    -								<li>When <code>daos = true</code>, then jOOQ will set <code>records = true</code></li>
    -								<li>When <code>daos = true</code>, then jOOQ will set <code>pojos = true</code></li>
    -								<li>When <code>immutablePojos = true</code>, then jOOQ will set <code>pojos = true</code></li>
    -							</ul>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-globals">
    -						<title>Generated global artefacts</title>
    -						<content><html>
    -							<p>
    -								For increased convenience at the use-site, jOOQ generates "global" artefacts at the code generation root location, referencing tables, routines, sequences, etc. In detail, these global artefacts include the following:
    -							</p>
    -							<ul>
    -								<li><strong>Keys.java</strong>: This file contains all of the required primary key, unique key, foreign key and identity references in the form of static members of type <reference class="org.jooq.Key"/>.</li>
    -								<li><strong>Routines.java</strong>: This file contains all standalone routines (not in packages) in the form of static factory methods for <reference class="org.jooq.Routine"/> types.</li>
    -								<li><strong>Sequences.java</strong>: This file contains all sequence objects in the form of static members of type <reference class="org.jooq.Sequence"/>.</li>
    -								<li><strong>Tables.java</strong>: This file contains all table objects in the form of static member references to the actual singleton <reference class="org.jooq.Table"/> object</li>
    -								<li><strong>UDTs.java</strong>: This file contains all UDT objects in the form of static member references to the actual singleton <reference class="org.jooq.UDT"/> object</li>
    -							</ul>
    -							
    -							<h3>Referencing global artefacts</h3>
    -							<p>
    -								When referencing global artefacts from your client application, you would typically static import them as such:
    -							</p>
    -							
    -</html><java><![CDATA[// Static imports for all global artefacts
    -import static com.example.generated.Routines.*;
    -import static com.example.generated.Sequences.*;
    -import static com.example.generated.Tables.*;
    -
    -// You could then reference your artefacts as follows:
    -create.insertInto(MY_TABLE)
    -      .values(MY_SEQUENCE.nextval(), myFunction())
    -      
    -// as a more concise form of this:
    -create.insertInto(com.example.generated.Tables.MY_TABLE)
    -      .values(com.example.generated.Sequences.MY_SEQUENCE.nextval(), com.example.generated.Routines.myFunction())]]></java></content>
    -					</section>
    -
    -				    <section id="codegen-tables">
    -						<title>Generated tables</title>
    -						<content><html>
    -							<p>
    -								Every table in your database will generate a <reference class="org.jooq.Table"/> implementation that looks like this:
    -							</p>
    -							
    -</html><java><![CDATA[public class Book extends TableImpl<BookRecord> {
    -
    -    // The singleton instance
    -    public static final Book BOOK = new Book();
    -
    -    // Generated columns
    -    public final TableField<BookRecord, Integer> ID        = createField("ID",        SQLDataType.INTEGER, this);
    -    public final TableField<BookRecord, Integer> AUTHOR_ID = createField("AUTHOR_ID", SQLDataType.INTEGER, this);
    -    public final TableField<BookRecord, String>  ITLE      = createField("TITLE",     SQLDataType.VARCHAR, this);
    -
    -    // Covariant aliasing method, returning a table of the same type as BOOK
    -    @Override
    -    public Book as(java.lang.String alias) {
    -        return new Book(alias);
    -    }
    -    
    -    // [...]
    -}]]></java><html>
    -
    -							<h3>Flags influencing generated tables</h3>
    -							<p>
    -								These flags from the <reference id="codegen-advanced" title="code generation configuration"/> influence generated tables:
    -							</p>
    -							<ul>
    -								<li><strong>recordVersionFields</strong>: Relevant methods from super classes are overridden to return the VERSION field</li>
    -								<li><strong>recordTimestampFields</strong>: Relevant methods from super classes are overridden to return the TIMESTAMP field</li>
    -								<li><strong>dateAsTimestamp</strong>: This influences all relevant columns</li>
    -								<li><strong>unsignedTypes</strong>: This influences all relevant columns</li>
    -								<li><strong>relations</strong>: Relevant methods from super classes are overridden to provide primary key, unique key, foreign key and identity information</li>
    -								<li><strong>instanceFields</strong>: This flag controls the "static" keyword on table columns, as well as aliasing convenience</li>
    -								<li><strong>records</strong>: The generated record type is referenced from tables allowing for type-safe single-table record fetching</li>
    -							</ul>
    -							
    -							<h3>Flags controlling table generation</h3>
    -							<p>
    -								Table generation cannot be deactivated
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-records">
    -						<title>Generated records</title>
    -						<content><html>
    -							<p>
    -								Every table in your database will generate a <reference class="org.jooq.Table"/> implementation that looks like this:
    -							</p>
    -							
    -</html><java><![CDATA[// JPA annotations can be generated, optionally
    -@Entity
    -@Table(name = "BOOK", schema = "TEST")
    -public class BookRecord extends UpdatableRecordImpl<BookRecord> 
    -
    -// An interface common to records and pojos can be generated, optionally
    -implements IBook {
    -
    -    // Every column generates a setter and a getter
    -    @Override
    -    public void setId(Integer value) {
    -        setValue(BOOK.ID, value);
    -    }
    -    
    -    @Id
    -    @Column(name = "ID", unique = true, nullable = false, precision = 7)
    -    @Override
    -    public Integer getId() {
    -        return getValue(BOOK.ID);
    -    }
    -    
    -    // More setters and getters
    -    public void setAuthorId(Integer value) {...}
    -    public Integer getAuthorId() {...}
    -    
    -    // Convenience methods for foreign key methods
    -    public void setAuthorId(AuthorRecord value) {
    -        if (value == null) {
    -            setValue(BOOK.AUTHOR_ID, null);
    -        }
    -        else {
    -            setValue(BOOK.AUTHOR_ID, value.getValue(AUTHOR.ID));
    -        }
    -    }
    -    
    -    // Navigation methods
    -    public AuthorRecord fetchAuthor() {
    -        return create().selectFrom(AUTHOR).where(AUTHOR.ID.equal(getValue(BOOK.AUTHOR_ID))).fetchOne();
    -    }
    -    
    -    // [...]
    -}]]></java><html>							
    -							
    -							<h3>Flags influencing generated records</h3>
    -							<p>
    -								These flags from the <reference id="codegen-advanced" title="code generation configuration"/> influence generated records:
    -							</p>
    -							<ul>
    -								<li><strong>dateAsTimestamp</strong>: This influences all relevant getters and setters</li>
    -								<li><strong>unsignedTypes</strong>: This influences all relevant getters and setters</li>
    -								<li><strong>relations</strong>: This is needed as a prerequisite for navigation methods</li>
    -								<li><strong>navigationMethods</strong>: This controls whether navigation methods will be generated or not</li>
    -								<li><strong>daos</strong>: Records are a pre-requisite for DAOs. If DAOs are generated, records are generated as well</li>
    -								<li><strong>interfaces</strong>: If interfaces are generated, records will implement them</li>
    -								<li><strong>jpaAnnotations</strong>: JPA annotations are used on generated records</li>
    -							</ul>
    -														
    -							<h3>Flags controlling record generation</h3>
    -							<p>
    -								Record generation can be deactivated using the <strong>records</strong> flag
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-pojos">
    -						<title>Generated POJOs</title>
    -						<content><html>
    -							<p>
    -								Every table in your database will generate a POJO implementation that looks like this:
    -							</p>
    -							
    -</html><java><![CDATA[// JPA annotations can be generated, optionally
    -@javax.persistence.Entity
    -@javax.persistence.Table(name = "BOOK", schema = "TEST")
    -public class Book implements java.io.Serializable
    -
    -// An interface common to records and pojos can be generated, optionally
    -, IBook {
    -
    -    // JSR-303 annotations can be generated, optionally
    -    @NotNull
    -    private Integer id;
    -
    -    @NotNull
    -    private Integer authorId;
    -
    -    @NotNull
    -    @Size(max = 400)
    -    private String title;
    -
    -    // Every column generates a getter and a setter
    -    @Id
    -    @Column(name = "ID", unique = true, nullable = false, precision = 7)
    -    @Override
    -    public Integer getId() {
    -        return this.id;
    -    }
    -
    -    @Override
    -    public void setId(Integer id) {
    -        this.id = id;
    -    }
    -    
    -    // [...]
    -}]]></java><html>							
    -							
    -							<h3>Flags influencing generated POJOs</h3>
    -							<p>
    -								These flags from the <reference id="codegen-advanced" title="code generation configuration"/> influence generated POJOs:
    -							</p>
    -							<ul>
    -								<li><strong>dateAsTimestamp</strong>: This influences all relevant getters and setters</li>
    -								<li><strong>unsignedTypes</strong>: This influences all relevant getters and setters</li>
    -								<li><strong>interfaces</strong>: If interfaces are generated, POJOs will implement them</li>
    -								<li><strong>immutablePojos</strong>: Immutable POJOs have final members and no setters. All members must be passed to the constructor</li>
    -								<li><strong>daos</strong>: POJOs are a pre-requisite for DAOs. If DAOs are generated, POJOs are generated as well</li>
    -								<li><strong>jpaAnnotations</strong>: JPA annotations are used on generated records</li>
    -								<li><strong>validationAnnotations</strong>: JSR-303 validation annotations are used on generated records</li>
    -							</ul>
    -														
    -							<h3>Flags controlling POJO generation</h3>
    -							<p>
    -								POJO generation can be activated using the <strong>pojos</strong> flag
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-interfaces">
    -						<title>Generated Interfaces</title>
    -						<content><html>
    -							<p>
    -								Every table in your database will generate an interface that looks like this:
    -							</p>
    -							
    -</html><java><![CDATA[public interface IBook extends java.io.Serializable {
    -
    -    // Every column generates a getter and a setter
    -    public void setId(Integer value);
    -    public Integer getId();
    -    
    -    // [...]
    -}]]></java><html>    						
    -							
    -							<h3>Flags influencing generated interfaces</h3>
    -							<p>
    -								These flags from the <reference id="codegen-advanced" title="code generation configuration"/> influence generated interfaces:
    -							</p>
    -							<ul>
    -								<li><strong>dateAsTimestamp</strong>: This influences all relevant getters and setters</li>
    -								<li><strong>unsignedTypes</strong>: This influences all relevant getters and setters</li>
    -							</ul>
    -														
    -							<h3>Flags controlling POJO generation</h3>
    -							<p>
    -								POJO generation can be activated using the <strong>interfaces</strong> flag
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-daos">
    -						<title>Generated DAOs</title>
    -						<content><html>
    -							<h3>Generated DAOs</h3>
    -							<p>
    -								Every table in your database will generate a <reference class="org.jooq.DAO"/> implementation that looks like this:
    -							</p>
    -							
    -</html><java><![CDATA[public class BookDao extends DAOImpl<BookRecord, Book, Integer> {
    -
    -    // Generated constructors
    -    public BookDao() {
    -        super(BOOK, Book.class);
    -    }
    -
    -    public BookDao(Configuration configuration) {
    -        super(BOOK, Book.class, configuration);
    -    }
    -
    -    // Every column generates at least one fetch method
    -    public List<Book> fetchById(Integer... values) {
    -        return fetch(BOOK.ID, values);
    -    }
    -
    -    public Book fetchOneById(Integer value) {
    -        return fetchOne(BOOK.ID, value);
    -    }
    -
    -    public List<Book> fetchByAuthorId(Integer... values) {
    -        return fetch(BOOK.AUTHOR_ID, values);
    -    }
    -    
    -    // [...]
    -}]]></java><html>							
    -							
    -							<h3>Flags controlling DAO generation</h3>
    -							<p>
    -								DAO generation can be activated using the <strong>daos</strong> flag
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-sequences">
    -						<title>Generated sequences</title>
    -						<content><html>
    -							<p>
    -								Every sequence in your database will generate a <reference class="org.jooq.Sequence"/> implementation that looks like this:
    -							</p>
    -							
    -</html><java><![CDATA[public final class Sequences {
    -
    -    // Every sequence generates a member
    -    public static final Sequence<Integer> S_AUTHOR_ID = new SequenceImpl<Integer>("S_AUTHOR_ID", TEST, SQLDataType.INTEGER);
    -}]]></java><html>		
    -							
    -							<h3>Flags controlling sequence generation</h3>
    -							<p>
    -								Sequence generation cannot be deactivated
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-procedures">
    -						<title>Generated procedures</title>
    -						<content><html>
    -							<p>
    -								Every procedure or function (routine) in your database will generate a <reference class="org.jooq.Routine"/> implementation that looks like this:
    -							</p>
    -
    -</html><java><![CDATA[public class AuthorExists extends AbstractRoutine<java.lang.Void> {
    -
    -    // All IN, IN OUT, OUT parameters and function return values generate a static member
    -    public static final Parameter<String>     AUTHOR_NAME = createParameter("AUTHOR_NAME", SQLDataType.VARCHAR);
    -    public static final Parameter<BigDecimal> RESULT      = createParameter("RESULT",      SQLDataType.NUMERIC);
    -
    -    // A constructor for a new "empty" procedure call
    -    public AuthorExists() {
    -        super("AUTHOR_EXISTS", TEST);
    -
    -        addInParameter(AUTHOR_NAME);
    -        addOutParameter(RESULT);
    -    }
    -
    -    // Every IN and IN OUT parameter generates a setter
    -    public void setAuthorName(String value) {
    -        setValue(AUTHOR_NAME, value);
    -    }
    -
    -    // Every IN OUT, OUT and RETURN_VALUE generates a getter
    -    public BigDecimal getResult() {
    -        return getValue(RESULT);
    -    }
    -    
    -    // [...]
    -}]]></java><html>
    -
    -							<h3>Package and member procedures or functions</h3>
    -							<p>
    -								Procedures or functions contained in packages or UDTs are generated in a sub-package that corresponds to the package or UDT name.
    -							</p>
    -
    -							<h3>Flags controlling routine generation</h3>
    -							<p>
    -								Routine generation cannot be deactivated
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-udts">
    -						<title>Generated UDTs</title>
    -						<content><html>
    -							<p>
    -								Every UDT in your database will generate a <reference class="org.jooq.UDT"/> implementation that looks like this:
    -							</p>
    -						
    -</html><java><![CDATA[public class AddressType extends UDTImpl<AddressTypeRecord> {
    -
    -    // The singleton UDT instance
    -    public static final UAddressType U_ADDRESS_TYPE = new UAddressType();
    -
    -    // Every UDT attribute generates a static member
    -    public static final UDTField<AddressTypeRecord, String> ZIP     = 
    -      createField("ZIP",     SQLDataType.VARCHAR, U_ADDRESS_TYPE);
    -    public static final UDTField<AddressTypeRecord, String> CITY    = 
    -      createField("CITY",    SQLDataType.VARCHAR, U_ADDRESS_TYPE);
    -    public static final UDTField<AddressTypeRecord, String> COUNTRY = 
    -      createField("COUNTRY", SQLDataType.VARCHAR, U_ADDRESS_TYPE);
    -    
    -    // [...]
    -}]]></java><html>						
    -										
    -							<p>
    -								Besides the <reference class="org.jooq.UDT"/> implementation, a <reference class="org.jooq.UDTRecord"/> implementation is also generated
    -							</p>		
    -
    -</html><java><![CDATA[public class AddressTypeRecord extends UDTRecordImpl<AddressTypeRecord> {
    -
    -    // Every attribute generates a getter and a setter
    -
    -    public void setZip(String value) {...}
    -    public String getZip() {...}
    -    public void setCity(String value) {...}
    -    public String getCity() {...}
    -    public void setCountry(String value) {...}
    -    public String getCountry() {...}
    -    
    -    // [...]
    -}]]></java><html>						
    -
    -							<h3>Flags controlling UDT generation</h3>
    -							<p>
    -								UDT generation cannot be deactivated
    -							</p>
    -						</html></content>
    -					</section>
    -
    -
    -				    <section id="custom-data-types">
    -						<title>Custom data types and type conversion</title>
    -						<content><html>
    -							<p>
    -								When using a custom type in jOOQ, you need to let jOOQ know about its associated <reference class="org.jooq.Converter"/>. Ad-hoc usages of such converters has been discussed in the chapter about <reference id="data-type-conversion" title="data type conversion"/>. A more common use-case, however, is to let jOOQ know about custom types at code generation time. Use the following configuration elements to specify, that you'd like to use GregorianCalendar for all database fields that start with DATE_OF_
    -      						</p>
    -
    -</html><xml><![CDATA[<database>
    -  <!-- First, register your custom types here -->
    -  <customTypes>
    -    <customType>
    -      <!-- Specify the fully-qualified class name of your custom type -->
    -      <name>java.util.GregorianCalendar</name>
    -
    -      <!-- Associate that custom type with your converter. Note, a
    -           custom type can only have one converter in jOOQ -->
    -      <converter>com.example.CalendarConverter</converter>
    -    </customType>
    -  </customTypes>
    -
    -  <!-- Then, associate custom types with database columns -->
    -  <forcedTypes>
    -    <forcedType>
    -      <!-- Specify again he fully-qualified class name of your custom type -->
    -      <name>java.util.GregorianCalendar</name>
    -
    -      <!-- Add a Java regular expression matching columns. Use the pipe to separate several expressions -->
    -      <expressions>.*\.DATE_OF_.*</expressions>
    -    </forcedType>
    -  </forcedTypes>
    -</database>]]></xml><html>
    -
    -                            <p>
    -                            	The above configuration will lead to AUTHOR.DATE_OF_BIRTH being generated like this:
    -                            </p>
    -
    -</html><java><![CDATA[public class TAuthor extends TableImpl<TAuthorRecord> {
    -
    -    // [...]
    -    public final TableField<TAuthorRecord, GregorianCalendar> DATE_OF_BIRTH =    // [...]
    -    // [...]
    -
    -}]]></java><html>
    -
    -                            <p>
    -                            	This means that the bound type of &lt;T&gt; will be GregorianCalendar, wherever you reference DATE_OF_BIRTH. jOOQ will use your custom converter when binding variables and when fetching data from <reference class="java.util.ResultSet"/>:
    -                            </p>
    -
    -</html><java><![CDATA[// Get all date of births of authors born after 1980
    -List<GregorianCalendar> result =
    -create.selectFrom(AUTHOR)
    -      .where(AUTHOR.DATE_OF_BIRTH.greaterThan(new GregorianCalendar(1980, 0, 1)))
    -      .fetch(AUTHOR.DATE_OF_BIRTH);]]></java></content>
    -					</section>
    -
    -				    <section id="schema-mapping">
    -						<title>Mapping generated schemata and tables</title>
    -						<content><html>
    -							<p>
    -								We've seen previously in the chapter about <reference id="runtime-schema-mapping" title="runtime schema mapping"/>, that schemata and tables can be mapped at runtime to other names. But you can also hard-wire schema mapping in generated artefacts at code generation time, e.g. when you have 5 developers with their own dedicated developer databases, and a common integration database. In the code generation configuration, you would then write.
    -							</p>
    -
    -</html><xml><![CDATA[<schemata>
    -  <schema>
    -    <!-- Use this as the developer's schema: -->
    -    <inputSchema>LUKAS_DEV_SCHEMA</inputSchema>
    -
    -    <!-- Use this as the integration / production database: -->
    -    <outputSchema>PROD</outputSchema>
    -  </schema>
    -</schemata>]]></xml></content>
    -					</section>
    -					
    -					<section id="codegen-large-schemas">
    -						<title>Code generation for large schemas</title>
    -						<content><html>
    -							<p>
    -								Databases can become very large in real-world applications. This is not a problem for jOOQ's code generator, but it can be for the Java compiler. jOOQ generates some classes for <reference id="codegen-globals" title="global access"/>. These classes can hit two sorts of limits of the compiler / JVM:
    -							</p>
    -							
    -							<ul>
    -								<li>Methods (including static / instance initialisers) are allowed to contain only 64kb of bytecode.</li>
    -								<li>Classes are allowed to contain at most 64k of constant literals</li>
    -							</ul>
    -							
    -							<p>
    -								While there exist workarounds for the above two limitations (delegating initialisations to nested classes, inheriting constant literals from implemented interfaces), the preferred approach is either one of these:
    -							</p>
    -							
    -							<ul>
    -								<li>Distribute your database objects in several schemas. That is probably a good idea anyway for such large databases</li>
    -								<li><reference id="codegen-configuration" title="Configure jOOQ's code generator"/> to exclude excess database objects</li>
    -								<li><reference id="codegen-configuration" title="Configure jOOQ's code generator"/> to avoid generating <reference id="codegen-globals" title="global objects"/> using <code>&lt;globalObjectReferences/&gt;</code></li>
    -								<li>Remove uncompilable classes after code generation</li>
    -							</ul>
    -						</html></content>
    -					</section>
    -				</sections>
    -			</section>
    -
    -			<section id="tools">
    -				<title>Tools</title>
    -				<content><html>
    -					<p>
    -						These chapters hold some information about tools to be used with jOOQ
    -					</p>
    -				</html></content>
    -
    -				<sections>
    -					<section id="jdbc-mocking">
    -						<title>JDBC mocking for unit testing</title>
    -						<content><html>
    -							<p>
    -								When writing unit tests for your data access layer, you have probably used some generic mocking tool offered by popular providers like <a href="http://code.google.com/p/mockito/">Mockito</a>, <a href="http://jmock.org/">jmock</a>, <a href="http://mockrunner.sourceforge.net/">mockrunner</a>, or even <a href="http://www.dbunit.org/">DBUnit</a>. With jOOQ, you can take advantage of the built-in JDBC mock API that allows you to simulate a database on the JDBC level for precisely those SQL/JDBC use cases supported by jOOQ.
    -							</p>
    -							
    -							<h3>Mocking the JDBC API</h3>
    -							<p>
    -								JDBC is a very complex API. It takes a lot of time to write a useful and correct mock implementation, implementing at least these interfaces:
    -							</p>
    -							<ul>
    -								<li><reference class="java.sql.Connection"/></li>
    -								<li><reference class="java.sql.Statement"/></li>
    -								<li><reference class="java.sql.PreparedStatement"/></li>
    -								<li><reference class="java.sql.CallableStatement"/></li>
    -								<li><reference class="java.sql.ResultSet"/></li>
    -								<li><reference class="java.sql.ResultSetMetaData"/></li>
    -							</ul>
    -							
    -							<p>
    -								Optionally, you may even want to implement interfaces, such as <reference class="java.sql.Array"/>, <reference class="java.sql.Blob"/>, <reference class="java.sql.Clob"/>, and many others. In addition to the above, you might need to find a way to simultaneously support incompatible JDBC minor versions, such as 4.0, 4.1
    -							</p>
    -							
    -							<h3>Using jOOQ's own mock API</h3>
    -							<p>
    -								This work is greatly simplified, when using jOOQ's own mock API. The <code>org.jooq.tools.jdbc</code> package contains all the essential implementations for both JDBC 4.0 and 4.1, which are needed to mock JDBC for jOOQ. In order to write mock tests, provide the jOOQ <reference id="dsl-context" title="Configuration"/> with a <reference class="org.jooq.tools.jdbc.MockConnection" title="MockConnection"/>, and implement the <reference class="org.jooq.tools.jdbc.MockDataProvider" title="MockDataProvider"/>:
    -							</p>
    -							
    -</html><java><![CDATA[// Initialise your data provider (implementation further down):
    -MockDataProvider provider = new MyProvider();
    -MockConnection connection = new MockConnection(provider);
    -
    -// Pass the mock connection to a jOOQ DSLContext:
    -DSLContext create = DSL.using(connection, SQLDialect.ORACLE);
    -
    -// Execute queries transparently, with the above DSLContext:
    -Result<BookRecord> result = create.selectFrom(BOOK).where(BOOK.ID.equal(5)).fetch();]]></java><html>
    -
    -                            <p>
    -                                As you can see, the configuration setup is simple. Now, the <code>MockDataProvider</code> acts as your single point of contact with JDBC / jOOQ. It unifies any of these execution modes, transparently:
    -                            </p>
    -                            
    -                            <ul>
    -                                <li>Statements without results</li>
    -                                <li>Statements without results but with generated keys</li>
    -                                <li>Statements with results</li>
    -                                <li>Statements with several results</li>
    -                                <li>Batch statements with single queries and multiple bind value sets</li>
    -                                <li>Batch statements with multiple queries and no bind values</li>
    -                            </ul>
    -                            
    -                            <p>
    -                                The above are the execution modes supported by jOOQ. Whether you're using any of jOOQ's various fetching modes (e.g. <reference id="pojos" title="pojo fetching"/>, <reference id="lazy-fetching" title="lazy fetching"/>, <reference id="many-fetching" title="many fetching"/>, <reference id="later-fetching" title="later fetching"/>) is irrelevant, as those modes are all built on top of the standard JDBC API.
    -                            </p>
    -                            
    -                            <h3>Implementing MockDataProvider</h3>
    -                            <p>
    -                                 Now, here's how to implement <code>MockDataProvider</code>:
    -                            </p>
    -                            
    -</html><java><![CDATA[public class MyProvider implements MockDataProvider {
    -
    -    @Override
    -    public MockResult[] execute(MockExecuteContext ctx) throws SQLException {
    -
    -        // You might need a DSLContext to create org.jooq.Result and org.jooq.Record objects
    -        DSLContext create = DSL.using(SQLDialect.ORACLE);
    -        MockResult[] mock = new MockResult[1];
    -        
    -        // The execute context contains SQL string(s), bind values, and other meta-data
    -        String sql = ctx.sql();
    -        
    -        // Exceptions are propagated through the JDBC and jOOQ APIs
    -        if (sql.toUpperCase().startsWith("DROP")) {
    -            throw new SQLException("Statement not supported: " + sql);
    -        }
    -        
    -        // You decide, whether any given statement returns results, and how many
    -        else if (sql.toUpperCase().startsWith("SELECT")) {
    -            
    -            // Always return one author record
    -            Result<AuthorRecord> result = create.newResult(AUTHOR);
    -            result.add(create.newRecord(AUTHOR));
    -            result.get(0).setValue(AUTHOR.ID, 1);
    -            result.get(0).setValue(AUTHOR.LAST_NAME, "Orwell");
    -            mock[0] = new MockResult(1, result);
    -        }
    -        
    -        // You can detect batch statements easily
    -        else if (ctx.batch()) {
    -            // [...]
    -        }
    -        
    -        return mock;
    -    }
    -}]]></java><html>
    -
    -							<p>
    -								Essentially, the <reference class="org.jooq.tools.jdbc.MockExecuteContext" title="MockExecuteContext"/> contains all the necessary information for you to decide, what kind of data you should return. The <reference class="org.jooq.tools.jdbc.MockResult" title="MockResult"/> wraps up two pieces of information:
    -							</p>
    -							<ul>
    -							    <li> <reference class="java.sql.Statement" anchor="#getUpdateCount" title="Statement.getUpdateCount()"/>: The number of affected rows</li>
    -							    <li> <reference class="java.sql.Statement" anchor="#getResultSet()" title="Statement.getResultSet()"/>: The result set</li>
    -							</ul>
    -							
    -							<p>
    -								You should return as many <code>MockResult</code> objects as there were query executions (in <reference id="batch-execution" title="batch mode"/>) or results (in <reference id="many-fetching" title="fetch-many mode"/>). Instead of an awkward JDBC <code>ResultSet</code>, however, you can construct a "friendlier" <reference class="org.jooq.Result"/> with your own record types. The jOOQ mock API will use meta data provided with this <code>Result</code> in order to create the necessary JDBC <reference class="java.sql.ResultSetMetaData"/> 
    -							</p>
    -														
    -							<p>
    -								See the <reference class="org.jooq.tools.jdbc.MockDataProvider" title="MockDataProvider Javadoc"/> for a list of rules that you should follow.
    -							</p>
    -						</html></content>
    -					</section>
    -					
    -					<section id="jooq-console">
    -						<title>jOOQ Console</title>
    -						<content><html>
    -							<p>
    -							    The <reference id="execute-listeners" title="ExecuteListener API"/> was driven by a feature request by Christopher Deckers, who has had the courtesy to contribute the jOOQ Console, a sample application interfacing with jOOQ's ExecuteListeners. The jOOQ Console logs all queries executed by jOOQ and displays them nicely in a Swing application. With the jOOQ Console's logger, you can:
    -						    </p>
    -						    <ul>
    -						    	<li>Activate the console's DebugListener anytime (in-process or if the remote server is active).</li>
    -						    	<li>View simple and batch queries and their parameters.</li>
    -						    	<li>Reformat queries along with syntax highlighting for better readability.</li>
    -						    	<li>View stack trace of originator of the call.</li>
    -						    	<li>Dump the stack to stdout when in an IDE, to directly navigate to relevant classes.</li>
    -						    	<li>Track execution time, binding time, parsing time, rows read, fields read.</li>
    -						    	<li>Show/hide queries depending on their type (SELECT, UPDATE, etc.).</li>
    -						    	<li>Sort any column (timing columns, queries, types, etc.)</li>
    -						    	<li>Easy copy paste of rows/columns to Spreadsheet editors.</li>
    -						    </ul>
    -
    -						    <p>
    -						    	A short overview of such a debugging session can be seen here:
    -						    </p>
    -   							<div class="screenshot">
    -								<img class="screenshot" src="&lt;?=$root?&gt;/img/jooq-console-01.png" alt="jOOQ Console example"/>
    -							</div>
    -						    <p>
    -							    Please note that the jOOQ Console is still experimental. Any feedback is very welcome on <br/>
    -							    <a href="http://groups.google.com/group/jooq-user" title="the jooq-user group">the jooq-user group</a>
    -							</p>
    -
    -							<h3>jOOQ Console operation modes</h3>
    -							<p>
    -								The jOOQ Console can be run in two different modes:
    -							</p>
    -							<ul>
    -								<li>In-process mode: running in the same process as the queries you're analysing</li>
    -								<li>"headless" mode: running remotely</li>
    -							</ul>
    -
    -							<p>
    -								Both modes will require that you set the <reference class="org.jooq.debug.impl.DebugListener"/> in the Configuration:
    -							</p>
    -
    -</html><java><![CDATA[// Create a configuration with an appropriate listener provider:
    -Configuration configuration = new DefaultConfiguration.set(connection).set(dialect);
    -configuration.set(new DefaultExecuteListenerProvider(new org.jooq.debug.impl.DebugListener()));
    -
    -// Create a DSLContext from the above configuration
    -DSLContext create = DSL.using(configuration);]]></java><html>
    -
    -							<h3>In-process mode</h3>
    -							<p>
    -								The in-process mode is useful for Swing applications or other, locally run Java programs accessing the database via jOOQ. In order to launch the jOOQ Console "in-process", specify the previously documented settings and launch the Console as follows:
    -							</p>
    -
    -</html><java><![CDATA[// Define a DatabaseDescriptor for the "in-process" mode
    -// It is needed for the "Editor" tab
    -DatabaseDescriptor descriptor = new DatabaseDescriptor() {
    -
    -    // Return your generated schema. This is used by the console
    -    // to introspect your schema data
    -    @Override
    -    public Schema getSchema() {
    -        return com.example.MySchema.MY_SCHEMA;
    -    }
    -
    -    // Return the SQL dialect that you're using
    -    @Override
    -    public SQLDialect getSQLDialect() {
    -        return SQLDialect.ORACLE;
    -    }
    -
    -    // Return a connection
    -    @Override
    -    public Connection createConnection() {
    -        try {
    -            return DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "test", "test");
    -        }
    -        catch (Exception ignore) {}
    -    }
    -};
    -
    -// Now pass this database descriptor to the Console and make it visible
    -try {
    -
    -    // Use this for a nicer look-and-feel
    -    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    -
    -    // Create a new Console
    -    Console console = new Console(descriptor, true);
    -    console.setLoggingActive(true);
    -    console.setVisible(true);
    -}
    -catch (Exception ignore) {}
    -]]></java><html>
    -
    -							<p>
    -								Only in the in-process mode, you can execute ad-hoc queries directly from the console, if you provide it with proper DatabaseDescriptor. These queries are executed from the Editor pane which features:
    -							</p>
    -							<ul>
    -								<li>SQL editing within the console.</li>
    -								<li>Incremental search on tables.</li>
    -								<li>Simple code completion with tables/columns/SQL keywords.</li>
    -								<li>Syntax highlighting and formatting capabilities.</li>
    -								<li>Results shown in one or several tabs.</li>
    -								<li>Easy analysis of Logger output by copy/pasting/running queries in the Editor.</li>
    -							</ul>
    -   							<div class="screenshot">
    -								<img class="screenshot" src="&lt;?=$root?&gt;/img/jooq-console-02.png" alt="jOOQ Console example"/>
    -							</div>
    -
    -                            <h3>"Headless" mode</h3>
    -							<p>
    -								In J2EE or other server/client environments, you may not be able to run the console in the same process as your application. You can then run the jOOQ Console in "headless" mode. In addition to the previously documented settings, you'll have to start a debugger server in your application process, that the console can connect to:
    -							</p>
    -
    -</html><java>// Create a new RemoteDebuggerServer in your application that listens to
    -// incoming connections on a given port
    -SERVER = new RemoteDebuggerServer(DEBUGGER_PORT);</java><html>
    -
    -							<p>
    -								Now start your application along with the debugger server and launch the console with this command:
    -							</p>
    -
    -</html><config>java -jar jooq-console-{jooq-version}.jar [host] [port]</config><html>
    -
    -							<p>
    -								Depending on your distribution, you may have to manually add rsyntaxtextarea-2.0.2.jar and jOOQ artefacts on your classpath.
    -							</p>
    -						</html></content>
    -					</section>
    -				</sections>
    -			</section>
    -
    -			<section id="reference">
    -				<title>Reference</title>
    -				<content><html>
    -					<p>
    -						These chapters hold some general jOOQ reference information
    -					</p>
    -				</html></content>
    -
    -				<sections>
    -					<section id="supported-rdbms">
    -						<title>Supported RDBMS</title>
    -						<content><html>
    -							<h3>A list of supported databases</h3>
    -							<p>
    -						   		Every RDMBS out there has its own little specialties. jOOQ considers those specialties as much as possible, while trying to standardise the behaviour in jOOQ. In order to increase the quality of jOOQ, some 70 unit tests are run for syntax and variable binding verification, as well as some 180 integration tests with an overall of around 1200 queries for any of these databases:
    -					   		</p>
    -							<ul>
    -							    <li>CUBRID 8.4.1 and 9.0.0</li>
    -							    <li>DB2 9.7</li>
    -							    <li>Derby 10.8</li>
    -							    <li>Firebird 2.5.1</li>
    -							    <li>H2 1.3.161</li>
    -							    <li>HSQLDB 2.2.5</li>
    -							    <li>Ingres 10.1.0</li>
    -							    <li>MySQL 5.1.41 and 5.5.8</li>
    -							    <li>Oracle XE 10.2.0.1.0 and 11g</li>
    -							    <li>PostgreSQL 9.0</li>
    -							    <li>SQLite with inofficial JDBC driver v056</li>
    -							    <li>SQL Server 2008 R8 and 2012</li>
    -							    <li>Sybase Adaptive Server Enterprise 15.5</li>
    -							    <li>Sybase SQL Anywhere 12</li>
    -							</ul>
    -							<p>
    -								These platforms have been observed to work as well, but are not integration-tested
    -							</p>
    -							<ul>
    -								<li>Google Cloud SQL (MySQL)</li>
    -							</ul>
    -								
    -							<h3>Databases planned for support</h3>
    -							<p>
    -								Any of the following databases might be available in the future
    -							</p>
    -						    <ul>
    -							    <li>Informix</li>
    -							    <li>Interbase</li>
    -							    <li>MS Access</li>
    -							    <li>MS Excel</li>
    -							    <li>SQL Azure</li>
    -							    <li>Sybase SQL Anywhere OnDemand</li>
    -							    <li>Teradata</li>
    -						    </ul>
    -						    
    -							<h3>Databases being watched</h3>
    -							<p>
    -								Any of the following databases are being observed for a potential integration
    -							</p>
    -							<ul>
    -								<li>Mondrian</li>
    -								<li>Netezza</li>
    -								<li>SQLFire</li>
    -								<li>Vectorwise</li>
    -								<li>Vertica</li>
    -								<li>VoltDB</li>
    -							</ul>
    -
    -							<h3>Feature matrix</h3>
    -							<p>
    -								This section will soon contain a feature matrix, documenting what feature is available for which database.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -					<section id="reference-data-types">
    -						<title>Data types</title>
    -						<content><html>
    -							<p>
    -								There is always a small mismatch between SQL data types and Java data types. This is for two reasons:
    -							</p>
    -							<ul>
    -								<li>SQL data types are insufficiently covered by the JDBC API.</li>
    -								<li>Java data types are often less expressive than SQL data types</li>
    -							</ul>
    -							<p>
    -								This chapter should document the most important notes about SQL, JDBC and jOOQ data types.
    -							</p>
    -						</html></content>
    -						
    -						<sections>
    -							<section id="data-types-lobs">
    -								<title>BLOBs and CLOBs</title>
    -								<content><html>
    -									<p>
    -										jOOQ currently doesn't explicitly support JDBC BLOB and CLOB data types. If you use any of these data types in your database, jOOQ will map them to byte[] and String instead. In simple cases (small data), this simplification is sufficient. In more sophisticated cases, you may have to bypass jOOQ, in order to deal with these data types and their respective resources. True support for LOBs is on the roadmap, though.
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -							<section id="data-types-unsigned">
    -								<title>Unsigned integer types</title>
    -								<content><html>
    -									<p>
    -										Some databases explicitly support unsigned integer data types. In most normal JDBC-based applications, they would just be mapped to their signed counterparts letting bit-wise shifting and tweaking to the user. jOOQ ships with a set of unsigned <reference class="java.lang.Number"/> implementations modelling the following types:
    -									</p>
    -									<ul>
    -										<li><reference class="org.jooq.types.UByte"/>: Unsigned byte, an 8-bit unsigned integer</li>
    -										<li><reference class="org.jooq.types.UShort"/>: Unsigned short, a 16-bit unsigned integer</li>
    -										<li><reference class="org.jooq.types.UInteger"/>: Unsigned int, a 32-bit unsigned integer</li>
    -										<li><reference class="org.jooq.types.ULong"/>: Unsigned long, a 64-bit unsigned integer</li>
    -									</ul>
    -									<p>
    -										Each of these wrapper types extends <reference class="java.lang.Number"/>, wrapping a higher-level integer type, internally:
    -									</p>
    -									<ul>
    -										<li>UByte wraps <reference class="java.lang.Short"/></li>
    -										<li>UShort wraps <reference class="java.lang.Integer"/></li>
    -										<li>UInteger wraps <reference class="java.lang.Long"/></li>
    -										<li>ULong wraps <reference class="java.math.BigInteger"/></li>
    -									</ul>
    -								</html></content>
    -							</section>
    -							
    -							<section id="data-types-intervals">
    -								<title>INTERVAL data types</title>
    -								<content><html>
    -									<p>
    -										jOOQ fills a gap opened by JDBC, which neglects an important SQL data type as defined by the SQL standards: INTERVAL types. SQL knows two different types of intervals:
    -									</p>
    -									<ul>
    -										<li><strong>YEAR TO MONTH</strong>: This interval type models a number of months and years</li>
    -										<li><strong>DAY TO SECOND</strong>: This interval type models a number of days, hours, minutes, seconds and milliseconds</li>
    -									</ul>
    -									
    -									<p>
    -										Both interval types ship with a variant of subtypes, such as DAY TO HOUR, HOUR TO SECOND, etc. jOOQ models these types as Java objects extending <reference class="java.lang.Number"/>: <reference class="org.jooq.types.YearToMonth"/> (where Number.intValue() corresponds to the absolute number of months) and <reference class="org.jooq.types.DayToSecond"/> (where Number.intValue() corresponds to the absolute number of milliseconds)
    -									</p>
    -									
    -									<h3>Interval arithmetic</h3>
    -									<p>
    -										In addition to the <reference id="arithmetic-expressions" title="arithmetic expressions"/> documented previously, interval arithmetic is also supported by jOOQ. Essentially, the following operations are supported:
    -									</p>
    -									<ul>
    -										<li>DATETIME - DATETIME => INTERVAL</li>
    -										<li>DATETIME + or - INTERVAL => DATETIME</li>
    -										<li>INTERVAL + DATETIME => DATETIME</li>
    -										<li>INTERVAL + - INTERVAL => INTERVAL</li>
    -										<li>INTERVAL * or / NUMERIC => INTERVAL</li>
    -										<li>NUMERIC * INTERVAL => INTERVAL</li>
    -									</ul>
    -								</html></content>
    -							</section>
    -							
    -							<section id="data-types-xml">
    -								<title>XML data types</title>
    -								<content><html>
    -									<p>
    -										XML data types are currently not supported
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -							<section id="data-types-geospacial">
    -								<title>Geospacial data types</title>
    -								<content><html>
    -									<h3>Geospacial data types</h3>
    -									<p>
    -										Geospacial data types are currently not supported
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -							<section id="data-types-cursors">
    -								<title>CURSOR data types</title>
    -								<content><html>
    -									<p>
    -										Some databases support cursors returned from stored procedures. They are mapped to the following jOOQ data type:
    -									</p>
    -
    -</html><java><![CDATA[Field<Result<Record>> cursor;]]></java><html>
    -									
    -									<p>
    -										In fact, such a cursor will be fetched immediately by jOOQ and wrapped in an <reference class="org.jooq.Result"/> object.
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -							<section id="data-types-arrays">
    -								<title>ARRAY and TABLE data types</title>
    -								<content><html>
    -									<p>
    -										The SQL standard specifies ARRAY data types, that can be mapped to Java arrays as such:
    -									</p>
    -									
    -</html><java><![CDATA[Field<Integer[]> intArray;]]></java><html>
    -										
    -									<p>
    -										The above array type is supported by these SQL dialects:
    -									</p>
    -									<ul>
    -										<li>H2</li>
    -										<li>HSQLDB</li>
    -										<li>Postgres</li>
    -									</ul>
    -									
    -									<h3>Oracle typed arrays</h3>
    -									<p>
    -										Oracle has strongly-typed arrays and table types (as opposed to the previously seen anonymously typed arrays). These arrays are wrapped by <reference class="org.jooq.ArrayRecord"/> types.
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="reference-bnf-notation">
    -						<title>jOOQ's BNF pseudo-notation</title>
    -						<content><html>
    -							<p>
    -								This chapter will soon contain an overview over jOOQ's API using a pseudo BNF notation.
    -							</p>
    -						</html></content>
    -					</section>
    -					
    -					<section id="quality-assurance">
    -						<title>Quality Assurance</title>
    -						<content><html>
    -							<p>
    -								jOOQ is running some of your most mission-critical logic: the interface layer between your Java / Scala application and the database. You have probably chosen jOOQ for any of the following reasons:
    -							</p>
    -							<ul>
    -								<li>To evade JDBC's verbosity and error-proneness due to string concatenation and index-based variable binding</li>
    -								<li>To add lots of type-safety to your inline SQL</li>
    -								<li>To increase productivity when writing inline SQL using your favourite IDE's autocompletion capabilities</li>
    -							</ul>
    -							
    -							<p>
    -								With jOOQ being in the core of your application, you want to be sure that you can trust jOOQ. That is why jOOQ is heavily unit and integration tested with a strong focus on integration tests:
    -							</p>
    -							
    -							<h3>Unit tests</h3>
    -							<p>
    -								Unit tests are performed against dummy JDBC interfaces using <a href="http://jmock.org/" title="jmock">http://jmock.org/</a>. These tests verify that various <reference class="org.jooq.QueryPart"/> implementations render correct SQL and bind variables correctly.
    -							</p>
    -							
    -							<h3>Integration tests</h3>
    -							<p>
    -								This is the most important part of the jOOQ test suites. Some 1500 queries are currently run against a standard integration test database. Both the test database and the queries are translated into every one of the 14 supported SQL dialects to ensure that regressions are unlikely to be introduced into the code base.
    -							</p>
    -							<p>
    -								For libraries like jOOQ, integration tests are much more expressive than unit tests, as there are so many subtle differences in SQL dialects. Simple mocks just don't give as much feedback as an actual database instance.
    -							</p>
    -							<p>
    -								jOOQ integration tests run the weirdest and most unrealistic queries. As a side-effect of these extensive integration test suites, many corner-case bugs for JDBC drivers and/or open source databases have been discovered, feature requests submitted through jOOQ and reported mainly to CUBRID, Derby, H2, HSQLDB.
    -							</p>
    -							
    -							<h3>Code generation tests</h3>
    -							<p>
    -								For every one of the 14 supported integration test databases, source code is generated and the tiniest differences in generated source code can be discovered. In case of compilation errors in generated source code, new test tables/views/columns are added to avoid regressions in this field.
    -							</p>
    -							
    -							<h3>API Usability tests and proofs of concept</h3>
    -							<p>
    -								jOOQ is used in jOOQ-meta as a proof of concept. This includes complex queries such as the following Postgres query
    -							</p>
    -							
    -</html><java><![CDATA[Routines r1 = ROUTINES.as("r1");
    -Routines r2 = ROUTINES.as("r2");
    -
    -for (Record record : create().select(
    -        r1.ROUTINE_SCHEMA,
    -        r1.ROUTINE_NAME,
    -        r1.SPECIFIC_NAME,
    -
    -        // Ignore the data type when there is at least one out parameter
    -        decode()
    -            .when(exists(
    -                selectOne()
    -                .from(PARAMETERS)
    -                .where(PARAMETERS.SPECIFIC_SCHEMA.equal(r1.SPECIFIC_SCHEMA))
    -                .and(PARAMETERS.SPECIFIC_NAME.equal(r1.SPECIFIC_NAME))
    -                .and(upper(PARAMETERS.PARAMETER_MODE).notEqual("IN"))),
    -                    val("void"))
    -            .otherwise(r1.DATA_TYPE).as("data_type"),
    -        r1.CHARACTER_MAXIMUM_LENGTH,
    -        r1.NUMERIC_PRECISION,
    -        r1.NUMERIC_SCALE,
    -        r1.TYPE_UDT_NAME,
    -
    -        // Calculate overload index if applicable
    -        decode().when(
    -        exists(
    -            selectOne()
    -            .from(r2)
    -            .where(r2.ROUTINE_SCHEMA.in(getInputSchemata()))
    -            .and(r2.ROUTINE_SCHEMA.equal(r1.ROUTINE_SCHEMA))
    -            .and(r2.ROUTINE_NAME.equal(r1.ROUTINE_NAME))
    -            .and(r2.SPECIFIC_NAME.notEqual(r1.SPECIFIC_NAME))),
    -            select(count())
    -            .from(r2)
    -            .where(r2.ROUTINE_SCHEMA.in(getInputSchemata()))
    -            .and(r2.ROUTINE_SCHEMA.equal(r1.ROUTINE_SCHEMA))
    -            .and(r2.ROUTINE_NAME.equal(r1.ROUTINE_NAME))
    -            .and(r2.SPECIFIC_NAME.lessOrEqual(r1.SPECIFIC_NAME)).asField())
    -        .as("overload"))
    -    .from(r1)
    -    .where(r1.ROUTINE_SCHEMA.in(getInputSchemata()))
    -    .orderBy(
    -        r1.ROUTINE_SCHEMA.asc(),
    -        r1.ROUTINE_NAME.asc())
    -    .fetch()) {
    -
    -    result.add(new PostgresRoutineDefinition(this, record));
    -}]]></java><html>
    -							<p>
    -								These rather complex queries show that the jOOQ API is fit for advanced SQL use-cases, compared to the rather simple, often unrealistic queries in the integration test suite. 
    -							</p>
    -							
    -							<h3>Clean API and implementation. Code is kept DRY</h3>
    -							<p>
    -								As a general rule of thumb throughout the jOOQ code, everything is kept <a href="http://en.wikipedia.org/wiki/DRY">DRY</a>. Some examples:
    -							</p>
    -							<ul>
    -								<li>There is only one place in the entire code base, which consumes values from a JDBC ResultSet</li>
    -								<li>There is only one place in the entire code base, which transforms jOOQ Records into custom POJOs</li>
    -							</ul>
    -							<p>
    -								Keeping things DRY leads to longer stack traces, but in turn, also increases the relevance of highly reusable code-blocks. Chances that some parts of the jOOQ code base slips by integration test coverage decrease significantly.
    -							</p>
    -						</html></content>
    -					</section>
    -					
    -					<section id="migrating-to-3.0">
    -						<title>Migrating to jOOQ 3.0</title>
    -						<content><html>
    -							<p>
    -								This section is for all users of jOOQ 2.x who wish to upgrade to the next major release. In the next sub-sections, the most important changes are explained. Some code hints are also added to help you fix compilation errors.
    -							</p>
    -							
    -							<h3>Type-safe row value expressions</h3>
    -							<p>
    -								Support for <reference id="row-value-expressions" title="row value expressions"/> has been added in jOOQ 2.6. In jOOQ 3.0, many API parts were thoroughly (but often incompatibly) changed, in order to provide you with even more type-safety. 
    -							</p>
    -							
    -							<p>
    -								Here are some affected API parts:
    -							</p>
    -							<ul>
    -								<li>[N] in Row[N] has been raised from 8 to 22. This means that existing row value expressions with degree >= 9 are now type-safe</li>
    -								<li>Subqueries returned from <code>DSL.select(...)</code> now implement <code>Select&lt;Record[N]>, not Select&lt;Record></code></li>
    -								<li><code>IN</code> predicates and comparison predicates taking subselects changed incompatibly</li>
    -								<li><code>INSERT</code> and <code>MERGE</code> statements now take typesafe <code>VALUES()</code> clauses</li>
    -							</ul>
    -							
    -							<p>
    -								Some hints related to row value expressions:
    -							</p>
    -							
    -</html><java><![CDATA[// SELECT statements are now more typesafe:
    -Record2<String, Integer> record         = create.select(BOOK.TITLE, BOOK.ID).from(BOOK).where(ID.eq(1)).fetchOne();
    -Result<Record2<String, Integer>> result = create.select(BOOK.TITLE, BOOK.ID).from(BOOK).fetch();
    -
    -// But Record2 extends Record. You don't have to use the additional typesafety:
    -Record record    = create.select(BOOK.TITLE, BOOK.ID).from(BOOK).where(ID.eq(1)).fetchOne();
    -Result<?> result = create.select(BOOK.TITLE, BOOK.ID).from(BOOK).fetch();]]></java><html>
    -							
    -							<h3>SelectQuery and SelectXXXStep are now generic</h3>
    -							<p>
    -								In order to support type-safe row value expressions and type-safe Record[N] types, SelectQuery is now generic: SelectQuery&lt;R>
    -							</p>
    -							
    -							<h3>SimpleSelectQuery and SimpleSelectXXXStep API were removed</h3>
    -							<p>
    -							    The duplication of the SELECT API is no longer useful, now that SelectQuery and SelectXXXStep are generic.
    -							</p>
    -							
    -							<h3>Factory was split into DSL (query building) and DSLContext (query execution)</h3>
    -							<p>
    -								The pre-existing Factory class has been split into two parts:
    -							</p>
    -							
    -							<ol>
    -								<li><strong>The DSL</strong>: This class contains only static factory methods. All QueryParts constructed from this class are "unattached", i.e. queries that are constructed through DSL cannot be executed immediately. This is useful for subqueries.<br/>The DSL class corresponds to the static part of the jOOQ 2.x Factory type</li>
    -								<li><strong>The DSLContext</strong>: This type holds a reference to a Configuration and can construct executable ("attached") QueryParts.<br/>The DSLContext type corresponds to the non-static part of the jOOQ 2.x Factory / FactoryOperations type.</li>
    -							</ol>
    -							
    -							<p>
    -								The FactoryOperations interface has been renamed to DSLContext. An example:
    -							</p>
    -							
    -</html><java><![CDATA[// jOOQ 2.6, check if there are any books
    -Factory create = new Factory(connection, dialect);
    -create.selectOne()
    -      .whereExists(
    -        create.selectFrom(BOOK) // Reuse the factory to create subselects
    -      ).fetch();                // Execute the "attached" query
    -
    -// jOOQ 3.0
    -DSLContext create = DSL.using(connection, dialect);
    -create.selectOne()
    -      .whereExists(
    -        selectFrom(BOOK)        // Create a static subselect from the DSL
    -      ).fetch();                // Execute the "attached" query]]></java><html>							
    -							
    -							<h3>Quantified comparison predicates</h3>
    -							<p>
    -								Field.equalAny(...) and similar methods have been removed in favour of Field.equal(any(...)). This greatly simplified the Field API. An example:
    -							</p>
    -							
    -</html><java><![CDATA[// jOOQ 2.6
    -Condition condition = BOOK.ID.equalAny(create.select(BOOK.ID).from(BOOK));
    -
    -// jOOQ 3.0 adds some typesafety to comparison predicates involving quantified selects
    -QuantifiedSelect<Record1<Integer>> subselect = any(select(BOOK.ID).from(BOOK));
    -Condition condition = BOOK.ID.equal(subselect);]]></java><html>							
    -							
    -							<h3>FieldProvider</h3>
    -							<p>
    -								The FieldProvider marker interface was removed. Its methods still exist on FieldProvider subtypes. Note, they have changed names from <code>getField()</code> to <code>field()</code> and from <code>getIndex()</code> to <code>indexOf()</code>
    -							</p>
    -							
    -							<h3>GroupField</h3>
    -							<p>
    -								GroupField has been introduced as a DSL marker interface to denote fields that can be passed to <code>GROUP BY</code> clauses. This includes all org.jooq.Field types. However, fields obtained from <code>ROLLUP()</code>, <code>CUBE()</code>, and <code>GROUPING SETS()</code> functions no longer implement Field. Instead, they only implement GroupField. An example:
    -							</p>
    -							
    -</html><java><![CDATA[// jOOQ 2.6
    -Field<?>   field1a = Factory.rollup(...); // OK
    -Field<?>   field2a = Factory.one();       // OK
    -
    -// jOOQ 3.0
    -GroupField field1b = DSL.rollup(...); // OK
    -Field<?>   field1c = DSL.rollup(...); // Compilation error
    -GroupField field2b = DSL.one();       // OK
    -Field<?>   field2c = DSL.one();       // OK]]></java><html>
    -							
    -							<h3>NULL predicate</h3>
    -							<p>
    -							   Beware! Previously, Field.equal(null) was translated internally to an IS NULL predicate. This is no longer the case. Binding Java "null" to a comparison predicate will result in a regular comparison predicate (which never returns true). This was changed for several reasons:
    -							</p>
    -							
    -							<ul>
    -								<li>To most users, this was a surprising "feature".</li>
    -								<li>Other predicates didn't behave in such a way, e.g. the IN predicate, the BETWEEN predicate, or the LIKE predicate.</li>
    -								<li>Variable binding behaved unpredictably, as IS NULL predicates don't bind any variables.</li>
    -								<li>The generated SQL depended on the possible combinations of bind values, which creates unnecessary hard-parses every time a new unique SQL statement is rendered.</li>
    -							</ul>
    -							
    -							<p>
    -								Here is an example how to check if a field has a given value, without applying SQL's ternary NULL logic:
    -							</p>
    -
    -</html><java><![CDATA[String possiblyNull = null; // Or else...
    -
    -// jOOQ 2.6
    -Condition condition1 = BOOK.TITLE.equal(possiblyNull);
    -
    -// jOOQ 3.0
    -Condition condition2 = BOOK.TITLE.equal(possiblyNull).or(BOOK.TITLE.isNull().and(val(possiblyNull).isNull()));
    -Condition condition3 = BOOK.TITLE.isNotDistinctFrom(possiblyNull);]]></java><html>
    -							
    -							<h3>Configuration</h3>
    -							<p>
    -								<code>DSLContext</code>, <code>ExecuteContext</code>, <code>RenderContext</code>, <code>BindContext</code> no longer extend <code>Configuration</code> for "convenience". From jOOQ 3.0 onwards, composition is chosen over inheritance as these objects are not really configurations. Most importantly
    -							</p>
    -							<ul>
    -								<li><code>DSLContext</code> is only a DSL entry point for constructing "attached" QueryParts</li>
    -								<li><code>ExecuteContext</code> has a well-defined lifecycle, tied to that of a single query execution</li>
    -								<li><code>RenderContext</code> has a well-defined lifecycle, tied to that of a single rendering operation</li>
    -								<li><code>BindContext</code> has a well-defined lifecycle, tied to that of a single variable binding operation</li>
    -							</ul>
    -							<p>
    -								In order to resolve confusion that used to arise because of different lifecycle durations, these types are now no longer formally connected through inheritance.
    -							</p>
    -							
    -							<h3>ConnectionProvider</h3>
    -							<p>
    -							    In order to allow for simpler connection / data source management, jOOQ externalised connection handling in a new ConnectionProvider type. The previous two connection modes are maintained backwards-compatibly (JDBC standalone connection mode, pooled DataSource mode). Other connection modes can be injected using:
    -							</p>
    -
    -</html><java><![CDATA[public interface ConnectionProvider {
    -
    -    // Provide jOOQ with a connection
    -    Connection acquire() throws DataAccessException;
    -  
    -    // Get a connection back from jOOQ
    -    void release(Connection connection) throws DataAccessException;
    -}]]></java><html>
    -							
    -							<p>
    -							    These are some side-effects of the above change
    -							</p>
    -							
    -							<ul>
    -								<li>Connection-related JDBC wrapper utility methods (commit, rollback, etc) have been moved to the new DefaultConnectionProvider. They're no longer available from the DSLContext. This had been confusing to some users who called upon these methods while operating in pool DataSource mode.</li>
    -							</ul>
    -							
    -							<h3>ExecuteListeners</h3>
    -							<p>
    -								ExecuteListeners can no longer be configured via Settings. Instead they have to be injected into the Configuration. This resolves many class loader issues that were encountered before. It also helps listener implementations control their lifecycles themselves.
    -							</p>
    -							
    -							<h3>Data type API</h3>
    -							<p>
    -								The data type API has been changed drastically in order to enable some new DataType-related features. These changes include:
    -							</p>
    -
    -							<ul>
    -								<li>[SQLDialect]DataType and SQLDataType no longer implement DataType. They're mere constant containers</li>
    -								<li>Various minor API changes have been done.</li>
    -							</ul>
    -														
    -							<h3>Object renames</h3>
    -							<p>
    -								These objects have been moved / renamed:
    -							</p>
    -							
    -							<ul>
    -								<li>jOOU: a library used to represent unsigned integer types was moved from <code>org.jooq.util.unsigned</code> to <code>org.jooq.util.types</code> (which already contained INTERVAL data types)</li>
    -							</ul>
    -							
    -							<h3>Feature removals</h3>
    -							<p>
    -								Here are some minor features that have been removed in jOOQ 3.0
    -							</p>
    -
    -							<ul>
    -								<li>The ant task for code generation was removed, as it was not up to date at all. Code generation through ant can be performed easily by calling jOOQ's GenerationTool through a &lt;java> target.</li>
    -								<li>The navigation methods and "foreign key setters" are no longer generated in Record classes, as they are useful only to few users and the generated code is very collision-prone.</li>
    -								<li>The code generation configuration no longer accepts comma-separated regular expressions. Use the regex pipe | instead.</li>
    -								<li>The code generation configuration can no longer be loaded from .properties files. Only XML configurations are supported.</li>
    -								<li>The master data type feature is no longer supported. This feature was unlikely to behave exactly as users expected. It is better if users write their own code generators to generate master enum data types from their database tables. jOOQ's enum mapping and converter features sufficiently cover interacting with such user-defined types.</li>
    -								<li>The DSL subtypes are no longer instanciable. As DSL now only contains static methods, subclassing is no longer useful. There are still dialect-specific DSL types providing static methods for dialect-specific functions. But the code-generator no longer generates a schema-specific DSL</li>
    -								<li>The concept of a "main key" is no longer supported. The code generator produces UpdatableRecords only if the underlying table has a PRIMARY KEY. The reason for this removal is the fact that "main keys" are not reliable enough. They were chosen arbitrarily among UNIQUE KEYs.</li>
    -								<li>The UpdatableTable type has been removed. While adding significant complexity to the type hierarchy, this type adds not much value over a simple <code>Table.getPrimaryKey() != null</code> check.</li>
    -							    <li>The <code>USE</code> statement support has been removed from jOOQ. Its behaviour was ill-defined, while it didn't work the same way (or didn't work at all) in some databases.</li>
    -                            </ul>
    -						</html></content>
    -					</section>
    -
    -					<!-- 
    -					<section id="reference-glossary">
    -					  Analytical function -> window function
    -					  Arity -> Degree
    -					  AST
    -					  Batch
    -					  BNF
    -					  Catalog
    -					  Clause
    -					  Code generation
    -					  Column -> Field
    -					  Column expression
    -					  Common table expression
    -					  Condition -> Predicate
    -					  Configuration
    -					  Connection
    -					  Console
    -					  CRUD -> OLTP
    -					  DAO
    -					  Database
    -					  DataSource
    -					  Degree
    -					  Dialect
    -					  Domain Specific language (internal / external)
    -                      DSL
    -                      DSLContext
    -					  Execute
    -					  Execute listener
    -					  Execution lifecycle
    -					  Export
    -					  Expression
    -					  Fetch
    -					  Field
    -					  Function
    -					  Generic R-type
    -					  Generic T-type
    -					  JDBC
    -					  JPQL
    -					  Hibernate
    -					  Hierarchical query
    -					  HQL
    -					  Identifier
    -					  Import
    -					  Keyword
    -					  LINQ
    -					  Literal
    -					  Locking (optimistic / pessimistic)
    -					  Name -> Identifier
    -					  OLAP
    -					  OLTP
    -					  Pivot
    -					  POJO
    -					  Predicate
    -					  PreparedStatement
    -					  Procedure
    -					  Projection
    -					  Query
    -					  Schema
    -					  Settings
    -					  SLICK
    -					  SQL
    -					  SQL building
    -					  SQL execution
    -					  SQL standard
    -					  Statement
    -					  Table
    -					  Table expression
    -					  Record
    -					  Row
    -					  Row value expression
    -					  Result
    -					  ResultQuery
    -					  UDT
    -					  View
    -					  Window function
    -					
    -					</section>
    -					  -->
    -
    -					<section id="reference-credits">
    -						<title>Credits</title>
    -						<content><html>
    -							<p>
    -								jOOQ lives in a very challenging ecosystem. The Java to SQL interface is still one of the most important system interfaces. Yet there are still a lot of open questions, best practices and no "true" standard has been established. This situation gave way to a lot of tools, APIs, utilities which essentially tackle the same problem domain as jOOQ. jOOQ has gotten great inspiration from pre-existing tools and this section should give them some credit. Here is a list of inspirational tools in alphabetical order:
    -							</p>
    -							<ul>
    -								<li><a href="http://avaje.org">Avajé EBean</a>: Play! Framework's preferred ORM has a feature called asynchronous query execution. This idea made it into jOOQ as <reference class="org.jooq.ResultQuery" anchor="#fetchLater()"/></li>
    -								<li><a href="http://www.hibernate.org">Hibernate</a>: The de-facto standard (JPA) with its useful table-to-POJO mapping features have influenced jOOQ's <reference class="org.jooq.ResultQuery" anchor="#fetchInto(java.lang.Class)"/> facilities</li>
    -								<li><a href="http://www.h2database.com/html/jaqu.html">JaQu</a>: H2's own fluent API for querying databases</li>
    -								<li><a href="http://www.oracle.com/technetwork/java/javaee/tech/persistence-jsp-140049.html">JPA</a>: The de-facto standard in the javax.persistence packages, supplied by Oracle. Its annotations are useful to jOOQ as well.</li>
    -								<li><a href="http://onewebsql.com">OneWebSQL</a>: A commercial SQL abstraction API with support for DAO source code generation, which was integrated also in jOOQ</li>
    -								<li><a href="http://www.querydsl.com">QueryDSL</a>: A "LINQ-port" to Java. It has a similar fluent API, a similar code-generation facility, yet quite a different purpose. While jOOQ is all about SQL, QueryDSL (like LINQ) is mostly about querying.</li>
    -								<li><a href="http://slick.typesafe.com">SLICK</a>: A "LINQ-like" database abstraction layer for Scala. Unlike LINQ, its API doesn't really remind of SQL. Instead, it makes SQL look like Scala.</li>
    -								<li><a href="http://www.springsource.org/features/data-access">Spring Data</a>: Spring's JdbcTemplate knows RowMappers, which are reflected by jOOQ's <reference id="recordhandler"/> or <reference id="recordmapper"/></li>
    -							</ul>
    -						</html></content>
    -					</section>
    -				</sections>
    -			</section>
    -		</sections>
    -	</section>
    -</manual>
    diff --git a/jOOQ-website/src/main/resources/manual-3.1.xml b/jOOQ-website/src/main/resources/manual-3.1.xml
    deleted file mode 100644
    index db12d84491..0000000000
    --- a/jOOQ-website/src/main/resources/manual-3.1.xml
    +++ /dev/null
    @@ -1,11008 +0,0 @@
    -<?xml version="1.0" encoding="UTF-8"?>
    -<!-- 
    -  - Copyright (c) 2009-2013, Lukas Eder, lukas.eder@gmail.com
    -  - All rights reserved.
    -  -
    -  - This software is licensed to you under the Apache License, Version 2.0
    -  - (the "License"); You may obtain a copy of the License at
    -  -
    -  -   http://www.apache.org/licenses/LICENSE-2.0
    -  -
    -  - Redistribution and use in source and binary forms, with or without
    -  - modification, are permitted provided that the following conditions are met:
    -  -
    -  - . Redistributions of source code must retain the above copyright notice, this
    -  -   list of conditions and the following disclaimer.
    -  -
    -  - . Redistributions in binary form must reproduce the above copyright notice,
    -  -   this list of conditions and the following disclaimer in the documentation
    -  -   and/or other materials provided with the distribution.
    -  -
    -  - . Neither the name "jOOQ" nor the names of its contributors may be
    -  -   used to endorse or promote products derived from this software without
    -  -   specific prior written permission.
    -  -
    -  - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    -  - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -  - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -  - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -  - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -  - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -  - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -  - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -  - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -  - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -  - POSSIBILITY OF SUCH DAMAGE.
    -  -->
    -<manual>
    -	<section id="manual">
    -		<title>The jOOQ User Manual. Multiple Pages</title>
    -		<content><html>
    -			<h2 id="Overview"><a href="#Overview" name="Overview">#</a> Overview</h2>
    -			<p>This manual is divided into six main sections:</p>
    -
    -			<ul>
    -				<li>
    -					<reference id="getting-started"/>
    -					<p>
    -						This section will get you started with jOOQ quickly. It contains
    -						simple explanations about what jOOQ is, what jOOQ isn't and how
    -						to set it up for the first time
    -					</p>
    -				</li>
    -				<li>
    -					<reference id="sql-building"/>
    -					<p>
    -						This section explains all about the jOOQ syntax used for building
    -						queries. It explains the central factories, the supported SQL
    -						statements and various other syntax elements
    -					</p>
    -				</li>
    -				<li>
    -					<reference id="code-generation"/>
    -					<p>
    -						This section explains how to configure and use the built-in source code
    -						generator
    -					</p>
    -				</li>
    -				<li>
    -					<reference id="sql-execution"/>
    -					<p>
    -						This section will get you through the specifics of what can be done
    -						with jOOQ at runtime, in order to execute queries, perform CRUD
    -						operations, import and export data, and hook into the jOOQ execution
    -						lifecycle for debugging
    -					</p>
    -				</li>
    -				<li>
    -					<reference id="tools"/>
    -					<p>
    -						This section is dedicated to tools that ship with jOOQ, such as the
    -						jOOQ console
    -					</p>
    -				</li>
    -				<li>
    -					<reference id="reference"/>
    -					<p>
    -						This section is a reference for elements in this manual
    -					</p>
    -				</li>
    -			</ul>
    -		</html></content>
    -
    -		<sections>
    -			<section id="preface">
    -				<title>Preface</title>
    -				<content><html>
    -					<h3>jOOQ's reason for being - compared to JPA</h3>
    -					<p>
    -						Java and SQL have come a long way. SQL is an "ancient", yet established and well-understood technology. Java is a legacy too, although its platform JVM allows for many new and contemporary languages built on top of it. Yet, after all these years, libraries dealing with the interface between SQL and Java have come and gone, leaving JPA to be a standard that is accepted only with doubts, short of any surviving options.
    -					</p>
    -					<p>
    -						So far, there had been only few database abstraction frameworks or libraries, that truly respected SQL as a first class citizen among languages. Most frameworks, including the industry standards JPA, EJB, Hibernate, JDO, Criteria Query, and many others try to hide SQL itself, minimising its scope to things called JPQL, HQL, JDOQL and various other inferior query languages
    -					</p>
    -					<p>
    -						jOOQ has come to fill this gap.
    -					</p>
    -
    -					<h3>jOOQ's reason for being - compared to LINQ</h3>
    -					<p>
    -						Other platforms incorporate ideas such as LINQ (with LINQ-to-SQL), or Scala's SLICK, or also Java's QueryDSL to better integrate querying as a concept into their respective language. By querying, they understand querying of arbitrary targets, such as SQL, XML, Collections and other heterogeneous data stores. jOOQ claims that this is going the wrong way too.
    -					</p>
    -					<p>
    - 						In more advanced querying use-cases (more than simple CRUD and the occasional JOIN), people will want to profit from the expressivity of SQL. Due to the relational nature of SQL, this is quite different from what object-oriented and partially functional languages such as C#, Scala, or Java can offer.
    - 					</p>
    - 					<p>
    - 						It is very hard to formally express and validate joins and the ad-hoc table expression types they create. It gets even harder when you want support for more advanced table expressions, such as pivot tables, unnested cursors, or just arbitrary projections from derived tables. With a very strong object-oriented typing model, these features will probably stay out of scope.
    - 					</p>
    - 					<p>
    - 						In essence, the decision of creating an API that looks like SQL or one that looks like C#, Scala, Java is a definite decision in favour of one or the other platform. While it will be easier to evolve SLICK in similar ways as LINQ (or QueryDSL in the Java world), SQL feature scope that clearly communicates its underlying intent will be very hard to add, later on (e.g. how would you model Oracle's partitioned outer join syntax? How would you model ANSI/ISO SQL:1999 grouping sets? How can you support scalar subquery caching? etc...).					
    -					</p>
    -					<p>
    -						jOOQ has come to fill this gap.
    -					</p>
    -					
    -					<h3>jOOQ's reason for being - compared to SQL / JDBC</h3>
    -					<p>
    -						So why not just use SQL?
    -					</p> 
    -					<p>
    -						SQL can be written as plain text and passed through the JDBC API. Over the years, people have become wary of this approach for many reasons:
    -					</p>
    -					<ul>
    -						<li>No typesafety</li>
    -						<li>No syntax safety</li>
    -						<li>No bind value index safety</li>
    -						<li>Verbose SQL String concatenation</li>
    -						<li>Boring bind value indexing techniques</li>
    -						<li>Verbose resource and exception handling in JDBC</li>
    -						<li>A very "stateful", not very object-oriented JDBC API, which is hard to use</li>
    -					</ul>
    -					<p>
    -						For these many reasons, other frameworks have tried to abstract JDBC away in the past in one way or another. Unfortunately, many have completely abstracted SQL away as well
    -					</p>
    -					<p>
    -						jOOQ has come to fill this gap.
    -					</p>					
    -					
    -					<h3>jOOQ is different</h3>
    -					<p>
    -						SQL was never meant to be abstracted. To be confined in the narrow boundaries of heavy mappers, hiding the beauty and simplicity of relational data. SQL was never meant to be object-oriented. SQL was never meant to be anything other than... SQL!
    -					</p>					
    -				</html></content>
    -			</section>
    -			
    -			<section id="copyright">
    -				<title>Copyright, License, and Trademarks</title>
    -				<content><html>
    -                    <p>
    -                        This section lists the various licenses that apply to different versions of jOOQ. Prior to version 3.2, jOOQ was shipped for free under the terms of the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache Software License 2.0</a>. With jOOQ 3.2, jOOQ became dual-licensed: <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache Software License 2.0</a> (for use with Open Source databases) and <a href="http://www.jooq.org/licensing">commercial</a> (for use with commercial databases). Please contact <a href="mailto:sales@datageekery.com">sales@datageekery.com</a>, should you have any questions regarding licensing.
    -                    </p>
    -                    <h3>License for jOOQ 1.x, 2.x, 3.0, 3.1</h3>
    -                    
    -</html><text>Copyright (c) 2009-2013, Lukas Eder, lukas.eder@gmail.com
    -All rights reserved.
    -
    -This software is licensed to you under the Apache License, Version 2.0
    -(the "License"); You may obtain a copy of the License at
    -
    -  http://www.apache.org/licenses/LICENSE-2.0
    -
    -Redistribution and use in source and binary forms, with or without
    -modification, are permitted provided that the following conditions are met:
    -
    -. Redistributions of source code must retain the above copyright notice, this
    -  list of conditions and the following disclaimer.
    -
    -. Redistributions in binary form must reproduce the above copyright notice,
    -  this list of conditions and the following disclaimer in the documentation
    -  and/or other materials provided with the distribution.
    -
    -. Neither the name "jOOQ" nor the names of its contributors may be
    -  used to endorse or promote products derived from this software without
    -  specific prior written permission.
    -
    -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -POSSIBILITY OF SUCH DAMAGE.</text><html>
    -
    -                    <h3>License for jOOQ 3.2 and later</h3>
    -                    
    -</html><text>Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com)
    -All rights reserved.
    -
    -This work is dual-licensed
    -- under the Apache Software License 2.0 (the "ASL")
    -- under the jOOQ License and Maintenance Agreement (the "jOOQ License")
    -=============================================================================
    -You may choose which license applies to you:
    -
    -- If you're using this work with Open Source databases, you may choose
    -  either ASL or jOOQ License.
    -- If you're using this work with at least one commercial database, you must
    -  choose jOOQ License
    -
    -For more information, please visit http://www.jooq.org/licenses
    -
    -Apache Software License 2.0:
    ------------------------------------------------------------------------------
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    - http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -
    -jOOQ License and Maintenance Agreement:
    ------------------------------------------------------------------------------
    -Data Geekery grants the Customer the non-exclusive, timely limited and
    -non-transferable license to install and use the Software under the terms of
    -the jOOQ License and Maintenance Agreement.
    -
    -This library is distributed with a LIMITED WARRANTY. See the jOOQ License
    -and Maintenance Agreement for more details: http://www.jooq.org/licensing</text><html>
    -
    -                    <h3>Trademarks owned by Data Geekeryâ„¢ GmbH</h3>
    -                    <ul>
    -                        <li>jOOQâ„¢ is a trademark by Data Geekeryâ„¢ GmbH</li>
    -                        <li>jOOXâ„¢ is a trademark by Data Geekeryâ„¢ GmbH</li>
    -                        <li>jOORâ„¢ is a trademark by Data Geekeryâ„¢ GmbH</li>
    -                        <li>jOOUâ„¢ is a trademark by Data Geekeryâ„¢ GmbH</li>
    -                    </ul>
    -                    
    -                    <h3>Trademarks owned by database vendors with no affiliation to Data Geekeryâ„¢ GmbH</h3>
    -                    <ul>
    -                        <li>Access® is a registered trademark of Microsoft® Inc.</li>
    -                        <li>Adaptive Server® Enterprise is a registered trademark of Sybase®, Inc.</li>
    -                        <li>CUBRID™ is a trademark of NHN® Corp.</li>
    -                        <li>DB2® is a registered trademark of IBM® Corp.</li>
    -                        <li>Derby is a trademark of the Apacheâ„¢ Software Foundation</li>
    -                        <li>H2 is a trademark of the H2 Group</li>
    -                        <li>HSQLDB is a trademark of The hsql Development Group</li>
    -                        <li>Ingres is a trademark of Actianâ„¢ Corp.</li>
    -                        <li>MariaDB is a trademark of Monty Program Ab</li>
    -                        <li>MySQL® is a registered trademark of Oracle® Corp.</li>
    -                        <li>Firebird® is a registered trademark of Firebird Foundation Inc.</li>
    -                        <li>Oracle® database is a registered trademark of Oracle® Corp.</li>
    -                        <li>PostgreSQL® is a registered trademark of The PostgreSQL Global Development Group</li>
    -                        <li>Postgres Plus® is a registered trademark of EnterpriseDB® software</li>
    -                        <li>SQL Anywhere® is a registered trademark of Sybase®, Inc.</li>
    -                        <li>SQL Server® is a registered trademark of Microsoft® Inc.</li>
    -                        <li>SQLite is a trademark of Hipp, Wyrick &amp; Company, Inc.</li>
    -                    </ul>
    -                    
    -                    <h3>Other trademarks by vendors with no affiliation to Data Geekeryâ„¢ GmbH</h3>
    -                    <ul>
    -                        <li>Java® is a registered trademark by Oracle® Corp. and/or its affiliates</li>
    -                        <li>Scala is a trademark of EPFL</li>
    -                    </ul>
    -                    
    -                    <h3>Other trademark remarks</h3>
    -                    <p>
    -                        Other names may be trademarks of their respective owners.
    -                    </p>
    -                    
    -                    <p>
    -                        Throughout the manual, the above trademarks are referenced without a formal ® (R) or ™ (TM) symbol. It is believed that referencing third-party trademarks in this manual or on the jOOQ website constitutes "fair use". Please <a href="mailto:contact@datageekery.com">contact us</a> if you think that your trademark(s) are not properly attributed.
    -                    </p>
    -				</html></content>
    -			</section>
    -			
    -			<section id="getting-started">
    -				<title>Getting started with jOOQ</title>
    -				<content><html>
    -					<p>
    -						These chapters contain a quick overview of how to get started with this manual and with jOOQ. While the subsequent chapters contain a lot of reference information, this chapter here just wraps up the essentials.
    -					</p>
    -				</html></content>
    -
    -				<sections>
    -					<section id="the-manual">
    -					    <title>How to read this manual</title>
    -						<content><html>
    -							<p>
    -								This section helps you correctly interpret this manual in the context of jOOQ.
    -							</p>
    -							
    -							<h3>Code blocks</h3>
    -							<p>
    -								The following are code blocks:
    -							</p>
    -							
    -</html><sql><![CDATA[-- A SQL code block
    -SELECT 1 FROM DUAL]]></sql><java><![CDATA[// A Java code block
    -for (int i = 0; i < 10; i++);]]></java><xml><![CDATA[<!-- An XML code block -->
    -<hello what="world"></hello>]]></xml><config><![CDATA[# A config file code block
    -org.jooq.property=value]]></config><html>		
    -
    -							<p>
    -								These are useful to provide examples in code. Often, with jOOQ, it is even more useful to compare SQL code with its corresponding Java/jOOQ code. When this is done, the blocks are aligned side-by-side, with SQL usually being on the left, and Java usually being on the right:
    -							</p>					
    -							
    -</html><code-pair>
    -<sql><![CDATA[-- In SQL:
    -SELECT 1 FROM DUAL]]></sql><java><![CDATA[// Using jOOQ:
    -create.selectOne()]]></java>
    -</code-pair><html>
    -
    -							<h3>Code block contents</h3>
    -							<p>
    -								The contents of code blocks follow conventions, too. If nothing else is mentioned next to any given code block, then the following can be assumed:
    -							</p>
    -							
    -							
    -</html><sql><![CDATA[-- SQL assumptions
    -------------------
    -
    --- If nothing else is specified, assume that the Oracle syntax is used 
    -SELECT 1 FROM DUAL]]></sql><java><![CDATA[// Java assumptions
    -// ----------------
    - 
    -// Whenever you see "standalone functions", assume they were static imported from org.jooq.impl.DSL 
    -exists(); max(); min(); val(); inline(); // correspond to DSL.exists(); DSL.max(); DSL.min(); etc...
    -
    -// Whenever you see BOOK/Book, AUTHOR/Author and similar entities, assume they were (static) imported from the generated schema
    -BOOK.TITLE, AUTHOR.LAST_NAME // correspond to com.example.generated.Tables.BOOK.TITLE, com.example.generated.Tables.BOOK.TITLE
    -
    -// Whenever you see "create" being used in Java code, assume that this is an instance of org.jooq.DSLContext.
    -// The reason why it is called "create" is the fact, that a jOOQ QueryPart is being created from the DSL object:
    -DSLContext create = DSL.using(connection, SQLDialect.ORACLE);]]></java><html>
    -
    -                            <p>
    -                                Your naming may differ, of course. For instance, you could name the "create" instance "db", instead.
    -                            </p>
    -
    -							<h3>Degree (arity)</h3>
    -							<p>
    -							    jOOQ records (and many other API elements) have a degree N between 1 and {max-row-degree}. The variable degree of an API element is denoted as [N], e.g. Row[N] or Record[N]. The term "degree" is preferred over arity, as "degree" is the term used in the SQL standard, whereas "arity" is used more often in mathematics and relational theory.
    -							</p>
    -
    -							<h3>Settings</h3>
    -							<p>
    -								jOOQ allows to override runtime behaviour using <reference class="org.jooq.conf.Settings"/>. If nothing is specified, the default runtime settings are assumed.
    -							</p>
    -							
    -							<h3>Sample database</h3>
    -							<p>
    -								jOOQ query examples run against the sample database. See the manual's section about <reference id="sample-database" title="the sample database used in this manual"/> to learn more about the sample database.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -					<section id="sample-database">
    -					    <title>The sample database used in this manual</title>
    -						<content><html>
    -							<p>
    -							For the examples in this manual, the same database will always be referred to. It essentially consists of these entities created using the Oracle dialect
    -							</p>
    -</html><sql>CREATE TABLE language (
    -  id              NUMBER(7)     NOT NULL PRIMARY KEY,
    -  cd              CHAR(2)       NOT NULL,
    -  description     VARCHAR2(50)
    -)
    -
    -CREATE TABLE author (
    -  id              NUMBER(7)     NOT NULL PRIMARY KEY,
    -  first_name      VARCHAR2(50),
    -  last_name       VARCHAR2(50)  NOT NULL,
    -  date_of_birth   DATE,
    -  year_of_birth   NUMBER(7),
    -  distinguished   NUMBER(1)
    -)
    -
    -CREATE TABLE book (
    -  id              NUMBER(7)     NOT NULL PRIMARY KEY,
    -  author_id       NUMBER(7)     NOT NULL,
    -  title           VARCHAR2(400) NOT NULL,
    -  published_in    NUMBER(7)     NOT NULL,
    -  language_id     NUMBER(7)     NOT NULL,
    -  
    -  CONSTRAINT fk_book_author     FOREIGN KEY (author_id)   REFERENCES author(id),
    -  CONSTRAINT fk_book_language   FOREIGN KEY (language_id) REFERENCES language(id)
    -)
    -
    -CREATE TABLE book_store (
    -  name            VARCHAR2(400) NOT NULL UNIQUE
    -)
    -
    -CREATE TABLE book_to_book_store (
    -  name            VARCHAR2(400) NOT NULL,
    -  book_id         INTEGER       NOT NULL,
    -  stock           INTEGER,
    -  
    -  PRIMARY KEY(name, book_id),
    -  CONSTRAINT fk_b2bs_book_store FOREIGN KEY (name)        REFERENCES book_store (name) ON DELETE CASCADE,
    -  CONSTRAINT fk_b2bs_book       FOREIGN KEY (book_id)     REFERENCES book (id)         ON DELETE CASCADE
    -)</sql><html>
    -							<p>
    -								More entities, types (e.g. UDT's, ARRAY types, ENUM types, etc), stored procedures and packages are introduced for specific examples
    -							</p>
    -						</html></content>
    -					</section>
    -
    -					<section id="use-cases">
    -						<title>Different use cases for jOOQ</title>
    -						<content><html>
    -							<p>
    -								jOOQ has originally been created as a library for complete abstraction of JDBC and all database interaction. Various best practices that are frequently encountered in pre-existing software products are applied to this library. This includes:
    -							</p>
    -							<ul>
    -								<li>Typesafe database object referencing through generated schema, table, column, record, procedure, type, dao, pojo artefacts (see the chapter about <reference id="code-generation" title="code generation"/>)</li>
    -								<li>Typesafe SQL construction through a complete API modelling SQL as a domain specific language in Java (see the chapter about <reference id="dsl-and-non-dsl" title="the DSL API"/>)</li>
    -								<li>Convenient query execution through an improved API for result fetching (see the chapters about <reference id="fetching" title="the various types of data fetching"/>)</li>
    -								<li>SQL dialect abstraction and SQL clause simulation to improve cross-database compatibility and to enable missing features in simpler databases (see the chapter about <reference id="sql-dialects" title="SQL dialects"/>)</li>
    -								<li>SQL logging and debugging using jOOQ as an integral part of your development process (see the chapters about <reference id="logging" title="logging"/> and about the <reference id="jooq-console" title="jOOQ Console"/>)</li>
    -							</ul>
    -							<p>
    -								Effectively, jOOQ was originally designed to replace any other database abstraction framework short of the ones handling connection pooling and transaction management (see also the <reference id="reference-credits" title="credits for other database abstraction libraries"/>)
    -							</p>
    -							
    -							<h3>Use jOOQ the way you prefer</h3>
    -							<p>
    -								... but open source is community-driven. And the community has shown various ways of using jOOQ that diverge from its original intent. Some use cases encountered are:
    -							</p>
    -							<ul>
    -								<li>Using Hibernate for 70% of the queries (i.e. <reference id="crud-with-updatablerecords" title="CRUD"/>) and jOOQ for the remaining 30% where SQL is really needed</li>
    -								<li>Using jOOQ for SQL building and JDBC for SQL execution</li> 
    -								<li>Using jOOQ for SQL building and Spring Data for SQL execution</li>
    -								<li>Using jOOQ without the <reference id="code-generation" title="source code generator"/> to build the basis of a framework for dynamic SQL execution.</li> 
    -							</ul>
    -							
    -							<p>
    -								The following sections explain about various use cases for using jOOQ in your application.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="jooq-as-a-standalone-sql-builder">
    -								<title>jOOQ as a SQL builder</title>
    -								<content><html>
    -									<p>
    -										This is the most simple of all use cases, allowing for construction of valid SQL for any database. In this use case, you will not use <reference id="jooq-as-a-sql-builder-with-code-generation" title="jOOQ's code generator"/> and probably not even <reference id="jooq-as-a-sql-executor" title="jOOQ's query execution facilities"/>. Instead, you'll use jOOQ to wrap strings, literals and other user-defined objects into an object-oriented, type-safe AST modelling your SQL statements. An example is given here: 
    -									</p>
    -									
    -</html><java><![CDATA[// Fetch a SQL string from a jOOQ Query in order to manually execute it with another tool.
    -String sql = create.select(fieldByName("BOOK","TITLE"), fieldByName("AUTHOR","FIRST_NAME"), fieldByName("AUTHOR","LAST_NAME"))
    -                   .from(tableByName("BOOK"))
    -                   .join(tableByName("AUTHOR"))
    -                   .on(fieldByName("BOOK", "AUTHOR_ID").equal("AUTHOR", "ID"))
    -                   .where(fieldByName("BOOK", "PUBLISHED_IN").equal(1948))
    -                   .getSQL();]]></java><html>
    -                   
    -                   					<p>
    -                   						The SQL string that you can generate as such can then be executed using JDBC directly, using Spring's JdbcTemplate, using Apache DbUtils and many other tools.
    -                   					</p>
    -                   					<p>
    -                   						If you wish to use jOOQ only as a SQL builder, the following sections of the manual will be of interest to you:
    -                  					</p>
    -                  					<ul>
    -                  						<li><reference id="sql-building" title="SQL building"/>: This section contains a lot of information about creating SQL statements using the jOOQ API</li>
    -                  						<li><reference id="plain-sql" title="Plain SQL"/>: This section contains information useful in particular to those that want to supply <reference id="table-expressions" title="table expressions"/>, <reference id="column-expressions" title="column expressions"/>, etc. as plain SQL to jOOQ, rather than through generated artefacts</li>
    -                  					</ul>
    -								</html></content>
    -							</section>
    -
    -							<section id="jooq-as-a-sql-builder-with-code-generation">
    -								<title>jOOQ as a SQL builder with code generation</title>
    -								<content><html>
    -									<p>
    -										In addition to using jOOQ as a <reference id="jooq-as-a-standalone-sql-builder" title="standalone SQL builder"/>, you can also use jOOQ's code generation features in order to compile your SQL statements using a Java compiler against an actual database schema. This adds a lot of power and expressiveness to just simply constructing SQL using custom strings and literals, as you can be sure that all database artefacts actually exist in the database, and that their type is correct. An example is given here: 
    -									</p>
    -
    -</html><java><![CDATA[// Fetch a SQL string from a jOOQ Query in order to manually execute it with another tool.
    -String sql = create.select(BOOK.TITLE, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -                   .from(BOOK)
    -                   .join(AUTHOR)
    -                   .on(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -                   .where(BOOK.PUBLISHED_IN.equal(1948))
    -                   .getSQL();]]></java><html>
    -                   
    -                   					<p>
    -                   						The SQL string that you can generate as such can then be executed using JDBC directly, using Spring's JdbcTemplate, using Apache DbUtils and many other tools.
    -                   					</p>
    -                   					<p>
    -                   						If you wish to use jOOQ only as a SQL builder with code generation, the following sections of the manual will be of interest to you:
    -                  					</p>
    -                  					<ul>
    -                  						<li><reference id="sql-building" title="SQL building"/>: This section contains a lot of information about creating SQL statements using the jOOQ API</li>
    -                  						<li><reference id="code-generation" title="Code generation"/>: This section contains the necessary information to run jOOQ's code generator against your developer database</li>
    -                  					</ul>
    -								</html></content>
    -							</section>
    -
    -							<section id="jooq-as-a-sql-executor">
    -								<title>jOOQ as a SQL executor</title>
    -								<content><html>
    -									<p>
    -										Instead of any tool mentioned in the previous chapters, you can also use jOOQ directly to execute your jOOQ-generated SQL statements. This will add a lot of convenience on top of the previously discussed API for typesafe SQL construction, when you can re-use the information from generated classes to fetch records and custom data types. An example is given here:
    -									</p>
    -									
    -</html><java><![CDATA[// Typesafely execute the SQL statement directly with jOOQ
    -Result<Record3<String, String, String>> result = 
    -create.select(BOOK.TITLE, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .from(BOOK)
    -      .join(AUTHOR)
    -      .on(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -      .where(BOOK.PUBLISHED_IN.equal(1948))
    -      .fetch();]]></java><html>
    -
    -									<p>
    -										jOOQ doesn't stop here, though! You can execute any SQL with jOOQ. In other words, you can use any other SQL building tool and run the SQL statements with jOOQ. An example is given here:
    -									</p>
    -
    -</html><java><![CDATA[// Use your favourite tool to construct SQL strings:
    -String sql = "SELECT title, first_name, last_name FROM book JOIN author ON book.author_id = author.id " +
    -             "WHERE book.published_in = 1984";
    -
    -// Fetch results using jOOQ
    -Result<Record> result = create.fetch(sql);
    -
    -// Or execute that SQL with JDBC, fetching the ResultSet with jOOQ:
    -ResultSet rs = connection.createStatement().executeQuery(sql);
    -Result<Record> result = create.fetch(rs);]]></java><html>
    -
    -									<p>
    -                   						If you wish to use jOOQ as a SQL executor with (or without) code generation, the following sections of the manual will be of interest to you:
    -                  					</p>
    -                  					<ul>
    -                  						<li><reference id="sql-building" title="SQL building"/>: This section contains a lot of information about creating SQL statements using the jOOQ API</li>
    -                  						<li><reference id="code-generation" title="Code generation"/>: This section contains the necessary information to run jOOQ's code generator against your developer database</li>
    -                  						<li><reference id="sql-execution" title="SQL execution"/>: This section contains a lot of information about executing SQL statements using the jOOQ API</li>
    -                  						<li><reference id="fetching"/>: This section contains some useful information about the various ways of fetching data with jOOQ</li>
    -                  					</ul>
    -								</html></content>
    -							</section>
    -
    -							<section id="jooq-for-crud">
    -								<title>jOOQ for CRUD</title>
    -								<content><html>
    -									<p>
    -										This is probably the most complete use-case for jOOQ: Use all of jOOQ's features. Apart from jOOQ's fluent API for query construction, jOOQ can also help you execute everyday CRUD operations. An example is given here:
    -									</p>
    -
    -</html><java><![CDATA[// Fetch all authors
    -for (AuthorRecord author : create.fetch(AUTHOR)) {
    -
    -    // Skip previously distinguished authors  
    -    if ((int) author.getDistinguished() == 1)
    -        continue;
    -  
    -    // Check if the author has written more than 5 books
    -    if (author.fetchChildren(FK_BOOK_AUTHOR).size() > 5) {
    -    
    -        // Mark the author as a "distinguished" author
    -        author.setDistinguished(1);
    -        author.store();
    -    }
    -}]]></java><html>
    -
    -									<p>
    -                   						If you wish to use all of jOOQ's features, the following sections of the manual will be of interest to you (including all sub-sections):
    -                  					</p>
    -                  					<ul>
    -                  						<li><reference id="sql-building" title="SQL building"/>: This section contains a lot of information about creating SQL statements using the jOOQ API</li>
    -                  						<li><reference id="code-generation" title="Code generation"/>: This section contains the necessary information to run jOOQ's code generator against your developer database</li>
    -                  						<li><reference id="sql-execution" title="SQL execution"/>: This section contains a lot of information about executing SQL statements using the jOOQ API</li>
    -                  					</ul>
    -								</html></content>
    -							</section>
    -							
    -							<section id="jooq-for-pros">
    -								<title>jOOQ for PROs</title>
    -								<content><html>
    -									<p>
    -										jOOQ isn't just a library that helps you <reference id="sql-building" title="build"/> and <reference id="sql-execution" title="execute"/> SQL against your <reference id="code-generation" title="generated, compilable schema"/>. jOOQ ships with a lot of tools. Here are some of the most important tools shipped with jOOQ:
    -									</p>
    -									<ul>
    -										<li><reference id="jooq-console" title="jOOQ Console"/>: This small application hooks into jOOQ's execute listener support to allow for tracing, debugging and introspecting any SQL statement executed through the jOOQ API. This includes setting breakpoints, introspecting bind values, running probe SQL statements, ad-hoc patching of SQL, measuring execution times, exporting stack traces. Use this tool to better know your SQL!</li>
    -										<li><reference id="execute-listeners" title="jOOQ's Execute Listeners"/>: jOOQ allows you to hook your custom execute listeners into jOOQ's SQL statement execution lifecycle in order to centrally coordinate any arbitrary operation performed on SQL being executed. Use this for logging, identity generation, SQL tracing, performance measurements, etc.</li>
    -										<li><reference id="logging" title="Logging"/>: jOOQ has a standard DEBUG logger built-in, for logging and tracing all your executed SQL statements and fetched result sets</li>
    -										<li><reference id="stored-procedures" title="Stored Procedures"/>: jOOQ supports stored procedures and functions of your favourite database. All routines and user-defined types are generated and can be included in jOOQ's SQL building API as function references.</li>
    -										<li><reference id="batch-execution" title="Batch execution"/>: Batch execution is important when executing a big load of SQL statements. jOOQ simplifies these operations compared to JDBC</li>
    -										<li><reference id="exporting" title="Exporting"/> and <reference id="importing" title="Importing"/>: jOOQ ships with an API to easily export/import data in various formats</li>
    -									</ul>
    -									<p>
    -										If you're a power user of your favourite, feature-rich database, jOOQ will help you access all of your database's vendor-specific features, such as OLAP features, stored procedures, user-defined types, vendor-specific SQL, functions, etc. Examples are given throughout this manual.
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="tutorials">
    -						<title>Tutorials</title>
    -						<content><html>
    -							<p>
    -								Don't have time to read the full manual? Here are a couple of tutorials that will get you into the most essential parts of jOOQ as quick as possible.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="jooq-in-7-steps">
    -								<title>jOOQ in 7 easy steps</title>
    -								<content><html>
    -									<p>
    -										This manual section is intended for new users, to help them get a running application with jOOQ, quickly.
    -									</p>
    -								</html></content>
    -								
    -								<sections>
    -									<section id="jooq-in-7-steps-step1">
    -										<title>Step 1: Preparation</title>
    -										<content><html>
    -											<p>
    -												If you haven't already downloaded it, download jOOQ:<br/>
    -												<a href="https://sourceforge.net/projects/jooq/files/Release/" title="jOOQ download">https://sourceforge.net/projects/jooq/files/Release/</a>
    -											</p>
    -											
    -											<p>
    -												Alternatively, you can create a Maven dependency to download jOOQ artefacts:
    -											</p>
    -</html><xml><![CDATA[<dependency>
    -  <groupId>org.jooq</groupId>
    -  <artifactId>jooq</artifactId>
    -  <version>{jooq-version}</version>
    -</dependency>
    -<dependency>
    -  <groupId>org.jooq</groupId>
    -  <artifactId>jooq-meta</artifactId>
    -  <version>{jooq-version}</version>
    -</dependency>
    -<dependency>
    -  <groupId>org.jooq</groupId>
    -  <artifactId>jooq-codegen</artifactId>
    -  <version>{jooq-version}</version>
    -</dependency>]]></xml><html>
    -
    -											<p>
    -												Please refer to the manual's section about <reference id="codegen-configuration" title="Code generation configuration"/> to learn how to use jOOQ's code generator with Maven.
    -											</p>
    -
    -											<p>
    -												For this example, we'll be using MySQL. If you haven't already downloaded MySQL Connector/J, download it here:<br/>
    -												<a href="http://dev.mysql.com/downloads/connector/j/" target="_blank" title="MySQL JDBC driver">http://dev.mysql.com/downloads/connector/j/</a>
    -											</p>
    -
    -											<p>
    -												If you don't have a MySQL instance up and running yet, get <a href="http://www.apachefriends.org/en/xampp.html" title="XAMPP">XAMPP</a> now! XAMPP is a simple installation bundle for Apache, MySQL, PHP and Perl
    -											</p>
    -										</html></content>
    -									</section>
    -									
    -									<section id="jooq-in-7-steps-step2">
    -										<title>Step 2: Your database</title>
    -										<content><html>
    -											<p>
    -												We're going to create a database called "guestbook" and a corresponding "posts" table. Connect to MySQL via your command line client and type the following:
    -											</p>
    -											
    -</html><sql>CREATE DATABASE guestbook;
    -
    -CREATE TABLE `posts` (
    -  `id` bigint(20) NOT NULL,
    -  `body` varchar(255) DEFAULT NULL,
    -  `timestamp` datetime DEFAULT NULL,
    -  `title` varchar(255) DEFAULT NULL,
    -  PRIMARY KEY (`id`)
    -);
    -</sql></content>
    -									</section>
    -									
    -									<section id="jooq-in-7-steps-step3">
    -										<title>Step 3: Code generation</title>
    -										<content><html>
    -											<p>
    -												In this step, we're going to use jOOQ's command line tools to generate classes that map to the Posts table we just created. More detailed information about how to set up the jOOQ code generator can be found here:<br/>
    -												<reference id="code-generation" title="jOOQ manual pages about setting up the code generator"/>
    -											</p>
    -
    -											<p>
    -												The easiest way to generate a schema is to copy the jOOQ jar files (there should be 3) and the MySQL Connector jar file to a temporary directory. Then, create a guestbook.xml that looks like this:
    -											</p>
    -											
    -</html><xml><![CDATA[<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    -<configuration xmlns="http://www.jooq.org/xsd/jooq-codegen-{codegen-xsd-version}.xsd">
    -  <!-- Configure the database connection here -->
    -  <jdbc>
    -    <driver>com.mysql.jdbc.Driver</driver>
    -    <url>jdbc:mysql://localhost:3306/guestbook</url>
    -    <user>root</user>
    -    <password></password>
    -  </jdbc>
    -
    -  <generator>
    -    <!-- The default code generator. You can override this one, to generate your own code style
    -         Defaults to org.jooq.util.DefaultGenerator -->
    -    <name>org.jooq.util.DefaultGenerator</name>
    -
    -    <database>
    -      <!-- The database type. The format here is:
    -           org.util.[database].[database]Database -->
    -      <name>org.jooq.util.mysql.MySQLDatabase</name>
    -
    -      <!-- The database schema (or in the absence of schema support, in your RDBMS this
    -           can be the owner, user, database name) to be generated -->
    -      <inputSchema>guestbook</inputSchema>
    -
    -      <!-- All elements that are generated from your schema 
    -           (A Java regular expression. Use the pipe to separate several expressions)
    -           Watch out for case-sensitivity. Depending on your database, this might be important! -->
    -      <includes>.*</includes>
    -
    -      <!-- All elements that are excluded from your schema 
    -           (A Java regular expression. Use the pipe to separate several expressions).
    -           Excludes match before includes -->
    -      <excludes></excludes>
    -    </database>
    -
    -    <target>
    -      <!-- The destination package of your generated classes (within the destination directory) -->
    -      <packageName>test.generated</packageName>
    -
    -      <!-- The destination directory of your generated classes -->
    -      <directory>C:/workspace/MySQLTest/src</directory>
    -    </target>
    -  </generator>
    -</configuration>]]></xml><html>
    -											<p>
    -												Replace the username with whatever user has the appropriate privileges to query the database meta data. You'll also want to look at the other values and replace as necessary. Here are the two interesting properties:
    -											</p>
    -											<p>
    -												<code>generator.target.package</code> - set this to the parent package you want to create for the generated classes. The setting of <code>test.generated</code> will cause the <code>test.generated.Posts</code> and <code>test.generated.PostsRecord</code> to be created
    -											</p>
    -											<p>
    -												<code>generator.target.directory</code> - the directory to output to.
    -											</p>
    -											
    -											<p>
    -												Once you have the JAR files and guestbook.xml in your temp directory, type this (use colons instead of semi-colons on UNIX/Linux systems):
    -											</p>
    -
    -</html><text>java -classpath jooq-{jooq-version}.jar;jooq-meta-{jooq-version}.jar;jooq-codegen-{jooq-version}.jar;mysql-connector-java-5.1.18-bin.jar;. 
    -  org.jooq.util.GenerationTool /guestbook.xml
    -</text><html>
    -
    -											<p>
    -												Note the prefix slash before guestbook.xml. Even though it's in our working directory, we need to prepend a slash, as the configuration file is loaded from the classpath. Replace the filenames with your filenames. In this example, jOOQ {jooq-version} is being used. If everything has worked, you should see this in your console output:
    -											</p>
    -
    -</html><text>Nov 1, 2011 7:25:06 PM org.jooq.impl.JooqLogger info
    -INFO: Initialising properties  : /guestbook.xml
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Database parameters
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: ----------------------------------------------------------
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO:   dialect                : MYSQL
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO:   schema                 : guestbook
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO:   target dir             : C:/workspace/MySQLTest/src
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO:   target package         : test.generated
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: ----------------------------------------------------------
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Emptying                 : C:/workspace/MySQLTest/src/test/generated
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Generating classes in    : C:/workspace/MySQLTest/src/test/generated
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Generating schema        : Guestbook.java
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Schema generated         : Total: 122.18ms
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Sequences fetched        : 0 (0 included, 0 excluded)
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Tables fetched           : 5 (5 included, 0 excluded)
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Generating tables        : C:/workspace/MySQLTest/src/test/generated/tables
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: ARRAYs fetched           : 0 (0 included, 0 excluded)
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Enums fetched            : 0 (0 included, 0 excluded)
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: UDTs fetched             : 0 (0 included, 0 excluded)
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Generating table         : Posts.java
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Tables generated         : Total: 680.464ms, +558.284ms
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Generating Keys          : C:/workspace/MySQLTest/src/test/generated/tables
    -Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info
    -INFO: Keys generated           : Total: 718.621ms, +38.157ms
    -Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info
    -INFO: Generating records       : C:/workspace/MySQLTest/src/test/generated/tables/records
    -Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info
    -INFO: Generating record        : PostsRecord.java
    -Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info
    -INFO: Table records generated  : Total: 782.545ms, +63.924ms
    -Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info
    -INFO: Routines fetched         : 0 (0 included, 0 excluded)
    -Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info
    -INFO: Packages fetched         : 0 (0 included, 0 excluded)
    -Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info
    -INFO: GENERATION FINISHED!     : Total: 791.688ms, +9.143ms
    -</text></content>
    -									</section>
    -									
    -									<section id="jooq-in-7-steps-step4">
    -										<title>Step 4: Connect to your database</title>
    -										<content><html>
    -											<p>
    -												Let's just write a vanilla main class in the project containing the generated classes:
    -											</p>
    -											
    -</html><java><![CDATA[// For convenience, always static import your generated tables and jOOQ functions to decrease verbosity:
    -import static test.generated.Tables.*;
    -import static org.jooq.impl.DSL.*;
    -
    -public class Main {
    -    public static void main(String[] args) {
    -        Connection conn = null;
    -
    -        String userName = "root";
    -        String password = "";
    -        String url = "jdbc:mysql://localhost:3306/guestbook";
    -
    -        try {
    -            Class.forName("com.mysql.jdbc.Driver").newInstance();
    -            conn = DriverManager.getConnection(url, userName, password);
    -        } catch (Exception e) {
    -            // For the sake of this tutorial, let's keep exception handling simple
    -            e.printStackTrace();
    -        } finally {
    -            if (conn != null) {
    -                try {
    -                    conn.close();
    -                } catch (SQLException ignore) {
    -                }
    -            }
    -        }
    -    }
    -}]]></java><html>
    -
    -											<p>
    -												This is pretty standard code for establishing a MySQL connection.
    -											</p>
    -										</html></content>
    -									</section>
    -									
    -									<section id="jooq-in-7-steps-step5">
    -										<title>Step 5: Querying</title>
    -										<content><html>
    -											<p>
    -												Let's add a simple query:
    -											</p>
    -											
    -</html><java><![CDATA[DSLContext create = DSL.using(conn, SQLDialect.MYSQL);
    -Result<Record> result = create.select().from(POSTS).fetch();]]></java><html>
    -
    -											<p>
    -												First get an instance of <code>DSLContext</code> so we can write a simple <code>SELECT</code> query. We pass an instance of the MySQL connection to <code>DSL</code>. Note that the DSLContext doesn't close the connection. We'll have to do that ourselves.
    -											</p>
    -											<p>
    -												We then use jOOQ's DSL to return an instance of Result. We'll be using this result in the next step.
    -											</p>
    -										</html></content>
    -									</section>
    -									
    -									<section id="jooq-in-7-steps-step6">
    -										<title>Step 6: Iterating</title>
    -										<content><html>
    -											<p>
    -												After the line where we retrieve the results, let's iterate over the results and print out the data:
    -											</p>
    -
    -</html><java><![CDATA[for (Record r : result) {
    -    Long id = r.getValue(POSTS.ID);
    -    String title = r.getValue(POSTS.TITLE);
    -    String description = r.getValue(POSTS.BODY);
    -
    -    System.out.println("ID: " + id + " title: " + title + " desciption: " + description);
    -}]]></java><html>
    -
    -											<p>
    -												The full program should now look like this:
    -											</p>
    -											
    -</html><java><![CDATA[package test;
    -
    -// For convenience, always static import your generated tables and
    -// jOOQ functions to decrease verbosity:
    -import static test.generated.Tables.*;
    -import static org.jooq.impl.DSL.*;
    -
    -import java.sql.*;
    -
    -import org.jooq.*;
    -import org.jooq.impl.*;
    -
    -public class Main {
    -
    -    /**
    -     * @param args
    -     */
    -    public static void main(String[] args) {
    -        Connection conn = null;
    -
    -        String userName = "root";
    -        String password = "";
    -        String url = "jdbc:mysql://localhost:3306/guestbook";
    -
    -        try {
    -            Class.forName("com.mysql.jdbc.Driver").newInstance();
    -            conn = DriverManager.getConnection(url, userName, password);
    -
    -            DSLContext create = DSL.using(conn, SQLDialect.MYSQL);
    -            Result<Record> result = create.select().from(POSTS).fetch();
    -
    -            for (Record r : result) {
    -                Long id = r.getValue(POSTS.ID);
    -                String title = r.getValue(POSTS.TITLE);
    -                String description = r.getValue(POSTS.BODY);
    -
    -                System.out.println("ID: " + id + " title: " + title + " desciption: " + description);
    -            }
    -        } catch (Exception e) {
    -            // For the sake of this tutorial, let's keep exception handling simple
    -            e.printStackTrace();
    -        } finally {
    -            if (conn != null) {
    -                try {
    -                    conn.close();
    -                } catch (SQLException ignore) {
    -                }
    -            }
    -        }
    -    }
    -}]]></java></content>
    -									</section>
    -									
    -									<section id="jooq-in-7-steps-step7">
    -										<title>Step 7: Explore!</title>
    -										<content><html>
    -											<p>
    -												jOOQ has grown to be a comprehensive SQL library. For more information, please consider the documentation:<br/>
    -												<a href="http://www.jooq.org/learn.php" title="jOOQ Manual">http://www.jooq.org/learn.php</a>
    -											</p>
    -											<p>
    -												... explore the Javadoc:<br/>
    -												<a href="http://www.jooq.org/javadoc/latest/" title="jOOQ Javadoc">http://www.jooq.org/javadoc/latest/</a>
    -											</p>
    -											<p>
    -												... or join the news group:<br/>
    -												<a href="https://groups.google.com/forum/#!forum/jooq-user" title="jOOQ news group">https://groups.google.com/forum/#!forum/jooq-user</a>
    -											</p>
    -											<p>
    -											    This tutorial is the courtesy of Ikai Lan. See the original source here:<br/>
    -											    <a href="http://ikaisays.com/2011/11/01/getting-started-with-jooq-a-tutorial/" target="_blank" title="Ikai Lan's jOOQ tutorial">http://ikaisays.com/2011/11/01/getting-started-with-jooq-a-tutorial/</a>
    -											</p>
    -										</html></content>
    -									</section>
    -								</sections>
    -							</section>
    -
    -							<section id="jooq-in-modern-ides">
    -								<title>Using jOOQ in modern IDEs</title>
    -								<content><html>
    -									<p>Feel free to contribute a tutorial!</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="jooq-with-spring">
    -								<title>Using jOOQ with Spring and DBCP</title>
    -								<content><html>
    -									<p>
    -                                        jOOQ and Spring are easy to integrate. In this example, we shall integrate:
    -                                    </p>
    -                                    <ul>
    -                                        <li><a href="http://commons.apache.org/proper/commons-dbcp">Apache Commons DBCP</a> as the connection pooling library.</li>
    -                                        <li><a href="http://www.springsource.org/spring-data">Spring JDBC</a> as the transaction management library.</li>
    -                                        <li><a href="http://www.jooq.org">jOOQ</a> as the <reference id="sql-building" title="SQL building"/> and <reference id="sql-execution" title="execution"/> library.</li>
    -                                    </ul>
    -                                    
    -                                    <p>
    -                                        The following steps show how to integrate the libraries.
    -                                    </p>
    -                                    
    -                                    <h3>Add the required Maven dependencies</h3>
    -                                    <p>
    -                                        For this example, we'll create the following Maven dependencies
    -                                    </p>
    -
    -</html><xml><![CDATA[<!-- Use this or the latest Spring RELEASE version -->
    -<properties>
    -    <org.springframework.version>3.2.3.RELEASE</org.springframework.version>
    -</properties>
    -
    -<dependencies>
    -    <dependency>
    -        <groupId>org.jooq</groupId>
    -        <artifactId>jooq</artifactId>
    -        <version>{jooq-version}</version>
    -    </dependency>
    -    <dependency>
    -        <groupId>com.h2database</groupId>
    -        <artifactId>h2</artifactId>
    -        <version>1.3.168</version>
    -    </dependency>
    -    <dependency>
    -        <groupId>commons-dbcp</groupId>
    -        <artifactId>commons-dbcp</artifactId>
    -        <version>1.4</version>
    -    </dependency>
    -    <dependency>
    -        <groupId>org.springframework</groupId>
    -        <artifactId>spring-core</artifactId>
    -        <version>${org.springframework.version}</version>
    -    </dependency>
    -    <dependency>
    -        <groupId>org.springframework</groupId>
    -        <artifactId>spring-beans</artifactId>
    -        <version>${org.springframework.version}</version>
    -    </dependency>
    -    <dependency>
    -        <groupId>org.springframework</groupId>
    -        <artifactId>spring-context</artifactId>
    -        <version>${org.springframework.version}</version>
    -    </dependency>
    -    <dependency>
    -        <groupId>org.springframework</groupId>
    -        <artifactId>spring-jdbc</artifactId>
    -        <version>${org.springframework.version}</version>
    -    </dependency>
    -</dependencies>
    -]]></xml><html>          
    -
    -                                    <h3>Create a minimal Spring configuration file</h3>
    -                                    <p>
    -                                        The above dependencies are configured together using a Spring Beans configuration:
    -                                    </p>
    -                                    
    -</html><xml><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
    -<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
    -
    -<beans>
    -    <!-- Using Apache DBCP as a connection pooling library.
    -         Replace this with your preferred DataSource implementation -->
    -    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
    -        init-method="createDataSource" destroy-method="close">
    -        <property name="driverClassName" value="org.h2.Driver" />
    -        <property name="url" value="jdbc:h2:~/maven-test" />
    -        <property name="username" value="sa" />
    -        <property name="password" value="" />
    -    </bean>
    -
    -    <!-- Using Spring JDBC for transaction management -->
    -    <bean id="transactionManager"
    -        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    -        <property name="dataSource" ref="dataSource" />
    -    </bean>
    -
    -    <bean id="transactionAwareDataSource"
    -        class="org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy">
    -        <constructor-arg ref="dataSource" />
    -    </bean>
    -
    -    <!-- Bridging Spring JDBC data sources to jOOQ's ConnectionProvider -->
    -    <bean class="org.jooq.impl.DataSourceConnectionProvider" name="connectionProvider">
    -        <constructor-arg ref="transactionAwareDataSource" />
    -    </bean>
    -
    -    <bean id="dsl" class="org.jooq.impl.DefaultDSLContext">
    -        <constructor-arg ref="config" />
    -    </bean>
    -
    -    <!-- Invoking an internal, package-private constructor for the example
    -         Implement your own Configuration for more reliable behaviour -->
    -    <bean class="org.jooq.impl.DefaultConfiguration" name="config">
    -        <constructor-arg index="0" ref="connectionProvider" />
    -        <constructor-arg index="1"><null /></constructor-arg>
    -        <constructor-arg index="2"><value type="org.jooq.SQLDialect">H2</value></constructor-arg>
    -        <constructor-arg index="3"><null /></constructor-arg>
    -        <constructor-arg index="4"><null /></constructor-arg>
    -    </bean>
    -</beans>]]></xml><html>
    -
    -                                    <h3>Run a query in the JDBC Connection's transaction:</h3>
    -                                    <p>
    -                                        The following simple program shows how you can now easily obtain a <reference id="dsl-context" title="DSLContext" /> instance, from which queries can be executed:
    -                                    </p>
    -                                    
    -</html><java><![CDATA[package org.jooq.test.spring;
    -
    -import org.jooq.DSLContext;
    -
    -import org.springframework.context.ApplicationContext;
    -import org.springframework.context.support.ClassPathXmlApplicationContext;
    -
    -public class Test {
    -    public static void main(String[] args) {
    -
    -        // Configure the Spring application context, loading the bean configuration
    -        ApplicationContext context =
    -        new ClassPathXmlApplicationContext(new String[] {
    -            "jooq-spring-config-minimal.xml"
    -        });
    -
    -        // Fetch a DSLContext reference
    -        DSLContext dsl = context.getBean("dsl", DSLContext.class);
    -
    -        // Execute a jOOQ query in its JDBC Connection's transaction
    -        // ---------------------------------------------------------
    -        System.out.println(dsl.selectOne().fetch());
    -    }
    -}]]></java><html>
    -
    -                                    <p>
    -                                        The above example shows how Spring's TransactionAwareDataSourceProxy discovers that a jOOQ query is not executed in a transactional context.
    -                                    </p>
    -                                    
    -                                    <h3>Run a query in an "explicit transaction":</h3>
    -                                    <p>
    -                                        The following simple program shows how Spring's TransactionAwareDataSourceProxy will discover that several jOOQ queries are executed in the context of an explicitly created transaction 
    -                                    </p>
    -                                    
    -</html><java><![CDATA[package org.jooq.test.spring;
    -
    -import org.jooq.DSLContext;
    -
    -import org.springframework.context.ApplicationContext;
    -import org.springframework.context.support.ClassPathXmlApplicationContext;
    -
    -public class Test {
    -    public static void main(String[] args) {
    -
    -        // Configure the Spring application context, loading the bean configuration
    -        ApplicationContext context =
    -        new ClassPathXmlApplicationContext(new String[] {
    -            "jooq-spring-config-minimal.xml"
    -        });
    -
    -        // Fetch a DSLContext reference
    -        DSLContext dsl = context.getBean("dsl", DSLContext.class);
    -
    -        // Execute some jOOQ queries in an explicit transaction
    -        // ----------------------------------------------------
    -        PlatformTransactionManager transactionManager =
    -            context.getBean("transactionManager", PlatformTransactionManager.class);
    -
    -        TransactionStatus tx = transactionManager.getTransaction(new DefaultTransactionDefinition());
    -        dsl.selectOne().fetch();
    -        dsl.selectOne().fetch();
    -        dsl.selectOne().fetch();
    -        transactionManager.commit(tx);
    -    }
    -}]]></java><html>                                  
    -
    -                                    <p>
    -                                        Of course, in an actual productive setup, you are more likely to use Spring's AOP features to declare transactions and transactional behaviour on service methods, instead of explicitly starting and committing / rollbacking transactions. There are many other transaction models that you can choose to use with jOOQ.
    -                                    </p>  
    -								</html></content>
    -							</section>
    -
    -							<section id="a-simple-web-application">
    -								<title>A simple web application with jOOQ</title>
    -								<content><html>
    -									<p>Feel free to contribute a tutorial!</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -					
    -					<section id="jooq-and-scala">
    -						<title>jOOQ and Scala</title>
    -						<content><html>
    -							<p>
    -								As any other library, jOOQ can be easily used in Scala, taking advantage of the many Scala language features such as for example:
    -							</p>
    -							<ul>
    -								<li>Optional "." to dereference methods from expressions</li>
    -								<li>Optional "(" and ")" to delimit method argument lists</li>
    -								<li>Optioanl ";" at the end of a Scala statement</li>
    -								<li>Type inference using "var" and "val" keywords</li>
    -							</ul>
    -						
    -							<p>
    -								But jOOQ also leverages other useful Scala features, such as
    -							</p>
    -							<ul>
    -								<li>implicit defs for operator overloading</li>
    -								<li>Scala Macros (soon to come)</li>
    -							</ul>
    -							
    -							<p>
    -								A short example jOOQ application in Scala might look like this:
    -							</p>
    -							
    -</html><scala><![CDATA[
    -import collection.JavaConversions._                                  // Import implicit defs for iteration over org.jooq.Result
    -                                                                     //
    -import java.sql.DriverManager                                        //
    -                                                                     //
    -import org.jooq._                                                    //
    -import org.jooq.impl._                                               //
    -import org.jooq.impl.DSL._                                           //
    -import org.jooq.scala.example.h2.Tables._                            //
    -import org.jooq.scala.Conversions._                                  // Import implicit defs for overloaded jOOQ/SQL operators
    -                                                                     //
    -object Test {                                                        //
    -  def main(args: Array[String]): Unit = {                            //
    -    val c = DriverManager.getConnection("jdbc:h2:~/test", "sa", ""); // Standard JDBC connection
    -    val e = DSL.using(c, SQLDialect.H2);                             //
    -    val x = T_AUTHOR as "x"                                          // SQL-esque table aliasing
    -                                                                     //
    -    for (r <- e                                                      // Iteration over Result. "r" is an org.jooq.Record3
    -        select (                                                     //
    -          T_BOOK.ID * T_BOOK.AUTHOR_ID,                              // Using the overloaded "*" operator
    -          T_BOOK.ID + T_BOOK.AUTHOR_ID * 3 + 4,                      // Using the overloaded "+" operator
    -          T_BOOK.TITLE || " abc" || " xy"                            // Using the overloaded "||" operator
    -        )                                                            //
    -        from T_BOOK                                                  // No need to use parentheses or "." here
    -        leftOuterJoin (                                              //
    -          select (x.ID, x.YEAR_OF_BIRTH)                             // Dereference fields from aliased table
    -          from x                                                     //
    -          limit 1                                                    //
    -          asTable x.getName()                                        //
    -        )                                                            //
    -        on T_BOOK.AUTHOR_ID === x.ID                                 // Using the overloaded "===" operator
    -        where (T_BOOK.ID <> 2)                                       // Using the olerloaded "<>" operator
    -        or (T_BOOK.TITLE in ("O Alquimista", "Brida"))               // Neat IN predicate expression
    -        fetch                                                        //
    -    ) {                                                              //
    -      println(r)                                                     //
    -    }                                                                //
    -  }                                                                  //
    -}]]></scala><html>
    -
    -							<p>
    -								For more details about jOOQ's Scala integration, please refer to the manual's section about <reference id="scala-sql-building" title="SQL building with Scala"/>.
    -							</p>
    -						</html></content>
    -					</section>
    -					
    -					<section id="dependencies">
    -						<title>Dependencies</title>
    -						<content><html>
    -							<p>
    -								Dependencies are a big hassle in modern software. Many libraries depend on other, non-JDK library parts that come in different, incompatible versions, potentially causing trouble in your runtime environment. jOOQ has no external dependencies on any third-party libraries.
    -							</p>
    -							<p>
    -								However, the above rule has some exceptions:
    -							</p>
    -							<ul>
    -								<li><reference id="logging" title="logging APIs"/> are referenced as "optional dependencies". jOOQ tries to find <a href="http://www.slf4j.org/">slf4j</a> or <a href="http://logging.apache.org/log4j">log4j</a> on the classpath. If it fails, it will use the <reference class="java.util.logging.Logger"/></li>
    -								<li>Oracle ojdbc types used for array creation are loaded using reflection. The same applies to Postgres PG* types.</li>
    -								<li>Small libraries with compatible licenses are incorporated into jOOQ. These include <a href="https://github.com/jOOQ/jOOR">jOOR</a>, <a href="https://github.com/jOOQ/jOOU">jOOU</a>, parts of <a href="http://opencsv.sourceforge.net/">OpenCSV</a>, <a href="http://code.google.com/p/json-simple/">json simple</a>, parts of <a href="http://commons.apache.org/lang/">commons-lang</a></li>
    -								<li><a href="http://docs.oracle.com/javaee/6/api/javax/persistence/package-summary.html">javax.persistence</a> and <a href="http://docs.oracle.com/javaee/6/api/javax/validation/package-summary.html">javax.validation</a> will be needed if you activate the relevant <reference id="code-generation" title="code generation flags"/></li>
    -							</ul>
    -						</html></content>
    -					</section>
    -					
    -					<section id="build-your-own">
    -						<title>Build your own</title>
    -						<content><html>
    -							<p>
    -								In order to build jOOQ yourself, please download the sources from <a href="https://github.com/jOOQ/jOOQ">https://github.com/jOOQ/jOOQ</a> and use Maven to build jOOQ, preferably in Eclipse. jOOQ requires Java 6+ to compile and run.
    -							</p>
    -							<p>
    -								Some useful hints to build jOOQ yourself:
    -							</p>
    -							<ul>
    -								<li>Get the latest version of <a href="http://git-scm.com">Git</a> or <a href="http://www.eclipse.org/egit">EGit</a></li>
    -								<li>Get the latest version of <a href="http://maven.apache.org">Maven</a> or <a href="http://eclipse.org/m2e">M2E</a></li>
    -								<li>Check out the jOOQ sources from <a href="https://github.com/jOOQ/jOOQ">https://github.com/jOOQ/jOOQ</a></li>
    -								<li>Optionally, import Maven artefacts into an Eclipse workspace using the following command (see the <a href="http://maven.apache.org/plugins/maven-eclipse-plugin/">maven-eclipse-plugin</a> documentation for details):
    -									<ul>
    -										<li><code>mvn eclipse:eclipse</code></li>
    -									</ul>
    -								</li>
    -								<li>Build the <code>jooq-parent</code> artefact by using any of these commands:
    -									<ul>
    -										<li><code>mvn clean package</code><br/>create .jar files in <code>${project.build.directory}</code></li>
    -										<li><code>mvn clean install</code><br/>install the .jar files in your local repository (e.g. <code>~/.m2</code>)</li>
    -										<li><code>mvn clean {goal} -Dmaven.test.skip=true</code><br/>don't run unit tests when building artefacts</li>
    -									</ul>
    -								</li>
    -							</ul>
    -						</html></content>
    -					</section>
    -					
    -					<section id="semantic-versioning">
    -						<title>jOOQ and backwards-compatibility</title>
    -						<content><html>
    -							<p>
    -								jOOQ follows the rules of semantic versioning according to <a href="http://semver.org">http://semver.org</a> quite strictly. Those rules impose a versioning scheme [X].[Y].[Z] that can be summarised as follows:
    -							</p>
    -							<ul>
    -								<li>If a patch release includes bugfixes, performance improvements and API-irrelevant new features, [Z] is incremented by one.</li>
    -								<li>If a minor release includes backwards-compatible, API-relevant new features, [Y] is incremented by one and [Z] is reset to zero.</li>
    -								<li>If a major release includes backwards-incompatible, API-relevant new features, [X] is incremented by one and [Y], [Z] are reset to zero.</li>
    -							</ul>
    -							
    -							<h3>jOOQ's understanding of backwards-compatibility</h3>
    -							<p>
    -								Backwards-compatibility is important to jOOQ. You've chosen jOOQ as a strategic SQL engine and you don't want your SQL to break. That is why there is at most one major release per year, which changes only those parts of jOOQ's API and functionality, which were agreed upon on the user group. During the year, only minor releases are shipped, adding new features in a backwards-compatible way
    -							</p>
    -							<p>
    -								However, there are some elements of API evolution that would be considered backwards-incompatible in other APIs, but not in jOOQ. As discussed later on in the section about <reference id="dsl-and-non-dsl" title="jOOQ's DSL API"/>, much of jOOQ's API is indeed an internal domain-specific language implemented mostly using Java interfaces. Adding language elements to these interfaces means any of these actions:  
    -							</p>
    -							<ul>
    -								<li>Adding methods to the interface</li>
    -								<li>Overloading methods for convenience</li>
    -								<li>Changing the type hierarchy of interfaces</li>
    -							</ul>
    -							
    -							<p>
    -								It becomes obvious that it would be impossible to add new language elements (e.g. new <reference id="column-expressions" title="SQL functions"/>, new <reference id="select-statement" title="SELECT clauses"/>) to the API without breaking any client code that actually implements those interfaces. Hence, the following rule should be observed: 
    -							</p>
    -							
    -							<p>jOOQ's DSL interfaces should not be implemented by client code! Extend only those extension points that are explicitly documented as "extendable" (e.g. <reference id="custom-queryparts" title="custom QueryParts"/>)</p>
    -						</html></content>
    -					</section>
    -				</sections>
    -			</section>
    -
    -			<section id="sql-building">
    -				<title>SQL building</title>
    -				<content><html>
    -					<p>
    -					    SQL is a declarative language that is hard to integrate into procedural, object-oriented, functional or any other type of programming languages. jOOQ's philosophy is to give SQL the credit it deserves and integrate SQL itself as an <a href="http://en.wikipedia.org/wiki/Domain_Specific_Language">"internal domain specific language"</a> directly into Java.
    -					</p>
    -					<p>
    -						With this philosophy in mind, SQL building is the main feature of jOOQ. All other features (such as <reference id="sql-execution" title="SQL execution"/> and <reference id="code-generation" title="code generation"/>) are mere convenience built on top of jOOQ's SQL building capabilities.
    -					</p>
    -					<p>
    -						This section explains all about the various syntax elements involved with jOOQ's SQL building capabilities. For a complete overview of all syntax elements, please refer to the manual's sections about <reference id="dsl-mapping-rules" title="SQL to DSL mapping rules"/> as well as <reference id="reference-bnf-notation" title="jOOQ's BNF notation"/>
    -					</p>
    -				</html></content>
    -
    -				<sections>
    -                    <redirect id="factory" redirect-to="dsl">
    -                        <redirect id="factory-subclasses" redirect-to="dsl-subclasses"/>
    -                    </redirect>
    -                    
    -					<section id="dsl">
    -					    <title>The DSL type</title>
    -					    <content><html>
    -							<p>
    -								jOOQ exposes a lot of interfaces and hides most implementation facts from client code. The reasons for this are:
    -							</p>
    -							<ul>
    -								<li>Interface-driven design. This allows for modelling queries in a fluent API most efficiently</li>
    -								<li>Reduction of complexity for client code.</li>
    -								<li>API guarantee. You only depend on the exposed interfaces, not concrete (potentially dialect-specific) implementations.</li>
    -							</ul>
    -							<p>
    -								The <reference class="org.jooq.impl.DSL"/> class is the main class from where you will create all jOOQ objects.	It serves as a static factory for <reference id="table-expressions" title="table expressions"/>, <reference id="column-expressions" title="column expressions"/> (or "fields"), <reference id="conditional-expressions" title="conditional expressions"/> and many other <reference id="queryparts" title="QueryParts"/>.
    -							</p>
    -
    -							<h3>The static DSL API</h3>
    -							<p>
    -								With jOOQ 2.0, static factory methods have been introduced in order to make client code look more like SQL. Ideally, when working with jOOQ, you will simply static import all methods from the DSL class:
    -							</p>
    -
    -</html><java>import static org.jooq.impl.DSL.*;</java><html>
    -
    -							<p>
    -							    Note, that when working with Eclipse, you could also add the DSL to your favourites. This will allow to access functions even more fluently:
    -							</p>
    -</html><java>concat(trim(FIRST_NAME), trim(LAST_NAME));
    -
    -// ... which is in fact the same as:
    -DSL.concat(DSL.trim(FIRST_NAME), DSL.trim(LAST_NAME));</java></content>
    -					    
    -					    <sections>
    -							<section id="dsl-subclasses">
    -								<title>DSL subclasses</title>
    -								<content><html>
    -									<p>
    -										There are a couple of subclasses for the general DSL. Each SQL dialect has its own dialect-specific DSL. For instance, if you're only using the MySQL dialect, you can choose to reference the MySQLDSL instead of the standard DSL:
    -									</p>
    -									<p>
    -										The advantage of referencing a dialect-specific DSL lies in the fact that you have access to more proprietary RDMBS functionality. This may include:
    -									</p>
    -									<ul>
    -		    							<li>MySQL's encryption functions</li>
    -		    							<li>PL/SQL constructs, pgplsql, or any other dialect's ROUTINE-language (maybe in the future)</li>
    -									</ul>
    -								</html></content>
    -							</section>
    -					    </sections>
    -					</section>
    -                    
    -                    <redirect id="executor" redirect-to="dsl-context">
    -                        <redirect id="sql-dialects" redirect-to="sql-dialects"/>
    -                        <redirect id="connection-vs-datasource" redirect-to="connection-vs-datasource"/>
    -                        <redirect id="custom-data" redirect-to="custom-data"/>
    -                        <redirect id="custom-execute-listeners" redirect-to="custom-execute-listeners"/>
    -                        <redirect id="custom-settings" redirect-to="custom-settings"/>
    -                        <redirect id="runtime-schema-mapping" redirect-to="runtime-schema-mapping"/>
    -                    </redirect>
    -					
    -					<section id="dsl-context">
    -						<title>The DSLContext class</title>
    -						<content><html>
    -							<p>
    -							    DSLContext references a <reference class="org.jooq.Configuration"/>, an object that configures jOOQ's behaviour when executing queries (see <reference id="sql-execution"/> for more details). Unlike the static DSL, the DSLContext allow for creating <reference id="sql-statements" title="SQL statements"/> that are already "configured" and ready for execution.
    -							</p>
    -							
    -                            <h3>Fluent creation of a DSLContext object</h3>
    -                            <p>
    -                                The DSLContext object can be created fluently from the <reference id="dsl" title="DSL type"/>:
    -                            </p>
    -
    -</html><java><![CDATA[// Create it from a pre-existing configuration
    -DSLContext create = DSL.using(configuration);
    -
    -// Create it from ad-hoc arguments
    -DSLContext create = DSL.using(connection, dialect);]]></java><html>
    -
    -                            <p>
    -                                If you do not have a reference to a pre-existing Configuration object (e.g. created from <reference class="org.jooq.impl.DefaultConfiguration"/>), the various overloaded <code>DSL.using()</code> methods will create one for you.
    -                            </p>
    -                            
    -							<h3>Contents of a Configuration object</h3>
    -							<p>
    -							    A Configuration can be supplied with these objects:
    -							</p>
    -							<ul>
    -								<li><reference class="org.jooq.SQLDialect"/> : The dialect of your database. This may be any of the currently supported database types (see <reference id="sql-dialects"/> for more details)</li>
    -    							<li><reference class="org.jooq.conf.Settings"/> : An optional runtime configuration (see <reference id="custom-settings"/> for more details)</li>
    -								<li><reference class="org.jooq.ExecuteListenerProvider"/> : An optional reference to a provider class that can provide execute listeners to jOOQ (see <reference id="execute-listeners"/> for more details)</li>
    -                                <li><reference class="org.jooq.RecordMapperProvider"/> : An optional reference to a provider class that can provide record mappers to jOOQ (see <reference id="pojos-with-recordmapper-provider"/> for more details)</li>
    -                                <li>
    -									Any of these:
    -									<ul>
    -										<li><reference class="java.sql.Connection"/> : An optional JDBC Connection that will be re-used for the whole lifecycle of your Configuration (see <reference id="connection-vs-datasource"/> for more details). For simplicity, this is the use-case referenced from this manual, most of the time.</li>
    -		    							<li><reference class="java.sql.DataSource"/> : An optional JDBC DataSource that will be re-used for the whole lifecycle of your Configuration. If you prefer using DataSources over Connections, jOOQ will internally fetch new Connections from your DataSource, conveniently closing them again after query execution. This is particularly useful in J2EE or Spring contexts (see <reference id="connection-vs-datasource"/> for more details)</li>
    -		    							<li><reference class="org.jooq.ConnectionProvider"/> : A custom abstraction that is used by jOOQ to "acquire" and "release" connections. jOOQ will internally "acquire" new Connections from your ConnectionProvider, conveniently "releasing" them again after query execution. (see <reference id="connection-vs-datasource"/> for more details)</li>
    -									</ul>
    -								</li>
    -							</ul>
    -							
    -							<p>
    -								Wrapping a Configuration object, a DSLContext can construct <reference id="sql-statements" title="statements"/>, for later <reference id="sql-execution" title="execution"/>. An example is given here:
    -							</p>
    -</html><java><![CDATA[// The DSLContext is "configured" with a Connection and a SQLDialect
    -DSLContext create = DSL.using(connection, dialect);
    -
    -// This select statement contains an internal reference to the DSLContext's Configuration:
    -Select<?> select = create.selectOne();
    -
    -// Using the internally referenced Configuration, the select statement can now be executed:
    -Result<?> result = select.fetch();]]></java><html>
    -
    -                            <p>
    -                                Note that you do not need to keep a reference to a DSLContext. You may as well inline your local variable, and fluently execute a SQL statement as such:
    -                            </p>
    -
    -</html><java><![CDATA[// Execute a statement from a single execution chain:
    -Result<?> result =
    -DSL.using(connection, dialect)
    -   .select()
    -   .from(BOOK)
    -   .where(BOOK.TITLE.like("Animal%"))
    -   .fetch();]]></java></content>
    -
    -						<sections>
    -							<section id="sql-dialects">
    -								<title>SQL Dialect</title>
    -								<content><html>
    -									<p>
    -										While jOOQ tries to represent the SQL standard as much as possible, many features are vendor-specific to a given database and to its "SQL dialect". jOOQ models this using the <reference class="org.jooq.SQLDialect"/> enum type.
    -									</p>
    -									<p>
    -										The SQL dialect is one of the main attributes of a <reference id="dsl-context" title="Configuration"/>. Queries created from DSLContexts will assume dialect-specific behaviour when <reference id="sql-rendering" title="rendering SQL"/> and <reference id="variable-binding" title="binding bind values"/>.
    -									</p>
    -									<p>
    -										Some parts of the jOOQ API are officially supported only by a given subset of the supported SQL dialects. For instance, the <reference id="connect-by-clause" title="Oracle CONNECT BY clause"/>, which is supported by the Oracle and CUBRID databases, is annotated with a <reference class="org.jooq.Support"/> annotation, as such:
    -									</p>
    -</html><java><![CDATA[/**
    - * Add an Oracle-specific <code>CONNECT BY</code> clause to the query
    - */
    -@Support({ SQLDialect.CUBRID, SQLDialect.ORACLE })
    -SelectConnectByConditionStep<R> connectBy(Condition condition);]]></java><html>
    -
    -									<p>
    -									    jOOQ API methods which are not annotated with the <reference class="org.jooq.Support"/> annotation, or which are annotated with the Support annotation, but without any SQL dialects can be safely used in all SQL dialects. An example for this is the <reference id="select-statement" title="SELECT statement"/> factory method:
    -									</p>
    -</html><java><![CDATA[/**
    - * Create a new DSL select statement.
    - */
    -@Support
    -SelectSelectStep<R> select(Field<?>... fields);]]></java><html>
    -
    -									<h3>jOOQ's SQL clause simulation capabilities</h3>
    -									<p>
    -										The aforementioned Support annotation does not only designate, which databases natively support a feature. It also indicates that a feature is simulated by jOOQ for some databases lacking this feature. An example of this is the <reference id="distinct-predicate" title="DISTINCT predicate"/>, a predicate syntax defined by SQL:1999 and implemented only by H2, HSQLDB, and Postgres:
    -									</p>
    -
    -</html><sql><![CDATA[A IS DISTINCT FROM B]]></sql><html>
    -
    -									<p>
    -										Nevertheless, the <code>IS DISTINCT FROM</code> predicate is supported by jOOQ in all dialects, as its semantics can be expressed with an equivalent <reference id="case-expressions" title="CASE expression"/>. For more details, see the manual's section about the <reference id="distinct-predicate" title="DISTINCT predicate"/>.
    -									</p>
    -									
    -									<h3>jOOQ and the Oracle SQL dialect</h3>
    -									<p>
    -										Oracle SQL is much more expressive than many other SQL dialects. It features many unique keywords, clauses and functions that are out of scope for the SQL standard. Some examples for this are
    -									</p>
    -									<ul>
    -										<li>The <reference id="connect-by-clause" title="CONNECT BY clause"/>, for hierarchical queries</li>
    -										<li>The <reference id="pivot-tables" title="PIVOT"/> keyword for creating PIVOT tables</li>
    -										<li><reference id="oracle-packages" title="Packages"/>, <reference id="oracle-member-procedures" title="object-oriented user-defined types, member procedures"/> as described in the section about <reference id="stored-procedures" title="stored procedures and functions"/></li>
    -										<li>Advanced analytical functions as described in the section about <reference id="window-functions" title="window functions"/></li>
    -									</ul>
    -
    -									<p>
    -										jOOQ has a historic affinity to Oracle's SQL extensions. If something is supported in Oracle SQL, it has a high probability of making it into the jOOQ API
    -									</p>
    -								</html></content>
    -							</section>
    -
    -                            <section id="sql-dialect-family">
    -                                <title>SQL Dialect Family</title>
    -                                <content><html>
    -                                    <p>
    -                                        In jOOQ 3.1, the notion of a <code>SQLDialect.family()</code> was introduced, in order to group several similar <reference id="sql-dialects" title="SQL dialects"/> into a common family. An example for this is SQL Server, which is supported by jOOQ in various versions:
    -                                    </p>
    -                                    
    -                                    <ul>
    -                                        <li> <reference class="org.jooq.SQLDialect" title="SQL Server" anchor="#SQLSERVER"/>: The "version-less" SQL Server version. This always maps to the latest supported version of SQL Server</li>
    -                                        <li> <reference class="org.jooq.SQLDialect" title="SQL Server 2012" anchor="#SQLSERVER2012"/>: The SQL Server version 2012</li>
    -                                        <li> <reference class="org.jooq.SQLDialect" title="SQL Server 2008" anchor="#SQLSERVER2008"/>: The SQL Server version 2008</li>
    -                                    </ul>
    -                                    
    -                                    <p>
    -                                        In the above list, <code>SQLSERVER</code> is both a dialect and a family of three dialects. This distinction is used internally by jOOQ to distinguish whether to use the <reference id="limit-clause" title="OFFSET .. FETCH"/> clause (SQL Server 2012), or whether to simulate it using <code>ROW_NUMBER() OVER()</code> (SQL Server 2008).
    -                                    </p>
    -                                </html></content>
    -                            </section>
    -
    -							<section id="connection-vs-datasource">
    -								<title>Connection vs. DataSource</title>
    -								<content><html>
    -									<h3>Interact with JDBC Connections</h3>
    -									<p>
    -										While you can use jOOQ for <reference id="sql-building" title="SQL building"/> only, you can also run queries against a JDBC <reference class="java.sql.Connection"/>. Internally, jOOQ creates <reference class="java.sql.Statement"/> or <reference class="java.sql.PreparedStatement"/> objects from such a Connection, in order to execute statements. The normal operation mode is to provide a <reference id="dsl-context" title="Configuration"/> with a JDBC Connection, whose lifecycle you will control yourself. This means that jOOQ will not actively close connections, rollback or commit transactions.
    -									</p>
    -									<p>
    -										Note, in this case, jOOQ will internally use a <reference class="org.jooq.impl.DefaultConnectionProvider"/>, which you can reference directly if you prefer that. The DefaultConnectionProvider exposes various transaction-control methods, such as commit(), rollback(), etc.
    -									</p>
    -									
    -									<h3>Interact with JDBC DataSources</h3>
    -									<p>
    -										If you're in a J2EE or Spring context, however, you may wish to use a <reference class="javax.sql.DataSource"/> instead. Connections obtained from such a DataSource will be closed after query execution by jOOQ. The semantics of such a close operation should be the returning of the connection into a connection pool, not the actual closing of the underlying physical connection. Typically, this makes sense in an environment using distributed JTA transactions. An example of using DataSources with jOOQ can be seen in the tutorial section about <reference id="jooq-with-spring" title="using jOOQ with Spring"/>.
    -									</p>
    -									<p>
    -										Note, in this case, jOOQ iwll internally use a <reference class="org.jooq.impl.DataSourceConnectionProvider"/>, which you can reference directly if you prefer that.
    -									</p>
    -									
    -									<h3>Inject custom behaviour</h3>
    -									<p>
    -										If your specific environment works differently from any of the above approaches, you can inject your own custom implementation of a ConnectionProvider into jOOQ. This is the API contract you have to fulfil:
    -									</p>
    -									
    -</html><java><![CDATA[public interface ConnectionProvider {
    -
    -    // Provide jOOQ with a connection
    -    Connection acquire() throws DataAccessException;
    -  
    -    // Get a connection back from jOOQ
    -    void release(Connection connection) throws DataAccessException;
    -}]]></java><html>
    -
    -									<p>
    -									    Note that <code>acquire()</code> should always return the same Connection until this connection is returned via <code>release()</code> 
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -							<section id="custom-data">
    -								<title>Custom data</title>
    -								<content><html>
    -									<p>
    -										In advanced use cases of integrating your application with jOOQ, you may want to put custom data into your <reference id="dsl-context" title="Configuration"/>, which you can then access from your...
    -									</p>
    -									
    -									<ul>
    -										<li><reference id="custom-execute-listeners" title="Custom ExecuteListeners"/></li>
    -										<li><reference id="custom-queryparts" title="Custom QueryParts"/></li>
    -									</ul>
    -									
    -									<p>
    -										Here is an example of how to use the custom data API. Let's assume that you have written an <reference id="execute-listeners" title="ExecuteListener"/>, that prevents <code>INSERT</code> statements, when a given flag is set to <code>true</code>: 
    -									</p>
    -
    -</html><java><![CDATA[// Implement an ExecuteListener
    -public class NoInsertListener extends DefaultExecuteListener {
    -
    -    @Override
    -    public void start(ExecuteContext ctx) {
    -    
    -        // This listener is active only, when your custom flag is set to true
    -        if (Boolean.TRUE.equals(ctx.configuration().data("com.example.my-namespace.no-inserts"))) {
    -        
    -            // If active, fail this execution, if an INSERT statement is being executed
    -            if (ctx.query() instanceof Insert) {
    -                throw new DataAccessException("No INSERT statements allowed");
    -            }
    -        }
    -    }
    -}]]></java><html>
    -									<p>
    -										See the manual's section about <reference id="execute-listeners" title="ExecuteListeners"/> to learn more about how to implement an <code>ExecuteListener</code>.
    -									</p>
    -									
    -									<p>
    -										Now, the above listener can be added to your <reference id="dsl-context" title="Configuration"/>, but you will also need to pass the flag to the <code>Configuration</code>, in order for the listener to work:
    -									</p>
    -									
    -</html><java><![CDATA[// Create your Configuration
    -Configuration configuration = new DefaultConfiguration().set(connection).set(dialect);
    -
    -// Set a new execute listener provider onto the configuration:
    -configuration.set(new DefaultExecuteListenerProvider(new NoInsertListener()));
    -
    -// Use any String literal to identify your custom data
    -configuration.data("com.example.my-namespace.no-inserts", true);
    -
    -// Try to execute an INSERT statement
    -try {
    -    DSL.using(configuration)
    -       .insertInto(AUTHOR, AUTHOR.ID, AUTHOR.LAST_NAME)
    -       .values(1, "Orwell")
    -       .execute();
    -          
    -    // You shouldn't get here
    -    Assert.fail();
    -}
    -
    -// Your NoInsertListener should be throwing this exception here:
    -catch (DataAccessException expected) {
    -    Assert.assertEquals("No INSERT statements allowed", expected.getMessage());
    -}]]></java><html>
    -
    -									<p>
    -										Using the <code>data()</code> methods, you can store and retrieve custom data in your <code>Configurations</code>.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="custom-execute-listeners">
    -								<title>Custom ExecuteListeners</title>
    -								<content><html>
    -									<p>
    -										<code>ExecuteListeners</code> are a useful tool to...
    -									</p>
    -									
    -									<ul>
    -										<li>implement custom logging</li>
    -										<li>apply triggers written in Java</li>
    -										<li>collect query execution statistics</li>
    -										<li>integrate with the <reference id="jooq-console" title="jOOQ Console"/></li>
    -									</ul>
    -									
    -									<p>
    -										ExecuteListeners are hooked into your <reference id="dsl-context" title="Configuration"/> by returning them from an <reference class="org.jooq.ExecuteListenerProvider"/>:
    -									</p>
    -
    -</html><java><![CDATA[// Create your Configuration
    -Configuration configuration = new DefaultConfiguration().set(connection).set(dialect);
    -
    -// Hook your listener providers into the configuration:
    -configuration.set(
    -    new DefaultExecuteListenerProvider(new MyFirstListener()),
    -    new DefaultExecuteListenerProvider(new PerformanceLoggingListener()),
    -    new DefaultExecuteListenerProvider(new NoInsertListener())
    -);]]></java><html>
    -									
    -									<p>
    -										See the manual's section about <reference id="execute-listeners" title="ExecuteListeners"/> to see examples of such listener implementations.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="custom-settings">
    -								<title>Custom Settings</title>
    -								<content><html>
    -									<p>
    -										The jOOQ Configuration allows for some optional configuration elements to be used by advanced users. The <reference class="org.jooq.conf.Settings" /> class is a JAXB-annotated type, that can be provided to a Configuration in several ways:
    -									</p>
    -									<ul>
    -										<li>In the DSLContext constructor (<code>DSL.using()</code>). This will override default settings below</li>
    -										<li>in the <reference class="org.jooq.impl.DefaultConfiguration"/> constructor. This will override default settings below</li>
    -                                        <li>From a location specified by a JVM parameter: -Dorg.jooq.settings</li>
    -										<li>From the classpath at /jooq-settings.xml</li>
    -										<li>From the settings defaults, as specified in <a href="http://www.jooq.org/xsd/jooq-runtime-{runtime-xsd-version}.xsd" title="The jOOQ Runtime configuration XSD">http://www.jooq.org/xsd/jooq-runtime-{runtime-xsd-version}.xsd</a></li>
    -									</ul>
    -									<h3>Example</h3>
    -									<p>
    -										For example, if you want to indicate to jOOQ, that it should inline all bind variables, and execute static <reference class="java.sql.Statement"/> instead of binding its variables to <reference class="java.sql.PreparedStatement"/>, you can do so by creating the following DSLContext:
    -									</p>
    -</html><java><![CDATA[Settings settings = new Settings();
    -settings.setStatementType(StatementType.STATIC_STATEMENT);
    -DSLContext create = DSL.using(connection, dialect, settings);]]></java><html>
    -									<p>
    -										Subsequent sections of the manual contain some more in-depth explanations about these settings:
    -									</p>
    -									<ul>
    -										<li>
    -		     								<reference id="schema-mapping" title="Runtime schema and table mapping"/>
    -		   								</li>
    -		     							<li>
    -		     								<reference id="optimistic-locking" title="Execute CRUD with optimistic locking enabled"/>
    -		     							</li>
    -		     							<li>
    -		     								<reference id="logging" title="Enabling DEBUG logging of all executed SQL"/>
    -		     							</li>
    -		   							</ul>
    -		   							<p>
    -										Please refer to the jOOQ runtime configuration XSD for more details:<br/>
    -										<a href="http://www.jooq.org/xsd/jooq-runtime-{runtime-xsd-version}.xsd" title="The jOOQ Runtime configuration XSD">http://www.jooq.org/xsd/jooq-runtime-{runtime-xsd-version}.xsd</a>
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -							<section id="runtime-schema-mapping">
    -								<title>Runtime schema and table mapping</title>
    -								<content><html>
    -									<h3>Mapping your DEV schema to a productive environment</h3>
    -									<p>
    -										You may wish to design your database in a way that you have several instances of your schema. This is useful when you want to cleanly separate data belonging to several customers / organisation units / branches / users and put each of those entities' data in a separate database or schema.
    -									</p>
    -									
    -									<p>
    -										In our AUTHOR example this would mean that you provide a book reference database to several companies, such as My Book World and Books R Us. In that case, you'll probably have a schema setup like this:
    -									</p>
    -									<ul>
    -										<li>DEV: Your development schema. This will be the schema that you base code generation upon, with jOOQ </li>
    -										<li>MY_BOOK_WORLD: The schema instance for My Book World </li>
    -										<li>BOOKS_R_US: The schema instance for Books R Us </li>
    -									</ul>
    -
    -									<h3>Mapping DEV to MY_BOOK_WORLD with jOOQ</h3>
    -									<p>
    -										When a user from My Book World logs in, you want them to access the MY_BOOK_WORLD schema using classes generated from DEV. This can be achieved with the <reference class="org.jooq.conf.RenderMapping"/> class, that you can equip your Configuration's <reference id="custom-settings" title="settings"/> with. Take the following example:
    -									</p>
    -
    -</html><java>Settings settings = new Settings()
    -    .withRenderMapping(new RenderMapping()
    -    .withSchemata(
    -        new MappedSchema().withInput("DEV")
    -                          .withOutput("MY_BOOK_WORLD")));
    -
    -// Add the settings to the DSLContext
    -DSLContext create = DSL.using(connection, SQLDialect.ORACLE, settings);
    -
    -// Run queries with the "mapped" Configuration
    -create.selectFrom(AUTHOR).fetch();</java><html>
    -
    -									<p>
    -										The query executed with a Configuration equipped with the above mapping will in fact produce this SQL statement:
    -									</p>
    -									
    -</html><sql>SELECT * FROM MY_BOOK_WORLD.AUTHOR</sql><html>
    -									<p>
    -										Even if AUTHOR was generated from DEV.
    -									</p>
    -
    -									<h3>Mapping several schemata</h3>
    -									<p>
    -										Your development database may not be restricted to hold only one DEV schema. You may also have a LOG schema and a MASTER schema. Let's say the MASTER schema is shared among all customers, but each customer has their own LOG schema instance. Then you can enhance your RenderMapping like this (e.g. using an XML configuration file):
    -									</p>
    -
    -</html><xml><![CDATA[<settings xmlns="http://www.jooq.org/xsd/jooq-runtime-{runtime-xsd-version}.xsd">
    -  <renderMapping>
    -    <schemata>
    -      <schema>
    -        <input>DEV</input>
    -        <output>MY_BOOK_WORLD</output>
    -      </schema>
    -      <schema>
    -        <input>LOG</input>
    -        <output>MY_BOOK_WORLD_LOG</output>
    -      </schema>
    -    </schemata>
    -  </renderMapping>
    -</settings>]]></xml><html>
    -
    -                            		<p>
    -                            			Note, you can load the above XML file like this:
    -                           			</p>
    -
    -</html><java>Settings settings = JAXB.unmarshal(new File("jooq-runtime.xml"), Settings.class);</java><html>
    -
    -									<p>
    -										This will map generated classes from DEV to MY_BOOK_WORLD, from LOG to MY_BOOK_WORLD_LOG, but leave the MASTER schema alone. Whenever you want to change your mapping configuration, you will have to create a new Configuration.
    -									</p>
    -
    -
    -									<h3>Using a default schema</h3>
    -                            		<p>
    -                            			If you wish not to render any schema name at all, use the following Settings property for this:
    -                           			</p>
    -
    -
    -</html><java>Settings settings = new Settings()
    -    .withRenderSchema(false);
    -
    -// Add the settings to the Configuration
    -DSLContext create = DSL.using(connection, SQLDialect.ORACLE, settings);
    -
    -// Run queries that omit rendering schema names
    -create.selectFrom(AUTHOR).fetch();</java><html>
    -
    -									<h3>Mapping of tables</h3>
    -									<p>
    -										Not only schemata can be mapped, but also tables. If you are not the owner of the database your application connects to, you might need to install your schema with some sort of prefix to every table. In our examples, this might mean that you will have to map DEV.AUTHOR to something MY_BOOK_WORLD.MY_APP__AUTHOR, where MY_APP__ is a prefix applied to all of your tables. This can be achieved by creating the following mapping: 
    -									</p>
    -
    -</html><java>Settings settings = new Settings()
    -    .withRenderMapping(new RenderMapping()
    -    .withSchemata(
    -        new MappedSchema().withInput("DEV")
    -                          .withOutput("MY_BOOK_WORLD")
    -                          .withTables(
    -         new MappedTable().withInput("AUTHOR")
    -                          .withOutput("MY_APP__AUTHOR"))));
    -
    -// Add the settings to the Configuration
    -DSLContext create = DSL.using(connection, SQLDialect.ORACLE, settings);
    -
    -// Run queries with the "mapped" configuration
    -create.selectFrom(AUTHOR).fetch();</java><html>
    -
    -									<p>
    -										The query executed with a Configuration equipped with the above mapping will in fact produce this SQL statement:
    -									</p>
    -									
    -</html><sql>SELECT * FROM MY_BOOK_WORLD.MY_APP__AUTHOR</sql><html>
    -
    -		                            <p>
    -		                           		Table mapping and schema mapping can be applied independently, by specifying several MappedSchema entries in the above configuration. jOOQ will process them in order of appearance and map at first match. Note that you can always omit a MappedSchema's output value, in case of which, only the table mapping is applied. If you omit a MappedSchema's input value, the table mapping is applied to all schemata!
    -		                            </p>
    -
    -									<h3>Hard-wiring mappings at code-generation time</h3>
    -									<p>
    -										Note that the manual's section about <reference id="schema-mapping" title="code generation schema mapping"/> explains how you can hard-wire your schema mappings at code generation time
    -									</p>									
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="sql-statements">
    -						<title>SQL Statements</title>
    -						<content><html>
    -							<p>
    -								jOOQ currently supports 6 types of SQL statements. All of these statements are constructed from a DSLContext instance with an optional <reference id="connection-vs-datasource" title="JDBC Connection or DataSource"/>. If supplied with a Connection or DataSource, they can be executed. Depending on the <reference id="query-vs-resultquery" title="query type"/>, executed queries can return results.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="dsl-and-non-dsl">
    -								<title>jOOQ's DSL and model API</title>
    -								<content><html>
    -									<p>
    -										jOOQ ships with its own DSL (or	<a href="http://en.wikipedia.org/wiki/Domain-specific_language" title="Domain Specific Language">Domain Specific Language</a>) that	simulates SQL in Java. This means, that you can	write SQL statements almost as if Java natively supported it, just like .NET's C# does with <a href="http://msdn.microsoft.com/en-us/library/bb425822.aspx">LINQ to SQL.</a>
    -									</p>
    -									<p>
    -										Here is an example to illustrate what that means:
    -									</p>
    -									
    -</html><code-pair><sql><![CDATA[-- Select all books by authors born after 1920,
    --- named "Paulo" from a catalogue:
    -SELECT *
    -  FROM author a
    -  JOIN book b ON a.id = b.author_id
    - WHERE a.year_of_birth > 1920
    -   AND a.first_name = 'Paulo'
    - ORDER BY b.title]]></sql><java><![CDATA[Result<Record> result =
    -create.select()
    -      .from(AUTHOR.as("a"))
    -      .join(BOOK.as("b")).on(a.ID.equal(b.AUTHOR_ID))
    -      .where(a.YEAR_OF_BIRTH.greaterThan(1920)
    -      .and(a.FIRST_NAME.equal("Paulo")))
    -      .orderBy(b.TITLE)
    -      .fetch();]]></java></code-pair><html>
    -
    -									<p>
    -										We'll see how the aliasing works later in the section about <reference id="aliased-tables" title="aliased tables"/>
    -									</p>
    -
    -									<h3>jOOQ as an internal domain specific language in Java (a.k.a. the DSL API)</h3>
    -									<p>
    -										Many other frameworks have similar APIs with similar feature sets. Yet, what makes jOOQ special is its informal <reference id="reference-bnf-notation" title="BNF notation"/> modelling a unified SQL dialect suitable for many vendor-specific dialects, and implementing that BNF notation as a hierarchy of interfaces in Java. This concept is extremely powerful, when <reference id="jooq-in-modern-ides" title="using jOOQ in modern IDEs" /> with syntax completion. Not only can you code much faster, your SQL code will be compile-checked to a certain extent. An example of a DSL query equivalent to the previous one is given here:
    -									</p>
    -									
    -</html><java><![CDATA[DSLContext create = DSL.using(connection, dialect);
    -Result<?> result = create.select()
    -                         .from(AUTHOR)
    -                         .join(BOOK).on(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -                         .fetch();]]></java><html>
    -
    -                         			<p>
    -                         				Unlike other, simpler frameworks that use <a href="http://en.wikipedia.org/wiki/Fluent_interface">"fluent APIs"</a> or <a href="http://en.wikipedia.org/wiki/Method_chaining">"method chaining"</a>, jOOQ's BNF-based interface hierarchy will not allow bad query syntax. The following will not compile, for instance:
    -                         			</p>
    -</html><java><![CDATA[DSLContext create = DSL.using(connection, dialect);
    -Result<?> result = create.select()
    -                         .join(BOOK).on(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -                      //  ^^^^ "join" is not possible here
    -                         .from(AUTHOR)
    -                         .fetch();
    -
    -Result<?> result = create.select()
    -                         .from(AUTHOR)
    -                         .join(BOOK)
    -                         .fetch();
    -                      //  ^^^^^ "on" is missing here
    -
    -Result<?> result = create.select(rowNumber())
    -                      //         ^^^^^^^^^ "over()" is missing here
    -                         .from(AUTHOR)
    -                         .fetch();
    -
    -Result<?> result = create.select()
    -                         .from(AUTHOR)
    -                         .where(AUTHOR.ID.in(select(BOOK.TITLE).from(BOOK)))
    -                      //                     ^^^^^^^^^^^^^^^^^^
    -                      // AUTHOR.ID is of type Field<Integer> but subselect returns Record1<String>
    -                         .fetch();
    -
    -Result<?> result = create.select()
    -                         .from(AUTHOR)
    -                         .where(AUTHOR.ID.in(select(BOOK.AUTHOR_ID, BOOK.ID).from(BOOK)))
    -                      //                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    -                      // AUTHOR.ID is of degree 1 but subselect returns Record2<Integer, Integer>
    -                         .fetch();]]></java><html>
    -
    -									<h3>History of SQL building and incremental query building (a.k.a. the model API)</h3>
    -									<p>
    -										Historically, jOOQ started out as an object-oriented SQL builder library like any other. This meant that all queries and their syntactic components were modeled as so-called <reference id="queryparts" title="QueryParts"/>, which delegate <reference id="sql-rendering" title="SQL rendering"/> and <reference id="variable-binding" title="variable binding"/> to child components. This part of the API will be referred to as the model API (or non-DSL API), which is still maintained and used internally by jOOQ for incremental query building. An example of incremental query building is given here:
    -									</p>
    -									
    -</html><java><![CDATA[DSLContext create = DSL.using(connection, dialect);
    -SelectQuery<Record> query = create.selectQuery();
    -query.addFrom(AUTHOR);
    -
    -// Join books only under certain circumstances
    -if (join) {
    -    query.addJoin(BOOK, BOOK.AUTHOR_ID.equal(AUTHOR.ID));
    -}
    -
    -Result<?> result = query.fetch();]]></java><html>
    -
    -									<p>
    -										This query is equivalent to the one shown before using the DSL syntax. In fact, internally, the DSL API constructs precisely this SelectQuery object. Note, that you can always access the SelectQuery object to switch between DSL and model APIs:
    -									</p>
    -
    -</html><java><![CDATA[DSLContext create = DSL.using(connection, dialect);
    -SelectFinalStep<?> select = create.select().from(AUTHOR);
    -
    -// Add the JOIN clause on the internal QueryObject representation
    -SelectQuery<?> query = select.getQuery();
    -query.addJoin(BOOK, BOOK.AUTHOR_ID.equal(AUTHOR.ID));]]></java><html>
    -
    -									<h3>Mutability</h3>
    -									<p>
    -										Note, that for historic reasons, the DSL API mixes mutable and immutable behaviour with respect to the internal representation of the <reference id="queryparts" title="QueryPart"/> being constructed. While creating <reference id="conditional-expressions" title="conditional expressions"/>, <reference id="column-expressions" title="column expressions"/> (such as functions) assumes immutable behaviour, creating <reference id="sql-statements" title="SQL statements"/> does not. In other words, the following can be said:
    -									</p>
    -									
    -</html><java><![CDATA[// Conditional expressions (immutable)
    -// -----------------------------------
    -Condition a = BOOK.TITLE.equal("1984");
    -Condition b = BOOK.TITLE.equal("Animal Farm");
    -
    -// The following can be said
    -a       != a.or(b); // or() does not modify a
    -a.or(b) != a.or(b); // or() always creates new objects
    -
    -// Statements (mutable)
    -// --------------------
    -SelectFromStep<?> s1 = select();
    -SelectJoinStep<?> s2 = s1.from(BOOK);
    -SelectJoinStep<?> s3 = s1.from(AUTHOR);
    -
    -// The following can be said
    -s1 == s2; // The internal object is always the same
    -s2 == s3; // The internal object is always the same]]></java><html>
    -
    -									<p>
    -										On the other hand, beware that you can always extract and modify <reference id="bind-values" title="bind values"/> from any <code>QueryPart</code>.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="select-statement">
    -								<title>The SELECT statement</title>
    -								<content><html>
    -									<p>
    -										When you don't just perform <reference id="crud-with-updatablerecords" title="CRUD"/> (i.e. SELECT * FROM your_table WHERE ID = ?), you're usually generating new record types using custom projections. With jOOQ, this is as intuitive, as if using SQL directly. A more or less complete example of the "standard" SQL syntax, plus some extensions, is provided by a query like this:
    -									</p>
    -
    -									<h3>SELECT from a complex table expression</h3>
    -</html><code-pair>
    -<sql><![CDATA[-- get all authors' first and last names, and the number
    --- of books they've written in German, if they have written
    --- more than five books in German in the last three years
    --- (from 2011), and sort those authors by last names
    --- limiting results to the second and third row, locking
    --- the rows for a subsequent update... whew!
    -
    -  SELECT AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME, COUNT(*)
    -    FROM AUTHOR
    -    JOIN BOOK ON AUTHOR.ID = BOOK.AUTHOR_ID
    -   WHERE BOOK.LANGUAGE = 'DE'
    -     AND BOOK.PUBLISHED > '2008-01-01'
    -GROUP BY AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME
    -  HAVING COUNT(*) > 5
    -ORDER BY AUTHOR.LAST_NAME ASC NULLS FIRST
    -   LIMIT 2
    -  OFFSET 1
    -     FOR UPDATE]]></sql><java><![CDATA[// And with jOOQ...
    -
    -
    -
    -
    -DSLContext create = DSL.using(connection, dialect);
    -
    -create.select(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME, count())
    -      .from(AUTHOR)
    -      .join(BOOK).on(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -      .where(BOOK.LANGUAGE.equal("DE"))
    -      .and(BOOK.PUBLISHED.greaterThan("2008-01-01"))
    -      .groupBy(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .having(count().greaterThan(5))
    -      .orderBy(AUTHOR.LAST_NAME.asc().nullsFirst())
    -      .limit(1)
    -      .offset(2)
    -      .forUpdate();]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										Details about the various clauses of this query will be provided in subsequent sections.
    -									</p>
    -
    -									<h3>SELECT from single physical tables</h3>
    -									<p>
    -										A very similar, but limited API is available, if you want to select from single physical tables in order to retrieve <reference id="crud-with-updatablerecords" title="TableRecords or even UpdatableRecords"/>. The decision, which type of select to create is already made at the very first step, when you create the <code>SELECT</code> statement with the DSL or DSLContext types:
    -									</p>
    -
    -</html><java><![CDATA[public <R extends Record> SelectWhereStep<R> selectFrom(Table<R> table);]]></java><html>
    -									<p>
    -										As you can see, there is no way to further restrict/project the selected fields. This just selects all known TableFields in the supplied Table, and it also binds &lt;R extends Record&gt; to your Table's associated Record. An example of such a Query would then be:
    -									</p>
    -</html><java><![CDATA[BookRecord book = create.selectFrom(BOOK)
    -                        .where(BOOK.LANGUAGE.equal("DE"))
    -                        .orderBy(BOOK.TITLE)
    -                        .fetchAny();]]></java><html>
    -
    -                   					<p>
    -                   						The "reduced" SELECT API is limited in the way that it skips DSL access to any of these clauses:
    -                   					</p>
    -                   					<ul>
    -                   						<li><reference id="select-clause"/></li>
    -                   						<li><reference id="join-clause"/></li>
    -                   					</ul>
    -                   					<p>
    -                   						In most parts of this manual, it is assumed that you do not use the "reduced" SELECT API. For more information about the simple SELECT API, see the manual's section about <reference id="record-vs-tablerecord" title="fetching strongly or weakly typed records"/>.
    -                   					</p>
    -								</html></content>
    -
    -								<sections>
    -									<section id="select-clause">
    -										<title>The SELECT clause</title>
    -										<content><html>
    -											<p>
    -												The SELECT clause lets you project your own record types, referencing table fields, functions, arithmetic expressions, etc. The DSL type provides several methods for expressing a SELECT clause:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- The SELECT clause
    -SELECT BOOK.ID, BOOK.TITLE
    -SELECT BOOK.ID, TRIM(BOOK.TITLE)
    -]]></sql><java><![CDATA[// Provide a varargs Fields list to the SELECT clause:
    -Select<?> s1 = create.select(BOOK.ID, BOOK.TITLE);
    -Select<?> s2 = create.select(BOOK.ID, trim(BOOK.TITLE));]]></java>
    -</code-pair><html>
    -
    -											<p>
    -												Some commonly used projections can be easily created using convenience methods:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- Simple SELECTs
    -SELECT COUNT(*)
    -SELECT 0 -- Not a bind variable
    -SELECT 1 -- Not a bind variable
    -]]></sql><java><![CDATA[// Select commonly used values
    -Select<?> select1 = create.selectCount();
    -Select<?> select2 = create.selectZero();
    -Select<?> select2 = create.selectOne();]]></java>
    -</code-pair><html>
    -
    -											<p>
    -												See more details about functions and expressions in the manual's section about <reference id="column-expressions"/>
    -											</p>
    -
    -											<h3>The SELECT DISTINCT clause</h3>
    -											<p>
    -												The DISTINCT keyword can be included in the method name, constructing a SELECT clause
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT DISTINCT BOOK.TITLE]]></sql><java><![CDATA[Select<?> select1 = create.selectDistinct(BOOK.TITLE);]]></java>
    -</code-pair><html>
    -
    -                                            <h3>SELECT *</h3>
    -                                            <p>
    -                                            	jOOQ does not explicitly support the asterisk operator in projections. However, you can omit the projection as in these examples:
    -                                            </p>
    -                                            
    -</html><java><![CDATA[// Explicitly selects all columns available from BOOK
    -create.select().from(BOOK);
    -
    -// Explicitly selects all columns available from BOOK and AUTHOR
    -create.select().from(BOOK, AUTHOR);
    -create.select().from(BOOK).crossJoin(AUTHOR);
    -
    -// Renders a SELECT * statement, as columns are unknown to jOOQ
    -create.select().from(tableByName("BOOK"));]]></java><html>                                            
    -
    -											<h3>Typesafe projections with degree up to {max-row-degree}</h3>
    -											<p>
    -												Since jOOQ 3.0, <reference id="record-n" title="records"/> and <reference id="row-value-expressions" title="row value expressions"/> up to degree {max-row-degree} are now generically typesafe. This is reflected by an overloaded <code>SELECT</code> (and <code>SELECT DISTINCT</code>) API in both DSL and DSLContext. An extract from the DSL type:
    -											</p>
    -											
    -</html><java><![CDATA[// Non-typesafe select methods:
    -public static SelectSelectStep<Record> select(Collection<? extends Field<?>> fields);
    -public static SelectSelectStep<Record> select(Field<?>... fields);
    -
    -// Typesafe select methods:
    -public static <T1>         SelectSelectStep<Record1<T1>>         select(Field<T1> field1);
    -public static <T1, T2>     SelectSelectStep<Record2<T1, T2>>     select(Field<T1> field1, Field<T2> field2);
    -public static <T1, T2, T3> SelectSelectStep<Record3<T1, T2, T3>> select(Field<T1> field1, Field<T2> field2, Field<T3> field3);
    -// [...]]]></java><html>
    -		
    -											<p>
    -												Since the generic R type is bound to some <reference id="record-n" title="Record[N]"/>, the associated T type information can be used in various other contexts, e.g. the <reference id="in-predicate" title="IN predicate"/>. Such a <code>SELECT</code> statement can be assigned typesafely:
    -											</p>
    -
    -</html><java><![CDATA[Select<Record2<Integer, String>> s1 = create.select(BOOK.ID, BOOK.TITLE);
    -Select<Record2<Integer, String>> s2 = create.select(BOOK.ID, trim(BOOK.TITLE));]]></java><html>
    -																				
    -											<p>
    -												For more information about typesafe record types with degree up to {max-row-degree}, see the manual's section about <reference id="record-n" title="Record1 to Record{max-row-degree}"/>.
    -											</p>
    -										</html></content>
    -									</section>
    -
    -									<section id="from-clause">
    -										<title>The FROM clause</title>
    -										<content><html>
    -											<p>
    -												The SQL FROM clause allows for specifying any number of <reference id="table-expressions" title="table expressions"/> to select data from. The following are examples of how to form normal FROM clauses:
    -											</p>
    -
    -</html><code-pair>
    -	<sql><![CDATA[SELECT 1 FROM BOOK
    -SELECT 1 FROM BOOK, AUTHOR
    -SELECT 1 FROM BOOK "b", AUTHOR "a"]]></sql><java><![CDATA[create.selectOne().from(BOOK);
    -create.selectOne().from(BOOK, AUTHOR);
    -create.selectOne().from(BOOK.as("b"), AUTHOR.as("a"));]]></java>
    -</code-pair><html>
    -
    -											<p>
    -												Read more about aliasing in the manual's section about <reference id="aliased-tables" title="aliased tables"/>.
    -											</p>
    -											
    -											<h3>More advanced table expressions</h3>
    -											<p>
    -												Apart from simple tables, you can pass any arbitrary <reference id="table-expressions" title="table expression"/> to the jOOQ FROM clause. This may include <reference id="array-and-cursor-unnesting" title="unnested cursors"/> in Oracle:
    -											</p>
    -
    -</html><code-pair>
    -	<sql><![CDATA[SELECT *
    -FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(null, null, 'ALLSTATS'));]]></sql><java><![CDATA[create.select()
    -      .from(table(DbmsXplan.displayCursor(null, null, "ALLSTATS"));]]></java>
    -</code-pair><html>
    -
    -											<p>
    -												Note, in order to access the DbmsXplan package, you can use the <reference id="code-generation" title="code generator"/> to generate Oracle's SYS schema.
    -											</p>
    -
    -
    -											<h3>Selecting FROM DUAL with jOOQ</h3>
    -											<p>
    -												In many SQL dialects, FROM is a mandatory clause, in some it isn't. jOOQ allows you to omit the FROM clause, returning just one record. An example:
    -											</p>
    -
    -</html><code-pair>
    -	<sql><![CDATA[SELECT 1 FROM DUAL
    -SELECT 1]]></sql><java><![CDATA[DSL.using(SQLDialect.ORACLE).selectOne().getSQL();
    -DSL.using(SQLDialect.POSTGRES).selectOne().getSQL();]]></java>
    -</code-pair><html>
    -
    -											<p>
    -												Read more about dual or dummy tables in the manual's section about <reference id="dual" title="the DUAL table"/>. The following are examples of how to form normal FROM clauses:
    -											</p>
    -										</html></content>
    -									</section>
    -
    -									<section id="join-clause">
    -										<title>The JOIN clause</title>
    -										<content><html>
    -											<p>
    -												jOOQ supports many different types of standard SQL JOIN operations:
    -											</p>
    -											<ul>
    -												<li>[ INNER ] JOIN</li>
    -												<li>LEFT [ OUTER ] JOIN</li>
    -												<li>RIGHT [ OUTER ] JOIN</li>
    -												<li>FULL OUTER JOIN</li>
    -												<li>CROSS JOIN</li>
    -												<li>NATURAL JOIN</li>
    -												<li>NATURAL LEFT [ OUTER ] JOIN</li>
    -												<li>NATURAL RIGHT [ OUTER ] JOIN</li>
    -											</ul>
    -
    -											<p>
    -												All of these JOIN methods can be called on <reference class="org.jooq.Table"/> types, or directly after the FROM clause for convenience. The following example joins AUTHOR and BOOK
    -											</p>
    -
    -</html><java><![CDATA[DSLContext create = DSL.using(connection, dialect);
    -
    -// Call "join" directly on the AUTHOR table
    -Result<?> result = create.select()
    -                         .from(AUTHOR.join(BOOK)
    -                                     .on(BOOK.AUTHOR_ID.equal(AUTHOR.ID)))
    -                         .fetch();
    -
    -// Call "join" on the type returned by "from"
    -Result<?> result = create.select()
    -                         .from(AUTHOR)
    -                         .join(BOOK)
    -                         .on(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -                         .fetch();]]></java><html>
    -
    -											<p>
    -												The two syntaxes will produce the same SQL statement. However, calling "join" on <reference class="org.jooq.Table"/> objects allows for more powerful, nested JOIN expressions (if you can handle the parentheses):
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM AUTHOR
    -LEFT OUTER JOIN (
    -  BOOK JOIN BOOK_TO_BOOK_STORE
    -       ON BOOK_TO_BOOK_STORE.BOOK_ID = BOOK.ID
    -)
    -ON BOOK.AUTHOR_ID = AUTHOR.ID]]></sql><java><![CDATA[// Nest joins and provide JOIN conditions only at the end
    -create.select()
    -      .from(AUTHOR
    -      .leftOuterJoin(BOOK
    -        .join(BOOK_TO_BOOK_STORE)
    -        .on(BOOK_TO_BOOK_STORE.BOOK_ID.equal(BOOK.ID)))
    -      .on(BOOK.AUTHOR_ID.equal(AUTHOR.ID)));]]></java></code-pair><html>
    -
    -      										<ul>
    -      											<li>See the section about <reference id="conditional-expressions" title="conditional expressions"/> to learn more about the many ways to create <reference class="org.jooq.Condition"/> objects in jOOQ.</li>
    -      											<li>See the section about <reference id="table-expressions" title="table expressions"/> to learn about the various ways of referencing <reference class="org.jooq.Table"/> objects in jOOQ</li>
    -      										</ul>
    -
    -											<h3>JOIN ON KEY, convenience provided by jOOQ</h3>
    -											<p>
    -												Surprisingly, the SQL standard does not allow to formally JOIN on well-known foreign key relationship information. Naturally, when you join BOOK to AUTHOR, you will want to do that based on the BOOK.AUTHOR_ID foreign key to AUTHOR.ID primary key relation. Not being able to do this in SQL leads to a lot of repetitive code, re-writing the same JOIN predicate again and again - especially, when your foreign keys contain more than one column. With jOOQ, when you use <reference id="code-generation" title="code generation"/>, you can use foreign key constraint information in JOIN expressions as such:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM AUTHOR
    -JOIN BOOK ON BOOK.AUTHOR_ID = AUTHOR.ID]]></sql><java><![CDATA[create.select()
    -      .from(AUTHOR)
    -      .join(BOOK).onKey();]]></java></code-pair><html>
    -
    -      										<p>
    -      											In case of ambiguity, you can also supply field references for your foreign keys, or the generated foreign key reference to the onKey() method.
    -      										</p>
    -      										<p>
    -      											Note that formal support for the Sybase <code>JOIN ON KEY</code> syntax is on the roadmap.
    -      										</p>
    -
    -											<h3>The JOIN USING syntax</h3>
    -											<p>
    -												Most often, you will provide jOOQ with JOIN conditions in the JOIN .. ON clause. SQL supports a different means of specifying how two tables are to be joined. This is the JOIN .. USING clause. Instead of a condition, you supply a set of fields whose names are common to both tables to the left and right of a JOIN operation. This can be useful when your database schema has a high degree of <a href="http://en.wikipedia.org/wiki/Database_normalization">relational normalisation</a>. An example:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- Assuming that both tables contain AUTHOR_ID columns
    -SELECT *
    -FROM AUTHOR
    -JOIN BOOK USING (AUTHOR_ID)]]></sql><java><![CDATA[// join(...).using(...)
    -create.select()
    -      .from(AUTHOR)
    -      .join(BOOK).using(AUTHOR.AUTHOR_ID);]]></java></code-pair><html>
    -
    -											<p>
    -												In schemas with high degrees of normalisation, you may also choose to use NATURAL JOIN, which takes no JOIN arguments as it joins using all fields that are common to the table expressions to the left and to the right of the JOIN operator. An example:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- Assuming that both tables contain AUTHOR_ID columns
    -SELECT *
    -FROM AUTHOR
    -NATURAL JOIN BOOK]]></sql><java><![CDATA[// naturalJoin(...)
    -create.select()
    -      .from(AUTHOR)
    -      .naturalJoin(BOOK);]]></java></code-pair><html>
    -
    -											<h3>Oracle's partitioned OUTER JOIN</h3>
    -											<p>
    -												Oracle SQL ships with a special syntax available for OUTER JOIN clauses. According to the <a href="http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_10002.htm#i2196190">Oracle documentation about partitioned outer joins</a> this can be used to fill gaps for simplified analytical calculations. jOOQ only supports putting the PARTITION BY clause to the right of the OUTER JOIN clause. The following example will create at least one record per AUTHOR and per existing value in BOOK.PUBLISHED_IN, regardless if an AUTHOR has actually published a book in that year.
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM AUTHOR
    -LEFT OUTER JOIN BOOK
    -PARTITION BY (PUBLISHED_IN)
    -ON BOOK.AUTHOR_ID = AUTHOR.ID]]></sql><java><![CDATA[create.select()
    -      .from(AUTHOR)
    -      .leftOuterJoin(BOOK)
    -      .partitionBy(BOOK.PUBLISHED_IN)
    -      .on(BOOK.AUTHOR_ID.equal(AUTHOR.ID));]]></java></code-pair><html>
    -
    -										</html></content>
    -									</section>
    -
    -									<section id="where-clause">
    -										<title>The WHERE clause</title>
    -										<content><html>
    -											<p>
    -												The WHERE clause can be used for JOIN or filter predicates, in order to restrict the data returned by the <reference id="table-expressions" title="table expressions"/> supplied to the previously specified <reference id="from-clause" title="from clause"/> and <reference id="join-clause" title="join clause"/>. Here is an example:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM BOOK
    -WHERE AUTHOR_ID = 1
    -AND TITLE = '1984']]></sql><java><![CDATA[create.select()
    -      .from(BOOK)
    -      .where(BOOK.AUTHOR_ID.equal(1))
    -      .and(BOOK.TITLE.equal("1984"));]]></java></code-pair><html>
    -
    -											<p>
    -												The above syntax is convenience provided by jOOQ, allowing you to connect the <reference class="org.jooq.Condition"/> supplied in the WHERE clause with another condition using an AND operator. You can of course also create a more complex condition and supply that to the WHERE clause directly (observe the different placing of parentheses). The results will be the same:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM BOOK
    -WHERE AUTHOR_ID = 1
    -AND TITLE = '1984']]></sql><java><![CDATA[create.select()
    -      .from(BOOK)
    -      .where(BOOK.AUTHOR_ID.equal(1).and(
    -             BOOK.TITLE.equal("1984")));]]></java></code-pair><html>
    -
    -											<p>
    -												You will find more information about creating <reference id="conditional-expressions" title="conditional expressions"/> later in the manual.
    -											</p>
    -										</html></content>
    -									</section>
    -
    -									<section id="connect-by-clause">
    -										<title>The CONNECT BY clause</title>
    -										<content><html>
    -											<p>
    -												The Oracle database knows a very succinct syntax for creating hierarchical queries: the CONNECT BY clause, which is fully supported by jOOQ, including all related functions and pseudo-columns. A more or less formal definition of this clause is given here:
    -											</p>
    -</html><sql>--   SELECT ..
    ---     FROM ..
    ---    WHERE ..
    - CONNECT BY [ NOCYCLE ] condition [ AND condition, ... ] [ START WITH condition ]
    --- GROUP BY ..
    --- ORDER [ SIBLINGS ] BY ..</sql><html>
    -
    -											<p>
    -												An example for an iterative query, iterating through values between 1 and 5 is this:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT LEVEL
    -FROM DUAL
    -CONNECT BY LEVEL <= 5]]></sql><java><![CDATA[// Get a table with elements 1, 2, 3, 4, 5
    -create.select(level())
    -      .connectBy(level().lessOrEqual(5));]]></java></code-pair><html>
    -
    -											<p>
    -												Here's a more complex example where you can recursively fetch directories in your database, and concatenate them to a path:
    -											</p>
    -</html><code-pair>
    -<sql><![CDATA[SELECT 
    -  SUBSTR(SYS_CONNECT_BY_PATH(DIRECTORY.NAME, '/'), 2)
    -FROM DIRECTORY
    -CONNECT BY 
    -  PRIOR DIRECTORY.ID = DIRECTORY.PARENT_ID
    -START WITH DIRECTORY.PARENT_ID IS NULL
    -ORDER BY 1]]></sql><java><![CDATA[.select(
    -   sysConnectByPath(DIRECTORY.NAME, "/").substring(2))
    -.from(DIRECTORY)
    -.connectBy(
    -   prior(DIRECTORY.ID).equal(DIRECTORY.PARENT_ID))
    -.startWith(DIRECTORY.PARENT_ID.isNull())
    -.orderBy(1);]]></java>
    -</code-pair><html>
    -
    -    										<p>
    -    											The output might then look like this
    -   											</p>
    -
    -</html><text>+------------------------------------------------+
    -|substring                                       |
    -+------------------------------------------------+
    -|C:                                              |
    -|C:/eclipse                                      |
    -|C:/eclipse/configuration                        |
    -|C:/eclipse/dropins                              |
    -|C:/eclipse/eclipse.exe                          |
    -+------------------------------------------------+
    -|...21 record(s) truncated...
    -</text><html>
    -
    -											<p>
    -												Some of the supported functions and pseudo-columns are these (available from the <reference id="dsl" title="DSL"/>):
    -											</p>
    -
    -											<ul>
    -												<li>LEVEL</li>
    -												<li>CONNECT_BY_IS_CYCLE</li>
    -												<li>CONNECT_BY_IS_LEAF</li>
    -												<li>CONNECT_BY_ROOT</li>
    -												<li>SYS_CONNECT_BY_PATH</li>
    -												<li>PRIOR</li>
    -											</ul>
    -
    -											<p>
    -												Note that this syntax is also supported in the CUBRID database and might be simulated in other dialects supporting common table expressions in the future.
    -											</p>
    -											
    -											<h3>ORDER SIBLINGS</h3>
    -											<p>
    -												The Oracle database allows for specifying a SIBLINGS keyword in the <reference id="order-by-clause" title="ORDER BY clause"/>. Instead of ordering the overall result, this will only order siblings among each other, keeping the hierarchy intact. An example is given here:
    -											</p>
    -											
    -</html><code-pair>
    -<sql><![CDATA[SELECT DIRECTORY.NAME
    -FROM DIRECTORY
    -CONNECT BY 
    -  PRIOR DIRECTORY.ID = DIRECTORY.PARENT_ID
    -START WITH DIRECTORY.PARENT_ID IS NULL
    -ORDER SIBLINGS BY 1]]></sql><java><![CDATA[.select(DIRECTORY.NAME)
    -.from(DIRECTORY)
    -.connectBy(
    -   prior(DIRECTORY.ID).equal(DIRECTORY.PARENT_ID))
    -.startWith(DIRECTORY.PARENT_ID.isNull())
    -.orderSiblingsBy(1);]]></java>
    -</code-pair><html>
    -											
    -										</html></content>
    -									</section>
    -
    -									<section id="group-by-clause">
    -										<title>The GROUP BY clause</title>
    -										<content><html>
    -											<p>
    -												GROUP BY can be used to create unique groups of data, to form aggregations, to remove duplicates and for other reasons. It will transform your previously defined <reference id="table-expressions" title="set of table expressions"/>, and return only one record per unique group as specified in this clause. For instance, you can group books by BOOK.AUTHOR_ID:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT AUTHOR_ID, COUNT(*)
    -FROM BOOK
    -GROUP BY AUTHOR_ID]]></sql><java><![CDATA[create.select(BOOK.AUTHOR_ID, count())
    -      .from(BOOK)
    -      .groupBy(BOOK.AUTHOR_ID);]]></java></code-pair><html>
    -
    -											<p>
    -												The above example counts all books per author.
    -											</p>
    -											<p>
    -												Note, as defined in the SQL standard, when grouping, you may no longer project any columns that are not a formal part of the GROUP BY clause, or <reference id="aggregate-functions" title="aggregate functions"/>.
    -											</p>
    -											
    -											<h3>MySQL's deviation from the SQL standard</h3>
    -											<p>
    -												MySQL has a peculiar way of not adhering to this standard behaviour. This is documented in the <a href="http://dev.mysql.com/doc/refman/5.6/en/group-by-hidden-columns.html">MySQL manual</a>. In short, with MySQL, you can also project any other field that is not part of the GROUP BY clause. The projected values will just be arbitrary values from within the group. You cannot rely on any ordering. For example:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT AUTHOR_ID, TITLE
    -FROM BOOK
    -GROUP BY AUTHOR_ID]]></sql><java><![CDATA[create.select(BOOK.AUTHOR_ID, BOOK.TITLE)
    -      .from(BOOK)
    -      .groupBy(AUTHOR_ID);]]></java></code-pair><html>
    -
    -											<p>
    -												This will return an arbitrary title per author. jOOQ supports this syntax, as jOOQ is not doing any checks internally, about the consistence of tables/fields/functions that you provide it.
    -											</p>
    -
    -											<h3>Empty GROUP BY clauses</h3>
    -											<p>
    -												jOOQ supports empty <code>GROUP BY ()</code> clause as well. This will result in <reference id="select-statement" title="SELECT statements"/> that return only one record.
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT COUNT(*)
    -FROM BOOK
    -GROUP BY ()]]></sql><java><![CDATA[create.selectCount()
    -      .from(BOOK)
    -      .groupBy();]]></java></code-pair><html>
    -
    -											
    -											<h3>ROLLUP(), CUBE() and GROUPING SETS()</h3>
    -											<p>
    -												Some databases support the SQL standard grouping functions and some extensions thereof. See the manual's section about <reference id="grouping-functions" title="grouping functions"/> for more details.
    -											</p>
    -										</html></content>
    -									</section>
    -
    -									<section id="having-clause">
    -										<title>The HAVING clause</title>
    -										<content><html>
    -											<p>
    -												The HAVING clause is commonly used to further restrict data resulting from a previously issued <reference id="group-by-clause" title="GROUP BY clause"/>. An example, selecting only those authors that have written at least two books:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT AUTHOR_ID, COUNT(*)
    -FROM BOOK
    -GROUP BY AUTHOR_ID
    -HAVING COUNT(*) >= 2]]></sql><java><![CDATA[create.select(BOOK.AUTHOR_ID, count(*))
    -      .from(BOOK)
    -      .groupBy(AUTHOR_ID)
    -      .having(count().greaterOrEqual(2));]]></java></code-pair><html>
    -
    -											<p>
    -												According to the SQL standard, you may omit the GROUP BY clause and still issue a HAVING clause. This will implicitly GROUP BY (). jOOQ also supports this syntax. The following example selects one record, only if there are at least 4 books in the books table:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT COUNT(*)
    -FROM BOOK
    -HAVING COUNT(*) >= 4]]></sql><java><![CDATA[create.select(count(*))
    -      .from(BOOK)
    -      .having(count().greaterOrEqual(4));]]></java></code-pair><html>
    -
    -										</html></content>
    -									</section>
    -
    -									<section id="order-by-clause">
    -										<title>The ORDER BY clause</title>
    -										<content><html>
    -											<p>
    -												Databases are allowed to return data in any arbitrary order, unless you explicitly declare that order in the ORDER BY clause. In jOOQ, this is straight-forward:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT AUTHOR_ID, TITLE
    -FROM BOOK
    -ORDER BY AUTHOR_ID ASC, TITLE DESC]]></sql><java><![CDATA[create.select(BOOK.AUTHOR_ID, BOOK.TITLE)
    -      .from(BOOK)
    -      .orderBy(BOOK.AUTHOR_ID.asc(), BOOK.TITLE.desc());]]></java></code-pair><html>
    -
    -											<p>
    -												Any jOOQ <reference id="column-expressions" title="column expression (or field)"/> can be transformed into an <reference class="org.jooq.SortField"/> by calling the asc() and desc() methods.
    -											</p>
    -
    -											<h3>Ordering by field index</h3>
    -											<p>
    -												The SQL standard allows for specifying integer literals (<reference id="inlined-parameters" title="literals"/>, not <reference id="bind-values" title="bind values"/>!) to reference column indexes from the projection (<reference id="select-clause" title="SELECT clause"/>). This may be useful if you do not want to repeat a lengthy expression, by which you want to order - although most databases also allow for referencing <reference id="aliased-columns" title="aliased column references"/> in the ORDER BY clause. An example of this is given here:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT AUTHOR_ID, TITLE
    -FROM BOOK
    -ORDER BY 1 ASC, 2 DESC]]></sql><java><![CDATA[create.select(BOOK.AUTHOR_ID, BOOK.TITLE)
    -      .from(BOOK)
    -      .orderBy(one().asc(), inline(2).desc());]]></java></code-pair><html>
    -
    -											<p>
    -												Note, how <code>one()</code> is used as a convenience short-cut for <code>inline(1)</code>
    -											</p>
    -
    -											<h3>Ordering and NULLS</h3>
    -											<p>
    -												A few databases support the SQL standard "null ordering" clause in sort specification lists, to define whether <code>NULL</code> values should come first or last in an ordered result.
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT 
    -  BOOK.AUTHOR_ID, 
    -  BOOK.CO_AUTHOR_ID, 
    -  BOOK.TITLE
    -FROM BOOK
    -ORDER BY AUTHOR_ID ASC,
    -         CO_AUTHOR_ID ASC NULLS LAST]]></sql><java><![CDATA[create.select(
    -         BOOK.AUTHOR_ID, 
    -         BOOK.CO_AUTHOR_ID, 
    -         BOOK.TITLE)
    -      .from(BOOK)
    -      .orderBy(BOOK.AUTHOR_ID.asc(),
    -               BOOK.CO_AUTHOR_ID.asc().nullsLast());]]></java></code-pair><html>
    -
    -											<p>
    -												If your database doesn't support this syntax, jOOQ simulates it using a <reference id="case-expressions" title="CASE expression"/> as follows
    -											</p>
    -</html><code-pair>
    -<sql><![CDATA[SELECT 
    -  BOOK.AUTHOR_ID, BOOK.CO_AUTHOR_ID, BOOK.TITLE
    -FROM BOOK
    -ORDER BY AUTHOR_ID ASC,
    -         CASE WHEN CO_AUTHOR_ID IS NULL 
    -              THEN 1 ELSE 0 END ASC,
    -         CO_AUTHOR_ID ASC]]></sql><java><![CDATA[create.select(
    -         BOOK.AUTHOR_ID, 
    -         BOOK.CO_AUTHOR_ID,
    -         BOOK.TITLE)
    -      .from(BOOK)
    -      .orderBy(BOOK.AUTHOR_ID.asc(),
    -               BOOK.CO_AUTHOR_ID.asc().nullsLast());]]></java></code-pair><html>
    -
    -											<h3>Ordering using CASE expressions</h3>
    -											<p>
    -												Using <reference id="case-expressions" title="CASE expressions"/> in SQL ORDER BY clauses is a common pattern, if you want to introduce some sort indirection / sort mapping into your queries. As with SQL, you can add any type of <reference id="column-expressions" title="column expression"/> into your ORDER BY clause. For instance, if you have two favourite books that you always want to appear on top, you could write:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM BOOK
    -ORDER BY CASE TITLE
    -         WHEN '1984' THEN 0
    -         WHEN 'Animal Farm' THEN 1
    -         ELSE 2 END ASC]]></sql><java><![CDATA[create.select()
    -      .from(BOOK)
    -      .orderBy(decode().value(BOOK.TITLE)
    -                       .when("1984", 0)
    -                       .when("Animal Farm", 1)
    -                       .otherwise(2).asc());]]></java></code-pair><html>
    -
    -											<p>
    -												But writing these things can become quite verbose. jOOQ supports a convenient syntax for specifying sort mappings. The same query can be written in jOOQ as such:
    -											</p>
    -
    -</html><java><![CDATA[create.select()
    -      .from(BOOK)
    -      .orderBy(BOOK.TITLE.sortAsc("1984", "Animal Farm"));]]></java><html>
    -
    -											<p>
    -												More complex sort indirections can be provided using a Map:
    -											</p>
    -
    -</html><java><![CDATA[create.select()
    -      .from(BOOK)
    -      .orderBy(BOOK.TITLE.sort(new HashMap<String, Integer>() {{
    -          put("1984", 1);
    -          put("Animal Farm", 13);
    -          put("The jOOQ book", 10);
    -      }}));]]></java><html>
    -
    -      										<p>
    -      											Of course, you can combine this feature with the previously discussed NULLS FIRST / NULLS LAST feature. So, if in fact these two books are the ones you like least, you can put all NULLS FIRST (all the other books):
    -      										</p>
    -
    -</html><java><![CDATA[create.select()
    -      .from(BOOK)
    -      .orderBy(BOOK.TITLE.sortAsc("1984", "Animal Farm").nullsFirst());]]></java><html>
    -
    -											<h3>jOOQ's understanding of SELECT .. ORDER BY</h3>
    -											<p>
    -												The SQL standard defines that a "query expression" can be ordered, and that query expressions can contain <reference id="union-clause" title="UNION, INTERSECT and EXCEPT clauses"/>, whose subqueries cannot be ordered. While this is defined as such in the SQL standard, many databases allowing for the non-standard <reference id="limit-clause" title="LIMIT clause"/> in one way or another, do not adhere to this part of the SQL standard. Hence, jOOQ allows for ordering all SELECT statements, regardless whether they are constructed as a part of a UNION or not. Corner-cases are handled internally by jOOQ, by introducing synthetic subselects to adhere to the correct syntax, where this is needed.
    -											</p>
    -											
    -											
    -											<h3>Oracle's ORDER SIBLINGS BY clause</h3>
    -											<p>
    -												jOOQ also supports Oracle's SIBLINGS keyword to be used with ORDER BY clauses for <reference id="connect-by-clause" title="hierarchical queries using CONNECT BY"/>
    -											</p>
    -										</html></content>
    -									</section>
    -
    -									<section id="limit-clause">
    -										<title>The LIMIT .. OFFSET clause</title>
    -										<content><html>
    -											<p>
    -												While being extremely useful for every application that does paging, or just to limit result sets to reasonable sizes, this clause is not yet part of any SQL standard (up until SQL:2008). Hence, there exist a variety of possible implementations in various SQL dialects, concerning this limit clause. jOOQ chose to implement the LIMIT .. OFFSET clause as understood and supported by MySQL, H2, HSQLDB, Postgres, and SQLite. Here is an example of how to apply limits with jOOQ:
    -											</p>
    -
    -</html><java><![CDATA[create.select().from(BOOK).limit(1).offset(2);]]></java><html>
    -
    -											<p>
    -												This will limit the result to 1 books starting with the 2nd book (starting at offset 0!). limit() is supported in all dialects, offset() in all but Sybase ASE, which has no reasonable means to simulate it. This is how jOOQ simulates the above query in various SQL dialects:
    -											</p>
    -
    -</html><sql><![CDATA[-- MySQL, H2, HSQLDB, Postgres, and SQLite
    -SELECT * FROM BOOK LIMIT 1 OFFSET 2
    -
    --- CUBRID supports a MySQL variant of the LIMIT .. OFFSET clause
    -SELECT * FROM BOOK LIMIT 2, 1
    -
    --- Derby, SQL Server 2012
    -SELECT * FROM BOOK OFFSET 2 ROWS FETCH NEXT 1 ROWS ONLY
    -
    --- Ingres
    -SELECT * FROM BOOK OFFSET 2 FETCH FIRST 1 ROWS ONLY
    -
    --- Firebird
    -SELECT * FROM BOOK ROWS 2 TO 3
    -
    --- Sybase SQL Anywhere
    -SELECT TOP 1 ROWS START AT 3 * FROM BOOK
    -
    --- DB2 (without OFFSET)
    -SELECT * FROM BOOK FETCH FIRST 1 ROWS ONLY
    -
    --- Sybase ASE, SQL Server 2008 (without OFFSET)
    -SELECT TOP 1 * FROM BOOK
    -
    --- DB2 (with OFFSET), SQL Server 2008 (with OFFSET), Oracle (actual query may vary)
    -SELECT * FROM (
    -  SELECT LIMIT_98843777.*, ROW_NUMBER() OVER (ORDER BY ID ASC) AS ROWNUM_98843777
    -  FROM (
    -    SELECT TOP 100 PERCENT *
    -    FROM BOOK
    -    ORDER BY ID ASC
    -  ) AS LIMIT_98843777
    -) AS OUTER_LIMIT_98843777
    -WHERE ROWNUM_98843777 > 1
    -AND ROWNUM_98843777 <= 3
    -]]></sql><html>
    -
    -											<p>
    -												As you can see, jOOQ will take care of the incredibly painful ROW_NUMBER() OVER() (or ROWNUM for Oracle) filtering in subselects for you, you'll just have to write limit(1).offset(2) in any dialect.
    -											</p>
    -
    -											<h3>SQL Server's ORDER BY, TOP and subqueries</h3>
    -											<p>
    -												As can be seen in the above example, writing correct SQL can be quite tricky, depending on the SQL dialect. For instance, with SQL Server, you cannot have an ORDER BY clause in a subquery, unless you also have a TOP clause. This is illustrated by the fact that jOOQ renders a TOP 100 PERCENT clause for you. The same applies to the fact that ROW_NUMBER() OVER() needs an ORDER BY windowing clause, even if you don't provide one to the jOOQ query. By default, jOOQ adds ordering by the first column of your projection.
    -											</p>
    -										</html></content>
    -									</section>
    -
    -									<section id="for-update-clause">
    -										<title>The FOR UPDATE clause</title>
    -										<content><html>
    -											<p>
    -												For inter-process synchronisation and other reasons, you may choose to use the SELECT .. FOR UPDATE clause to indicate to the database, that a set of cells or records should be locked by a given transaction for subsequent updates. With jOOQ, this can be achieved as such:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM BOOK
    -WHERE ID = 3
    -FOR UPDATE]]></sql><java><![CDATA[create.select()
    -      .from(BOOK)
    -      .where(BOOK.ID.equal(3))
    -      .forUpdate();]]></java></code-pair><html>
    -
    -											<p>
    -												The above example will produce a record-lock, locking the whole record for updates. Some databases also support cell-locks using FOR UPDATE OF ..
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM BOOK
    -WHERE ID = 3
    -FOR UPDATE OF TITLE]]></sql><java><![CDATA[create.select()
    -      .from(BOOK)
    -      .where(BOOK.ID.equal(3))
    -      .forUpdate().of(BOOK.TITLE);]]></java></code-pair><html>
    -
    -											<p>
    -												Oracle goes a bit further and also allows to specify the actual locking behaviour. It features these additional clauses, which are all supported by jOOQ:
    -											</p>
    -											<ul>
    -												<li><code>FOR UPDATE NOWAIT</code>: This is the default behaviour. If the lock cannot be acquired, the query fails immediately</li>
    -												<li><code>FOR UPDATE WAIT n</code>: Try to wait for [n] seconds for the lock acquisition. The query will fail only afterwards</li>
    -												<li><code>FOR UPDATE SKIP LOCKED</code>: This peculiar syntax will skip all locked records. This is particularly useful when implementing queue tables with multiple consumers</li>
    -											</ul>
    -											<p>
    -												With jOOQ, you can use those Oracle extensions as such:
    -											</p>
    -
    -</html><java><![CDATA[create.select().from(BOOK).where(BOOK.ID.equal(3)).forUpdate().nowait();
    -create.select().from(BOOK).where(BOOK.ID.equal(3)).forUpdate().wait(5);
    -create.select().from(BOOK).where(BOOK.ID.equal(3)).forUpdate().skipLocked();]]></java><html>
    -
    -											<h3>FOR UPDATE in CUBRID and SQL Server</h3>
    -											<p>
    -												The SQL standard specifies a <code>FOR UPDATE</code> clause to be applicable for cursors. Most databases interpret this as being applicable for all <code>SELECT</code> statements. An exception to this rule are the CUBRID and SQL Server databases, that do not allow for any <code>FOR UPDATE</code> clause in a regular SQL <code>SELECT</code> statement. jOOQ simulates the <code>FOR UPDATE</code> behaviour, by locking record by record with JDBC. JDBC allows for specifying the flags <code>TYPE_SCROLL_SENSITIVE</code>, <code>CONCUR_UPDATABLE</code> for any statement, and then using ResultSet.updateXXX() methods to produce a cell-lock / row-lock. Here's a simplified example in JDBC:
    -											</p>
    -</html><java><![CDATA[PreparedStatement stmt = connection.prepareStatement(
    -  "SELECT * FROM author WHERE id IN (3, 4, 5)",
    -  ResultSet.TYPE_SCROLL_SENSITIVE,
    -  ResultSet.CONCUR_UPDATABLE);
    -ResultSet rs = stmt.executeQuery();
    -
    -while (rs.next()) {
    -  // UPDATE the primary key for row-locks, or any other columns for cell-locks
    -  rs.updateObject(1, rs.getObject(1));
    -  rs.updateRow();
    -
    -  // Do more stuff with this record
    -}]]></java><html>
    -
    -											<p>
    -												The main drawback of this approach is the fact that the database has to maintain a scrollable cursor, whose records are locked one by one. This can cause a major risk of deadlocks or race conditions if the JDBC driver can recover from the unsuccessful locking, if two Java threads execute the following statements:
    -											</p>
    -
    -</html><sql><![CDATA[-- thread 1
    -SELECT * FROM author ORDER BY id ASC;
    -
    --- thread 2
    -SELECT * FROM author ORDER BY id DESC;]]></sql><html>
    -
    -											<p>
    -												So use this technique with care, possibly only ever locking single rows!
    -											</p>
    -
    -											<h3>Pessimistic (shared) locking with the <code>FOR SHARE</code> clause</h3>
    -											<p>
    -												Some databases (MySQL, Postgres) also allow to issue a non-exclusive lock explicitly using a <code>FOR SHARE</code> clause. This is also supported by jOOQ
    -											</p>
    -
    -											<h3>Optimistic locking in jOOQ</h3>
    -											<p>
    -												Note, that jOOQ also supports optimistic locking, if you're doing simple CRUD. This is documented in the section's manual about <reference id="optimistic-locking" title="optimistic locking"/>.
    -											</p>
    -										</html></content>
    -									</section>
    -
    -									<section id="union-clause">
    -										<title>UNION, INTERSECTION and EXCEPT</title>
    -										<content><html>
    -											<p>
    -												SQL allows to perform set operations as understood in standard set theory on result sets. These operations include unions, intersections, subtractions. For two subselects to be combinable by such a set operator, each subselect must return a <reference id="table-expressions" title="table expression"/> of the same degree and type.
    -											</p>
    -											
    -											<h3>UNION and UNION ALL</h3>
    -											<p>
    -												These operators combine two results into one. While <code>UNION</code> removes all duplicate records resulting from this combination, <code>UNION ALL</code> leaves subselect results as they are. Typically, you should prefer <code>UNION ALL</code> over <code>UNION</code>, if you don't really need to remove duplicates. The following example shows how to use such a <code>UNION</code> operation in jOOQ.
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT * FROM BOOK WHERE ID = 3
    -UNION ALL
    -SELECT * FROM BOOK WHERE ID = 5]]></sql><java><![CDATA[create.selectFrom(BOOK).where(BOOK.ID.equal(3))
    -      .unionAll(
    -create.selectFrom(BOOK).where(BOOK.ID.equal(5)));]]></java></code-pair><html>
    -											
    -											<h3>INTERSECT [ ALL ] and EXCEPT [ ALL ]</h3>
    -											<p>
    -												<code>INTERSECT</code> is the operation that produces only those values that are returned by both subselects. <code>EXCEPT</code> is the operation that returns only those values that are returned exclusively in the first subselect. Both operators will remove duplicates from their results. The SQL standard allows to specify the <code>ALL</code> keyword for both of these operators as well, but this is hardly supported in any database. jOOQ does not support <code>INTERSECT ALL</code>, <code>EXEPT ALL</code> operations either. 
    -											</p>
    -											
    -											<h3>jOOQ's set operators and how they're different from standard SQL</h3>
    -											<p>
    -												As previously mentioned in the manual's section about the <reference id="order-by-clause" title="ORDER BY clause"/>, jOOQ has slightly changed the semantics of these set operators. While in SQL, a subselect may not contain any <reference id="order-by-clause" title="ORDER BY clause"/> or <reference id="limit-clause" title="LIMIT clause"/> (unless you wrap the subselect into a <reference id="nested-selects" title="nested SELECT"/>), jOOQ allows you to do so. In order to select both the youngest and the oldest author from the database, you can issue the following statement with jOOQ (rendered to the MySQL dialect):
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[  (SELECT * FROM AUTHOR 
    -   ORDER BY DATE_OF_BIRTH ASC LIMIT 1)
    -UNION
    -  (SELECT * FROM AUTHOR 
    -   ORDER BY DATE_OF_BIRTH DESC LIMIT 1)]]></sql><java><![CDATA[create.selectFrom(AUTHOR)
    -      .orderBy(AUTHOR.DATE_OF_BIRTH.asc()).limit(1)
    -      .union(
    -create.selectFrom(AUTHOR)
    -      .orderBy(AUTHOR.DATE_OF_BIRTH.desc()).limit(1));]]></java></code-pair><html>
    -		
    -											<h3>Projection typesafety for degrees between 1 and {max-row-degree}</h3>
    -											<p>
    -												Two subselects that are combined by a set operator are required to be of the same degree and, in most databases, also of the same type. jOOQ 3.0's introduction of <reference id="record-n" title="Typesafe Record[N] types"/> helps compile-checking these constraints:
    -											</p>
    -											
    -</html><java><![CDATA[// Some sample SELECT statements
    -Select<Record2<Integer, String>>  s1 = select(BOOK.ID, BOOK.TITLE).from(BOOK);
    -Select<Record1<Integer>>          s2 = selectOne();
    -Select<Record2<Integer, Integer>> s3 = select(one(), zero());
    -Select<Record2<Integer, String>>  s4 = select(one(), inline("abc"));
    -
    -// Let's try to combine them:
    -s1.union(s2); // Doesn't compile because of a degree mismatch. Expected: Record2<...>, got: Record1<...>
    -s1.union(s3); // Doesn't compile because of a type mismatch. Expected: <Integer, String>, got: <Integer, Integer>
    -s1.union(s4); // OK. The two Record[N] types match]]></java></content>
    -									</section>
    -
    -									<section id="oracle-hints">
    -										<title>Oracle-style hints</title>
    -										<content><html>
    -											<p>
    -												If you are closely coupling your application to an Oracle (or CUBRID) database,	you might need to be able to pass hints of the form <code>/*+HINT*/</code> with your SQL statements to the Oracle database. For example:
    -											</p>
    -
    -</html><sql>SELECT /*+ALL_ROWS*/ FIRST_NAME, LAST_NAME
    -  FROM AUTHOR</sql><html>
    -
    -				  							<p>
    -				  								This can be done in jOOQ using the <code>.hint()</code> clause in your SELECT statement:
    -			  								</p>
    -
    -</html><java>create.select(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .hint("/*+ALL_ROWS*/")
    -      .from(AUTHOR);</java><html>
    -
    -											<p>
    -												Note that you can pass any string in the <code>.hint()</code> clause. If you use that clause, the passed string will always be put in between the <code>SELECT [DISTINCT]</code> keywords and the actual projection list. This can be useful in other databases too, such as MySQL, for instance:
    -											</p>
    -											
    -</html><code-pair>
    -<sql><![CDATA[SELECT SQL_CALC_FOUND_ROWS field1, field2
    -FROM table1
    -]]></sql><java><![CDATA[create.select(field1, field2)
    -       .hint("SQL_CALC_FOUND_ROWS")
    -       .from(table1)]]></java>
    -</code-pair><html>
    -										</html></content>
    -									</section>
    -									
    -									<section id="select-lexical-vs-logical-order">
    -										<title>Lexical and logical SELECT clause order</title>
    -										<content><html>
    -											<p>
    -												SQL has a lexical and a logical order of <code>SELECT</code> clauses. The lexical order of <code>SELECT</code> clauses is inspired by the English language. As SQL statements are commands for the database, it is natural to express a statement in an imperative tense, such as "SELECT this and that!".
    -											</p>
    -											
    -											<h3>Logical SELECT clause order</h3>
    -											<p>
    -												The logical order of <code>SELECT</code> clauses, however, does not correspond to the syntax. In fact, the logical order is this:
    -											</p>
    -											
    -											<ul>
    -												<li><reference id="from-clause" title="The FROM clause"/>: First, all data sources are defined and joined</li>
    -												<li><reference id="where-clause" title="The WHERE clause"/>: Then, data is filtered as early as possible</li>
    -												<li><reference id="connect-by-clause" title="The CONNECT BY clause"/>: Then, data is traversed iteratively or recursively, to produce new tuples</li>
    -												<li><reference id="group-by-clause" title="The GROUP BY clause"/>: Then, data is reduced to groups, possibly producing new tuples if <reference id="grouping-functions" title="grouping functions like ROLLUP(), CUBE(), GROUPING SETS()"/> are used</li>
    -												<li><reference id="having-clause" title="The HAVING clause"/>: Then, data is filtered again</li>
    -												<li><reference id="select-clause" title="The SELECT clause"/>: Only now, the projection is evaluated. In case of a <code>SELECT DISTINCT</code> statement, data is further reduced to remove duplicates</li>
    -												<li><reference id="union-clause" title="The UNION clause"/>: Optionally, the above is repeated for several <code>UNION</code>-connected subqueries. Unless this is a <code>UNION ALL</code> clause, data is further reduced to remove duplicates</li>
    -												<li><reference id="order-by-clause" title="The ORDER BY clause"/>: Now, all remaining tuples are ordered</li>
    -												<li><reference id="limit-clause" title="The LIMIT clause"/>: Then, a paging view is created for the ordered tuples</li>
    -												<li><reference id="for-update-clause" title="The FOR UPDATE clause"/>: Finally, pessimistic locking is applied</li>
    -											</ul>
    -											
    -											<p>
    -												The <a href="http://msdn.microsoft.com/en-us/library/ms189499.aspx">SQL Server documentation</a> also explains this, with slightly different clauses:
    -											</p>
    -											
    -											<ul>
    -												<li><code>FROM</code></li>
    -												<li><code>ON</code></li>
    -												<li><code>JOIN</code></li>
    -												<li><code>WHERE</code></li>
    -												<li><code>GROUP BY</code></li>
    -												<li><code>WITH CUBE</code> or <code>WITH ROLLUP</code></li>
    -												<li><code>HAVING</code></li>
    -												<li><code>SELECT</code></li>
    -												<li><code>DISTINCT</code></li>
    -												<li><code>ORDER BY</code></li>
    -												<li><code>TOP</code></li>
    -											</ul>
    -											
    -											<p>
    -												As can be seen, databases have to logically reorder a SQL statement in order to determine the best execution plan. 
    -											</p>
    -											
    -											<h3>Alternative syntaxes: LINQ, SLICK</h3>
    -											<p>
    -											    Some "higher-level" abstractions, such as C#'s LINQ or Scala's SLICK try to inverse the lexical order of <code>SELECT</code> clauses to what appears to be closer to the logical order. The obvious advantage of moving the <code>SELECT</code> clause to the end is the fact that the projection type, which is the record type returned by the <code>SELECT</code> statement can be re-used more easily in the target environment of the internal domain specific language.
    -											</p>
    -											
    -											<p>
    -												A LINQ example:
    -											</p>
    -</html><java><![CDATA[// LINQ-to-SQL looks somewhat similar to SQL
    -// AS clause    // FROM clause
    -From p          In db.Products
    -
    -// WHERE clause
    -Where p.UnitsInStock <= p.ReorderLevel AndAlso Not p.Discontinued
    -
    -// SELECT clause
    -Select p]]></java><html>											
    -											
    -											<p> 
    -											    A SLICK example:
    -											</p>
    -											
    -</html><scala><![CDATA[// "for" is the "entry-point" to the DSL
    -val q = for {
    -
    -    // FROM clause   WHERE clause
    -    c <- Coffees     if c.supID === 101
    -
    -// SELECT clause and projection to a tuple
    -} yield (c.name, c.price)]]></scala><html>
    -
    -											<p>
    -												While this looks like a good idea at first, it only complicates translation to more advanced SQL statements while impairing readability for those users that are used to writing SQL. jOOQ is designed to look just like SQL. This is specifically true for SLICK, which not only changed the <code>SELECT</code> clause order, but also heavily "integrated" SQL clauses with the Scala language.
    -											</p>
    -											<p>
    -												For these reasons, the jOOQ DSL API is modelled in SQL's lexical order.
    -											</p>
    -										</html></content>
    -									</section>
    -								</sections>
    -							</section>
    -
    -							<section id="insert-statement">
    -								<title>The INSERT statement</title>
    -								<content><html>
    -									<p>
    -										The <code>INSERT</code> statement is used to insert new records into a database table. Records can either be supplied using a <code>VALUES()</code> constructor, or a <code>SELECT</code> statement. jOOQ supports both types of <code>INSERT</code> statements. An example of an <code>INSERT</code> statement using a <code>VALUES()</code> constructor is given here:
    -									</p>
    -
    -
    -</html><code-pair>
    -<sql>INSERT INTO AUTHOR 
    -       (ID, FIRST_NAME, LAST_NAME)
    -VALUES (100, 'Hermann', 'Hesse');</sql><java>create.insertInto(AUTHOR,
    -        AUTHOR.ID, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .values(100, "Hermann", "Hesse");</java></code-pair><html>
    -
    -									<p>
    -										Note that for explicit degrees up to {max-row-degree}, the <code>VALUES()</code> constructor provides additional typesafety. The following example illustrates this:
    -									</p>
    -
    -</html><java><![CDATA[InsertValuesStep3<AuthorRecord, Integer, String, String> step = 
    -  create.insertInto(AUTHOR, AUTHOR.ID, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME);
    -    step.values("A", "B", "C");
    -         // ^^^ Doesn't compile, the expected type is Integer]]></java><html>
    -									<h3>INSERT multiple rows with the VALUES() constructor</h3>
    -									<p>
    -										The SQL standard specifies that multiple rows can be supplied to the VALUES() constructor in an INSERT statement. Here's an example of a multi-record INSERT
    -									</p>
    -</html><code-pair>
    -<sql>INSERT INTO AUTHOR
    -       (ID, FIRST_NAME, LAST_NAME)
    -VALUES (100, 'Hermann', 'Hesse'),
    -       (101, 'Alfred', 'Döblin');</sql><java>create.insertInto(AUTHOR,
    -        AUTHOR.ID, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .values(100, "Hermann", "Hesse")
    -      .values(101, "Alfred", "Döblin");</java></code-pair><html>
    -
    -									<p>
    -										jOOQ tries to stay close to actual SQL. In detail, however, Java's expressiveness is limited. That's why the values() clause is repeated for every record in multi-record inserts. 
    -									</p>
    -									<p> 
    -										Some RDBMS do not support inserting several records in a single statement. In those cases, jOOQ simulates multi-record INSERTs using the following SQL:
    -									</p>
    -
    -</html><code-pair>
    -<sql>INSERT INTO AUTHOR
    -    (ID, FIRST_NAME, LAST_NAME)
    -SELECT 100, 'Hermann', 'Hesse' FROM DUAL UNION ALL
    -SELECT 101, 'Alfred', 'Döblin' FROM DUAL;</sql><java>create.insertInto(AUTHOR,
    -        AUTHOR.ID, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .values(100, "Hermann", "Hesse")
    -      .values(101, "Alfred", "Döblin");
    -</java></code-pair><html>
    -
    -									<h3>INSERT using jOOQ's alternative syntax</h3>
    -									<p>
    -										MySQL (and some other RDBMS) allow for using a non-SQL-standard, UPDATE-like syntax for INSERT statements. This is also supported in jOOQ, should you prefer that syntax. The above INSERT statement can also be expressed as follows:
    -									</p>
    -
    -</html><java>create.insertInto(AUTHOR)
    -      .set(AUTHOR.ID, 100)
    -      .set(AUTHOR.FIRST_NAME, "Hermann")
    -      .set(AUTHOR.LAST_NAME, "Hesse")
    -      .newRecord()
    -      .set(AUTHOR.ID, 101)
    -      .set(AUTHOR.FIRST_NAME, "Alfred")
    -      .set(AUTHOR.LAST_NAME, "Döblin");</java><html>
    -      
    -									<p>
    -										As you can see, this syntax is a bit more verbose, but also more readable, as every field can be matched with its value. Internally, the two syntaxes are strictly equivalent.
    -									</p>
    -
    -									<h3>MySQL's INSERT .. ON DUPLICATE KEY UPDATE</h3>
    -									<p>
    -										The MySQL database supports a very convenient way to INSERT or UPDATE a record. This is a non-standard extension to the SQL syntax, which is supported by jOOQ and simulated in other RDBMS, where this is possible (i.e. if they support the SQL standard <reference id="merge-statement" title="MERGE statement"/>). Here is an example how to use the ON DUPLICATE KEY UPDATE clause:
    -									</p>
    -									
    -</html><java>// Add a new author called "Koontz" with ID 3.
    -// If that ID is already present, update the author's name
    -create.insertInto(AUTHOR, AUTHOR.ID, AUTHOR.LAST_NAME)
    -      .values(3, "Koontz")
    -      .onDuplicateKeyUpdate()
    -      .set(AUTHOR.LAST_NAME, "Koontz");</java><html>
    -
    -									<h3>The synthetic ON DUPLICATE KEY IGNORE clause</h3>
    -							
    -									<p>
    -										The MySQL database also supports an INSERT IGNORE INTO clause. This is supported by jOOQ using the more convenient SQL syntax variant of ON DUPLICATE KEY IGNORE, which can be equally simulated in other databases using a <reference id="merge-statement" title="MERGE statement"/>:
    -									</p>
    -									
    -</html><java>// Add a new author called "Koontz" with ID 3.
    -// If that ID is already present, ignore the INSERT statement
    -create.insertInto(AUTHOR, AUTHOR.ID, AUTHOR.LAST_NAME)
    -      .values(3, "Koontz")
    -      .onDuplicateKeyIgnore();</java><html>
    -
    -      								<h3>Postgres's INSERT .. RETURNING</h3>
    -									<p>
    -										The Postgres database has native support for an INSERT .. RETURNING clause. This is a very powerful concept that is simulated for all other dialects using JDBC's <reference class="java.sql.Statement" anchor="#getGeneratedKeys()" title="getGeneratedKeys()"/> method. Take this example:
    -									</p>
    -
    -</html><java><![CDATA[// Add another author, with a generated ID
    -Record<?> record =
    -create.insertInto(AUTHOR, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .values("Charlotte", "Roche")
    -      .returning(AUTHOR.ID)
    -      .fetchOne();
    -
    -System.out.println(record.getValue(AUTHOR.ID));
    -
    -// For some RDBMS, this also works when inserting several values
    -// The following should return a 2x2 table
    -Result<?> result =
    -create.insertInto(AUTHOR, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .values("Johann Wolfgang", "von Goethe")
    -      .values("Friedrich", "Schiller")
    -      // You can request any field. Also trigger-generated values
    -      .returning(AUTHOR.ID, AUTHOR.CREATION_DATE)
    -      .fetch();]]></java><html>
    -
    -		      						<p>
    -		      							Some databases have poor support for returning generated keys after INSERTs. In those cases, jOOQ might need to issue another <reference id="select-statement" title="SELECT statement"/> in order to fetch an @@identity value. Be aware, that this can lead to race-conditions in those databases that cannot properly return generated ID values. For more information, please consider the jOOQ Javadoc for the returning() clause.
    -		      						</p>
    -
    -									<h3>The INSERT SELECT statement</h3>
    -							
    -									<p>
    -										In some occasions, you may prefer the INSERT SELECT syntax, for instance, when you copy records from one table to another:
    -									</p>
    -									
    -</html><java>create.insertInto(AUTHOR_ARCHIVE)
    -      .select(create.selectFrom(AUTHOR).where(AUTHOR.DECEASED.isTrue()));</java></content>
    -							</section>
    -
    -							<section id="update-statement">
    -								<title>The UPDATE statement</title>
    -								<content><html>
    -									<p>
    -										The UPDATE statement is used to modify one or several pre-existing records in a database table. UPDATE statements are only possible on single tables. Support for multi-table updates will be implemented in the near future. An example update query is given here:
    -									</p>
    -
    -</html><code-pair>
    -<sql>UPDATE AUTHOR
    -   SET FIRST_NAME = 'Hermann',
    -       LAST_NAME = 'Hesse'
    - WHERE ID = 3;</sql><java>create.update(AUTHOR)
    -      .set(AUTHOR.FIRST_NAME, "Hermann")
    -      .set(AUTHOR.LAST_NAME, "Hesse")
    -      .where(AUTHOR.ID.equal(3));</java>
    -</code-pair><html>
    -
    -									<p>
    -										Most databases allow for using scalar subselects in UPDATE statements in one way or another. jOOQ models this through a <code>set(Field&lt;T>, Select&lt;? extends Record1&lt;T>>) method in the UPDATE DSL API:</code>
    -									</p>
    -
    -</html><code-pair>
    -<sql>UPDATE AUTHOR
    -   SET FIRST_NAME = (
    -         SELECT FIRST_NAME
    -         FROM PERSON
    -         WHERE PERSON.ID = AUTHOR.ID
    -       ),
    - WHERE ID = 3;</sql><java>create.update(AUTHOR)
    -      .set(AUTHOR.FIRST_NAME, 
    -         select(PERSON.FIRST_NAME)
    -        .from(PERSON)
    -        .where(PERSON.ID.equal(AUTHOR.ID))
    -      )
    -      .where(AUTHOR.ID.equal(3));</java>
    -</code-pair><html>
    -
    -
    -									<h3>Using row value expressions in an UPDATE statement</h3>
    -									<p>
    -										jOOQ supports formal <reference id="row-value-expressions" title="row value expressions"/> in various contexts, among which the UPDATE statement. Only one row value expression can be updated at a time. Here's an example:
    -									</p>
    -									
    -</html><code-pair>
    -<sql>UPDATE AUTHOR
    -   SET (FIRST_NAME, LAST_NAME) = 
    -       ('Hermann',  'Hesse')
    - WHERE ID = 3;</sql><java>create.update(AUTHOR)
    -      .set(row(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME),
    -           row("Herman",          "Hesse"))
    -      .where(AUTHOR.ID.equal(3));</java>
    -</code-pair><html>
    -
    -									<p>
    -										This can be particularly useful when using subselects:
    -									</p>
    -
    -</html><code-pair>
    -<sql>UPDATE AUTHOR
    -   SET (FIRST_NAME, LAST_NAME) = (
    -         SELECT PERSON.FIRST_NAME, PERSON.LAST_NAME
    -         FROM PERSON
    -         WHERE PERSON.ID = AUTHOR.ID
    -       )
    - WHERE ID = 3;</sql><java>create.update(AUTHOR)
    -      .set(row(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME),
    -           select(PERSON.FIRST_NAME, PERSON.LAST_NAME)
    -          .from(PERSON)
    -          .where(PERSON.ID.equal(AUTHOR.ID))
    -      )
    -      .where(AUTHOR.ID.equal(3));</java>
    -</code-pair><html>
    -
    -									<p>
    -										The above row value expressions usages are completely typesafe.
    -									</p>
    -									
    -									<h3>UPDATE .. RETURNING</h3>
    -									<p>
    -										The Firebird and Postgres databases support a <code>RETURNING</code> clause on their <code>UPDATE</code> statements, similar as the <code>RETURNING</code> clause in <reference id="insert-statement" title="INSERT statements"/>. This is useful to fetch trigger-generated values in one go. An example is given here:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[-- Fetch a trigger-generated value
    -UPDATE BOOK
    -SET TITLE = 'Animal Farm'
    -WHERE ID = 5
    -RETURNING UPDATE_COUNT]]></sql><java><![CDATA[int count = create.update(BOOK)
    -                  .set(BOOK.TITLE, "Animal Farm")
    -                  .where(BOOK.ID.equal(5))
    -                  .returning(BOOK.UPDATE_COUNT)
    -                  .fetchOne().getValue(BOOK.UPDATE_COUNT);]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										The <code>UPDATE .. RETURNING</code> clause is currently not simulated for other databases. Future versions might execute an additional <reference id="select-statement" title="SELECT statement"/> to fetch results.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="delete-statement">
    -								<title>The DELETE statement</title>
    -								<content><html>
    -									<p>
    -										The DELETE statement physically removes records from a database table. DELETE statements are only possible on single tables. Support for multi-table deletes will be implemented in the near future. An example delete query is given here:
    -									</p>
    -
    -</html><code-pair>
    -<sql>DELETE AUTHOR
    - WHERE ID = 100;</sql><java>create.delete(AUTHOR)
    -      .where(AUTHOR.ID.equal(100));</java>
    -</code-pair><html>
    -
    -								</html></content>
    -							</section>
    -
    -							<section id="merge-statement">
    -								<title>The MERGE statement</title>
    -								<content><html>
    -									<p>
    -										The MERGE statement is one of the most advanced standardised SQL constructs, which is supported by DB2, HSQLDB, Oracle, SQL Server and Sybase (MySQL has the similar INSERT .. ON DUPLICATE KEY UPDATE construct)
    -									</p>
    -									<p>
    -										The point of the standard MERGE statement is to take a TARGET table, and merge (INSERT, UPDATE) data from a SOURCE table into it. DB2, Oracle, SQL Server and Sybase also allow for DELETING some data and for adding many additional clauses. With jOOQ {jooq-version}, only Oracle's MERGE extensions are supported. Here is an example:
    -									</p>
    -
    -</html><code-pair>
    -<sql>-- Check if there is already an author called 'Hitchcock'
    --- If there is, rename him to John. If there isn't add him.
    -MERGE INTO AUTHOR
    -USING (SELECT 1 FROM DUAL)
    -ON (LAST_NAME = 'Hitchcock')
    -WHEN MATCHED THEN UPDATE SET FIRST_NAME = 'John'
    -WHEN NOT MATCHED THEN INSERT (LAST_NAME) VALUES ('Hitchcock')</sql><java>create.mergeInto(AUTHOR)
    -      .using(create().selectOne())
    -      .on(AUTHOR.LAST_NAME.equal("Hitchcock"))
    -      .whenMatchedThenUpdate()
    -      .set(AUTHOR.FIRST_NAME, "John")
    -      .whenNotMatchedThenInsert(AUTHOR.LAST_NAME)
    -      .values("Hitchcock");
    -
    -</java></code-pair><html>
    -
    -		                            <h3>MERGE Statement (H2-specific syntax)</h3>
    -									<p>
    -									    The H2 database ships with a somewhat less powerful but a little more intuitive syntax for its own version of the MERGE statement. An example more or less equivalent to the previous one can be seen here:
    -									</p>
    -									
    -</html><code-pair>
    -<sql>-- Check if there is already an author called 'Hitchcock'
    --- If there is, rename him to John. If there isn't add him.
    -
    -MERGE INTO AUTHOR (FIRST_NAME, LAST_NAME)
    -KEY (LAST_NAME)
    -VALUES ('John', 'Hitchcock')</sql><java>create.mergeInto(AUTHOR,
    -                 AUTHOR.FIRST_NAME,
    -                 AUTHOR.LAST_NAME)
    -      .key(AUTHOR.LAST_NAME)
    -      .values("John", "Hitchcock")
    -      .execute();
    -</java></code-pair><html>
    -
    -		                            <p>
    -		                                This syntax can be fully simulated by jOOQ for all other databases that support the SQL standard. For more information about the H2 MERGE syntax, see the documentation here:<br/>
    -		                                <a href="http://www.h2database.com/html/grammar.html#merge">http://www.h2database.com/html/grammar.html#merge</a>
    -		                            </p>
    -								
    -									<h3>Typesafety of VALUES() for degrees up to {max-row-degree}</h3>
    -									<p>
    -										Much like the <reference id="insert-statement" title="INSERT statement"/>, the <code>MERGE</code> statement's <code>VALUES()</code> clause provides typesafety for degrees up to {max-row-degree}, in both the standard syntax variant as well as the H2 variant.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="truncate-statement">
    -								<title>The TRUNCATE statement</title>
    -								<content><html>
    -									<p>
    -										The TRUNCATE statement is the only DDL statement supported by jOOQ so far. It is popular in many databases when you want to bypass constraints for table truncation. Databases may behave differently, when a truncated table is referenced by other tables. For instance, they may fail if records from a truncated table are referenced, even with ON DELETE CASCADE clauses in place. Please, consider your database manual to learn more about its TRUNCATE implementation.
    -									</p>
    -									<p>
    -										The TRUNCATE syntax is trivial:
    -									</p>
    -
    -</html><code-pair>
    -	<sql>TRUNCATE TABLE AUTHOR;</sql><java>create.truncate(AUTHOR).execute();</java>
    -</code-pair><html>
    -									
    -									<p>
    -										TRUNCATE is not supported by Ingres and SQLite. jOOQ will execute a DELETE FROM AUTHOR statement instead.
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="table-expressions">
    -						<title>Table expressions</title>
    -						<content><html>
    -							<p>
    -								The following sections explain the various types of table expressions supported by jOOQ
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="generated-tables">
    -								<title>Generated Tables</title>
    -								<content><html>
    -									<p>
    -										Most of the times, when thinking about a <reference id="table-expressions" title="table expression"/> you're probably thinking about an actual physical table in your database schema. If you're using jOOQ's <reference id="code-generation" title="code generator"/>, you will have all tables from your database schema available to you as type safe Java objects. You can then use these tables in SQL <reference id="from-clause" title="FROM clauses"/>, <reference id="join-clause" title="JOIN clauses"/> or in other <reference id="sql-statements" title="SQL statements"/>, just like any other table expression. An example is given here:
    -									</p>
    -							
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM AUTHOR -- Table expression AUTHOR
    -JOIN BOOK   -- Table expression BOOK
    -ON (AUTHOR.ID = BOOK.AUTHOR_ID)]]></sql><java><![CDATA[create.select()
    -      .from(AUTHOR) // Table expression AUTHOR
    -      .join(BOOK)   // Table expression BOOK
    -      .on(AUTHOR.ID.equal(BOOK.AUTHOR_ID));]]></java></code-pair><html>
    -							
    -									<p>
    -										The above example shows how AUTHOR and BOOK tables are joined in a <reference id="select-statement" title="SELECT statement"/>. It also shows how you can access physical <reference id="table-columns" title="table columns"/> by dereferencing the relevant Java attributes of their tables.
    -									</p>
    -									<p>
    -										See the manual's section about <reference id="codegen-tables" title="generated tables"/> for more information about what is really generated by the <reference id="code-generation" title="code generator"/>
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="aliased-tables">
    -								<title>Aliased Tables</title>
    -								<content><html>
    -									<p>
    -										The strength of jOOQ's <reference id="code-generation" title="code generator"/> becomes more obvious when you perform table aliasing and dereference fields from generated aliased tables. This can best be shown by example:
    -									</p>
    -
    -</html><code-pair><sql><![CDATA[-- Select all books by authors born after 1920,
    --- named "Paulo" from a catalogue:
    -
    -
    -
    -SELECT *
    -  FROM author a
    -  JOIN book b ON a.id = b.author_id
    - WHERE a.year_of_birth > 1920
    -   AND a.first_name = 'Paulo'
    - ORDER BY b.title]]></sql><java><![CDATA[// Declare your aliases before using them in SQL:
    -Author a = AUTHOR.as("a");
    -Book b = BOOK.as("b");
    -
    -// Use aliased tables in your statement
    -create.select()
    -      .from(a)
    -      .join(b).on(a.ID.equal(b.AUTHOR_ID))
    -      .where(a.YEAR_OF_BIRTH.greaterThan(1920)
    -      .and(a.FIRST_NAME.equal("Paulo")))
    -      .orderBy(b.TITLE);]]></java></code-pair><html>
    -								
    -									<p>
    -										As you can see in the above example, calling <code>as()</code> on generated tables returns an object of the same type as the table. This means that the resulting object can be used to dereference fields from the aliased table. This is quite powerful in terms of having your Java compiler check the syntax of your SQL statements. If you remove a column from a table, dereferencing that column from that table alias will cause compilation errors.
    -									</p>
    -									
    -									<h3>Dereferencing columns from other table expressions</h3>
    -									<p>
    -										Only few table expressions provide the SQL syntax typesafety as shown above, where generated tables are used. Most tables, however, expose their fields through <code>field()</code> methods:
    -									</p>
    -
    -</html><java><![CDATA[// "Type-unsafe" aliased table:
    -Table<?> a = AUTHOR.as("a");
    -
    -// Get fields from a:
    -Field<?> id = a.field("ID");
    -Field<?> firstName = a.field("FIRST_NAME");]]></java><html>
    -									
    -									<h3>Derived column lists</h3>
    -									<p>
    -										The SQL standard specifies how a table can be renamed / aliased in one go along with its columns. It references the term "derived column list" for the following syntax (as supported by Postgres, for instance):
    -									</p>
    -									
    -</html><sql><![CDATA[SELECT t.a, t.b
    -FROM (
    -  SELECT 1, 2
    -) t(a, b)]]></sql><html>
    -
    -									<p>
    -										This feature is useful in various use-cases where column names are not known in advance (but the table's degree is!). An example for this are <reference id="array-and-cursor-unnesting" title="unnested tables"/>, or the <reference id="values" title="VALUES() table constructor"/>:
    -									</p>
    -
    -</html><sql><![CDATA[-- Unnested tables
    -SELECT t.a, t.b
    -FROM unnest(my_table_function()) t(a, b)
    -
    --- VALUES() constructor
    -SELECT t.a, t.b
    -FROM VALUES(1, 2),(3, 4) t(a, b)]]></sql><html>
    -
    -									<p>
    -										Only few databases really support such a syntax, but fortunately, jOOQ can simulate it easily using <code>UNION ALL</code> and an empty dummy record specifying the new column names. The two statements are equivalent:
    -									</p>
    -
    -</html><sql><![CDATA[-- Using derived column lists
    -SELECT t.a, t.b
    -FROM (
    -  SELECT 1, 2
    -) t(a, b)
    -
    --- Using UNION ALL and a dummy record
    -SELECT t.a, t.b
    -FROM (
    -  SELECT null a, null b FROM DUAL WHERE 1 = 0
    -  UNION ALL
    -  SELECT 1, 2 FROM DUAL
    -) t]]></sql><html>
    -									<p>
    -										In jOOQ, you would simply specify a varargs list of column aliases as such:
    -									</p>
    -									
    -</html><java><![CDATA[// Unnested tables
    -create.select().from(unnest(myTableFunction()).as("t", "a", "b"));
    -
    -// VALUES() constructor
    -create.select().from(values(
    -  row(1, 2),
    -  row(3, 4)
    -).as("t", "a", "b"));]]></java></content>
    -							</section>
    -
    -							<section id="joined-tables">
    -								<title>Joined tables</title>
    -								<content><html>
    -									<p>
    -										The <reference id="join-clause" title="JOIN operators"/> that can be used in <reference id="select-statement" title="SQL SELECT statements"/> are the most powerful and best supported means of creating new <reference id="table-expressions" title="table expressions"/> in SQL. Informally, the following can be said:
    -									</p>
    -									
    -</html><text>A(colA1, ..., colAn) "join" B(colB1, ..., colBm) "produces" C(colA1, ..., colAn, colB1, ..., colBm)</text><html>
    -
    -									<p>
    -										SQL and relational algebra distinguish between at least the following JOIN types (upper-case: SQL, lower-case: relational algebra):
    -									</p>
    -									<ul>
    -										<li><strong>CROSS JOIN or cartesian product</strong>: The basic JOIN in SQL, producing a relational cross product, combining every record of table A with every record of table B. Note that cartesian products can also be produced by listing comma-separated <reference id="table-expressions" title="table expressions"/> in the <reference id="from-clause" title="FROM clause"/> of a <reference id="select-statement" title="SELECT statement"/></li>
    -										<li><strong>NATURAL JOIN</strong>: The basic JOIN in relational algebra, yet a rarely used JOIN in databases with everyday degree of normalisation. This JOIN type unconditionally equi-joins two tables by all columns with the same name (requiring foreign keys and primary keys to share the same name). Note that the JOIN columns will only figure once in the resulting <reference id="table-expressions" title="table expression"/>.</li>
    -										<li><strong>INNER JOIN or equi-join</strong>: This JOIN operation performs a cartesian product (CROSS JOIN) with a <reference id="conditional-expressions" title="filtering predicate"/> being applied to the resulting <reference id="table-expressions" title="table expression"/>. Most often, a <reference id="comparison-predicate" title="equal comparison predicate"/> comparing foreign keys and primary keys will be applied as a filter, but any other predicate will work, too.</li>
    -										<li><strong>OUTER JOIN</strong>: This JOIN operation performs a cartesian product (CROSS JOIN) with a <reference id="conditional-expressions" title="filtering predicate"/> being applied to the resulting <reference id="table-expressions" title="table expression"/>. Most often, a <reference id="comparison-predicate" title="equal comparison predicate"/> comparing foreign keys and primary keys will be applied as a filter, but any other predicate will work, too. Unlike the INNER JOIN, an OUTER JOIN will add "empty records" to the left (table A) or right (table B) or both tables, in case the conditional expression fails to produce a .</li>										
    -										<li><strong>semi-join</strong>: In SQL, this JOIN operation can only be expressed implicitly using <reference id="in-predicate" title="IN predicates"/> or <reference id="exists-predicate" title="EXISTS predicates"/>. The <reference id="table-expressions" title="table expression"/> resulting from a semi-join will only contain the left-hand side table A</li>										
    -										<li><strong>anti-join</strong>: In SQL, this JOIN operation can only be expressed implicitly using <reference id="in-predicate" title="NOT IN predicates"/> or <reference id="exists-predicate" title="NOT EXISTS predicates"/>. The <reference id="table-expressions" title="table expression"/> resulting from a semi-join will only contain the left-hand side table A</li>
    -										<li><strong>division</strong>: This JOIN operation is hard to express at all, in SQL. See the manual's chapter about <reference id="relational-division" title="relational division"/> for details on how jOOQ simulates this operation.</li>
    -									</ul>									
    -									<p>
    -										jOOQ supports all of these JOIN types (except semi-join and anti-join) directly on any <reference id="table-expressions" title="table expression"/>:
    -									</p>
    -									
    -</html><java><![CDATA[// jOOQ's relational division convenience syntax 
    -DivideByOnStep divideBy(Table<?> table)
    -
    -// Various overloaded INNER JOINs
    -TableOnStep join(TableLike<?>)
    -TableOnStep join(String)
    -TableOnStep join(String, Object...)
    -TableOnStep join(String, QueryPart...)
    -
    -// Various overloaded OUTER JOINs (supporting Oracle's partitioned OUTER JOIN)
    -// Overloading is similar to that of INNER JOIN
    -TablePartitionByStep leftOuterJoin(TableLike<?>)
    -TablePartitionByStep rightOuterJoin(TableLike<?>)
    -
    -// Various overloaded FULL OUTER JOINs
    -TableOnStep fullOuterJoin(TableLike<?>)
    -
    -// Various overloaded CROSS JOINs
    -Table<Record> crossJoin(TableLike<?>)
    -
    -// Various overloaded NATURAL JOINs
    -Table<Record> naturalJoin(TableLike<?>)
    -Table<Record> naturalLeftOuterJoin(TableLike<?>)
    -Table<Record> naturalRightOuterJoin(TableLike<?>)]]></java><html>							
    -
    -									<p>
    -										Note that most of jOOQ's JOIN operations give way to a similar DSL API hierarchy as previously seen in the manual's section about the <reference id="join-clause" title="JOIN clause"/>
    -									</p>		
    -								</html></content>
    -							</section>
    -
    -							<section id="values">
    -								<title>The VALUES() table constructor</title>
    -								<content><html>
    -									<p>
    -										Some databases allow for expressing in-memory temporary tables using a <code>VALUES()</code> constructor. This constructor usually works the same way as the <code>VALUES()</code> clause known from the <reference id="insert-statement" title="INSERT statement"/> or from the <reference id="merge-statement" title="MERGE statement"/>. With jOOQ, you can also use the <code>VALUES()</code> table constructor, to create tables that can be used in a <reference id="select-statement" title="SELECT statement's"/> <reference id="from-clause" title="FROM clause"/>:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[SELECT a, b
    -FROM VALUES(1, 'a'), 
    -           (2, 'b') t(a, b)]]></sql><java><![CDATA[create.select()
    -      .from(values(row(1, "a"),
    -                   row(2, "b")).as("t", "a", "b"));]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										Note, that it is usually quite useful to provide column aliases ("derived column lists") along with the table alias for the <code>VALUES()</code> constructor.
    -									</p>
    -									
    -									<p>
    -										The above statement is simulated by jOOQ for those databases that do not support the <code>VALUES()</code> constructor, natively (actual simulations may vary):
    -									</p>
    -									
    -</html><sql><![CDATA[-- If derived column expressions are supported:
    -SELECT a, b
    -FROM (
    -  SELECT 1, 'a' FROM DUAL UNION ALL
    -  SELECT 2, 'b' FROM DUAL
    -) t(a, b)
    -
    --- If derived column expressions are not supported:
    -SELECT a, b
    -FROM (
    -
    -  -- An empty dummy record is added to provide column names for the simulated derived column expression
    -  SELECT NULL a, NULL b FROM DUAL WHERE 1 = 0 UNION ALL
    -  
    -  -- Then, the actual VALUES() constructor is simulated
    -  SELECT 1,      'a'    FROM DUAL             UNION ALL
    -  SELECT 2,      'b'    FROM DUAL
    -) t
    -]]></sql></content>
    -							</section>
    -
    -							<section id="nested-selects">
    -								<title>Nested SELECTs</title>
    -								<content><html>
    -									<p>
    -										A <reference id="select-statement" title="SELECT statement"/> can appear almost anywhere a <reference id="table-expressions" title="table expression"/> can. Such a "nested SELECT" is often called a "derived table". Apart from many convenience methods accepting <reference class="org.jooq.Select"/> objects directly, a SELECT statement can always be transformed into a <reference class="org.jooq.Table"/> object using the asTable() method.
    -									</p>
    -									
    -									<h3>Example: Scalar subquery</h3>
    -									
    -</html><code-pair>
    -<sql>SELECT *
    -  FROM BOOK
    - WHERE BOOK.AUTHOR_ID = (
    - 		SELECT ID
    -          FROM AUTHOR
    -         WHERE LAST_NAME = 'Orwell')</sql><java>create.select()
    -      .from(BOOK)
    -      .where(BOOK.AUTHOR_ID.equal(create
    -             .select(AUTHOR.ID)
    -             .from(AUTHOR)
    -             .where(AUTHOR.LAST_NAME.equal("Orwell"))));</java>
    -</code-pair><html>
    -
    -									<h3>Example: Derived table</h3>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT nested.* FROM (
    -      SELECT AUTHOR_ID, count(*) books
    -        FROM BOOK
    -    GROUP BY AUTHOR_ID
    -) nested
    -ORDER BY nested.books DESC
    -
    -
    -
    -]]></sql><java><![CDATA[Table<Record> nested =
    -    create.select(BOOK.AUTHOR_ID, count().as("books"))
    -          .from(BOOK)
    -          .groupBy(BOOK.AUTHOR_ID).asTable("nested");
    -
    -create.select(nested.getFields())
    -      .from(nested)
    -      .orderBy(nested.getField("books"));]]></java>
    -</code-pair><html>
    -
    -									<h3>Example: Correlated subquery</h3>
    -</html><code-pair>
    -<sql><![CDATA[  SELECT LAST_NAME, (
    -      SELECT COUNT(*)
    -       FROM BOOK
    -      WHERE BOOK.AUTHOR_ID = AUTHOR.ID) books
    -    FROM AUTHOR
    -ORDER BY books DESC
    -
    -
    -
    -]]></sql><java><![CDATA[// The type of books cannot be inferred from the Select<?>
    -Field<Object> books =
    -    create.selectCount()
    -          .from(BOOK)
    -          .where(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -          .asField("books");
    -create.select(AUTHOR.ID, books)
    -      .from(AUTHOR)
    -      .orderBy(books, AUTHOR.ID));]]></java>
    -</code-pair><html>									
    -								</html></content>
    -							</section>
    -
    -							<section id="pivot-tables">
    -								<title>The Oracle 11g PIVOT clause</title>
    -								<content><html>
    -									<p>
    -										If you are closely coupling your application to an Oracle database, you can take advantage of some Oracle-specific features, such as the PIVOT clause, used for statistical analyses. The formal syntax definition is as follows:
    -									</p>
    -									
    -</html><sql>-- SELECT ..
    -     FROM table PIVOT (aggregateFunction [, aggregateFunction] FOR column IN (expression [, expression]))
    ---  WHERE ..</sql><html>
    -		
    -									<p>
    -										The PIVOT clause is available from the <reference class="org.jooq.Table"/> type, as pivoting is done directly on a table. Currently, only Oracle's PIVOT clause is supported. Support for SQL Server's slightly different PIVOT clause will be added later. Also, jOOQ may simulate PIVOT for other dialects in the future.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="relational-division">
    -								<title>jOOQ's relational division syntax</title>
    -								<content><html>
    -									<p>
    -									    There is one operation in relational algebra that is not given a lot of attention, because it is rarely used in real-world applications. It is the relational division, the opposite operation of the cross product (or, relational multiplication). The following is an approximate definition of a relational division:
    -									</p>
    -
    -</html><config>Assume the following cross join / cartesian product
    -C = A × B
    -
    -Then it can be said that
    -A = C ÷ B
    -B = C ÷ A</config><html>
    -
    -									<p>
    -									   With jOOQ, you can simplify using relational divisions by using the following syntax:
    -									</p>
    -
    -</html><java>C.divideBy(B).on(C.ID.equal(B.C_ID)).returning(C.TEXT)</java><html>
    -
    -									<p>
    -										The above roughly translates to
    -									</p>
    -
    -</html><sql>SELECT DISTINCT C.TEXT FROM C "c1"
    -WHERE NOT EXISTS (
    -  SELECT 1 FROM B
    -  WHERE NOT EXISTS (
    -    SELECT 1 FROM C "c2"
    -    WHERE "c2".TEXT = "c1".TEXT
    -    AND "c2".ID = B.C_ID
    -  )
    -)</sql><html>
    -
    -									<p>
    -										Or in plain text: Find those TEXT values in C whose ID's correspond to all ID's in B. Note that from the above SQL statement, it is immediately clear that proper indexing is of the essence. Be sure to have indexes on all columns referenced from the on(...) and returning(...) clauses.
    -									</p>
    -
    -									<p>
    -										For more information about relational division and some nice, real-life examples, see
    -									</p>
    -
    -									<ul>
    -										<li><a href="http://en.wikipedia.org/wiki/Relational_algebra#Division" title="Wikipedia article on relational division">http://en.wikipedia.org/wiki/Relational_algebra#Division</a></li>
    -										<li><a href="http://www.simple-talk.com/sql/t-sql-programming/divided-we-stand-the-sql-of-relational-division/" title="A nice summary of what relational division is and how it is best implemented in SQL">http://www.simple-talk.com/sql/t-sql-programming/divided-we-stand-the-sql-of-relational-division/</a></li>
    -									</ul>
    -								</html></content>
    -
    -							</section>
    -
    -							<section id="array-and-cursor-unnesting">
    -								<title>Array and cursor unnesting</title>
    -								<content><html>
    -									<p>
    -										The SQL standard specifies how SQL databases should implement ARRAY and TABLE types, as well as CURSOR types. Put simply, a CURSOR is a pointer to any materialised <reference id="table-expressions" title="table expression"/>. Depending on the cursor's features, this table expression can be scrolled through in both directions, records can be locked, updated, removed, inserted, etc. Often, CURSOR types contain s, whereas ARRAY and TABLE types contain simple scalar values, although that is not a requirement
    -									</p>
    -									
    -									<p>
    -										ARRAY types in SQL are similar to Java's array types. They contain a "component type" or "element type" and a "dimension". This sort of ARRAY type is implemented in H2, HSQLDB and Postgres and supported by jOOQ as such. Oracle uses strongly-typed arrays, which means that an ARRAY type (VARRAY or TABLE type) has a name and possibly a maximum capacity associated with it.
    -									</p>
    -
    -									<h3>Unnesting array and cursor types</h3>									
    -									<p>
    -										The real power of these types become more obvious when you fetch them from <reference id="stored-procedures" title="stored procedures"/> to unnest them as <reference id="table-expressions" title="table expressions"/> and use them in your <reference id="from-clause" title="FROM clause"/>. An example is given here, where Oracle's DBMS_XPLAN package is used to fetch a cursor containing data about the most recent execution plan:
    -									</p>									
    -
    -</html><code-pair>
    -	<sql><![CDATA[SELECT *
    -FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(null, null, 'ALLSTATS'));]]></sql><java><![CDATA[create.select()
    -      .from(table(DbmsXplan.displayCursor(null, null, "ALLSTATS"));]]></java>
    -</code-pair><html>
    -									<p>
    -										Note, in order to access the DbmsXplan package, you can use the <reference id="code-generation" title="code generator"/> to generate Oracle's SYS schema.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="dual">
    -								<title>The DUAL table</title>
    -								<content><html>
    -									<p>
    -										The SQL standard specifies that the <reference id="from-clause" title="FROM clause"/> is optional in a <reference id="select-statement" title="SELECT statement"/>. However, according to the standard, you may then no longer use some other clauses, such as the <reference id="where-clause" title="WHERE clause"/>. In the real world, there exist three types of databases:
    -									</p>
    -									<ul>
    -										<li>The ones that always require a <code>FROM</code> clause</li>
    -										<li>The ones that never require a <code>FROM</code> clause (and still allow a <code>WHERE</code> clause)</li>
    -										<li>The ones that correctly implement the SQL standard</li>
    -									</ul>
    -									<p>
    -										With jOOQ, you don't have to worry about the above distinction of SQL dialects. jOOQ never requires a <code>FROM</code> clause, but renders the necessary <code>"DUAL"</code> table, if needed. The following program shows how jOOQ renders <code>"DUAL"</code> tables
    -									</p>
    -
    -</html><code-pair>
    -	<sql><![CDATA[SELECT 1
    -SELECT 1 FROM "db_root"
    -SELECT 1 FROM "SYSIBM"."DUAL"
    -SELECT 1 FROM "SYSIBM"."SYSDUMMY1"
    -SELECT 1 FROM "RDB$DATABASE"
    -SELECT 1 FROM dual
    -SELECT 1 FROM "INFORMATION_SCHEMA"."SYSTEM_USERS"
    -SELECT 1 FROM (select 1 as dual) as dual
    -SELECT 1 FROM dual
    -SELECT 1 FROM dual
    -SELECT 1
    -SELECT 1
    -SELECT 1
    -SELECT 1 FROM [SYS].[DUMMY]
    -]]></sql><java><![CDATA[DSL.using(SQLDialect.ASE      ).selectOne().getSQL();
    -DSL.using(SQLDialect.CUBRID   ).selectOne().getSQL();
    -DSL.using(SQLDialect.DB2      ).selectOne().getSQL();
    -DSL.using(SQLDialect.DERBY    ).selectOne().getSQL();
    -DSL.using(SQLDialect.FIREBIRD ).selectOne().getSQL();
    -DSL.using(SQLDialect.H2       ).selectOne().getSQL();
    -DSL.using(SQLDialect.HSQLDB   ).selectOne().getSQL();
    -DSL.using(SQLDialect.INGRES   ).selectOne().getSQL();
    -DSL.using(SQLDialect.MYSQL    ).selectOne().getSQL();
    -DSL.using(SQLDialect.ORACLE   ).selectOne().getSQL();
    -DSL.using(SQLDialect.POSTGRES ).selectOne().getSQL();
    -DSL.using(SQLDialect.SQLITE   ).selectOne().getSQL();
    -DSL.using(SQLDialect.SQLSERVER).selectOne().getSQL();
    -DSL.using(SQLDialect.SYBASE   ).selectOne().getSQL();]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										Note, that some databases (H2, MySQL) can normally do without <code>"DUAL"</code>. However, there exist some corner-cases with complex nested <code>SELECT</code> statements, where this will cause syntax errors (or parser bugs). To stay on the safe side, jOOQ will always render "dual" in those dialects.
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="column-expressions">
    -						<title>Column expressions</title>
    -						<content><html>
    -						    <p>
    -						    	Column expressions can be used in various SQL clauses in order to refer to one or several columns. This chapter explains how to form various types of column expressions with jOOQ. A particular type of column expression is given in the section about <reference id="row-value-expressions" title="tuples or row value expressions"/>, where an expression may have a degree of more than one.
    -						    </p>
    -						
    -						    <h3>Using column expressions in jOOQ</h3>
    -							<p>
    -								jOOQ allows you to freely create arbitrary column expressions using a fluent expression construction API. Many expressions can be formed as functions from <reference id="dsl" title="DSL methods"/>, other expressions can be formed based on a pre-existing column expression. For example:
    -							</p>
    -							
    -</html><java><![CDATA[// A regular table column expression
    -Field<String> field1 = BOOK.TITLE;
    -
    -// A function created from the DSL using "prefix" notation
    -Field<String> field2 = trim(BOOK.TITLE);
    -
    -// The same function created from a pre-existing Field using "postfix" notation
    -Field<String> field3 = BOOK.TITLE.trim();
    -
    -// More complex function with advanced DSL syntax
    -Field<String> field4 = listAgg(BOOK.TITLE)
    -                          .withinGroupOrderBy(BOOK.ID.asc())
    -                          .over().partitionBy(AUTHOR.ID);]]></java><html>
    -
    -							<p>
    -								In general, it is up to you whether you want to use the "prefix" notation or the "postfix" notation to create new column expressions based on existing ones. The "SQL way" would be to use the "prefix notation", with functions created from the <reference id="dsl" title="DSL"/>. The "Java way" or "object-oriented way" would be to use the "postfix" notation with functions created from <reference class="org.jooq.Field"/> objects. Both ways ultimately create the same query part, though.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="table-columns">
    -								<title>Table columns</title>
    -								<content><html>
    -									<p>
    -										Table columns are the most simple implementations of a <reference id="column-expressions" title="column expression"/>. They are mainly produced by jOOQ's <reference id="code-generation" title="code generator"/> and can be dereferenced from the generated tables. This manual is full of examples involving table columns. Another example is given in this query:
    -									</p>
    -
    -</html><code-pair>
    -	<sql><![CDATA[SELECT BOOK.ID, BOOK.TITLE
    -FROM BOOK
    -WHERE BOOK.TITLE LIKE '%SQL%'
    -ORDER BY BOOK.TITLE]]></sql><java><![CDATA[create.select(BOOK.ID, BOOK.TITLE)
    -	  .from(BOOK)
    -	  .where(BOOK.TITLE.like("%SQL%"))
    -	  .orderBy(BOOK.TITLE);]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										Table columns implement a more specific interface called <reference class="org.jooq.TableField"/>, which is parameterised with its associated <code>&lt;R extends Record&gt;</code> record type.
    -									</p>
    -									<p>
    -										See the manual's section about <reference id="codegen-tables" title="generated tables"/> for more information about what is really generated by the <reference id="code-generation" title="code generator"/>
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="aliased-columns">
    -								<title>Aliased columns</title>
    -								<content><html>
    -									<p>
    -										Just like <reference id="aliased-tables" title="tables"/>, columns can be renamed using aliases. Here is an example:
    -									</p>
    -									
    -</html><sql>  SELECT FIRST_NAME || ' ' || LAST_NAME author, COUNT(*) books
    -    FROM AUTHOR
    -    JOIN BOOK ON AUTHOR.ID = AUTHOR_ID
    -GROUP BY FIRST_NAME, LAST_NAME;</sql><html>
    -
    -									<p>
    -										Here is how it's done with jOOQ:
    -									</p>
    -									
    -</html><java>Record record = create.select(
    -         concat(AUTHOR.FIRST_NAME, val(" "), AUTHOR.LAST_NAME).as("author"),
    -         count().as("books"))
    -      .from(AUTHOR)
    -      .join(BOOK).on(AUTHOR.ID.equal(BOOK.AUTHOR_ID))
    -      .groupBy(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME).fetchAny();</java><html>
    -      
    -      								<p>
    -      									When you alias Fields like above, you can access those Fields' values using the alias name:
    -  									</p>
    -  									
    -</html><java>System.out.println("Author : " + record.getValue("author"));
    -System.out.println("Books  : " + record.getValue("books"));</java></content>
    -							</section>
    -
    -							<section id="cast-expressions">
    -								<title>Cast expressions</title>
    -								<content><html>
    -									<p>
    -										jOOQ's source code generator tries to find the most accurate type mapping between your vendor-specific data types and a matching Java type. For instance, most <code>VARCHAR</code>, <code>CHAR</code>, <code>CLOB</code> types will map to String. Most <code>BINARY</code>, <code>BYTEA</code>, <code>BLOB</code> types will map to <code>byte[]</code>. <code>NUMERIC</code> types will default to <reference class="java.math.BigDecimal"/>, but can also be any of <reference class="java.math.BigInteger"/>, <reference class="java.lang.Long"/>, <reference class="java.lang.Integer"/>, <reference class="java.lang.Short"/>, <reference class="java.lang.Byte"/>, <reference class="java.lang.Double"/>, <reference class="java.lang.Float"/>.
    -									</p>
    -									<p>
    -										Sometimes, this automatic mapping might not be what you needed, or jOOQ cannot know the type of a field. In those cases you would write SQL type <code>CAST</code> like this:
    -									</p>
    -									
    -</html><sql>-- Let's say, your Postgres column LAST_NAME was VARCHAR(30)
    --- Then you could do this:
    -SELECT CAST(AUTHOR.LAST_NAME AS TEXT) FROM DUAL</sql><html>
    -
    -									<p>
    -										in jOOQ, you can write something like that:
    -									</p>
    -									
    -</html><java>create.select(TAuthor.LAST_NAME.cast(PostgresDataType.TEXT));</java><html>
    -
    -									<p>
    -										The same thing can be achieved by casting a Field directly to String.class, as <code>TEXT</code> is the default data type in Postgres to map to Java's String
    -									</p>
    -									
    -</html><java>create.select(TAuthor.LAST_NAME.cast(String.class));</java><html>
    -		
    -									<p>
    -										The complete <code>CAST</code> API in <reference class="org.jooq.Field"/> consists of these three methods:
    -									</p>
    -									
    -</html><java><![CDATA[public interface Field<T> {
    -
    -    // Cast this field to the type of another field
    -    <Z> Field<Z> cast(Field<Z> field);
    -    
    -    // Cast this field to a given DataType
    -    <Z> Field<Z> cast(DataType<Z> type);
    -    
    -    // Cast this field to the default DataType for a given Class
    -    <Z> Field<Z> cast(Class<? extends Z> type);
    -}
    -
    -// And additional convenience methods in the DSL:
    -public class DSL {
    -    <T> Field<T> cast(Object object, Field<T> field);
    -    <T> Field<T> cast(Object object, DataType<T> type);
    -    <T> Field<T> cast(Object object, Class<? extends T> type);
    -    <T> Field<T> castNull(Field<T> field);
    -    <T> Field<T> castNull(DataType<T> type);
    -    <T> Field<T> castNull(Class<? extends T> type);
    -}]]></java></content>
    -							</section>
    -
    -                            <section id="datatype-coercions">
    -                                <title>Datatype coercions</title>
    -                                <content><html>
    -                                    <p>
    -                                        A slightly different use case than <reference id="cast-expressions" title="CAST expressions"/> are data type coercions, which are not rendered through to generated SQL. Sometimes, you may want to pretend that a numeric value is really treated as a string value, for instance when binding a numeric <reference id="variable-binding" title="bind value"/>:
    -                                    </p>
    -                                    
    -</html><java><![CDATA[Field<String>  field1 = val(1).coerce(String.class);
    -Field<Integer> field2 = val("1").coerce(Integer.class);]]></java><html>
    -
    -                                    <p>
    -                                        In the above example, <code>field1</code> will be treated by jOOQ as a <code>Field&lt;String></code>, binding the numeric literal <code>1</code> as a <code>VARCHAR</code> value. The same applies to <code>field2</code>, whose string literal <code>"1"</code> will be bound as an <code>INTEGER</code> value.
    -                                    </p>
    -                                    
    -                                    <p>
    -                                        This technique is better than performing unsafe or rawtype casting in Java, if you cannot access the "right" field type from any given expression.
    -                                    </p>
    -                                </html></content>
    -                            </section>
    -
    -							<section id="arithmetic-expressions">
    -								<title>Arithmetic expressions</title>
    -								<content><html>
    -									<h3>Numeric arithmetic expressions</h3>
    -									<p>
    -										Your database can do the math for you. Arithmetic operations are implemented just like <reference id="numeric-functions" title="numeric functions"/>, with similar limitations as far as type restrictions are concerned. You can use any of these operators:
    -									</p>
    -
    -</html><config>  +  -  *  /  %</config><html>
    -
    -									<p>
    -										In order to express a SQL query like this one:
    -									</p>
    -									
    -</html><sql>SELECT ((1 + 2) * (5 - 3) / 2) % 10 FROM DUAL</sql><html>
    -							
    -									<p>
    -										You can write something like this in jOOQ:
    -									</p>
    -									
    -</html><java>create.select(val(1).add(2).mul(val(5).sub(3)).div(2).mod(10);</java><html>
    -
    -									<h3>Datetime arithmetic expressions</h3>
    -									<p>
    -										jOOQ also supports the Oracle-style syntax for adding days to a Field&lt;? extends java.util.Date&gt; 
    -									</p>
    -
    -</html><code-pair>
    -	<sql>SELECT SYSDATE + 3 FROM DUAL;</sql><java>create.select(currentTimestamp().add(3));</java>
    -</code-pair><html>
    -
    -									<p>
    -										For more advanced datetime arithmetic, use the DSL's timestampDiff() and dateDiff() functions, as well as jOOQ's built-in SQL standard <code>INTERVAL</code> data type support:
    -									</p>
    -									<ul>
    -										<li><code>INTERVAL YEAR TO MONTH</code>: <reference class="org.jooq.types.YearToMonth"/></li>
    -										<li><code>INTERVAL DAY TO SECOND</code>: <reference class="org.jooq.types.DayToSecond"/></li>
    -									</ul>
    -								</html></content>
    -							</section>
    -							
    -							<section id="string-concatenation">
    -								<title>String concatenation</title>
    -								<content><html>
    -									<p>
    -										The SQL standard defines the concatenation operator to be an infix operator, similar to the ones we've seen in the chapter about <reference id="arithmetic-expressions" title="arithmetic expressions"/>. This operator looks like this: <code>||</code>. Some other dialects do not support this operator, but expect a <code>concat()</code> function, instead. jOOQ renders the right operator / function, depending on your <reference id="sql-dialects" title="SQL dialect"/>:
    -									</p>
    -									
    -</html><code-pair>
    -<sql>SELECT 'A' || 'B' || 'C' FROM DUAL
    --- Or in MySQL:
    -SELECT concat('A', 'B', 'C') FROM DUAL</sql><java>&#160;
    -// For all RDBMS, including MySQL:
    -create.select(concat("A", "B", "C"));
    -</java>
    -</code-pair><html>								
    -								</html></content>
    -							</section>
    -
    -							<section id="general-functions">
    -								<title>General functions</title>
    -								<content><html>
    -									<p>
    -										There are a variety of general functions supported by jOOQ As discussed in the chapter about <reference id="sql-dialects" title="SQL dialects"/> functions are mostly simulated in your database, in case they are not natively supported.
    -									</p>
    -									<p>
    -										This is a list of general functions supported by jOOQ's <reference id="dsl" title="DSL"/>:
    -									</p>
    -									<ul>
    -										<li><strong><code>COALESCE</code></strong>: Get the first non-null value in a list of arguments.</li>
    -										<li><strong><code>NULLIF</code></strong>: Return <code>NULL</code> if both arguments are equal, or the first argument, otherwise.</li>
    -										<li><strong><code>NVL</code></strong>: Get the first non-null value among two arguments.</li>
    -										<li><strong><code>NVL2</code></strong>: Get the second argument if the first is null, or the third argument, otherwise.</li>
    -									</ul>
    -																
    -									<p>
    -										Please refer to the <reference class="org.jooq.impl.DSL" title="DSL Javadoc"/> for more details.
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -							<section id="numeric-functions">
    -								<title>Numeric functions</title>
    -								<content><html>
    -									<p>
    -										Math can be done efficiently in the database before returning results to your Java application. In addition to the <reference id="arithmetic-expressions" title="arithmetic expressions" /> discussed previously, jOOQ also supports a variety of numeric functions. As discussed in the chapter about <reference id="sql-dialects" title="SQL dialects"/> numeric functions (as any function type) are mostly simulated in your database, in case they are not natively supported.
    -									</p>
    -									<p>
    -										This is a list of numeric functions supported by jOOQ's <reference id="dsl" title="DSL"/>:
    -									</p>
    -									
    -									<ul>
    -										<li><strong><code>ABS</code></strong>: Get the absolute value of a value.</li>
    -										<li><strong><code>ACOS</code></strong>: Get the arc cosine of a value.</li>
    -										<li><strong><code>ASIN</code></strong>: Get the arc sine of a value.</li>
    -										<li><strong><code>ATAN</code></strong>: Get the arc tangent of a value.</li>
    -										<li><strong><code>ATAN2</code></strong>: Get the atan2 function of two values.</li>
    -										<li><strong><code>CEIL</code></strong>: Get the smalles integer value larger than a given numeric value.</li>
    -										<li><strong><code>COS</code></strong>: Get the cosine of a value.</li>
    -										<li><strong><code>COSH</code></strong>: Get the hyperbolic cosine of a value.</li>
    -										<li><strong><code>COT</code></strong>: Get the cotangent of a value.</li>
    -										<li><strong><code>COTH</code></strong>: Get the hyperbolic cotangent of a value.</li>
    -										<li><strong><code>DEG</code></strong>: Transform radians into degrees.</li>
    -										<li><strong><code>EXP</code></strong>: Calculate e^value.</li>
    -										<li><strong><code>FLOOR</code></strong>: Get the largest integer value smaller than a given numeric value.</li>
    -										<li><strong><code>GREATEST</code></strong>: Finds the greatest among all argument values (can also be used with non-numeric values).</li>
    -										<li><strong><code>LEAST</code></strong>: Finds the least among all argument values (can also be used with non-numeric values).</li>
    -										<li><strong><code>LN</code></strong>: Get the natural logarithm of a value.</li>
    -										<li><strong><code>LOG</code></strong>: Get the logarithm of a value given a base.</li>
    -										<li><strong><code>POWER</code></strong>: Calculate value^exponent.</li>
    -										<li><strong><code>RAD</code></strong>: Transform degrees into radians.</li>
    -										<li><strong><code>RAND</code></strong>: Get a random number.</li>
    -										<li><strong><code>ROUND</code></strong>: Rounds a value to the nearest integer.</li>
    -										<li><strong><code>SIGN</code></strong>: Get the sign of a value (-1, 0, 1).</li>
    -										<li><strong><code>SIN</code></strong>: Get the sine of a value.</li>
    -										<li><strong><code>SINH</code></strong>: Get the hyperbolic sine of a value.</li>
    -										<li><strong><code>SQRT</code></strong>: Calculate the square root of a value.</li>
    -										<li><strong><code>TAN</code></strong>: Get the tangent of a value.</li>
    -										<li><strong><code>TANH</code></strong>: Get the hyperbolic tangent of a value.</li>
    -										<li><strong><code>TRUNC</code></strong>: Truncate the decimals off a given value.</li>
    -									</ul>
    -									
    -									<p>
    -										Please refer to the <reference class="org.jooq.impl.DSL" title="DSL Javadoc"/> for more details.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="bitwise-functions">
    -								<title>Bitwise functions</title>
    -								<content><html>
    -									<p>
    -										Interestingly, bitwise functions and bitwise arithmetic is not very popular among SQL databases. Most databases only support a few bitwise operations, while others ship with the full set of operators. jOOQ's API includes most bitwise operations as listed below. In order to avoid ambiguities with <reference id="conditional-expressions" title="conditional operators"/>, all bitwise functions are prefixed with "bit"
    -									</p>
    -									<ul>
    -										<li><strong><code>BIT_COUNT</code></strong>: Count the number of bits set to 1 in a number</li>
    -										<li><strong><code>BIT_AND</code></strong>: Set only those bits that are set in two numbers</li>
    -										<li><strong><code>BIT_OR</code></strong>: Set all bits that are set in at least one number</li>
    -										<li><strong><code>BIT_NAND</code></strong>: Set only those bits that are set in two numbers, and inverse the result</li>
    -										<li><strong><code>BIT_NOR</code></strong>: Set all bits that are set in at least one number, and inverse the result</li>
    -										<li><strong><code>BIT_NOT</code></strong>: Inverse the bits in a number</li>
    -										<li><strong><code>BIT_XOR</code></strong>: Set all bits that are set in at exactly one number</li>
    -										<li><strong><code>BIT_XNOR</code></strong>: Set all bits that are set in at exactly one number, and inverse the result</li>
    -										<li><strong><code>SHL</code></strong>: Shift bits to the left</li>
    -										<li><strong><code>SHR</code></strong>: Shift bits to the right</li>
    -									</ul>
    -									
    -									<h3>Some background about bitwise operation simulation</h3>
    -									<p>
    -										As stated before, not all databases support all of these bitwise operations. jOOQ simulates them wherever this is possible. More details can be seen in this blog post: <br/>
    -										<a href="http://blog.jooq.org/2011/10/30/the-comprehensive-sql-bitwise-operations-compatibility-list/">http://blog.jooq.org/2011/10/30/the-comprehensive-sql-bitwise-operations-compatibility-list/</a>
    -									</p>
    -									
    -								</html></content>
    -							</section>
    -
    -							<section id="string-functions">
    -								<title>String functions</title>
    -								<content><html>
    -									<p>
    -										String formatting can be done efficiently in the database before returning results to your Java application. As discussed in the chapter about <reference id="sql-dialects" title="SQL dialects"/> string functions (as any function type) are mostly simulated in your database, in case they are not natively supported.
    -									</p>
    -									<p>
    -										This is a list of numeric functions supported by jOOQ's <reference id="dsl" title="DSL"/>:
    -									</p>
    -									
    -									<ul>
    -										<li><strong><code>ASCII</code></strong>: Get the <code>ASCII</code> code of a character.</li>
    -										<li><strong><code>BIT_LENGTH</code></strong>: Get the length of a string in bits.</li>
    -										<li><strong><code>CHAR_LENGTH</code></strong>: Get the length of a string in characters.</li>
    -										<li><strong><code>CONCAT</code></strong>: Concatenate several strings.</li>
    -										<li><strong><code>ESCAPE</code></strong>: Escape a string for use with the <reference id="like-predicate" title="LIKE predicate"/>.</li>
    -										<li><strong><code>LENGTH</code></strong>: Get the length of a string.</li>
    -										<li><strong><code>LOWER</code></strong>: Get a string in lower case letters.</li>
    -										<li><strong><code>LPAD</code></strong>: Pad a string on the left side.</li>
    -										<li><strong><code>LTRIM</code></strong>: Trim a string on the left side.</li>
    -										<li><strong><code>OCTET_LENGTH</code></strong>: Get the length of a string in octets.</li>
    -										<li><strong><code>POSITION</code></strong>: Find a string within another string.</li>
    -										<li><strong><code>REPEAT</code></strong>: Repeat a string a given number of times.</li>
    -										<li><strong><code>REPLACE</code></strong>: Replace a string within another string.</li>
    -										<li><strong><code>RPAD</code></strong>: Pad a string on the right side.</li>
    -										<li><strong><code>RTRIM</code></strong>: Trim a string on the right side.</li>
    -										<li><strong><code>SUBSTRING</code></strong>: Get a substring of a string.</li>
    -										<li><strong><code>TRIM</code></strong>: Trim a string on both sides.</li>
    -										<li><strong><code>UPPER</code></strong>: Get a string in upper case letters.</li>
    -									</ul>
    -									
    -									<p>
    -										Please refer to the <reference class="org.jooq.impl.DSL" title="DSL Javadoc"/> for more details.
    -									</p>
    -									
    -									<h3>Regular expressions, <code>REGEXP</code>, <code>REGEXP_LIKE</code>, etc.</h3>
    -									<p>
    -										Various databases have some means of searching through columns using regular expressions if the <reference id="like-predicate" title="LIKE predicate"/> does not provide sufficient pattern matching power. While there are many different functions and operators in the various databases, jOOQ settled for the SQL:2008 standard <code>REGEX_LIKE</code> operator. Being an operator (and not a function), you should use the corresponding method on <reference class="org.jooq.Field"/>:
    -									</p>
    -									
    -</html><java><![CDATA[create.selectFrom(BOOK).where(TITLE.likeRegex("^.*SQL.*$"));]]></java><html>
    -
    -									<p>
    -										Note that the SQL standard specifies that patterns should follow the XQuery standards. In the real world, the POSIX regular expression standard is the most used one, some use Java regular expressions, and only a few ones use Perl regular expressions. jOOQ does not make any assumptions about regular expression syntax. For cross-database compatibility, please read the relevant database manuals carefully, to learn about the appropriate syntax. Please refer to the <reference class="org.jooq.impl.DSL" title="DSL Javadoc"/> for more details.
    -									</p>
    -								</html></content>
    -								<!-- don't forget regex here! -->
    -							</section>
    -
    -							<section id="date-and-time-functions">
    -								<title>Date and time functions</title>
    -								<content><html>
    -									<p>
    -										This is a list of date and time functions supported by jOOQ's <reference id="dsl" title="DSL"/>:
    -									</p>
    -									
    -									<ul>
    -										<li><strong><code>CURRENT_DATE</code></strong>: Get current date as a <code>DATE</code> object.</li>
    -										<li><strong><code>CURRENT_TIME</code></strong>: Get current time as a <code>TIME</code> object.</li>
    -										<li><strong><code>CURRENT_TIMESTAMP</code></strong>: Get current date as a <code>TIMESTAMP</code> object.</li>
    -										<li><strong><code>DATE_ADD</code></strong>: Add a number of days or an interval to a date.</li>
    -										<li><strong><code>DATE_DIFF</code></strong>: Get the difference in days between two dates.</li>
    -										<li><strong><code>TIMESTAMP_ADD</code></strong>: Add a number of days or an interval to a timestamp.</li>
    -										<li><strong><code>TIMESTAMP_DIFF</code></strong>: Get the difference as an <code>INTERVAL DAY TO SECOND</code> between two dates.</li>
    -									</ul>
    -									
    -									<h3>Intervals in jOOQ</h3>
    -									<p>
    -										jOOQ fills a gap opened by JDBC, which neglects an important SQL data type as defined by the SQL standards: <code>INTERVAL</code> types. See the manual's section about <reference id="data-types-intervals" title="INTERVAL data types"/> for more details.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="system-functions">
    -								<title>System functions</title>
    -								<content><html>
    -									<p>
    -										This is a list of system functions supported by jOOQ's <reference id="dsl" title="DSL"/>:
    -									</p>
    -									<ul>
    -										<li><strong><code>CURRENT_USER</code></strong>: Get current user.</li>
    -									</ul>
    -								</html></content>
    -							</section>
    -
    -							<section id="aggregate-functions">
    -								<title>Aggregate functions</title>
    -								<content><html>
    -									<p>
    -										Aggregate functions work just like functions, even if they have a slightly different semantics. Here are some example aggregate functions from the <reference id="dsl" title="DSL"/>:
    -									</p>
    -
    -</html><java><![CDATA[// Every-day, SQL standard aggregate functions
    -AggregateFunction<Integer>    count();
    -AggregateFunction<Integer>    count(Field<?> field);
    -AggregateFunction<T>          max  (Field<T> field);
    -AggregateFunction<T>          min  (Field<T> field);
    -AggregateFunction<BigDecimal> sum  (Field<? extends Number> field);
    -AggregateFunction<BigDecimal> avg  (Field<? extends Number> field);
    -
    -// DISTINCT keyword in aggregate functions
    -AggregateFunction<Integer>    countDistinct(Field<?> field);
    -AggregateFunction<T>          maxDistinct  (Field<T> field);
    -AggregateFunction<T>          minDistinct  (Field<T> field);
    -AggregateFunction<BigDecimal> sumDistinct  (Field<? extends Number> field);
    -AggregateFunction<BigDecimal> avgDistinct  (Field<? extends Number> field);
    -
    -// String aggregate functions
    -AggregateFunction<String> groupConcat        (Field<?> field);
    -AggregateFunction<String> groupConcatDistinct(Field<?> field);
    -OrderedAggregateFunction<String> listAgg(Field<?> field);
    -OrderedAggregateFunction<String> listAgg(Field<?> field, String separator);
    -
    -// Statistical functions
    -AggregateFunction<BigDecimal> median    (Field<? extends Number> field);
    -AggregateFunction<BigDecimal> stddevPop (Field<? extends Number> field);
    -AggregateFunction<BigDecimal> stddevSamp(Field<? extends Number> field);
    -AggregateFunction<BigDecimal> varPop    (Field<? extends Number> field);
    -AggregateFunction<BigDecimal> varSamp   (Field<? extends Number> field);
    -
    -// Linear regression functions
    -AggregateFunction<BigDecimal> regrAvgX     (Field<? extends Number> y, Field<? extends Number> x);
    -AggregateFunction<BigDecimal> regrAvgY     (Field<? extends Number> y, Field<? extends Number> x);
    -AggregateFunction<BigDecimal> regrCount    (Field<? extends Number> y, Field<? extends Number> x);
    -AggregateFunction<BigDecimal> regrIntercept(Field<? extends Number> y, Field<? extends Number> x);
    -AggregateFunction<BigDecimal> regrR2       (Field<? extends Number> y, Field<? extends Number> x);
    -AggregateFunction<BigDecimal> regrSlope    (Field<? extends Number> y, Field<? extends Number> x);
    -AggregateFunction<BigDecimal> regrSXX      (Field<? extends Number> y, Field<? extends Number> x);
    -AggregateFunction<BigDecimal> regrSXY      (Field<? extends Number> y, Field<? extends Number> x);
    -AggregateFunction<BigDecimal> regrSYY      (Field<? extends Number> y, Field<? extends Number> x);]]></java><html>
    -
    -									<p>
    -										Here's an example, counting the number of books any author has written:
    -									</p>
    -
    -</html><code-pair>
    -<sql>SELECT AUTHOR_ID, COUNT(*)
    -FROM BOOK
    -GROUP BY AUTHOR_ID</sql><java>create.select(BOOK.AUTHOR_ID, count())
    -      .from(BOOK)
    -      .groupBy(BOOK.AUTHOR_ID);</java>
    -</code-pair><html>
    -
    -									<p>
    -										Aggregate functions have strong limitations about when they may be used and when not. For instance, you can use aggregate functions in scalar queries. Typically, this means you only select aggregate functions, no <reference id="table-columns" title="regular columns"/> or other <reference id="column-expressions" title="column expressions"/>. Another use case is to use them along with a <reference id="group-by-clause" title="GROUP BY clause"/> as seen in the previous example. Note, that jOOQ does not check whether your using of aggregate functions is correct according to the SQL standards, or according to your database's behaviour.
    -									</p>
    -
    -		                            <h3>Ordered aggregate functions</h3>
    -		                            <p>
    -		                            	Oracle and some other databases support "ordered aggregate functions". This means you can provide an <code>ORDER BY</code> clause to an aggregate function, which will be taken into consideration when aggregating. The best example for this is Oracle's <code>LISTAGG()</code> (also known as <code>GROUP_CONCAT</code> in other <reference id="sql-dialects" title="SQL dialects"/>). The following query groups by authors and concatenates their books' titles
    -		                           	</p>
    -</html><code-pair>
    -<sql>SELECT   LISTAGG(TITLE, ', ')
    -         WITHIN GROUP (ORDER BY TITLE)
    -FROM     BOOK
    -GROUP BY AUTHOR_ID</sql><java>create.select(listAgg(BOOK.TITLE, ", ")
    -      .withinGroupOrderBy(BOOK.TITLE))
    -      .from(BOOK)
    -      .groupBy(BOOK.AUTHOR_ID)</java>
    -</code-pair><html>
    -
    -									<p>
    -										The above query might yield:
    -									</p>
    -
    -</html><text>+---------------------+
    -| LISTAGG             |
    -+---------------------+
    -| 1984, Animal Farm   |
    -| O Alquimista, Brida |
    -+---------------------+</text><html>
    -
    -									<h3>FIRST and LAST: Oracle's "ranked" aggregate functions</h3>
    -									<p>
    -										Oracle allows for restricting aggregate functions using the <code>KEEP()</code> clause, which is supported by jOOQ. In Oracle, some aggregate functions (<code>MIN</code>, <code>MAX</code>, <code>SUM</code>, <code>AVG</code>, <code>COUNT</code>, <code>VARIANCE</code>, or <code>STDDEV</code>) can be restricted by this clause, hence <reference class="org.jooq.AggregateFunction"/> also allows for specifying it. Here are a couple of examples using this clause:
    -									</p>
    -
    -</html><code-pair>
    -<sql>SUM(BOOK.AMOUNT_SOLD)
    -  KEEP(DENSE_RANK FIRST ORDER BY BOOK.AUTHOR_ID)</sql><java>sum(BOOK.AMOUNT_SOLD)
    -  .keepDenseRankFirstOrderBy(BOOK.AUTHOR_ID)</java>
    -</code-pair><html>
    -
    -									<h3>User-defined aggregate functions</h3>
    -									<p>
    -										jOOQ also supports using your own user-defined aggregate functions. See the manual's section about <reference id="user-defined-aggregate-functions" title="user-defined aggregate functions"/> for more details.
    -									</p>
    -
    -									<h3>Window functions / analytical functions</h3>
    -									<p>
    -										In those databases that support <reference id="window-functions" title="window functions"/>, jOOQ's <reference class="org.jooq.AggregateFunction"/> can be transformed into a window function / analytical function by calling <code>over()</code> on it. See the manual's section about <reference id="window-functions" title="window functions"/> for more details.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="window-functions">
    -								<title>Window functions</title>
    -								<content><html>
    -									<p>
    -										Most major RDBMS support the concept of window functions. jOOQ knows of implementations in DB2, Oracle, Postgres, SQL Server, and Sybase SQL Anywhere, and supports most of their specific syntaxes. Note, that H2 and HSQLDB have implemented <code>ROW_NUMBER()</code> functions, without true windowing support.
    -									</p>
    -									<p>
    -										As previously discussed, any <reference class="org.jooq.AggregateFunction"/> can be transformed into a window function using the <code>over()</code> method. See the chapter about <reference id="aggregate-functions" title="aggregate functions"/> for details. In addition to those, there are also some more window functions supported by jOOQ, as declared in the <reference id="dsl" title="DSL"/>:
    -									</p>
    -
    -</html><java><![CDATA[// Ranking functions
    -    WindowOverStep<Integer>    rowNumber();
    -    WindowOverStep<Integer>    rank();
    -    WindowOverStep<Integer>    denseRank();
    -    WindowOverStep<BigDecimal> percentRank();
    -    
    -// Windowing functions
    -<T> WindowIgnoreNullsStep<T>   firstValue(Field<T> field);
    -<T> WindowIgnoreNullsStep<T>   lastValue(Field<T> field)
    -<T> WindowIgnoreNullsStep<T>   lead(Field<T> field);
    -<T> WindowIgnoreNullsStep<T>   lead(Field<T> field, int offset);
    -<T> WindowIgnoreNullsStep<T>   lead(Field<T> field, int offset, T defaultValue);
    -<T> WindowIgnoreNullsStep<T>   lead(Field<T> field, int offset, Field<T> defaultValue);
    -<T> WindowIgnoreNullsStep<T>   lag(Field<T> field);
    -<T> WindowIgnoreNullsStep<T>   lag(Field<T> field, int offset);
    -<T> WindowIgnoreNullsStep<T>   lag(Field<T> field, int offset, T defaultValue);
    -<T> WindowIgnoreNullsStep<T>   lag(Field<T> field, int offset, Field<T> defaultValue);
    -
    -// Statistical functions
    -    WindowOverStep<BigDecimal> cumeDist();
    -    WindowOverStep<Integer>    ntile(int number);]]></java><html>	
    -    								
    -    								<p>
    -    									SQL distinguishes between various window function types (e.g. "ranking functions"). Depending on the function, SQL expects mandatory <code>PARTITION BY</code> or <code>ORDER BY</code> clauses within the <code>OVER()</code> clause. jOOQ does not enforce those rules for two reasons:
    -    								</p>
    -    								<ul>
    -    									<li>Your JDBC driver or database already checks SQL syntax semantics</li>
    -    									<li>Not all databases behave correctly according to the SQL standard</li>
    -    								</ul>
    -    								<p>
    -    									If possible, however, jOOQ tries to render missing clauses for you, if a given <reference id="sql-dialects" title="SQL dialect"/> is more restrictive.
    -    								</p>
    -    								<h3>Some examples</h3>
    -									<p>
    -										 Here are some simple examples of window functions with jOOQ:
    -									</p>
    -									
    -</html><code-pair>
    -<sql>-- Sample uses of ROW_NUMBER()
    -ROW_NUMBER() OVER()
    -ROW_NUMBER() OVER(PARTITION BY 1)
    -ROW_NUMBER() OVER(ORDER BY BOOK.ID)
    -ROW_NUMBER() OVER(PARTITION BY BOOK.AUTHOR_ID ORDER BY BOOK.ID)
    -                  
    --- Sample uses of FIRST_VALUE
    -FIRST_VALUE(BOOK.ID) OVER()
    -FIRST_VALUE(BOOK.ID IGNORE NULLS) OVER()
    -FIRST_VALUE(BOOK.ID RESPECT NULLS) OVER()
    -</sql><java>// Sample uses of rowNumber()
    -rowNumber().over()
    -rowNumber().over().partitionByOne()
    -rowNumber().over().partitionBy(BOOK.AUTHOR_ID)
    -rowNumber().over().partitionBy(BOOK.AUTHOR_ID).orderBy(BOOK.ID)
    -                  
    -// Sample uses of firstValue()
    -firstValue(BOOK.ID).over()
    -firstValue(BOOK.ID).ignoreNulls().over()
    -firstValue(BOOK.ID).respectNulls().over()
    -</java>
    -</code-pair><html>
    -    								
    -									<h3>An advanced window function example</h3>
    -									<p>
    -										Window functions can be used for things like calculating a "running total". The following example fetches transactions and the running total for every transaction going back to the beginning of the transaction table (ordered by booked_at). Window functions are accessible from the previously seen <reference class="org.jooq.AggregateFunction"/> type using the <code>over()</code> method:
    -									</p>
    -
    -</html><code-pair>
    -<sql>SELECT booked_at, amount,
    -   SUM(amount) OVER (PARTITION BY 1
    -                     ORDER BY booked_at
    -                     ROWS BETWEEN UNBOUNDED PRECEDING
    -                     AND CURRENT ROW) AS total
    -  FROM transactions</sql><java>create.select(t.BOOKED_AT, t.AMOUNT,
    -         sum(t.AMOUNT).over().partitionByOne()
    -                      .orderBy(t.BOOKED_AT)
    -                      .rowsBetweenUnboundedPreceding()
    -                      .andCurrentRow().as("total")
    -      .from(TRANSACTIONS.as("t"));</java>
    -</code-pair><html>
    -
    -
    -									<h3>Window functions created from ordered aggregate functions</h3>
    -									<p>
    -										In the previous chapter about <reference id="aggregate-functions" title="aggregate functions"/>, we have seen the concept of "ordered aggregate functions", such as Oracle's <code>LISTAGG()</code>. These functions have a window function / analytical function variant, as well. For example:
    -									</p>
    -									
    -</html><code-pair>
    -<sql>SELECT   LISTAGG(TITLE, ', ')
    -         WITHIN GROUP (ORDER BY TITLE)
    -         OVER (PARTITION BY BOOK.AUTHOR_ID)
    -FROM     BOOK</sql><java>create.select(listAgg(BOOK.TITLE, ", ")
    -      .withinGroupOrderBy(BOOK.TITLE)
    -      .over().partitionBy(BOOK.AUTHOR_ID))
    -      .from(BOOK)</java>
    -</code-pair><html>
    -
    -									<h3>Window functions created from Oracle's <code>FIRST</code> and <code>LAST</code> aggregate functions</h3>
    -									<p>
    -										In the previous chapter about <reference id="aggregate-functions" title="aggregate functions"/>, we have seen the concept of "<code>FIRST</code> and <code>LAST</code> aggregate functions". These functions have a window function / analytical function variant, as well. For example:
    -									</p>
    -
    -</html><code-pair>
    -<sql>SUM(BOOK.AMOUNT_SOLD)
    -  KEEP(DENSE_RANK FIRST ORDER BY BOOK.AUTHOR_ID)
    -  OVER(PARTITION BY 1)</sql><java>sum(BOOK.AMOUNT_SOLD)
    -  .keepDenseRankFirstOrderBy(BOOK.AUTHOR_ID)
    -  .over().partitionByOne()</java>
    -</code-pair><html>
    -
    -
    -									<h3>Window functions created from user-defined aggregate functions</h3>
    -									<p>
    -										User-defined aggregate functions also implement <reference class="org.jooq.AggregateFunction"/>, hence they can also be transformed into window functions using <code>over()</code>. This is supported by Oracle in particular. See the manual's section about <reference id="user-defined-aggregate-functions" title="user-defined aggregate functions"/> for more details.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="grouping-functions">
    -								<title>Grouping functions</title>
    -								<content><html>
    -									<h3>ROLLUP() explained in SQL</h3>
    -									<p>
    -										The SQL standard defines special functions that can be used in the <reference id="group-by-clause" title="GROUP BY clause"/>: the grouping functions. These functions can be used to generate several groupings in a single clause. This can best be explained in SQL. Let's take <code>ROLLUP()</code> for instance:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- ROLLUP() with one argument 
    -SELECT AUTHOR_ID, COUNT(*)
    -FROM BOOK
    -GROUP BY ROLLUP(AUTHOR_ID)
    -
    -
    --- ROLLUP() with two arguments
    -SELECT AUTHOR_ID, PUBLISHED_IN, COUNT(*)
    -FROM BOOK
    -GROUP BY ROLLUP(AUTHOR_ID, PUBLISHED_IN)
    -
    -
    -
    -
    -
    -
    -
    -]]></sql><sql><![CDATA[-- The same query using UNION ALL:
    -  SELECT AUTHOR_ID, COUNT(*) FROM BOOK GROUP BY (AUTHOR_ID)
    -UNION ALL
    -  SELECT NULL, COUNT(*) FROM BOOK GROUP BY ()
    -ORDER BY 1 NULLS LAST
    -
    --- The same query using UNION ALL:
    -  SELECT AUTHOR_ID, PUBLISHED_IN, COUNT(*) 
    -  FROM BOOK GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -UNION ALL
    -  SELECT AUTHOR_ID, NULL, COUNT(*) 
    -  FROM BOOK GROUP BY (AUTHOR_ID)
    -UNION ALL
    -  SELECT NULL, NULL, COUNT(*) 
    -  FROM BOOK GROUP BY ()
    -ORDER BY 1 NULLS LAST, 2 NULLS LAST
    -]]></sql>
    -</code-pair><html>
    -
    -									<p>
    -										In English, the <code>ROLLUP()</code> grouping function provides <code>N+1</code> groupings, when <code>N</code> is the number of arguments to the <code>ROLLUP()</code> function. Each grouping has an additional group field from the <code>ROLLUP()</code> argument field list. The results of the second query might look something like this:
    -									</p>
    -									
    -</html><text><![CDATA[+-----------+--------------+----------+
    -| AUTHOR_ID | PUBLISHED_IN | COUNT(*) |
    -+-----------+--------------+----------+
    -|         1 |         1945 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -|         1 |         1948 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -|         1 |         NULL |        2 | <- GROUP BY (AUTHOR_ID)
    -|         2 |         1988 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -|         2 |         1990 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -|         2 |         NULL |        2 | <- GROUP BY (AUTHOR_ID)
    -|      NULL |         NULL |        4 | <- GROUP BY ()
    -+-----------+--------------+----------+]]></text><html>
    -
    -									<h3>CUBE() explained in SQL</h3>
    -									<p>
    -										<code>CUBE()</code> is different from <code>ROLLUP()</code> in the way that it doesn't just create <code>N+1</code> groupings, it creates all <code>2^N</code> possible combinations between all group fields in the <code>CUBE()</code> function argument list. Let's re-consider our second query from before:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- CUBE() with two arguments
    -SELECT AUTHOR_ID, PUBLISHED_IN, COUNT(*)
    -FROM BOOK
    -GROUP BY CUBE(AUTHOR_ID, PUBLISHED_IN)
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -]]></sql><sql><![CDATA[-- The same query using UNION ALL:
    -  SELECT AUTHOR_ID, PUBLISHED_IN, COUNT(*) 
    -  FROM BOOK GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -UNION ALL
    -  SELECT AUTHOR_ID, NULL, COUNT(*) 
    -  FROM BOOK GROUP BY (AUTHOR_ID)
    -UNION ALL
    -  SELECT NULL, PUBLISHED_IN, COUNT(*) 
    -  FROM BOOK GROUP BY (PUBLISHED_IN)
    -UNION ALL
    -  SELECT NULL, NULL, COUNT(*) 
    -  FROM BOOK GROUP BY ()
    -ORDER BY 1 NULLS FIRST, 2 NULLS FIRST
    -]]></sql>
    -</code-pair><html>
    -
    -									<p>
    -										The results would then hold:
    -									</p>
    -
    -</html><text><![CDATA[+-----------+--------------+----------+
    -| AUTHOR_ID | PUBLISHED_IN | COUNT(*) |
    -+-----------+--------------+----------+
    -|      NULL |         NULL |        2 | <- GROUP BY ()
    -|      NULL |         1945 |        1 | <- GROUP BY (PUBLISHED_IN)
    -|      NULL |         1948 |        1 | <- GROUP BY (PUBLISHED_IN)
    -|      NULL |         1988 |        1 | <- GROUP BY (PUBLISHED_IN)
    -|      NULL |         1990 |        1 | <- GROUP BY (PUBLISHED_IN)
    -|         1 |         NULL |        2 | <- GROUP BY (AUTHOR_ID)
    -|         1 |         1945 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -|         1 |         1948 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -|         2 |         NULL |        2 | <- GROUP BY (AUTHOR_ID)
    -|         2 |         1988 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -|         2 |         1990 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -+-----------+--------------+----------+]]></text><html>
    -
    -									<h3>GROUPING SETS()</h3>
    -									<p>
    -										<code>GROUPING SETS()</code> are the generalised way to create multiple groupings. From our previous examples 
    -									</p>
    -									<ul>
    -										<li><code>ROLLUP(AUTHOR_ID, PUBLISHED_IN)</code> corresponds to <code>GROUPING SETS((AUTHOR_ID, PUBLISHED_IN), (AUTHOR_ID), ())</code></li>
    -										<li><code>CUBE(AUTHOR_ID, PUBLISHED_IN)</code> corresponds to <code>GROUPING SETS((AUTHOR_ID, PUBLISHED_IN), (AUTHOR_ID), (PUBLISHED_IN), ())</code></li>
    -									</ul>
    -									<p>
    -										This is nicely explained in the SQL Server manual pages about <code>GROUPING SETS()</code> and other grouping functions:<br/>
    -										<a href="http://msdn.microsoft.com/en-us/library/bb510427(v=sql.105)">http://msdn.microsoft.com/en-us/library/bb510427(v=sql.105)</a>
    -									</p>
    -									
    -									<h3>jOOQ's support for ROLLUP(), CUBE(), GROUPING SETS()</h3>
    -									<p>
    -										jOOQ fully supports all of these functions, as well as the utility functions <code>GROUPING()</code> and <code>GROUPING_ID()</code>, used for identifying the grouping set ID of a record. The <reference id="dsl" title="DSL API"/> thus includes:
    -									</p>
    -									
    -</html><java><![CDATA[// The various grouping function constructors
    -GroupField rollup(Field<?>... fields);
    -GroupField cube(Field<?>... fields);
    -GroupField groupingSets(Field<?>... fields);
    -GroupField groupingSets(Field<?>[]... fields);
    -GroupField groupingSets(Collection<? extends Field<?>>... fields);
    -
    -// The utility functions generating IDs per GROUPING SET
    -Field<Integer> grouping(Field<?>);
    -Field<Integer> groupingId(Field<?>...);]]></java><html>
    -
    -									<h3>MySQL's and CUBRID's WITH ROLLUP syntax</h3>
    -									<p>
    -										MySQL and CUBRID don't know any grouping functions, but they support a <code>WITH ROLLUP</code> clause, that is equivalent to simple <code>ROLLUP()</code> grouping functions. jOOQ simulates <code>ROLLUP()</code> in MySQL and CUBRID, by rendering this <code>WITH ROLLUP</code> clause. The following two statements mean the same:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[-- Statement 1: SQL standard
    -GROUP BY ROLLUP(A, B, C)
    -
    --- Statement 2: SQL standard
    -GROUP BY A, ROLLUP(B, C)]]></sql><sql><![CDATA[-- Statement 1: MySQL
    -GROUP BY A, B, C WITH ROLLUP
    -
    --- Statement 2: MySQL
    --- This is not supported in MySQL]]></sql>
    -</code-pair><html>
    -								</html></content>
    -							</section>
    -
    -							<section id="user-defined-functions">
    -								<title>User-defined functions</title>
    -								<content><html>
    -									<p>
    -										Some databases support user-defined functions, which can be embedded in any SQL statement, if you're using jOOQ's <reference id="code-generation" title="code generator"/>. Let's say you have the following simple function in Oracle SQL:
    -									</p>
    -									
    -</html><sql><![CDATA[CREATE OR REPLACE FUNCTION echo (INPUT NUMBER)
    -RETURN NUMBER
    -IS
    -BEGIN
    -    RETURN INPUT;
    -END echo;
    -]]></sql><html>
    -
    -                                    <p>
    -                                    	The above function will be made available from a generated <reference id="codegen-procedures" title="Routines"/> class. You can use it like any other <reference id="column-expressions" title="column expression"/>:
    -                                    </p>
    -                                    
    -</html><code-pair>
    -<sql><![CDATA[SELECT echo(1) FROM DUAL WHERE echo(2) = 2]]></sql><java><![CDATA[create.select(echo(1)).where(echo(2).equal(2));]]></java>
    -</code-pair><html>
    -                                
    -                                	<p>
    -                                		Note that user-defined functions returning <reference id="data-types-cursors" title="CURSOR"/> or <reference id="data-types-arrays" title="ARRAY"/> data types can also be used wherever <reference id="table-expressions" title="table expressions"/> can be used, if they are <reference id="array-and-cursor-unnesting" title="unnested"/>
    -                                	</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="user-defined-aggregate-functions">
    -								<title>User-defined aggregate functions</title>
    -								<content><html>
    -									<p>
    -										Some databases support user-defined aggregate functions, which can then be used along with <reference id="group-by-clause" title="GROUP BY clauses"/> or as <reference id="window-functions" title="window functions"/>. An example for such a database is Oracle. With Oracle, you can define the following <code>OBJECT</code> type (the example was taken from the <a href="http://docs.oracle.com/cd/B28359_01/appdev.111/b28425/ext_agg_ref.htm">Oracle 11g documentation</a>): 
    -									</p>
    -									
    -</html><sql><![CDATA[CREATE TYPE U_SECOND_MAX AS OBJECT
    -(
    -  MAX NUMBER, -- highest value seen so far
    -  SECMAX NUMBER, -- second highest value seen so far
    -  STATIC FUNCTION ODCIAggregateInitialize(sctx IN OUT U_SECOND_MAX) RETURN NUMBER,
    -  MEMBER FUNCTION ODCIAggregateIterate(self IN OUT U_SECOND_MAX, value IN NUMBER) RETURN NUMBER,
    -  MEMBER FUNCTION ODCIAggregateTerminate(self IN U_SECOND_MAX, returnValue OUT NUMBER, flags IN NUMBER) RETURN NUMBER,
    -  MEMBER FUNCTION ODCIAggregateMerge(self IN OUT U_SECOND_MAX, ctx2 IN U_SECOND_MAX) RETURN NUMBER
    -);
    -
    -CREATE OR REPLACE TYPE BODY U_SECOND_MAX IS
    -STATIC FUNCTION ODCIAggregateInitialize(sctx IN OUT U_SECOND_MAX)
    -RETURN NUMBER IS
    -BEGIN
    -  SCTX := U_SECOND_MAX(0, 0);
    -  RETURN ODCIConst.Success;
    -END;
    -
    -MEMBER FUNCTION ODCIAggregateIterate(self IN OUT U_SECOND_MAX, value IN NUMBER) RETURN NUMBER IS
    -BEGIN
    -  IF VALUE > SELF.MAX THEN
    -    SELF.SECMAX := SELF.MAX;
    -    SELF.MAX := VALUE;
    -  ELSIF VALUE > SELF.SECMAX THEN
    -    SELF.SECMAX := VALUE;
    -  END IF;
    -  RETURN ODCIConst.Success;
    -END;
    -
    -MEMBER FUNCTION ODCIAggregateTerminate(self IN U_SECOND_MAX, returnValue OUT NUMBER, flags IN NUMBER) RETURN NUMBER IS
    -BEGIN
    -  RETURNVALUE := SELF.SECMAX;
    -  RETURN ODCIConst.Success;
    -END;
    -
    -MEMBER FUNCTION ODCIAggregateMerge(self IN OUT U_SECOND_MAX, ctx2 IN U_SECOND_MAX) RETURN NUMBER IS
    -BEGIN
    -  IF CTX2.MAX > SELF.MAX THEN
    -    IF CTX2.SECMAX > SELF.SECMAX THEN
    -      SELF.SECMAX := CTX2.SECMAX;
    -    ELSE
    -      SELF.SECMAX := SELF.MAX;
    -    END IF;
    -    SELF.MAX := CTX2.MAX;
    -  ELSIF CTX2.MAX > SELF.SECMAX THEN
    -    SELF.SECMAX := CTX2.MAX;
    -  END IF;
    -  RETURN ODCIConst.Success;
    -END;
    -END;]]></sql><html>
    -
    -									<p>
    -										The above <code>OBJECT</code> type is then available to function declarations as such:
    -									</p>
    -
    -</html><sql><![CDATA[
    -CREATE FUNCTION SECOND_MAX (input NUMBER) RETURN NUMBER
    -PARALLEL_ENABLE AGGREGATE USING U_SECOND_MAX;]]></sql><html>
    -
    -									<h3>Using the generated aggregate function</h3>
    -									<p>
    -										jOOQ's <reference id="code-generation" title="code generator"/> will detect such aggregate functions and generate them differently from regular <reference id="user-defined-functions" title="user-defined functions"/>. They implement the <reference class="org.jooq.AggregateFunction"/> type, as mentioned in the manual's section about <reference id="aggregate-functions" title="aggregate functions"/>. Here's how you can use the <code>SECOND_MAX()</code> aggregate function with jOOQ:
    -									</p>
    -				
    -</html><code-pair>					
    -<sql><![CDATA[-- Get the second-latest publishing date by author
    -SELECT SECOND_MAX(PUBLISHED_IN) 
    -FROM BOOK
    -GROUP BY AUTHOR_ID]]></sql><java><![CDATA[// Routines.secondMax() can be static-imported
    -create.select(secondMax(BOOK.PUBLISHED_IN))
    -      .from(BOOK)
    -      .groupBy(BOOK.AUTHOR_ID)]]></java>
    -</code-pair><html>
    -								</html></content>
    -							</section>
    -
    -							<section id="case-expressions">
    -								<title>The CASE expression</title>
    -								<content><html>
    -									<p>
    -										The <code>CASE</code> expression is part of the standard SQL syntax. While some RDBMS also offer an <code>IF</code> expression, or a <code>DECODE</code> function, you can always rely on the two types of <code>CASE</code> syntax:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[CASE WHEN AUTHOR.FIRST_NAME = 'Paulo'  THEN 'brazilian'
    -     WHEN AUTHOR.FIRST_NAME = 'George' THEN 'english'
    -                                       ELSE 'unknown'
    -END
    -
    --- OR:
    -
    -CASE AUTHOR.FIRST_NAME WHEN 'Paulo'  THEN 'brazilian'
    -                       WHEN 'George' THEN 'english'
    -                                     ELSE 'unknown'
    -END]]></sql><java><![CDATA[create.decode()
    -      .when(AUTHOR.FIRST_NAME.equal("Paulo"), "brazilian")
    -      .when(AUTHOR.FIRST_NAME.equal("George"), "english")
    -      .otherwise("unknown");
    -
    -// OR:
    -
    -create.decode().value(AUTHOR.FIRST_NAME)
    -               .when("Paulo", "brazilian")
    -               .when("George", "english")
    -               .otherwise("unknown");]]></java>
    -</code-pair><html>
    -
    -								<p>
    -									In jOOQ, both syntaxes are supported (The second one is simulated in Derby, which only knows the first one). Unfortunately, both case and else are reserved words in Java. jOOQ chose to use decode() from the Oracle <code>DECODE</code> function, and otherwise(), which means the same as else.
    -								</p>
    -
    -								<p>
    -									A <code>CASE</code> expression can be used anywhere where you can place a <reference id="column-expressions" title="column expression (or Field)"/>. For instance, you can <code>SELECT</code> the above expression, if you're selecting from <code>AUTHOR</code>:
    -							 	</p>
    -
    -</html><sql>SELECT AUTHOR.FIRST_NAME, [... CASE EXPR ...] AS nationality
    -  FROM AUTHOR</sql><html>
    -
    -								<h3>The Oracle DECODE() function</h3>
    -								<p>
    -									Oracle knows a more succinct, but maybe less readable <code>DECODE()</code> function with a variable number of arguments. This function roughly does the same as the second case expression syntax. jOOQ supports the <code>DECODE()</code> function and simulates it using <code>CASE</code> expressions in all dialects other than Oracle:
    -								</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- Oracle:
    -DECODE(FIRST_NAME, 'Paulo', 'brazilian',
    -                   'George', 'english',
    -                   'unknown');
    -
    --- Other SQL dialects
    -CASE AUTHOR.FIRST_NAME WHEN 'Paulo'  THEN 'brazilian'
    -                       WHEN 'George' THEN 'english'
    -                                     ELSE 'unknown'
    -END]]></sql><java><![CDATA[
    -
    -
    -
    -
    -// Use the Oracle-style DECODE() function with jOOQ.
    -// Note, that you will not be able to rely on type-safety
    -create.decode(AUTHOR.FIRST_NAME,
    -    "Paulo", "brazilian",
    -    "George", "english",
    -    "unknown");]]></java>
    -</code-pair><html>
    -
    -		  							<h3>CASE clauses in an ORDER BY clause</h3>
    -									<p>
    -										Sort indirection is often implemented with a <code>CASE</code> clause of a <code>SELECT</code>'s <code>ORDER BY</code> clause. See the manual's section about the <reference id="order-by-clause" title="ORDER BY clause"/> for more details.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="sequences-and-serials">
    -								<title>Sequences and serials</title>
    -								<content><html>
    -									<p>
    -										Sequences implement the <reference class="org.jooq.Sequence"/> interface, providing essentially this functionality:
    -									</p>
    -
    -</html><java><![CDATA[// Get a field for the CURRVAL sequence property
    -Field<T> currval();
    -
    -// Get a field for the NEXTVAL sequence property
    -Field<T> nextval();]]></java><html>
    -
    -									<p>
    -										So if you have a sequence like this in Oracle:
    -									</p>
    -
    -</html><sql>CREATE SEQUENCE s_author_id</sql><html>
    -
    -									<p>
    -										You can then use your <reference id="codegen-sequences" title="generated sequence"/> object directly in a SQL statement as such:
    -									</p>
    -
    -</html><java><![CDATA[// Reference the sequence in a SELECT statement:
    -BigInteger nextID = create.select(s).fetchOne(S_AUTHOR_ID.nextval());
    -
    -// Reference the sequence in an INSERT statement:
    -create.insertInto(AUTHOR, AUTHOR.ID, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .values(S_AUTHOR_ID.nextval(), val("William"), val("Shakespeare"));
    -]]></java><html>
    -
    -									<ul>
    -										<li>For more information about generated sequences, refer to the manual's section about <reference id="codegen-sequences" title="generated sequences"/></li>
    -										<li>For more information about executing standalone calls to sequences, refer to the manual's section about <reference id="sequence-execution" title="sequence execution"/></li>
    -									</ul>
    -								</html></content>
    -							</section>
    -							
    -							<section id="row-value-expressions">
    -								<title>Tuples or row value expressions</title>
    -								<content><html>
    -									<p>
    -										According to the SQL standard, row value expressions can have a degree of more than one. This is commonly used in the <reference id="insert-statement" title="INSERT statement"/>, where the <code>VALUES</code> row value constructor allows for providing a row value expression as a source for <code>INSERT</code> data. Row value expressions can appear in various other places, though. They are supported by jOOQ as records / rows. jOOQ's <reference id="dsl" title="DSL"/> allows for the construction of type-safe records up to the degree of {max-row-degree}. Higher-degree Rows are supported as well, but without any type-safety. Row types are modelled as follows:
    -									</p>
    -									
    -</html><java><![CDATA[// The DSL provides overloaded row value expression constructor methods:
    -public static <T1>             Row1<T1>             row(T1 t1)                      { ... }
    -public static <T1, T2>         Row2<T1, T2>         row(T1 t1, T2 t2)               { ... }
    -public static <T1, T2, T3>     Row3<T1, T2, T3>     row(T1 t1, T2 t2, T3 t3)        { ... }
    -public static <T1, T2, T3, T4> Row4<T1, T2, T3, T4> row(T1 t1, T2 t2, T3 t3, T4 t4) { ... }
    -
    -// [ ... idem for Row5, Row6, Row7, ..., Row{max-row-degree} ]
    -
    -// Degrees of more than {max-row-degree} are supported without type-safety
    -public static RowN row(Object... values) { ... }]]></java><html>
    -
    -									<h3>Using row value expressions in predicates</h3>
    -                                	<p>
    -                                		Row value expressions are incompatible with most other <reference id="queryparts" title="QueryParts"/>, but they can be used as a basis for constructing various <reference id="conditional-expressions" title="conditional expressions"/>, such as:
    -                                	</p>
    -                                	<ul>
    -                                		<li><reference id="comparison-predicate-degree-n" title="comparison predicates"/></li>
    -                                		<li><reference id="null-predicate-degree-n" title="NULL predicates"/></li>
    -                                		<li><reference id="between-predicate-degree-n" title="BETWEEN predicates"/></li>
    -                                		<li><reference id="in-predicate-degree-n" title="IN predicates"/></li>
    -                                		<li><reference id="overlaps-predicate" title="OVERLAPS predicate"/> (for degree 2 row value expressions only)</li>
    -                                	</ul>
    -                                	<p>
    -                                		See the relevant sections for more details about how to use row value expressions in predicates.
    -                                	</p>
    -                                	
    -                                	<h3>Using row value expressions in UPDATE statements</h3>
    -                                	<p>
    -                                		The <reference id="update-statement" title="UPDATE statement"/> also supports a variant where row value expressions are updated, rather than single columns. See the relevant section for more details
    -                                	</p>
    -                                	
    -									<h3>Higher-degree row value expressions</h3>
    -									<p>
    -										jOOQ chose to explicitly support degrees up to {max-row-degree} to match Scala's typesafe tuple, function and product support. Unlike Scala, however, jOOQ also supports higher degrees without the additional typesafety. 
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="conditional-expressions">
    -					    <title>Conditional expressions</title>
    -						<content><html>
    -							<p>
    -								Conditions or conditional expressions are widely used in SQL and in the jOOQ API. They can be used in
    -							</p>
    -							<ul>
    -								<li>The <reference id="case-expressions" title="CASE expression"/></li>
    -								<li>The <reference id="join-clause" title="JOIN clause"/> (or <code>JOIN .. ON</code> clause, to be precise) of a <reference id="select-statement" title="SELECT statement"/>, <reference id="update-statement" title="UPDATE statement"/>, <reference id="delete-statement" title="DELETE statement"/></li>
    -								<li>The <reference id="where-clause" title="WHERE clause"/> of a <reference id="select-statement" title="SELECT statement"/>, <reference id="update-statement" title="UPDATE statement"/>, <reference id="delete-statement" title="DELETE statement"/></li>
    -								<li>The <reference id="connect-by-clause" title="CONNECT BY clause"/> of a <reference id="select-statement" title="SELECT statement"/></li>
    -								<li>The <reference id="having-clause" title="HAVING clause"/> of a <reference id="select-statement" title="SELECT statement"/></li>
    -								<li>The <reference id="merge-statement" title="MERGE statement"/>'s ON clause</li>
    -							</ul>
    -							
    -							<h3>Boolean types in SQL</h3>
    -							<p>
    -								Before SQL:1999, boolean types did not really exist in SQL. They were modelled by 0 and 1 numeric/char values. With SQL:1999, true booleans were introduced and are now supported by most databases. In short, these are possible boolean values:
    -							</p>
    -							<ul>
    -								<li><code>1</code> or <code>TRUE</code></li>
    -								<li><code>0</code> or <code>FALSE</code></li>
    -								<li><code>NULL</code> or <code>UNKNOWN</code></li>
    -							</ul>
    -							<p>
    -								It is important to know that SQL differs from many other languages in the way it interprets the <code>NULL</code> boolean value. Most importantly, the following facts are to be remembered:
    -							</p>
    -							<ul>
    -								<li><code>[ANY] = NULL</code> yields <code>NULL</code> (not <code>FALSE</code>)</li>
    -								<li><code>[ANY] != NULL</code> yields <code>NULL</code> (not <code>TRUE</code>)</li>
    -								<li><code>NULL = NULL</code> yields <code>NULL</code> (not <code>TRUE</code>)</li>
    -								<li><code>NULL != NULL</code> yields <code>NULL</code> (not <code>FALSE</code>)</li>
    -							</ul>
    -							<p>
    -								For simplified <code>NULL</code> handling, please refer to the section about the <reference id="distinct-predicate" title="DISTINCT predicate"/>.
    -							</p>
    -							<p>
    -								Note that jOOQ does not model these values as actual <reference id="column-expressions" title="column expression"/> compatible.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -						    <section id="condition-building">
    -							    <title>Condition building</title>
    -								<content><html>
    -									<p>
    -										With jOOQ, most <reference id="conditional-expressions" title="conditional expressions"/> are built from <reference id="column-expressions" title="column expressions"/>, calling various methods on them. For instance, to build a <reference id="comparison-predicate" title="comparison predicate"/>, you can write the following expression:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[TITLE  = 'Animal Farm'
    -TITLE != 'Animal Farm']]></sql><java><![CDATA[BOOK.TITLE.equal("Animal Farm")
    -BOOK.TITLE.notEqual("Animal Farm")]]></java>
    -</code-pair><html>
    -
    -									<h3>Create conditions from the DSL</h3>
    -									<p>
    -										There are a few types of conditions, that can be created statically from the <reference id="dsl" title="DSL"/>. These are:
    -									</p>
    -									<ul>
    -										<li><reference id="plain-sql" title="plain SQL conditions"/>, that allow you to phrase your own SQL string <reference id="conditional-expressions" title="conditional expression"/></li>
    -										<li>The <reference id="exists-predicate" title="EXISTS predicate"/>, a standalone predicate that creates a conditional expression</li>
    -										<li>Constant <code>TRUE</code> and <code>FALSE</code> conditional expressions</li>
    -									</ul>
    -
    -									<h3>Connect conditions using boolean operators</h3>
    -									<p>
    -										Conditions can also be connected using <reference id="boolean-operators" title="boolean operators"/> as will be discussed in a subsequent chapter.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -						    <section id="boolean-operators">
    -							    <title>AND, OR, NOT boolean operators</title>
    -								<content><html>
    -									<p>
    -										In SQL, as in most other languages, <reference id="conditional-expressions" title="conditional expressions"/> can be connected using the <code>AND</code> and <code>OR</code> binary operators, as well as the <code>NOT</code> unary operator, to form new conditional expressions. In jOOQ, this is modelled as such: 
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- A simple conditional expression
    -TITLE = 'Animal Farm' OR TITLE = '1984'
    -
    --- A more complex conditional expression
    -        (TITLE = 'Animal Farm' OR TITLE = '1984') 
    -AND NOT (AUTHOR.LAST_NAME = 'Orwell')]]></sql><java><![CDATA[// A simple boolean connection
    -BOOK.TITLE.equal("Animal Farm").or(BOOK.TITLE.equal("1984"))
    -
    -// A more complex conditional expression
    -BOOK.TITLE.equal("Animal Farm").or(BOOK.TITLE.equal("1984"))
    -    .andNot(AUTHOR.LAST_NAME.equal("Orwell"))]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										The above example shows that the number of parentheses in Java can quickly explode. Proper indentation may become crucial in making such code readable. In order to understand how jOOQ composes combined conditional expressions, let's assign component expressions first:
    -									</p>
    -
    -</html><java><![CDATA[Condition a = BOOK.TITLE.equal("Animal Farm");
    -Condition b = BOOK.TITLE.equal("1984");
    -Condition c = AUTHOR.LAST_NAME.equal("Orwell");
    -
    -Condition combined1 = a.or(b);             // These OR-connected conditions form a new condition, wrapped in parentheses
    -Condition combined2 = combined1.andNot(c); // The left-hand side of the AND NOT () operator is already wrapped in parentheses]]></java><html>
    -
    -									<h3>The Condition API</h3>
    -									<p>
    -										Here are all boolean operators on the <reference class="org.jooq.Condition"/> interface:
    -									</p>
    -									
    -</html><java><![CDATA[and(Condition)            // Combine conditions with AND
    -and(String)               // Combine conditions with AND. Convenience for adding plain SQL to the right-hand side
    -and(String, Object...)    // Combine conditions with AND. Convenience for adding plain SQL to the right-hand side
    -and(String, QueryPart...) // Combine conditions with AND. Convenience for adding plain SQL to the right-hand side
    -andExists(Select<?>)      // Combine conditions with AND. Convenience for adding an exists predicate to the rhs
    -andNot(Condition)         // Combine conditions with AND. Convenience for adding an inverted condition to the rhs
    -andNotExists(Select<?>)   // Combine conditions with AND. Convenience for adding an inverted exists predicate to the rhs
    -
    -or(Condition)             // Combine conditions with OR
    -or(String)                // Combine conditions with OR. Convenience for adding plain SQL to the right-hand side
    -or(String, Object...)     // Combine conditions with OR. Convenience for adding plain SQL to the right-hand side
    -or(String, QueryPart...)  // Combine conditions with OR. Convenience for adding plain SQL to the right-hand side
    -orExists(Select<?>)       // Combine conditions with OR. Convenience for adding an exists predicate to the rhs
    -orNot(Condition)          // Combine conditions with OR. Convenience for adding an inverted condition to the rhs
    -orNotExists(Select<?>)    // Combine conditions with OR. Convenience for adding an inverted exists predicate to the rhs
    -
    -not()                     // Invert a condition (synonym for DSL.not(Condition)]]></java></content>
    -							</section>
    -
    -						    <section id="comparison-predicate">
    -							    <title>Comparison predicate</title>
    -								<content><html>
    -									<p>
    -										In SQL, comparison predicates are formed using common comparison operators:
    -									</p>
    -									<ul>
    -										<li><strong>=</strong> to test for equality</li>
    -										<li><strong>&lt;&gt;</strong> or <strong>!=</strong> to test for non-equality</li>
    -										<li><strong>&gt;</strong> to test for being strictly greater</li>
    -										<li><strong>&gt;=</strong> to test for being greater or equal</li>
    -										<li><strong>&lt;</strong> to test for being strictly less</li>
    -										<li><strong>&lt;=</strong> to test for being less or equal</li>
    -									</ul>
    -									
    -									<p>
    -										Unfortunately, Java does not support operator overloading, hence these operators are also implemented as methods in jOOQ, like any other SQL syntax elements. The relevant parts of the <reference class="org.jooq.Field"/> interface are these:
    -									</p>
    -									
    -</html><java><![CDATA[eq or equal(T);                                     // =  (some bind value)
    -eq or equal(Field<T>);                              // =  (some column expression)
    -eq or equal(Select<? extends Record1<T>>);          // =  (some scalar SELECT statement)
    -ne or notEqual(T);                                  // <> (some bind value)
    -ne or notEqual(Field<T>);                           // <> (some column expression)
    -ne or notEqual(Select<? extends Record1<T>>);       // <> (some scalar SELECT statement)
    -lt or lessThan(T);                                  // <  (some bind value)
    -lt or lessThan(Field<T>);                           // <  (some column expression)
    -lt or lessThan(Select<? extends Record1<T>>);       // <  (some scalar SELECT statement)
    -le or lessOrEqual(T);                               // <= (some bind value)
    -le or lessOrEqual(Field<T>);                        // <= (some column expression)
    -le or lessOrEqual(Select<? extends Record1<T>>);    // <= (some scalar SELECT statement)
    -gt or greaterThan(T);                               // >  (some bind value)
    -gt or greaterThan(Field<T>);                        // >  (some column expression)
    -gt or greaterThan(Select<? extends Record1<T>>);    // >  (some scalar SELECT statement)
    -ge or greaterOrEqual(T);                            // >= (some bind value)
    -ge or greaterOrEqual(Field<T>);                     // >= (some column expression)
    -ge or greaterOrEqual(Select<? extends Record1<T>>); // >= (some scalar SELECT statement)]]></java><html>
    -
    -									<p>
    -										Note that every operator is represented by two methods. A verbose one (such as <code>equal()</code>) and a two-character one (such as <code>eq()</code>). Both methods are the same. You may choose either one, depending on your taste. The manual will always use the more verbose one.
    -									</p>
    -									
    -									<h3>jOOQ's convenience methods using comparison operators</h3>
    -									<p>
    -										In addition to the above, jOOQ provides a few convenience methods for common operations performed on strings using comparison predicates:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[-- case insensitivity
    -LOWER(TITLE)  = LOWER('animal farm')
    -LOWER(TITLE) <> LOWER('animal farm')]]></sql><java><![CDATA[// case insensitivity
    -BOOK.TITLE.equalIgnoreCase("animal farm")
    -BOOK.TITLE.notEqualIgnoreCase("animal farm")]]></java>
    -</code-pair><html>
    -								</html></content>
    -							</section>
    -
    -							<section id="comparison-predicate-degree-n">
    -							    <title>Comparison predicate (degree > 1)</title>
    -							    <content><html>
    -							    	<p>
    -							    		All variants of the <reference id="comparison-predicate" title="comparison predicate"/> that we've seen in the previous chapter also work for <reference id="row-value-expressions" title="row value expressions"/>. If your database does not support row value expression comparison predicates, jOOQ simulates them the way they are defined in the SQL standard:
    -							    	</p>
    -	
    -</html><code-pair>
    -<sql><![CDATA[-- Row value expressions (equal)
    -(A, B)    =  (X, Y)
    -(A, B, C) =  (X, Y, Z)
    --- greater than
    -(A, B)    >  (X, Y)
    -
    -(A, B, C) >  (X, Y, Z)
    -
    -
    --- greater or equal  
    -(A, B)    >= (X, Y)
    -
    -
    -(A, B, C) >= (X, Y, Z)
    -
    -
    -
    --- Inverse comparisons
    -
    -(A, B)    <> (X, Y)
    -(A, B)    <  (X, Y)
    -(A, B)    <= (X, Y)]]></sql><sql><![CDATA[-- Equivalent factored-out predicates (equal)
    -(A = X) AND (B = Y)
    -(A = X) AND (B = Y) AND (C = Z)
    --- greater than
    -(A > X) 
    -  OR ((A = X) AND (B > Y)) 
    -(A > X) 
    -  OR ((A = X) AND (B > Y)) 
    -  OR ((A = X) AND (B = Y) AND (C > Z))
    --- greater or equal  
    -(A > X) 
    -  OR ((A = X) AND (B > Y))
    -  OR ((A = X) AND (B = Y))
    -(A > X) 
    -  OR ((A = X) AND (B > Y)) 
    -  OR ((A = X) AND (B = Y) AND (C > Z))
    -  OR ((A = X) AND (B = Y) AND (C = Z))
    --- For simplicity, these predicates are shown in terms
    --- of their negated counter parts
    -NOT((A, B) =  (X, Y))
    -NOT((A, B) >= (X, Y))
    -NOT((A, B) >  (X, Y))]]></sql>	
    -</code-pair><html>						    	
    -
    -									<p>
    -										jOOQ supports all of the above row value expression comparison predicates, both with <reference id="column-expressions" title="column expression lists"/> and <reference id="select-statement" title="scalar subselects"/> at the right-hand side:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[-- With regular column expressions
    -(BOOK.AUTHOR_ID, BOOK.TITLE) = (1, 'Animal Farm')
    -
    --- With scalar subselects
    -(BOOK.AUTHOR_ID, BOOK.TITLE) = (
    -  SELECT PERSON.ID, 'Animal Farm'
    -  FROM PERSON
    -  WHERE PERSON.ID = 1
    -)]]></sql><java><![CDATA[// Column expressions
    -row(BOOK.AUTHOR_ID, BOOK.TITLE).equal(1, "Animal Farm");
    -
    -// Subselects
    -row(BOOK.AUTHOR_ID, BOOK.TITLE).equal(
    -  select(PERSON.ID, val("Animal Farm"))
    -  .from(PERSON)
    -  .where(PERSON.ID.equal(1))
    -);]]></java>
    -</code-pair><html>									
    -							    </html></content>
    -						    </section>
    -						    
    -						    <section id="quantified-comparison-predicate">
    -							    <title>Quantified comparison predicate</title>
    -								<content><html>
    -									<p>
    -										If the right-hand side of a <reference id="comparison-predicate" title="comparison predicate"/> turns out to be a non-scalar table subquery, you can wrap that subquery in a quantifier, such as <code>ALL</code>, <code>ANY</code>, or <code>SOME</code>. Note that the SQL standard defines <code>ANY</code> and <code>SOME</code> to be equivalent. jOOQ settled for the more intuitive <code>ANY</code> and doesn't support <code>SOME</code>. Here are some examples, supported by jOOQ:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[TITLE = ANY('Animal Farm', '1982')
    -PUBLISHED_IN > ALL(1920, 1940)]]></sql><java><![CDATA[BOOK.TITLE.equal(any("Animal Farm", "1982"));
    -BOOK.PUBLISHED_IN.greaterThan(all(1920, 1940));]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										For the example, the right-hand side of the quantified comparison predicates were filled with argument lists. But it is easy to imagine that the source of values results from a <reference id="nested-selects" title="subselect"/>.
    -									</p>
    -
    -									<h3>ANY and the IN predicate</h3>
    -									<p>
    -										It is interesting to note that the SQL standard defines the <reference id="in-predicate" title="IN predicate"/> in terms of the <code>ANY</code>-quantified predicate. The following two expressions are equivalent:
    -									</p>
    -									
    -</html><code-pair>
    -<text><![CDATA[[ROW VALUE EXPRESSION] IN [IN PREDICATE VALUE]]]></text><text><![CDATA[[ROW VALUE EXPRESSION] = ANY [IN PREDICATE VALUE]]]></text>
    -</code-pair><html>
    -
    -									<p>
    -										Typically, the <reference id="in-predicate" title="IN predicate"/> is more readable than the quantified comparison predicate.
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -						    <section id="null-predicate">
    -							    <title>NULL predicate</title>
    -								<content><html>
    -									<p>
    -										In SQL, you cannot compare <code>NULL</code> with any value using <reference id="comparison-predicate" title="comparison predicates"/>, as the result would yield <code>NULL</code> again, which is neither <code>TRUE</code> nor <code>FALSE</code> (see also the manual's section about <reference id="conditional-expressions" title="conditional expressions"/>). In order to test a <reference id="column-expressions" title="column expression"/> for <code>NULL</code>, use the <code>NULL</code> predicate as such:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[TITLE IS NULL
    -TITLE IS NOT NULL]]></sql><java><![CDATA[BOOK.TITLE.isNull()
    -BOOK.TITLE.isNotNull()]]></java>
    -</code-pair><html>
    -
    -								</html></content>
    -							</section>
    -
    -						    <section id="null-predicate-degree-n">
    -							    <title>NULL predicate (degree > 1)</title>
    -							    <content><html>
    -							    	<p>
    -							    		The SQL <code>NULL</code> predicate also works well for <reference id="row-value-expressions" title="row value expressions"/>, although it has some subtle, counter-intuitive features when it comes to inversing predicates with the <code>NOT()</code> operator! Here are some examples:
    -							    	</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- Row value expressions
    -(A, B) IS     NULL
    -(A, B) IS NOT NULL
    -
    --- Inverse of the above
    -NOT((A, B) IS     NULL)
    -NOT((A, B) IS NOT NULL)]]></sql><sql><![CDATA[-- Equivalent factored-out predicates
    -(A IS     NULL) AND (B IS     NULL)
    -(A IS NOT NULL) AND (B IS NOT NULL)
    -
    --- Inverse
    -(A IS NOT NULL) OR  (B IS NOT NULL)
    -(A IS     NULL) OR  (B IS     NULL)]]></sql>	
    -</code-pair><html>						    	
    -
    -									<p>
    -										The SQL standard contains a nice truth table for the above rules:
    -									</p>
    -									
    -</html><text>+-----------------------+-----------+---------------+---------------+-------------------+
    -| Expression            | R IS NULL | R IS NOT NULL | NOT R IS NULL | NOT R IS NOT NULL |
    -+-----------------------+-----------+---------------+---------------+-------------------+
    -| degree 1: null        | true      | false         | false         |  true             |
    -| degree 1: not null    | false     | true          | true          |  false            |
    -| degree > 1: all null  | true      | false         | false         |  true             |
    -| degree > 1: some null | false     | false         | true          |  true             |
    -| degree > 1: none null | false     | true          | true          |  false            |
    -+-----------------------+-----------+---------------+---------------+-------------------+</text><html>		
    -
    -									<p>
    -										In jOOQ, you would simply use the <code>isNull()</code> and <code>isNotNull()</code> methods on row value expressions. Again, as with the <reference id="comparison-predicate-degree-n" title="row value expression comparison predicate"/>, the row value expression <code>NULL</code> predicate is simulated by jOOQ, if your database does not natively support it:
    -									</p>
    -									
    -</html><java><![CDATA[row(BOOK.ID, BOOK.TITLE).isNull();
    -row(BOOK.ID, BOOK.TITLE).isNotNull();]]></java></content>
    -						    </section>
    -						    
    -						    <section id="distinct-predicate">
    -							    <title>DISTINCT predicate</title>
    -								<content><html>
    -									<p>
    -										Some databases support the <code>DISTINCT</code> predicate, which serves as a convenient, <code>NULL</code>-safe <reference id="comparison-predicate" title="comparison predicate"/>. With the <code>DISTINCT</code> predicate, the following truth table can be assumed:
    -									</p>
    -									<ul>
    -										<li><code>[ANY] IS DISTINCT FROM NULL</code> yields <code>TRUE</code></li>
    -										<li><code>[ANY] IS NOT DISTINCT FROM NULL</code> yields <code>FALSE</code></li>
    -										<li><code>NULL IS DISTINCT FROM NULL</code> yields <code>FALSE</code></li>
    -										<li><code>NULL IS NOT DISTINCT FROM NULL</code> yields <code>TRUE</code></li>
    -									</ul>
    -									<p>
    -										For instance, you can compare two fields for distinctness, ignoring the fact that any of the two could be <code>NULL</code>, which would lead to funny results. This is supported by jOOQ as such:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[TITLE IS DISTINCT FROM SUB_TITLE
    -TITLE IS NOT DISTINCT FROM SUB_TITLE]]></sql><java><![CDATA[BOOK.TITLE.isDistinctFrom(BOOK.SUB_TITLE)
    -BOOK.TITLE.isNotDistinctFrom(BOOK.SUB_TITLE)]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										If your database does not natively support the <code>DISTINCT</code> predicate, jOOQ simulates it with an equivalent <reference id="case-expressions" title="CASE expression"/>, modelling the above truth table:
    -									</p>
    -	
    -</html><code-pair>								
    -<sql><![CDATA[-- [A] IS DISTINCT FROM [B] 
    -CASE WHEN [A] IS     NULL AND [B] IS     NULL THEN FALSE
    -     WHEN [A] IS     NULL AND [B] IS NOT NULL THEN TRUE
    -     WHEN [A] IS NOT NULL AND [B] IS     NULL THEN TRUE
    -     WHEN [A] =               [B]             THEN FALSE
    -     ELSE                                          TRUE
    -END
    -]]></sql><sql><![CDATA[-- [A] IS NOT DISTINCT FROM [B] 
    -CASE WHEN [A] IS     NULL AND [B] IS     NULL THEN TRUE
    -     WHEN [A] IS     NULL AND [B] IS NOT NULL THEN FALSE
    -     WHEN [A] IS NOT NULL AND [B] IS     NULL THEN FALSE
    -     WHEN [A] =               [B]             THEN TRUE
    -     ELSE                                          FALSE
    -END
    -]]></sql>
    -</code-pair><html>							
    -								</html></content>
    -							</section>
    -
    -						    <section id="between-predicate">
    -							    <title>BETWEEN predicate</title>
    -								<content><html>
    -									<p>
    -										The <code>BETWEEN</code> predicate can be seen as syntactic sugar for a pair of <reference id="comparison-predicate" title="comparison predicates"/>. According to the SQL standard, the following two predicates are equivalent:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[[A] BETWEEN [B] AND [C]]]></sql><sql><![CDATA[[A] >= [B] AND [A] <= [C]]]></sql>
    -</code-pair><html>
    -
    -									<p>
    -										Note the inclusiveness of range boundaries in the definition of the <code>BETWEEN</code> predicate. Intuitively, this is supported in jOOQ as such:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[PUBLISHED_IN     BETWEEN 1920 AND 1940
    -PUBLISHED_IN NOT BETWEEN 1920 AND 1940]]></sql><java><![CDATA[BOOK.PUBLISHED_IN.between(1920).and(1940)
    -BOOK.PUBLISHED_IN.notBetween(1920).and(1940)]]></java>
    -</code-pair><html>
    -
    -									<h3>BETWEEN SYMMETRIC</h3>
    -									<p>
    -										The SQL standard defines the <code>SYMMETRIC</code> keyword to be used along with <code>BETWEEN</code> to indicate that you do not care which bound of the range is larger than the other. A database system should simply swap range bounds, in case the first bound is greater than the second one. jOOQ supports this keyword as well, simulating it if necessary.
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[PUBLISHED_IN     BETWEEN SYMMETRIC 1940 AND 1920
    -PUBLISHED_IN NOT BETWEEN SYMMETRIC 1940 AND 1920]]></sql><java><![CDATA[BOOK.PUBLISHED_IN.betweenSymmetric(1940).and(1920)
    -BOOK.PUBLISHED_IN.notBetweenSymmetric(1940).and(1920)]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										The simulation is done trivially:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[[A] BETWEEN SYMMETRIC [B] AND [C]]]></sql><sql><![CDATA[([A] BETWEEN [B] AND [C]) OR ([A] BETWEEN [C] AND [B])]]></sql>
    -</code-pair><html>
    -
    -								</html></content>
    -							</section>
    -
    -						    <section id="between-predicate-degree-n">
    -							    <title>BETWEEN predicate (degree > 1)</title>
    -							    <content><html>
    -							    	<p>
    -							    	    The SQL <code>BETWEEN</code> predicate also works well for <reference id="row-value-expressions" title="row value expressions"/>. Much like the <reference id="between-predicate" title="BETWEEN predicate for degree 1"/>, it is defined in terms of a pair of regular <reference id="comparison-predicate" title="comparison predicates"/>:
    -							    	</p>
    -							    	
    -</html><code-pair>
    -<sql><![CDATA[[A] BETWEEN           [B] AND [C]
    -[A] BETWEEN SYMMETRIC [B] AND [C]]]></sql><sql><![CDATA[ [A] >= [B] AND [A] <= [C]
    -([A] >= [B] AND [A] <= [C]) OR ([A] >= [C] AND [A] <= [B])]]></sql>
    -</code-pair><html>
    -							    	
    -							    	<p>
    -							    		The above can be factored out according to the rules listed in the manual's section about <reference id="comparison-predicate-degree-n" title="row value expression comparison predicates"/>.
    -							    	</p>
    -							    	
    -							    	<p>
    -							    		jOOQ supports the <code>BETWEEN [SYMMETRIC]</code> predicate and simulates it in all SQL dialects where necessary. An example is given here:
    -							    	</p>
    -							    	
    -</html><java><![CDATA[row(BOOK.ID, BOOK.TITLE).between(1, "A").and(10, "Z");]]></java></content>
    -							</section>
    -							
    -						    <section id="like-predicate">
    -							    <title>LIKE predicate</title>
    -								<content><html>
    -									<p>
    -										<code>LIKE</code> predicates are popular for simple wildcard-enabled pattern matching. Supported wildcards in all SQL databases are:
    -									</p>
    -									<ul>
    -										<li><strong>_</strong>: (single-character wildcard)</li>
    -										<li><strong>%</strong>: (multi-character wildcard)</li>
    -									</ul>
    -									<p>
    -										With jOOQ, the <code>LIKE</code> predicate can be created from any <reference id="column-expressions" title="column expression"/> as such:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[TITLE     LIKE '%abc%'
    -TITLE NOT LIKE '%abc%']]></sql><java><![CDATA[BOOK.TITLE.like("%abc%")
    -BOOK.TITLE.notLike("%abc%")]]></java>
    -</code-pair><html>
    -									
    -									<h3>Escaping operands with the LIKE predicate</h3>
    -									<p>
    -										Often, your pattern may contain any of the wildcard characters <code>"_"</code> and <code>"%"</code>, in case of which you may want to escape them. jOOQ does not automatically escape patterns in <code>like()</code> and <code>notLike()</code> methods. Instead, you can explicitly define an escape character as such:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[TITLE     LIKE '%The !%-Sign Book%' ESCAPE '!'
    -TITLE NOT LIKE '%The !%-Sign Book%' ESCAPE '!']]></sql><java><![CDATA[BOOK.TITLE.like("%The !%-Sign Book%", '!')
    -BOOK.TITLE.notLike("%The !%-Sign Book%", '!')]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										In the above predicate expressions, the exclamation mark character is passed as the escape character to escape wildcard characters <code>"!_"</code> and <code>"!%"</code>, as well as to escape the escape character itself: <code>"!!"</code>
    -									</p>
    -									<p>
    -										Please refer to your database manual for more details about escaping patterns with the <code>LIKE</code> predicate.
    -									</p>
    -									
    -									<h3>jOOQ's convenience methods using the LIKE predicate</h3>
    -									<p>
    -										In addition to the above, jOOQ provides a few convenience methods for common operations performed on strings using the <code>LIKE</code> predicate. Typical operations are "contains predicates", "starts with predicates", "ends with predicates", etc. Here is the full convenience API wrapping <code>LIKE</code> predicates:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[-- case insensitivity
    -LOWER(TITLE) LIKE LOWER('%abc%')
    -LOWER(TITLE) NOT LIKE LOWER('%abc%')
    -
    --- contains and similar methods
    -TITLE LIKE '%' || 'abc' || '%'
    -TITLE LIKE 'abc' || '%'
    -TITLE LIKE '%' || 'abc']]></sql><java><![CDATA[// case insensitivity
    -BOOK.TITLE.likeIgnoreCase("%abc%")
    -BOOK.TITLE.notLikeIgnoreCase("%abc%")
    -
    -// contains and similar methods
    -BOOK.TITLE.contains("abc")
    -BOOK.TITLE.startsWith("abc")
    -BOOK.TITLE.endsWith("abc")]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										Note, that jOOQ escapes <code>%</code> and <code>_</code> characters in value in some of the above predicate implementations. For simplicity, this has been omitted in this manual.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -						    <section id="in-predicate">
    -							    <title>IN predicate</title>
    -								<content><html>
    -									<p>
    -										In SQL, apart from comparing a value against several values, the <code>IN</code> predicate can be used to create semi-joins or anti-joins. jOOQ knows the following methods on the <reference class="org.jooq.Field" /> interface, to construct such <code>IN</code> predicates:
    -									</p>
    -
    -</html><java><![CDATA[in(Collection<T>)                   // Construct an IN predicate from a collection of bind values
    -in(T...)                            // Construct an IN predicate from bind values
    -in(Field<?>...)                     // Construct an IN predicate from column expressions
    -in(Select<? extends Record1<T>>)    // Construct an IN predicate from a subselect
    -notIn(Collection<T>)                // Construct a NOT IN predicate from a collection of bind values
    -notIn(T...)                         // Construct a NOT IN predicate from bind values
    -notIn(Field<?>...)                  // Construct a NOT IN predicate from column expressions
    -notIn(Select<? extends Record1<T>>) // Construct a NOT IN predicate from a subselect]]></java><html>
    -
    -									<p>
    -										A sample <code>IN</code> predicate might look like this:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[TITLE     IN ('Animal Farm', '1984')
    -TITLE NOT IN ('Animal Farm', '1984')]]></sql><java><![CDATA[BOOK.TITLE.in("Animal Farm", "1984")
    -BOOK.TITLE.notIn("Animal Farm", "1984")]]></java>
    -</code-pair><html>
    -
    -									
    -									<h3>NOT IN and NULL values</h3>
    -									<p>
    -										Beware that you should probably not have any <code>NULL</code> values in the right hand side of a <code>NOT IN</code> predicate, as the whole expression would evaluate to <code>NULL</code>, which is rarely desired. This can be shown informally using the following reasoning:
    -									</p>
    -									
    -</html><sql>-- The following conditional expressions are formally or informally equivalent
    -A NOT IN (B, C)
    -A != ANY(B, C)
    -A != B AND A != C
    -
    --- Substitute C for NULL, you'll get
    -A NOT IN (B, NULL)   -- Substitute C for NULL
    -A != B AND A != NULL -- From the above rules
    -A != B AND NULL      -- [ANY] != NULL yields NULL
    -NULL                 -- [ANY] AND NULL yields NULL</sql><html>
    -
    -									<p>
    -										A good way to prevent this from happening is to use the <reference id="exists-predicate" title="EXISTS predicate"/> for anti-joins, which is <code>NULL</code>-value insensitive. See the manual's section about <reference id="conditional-expressions" title="conditional expressions"/> to see a boolean truth table.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -						    <section id="in-predicate-degree-n">
    -							    <title>IN predicate (degree > 1)</title>
    -							    <content><html>
    -							    	<p>
    -							    	    The SQL <code>IN</code> predicate also works well for <reference id="row-value-expressions" title="row value expressions"/>. Much like the <reference id="in-predicate" title="IN predicate for degree 1"/>, it is defined in terms of a <reference id="quantified-comparison-predicate" title="quantified comparison predicate"/>. The two expressions are equivalent:
    -							    	</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[R IN [IN predicate value]]]></sql><sql><![CDATA[R = ANY [IN predicate value]]]></sql>
    -</code-pair><html>		
    -
    -									<p>
    -							    		jOOQ supports the <code>IN</code> predicate. Simulation of the <code>IN</code> predicate where row value expressions aren't well supported is currently only available for <code>IN</code> predicates that do not take a subselect as an <code>IN</code> predicate value. An example is given here:
    -							    	</p>
    -							    	
    -</html><java><![CDATA[row(BOOK.ID, BOOK.TITLE).in(row(1, "A"), row(2, "B"));]]></java></content>
    -							</section>
    -							
    -						    <section id="exists-predicate">
    -							    <title>EXISTS predicate</title>
    -								<content><html>
    -									<p>
    -										Slightly less intuitive, yet more powerful than the previously discussed <reference id="in-predicate" title="IN predicate"/> is the <code>EXISTS</code> predicate, that can be used to form semi-joins or anti-joins. With jOOQ, the <code>EXISTS</code> predicate can be formed in various ways:
    -									</p>
    -									<ul>
    -										<li>From the <reference id="dsl" title="DSL"/>, using static methods. This is probably the most used case</li>
    -										<li>From a <reference id="conditional-expressions" title="conditional expression"/> using <reference id="boolean-operators" title="convenience methods attached to boolean operators"/></li>
    -										<li>From a <reference id="select-statement" title="SELECT statement"/> using <reference id="where-clause" title="convenience methods attached to the where clause"/>, and from other clauses</li>
    -									</ul>
    -									
    -									<p>
    -										An example of an <code>EXISTS</code> predicate can be seen here:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[    EXISTS (SELECT 1 FROM BOOK 
    -            WHERE AUTHOR_ID = 3)
    -NOT EXISTS (SELECT 1 FROM BOOK 
    -            WHERE AUTHOR_ID = 3)]]></sql><java><![CDATA[   exists(create.selectOne().from(BOOK)
    -                .where(BOOK.AUTHOR_ID.equal(3)));
    -notExists(create.selectOne().from(BOOK)
    -                .where(BOOK.AUTHOR_ID.equal(3)));]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										Note that in SQL, the projection of a subselect in an <code>EXISTS</code> predicate is irrelevant. To help you write queries like the above, you can use jOOQ's selectZero() or selectOne() <reference id="dsl" title="DSL"/> methods
    -									</p>
    -									
    -									<h3>Performance of IN vs. EXISTS</h3>
    -									<p>
    -										In theory, the two types of predicates can perform equally well. If your database system ships with a sophisticated cost-based optimiser, it will be able to transform one predicate into the other, if you have all necessary constraints set (e.g. referential constraints, not null constraints). However, in reality, performance between the two might differ substantially. An interesting blog post investigating this topic on the MySQL database can be seen here:<br/>
    -										<a href="http://blog.jooq.org/2012/07/27/not-in-vs-not-exists-vs-left-join-is-null-mysql/">http://blog.jooq.org/2012/07/27/not-in-vs-not-exists-vs-left-join-is-null-mysql/</a>
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -							<section id="overlaps-predicate">
    -								<title>OVERLAPS predicate</title>
    -								<content><html>
    -									<p>
    -										When comparing dates, the SQL standard allows for using a special <code>OVERLAPS</code> predicate, which checks whether two date ranges overlap each other. The following can be said:
    -									</p>
    -
    -</html><sql><![CDATA[-- This yields true
    -(DATE '2010-01-01', DATE '2010-01-03') OVERLAPS (DATE '2010-01-02' DATE '2010-01-04')
    -
    --- INTERVAL data types are also supported. This is equivalent to the above
    -(DATE '2010-01-01', CAST('+2 00:00:00' AS INTERVAL DAY TO SECOND)) OVERLAPS 
    -(DATE '2010-01-02', CAST('+2 00:00:00' AS INTERVAL DAY TO SECOND))]]></sql><html>
    -
    -									<h3>The OVERLAPS predicate in jOOQ</h3>
    -									<p>
    -									    jOOQ supports the <code>OVERLAPS</code> predicate on <reference id="row-value-expressions" title="row value expressions of degree 2"/>. The following methods are contained in <reference class="org.jooq.Row2"/>:
    -									</p>
    -
    -</html><java><![CDATA[Condition overlaps(T1 t1, T2 t2);
    -Condition overlaps(Field<T1> t1, Field<T2> t2);
    -Condition overlaps(Row2<T1, T2> row);]]></java><html>
    -
    -									<p>
    -										This allows for expressing the above predicates as such:
    -									</p>																		
    -
    -</html><java><![CDATA[// The date range tuples version
    -row(Date.valueOf('2010-01-01'), Date.valueOf('2010-01-03')).overlaps(Date.valueOf('2010-01-02'), Date.valueOf('2010-01-04'))
    -
    -// The INTERVAL tuples version
    -row(Date.valueOf('2010-01-01'), new DayToSecond(2)).overlaps(Date.valueOf('2010-01-02'), new DayToSecond(2))]]></java><html>
    -
    -									<h3>jOOQ's extensions to the standard</h3>
    -									<p>
    -										Unlike the standard (or any database implementing the standard), jOOQ also supports the <code>OVERLAPS</code> predicate for comparing arbitrary <reference id="row-value-expressions" title="row vlaue expressions of degree 2"/>. For instance, <code>(1, 3) OVERLAPS (2, 4)</code> will yield true in jOOQ. This is simulated as such
    -									</p>
    -									
    -</html><sql><![CDATA[-- This predicate
    -(A, B) OVERLAPS (C, D)
    -
    --- can be simulated as such
    -(C <= B) AND (A <= D)]]></sql></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="plain-sql">
    -						<title>Plain SQL</title>
    -						<content><html>
    -							<p>
    -								A DSL is a nice thing to have, it feels "fluent" and "natural", especially if it models a well-known language, such as SQL. But a DSL is always expressed in a host language (Java in this case), which was not made for exactly the same purposes as its hosted DSL. If it were, then jOOQ would be implemented on a compiler-level, similar to LINQ in .NET. But it's not, and so, the DSL is limited by language constraints of its host language. We have seen many functionalities where the DSL becomes a bit verbose. This can be especially true for:
    -							</p>
    -							<ul>
    -								<li><reference id="aliased-columns" title="aliasing"/></li>
    -								<li><reference id="nested-selects" title="nested selects"/></li>
    -								<li><reference id="arithmetic-expressions" title="arithmetic expressions"/></li>
    -								<li><reference id="cast-expressions" title="casting"/></li>
    -							</ul>
    -							
    -							<p>
    -								You'll probably find other examples. If verbosity scares you off, don't worry. The verbose use-cases for jOOQ are rather rare, and when they come up, you do have an option. Just write SQL the way you're used to!
    -							</p>
    -							<p>
    -								jOOQ allows you to embed SQL as a String into any supported <reference id="sql-statements" title="statement"/> in these contexts:
    -							</p>
    -							<ul>
    -								<li>Plain SQL as a <reference id="conditional-expressions" title="conditional expression"/></li>
    -								<li>Plain SQL as a <reference id="column-expressions" title="column expression"/></li>
    -								<li>Plain SQL as a <reference id="column-expressions" title="function"/></li>
    -								<li>Plain SQL as a <reference id="table-expressions" title="table expression"/></li>
    -								<li>Plain SQL as a <reference id="query-vs-resultquery" title="query"/></li>
    -							</ul>
    -
    -							<h3>The DSL plain SQL API</h3>
    -							<p>
    -								Plain SQL API methods are usually overloaded in three ways. Let's look at the <code>condition</code> query part constructor:
    -							</p>
    -</html><java><![CDATA[// Construct a condition without bind values
    -// Example: condition("a = b")
    -Condition condition(String sql);
    -
    -// Construct a condition with bind values
    -// Example: condition("a = ?", 1);
    -Condition condition(String sql, Object... bindings);
    -
    -// Construct a condition taking other jOOQ object arguments
    -// Example: condition("a = {0}", val(1));
    -Condition condition(String sql, QueryPart... parts);]]></java><html>
    -							
    -							<p>
    -								Please refer to the <reference class="org.jooq.impl.DSL"/> Javadoc for more details. The following is a more complete listing of plain SQL construction methods from the DSL:
    -							</p>
    -
    -</html><java><![CDATA[// A condition
    -Condition condition(String sql);
    -Condition condition(String sql, Object... bindings);
    -Condition condition(String sql, QueryPart... parts);
    -
    -// A field with an unknown data type
    -Field<Object> field(String sql);
    -Field<Object> field(String sql, Object... bindings);
    -Field<Object> field(String sql, QueryPart... parts);
    -
    -// A field with a known data type
    -<T> Field<T> field(String sql, Class<T> type);
    -<T> Field<T> field(String sql, Class<T> type, Object... bindings);
    -<T> Field<T> field(String sql, Class<T> type, QueryPart... parts);
    -<T> Field<T> field(String sql, DataType<T> type);
    -<T> Field<T> field(String sql, DataType<T> type, Object... bindings);
    -<T> Field<T> field(String sql, DataType<T> type, QueryPart... parts);
    -
    -// A field with a known name (properly escaped)
    -Field<Object> fieldByName(String... fieldName);
    -<T> Field<T>  fieldByName(Class<T> type, String... fieldName);
    -<T> Field<T>  fieldByName(DataType<T> type, String... fieldName)
    -
    -// A function
    -<T> Field<T> function(String name, Class<T> type, Field<?>... arguments);
    -<T> Field<T> function(String name, DataType<T> type, Field<?>... arguments);
    -
    -// A table
    -Table<?> table(String sql);
    -Table<?> table(String sql, Object... bindings);
    -Table<?> table(String sql, QueryPart... parts);
    -
    -// A table with a known name (properly escaped)
    -Table<Record> tableByName(String... fieldName);
    -
    -// A query without results (update, insert, etc)
    -Query query(String sql);
    -Query query(String sql, Object... bindings);
    -Query query(String sql, QueryPart... parts);
    -
    -// A query with results
    -ResultQuery<Record> resultQuery(String sql);
    -ResultQuery<Record> resultQuery(String sql, Object... bindings);
    -ResultQuery<Record> resultQuery(String sql, QueryPart... parts);
    -
    -// A query with results. This is the same as resultQuery(...).fetch();
    -Result<Record> fetch(String sql);
    -Result<Record> fetch(String sql, Object... bindings);
    -Result<Record> fetch(String sql, QueryPart... parts);]]></java><html>
    -
    -							<p>
    -								Apart from the general factory methods, plain SQL is also available in various other contexts. For instance, when adding a <code>.where("a = b")</code> clause to a query. Hence, there exist several convenience methods where plain SQL can be inserted usefully. This is an example displaying all various use-cases in one single query:
    -							</p>
    -							
    -</html><java><![CDATA[// You can use your table aliases in plain SQL fields
    -// As long as that will produce syntactically correct SQL
    -Field<?> LAST_NAME    = create.field("a.LAST_NAME");
    -
    -// You can alias your plain SQL fields
    -Field<?> COUNT1       = create.field("count(*) x");
    -
    -// If you know a reasonable Java type for your field, you
    -// can also provide jOOQ with that type
    -Field<Integer> COUNT2 = create.field("count(*) y", Integer.class);
    -
    -       // Use plain SQL as select fields
    -create.select(LAST_NAME, COUNT1, COUNT2)
    -
    -       // Use plain SQL as aliased tables (be aware of syntax!)
    -      .from("author a")
    -      .join("book b")
    -
    -       // Use plain SQL for conditions both in JOIN and WHERE clauses
    -      .on("a.id = b.author_id")
    -
    -       // Bind a variable in plain SQL
    -      .where("b.title != ?", "Brida")
    -
    -       // Use plain SQL again as fields in GROUP BY and ORDER BY clauses
    -      .groupBy(LAST_NAME)
    -      .orderBy(LAST_NAME);]]></java><html>
    -
    -							<h3>Important things to note about plain SQL!</h3>
    -							<p>
    -								There are some important things to keep in mind when using plain SQL:
    -							</p>
    -							<ul>
    -								<li>jOOQ doesn't know what you're doing. You're on your own again!</li>
    -								<li>You have to provide something that will be syntactically correct. If it's not, then jOOQ won't know. Only your JDBC driver or your RDBMS will detect the syntax error.</li>
    -								<li>You have to provide consistency when you use variable binding. The number of ? must match the number of variables</li>
    -								<li>Your SQL is inserted into jOOQ queries without further checks. Hence, jOOQ can't prevent SQL injection. </li>
    -							</ul>
    -						</html></content>
    -					</section>
    -
    -					<section id="bind-values">
    -					    <title>Bind values and parameters</title>
    -						<content><html>
    -							<p>
    -								Bind values are used in SQL / JDBC for various reasons. Among the most obvious ones are:
    -							</p>
    -							<ul>
    -								<li>
    -									Protection against SQL injection. Instead of inlining values possibly originating from user input, you bind those values to your prepared statement and let the JDBC driver / database take care of handling security aspects.
    -								</li>
    -								<li>
    -									Increased speed. Advanced databases such as Oracle can keep execution plans of similar queries in a dedicated cache to prevent hard-parsing your query again and again. In many cases, the actual value of a bind variable does not influence the execution plan, hence it can be reused. Preparing a statement will thus be faster
    -								</li>
    -								<li>
    -									On a JDBC level, you can also reuse the SQL string and prepared statement object instead of constructing it again, as you can bind new values to the prepared statement. jOOQ currently does not cache prepared statements, internally.
    -								</li>
    -							</ul>
    -							
    -							<p>
    -								The following sections explain how you can introduce bind values in jOOQ, and how you can control the way they are rendered and bound to SQL.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -						    <section id="indexed-parameters">
    -							    <title>Indexed parameters</title>
    -								<content><html>
    -									<p>
    -										JDBC only knows indexed bind values. A typical example for using bind values with JDBC is this:
    -									</p>
    -									
    -</html><java><![CDATA[PreparedStatement stmt = connection.prepareStatement("SELECT * FROM BOOK WHERE ID = ? AND TITLE = ?");
    -
    -// bind values to the above statement for appropriate indexes 
    -stmt.setInt(1, 5);
    -stmt.setString(2, "Animal Farm");
    -stmm.executeQuery();]]></java><html>
    -
    -									<p>
    -										With dynamic SQL, keeping track of the number of question marks and their corresponding index may turn out to be hard. jOOQ abstracts this and lets you provide the bind value right where it is needed. A trivial example is this:
    -									</p>
    -									
    -</html><java><![CDATA[create.select().from(BOOK).where(BOOK.ID.equal(5)).and(BOOK.TITLE.equal("Animal Farm"));
    -
    -// This notation is in fact a short form for the equivalent:
    -create.select().from(BOOK).where(BOOK.ID.equal(val(5))).and(BOOK.TITLE.equal(val("Animal Farm")));]]></java><html>
    -
    -									<p>
    -										Note the using of <reference class="org.jooq.impl.DSL" anchor="#val(java.lang.Object)" title="DSL.val()"/> to explicitly create an indexed bind value. You don't have to worry about that index. When the query is <reference id="sql-rendering" title="rendered"/>, each bind value will render a question mark. When the query <reference id="variable-binding" title="binds its variables"/>, each bind value will generate the appropriate bind value index. 
    -									</p>
    -									
    -									<h3>Extract bind values from a query</h3>
    -									<p>
    -										Should you decide to run the above query outside of jOOQ, using your own <reference class="java.sql.PreparedStatement"/>, you can do so as follows:
    -									</p>
    -									
    -</html><java><![CDATA[Select<?> select = create.select().from(BOOK).where(BOOK.ID.equal(5)).and(BOOK.TITLE.equal("Animal Farm"));
    -
    -// Render the SQL statement:
    -String sql = select.getSQL();
    -assertEquals("SELECT * FROM BOOK WHERE ID = ? AND TITLE = ?", sql);
    -
    -// Get the bind values:
    -List<Object> values = select.getBindValues();
    -assertEquals(2, values.size());
    -assertEquals(5, values.get(0));
    -assertEquals("Animal Farm", values.get(1));]]></java><html>
    -
    -									<p>
    -										You can also extract specific bind values by index from a query, if you wish to modify their underlying value after creating a query. This can be achieved as such:
    -									</p>
    -
    -</html><java><![CDATA[Select<?> select = create.select().from(BOOK).where(BOOK.ID.equal(5)).and(BOOK.TITLE.equal("Animal Farm"));
    -Param<?> param = select.getParam("2");
    -
    -// You could now modify the Query's underlying bind value:
    -if ("Animal Farm".equals(param.getValue())) {
    -    param.setConverted("1984");
    -}]]></java><html>
    -
    -									<p>
    -										For more details about jOOQ's internals, see the manual's section about <reference id="queryparts" title="QueryParts"/>.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -						    <section id="named-parameters">
    -							    <title>Named parameters</title>
    -								<content><html>
    -									<p>
    -										Some SQL access abstractions that are built on top of JDBC, or some that bypass JDBC may support named parameters. jOOQ allows you to give names to your parameters as well, although those names are not rendered to SQL strings by default. Here is an example of how to create named parameters using the <reference class="org.jooq.Param"/> type:
    -									</p>
    -
    -</html><java><![CDATA[// Create a query with a named parameter. You can then use that name for accessing the parameter again
    -Query query1 = create.select().from(AUTHOR).where(LAST_NAME.equal(param("lastName", "Poe")));
    -Param<?> param1 = query.getParam("lastName");
    -
    -// Or, keep a reference to the typed parameter in order not to lose the <T> type information:
    -Param<String> param2 = param("lastName", "Poe");
    -Query query2 = create.select().from(AUTHOR).where(LAST_NAME.equal(param2));
    -
    -// You can now change the bind value directly on the Param reference:
    -param2.setValue("Orwell");]]></java><html>
    -
    -									<p>
    -										The <reference class="org.jooq.Query"/> interface also allows for setting new bind values directly, without accessing the Param type:
    -									</p>
    -
    -</html><java><![CDATA[Query query1 = create.select().from(AUTHOR).where(LAST_NAME.equal("Poe"));
    -query1.bind(1, "Orwell");
    -
    -// Or, with named parameters
    -Query query2 = create.select().from(AUTHOR).where(LAST_NAME.equal(param("lastName", "Poe")));
    -query2.bind("lastName", "Orwell");]]></java><html>
    -
    -									<p>
    -										In order to actually render named parameter names in generated SQL, use the <reference class="org.jooq.DSLContext" anchor="#renderNamedParams(org.jooq.QueryPart)" title="DSLContext.renderNamedParams()"/> method:
    -									</p>
    -
    -</html><code-pair>
    -<java><![CDATA[create.renderNamedParams(
    -    create.select()
    -          .from(AUTHOR)
    -          .where(LAST_NAME.equal(
    -                 param("lastName", "Poe"))));]]></java><sql><![CDATA[-- The named bind variable can be rendered
    -
    -SELECT *
    -FROM AUTHOR
    -WHERE LAST_NAME = :lastName]]></sql>
    -</code-pair><html>
    -								</html></content>
    -							</section>
    -
    -						    <section id="inlined-parameters">
    -							    <title>Inlined parameters</title>
    -								<content><html>
    -									<p>
    -										Sometimes, you may wish to avoid rendering bind variables while still using custom values in SQL. jOOQ refers to that as "inlined" bind values. When bind values are inlined, they render the actual value in SQL rather than a JDBC question mark. Bind value inlining can be achieved in two ways:
    -									</p>
    -									<ul>
    -										<li>
    -											By using the <reference id="custom-settings" title="Settings"/> and setting the <reference class="org.jooq.conf.StatementType"/> to STATIC_STATEMENT. This will inline all bind values for SQL statements rendered from such a Configuration.
    -										</li>
    -										<li>
    -											By using <reference class="org.jooq.impl.DSL" anchor="#inline(java.lang.Object)" title="DSL.inline()"/> methods.
    -										</li>
    -									</ul>
    -									<p>
    -										In both cases, your inlined bind values will be properly escaped to avoid SQL syntax errors and SQL injection. Some examples:
    -									</p>
    -
    -</html><java><![CDATA[
    -// Use dedicated calls to inline() in order to specify
    -// single bind values to be rendered as inline values
    -// --------------------------------------------------
    -create.select()
    -      .from(AUTHOR)
    -      .where(LAST_NAME.equal(inline("Poe")));
    -
    -// Or render the whole query with inlined values
    -// --------------------------------------------------
    -Settings settings = new Settings()
    -    .withStatementType(StatementType.STATIC_STATEMENT);
    -
    -// Add the settings to the Configuration
    -DSLContext create = DSL.using(connection, SQLDialect.ORACLE, settings);
    -
    -// Run queries that omit rendering schema names
    -create.select()
    -      .from(AUTHOR)
    -      .where(LAST_NAME.equal("Poe"));]]></java></content>
    -							</section>
    -
    -						    <section id="sql-injection-and-plain-sql-queryparts">
    -							    <title>SQL injection and plain SQL QueryParts</title>
    -								<content><html>
    -									<p>
    -										Special care needs to be taken when using <reference id="plain-sql" title="plain SQL QueryParts"/>. While jOOQ's API allows you to specify bind values for use with plain SQL, you're not forced to do that. For instance, both of the following queries will lead to the same, valid result:
    -									</p>
    -									
    -</html><java><![CDATA[// This query will use bind values, internally.
    -create.fetch("SELECT * FROM BOOK WHERE ID = ? AND TITLE = ?", 5 "Animal Farm");
    -
    -// This query will not use bind values, internally.
    -create.fetch("SELECT * FROM BOOK WHERE ID = 5 AND TITLE = 'Animal Farm'");]]></java><html>
    -
    -									<p>
    -										All methods in the jOOQ API that allow for plain (unescaped, untreated) SQL contain a warning message in their relevant Javadoc, to remind you of the risk of SQL injection in what is otherwise a SQL-injection-safe API.
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="queryparts">
    -					    <title>QueryParts</title>
    -						<content><html>
    -							<p>
    -								A <reference class="org.jooq.Query" /> and all its contained objects is a <reference class="org.jooq.QueryPart" />. QueryParts essentially provide this functionality:
    -							</p>
    -							<ul>
    -								<li>they can <reference id="sql-rendering" title="render SQL"/> using the <reference class="org.jooq.QueryPartInternal" anchor="#toSQL(org.jooq.RenderContext)" title="toSQL(RenderContext)"/> method</li>
    -								<li>they can <reference id="variable-binding" title="bind variables"/> using the <reference class="org.jooq.QueryPartInternal" anchor="#bind(org.jooq.BindContext)" title="bind(BindContext)"/> method</li>
    -							</ul>
    -
    -							<p>
    -								Both of these methods are contained in jOOQ's internal API's <reference class="org.jooq.QueryPartInternal"/>, which is internally implemented by every QueryPart.
    -							</p>
    -
    -							<p>
    -								The following sections explain some more details about <reference id="sql-rendering" title="SQL rendering"/> and <reference id="variable-binding" title="variable binding"/>, as well as other implementation details about QueryParts in general.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -						    <section id="sql-rendering">
    -							    <title>SQL rendering</title>
    -								<content><html>
    -									<p>
    -										Every <reference class="org.jooq.QueryPart"/> must implement the <reference class="org.jooq.QueryPartInternal" anchor="#toSQL(org.jooq.RenderContext)" title="toSQL(RenderContext)"/> method to render its SQL string to a <reference class="org.jooq.RenderContext"/>. This RenderContext has two purposes:
    -									</p>
    -									<ul>
    -										<li>It provides some information about the "state" of SQL rendering.</li>
    -										<li>It provides a common API for constructing SQL strings on the context's internal <reference class="java.lang.StringBuilder"/></li>
    -									</ul>
    -									<p>
    -										An overview of the <reference class="org.jooq.RenderContext"/> API is given here:
    -									</p>
    -
    -</html><java><![CDATA[// These methods are useful for generating unique aliases within a RenderContext (and thus within a Query)
    -String peekAlias();
    -String nextAlias();
    -
    -// These methods return rendered SQL
    -String render();
    -String render(QueryPart part);
    -
    -// These methods allow for fluent appending of SQL to the RenderContext's internal StringBuilder
    -RenderContext keyword(String keyword);
    -RenderContext literal(String literal);
    -RenderContext sql(String sql);
    -RenderContext sql(char sql);
    -RenderContext sql(int sql);
    -RenderContext sql(QueryPart part);
    -
    -// These methods allow for controlling formatting of SQL, if the relevant Setting is active
    -RenderContext formatNewLine();
    -RenderContext formatSeparator();
    -RenderContext formatIndentStart();
    -RenderContext formatIndentStart(int indent);
    -RenderContext formatIndentLockStart();
    -RenderContext formatIndentEnd();
    -RenderContext formatIndentEnd(int indent);
    -RenderContext formatIndentLockEnd();
    -
    -// These methods control the RenderContext's internal state
    -boolean       inline();
    -RenderContext inline(boolean inline);
    -boolean       qualify();
    -RenderContext qualify(boolean qualify);
    -boolean       namedParams();
    -RenderContext namedParams(boolean renderNamedParams);
    -CastMode      castMode();
    -RenderContext castMode(CastMode mode);
    -Boolean       cast();
    -RenderContext castModeSome(SQLDialect... dialects);]]></java><html>
    -
    -									<p>
    -										The following additional methods are inherited from a common <reference class="org.jooq.Context"/>, which is shared among <reference class="org.jooq.RenderContext"/> and <reference class="org.jooq.BindContext"/>:
    -									</p>
    -
    -</html><java><![CDATA[// These methods indicate whether fields or tables are being declared (MY_TABLE AS MY_ALIAS) or referenced (MY_ALIAS)
    -boolean declareFields();
    -Context declareFields(boolean declareFields);
    -boolean declareTables();
    -Context declareTables(boolean declareTables);
    -
    -// These methods indicate whether a top-level query is being rendered, or a subquery
    -boolean subquery();
    -Context subquery(boolean subquery);
    -
    -// These methods provide the bind value indices within the scope of the whole Context (and thus of the whole Query)
    -int nextIndex();
    -int peekIndex();]]></java><html>
    -
    -									<h3>An example of rendering SQL</h3>
    -								   	<p>
    -								   		A simple example can be provided by checking out jOOQ's internal representation of a (simplified) <reference id="comparison-predicate" title="CompareCondition"/>. It is used for any <reference class="org.jooq.Condition"/> comparing two fields as for example the <code>AUTHOR.ID = BOOK.AUTHOR_ID</code> condition here:
    -							   		</p>
    -							   		
    -</html><sql>-- [...]
    -FROM AUTHOR
    -JOIN BOOK ON AUTHOR.ID = BOOK.AUTHOR_ID
    --- [...]</sql><html>
    -
    -									<p>
    -										This is how jOOQ renders such a condition (simplified example):
    -									</p>
    -
    -</html><java><![CDATA[@Override
    -public final void toSQL(RenderContext context) {
    -    // The CompareCondition delegates rendering of the Fields to the Fields
    -    // themselves and connects them using the Condition's comparator operator:
    -    context.sql(field1)
    -           .sql(" ")
    -           .sql(comparator.toSQL())
    -           .sql(" ")
    -           .sql(field2);
    -}]]></java><html>
    -
    -									<p>
    -										See the manual's sections about <reference id="custom-queryparts" title="custom QueryParts"/> and <reference id="plain-sql-queryparts" title="plain SQL QueryParts"/> to learn about how to write your own query parts in order to extend jOOQ.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="pretty-printing">
    -								<title>Pretty printing SQL</title>
    -								<content><html>
    -									<p>
    -										As mentioned in the previous chapter about <reference id="sql-rendering" title="SQL rendering"/>, there are some elements in the <reference class="org.jooq.RenderContext"/> that are used for formatting / pretty-printing rendered SQL. In order to obtain pretty-printed SQL, just use the following <reference id="custom-settings" title="custom settings"/>: 
    -									</p>
    -	
    -	
    -</html><java><![CDATA[// Create a DSLContext that will render "formatted" SQL
    -DSLContext pretty = DSL.using(dialect, new Settings().withRenderFormatted(true));]]></java><html>
    -
    -									<p>
    -										And then, use the above DSLContext to render pretty-printed SQL:
    -									</p>
    -									
    -</html><code-pair>
    -<java><![CDATA[String sql = pretty.select(
    -                       AUTHOR.LAST_NAME, count().as("c"))
    -                   .from(BOOK)
    -                   .join(AUTHOR)
    -                   .on(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -                   .where(BOOK.TITLE.notEqual("1984"))
    -                   .groupBy(AUTHOR.LAST_NAME)
    -                   .having(count().equal(2))
    -                   .getSQL();]]></java><sql><![CDATA[select 
    -  "TEST"."AUTHOR"."LAST_NAME", 
    -  count(*) "c"
    -from "TEST"."BOOK"
    -  join "TEST"."AUTHOR"
    -  on "TEST"."BOOK"."AUTHOR_ID" = "TEST"."AUTHOR"."ID"
    -where "TEST"."BOOK"."TITLE" <> '1984'
    -group by "TEST"."AUTHOR"."LAST_NAME"
    -having count(*) = 2]]></sql>
    -</code-pair><html>
    -
    -									<p>
    -										The section about <reference id="execute-listeners" title="ExecuteListeners"/> shows an example of how such pretty printing can be used to log readable SQL to the stdout.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -						    <section id="variable-binding">
    -							    <title>Variable binding</title>
    -								<content><html>
    -									<p>
    -										Every <reference class="org.jooq.QueryPart"/> must implement the <reference class="org.jooq.QueryPartInternal" anchor="#bind(org.jooq.BindContext)" title="bind(BindContext)"/> method. This BindContext has two purposes:
    -									</p>
    -									<ul>
    -										<li>It provides some information about the "state" of the variable binding in process.</li>
    -										<li>It provides a common API for binding values to the context's internal <reference class="java.sql.PreparedStatement"/></li>
    -									</ul>
    -									<p>
    -										An overview of the <reference class="org.jooq.RenderContext"/> API is given here:
    -									</p>
    -
    -</html><java><![CDATA[// This method provides access to the PreparedStatement to which bind values are bound
    -PreparedStatement statement();
    -
    -// These methods provide convenience to delegate variable binding
    -BindContext bind(QueryPart part) throws DataAccessException;
    -BindContext bind(Collection<? extends QueryPart> parts) throws DataAccessException;
    -BindContext bind(QueryPart[] parts) throws DataAccessException;
    -
    -// These methods perform the actual variable binding
    -BindContext bindValue(Object value, Class<?> type) throws DataAccessException;
    -BindContext bindValues(Object... values) throws DataAccessException;]]></java><html>
    -
    -									<p>
    -										Some additional methods are inherited from a common <reference class="org.jooq.Context"/>, which is shared among <reference class="org.jooq.RenderContext"/> and <reference class="org.jooq.BindContext"/>. Details are documented in the previous chapter about <reference id="sql-rendering" title="SQL rendering"/>
    -									</p>
    -
    -									<h3>An example of binding values to SQL</h3>
    -								   	<p>
    -								   		A simple example can be provided by checking out jOOQ's internal representation of a (simplified) <reference id="comparison-predicate" title="CompareCondition"/>. It is used for any <reference class="org.jooq.Condition"/> comparing two fields as for example the <code>AUTHOR.ID = BOOK.AUTHOR_ID</code> condition here:
    -							   		</p>
    -							   		
    -</html><sql>-- [...]
    -WHERE AUTHOR.ID = ?
    --- [...]</sql><html>
    -
    -									<p>
    -										This is how jOOQ binds values on such a condition:
    -									</p>
    -</html><java><![CDATA[@Override
    -public final void bind(BindContext context) throws DataAccessException {
    -    // The CompareCondition itself does not bind any variables.
    -    // But the two fields involved in the condition might do so...
    -    context.bind(field1).bind(field2);
    -}]]></java><html>
    -
    -									<p>
    -										See the manual's sections about <reference id="custom-queryparts" title="custom QueryParts"/> and <reference id="plain-sql-queryparts" title="plain SQL QueryParts"/> to learn about how to write your own query parts in order to extend jOOQ.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -						    <section id="custom-queryparts">
    -							    <title>Extend jOOQ with custom types</title>
    -								<content><html>
    -									<p>
    -										If a SQL clause is too complex to express with jOOQ, you can extend either one of the following types for use directly in a jOOQ query:
    -									</p>
    -									
    -</html><java><![CDATA[public abstract class CustomField<T> extends AbstractField<T> {}
    -public abstract class CustomCondition extends AbstractCondition {}
    -public abstract class CustomTable<R extends TableRecord<R>> extends TableImpl<R> {}
    -public abstract class CustomRecord<R extends TableRecord<R>> extends TableRecordImpl<R> {}]]></java><html>
    -
    -									<p>
    -										These classes are declared public and covered by jOOQ's integration tests. When you extend these classes, you will have to provide your own implementations for the <reference id="queryparts" title="QueryParts'"/> <reference id="sql-rendering" title="toSQL()"/> and <reference id="variable-binding" title="bind()"/> methods, as discussed before:
    -									</p>
    -									
    -</html><java><![CDATA[// This method must produce valid SQL. If your QueryPart contains other QueryParts, you may delegate SQL generation to them
    -// in the correct order, passing the render context.
    -//
    -// If context.inline() is true, you must inline all bind variables
    -// If context.inline() is false, you must generate ? for your bind variables
    -public void toSQL(RenderContext context);
    -
    -// This method must bind all bind variables to a PreparedStatement. If your QueryPart contains other QueryParts, $
    -// you may delegate variable binding to them in the correct order, passing the bind context.
    -//
    -// Every QueryPart must ensure, that it starts binding its variables at context.nextIndex().
    -public void bind(BindContext context) throws DataAccessException;]]></java><html>
    -
    -									<p>
    -										The above contract may be a bit tricky to understand at first. The best thing is to check out jOOQ source code and have a look at a couple of QueryParts, to see how it's done. Here's an example <reference class="org.jooq.impl.CustomField"/> showing how to create a field multiplying another field by 2
    -									</p>
    -									
    -</html><java><![CDATA[// Create an anonymous CustomField, initialised with BOOK.ID arguments
    -final Field<Integer> IDx2 = new CustomField<Integer>(BOOK.ID.getName(), BOOK.ID.getDataType()) {
    -    @Override
    -    public void toSQL(RenderContext context) {
    -    
    -        // In inline mode, render the multiplication directly
    -        if (context.inline()) {
    -            context.sql(BOOK.ID).sql(" * 2");
    -        }
    -        
    -        // In non-inline mode, render a bind value
    -        else {
    -            context.sql(BOOK.ID).sql(" * ?");
    -        }
    -    }
    -
    -    @Override
    -    public void bind(BindContext context) {
    -        try {
    -        
    -            // Manually bind the value 2
    -            context.statement().setInt(context.nextIndex(), 2);
    -            
    -            // Alternatively, you could also write:
    -            // context.bind(DSL.val(2));
    -        }
    -        catch (SQLException e) {
    -            throw translate(getSQL(), e);
    -        }
    -    }
    -};
    -
    -// Use the above field in a SQL statement:
    -create.select(IDx2).from(BOOK);]]></java></content>
    -							</section>
    -							
    -						    <section id="plain-sql-queryparts">
    -							    <title>Plain SQL QueryParts</title>
    -								<content><html>
    -									<p>
    -										If you don't need the integration of rather complex QueryParts into jOOQ, then you might be safer using simple <reference id="plain-sql" title="Plain SQL"/> functionality, where you can provide jOOQ with a simple String representation of your embedded SQL. Plain SQL methods in jOOQ's API come in two flavours. 
    -									</p>
    -									<ul>
    -										<li><strong>method(String, Object...)</strong>: This is a method that accepts a SQL string and a list of bind values that are to be bound to the variables contained in the SQL string</li>
    -										<li><strong>method(String, QueryPart...)</strong>: This is a method that accepts a SQL string and a list of QueryParts that are "injected" at the position of their respective placeholders in the SQL string</li>
    -									</ul>
    -									<p>
    -										The above distinction is best explained using an example:
    -									</p>
    -									
    -</html><java><![CDATA[// Plain SQL using bind values. The value 5 is bound to the first variable, "Animal Farm" to the second variable:
    -create.selectFrom(BOOK).where("BOOK.ID = ? AND TITLE = ?", 5, "Animal Farm");
    -
    -// Plain SQL using placeholders (counting from zero). 
    -// The QueryPart "id" is substituted for the placeholder {0}, the QueryPart "title" for {1}
    -Field<Integer> id   = val(5);
    -Field<String> title = val("Animal Farm");
    -create.selectFrom(BOOK).where("BOOK.ID = {0} AND TITLE = {1}", id, title);]]></java><html>
    -
    -									<p>
    -										The above technique allows for creating rather complex SQL clauses that are currently not supported by jOOQ, without extending any of the <reference id="custom-queryparts" title="custom QueryParts"/> as indicated in the previous chapter.
    -									</p>									
    -								</html></content>
    -							</section>
    -
    -						    <section id="serializability">
    -							    <title>Serializability</title>
    -								<content><html>
    -									<p>
    -										The only transient, non-serializable element in any jOOQ object is the <reference id="dsl-context" title="Configuration's"/> underlying <reference class="java.sql.Connection"/>. When you want to execute queries after de-serialisation, or when you want to store/refresh/delete <reference id="crud-with-updatablerecords" title="Updatable Records"/>, you may have to "re-attach" them to a Configuration
    -									</p>
    -
    -</html><java><![CDATA[// Deserialise a SELECT statement
    -ObjectInputStream in = new ObjectInputStream(...);
    -Select<?> select = (Select<?>) in.readObject();
    -
    -// This will throw a DetachedException:
    -select.execute();
    -
    -// In order to execute the above select, attach it first
    -DSLContext create = DSL.using(connection, SQLDialect.ORACLE);
    -create.attach(select);]]></java><html>
    -
    -									<h3>Automatically attaching QueryParts</h3>
    -									<p>
    -										Another way of attaching QueryParts automatically, or rather providing them with a new <reference class="java.sql.Connection"/> at will, is to hook into the <reference id="execute-listeners" title="Execute Listener support"/>. More details about this can be found in the manual's chapter about <reference id="execute-listeners" title="ExecuteListeners"/>
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -					
    -					<section id="scala-sql-building">
    -						<title>SQL building in Scala</title>
    -						<content><html>
    -							<p>
    -								jOOQ-Scala is a maven module used for leveraging some advanced Scala features for those users that wish to use jOOQ with Scala.
    -							</p>
    -							
    -							<h3>Using Scala's implicit defs to allow for operator overloading</h3>
    -							<p>
    -								The most obvious Scala feature to use in jOOQ are implicit defs for implicit conversions in order to enhance the <reference class="org.jooq.Field"/> type with SQL-esque operators. 
    -							</p>
    -							<p>
    -								The following depicts a trait which wraps all fields:
    -							</p>
    -							
    -</html><scala><![CDATA[/**
    - * A Scala-esque representation of {@link org.jooq.Field}, adding overloaded
    - * operators for common jOOQ operations to arbitrary fields
    - */
    -trait SAnyField[T] extends Field[T] {
    -
    -    // String operations
    -    // -----------------
    -
    -    def ||(value : String)            : Field[String]
    -    def ||(value : Field[_])          : Field[String]
    -
    -    // Comparison predicates
    -    // ---------------------
    -
    -    def ===(value : T)                : Condition
    -    def ===(value : Field[T])         : Condition
    -
    -    def !==(value : T)                : Condition
    -    def !==(value : Field[T])         : Condition
    -
    -    def <>(value : T)                 : Condition
    -    def <>(value : Field[T])          : Condition
    -
    -    def >(value : T)                  : Condition
    -    def >(value : Field[T])           : Condition
    -
    -    def >=(value : T)                 : Condition
    -    def >=(value : Field[T])          : Condition
    -
    -    def <(value : T)                  : Condition
    -    def <(value : Field[T])           : Condition
    -
    -    def <=(value : T)                 : Condition
    -    def <=(value : Field[T])          : Condition
    -
    -    def <=>(value : T)                : Condition
    -    def <=>(value : Field[T])         : Condition
    -}]]></scala><html>
    -
    -							<p>
    -								The following depicts a trait which wraps numeric fields:
    -							</p>
    -							
    -</html><scala><![CDATA[/**
    - * A Scala-esque representation of {@link org.jooq.Field}, adding overloaded
    - * operators for common jOOQ operations to numeric fields
    - */
    -trait SNumberField[T <: Number] extends SAnyField[T] {
    -
    -    // Arithmetic operations
    -    // ---------------------
    -
    -    def unary_-                       : Field[T]
    -
    -    def +(value : Number)             : Field[T]
    -    def +(value : Field[_ <: Number]) : Field[T]
    -
    -    def -(value : Number)             : Field[T]
    -    def -(value : Field[_ <: Number]) : Field[T]
    -
    -    def *(value : Number)             : Field[T]
    -    def *(value : Field[_ <: Number]) : Field[T]
    -
    -    def /(value : Number)             : Field[T]
    -    def /(value : Field[_ <: Number]) : Field[T]
    -
    -    def %(value : Number)             : Field[T]
    -    def %(value : Field[_ <: Number]) : Field[T]
    -
    -    // Bitwise operations
    -    // ------------------
    -
    -    def unary_~                       : Field[T]
    -
    -    def &(value : T)                  : Field[T]
    -    def &(value : Field[T])           : Field[T]
    -
    -    def |(value : T)                  : Field[T]
    -    def |(value : Field[T])           : Field[T]
    -
    -    def ^(value : T)                  : Field[T]
    -    def ^(value : Field[T])           : Field[T]
    -
    -    def <<(value : T)                 : Field[T]
    -    def <<(value : Field[T])          : Field[T]
    -
    -    def >>(value : T)                 : Field[T]
    -    def >>(value : Field[T])          : Field[T]
    -}]]></scala><html>
    -
    -							<p>
    -								An example query using such overloaded operators would then look like this:
    -							</p>
    -							
    -</html><scala><![CDATA[select (
    -  T_BOOK.ID * T_BOOK.AUTHOR_ID,
    -  T_BOOK.ID + T_BOOK.AUTHOR_ID * 3 + 4,
    -  T_BOOK.TITLE || " abc" || " xy")
    -from T_BOOK
    -leftOuterJoin (
    -  select (x.ID, x.YEAR_OF_BIRTH)
    -  from x
    -  limit 1
    -  asTable x.getName()
    -)
    -on T_BOOK.AUTHOR_ID === x.ID
    -where (T_BOOK.ID <> 2)
    -or (T_BOOK.TITLE in ("O Alquimista", "Brida"))
    -fetch]]></scala><html>
    -
    -							<h3>Scala 2.10 Macros</h3>
    -							<p>
    -								This feature is still being experimented with. With Scala Macros, it might be possible to inline a true SQL dialect into the Scala syntax, backed by the jOOQ API. Stay tuned!
    -							</p>
    -						</html></content>
    -					</section>
    -				</sections>
    -			</section>
    -
    -			<section id="sql-execution">
    -				<title>SQL execution</title>
    -				<content><html>
    -					<p>
    -						In a previous section of the manual, we've seen how jOOQ can be used to <reference id="sql-building" title="build SQL"/> that can be executed with any API including JDBC or ... jOOQ. This section of the manual deals with various means of actually executing SQL with jOOQ.
    -					</p>
    -					
    -					<h3>SQL execution with JDBC</h3>
    -					<p>
    -						JDBC calls executable objects "<reference class="java.sql.Statement"/>". It distinguishes between three types of statements:
    -					</p>
    -					<ul>
    -						<li><reference class="java.sql.Statement"/>, or "static statement": This statement type is used for any arbitrary type of SQL statement. It is particularly useful with <reference id="inlined-parameters" title="inlined parameters"/></li>
    -						<li><reference class="java.sql.PreparedStatement"/>: This statement type is used for any arbitrary type of SQL statement. It is particularly useful with <reference id="indexed-parameters" title="indexed parameters"/> (note that JDBC does not support <reference id="named-parameters" title="named parameters"/>)</li>
    -						<li><reference class="java.sql.CallableStatement"/>: This statement type is used for SQL statements that are "called" rather than "executed". In particular, this includes calls to <reference id="stored-procedures" title="stored procedures"/>. Callable statements can register OUT parameters</li>
    -					</ul>
    -					<p>
    -						Today, the JDBC API may look weird to users being used to object-oriented design. While statements hide a lot of SQL dialect-specific implementation details quite well, they assume a lot of knowledge about the internal state of a statement. For instance, you can use the <reference class="java.sql.PreparedStatement" anchor="#addBatch()" title="PreparedStatement.addBatch()"/> method, to add a the prepared statement being created to an "internal list" of batch statements. Instead of returning a new type, this method forces user to reflect on the prepared statement's internal state or "mode".
    -					</p>
    -					
    -					<h3>jOOQ is wrapping JDBC</h3>
    -					<p>						
    -						These things are abstracted away by jOOQ, which exposes such concepts in a more object-oriented way. For more details about jOOQ's batch query execution, see the manual's section about <reference id="batch-execution" title="batch execution"/>.
    -					</p> 
    -					<p>
    -						The following sections of this manual will show how jOOQ is wrapping JDBC for SQL execution
    -					</p>
    -				</html></content>
    -
    -				<sections>
    -					<section id="comparison-with-jdbc">
    -						<title>Comparison between jOOQ and JDBC</title>
    -						<content><html>
    -							<h3>Similarities with JDBC</h3>
    -							<p>
    -								Even if there are <reference id="query-vs-resultquery" title="two general types of Query"/>, there are a lot of similarities between JDBC and jOOQ. Just to name a few:
    -							</p>
    -							<ul>
    -								<li>Both APIs return the number of affected records in non-result queries. JDBC: <reference class="java.sql.Statement" anchor="#executeUpdate(java.lang.String)" title="Statement.executeUpdate()"/>, jOOQ: <reference class="org.jooq.Query" anchor="#execute()" title="Query.execute()"/></li>
    -								<li>Both APIs return a scrollable result set type from result queries. JDBC: <reference class="java.sql.ResultSet"/>, jOOQ: <reference class="org.jooq.Result"/></li>
    -							</ul>
    -							
    -							<h3>Differences to JDBC</h3>
    -							<p>
    -								Some of the most important differences between JDBC and jOOQ are listed here:
    -							</p>
    -							<ul>
    -								<li><reference id="query-vs-resultquery" title="Query vs. ResultQuery"/>: JDBC does not formally distinguish between queries that can return results, and queries that cannot. The same API is used for both. This greatly reduces the possibility for <reference id="fetching" title="fetching convenience methods"/></li>
    -								<li><reference id="exception-handling" title="Exception handling"/>: While SQL uses the checked <reference class="java.sql.SQLException"/>, jOOQ wraps all exceptions in an unchecked <reference class="org.jooq.exception.DataAccessException"/></li>
    -								<li><reference class="org.jooq.Result"/>: Unlike its JDBC counter-part, this type implements <reference class="java.util.List"/> and is fully loaded into Java memory, freeing resources as early as possible. Just like statements, this means that users don't have to deal with a "weird" internal result set state.</li>
    -								<li><reference class="org.jooq.Cursor"/>: If you want more fine-grained control over how many records are fetched into memory at once, you can still do that using jOOQ's <reference id="lazy-fetching" title="lazy fetching"/> feature</li>
    -								<li><reference id="statement-type" title="Statement type"/>: jOOQ does not formally distinguish between static statements and prepared statements. By default, all statements are prepared statements in jOOQ, internally. Executing a statement as a static statement can be done simply using a <reference id="custom-settings" title="custom settings flag"/></li>
    -								<li><reference id="reusing-statements" title="Closing Statements"/>: JDBC keeps open resources even if they are already consumed. With JDBC, there is a lot of verbosity around safely closing resources. In jOOQ, resources are closed after consumption, by default. If you want to keep them open after consumption, you have to explicitly say so.</li>
    -                                <li><reference id="jdbc-flags" title="JDBC flags"/>: JDBC execution flags and modes are not modified. They can be set fluently on a <reference id="query-vs-resultquery" title="Query"/></li>
    -							</ul>
    -						</html></content>
    -					</section>
    -				    
    -				    <section id="query-vs-resultquery">
    -						<title>Query vs. ResultQuery</title>
    -						<content><html>
    -							<p>
    -								Unlike JDBC, jOOQ has a lot of knowledge about a SQL query's structure and internals (see the manual's section about <reference id="sql-building" title="SQL building"/>). Hence, jOOQ distinguishes between these two fundamental types of queries. While every <reference class="org.jooq.Query"/> can be executed, only <reference class="org.jooq.ResultQuery"/> can return results (see the manual's section about <reference id="fetching" title="fetching"/> to learn more about fetching results). With plain SQL, the distinction can be made clear most easily:
    -							</p>
    -							
    -</html><java><![CDATA[// Create a Query object and execute it:
    -Query query = create.query("DELETE FROM BOOK");
    -query.execute();
    -
    -// Create a ResultQuery object and execute it, fetching results:
    -ResultQuery<Record> resultQuery = create.resultQuery("SELECT * FROM BOOK");
    -Result<Record> resultQuery.fetch();]]></java></content>
    -					</section>
    -
    -				    <section id="fetching">
    -						<title>Fetching</title>
    -						<content><html>
    -							<p>
    -								Fetching is something that has been completely neglegted by JDBC and also by various other database abstraction libraries. Fetching is much more than just looping or listing records or mapped objects. There are so many ways you may want to fetch data from a database, it should be considered a first-class feature of any database abstraction API. Just to name a few, here are some of jOOQ's fetching modes:
    -							</p>
    -							<ul>
    -								<li><reference id="record-vs-tablerecord" title="Untyped vs. typed fetching"/>: Sometimes you care about the returned type of your records, sometimes (with arbitrary projections) you don't.</li>
    -								<li><reference id="arrays-maps-and-lists" title="Fetching arrays, maps, or lists"/>: Instead of letting you transform your result sets into any more suitable data type, a library should do that work for you.</li>
    -								<li><reference id="recordhandler" title="Fetching through handler callbacks"/>: This is an entirely different fetching paradigm. With Java 8's lambda expressions, this will become even more powerful.</li>
    -								<li><reference id="recordmapper" title="Fetching through mapper callbacks"/>: This is an entirely different fetching paradigm. With Java 8's lambda expressions, this will become even more powerful.</li>
    -								<li><reference id="pojos" title="Fetching custom POJOs"/>: This is what made Hibernate and JPA so strong. Automatic mapping of tables to custom POJOs.</li>
    -								<li><reference id="lazy-fetching" title="Lazy vs. eager fetching"/>: It should be easy to distinguish these two fetch modes.</li>
    -								<li><reference id="many-fetching" title="Fetching many results"/>: Some databases allow for returning many result sets from a single query. JDBC can handle this but it's very verbose. A list of results should be returned instead.</li>
    -								<li><reference id="later-fetching" title="Fetching data asynchronously"/>: Some queries take too long to execute to wait for their results. You should be able to spawn query execution in a separate process.</li>
    -							</ul>
    -							
    -							<h3>Convenience and how ResultQuery, Result, and Record share API</h3>
    -							<p>
    -								The term "fetch" is always reused in jOOQ when you can fetch data from the database. An <reference class="org.jooq.ResultQuery"/> provides many overloaded means of fetching data:
    -							</p>
    -							
    -							<h3>Various modes of fetching</h3>
    -							<p>
    -								These modes of fetching are also documented in subsequent sections of the manual
    -							</p>
    -							
    -</html><java><![CDATA[// The "standard" fetch
    -Result<R> fetch();    
    -
    -// The "standard" fetch when you know your query returns only one record
    -R fetchOne();
    -
    -// The "standard" fetch when you only want to fetch the first record
    -R fetchAny();
    -
    -// Create a "lazy" Cursor, that keeps an open underlying JDBC ResultSet
    -Cursor<R> fetchLazy();
    -Cursor<R> fetchLazy(int fetchSize);
    -
    -// Create a java.util.concurrent.Future, to handle asynchronous execution of the ResultQuery
    -FutureResult<R> fetchLater();
    -FutureResult<R> fetchLater(ExecutorService executor);
    -
    -// Fetch several results at once
    -List<Result<Record>> fetchMany();
    -
    -// Fetch records into a custom callback
    -<H extends RecordHandler<R>> H fetchInto(H handler);
    -
    -// Map records using a custom callback
    -<E> List<E> fetch(RecordMapper<? super R, E> mapper);
    -
    -// Execute a ResultQuery with jOOQ, but return a JDBC ResultSet, not a jOOQ object
    -ResultSet fetchResultSet();]]></java><html>
    -							
    -							<h3>Fetch convenience</h3>
    -							<p>
    -								These means of fetching are also available from <reference class="org.jooq.Result"/> and <reference class="org.jooq.Record"/> APIs
    -							</p>
    -
    -</html><java><![CDATA[// These methods are convenience for fetching only a single field, 
    -// possibly converting results to another type
    -<T>    List<T> fetch(Field<T> field);
    -<T>    List<T> fetch(Field<?> field, Class<? extends T> type);
    -<T, U> List<U> fetch(Field<T> field, Converter<? super T, U> converter);
    -       List<?> fetch(int fieldIndex);
    -<T>    List<T> fetch(int fieldIndex, Class<? extends T> type);
    -<U>    List<U> fetch(int fieldIndex, Converter<?, U> converter);
    -       List<?> fetch(String fieldName);
    -<T>    List<T> fetch(String fieldName, Class<? extends T> type);
    -<U>    List<U> fetch(String fieldName, Converter<?, U> converter);
    -
    -// These methods are convenience for fetching only a single field, possibly converting results to another type
    -// Instead of returning lists, these return arrays
    -<T>    T[]      fetchArray(Field<T> field);
    -<T>    T[]      fetchArray(Field<?> field, Class<? extends T> type);
    -<T, U> U[]      fetchArray(Field<T> field, Converter<? super T, U> converter);
    -       Object[] fetchArray(int fieldIndex);
    -<T>    T[]      fetchArray(int fieldIndex, Class<? extends T> type);
    -<U>    U[]      fetchArray(int fieldIndex, Converter<?, U> converter);
    -       Object[] fetchArray(String fieldName);
    -<T>    T[]      fetchArray(String fieldName, Class<? extends T> type);
    -<U>    U[]      fetchArray(String fieldName, Converter<?, U> converter);
    -
    -// These methods are convenience for fetching only a single field from a single record, 
    -// possibly converting results to another type
    -<T>    T      fetchOne(Field<T> field);
    -<T>    T      fetchOne(Field<?> field, Class<? extends T> type);
    -<T, U> U      fetchOne(Field<T> field, Converter<? super T, U> converter);
    -       Object fetchOne(int fieldIndex);
    -<T>    T      fetchOne(int fieldIndex, Class<? extends T> type);
    -<U>    U      fetchOne(int fieldIndex, Converter<?, U> converter);
    -       Object fetchOne(String fieldName);
    -<T>    T      fetchOne(String fieldName, Class<? extends T> type);
    -<U>    U      fetchOne(String fieldName, Converter<?, U> converter);]]></java><html>
    -
    -							<h3>Fetch transformations</h3>
    -							<p>
    -								These means of fetching are also available from <reference class="org.jooq.Result"/> and <reference class="org.jooq.Record"/> APIs
    -							</p>
    -							
    -</html><java><![CDATA[// Transform your Records into arrays, Results into matrices
    -       Object[][] fetchArrays();
    -       Object[]   fetchOneArray();
    -       
    -// Reduce your Result object into maps
    -<K>    Map<K, R>      fetchMap(Field<K> key);
    -<K, V> Map<K, V>      fetchMap(Field<K> key, Field<V> value);
    -<K, E> Map<K, E>      fetchMap(Field<K> key, Class<E> value);
    -       Map<Record, R> fetchMap(Field<?>[] key);
    -<E>    Map<Record, E> fetchMap(Field<?>[] key, Class<E> value);       
    -
    -// Transform your Result object into maps
    -       List<Map<String, Object>> fetchMaps();
    -       Map<String, Object>       fetchOneMap();
    -
    -// Transform your Result object into groups
    -<K>    Map<K, Result<R>>      fetchGroups(Field<K> key);
    -<K, V> Map<K, List<V>>        fetchGroups(Field<K> key, Field<V> value);
    -<K, E> Map<K, List<E>>        fetchGroups(Field<K> key, Class<E> value);
    -       Map<Record, Result<R>> fetchGroups(Field<?>[] key);
    -<E>    Map<Record, List<E>>   fetchGroups(Field<?>[] key, Class<E> value);
    -
    -// Transform your Records into custom POJOs
    -<E>    List<E> fetchInto(Class<? extends E> type);
    -
    -// Transform your records into another table type
    -<Z extends Record> Result<Z> fetchInto(Table<Z> table);]]></java><html>
    -
    -							<p>
    -								Note, that apart from the <reference class="org.jooq.ResultQuery" anchor="#fetchLazy()" title="fetchLazy()"/> methods, all fetch() methods will immediately close underlying JDBC result sets.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="record-vs-tablerecord">
    -								<title>Record vs. TableRecord</title>
    -								<content><html>
    -									<p>
    -										jOOQ understands that SQL is much more expressive than Java, when it comes to the declarative typing of <reference id="table-expressions" title="table expressions"/>. As a declarative language, SQL allows for creating ad-hoc row value expressions (records with indexed columns, or tuples) and records (records with named columns). In Java, this is not possible to the same extent. Yet, still, sometimes you wish to use strongly typed records, when you know that you're selecting only from a single table
    -									</p>
    -									
    -									<h3>Fetching strongly or weakly typed records</h3>
    -									<p>
    -										When fetching data only from a single table, the <reference id="table-expressions" title="table expression's"/> type is known to jOOQ if you use jOOQ's <reference id="code-generation" title="code generator"/> to generate <reference id="codegen-records" title="TableRecords"/> for your database tables. In order to fetch such strongly typed records, you will have to use the <reference id="select-statement" title="simple select API"/>:
    -									</p>
    -
    -</html><java><![CDATA[// Use the selectFrom() method:
    -BookRecord book = create.selectFrom(BOOK).where(BOOK.ID.equal(1)).fetchOne();
    -
    -// Typesafe field access is now possible:
    -System.out.println("Title       : " + book.getTitle());
    -System.out.println("Published in: " + book.getPublishedIn());]]></java><html>
    -									
    -									<p>
    -										When you use the <reference class="org.jooq.DSLContext" anchor="#selectFrom(org.jooq.Table)" title="DSLContext.selectFrom()"/> method, jOOQ will return the record type supplied with the argument table. Beware though, that you will no longer be able to use any clause that modifies the type of your <reference id="table-expressions" title="table expression"/>. This includes: 
    -									</p>
    -									<ul>
    -                   						<li><reference id="select-clause" title="The SELECT clause"/></li>
    -                   						<li><reference id="join-clause" title="The JOIN clause"/></li>
    -                   					</ul>		
    -								</html></content>
    -							</section>
    -
    -							<section id="record-n">
    -								<title>Record1 to Record{max-row-degree}</title>
    -								<content><html>
    -									<p>
    -										jOOQ's <reference id="row-value-expressions" title="row value expression (or tuple)"/> support has been explained earlier in this manual. It is useful for constructing row value expressions where they can be used in SQL. The same typesafety is also applied to records for degrees up to {max-row-degree}. To express this fact, <reference class="org.jooq.Record"/> is extended by <reference class="org.jooq.Record1"/> to <reference class="org.jooq.Record{max-row-degree}"/>. Apart from the fact that these extensions of the R type can be used throughout the <reference id="dsl-and-non-dsl" title="jOOQ DSL"/>, they also provide a useful API. Here is <reference class="org.jooq.Record2"/>, for instance: 
    -									</p>
    -
    -</html><java><![CDATA[public interface Record2<T1, T2> extends Record {
    -
    -    // Access fields and values as row value expressions
    -    Row2<T1, T2> fieldsRow();
    -    Row2<T1, T2> valuesRow();
    -
    -    // Access fields by index
    -    Field<T1> field1();
    -    Field<T2> field2();
    -
    -    // Access values by index
    -    T1 value1();
    -    T2 value2();
    -}]]></java><html>
    -
    -									<h3>Higher-degree records</h3>
    -									<p>
    -										jOOQ chose to explicitly support degrees up to {max-row-degree} to match Scala's typesafe tuple, function and product support. Unlike Scala, however, jOOQ also supports higher degrees without the additional typesafety. 
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="arrays-maps-and-lists">
    -								<title>Arrays, Maps and Lists</title>
    -								<content><html>
    -									<p>
    -										By default, jOOQ returns an <reference class="org.jooq.Result"/> object, which is essentially a <reference class="java.util.List"/> of <reference class="org.jooq.Record"/>. Often, you will find yourself wanting to transform this result object into a type that corresponds more to your specific needs. Or you just want to list all values of one specific column. Here are some examples to illustrate those use cases:
    -									</p>
    -									
    -</html><java><![CDATA[// Fetching only book titles (the two calls are equivalent):
    -List<String> titles1 = create.select().from(BOOK).fetch().getValues(BOOK.TITLE);
    -List<String> titles2 = create.select().from(BOOK).fetch(BOOK.TITLE);
    -String[]     titles3 = create.select().from(BOOK).fetchArray(BOOK.TITLE);
    -
    -// Fetching only book IDs, converted to Long
    -List<Long> ids1 = create.select().from(BOOK).fetch().getValues(BOOK.ID, Long.class);
    -List<Long> ids2 = create.select().from(BOOK).fetch(BOOK.ID, Long.class);
    -Long[]     ids3 = create.select().from(BOOK).fetchArray(BOOK.ID, Long.class);
    -
    -// Fetching book IDs and mapping each ID to their records or titles
    -Map<Integer, BookRecord> map1 = create.selectFrom(BOOK).fetch().intoMap(BOOK.ID);
    -Map<Integer, BookRecord> map2 = create.selectFrom(BOOK).fetchMap(BOOK.ID);
    -Map<Integer, String>     map3 = create.selectFrom(BOOK).fetch().intoMap(BOOK.ID, BOOK.TITLE);
    -Map<Integer, String>     map4 = create.selectFrom(BOOK).fetchMap(BOOK.ID, BOOK.TITLE);
    -
    -// Group by AUTHOR_ID and list all books written by any author:       
    -Map<Integer, Result<BookRecord>> group1 = create.selectFrom(BOOK).fetch().intoGroups(BOOK.AUTHOR_ID);
    -Map<Integer, Result<BookRecord>> group2 = create.selectFrom(BOOK).fetchGroups(BOOK.AUTHOR_ID);
    -Map<Integer, List<String>>       group3 = create.selectFrom(BOOK).fetch().intoGroups(BOOK.AUTHOR_ID, BOOK.TITLE);
    -Map<Integer, List<String>>       group4 = create.selectFrom(BOOK).fetchGroups(BOOK.AUTHOR_ID, BOOK.TITLE);]]></java><html>									
    -
    -									<p>
    -										Note that most of these convenience methods are available both through <reference class="org.jooq.ResultQuery"/> and <reference class="org.jooq.Result"/>, some are even available through <reference class="org.jooq.Record"/> as well.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="recordhandler">
    -								<title>RecordHandler</title>
    -								<content><html>
    -									<p>
    -										In a more functional operating mode, you might want to write callbacks that receive records from your select statement results in order to do some processing. This is a common data access pattern in Spring's JdbcTemplate, and it is also available in jOOQ. With jOOQ, you can implement your own <reference class="org.jooq.RecordHandler"/> classes and plug them into jOOQ's <reference class="org.jooq.ResultQuery"/>:
    -									</p>
    -									
    -</html><java><![CDATA[// Write callbacks to receive records from select statements
    -create.selectFrom(BOOK)
    -      .orderBy(BOOK.ID)
    -      .fetch()
    -      .into(new RecordHandler<BookRecord>() {
    -          @Override
    -          public void next(BookRecord book) {
    -              Util.doThingsWithBook(book);
    -          }
    -      });
    -      
    -// Or more concisely
    -create.selectFrom(BOOK)
    -      .orderBy(BOOK.ID)
    -      .fetchInto(new RecordHandler<BookRecord>() {...});
    -      
    -// Or even more concisely with Java 8's lambda expressions:
    -create.selectFrom(BOOK)
    -      .orderBy(BOOK.ID)
    -      .fetchInto(book -> { Util.doThingsWithBook(book); }; );
    -]]></java><html>
    -
    -									<p>
    -										See also the manual's section about the <reference id="recordmapper" title="RecordMapper"/>, which provides similar features
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="recordmapper">
    -								<title>RecordMapper</title>
    -								<content><html>
    -									<p>
    -										In a more functional operating mode, you might want to write callbacks that map records from your select statement results in order to do some processing. This is a common data access pattern in Spring's JdbcTemplate, and it is also available in jOOQ. With jOOQ, you can implement your own <reference class="org.jooq.RecordMapper"/> classes and plug them into jOOQ's <reference class="org.jooq.ResultQuery"/>:
    -									</p>
    -									
    -</html><java><![CDATA[// Write callbacks to receive records from select statements
    -List<Integer> ids =
    -create.selectFrom(BOOK)
    -      .orderBy(BOOK.ID)
    -      .fetch()
    -      .map(new RecordMapper<BookRecord, Integer>() {
    -          @Override
    -          public Integer map(BookRecord book) {
    -              return book.getId();
    -          }
    -      });
    -      
    -// Or more concisely
    -create.selectFrom(BOOK)
    -      .orderBy(BOOK.ID)
    -      .fetch(new RecordMapper<BookRecord, Integer>() {...});
    -      
    -// Or even more concisely with Java 8's lambda expressions:
    -create.selectFrom(BOOK)
    -      .orderBy(BOOK.ID)
    -      .fetch(book -> book.getId());
    -]]></java><html>
    -
    -                                    <p>
    -                                        Your custom <code>RecordMapper</code> types can be used automatically through jOOQ's <reference id="pojos" title="POJO mapping APIs"/>, by injecting a <reference id="pojos-with-recordmapper-provider" title="RecordMapperProvider"/> into your <reference id="dsl-context" title="Configuration"/>. 
    -                                    </p>
    -
    -									<p>
    -										See also the manual's section about the <reference id="recordhandler" title="RecordHandler"/>, which provides similar features
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="pojos">
    -								<title>POJOs</title>
    -								<content><html>
    -									<p>
    -										Fetching data in records is fine as long as your application is not really layered, or as long as you're still writing code in the DAO layer. But if you have a more advanced application architecture, you may not want to allow for jOOQ artefacts to leak into other layers. You may choose to write POJOs (Plain Old Java Objects) as your primary DTOs (Data Transfer Objects), without any dependencies on jOOQ's <reference class="org.jooq.Record"/> types, which may even potentially hold a reference to a <reference id="dsl-context" title="Configuration"/>, and thus a JDBC <reference class="java.sql.Connection"/>. Like Hibernate/JPA, jOOQ allows you to operate with POJOs. Unlike Hibernate/JPA, jOOQ does not "attach" those POJOs or create proxies with any magic in them.
    -									</p>
    -									<p>
    -										If you're using jOOQ's <reference id="code-generation" title="code generator"/>, you can configure it to <reference id="codegen-pojos" title="generate POJOs"/> for you, but you're not required to use those generated POJOs. You can use your own. See the manual's section about <reference id="pojos-with-recordmapper-provider" title="POJOs with custom RecordMappers"/> to see how to modify jOOQ's standard POJO mapping behaviour.
    -									</p>
    -									
    -									<h3>Using JPA-annotated POJOs</h3>									
    -									<p>
    -										jOOQ tries to find JPA annotations on your POJO types. If it finds any, they are used as the primary source for mapping meta-information. Only the <reference class="javax.persistence.Column"/> annotation is used and understood by jOOQ. An example:
    -									</p>
    -
    -</html><java><![CDATA[// A JPA-annotated POJO class
    -public class MyBook {
    -  @Column(name = "ID")
    -  public int myId;
    -  
    -  @Column(name = "TITLE")
    -  public String myTitle;
    -}
    -
    -// The various "into()" methods allow for fetching records into your custom POJOs:
    -MyBook myBook        = create.select().from(BOOK).fetchAny().into(MyBook.class); 
    -List<MyBook> myBooks = create.select().from(BOOK).fetch().into(MyBook.class);
    -List<MyBook> myBooks = create.select().from(BOOK).fetchInto(MyBook.class);]]></java><html>									
    -									
    -									<p>
    -										Just as with any other JPA implementation, you can put the <reference class="javax.persistence.Column"/> annotation on any class member, including attributes, setters and getters. Please refer to the <reference class="org.jooq.Record" anchor="#into(java.lang.Class)" title="Record.into()"/> Javadoc for more details.
    -									</p>
    -									
    -									<h3>Using simple POJOs</h3>
    -									<p>
    -										If jOOQ does not find any JPA-annotations, columns are mapped to the "best-matching" constructor, attribute or setter. An example illustrates this:
    -									</p>
    -									
    -</html><java><![CDATA[// A "mutable" POJO class
    -public class MyBook1 {
    -  public int id;
    -  public String title;
    -}
    -
    -// The various "into()" methods allow for fetching records into your custom POJOs:
    -MyBook1 myBook        = create.select().from(BOOK).fetchAny().into(MyBook1.class); 
    -List<MyBook1> myBooks = create.select().from(BOOK).fetch().into(MyBook1.class);
    -List<MyBook1> myBooks = create.select().from(BOOK).fetchInto(MyBook1.class);]]></java><html>	
    -
    -									<p>
    -										Please refer to the <reference class="org.jooq.Record" anchor="#into(java.lang.Class)" title="Record.into()"/> Javadoc for more details.
    -									</p>
    -									
    -									<h3>Using "immutable" POJOs</h3>
    -									<p>
    -										If jOOQ does not find any default constructor, columns are mapped to the "best-matching" constructor. This allows for using "immutable" POJOs with jOOQ. An example illustrates this:
    -									</p>
    -									
    -</html><java><![CDATA[// An "immutable" POJO class
    -public class MyBook2 {
    -  public final int id;
    -  public final String title;
    -  
    -  public MyBook2(int id, String title) {
    -    this.id = id;
    -    this.title = title;
    -  }
    -}
    -
    -// With "immutable" POJO classes, there must be an exact match between projected fields and available constructors:
    -MyBook2 myBook        = create.select(BOOK.ID, BOOK.TITLE).from(BOOK).fetchAny().into(MyBook2.class); 
    -List<MyBook2> myBooks = create.select(BOOK.ID, BOOK.TITLE).from(BOOK).fetch().into(MyBook2.class);
    -List<MyBook2> myBooks = create.select(BOOK.ID, BOOK.TITLE).from(BOOK).fetchInto(MyBook2.class);
    -
    -// An "immutable" POJO class with a java.beans.ConstructorProperties annotation
    -public class MyBook3 {
    -  public final String title;
    -  public final int id;
    -  
    -  @ConstructorProperties({ "title", "id"})
    -  public MyBook2(String title, int id) {
    -    this.title = title;
    -    this.id = id;
    -  }
    -}
    -
    -// With annotated "immutable" POJO classes, there doesn't need to be an exact match between fields and constructor arguments.
    -// In the below cases, only BOOK.ID is really set onto the POJO, BOOK.TITLE remains null and BOOK.AUTHOR_ID is ignored
    -MyBook3 myBook        = create.select(BOOK.ID, BOOK.AUTHOR_ID).from(BOOK).fetchAny().into(MyBook3.class); 
    -List<MyBook3> myBooks = create.select(BOOK.ID, BOOK.AUTHOR_ID).from(BOOK).fetch().into(MyBook3.class);
    -List<MyBook3> myBooks = create.select(BOOK.ID, BOOK.AUTHOR_ID).from(BOOK).fetchInto(MyBook3.class);
    -]]></java><html>	
    -									
    -									<p>
    -										Please refer to the <reference class="org.jooq.Record" anchor="#into(java.lang.Class)" title="Record.into()"/> Javadoc for more details.
    -									</p>
    -
    -									<h3>Using proxyable types</h3>
    -									<p>
    -										jOOQ also allows for fetching data into abstract classes or interfaces, or in other words, "proxyable" types. This means that jOOQ will return a <reference class="java.util.HashMap"/> wrapped in a <reference class="java.lang.reflect.Proxy"/> implementing your custom type. An example of this is given here:
    -									</p>
    -									
    -</html><java><![CDATA[// A "proxyable" type
    -public interface MyBook3 {
    -  int getId(); 
    -  void setId(int id);
    -  
    -  String getTitle();
    -  void setTitle(String title);
    -}
    -
    -// The various "into()" methods allow for fetching records into your custom POJOs:
    -MyBook3 myBook        = create.select(BOOK.ID, BOOK.TITLE).from(BOOK).fetchAny().into(MyBook3.class); 
    -List<MyBook3> myBooks = create.select(BOOK.ID, BOOK.TITLE).from(BOOK).fetch().into(MyBook3.class);
    -List<MyBook3> myBooks = create.select(BOOK.ID, BOOK.TITLE).from(BOOK).fetchInto(MyBook3.class);]]></java><html>									
    -
    -									<p>
    -										Please refer to the <reference class="org.jooq.Record" anchor="#into(java.lang.Class)" title="Record.into()"/> Javadoc for more details.
    -									</p>
    -
    -									<h3>Loading POJOs back into Records to store them</h3>
    -									<p>
    -										The above examples show how to fetch data into your own custom POJOs / DTOs. When you have modified the data contained in POJOs, you probably want to store those modifications back to the database. An example of this is given here:
    -									</p>
    -
    -</html><java><![CDATA[// A "mutable" POJO class
    -public class MyBook {
    -  public int id;
    -  public String title;
    -}
    -
    -// Create a new POJO instance
    -MyBook myBook = new MyBook();
    -myBook.id = 10;
    -myBook.title = "Animal Farm";
    -
    -// Load a jOOQ-generated BookRecord from your POJO
    -BookRecord book = create.newRecord(BOOK, myBook); 
    -
    -// Insert it (implicitly)
    -book.store();
    -
    -// Insert it (explicitly)
    -create.executeInsert(book);
    -
    -// or update it (ID = 10)
    -create.executeUpdate(book);]]></java><html>
    -							
    -									<p>
    -										Note: Because of your manual setting of ID = 10, jOOQ's store() method will asume that you want to insert a new record. See the manual's section about <reference id="crud-with-updatablerecords" title="CRUD with UpdatableRecords"/> for more details on this.
    -									</p>
    -											
    -									<h3>Interaction with DAOs</h3>
    -									<p>
    -										If you're using jOOQ's <reference id="code-generation" title="code generator"/>, you can configure it to <reference id="codegen-daos" title="generate DAOs"/> for you. Those DAOs operate on <reference id="codegen-pojos" title="generated POJOs"/>. An example of using such a DAO is given here:
    -									</p>
    -
    -</html><java><![CDATA[// Initialise a Configuration
    -Configuration configuration = new DefaultConfiguration().set(connection).set(SQLDialect.ORACLE);
    -
    -// Initialise the DAO with the Configuration
    -BookDao bookDao = new BookDao(configuration);
    -
    -// Start using the DAO
    -Book book = bookDao.findById(5);
    -
    -// Modify and update the POJO
    -book.setTitle("1984");
    -book.setPublishedIn(1948);
    -bookDao.update(book);
    -
    -// Delete it again
    -bookDao.delete(book);]]></java><html>
    -									
    -									<h3>More complex data structures</h3>
    -									<p>
    -										jOOQ currently doesn't support more complex data structures, the way Hibernate/JPA attempt to map relational data onto POJOs. While future developments in this direction are not excluded, jOOQ claims that generic mapping strategies lead to an enormous additional complexity that only serves very few use cases. You are likely to find a solution using any of jOOQ's various <reference id="fetching" title="fetching modes"/>, with only little boiler-plate code on the client side.
    -									</p>
    -								</html></content>
    -							</section>
    -                            
    -                            <section id="pojos-with-recordmapper-provider">
    -                                <title>POJOs with RecordMappers</title>
    -                                <content><html>
    -                                    <p>
    -                                        In the previous sections we have seen how to create <reference id="recordmapper" title="RecordMapper"/> types to map jOOQ records onto arbitrary objects. We have also seen how jOOQ provides default algorithms to map jOOQ records onto <reference id="pojos" title="POJOs"/>. Your own custom domain model might be much more complex, but you want to avoid looking up the most appropriate <code>RecordMapper</code> every time you need one. For this, you can provide jOOQ's <reference id="dsl-context" title="Configuration"/> with your own implementation of the <reference class="org.jooq.RecordMapperProvider"/> interface. An example is given here:
    -                                    </p>
    -                                    
    -</html><java><![CDATA[DSL.using(new DefaultConfiguration()
    -   .set(connection)
    -   .set(SQLDialect.ORACLE)
    -   .set(
    -       new RecordMapperProvider() {
    -           @Override
    -           public <R extends Record, E> RecordMapper<R, E> provide(RecordType<R> recordType, Class<? extends E> type) {
    -
    -               // UUID mappers will always try to find the ID column
    -               if (type == UUID.class) {
    -                   return new RecordMapper<R, E>() {
    -                       @Override
    -                       public E map(R record) {
    -                           return (E) record.getValue("ID");
    -                       }
    -                   }
    -               }
    -               
    -               // Books might be joined with their authors, create a 1:1 mapping
    -               if (type == Book.class) {
    -                   return new BookMapper();
    -               }
    -
    -               // Fall back to jOOQ's DefaultRecordMapper, which maps records onto
    -               // POJOs using reflection.
    -               return new DefaultRecordMapper(recordType, type);     
    -           }
    -       }
    -   ))
    -   .selectFrom(BOOK)
    -   .orderBy(BOOK.ID)
    -   .fetchInto(UUID.class);]]></java><html>
    -
    -                                    <p>
    -                                        The above is a very simple example showing that you will have complete flexibility in how to override jOOQ's record to POJO mapping mechanisms.
    -                                    </p>
    -                                    
    -                                    <p>
    -                                        If you're looking into a generic, third-party mapping utility, have a look at <a href="http://modelmapper.org">ModelMapper</a>, or <a href="http://orika-mapper.github.io/orika-docs">Orika Mapper</a>, which can both be easily integrated with jOOQ.
    -                                    </p>
    -                                </html></content>
    -                            </section>
    -
    -							<section id="lazy-fetching">
    -								<title>Lazy fetching</title>
    -								<content><html>
    -									<p>
    -										Unlike JDBC's <reference class="java.sql.ResultSet"/>, jOOQ's <reference class="org.jooq.Result"/> does not represent an open database cursor with various fetch modes and scroll modes, that needs to be closed after usage. jOOQ's results are simple in-memory Java <reference class="java.util.List"/> objects, containing all of the result values. If your result sets are large, or if you have a lot of network latency, you may wish to fetch records one-by-one, or in small chunks. jOOQ supports a <reference class="org.jooq.Cursor"/> type for that purpose. In order to obtain such a reference, use the <reference class="org.jooq.ResultQuery" anchor="#fetchLazy()" title="ResultQuery.fetchLazy()"/> method. An example is given here:
    -									</p>
    -									
    -</html><java><![CDATA[// Obtain a Cursor reference:
    -Cursor<BookRecord> cursor = null;
    -
    -try {
    -    cursor = create.selectFrom(BOOK).fetchLazy();
    -
    -    // Cursor has similar methods as Iterator<R>
    -    while (cursor.hasNext()) {
    -        BookRecord book = cursor.fetchOne();
    -        
    -        Util.doThingsWithBook(book);
    -    }
    -}
    -
    -// Close the cursor and the cursor's underlying JDBC ResultSet
    -finally {
    -    if (cursor != null) {
    -        cursor.close();
    -    }
    -}]]></java><html>
    -
    -									<p>
    -										As a <reference class="org.jooq.Cursor"/> holds an internal reference to an open <reference class="java.sql.ResultSet"/>, it may need to be closed at the end of iteration. If a cursor is completely scrolled through, it will conveniently close the underlying ResultSet. However, you should not rely on that.
    -									</p>
    -									
    -									<h3>Cursors ship with all the other fetch features</h3>
    -									<p>
    -										Like <reference class="org.jooq.ResultQuery"/> or <reference class="org.jooq.Result"/>, <reference class="org.jooq.Cursor"/> gives access to all of the other fetch features that we've seen so far, i.e.
    -									</p>
    -									<ul>
    -										<li><reference id="record-vs-tablerecord" title="Strongly or weakly typed records"/>: Cursors are also typed with the &lt;R&gt; type, allowing to fetch custom, generated <reference class="org.jooq.TableRecord"/> or plain <reference class="org.jooq.Record"/> types.</li>
    -										<li><reference id="recordhandler" title="RecordHandler callbacks"/>: You can use your own <reference class="org.jooq.RecordHandler"/> callbacks to receive lazily fetched records.</li>
    -										<li><reference id="recordmapper" title="RecordMapper callbacks"/>: You can use your own <reference class="org.jooq.RecordMapper"/> callbacks to map lazily fetched records.</li>
    -										<li><reference id="pojos" title="POJOs"/>: You can fetch data into your own custom POJO types.</li>
    -									</ul>
    -								</html></content>
    -							</section>
    -
    -							<section id="many-fetching">
    -								<title>Many fetching</title>
    -								<content><html>
    -									<p>
    -										Many databases support returning several result sets, or cursors, from single queries. An example for this is Sybase ASE's sp_help command:
    -									</p>
    -</html><text><![CDATA[> sp_help 'author'
    -
    -+--------+-----+-----------+-------------+-------------------+
    -|Name    |Owner|Object_type|Object_status|Create_date        |
    -+--------+-----+-----------+-------------+-------------------+
    -|  author|dbo  |user table | -- none --  |Sep 22 2011 11:20PM|
    -+--------+-----+-----------+-------------+-------------------+
    -
    -+-------------+-------+------+----+-----+-----+
    -|Column_name  |Type   |Length|Prec|Scale|...  |
    -+-------------+-------+------+----+-----+-----+
    -|id           |int    |     4|NULL| NULL|    0|
    -|first_name   |varchar|    50|NULL| NULL|    1|
    -|last_name    |varchar|    50|NULL| NULL|    0|
    -|date_of_birth|date   |     4|NULL| NULL|    1|
    -|year_of_birth|int    |     4|NULL| NULL|    1|
    -+-------------+-------+------+----+-----+-----+]]></text><html>
    -
    -
    -									<p>
    -										The correct (and verbose) way to do this with JDBC is as follows:
    -									</p>
    -									
    -</html><java><![CDATA[ResultSet rs = statement.executeQuery();
    -
    -// Repeat until there are no more result sets
    -for (;;) {
    -
    -  // Empty the current result set
    -  while (rs.next()) {
    -    // [ .. do something with it .. ]
    -  }
    -
    -  // Get the next result set, if available
    -  if (statement.getMoreResults()) {
    -    rs = statement.getResultSet();
    -  }
    -  else {
    -    break;
    -  }
    -}
    -
    -// Be sure that all result sets are closed
    -statement.getMoreResults(Statement.CLOSE_ALL_RESULTS);
    -statement.close();]]></java><html>
    -
    -									<p>
    -										As previously discussed in the chapter about <reference id="comparison-with-jdbc" title="differences between jOOQ and JDBC"/>, jOOQ does not rely on an internal state of any JDBC object, which is "externalised" by Javadoc. Instead, it has a straight-forward API allowing you to do the above in a one-liner: 
    -									</p>
    -									
    -</html><java><![CDATA[// Get some information about the author table, its columns, keys, indexes, etc
    -List<Result<Record>> results = create.fetchMany("sp_help 'author'");]]></java><html>
    -
    -									<p>
    -										Using generics, the resulting structure is immediately clear.
    -									</p>									
    -								</html></content>
    -							</section>
    -
    -							<section id="later-fetching">
    -								<title>Later fetching</title>
    -								<content><html>
    -									<p>
    -										Some queries take very long to execute, yet they are not crucial for the continuation of the main program. For instance, you could be generating a complicated report in a Swing application, and while this report is being calculated in your database, you want to display a background progress bar, allowing the user to pursue some other work. This can be achived simply with jOOQ, by creating a <reference class="org.jooq.FutureResult"/>, a type that extends <reference class="java.util.concurrent.Future"/>. An example is given here:
    -									</p>
    -									
    -</html><java><![CDATA[// Spawn off this query in a separate process:
    -FutureResult<BookRecord> future = create.selectFrom(BOOK).where(... complex predicates ...).fetchLater();
    -
    -// This example actively waits for the result to be done
    -while (!future.isDone()) {
    -    progressBar.increment(1);
    -    Thread.sleep(50);
    -}
    -
    -// The result should be ready, now
    -Result<BookRecord> result = future.get();]]></java><html>
    -
    -									<p>
    -										Note, that instead of letting jOOQ spawn a new thread, you can also provide jOOQ with your own <reference class="java.util.concurrent.ExecutorService"/>:
    -									</p>
    -									
    -</html><java><![CDATA[// Spawn off this query in a separate process:
    -ExecutorService service = // [...]
    -FutureResult<BookRecord> future = create.selectFrom(BOOK).where(... complex predicates ...).fetchLater(service);]]></java></content>
    -							</section>
    -
    -							<section id="resultset-fetching">
    -								<title>ResultSet fetching</title>
    -								<content><html>
    -									<p>
    -										When interacting with legacy applications, you may prefer to have jOOQ return a <reference class="java.sql.ResultSet"/>, rather than jOOQ's own <reference class="org.jooq.Result"/> types. This can be done simply, in two ways:
    -									</p>
    -									
    -</html><java><![CDATA[// jOOQ's Cursor type exposes the underlying ResultSet:
    -ResultSet rs1 = create.selectFrom(BOOK).fetchLazy().resultSet();
    -
    -// But you can also directly access that ResultSet from ResultQuery:
    -ResultSet rs2 = create.selectFrom(BOOK).fetchResultSet();
    -
    -// Don't forget to close these, though!
    -rs1.close();
    -rs2.close();]]></java><html>
    -
    -									<h3>Transform jOOQ's Result into a JDBC ResultSet</h3>
    -									<p>
    -										Instead of operating on a JDBC ResultSet holding an open resource from your database, you can also let jOOQ's <reference class="org.jooq.Result"/> wrap itself in a <reference class="java.sql.ResultSet"/>. The advantage of this is that the so-created ResultSet has no open connection to the database. It is a completely in-memory ResultSet:								
    -									</p>
    -
    -</html><java><![CDATA[// Transform a jOOQ Result into a ResultSet
    -Result<BookRecord> result = create.selectFrom(BOOK).fetch();
    -ResultSet rs = result.intoResultSet();]]></java><html>
    -
    -									<h3>The inverse: Fetch data from a legacy ResultSet using jOOQ</h3>
    -									<p>
    -										The inverse of the above is possible too. Maybe, a legacy part of your application produces JDBC <reference class="java.sql.ResultSet"/>, and you want to turn them into a <reference class="org.jooq.Result"/>: 
    -									</p>
    -
    -</html><java><![CDATA[// Transform a JDBC ResultSet into a jOOQ Result
    -ResultSet rs = connection.createStatement().executeQuery("SELECT * FROM BOOK");
    -
    -// As a Result:
    -Result<Record> result = create.fetch(rs);
    -
    -// As a Cursor
    -Cursor<Record> cursor = create.fetchLazy(rs);]]></java><html>
    -
    -                                    <p>
    -                                        You can also tighten the interaction with jOOQ's data type system and <reference id="data-type-conversion" title="data type conversion"/> features, by passing the record type to the above fetch methods:
    -                                    </p>
    -                                    
    -</html><java><![CDATA[// Pass an array of types:
    -Result<Record> result = create.fetch    (rs, Integer.class, String.class);
    -Cursor<Record> result = create.fetchLazy(rs, Integer.class, String.class);
    -
    -// Pass an array of data types:
    -Result<Record> result = create.fetch    (rs, SQLDataType.INTEGER, SQLDataType.VARCHAR);
    -Cursor<Record> result = create.fetchLazy(rs, SQLDataType.INTEGER, SQLDataType.VARCHAR);
    -
    -// Pass an array of fields:
    -Result<Record> result = create.fetch    (rs, BOOK.ID, BOOK.TITLE);
    -Cursor<Record> result = create.fetchLazy(rs, BOOK.ID, BOOK.TITLE);]]></java><html>
    -
    -                                    <p>
    -                                        If supplied, the additional information is used to override the information obtained from the <reference class="java.sql.ResultSet" title="ResultSet"/>'s <reference class="java.sql.ResultSetMetaData"/> information.
    -                                    </p>                                    
    -								</html></content>
    -							</section>
    -
    -							<section id="data-type-conversion">
    -								<title>Data type conversion</title>
    -								<content><html>
    -									<p>
    -										Apart from a few extra features (<reference id="codegen-udts" title="user-defined types"/>), jOOQ only supports basic types as supported by the JDBC API. In your application, you may choose to transform these data types into your own ones, without writing too much boiler-plate code. This can be done using jOOQ's <reference class="org.jooq.Converter"/> types. A converter essentially allows for two-way conversion between two Java data types &lt;T&gt; and &lt;U&gt;. By convention, the &lt;T&gt; type corresponds to the type in your database whereas the &gt;U&gt; type corresponds to your own user type. The Converter API is given here:
    -									</p>
    -									
    -</html><java><![CDATA[public interface Converter<T, U> extends Serializable {
    -
    -    /**
    -     * Convert a database object to a user object
    -     */
    -    U from(T databaseObject);
    -
    -    /**
    -     * Convert a user object to a database object
    -     */
    -    T to(U userObject);
    -
    -    /**
    -     * The database type
    -     */
    -    Class<T> fromType();
    -
    -    /**
    -     * The user type
    -     */
    -    Class<U> toType();
    -}]]></java><html>
    -
    -									<p>
    -										Such a converter can be used in many parts of the jOOQ API. Some examples have been illustrated in the manual's section about <reference id="fetching" title="fetching"/>.
    -									</p>
    -									
    -									<h3>A Converter for GregorianCalendar</h3>
    -									<p>
    -										Here is a some more elaborate example involving a Converter for <reference class="java.util.GregorianCalendar"/>: 
    -									</p>
    -									
    -</html><java><![CDATA[// You may prefer Java Calendars over JDBC Timestamps
    -public class CalendarConverter implements Converter<Timestamp, GregorianCalendar> {
    -
    -    @Override
    -    public GregorianCalendar from(Timestamp databaseObject) {
    -        GregorianCalendar calendar = (GregorianCalendar) Calendar.getInstance();
    -        calendar.setTimeInMillis(databaseObject.getTime());
    -        return calendar;
    -    }
    -
    -    @Override
    -    public Timestamp to(GregorianCalendar userObject) {
    -        return new Timestamp(userObject.getTime().getTime());
    -    }
    -
    -    @Override
    -    public Class<Timestamp> fromType() {
    -        return Timestamp.class;
    -    }
    -
    -    @Override
    -    public Class<GregorianCalendar> toType() {
    -        return GregorianCalendar.class;
    -    }
    -}
    -
    -// Now you can fetch calendar values from jOOQ's API:
    -List<GregorianCalendar> dates1 = create.selectFrom(BOOK).fetch().getValues(BOOK.PUBLISHING_DATE, new CalendarConverter());
    -List<GregorianCalendar> dates2 = create.selectFrom(BOOK).fetch(BOOK.PUBLISHING_DATE, new CalendarConverter());
    -]]></java><html>									
    -									
    -									<h3>Enum Converters</h3>
    -									<p>
    -										jOOQ ships with a built-in default <reference class="org.jooq.impl.EnumConverter"/>, that you can use to map VARCHAR values to enum literals or NUMBER values to enum ordinals (both modes are supported). Let's say, you want to map a YES / NO / MAYBE column to a custom Enum:
    -									</p>
    -									
    -</html><java><![CDATA[// Define your Enum
    -public enum YNM {
    -    YES, NO, MAYBE
    -}
    -
    -// Define your converter
    -public class YNMConverter extends EnumConverter<String, YNM> {
    -    public YNMConverter() {
    -        super(String.class, YNM.class);
    -    }
    -}
    -
    -// And you're all set for converting records to your custom Enum:
    -for (BookRecord book : create.selectFrom(BOOK).fetch()) {
    -    switch (book.getValue(BOOK.I_LIKE, new YNMConverter())) {
    -        case YES:    System.out.println("I like this book             : " + book.getTitle()); break;
    -        case NO:     System.out.println("I didn't like this book      : " + book.getTitle()); break;
    -        case MAYBE:  System.out.println("I'm not sure about this book : " + book.getTitle()); break;
    -    }
    -}]]></java><html>
    -									
    -									<h3>Using Converters in generated source code</h3>
    -									<p>
    -										jOOQ also allows for generated source code to reference your own custom converters, in order to permanently replace a <reference id="table-columns" title="table column's"/> &lt;T&gt; type by your own, custom &lt;U&gt; type. See the manual's section about <reference id="custom-data-types" title="custom data types"/> for details.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="interning">
    -								<title>Interning data</title>
    -								<content><html>
    -									<p>
    -										SQL result tables are not optimal in terms of used memory as they are not designed to represent hierarchical data as produced by <code>JOIN</code> operations. Specifically, <code>FOREIGN KEY</code> values may repeat themselves unnecessarily:
    -									</p>
    -
    -</html><text>+----+-----------+--------------+
    -| ID | AUTHOR_ID | TITLE        |
    -+----+-----------+--------------+
    -|  1 |         1 | 1984         |
    -|  2 |         1 | Animal Farm  |
    -|  3 |         2 | O Alquimista |
    -|  4 |         2 | Brida        |
    -+----+-----------+--------------+</text><html>
    -
    -									<p>
    -										Now, if you have millions of records with only few distinct values for <code>AUTHOR_ID</code>, you may not want to hold references to distinct (but equal) <reference class="java.lang.Integer"/> objects. This is specifically true for IDs of type <reference class="java.util.UUID"/> or string representations thereof. jOOQ allows you to "intern" those values:
    -									</p>
    -
    -</html><java><![CDATA[// Interning data after fetching
    -Result<?> r1 = create.select(BOOK.ID, BOOK.AUTHOR_ID, BOOK.TITLE)
    -                     .from(BOOK)
    -                     .join(AUTHOR).on(BOOK.AUTHOR_ID.eq(AUTHOR.ID))
    -                     .fetch()
    -                     .intern(BOOK.AUTHOR_ID);
    -
    -// Interning data while fetching
    -Result<?> r1 = create.select(BOOK.ID, BOOK.AUTHOR_ID, BOOK.TITLE)
    -                     .from(BOOK)
    -                     .join(AUTHOR).on(BOOK.AUTHOR_ID.eq(AUTHOR.ID))
    -                     .intern(BOOK.AUTHOR_ID)
    -                     .fetch();]]></java><html>
    -                     
    -                     				<p>
    -                     					You can specify as many fields as you want for interning. The above has the following effect:
    -                     				</p>
    -                     				
    -                     				<ul>
    -                     					<li>If the interned Field is of type <reference class="java.lang.String"/>, then <reference class="java.lang.String" anchor="#intern()" title="String.intern()"/> is called upon each string</li>
    -                     					<li>If the interned Field is of any other type, then the call is ignored</li>
    -                     				</ul>
    -                     				
    -                     				<p>
    -                     					Future versions of jOOQ will implement interning of data for non-String data types by collecting values in <reference class="java.util.Set"/>, removing duplicate instances.
    -                     				</p>
    -                     				
    -                     				<p>
    -                     					Note, that jOOQ will not use interned data for identity comparisons: <code>string1 == string2</code>. Interning is used only to reduce the memory footprint of <reference class="org.jooq.Result"/> objects.
    -                     				</p>
    -								</html></content>
    -							</section>							
    -						</sections>
    -					</section>
    -					
    -					<section id="statement-type">
    -						<title>Static statements vs. Prepared Statements</title>
    -						<content><html>
    -							<p>
    -								With JDBC, you have full control over your SQL statements. You can decide yourself, if you want to execute a static <reference class="java.sql.Statement"/> without bind values, or a <reference class="java.sql.PreparedStatement"/> with (or without) bind values. But you have to decide early, which way to go. And you'll have to prevent SQL injection and syntax errors manually, when inlining your bind variables.
    -							</p>
    -							<p>
    -								With jOOQ, this is easier. As a matter of fact, it is plain simple. With jOOQ, you can just set a flag in your <reference id="dsl-context" title="Configuration's"/> <reference id="custom-settings" title="Settings"/>, and all queries produced by that configuration will be executed as static statements, with all bind values inlined. An example is given here:
    -							</p>
    -							
    -</html><code-pair>
    -<sql><![CDATA[
    -
    -
    -
    -
    -
    -
    --- These statements are rendered by the two factories:
    -SELECT ? FROM DUAL WHERE ? = ?
    -SELECT 1 FROM DUAL WHERE 1 = 1]]></sql><java><![CDATA[// This DSLContext executes PreparedStatements
    -DSLContext prepare = DSL.using(connection, SQLDialect.ORACLE);
    -
    -// This DSLContext executes static Statements
    -DSLContext inlined = DSL.using(connection, SQLDialect.ORACLE, 
    -  new Settings().withStatementType(StatementType.STATIC_STATEMENT));
    -  
    -prepare.select(val(1)).where(val(1).equal(1)).fetch();
    -inlined.select(val(1)).where(val(1).equal(1)).fetch();]]></java>
    -</code-pair><html>
    -
    -							<h3>Reasons for choosing one or the other</h3>
    -							<p>
    -								Not all databases are equal. Some databases show improved performance if you use <reference class="java.sql.PreparedStatement"/>, as the database will then be able to re-use execution plans for identical SQL statements, regardless of actual bind values. This heavily improves the time it takes for soft-parsing a SQL statement. In other situations, assuming that bind values are irrelevant for SQL execution plans may be a bad idea, as you might run into "bind value peeking" issues. You may be better off spending the extra cost for a new hard-parse of your SQL statement and instead having the database fine-tune the new plan to the concrete bind values.
    -							</p>
    -							<p>
    -								Whichever aproach is more optimal for you cannot be decided by jOOQ. In most cases, prepared statements are probably better. But you always have the option of forcing jOOQ to render inlined bind values.
    -							</p>
    -							
    -							<h3>Inlining bind values on a per-bind-value basis</h3>
    -							<p>
    -								Note that you don't have to inline all your bind values at once. If you know that a bind value is not really a variable and should be inlined explicitly, you can do so by using <reference class="org.jooq.impl.DSL" anchor="#inline(Object)" title="DSL.inline()"/>, as documented in the manual's section about <reference id="inlined-parameters" title="inlined parameters"/>
    -							</p>
    -						</html></content>
    -					</section>
    -
    -					<section id="reusing-statements">
    -						<title>Reusing a Query's PreparedStatement</title>
    -						<content><html>
    -							<p>
    -								As previously discussed in the chapter about <reference id="comparison-with-jdbc" title="differences between jOOQ and JDBC"/>, reusing PreparedStatements is handled a bit differently in jOOQ from how it is handled in JDBC
    -							</p>
    -							
    -							<h3>Keeping open PreparedStatements with JDBC</h3>
    -							<p>
    -								With JDBC, you can easily reuse a <reference class="java.sql.PreparedStatement"/> by not closing it between subsequent executions. An example is given here:
    -							</p>
    -							
    -</html><java><![CDATA[PreparedStatement stmt = null;
    -ResultSet rs1 = null;
    -ResultSet rs2 = null;
    -
    -try {
    -    // Execute the statement and fetch a first ResultSet
    -    stmt = connection.prepareStatement("SELECT 1 FROM DUAL");
    -    rs1  = stmt.executeQuery();
    -
    -    // Without closing the statement, execute it again to fetch another ResultSet
    -    rs2  = stmt.executeQuery();
    -}
    -finally {
    -    try { rs1.close();  } catch (Exception ignore) {}
    -    try { rs2.close();  } catch (Exception ignore) {}
    -    try { stmt.close(); } catch (Exception ignore) {}
    -}]]></java><html>
    -
    -							<p>
    -								The above technique can be quite useful when you want to reuse expensive database resources. This can be the case when your statement is executed very frequently and your database would take non-negligible time to soft-parse the prepared statement and generate a new statement / cursor resource.
    -							</p>
    -							
    -							<h3>Keeping open PreparedStatements with jOOQ</h3>
    -							<p>
    -								This is also modeled in jOOQ. However, the difference to JDBC is that closing a statement is the default action, whereas keeping it open has to be configured explicitly. This is better than JDBC, because the default action should be the one that is used most often. Keeping open statements is rarely done in average applications. Here's an example of how to keep open PreparedStatements with jOOQ:
    -							</p>
    -							
    -</html><java><![CDATA[// Create a query which is configured to keep its underlying PreparedStatement open
    -ResultQuery<Record> query = create.selectOne().keepStatement(true);
    -
    -// Execute the query twice, against the same underlying PreparedStatement:
    -try {
    -    Result<Record> result1 = query.fetch(); // This will lazily create a new PreparedStatement
    -    Result<Record> result2 = query.fetch(); // This will reuse the previous PreparedStatement
    -}
    -
    -// ... but now, you must not forget to close the query
    -finally {
    -    query.close();
    -}]]></java><html>
    -
    -							<p>
    -								The above example shows how a query can be executed twice against the same underlying PreparedStatement. Unlike in other execution scenarios, you must not forget to close this query now
    -							</p>
    -						</html></content>
    -					</section>
    -
    -                    <section id="jdbc-flags">
    -                        <title>JDBC flags</title>
    -                        <content><html>
    -                            <p>
    -                                JDBC knows a couple of execution flags and modes, which can be set through the jOOQ API as well. jOOQ essentially supports these flags and execution modes:
    -                            </p>
    -                            
    -</html><java><![CDATA[public interface Query extends QueryPart, Attachable {
    -
    -    // [...]
    -
    -    // The query execution timeout.
    -    // -----------------------------------------------------------
    -    Query queryTimeout(int timeout);
    -    
    -}]]></java><java><![CDATA[public interface ResultQuery<R extends Record> extends Query {
    -
    -    // [...]
    -
    -    // The query execution timeout.
    -    // -----------------------------------------------------------
    -    @Override
    -    ResultQuery<R> queryTimeout(int timeout);
    -
    -    // Flags allowing to specify the resulting ResultSet modes
    -    // -----------------------------------------------------------
    -    ResultQuery<R> resultSetConcurrency(int resultSetConcurrency);
    -    ResultQuery<R> resultSetType(int resultSetType);
    -    ResultQuery<R> resultSetHoldability(int resultSetHoldability);
    -
    -    // The maximum number of rows to be fetched by JDBC
    -    // -----------------------------------------------------------
    -    ResultQuery<R> maxRows(int rows);
    -    
    -}]]></java><html>
    -
    -                            <h3>Using ResultSet concurrency with ExecuteListeners</h3>
    -                            <p>
    -                                An example of why you might want to manually set a ResultSet's concurrency flag to something non-default is given here:
    -                            </p>
    -                            
    -</html><java><![CDATA[
    -DSL.using(new DefaultConfiguration()
    -   .set(connection)
    -   .set(SQLDialect.ORACLE)
    -   .set(DefaultExecuteListenerProvider.providers(
    -           new DefaultExecuteListener() {
    -        
    -               @Override
    -               public void recordStart(ExecuteContext ctx) {
    -                   try {
    -            
    -                       // Change values in the cursor before reading a record
    -                       ctx.resultSet().updateString(BOOK.TITLE.getName(), "New Title");
    -                       ctx.resultSet().updateRow();
    -                   }
    -                   catch (SQLException e) {
    -                       throw new DataAccessException("Exception", e);
    -                   }
    -               }
    -          }
    -       )
    -   ))
    -   .select(BOOK.ID, BOOK.TITLE)
    -   .from(BOOK)
    -   .orderBy(BOOK.ID)
    -   .resultSetType(ResultSet.TYPE_SCROLL_INSENSITIVE)
    -   .resultSetConcurrency(ResultSet.CONCUR_UPDATABLE)
    -   .fetch(BOOK.TITLE);]]></java><html>
    -   
    -                            <p>
    -                                In the above example, your custom <reference id="execute-listeners" title="ExecuteListener callback"/> is triggered before jOOQ loads a new <code>Record</code> from the JDBC <code>ResultSet</code>. With the concurrency being set to <code>ResultSet.CONCUR_UPDATABLE</code>, you can now modify the database cursor through the standard JDBC <code>ResultSet</code> API.  
    -                            </p>
    -                        </html></content>
    -                    </section>
    -
    -				    <section id="batch-execution">
    -						<title>Using JDBC batch operations</title>
    -						<content><html>
    -							<p>
    -								With JDBC, you can easily execute several statements at once using the addBatch() method. Essentially, there are two modes in JDBC
    -							</p>
    -
    -							<ul>
    -								<li>Execute several queries without bind values</li>
    -								<li>Execute one query several times with bind values</li>
    -							</ul>
    -
    -							<p>
    -								In code, this looks like the following snippet:
    -							</p>
    -</html><java><![CDATA[// 1. several queries
    -// ------------------
    -Statement stmt = connection.createStatement();
    -stmt.addBatch("INSERT INTO author(id, first_name, last_name) VALUES (1, 'Erich', 'Gamma')");
    -stmt.addBatch("INSERT INTO author(id, first_name, last_name) VALUES (2, 'Richard', 'Helm')");
    -stmt.addBatch("INSERT INTO author(id, first_name, last_name) VALUES (3, 'Ralph', 'Johnson')");
    -stmt.addBatch("INSERT INTO author(id, first_name, last_name) VALUES (4, 'John', 'Vlissides')");
    -int[] result = stmt.executeBatch();
    -
    -// 2. a single query
    -// -----------------
    -PreparedStatement stmt = connection.prepareStatement("INSERT INTO author(id, first_name, last_name) VALUES (?, ?, ?)");
    -stmt.setInt(1, 1);
    -stmt.setString(2, "Erich");
    -stmt.setString(3, "Gamma");
    -stmt.addBatch();
    -
    -stmt.setInt(1, 2);
    -stmt.setString(2, "Richard");
    -stmt.setString(3, "Helm");
    -stmt.addBatch();
    -
    -stmt.setInt(1, 3);
    -stmt.setString(2, "Ralph");
    -stmt.setString(3, "Johnson");
    -stmt.addBatch();
    -
    -stmt.setInt(1, 4);
    -stmt.setString(2, "John");
    -stmt.setString(3, "Vlissides");
    -stmt.addBatch();
    -
    -int[] result = stmt.executeBatch();]]></java><html>
    -
    -
    -							<h3>This will also be supported by jOOQ</h3>
    -							<p>
    -								jOOQ supports executing queries in batch mode as follows:
    -							</p>
    -							
    -</html><java><![CDATA[// 1. several queries
    -// ------------------
    -create.batch(
    -	create.insertInto(AUTHOR, ID, FIRST_NAME, LAST_NAME).values(1, "Erich", "Gamma"),
    -	create.insertInto(AUTHOR, ID, FIRST_NAME, LAST_NAME).values(2, "Richard", "Helm"),
    -	create.insertInto(AUTHOR, ID, FIRST_NAME, LAST_NAME).values(3, "Ralph", "Johnson"),
    -	create.insertInto(AUTHOR, ID, FIRST_NAME, LAST_NAME).values(4, "John", "Vlissides"))
    -.execute();
    -
    -// 2. a single query
    -// -----------------
    -create.batch(create.insertInto(AUTHOR, ID, FIRST_NAME, LAST_NAME).values((Integer) null, null, null))
    -      .bind(1, "Erich", "Gamma")
    -      .bind(2, "Richard", "Helm")
    -      .bind(3, "Ralph", "Johnson")
    -      .bind(4, "John", "Vlissides")
    -      .execute();]]></java><html>
    -      
    -                            <p>
    -                                When creating a batch execution with a single query and multiple bind values, you will still have to provide jOOQ with dummy bind values for the original query. In the above example, these are set to <code>null</code>. For subsequent calls to <code>bind()</code>, there will be no type safety provided by jOOQ.
    -                            </p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="sequence-execution">
    -						<title>Sequence execution</title>
    -						<content><html>
    -							<p>
    -								Most databases support sequences of some sort, to provide you with unique values to be used for primary keys and other enumerations. If you're using jOOQ's <reference id="code-generation" title="code generator"/>, it will generate a sequence object per sequence for you. There are two ways of using such a sequence object:
    -							</p>
    -
    -							<h3>Standalone calls to sequences</h3>
    -							<p>
    -								Instead of actually phrasing a select statement, you can also use the <reference id="dsl-context" title="DSLContext's"/> convenience methods:
    -							</p>							
    -							
    -</html><java><![CDATA[// Fetch the next value from a sequence
    -BigInteger nextID = create.nextval(S_AUTHOR_ID);
    -
    -// Fetch the current value from a sequence
    -BigInteger currID = create.currval(S_AUTHOR_ID);]]></java><html>
    -							
    -							<h3>Inlining sequence references in SQL</h3>
    -							<p>
    -								You can inline sequence references in jOOQ SQL statements. The following are examples of how to do that:
    -							</p>
    -							
    -</html><java><![CDATA[// Reference the sequence in a SELECT statement:
    -BigInteger nextID = create.select(s).fetchOne(S_AUTHOR_ID.nextval());
    -
    -// Reference the sequence in an INSERT statement:
    -create.insertInto(AUTHOR, AUTHOR.ID, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .values(S_AUTHOR_ID.nextval(), val("William"), val("Shakespeare"));
    -]]></java><html>
    -
    -							<p>
    -								For more info about inlining sequence references in SQL statements, please refer to the manual's section about <reference id="sequences-and-serials" title="sequences and serials"/>.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="stored-procedures">
    -						<title>Stored procedures and functions</title>
    -						<content><html>
    -							<p>
    -								Many RDBMS support the concept of "routines", usually calling them procedures and/or functions. These concepts have been around in programming languages for a while, also outside of databases. Famous languages distinguishing procedures from functions are:
    -							</p>
    -							<ul>
    -								<li>Ada</li>
    -								<li>BASIC</li>
    -								<li>Pascal</li>
    -								<li>etc...</li>
    -							</ul>
    -							<p>
    -								The general distinction between (stored) procedures and (stored) functions can be summarised like this:
    -							</p>
    -							
    -							<h3>Procedures</h3>
    -							<ul>
    -								<li>Are called using JDBC CallableStatement</li>
    -								<li>Have no return value</li>
    -								<li>Usually support OUT parameters</li>
    -							</ul>
    -							
    -							<h3>Functions</h3>
    -							<ul>
    -								<li>Can be used in SQL statements</li>
    -								<li>Have a return value</li>
    -								<li>Usually don't support OUT parameters</li>
    -							</ul>
    -							
    -							<h3>Exceptions to these rules</h3>
    -							<ul>
    -								<li>DB2, H2, and HSQLDB don't allow for JDBC escape syntax when calling functions. Functions must be used in a SELECT statement</li>
    -								<li>H2 only knows functions (without OUT parameters)</li>
    -								<li>Oracle functions may have OUT parameters</li>
    -								<li>Oracle knows functions that must not be used in SQL statements for transactional reasons</li>
    -								<li>Postgres only knows functions (with all features combined). OUT parameters can also be interpreted as return values, which is quite elegant/surprising, depending on your taste</li>
    -								<li>The Sybase jconn3 JDBC driver doesn't handle null values correctly when using the JDBC escape syntax on functions</li>
    -							</ul>
    -							<p>
    -								In general, it can be said that the field of routines (procedures / functions) is far from being standardised in modern RDBMS even if the SQL:2008 standard specifies things quite well. Every database has its ways and JDBC only provides little abstraction over the great variety of procedures / functions implementations, especially when advanced data types such as cursors / UDT's / arrays are involved.
    -							</p>
    -							<p>
    -								To simplify things a little bit, jOOQ handles both procedures and functions the same way, using a more general <reference class="org.jooq.Routine"/> type.
    -							</p>
    -							
    -							<h3>Using jOOQ for standalone calls to stored procedures and functions</h3>
    -							<p>
    -								If you're using jOOQ's <reference id="code-generation" title="code generator"/>, it will generate <reference class="org.jooq.Routine"/> objects for you. Let's consider the following example:
    -							</p>
    -							
    -</html><sql><![CDATA[-- Check whether there is an author in AUTHOR by that name and get his ID
    -CREATE OR REPLACE PROCEDURE author_exists (author_name VARCHAR2, result OUT NUMBER, id OUT NUMBER);]]></sql><html>
    -
    -							<p>
    -								The generated artefacts can then be used as follows:
    -							</p>
    -							
    -</html><java><![CDATA[// Make an explicit call to the generated procedure object:
    -AuthorExists procedure = new AuthorExists();
    -
    -// All IN and IN OUT parameters generate setters
    -procedure.setAuthorName("Paulo");
    -procedure.execute(configuration);
    -
    -// All OUT and IN OUT parameters generate getters
    -assertEquals(new BigDecimal("1"), procedure.getResult());
    -assertEquals(new BigDecimal("2"), procedure.getId();]]></java><html>							
    -							
    -							<p>
    -								But you can also call the procedure using a generated convenience method in a global Routines class:
    -							</p>
    -
    -</html><java><![CDATA[// The generated Routines class contains static methods for every procedure.
    -// Results are also returned in a generated object, holding getters for every OUT or IN OUT parameter.
    -AuthorExists result = Routines.authorExists("Paulo");
    -
    -// All OUT and IN OUT parameters generate getters
    -assertEquals(new BigDecimal("1"), procedure.getResult());
    -assertEquals(new BigDecimal("2"), procedure.getId();]]></java><html>			
    -
    -							<p>
    -								For more details about <reference id="code-generation" title="code generation"/> for procedures, see the manual's section about <reference id="codegen-procedures" title="procedures and code generation"/>.
    -							</p>				
    -							
    -							<h3>Inlining stored function references in SQL</h3>
    -							<p>
    -								Unlike procedures, functions can be inlined in SQL statements to generate <reference id="column-expressions" title="column expressions"/> or <reference id="table-expressions" title="table expressions"/>, if you're using <reference id="array-and-cursor-unnesting" title="unnesting operators"/>. Assume you have a function like this:
    -							</p>
    -
    -</html><sql><![CDATA[-- Check whether there is an author in AUTHOR by that name and get his ID
    -CREATE OR REPLACE FUNCTION author_exists (author_name VARCHAR2) RETURN NUMBER;]]></sql><html>
    -							
    -							<p>
    -								The generated artefacts can then be used as follows:
    -							</p>
    -							
    -</html><code-pair>
    -<sql><![CDATA[-- This is the rendered SQL
    -
    -SELECT AUTHOR_EXISTS('Paulo') FROM DUAL]]></sql><java><![CDATA[// Use the static-imported method from Routines:
    -boolean exists = 
    -create.select(authorExists("Paulo")).fetchOne(0, boolean.class);]]></java>							
    -</code-pair><html>
    -							
    -							<p>
    -								For more info about inlining stored function references in SQL statements, please refer to the manual's section about <reference id="user-defined-functions" title="user-defined functions"/>.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="oracle-packages">
    -								<title>Oracle Packages</title>
    -								<content><html>
    -									<p>
    -										Oracle uses the concept of a PACKAGE to group several procedures/functions into a sort of namespace. The <a href="http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt" title="SQL 92 standard">SQL 92 standard</a> talks about "modules", to represent this concept, even if this is rarely implemented as such. This is reflected in jOOQ by the use of Java sub-packages in the <reference id="code-generation" title="source code generation"/> destination package. Every Oracle package will be reflected by
    -									</p>
    -									<ul>
    -										<li>A Java package holding classes for formal Java representations of the procedure/function in that package</li>
    -										<li>A Java class holding convenience methods to facilitate calling those procedures/functions</li>
    -									</ul>
    -									<p>
    -										Apart from this, the generated source code looks exactly like the one for standalone procedures/functions.
    -									</p>
    -									<p>
    -										For more details about <reference id="code-generation" title="code generation"/> for procedures and packages see the manual's section about <reference id="codegen-procedures" title="procedures and code generation"/>.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="oracle-member-procedures">
    -								<title>Oracle member procedures</title>
    -								<content><html>
    -									<p>
    -										Oracle UDTs can have object-oriented structures including member functions and procedures. With Oracle, you can do things like this:
    -									</p>
    -									
    -</html><sql><![CDATA[CREATE OR REPLACE TYPE u_author_type AS OBJECT (
    -  id NUMBER(7),
    -  first_name VARCHAR2(50),
    -  last_name VARCHAR2(50),
    -
    -  MEMBER PROCEDURE LOAD,
    -  MEMBER FUNCTION counBOOKs RETURN NUMBER
    -)
    -
    --- The type body is omitted for the example]]></sql><html>
    -
    -									<p>
    -										These member functions and procedures can simply be mapped to Java methods:
    -									</p>
    -
    -</html><java><![CDATA[// Create an empty, attached UDT record from the DSLContext
    -UAuthorType author = create.newRecord(U_AUTHOR_TYPE);
    -
    -// Set the author ID and load the record using the LOAD procedure
    -author.setId(1);
    -author.load();
    -
    -// The record is now updated with the LOAD implementation's content
    -assertNotNull(author.getFirstName());
    -assertNotNull(author.getLastName());]]></java><html>
    -
    -									<p>
    -										For more details about <reference id="code-generation" title="code generation"/> for UDTs see the manual's section about <reference id="codegen-udts" title="user-defined types and code generation"/>.
    -									</p>								
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -				    <section id="exporting">
    -						<title>Exporting to XML, CSV, JSON, HTML, Text</title>
    -						<content><html>
    -							<p>
    -								If you are using jOOQ for scripting purposes or in a slim, unlayered application server, you might be interested in using jOOQ's exporting functionality (see also the <reference id="importing" title="importing functionality"/>). You can export any Result&lt;Record&gt; into the formats discussed in the subsequent chapters of the manual
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="exporting-xml">
    -								<title>Exporting XML</title>
    -								<content><java>// Fetch books and format them as XML
    -String xml = create.selectFrom(BOOK).fetch().formatXML();</java><html>
    -
    -									<p>
    -										The above query will result in an XML document looking like the following one:
    -									</p>
    -
    -</html><xml><![CDATA[<result xmlns="http://www.jooq.org/xsd/jooq-export-{export-xsd-version}.xsd">
    -  <fields>
    -    <field name="ID" type="INTEGER"/>
    -    <field name="AUTHOR_ID" type="INTEGER"/>
    -    <field name="TITLE" type="VARCHAR"/>
    -  </fields>
    -  <records>
    -    <record>
    -      <value field="ID">1</value>
    -      <value field="AUTHOR_ID">1</value>
    -      <value field="TITLE">1984</value>
    -    </record>
    -    <record>
    -      <value field="ID">2</value>
    -      <value field="AUTHOR_ID">1</value>
    -      <value field="TITLE">Animal Farm</value>
    -    </record>
    -  </records>
    -</result>]]></xml><html>
    -
    -									<p>
    -										The same result as an <reference class="org.w3c.dom.Document"/> can be obtained using the Result.intoXML() method:
    -									</p>
    -
    -
    -</html><java>// Fetch books and format them as XML
    -Document xml = create.selectFrom(BOOK).fetch().intoXML();</java><html>
    -
    -									<p>
    -										See the XSD schema definition here, for a formal definition of the XML export format:<br/>
    -										<a href="http://www.jooq.org/xsd/jooq-export-{export-xsd-version}.xsd">http://www.jooq.org/xsd/jooq-export-{export-xsd-version}.xsd</a>
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="exporting-csv">
    -								<title>Exporting CSV</title>
    -								<content><java>// Fetch books and format them as CSV
    -String csv = create.selectFrom(BOOK).fetch().formatCSV();</java><html>
    -
    -									<p>
    -										The above query will result in a CSV document looking like the following one:
    -									</p>
    -
    -</html><text>ID,AUTHOR_ID,TITLE
    -1,1,1984
    -2,1,Animal Farm</text><html>
    -
    -									<p>
    -										In addition to the standard behaviour, you can also specify a separator character, as well as a special string to represent NULL values (which cannot be represented in standard CSV):
    -									</p>
    -
    -</html><java>// Use ";" as the separator character
    -String csv = create.selectFrom(BOOK).fetch().formatCSV(';');
    -
    -// Specify "{null}" as a representation for NULL values
    -String csv = create.selectFrom(BOOK).fetch().formatCSV(';', "{null}");</java></content>
    -							</section>
    -
    -							<section id="exporting-json">
    -								<title>Exporting JSON</title>
    -								<content><java>// Fetch books and format them as JSON
    -String json = create.selectFrom(BOOK).fetch().formatJSON();</java><html>
    -
    -									<p>
    -										The above query will result in a JSON document looking like the following one:
    -									</p>
    -
    -</html><text>{"fields":[{"name":"field-1","type":"type-1"},
    -           {"name":"field-2","type":"type-2"},
    -           ...,
    -           {"name":"field-n","type":"type-n"}],
    - "records":[[value-1-1,value-1-2,...,value-1-n],
    -            [value-2-1,value-2-2,...,value-2-n]]}</text><html>
    -             
    -             						<p>
    -             							Note: This format has changed in jOOQ 2.6.0
    -             						</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="exporting-html">
    -								<title>Exporting HTML</title>
    -								<content><java>// Fetch books and format them as HTML
    -String html = create.selectFrom(BOOK).fetch().formatHTML();</java><html>
    -
    -									<p>
    -										The above query will result in an HTML document looking like the following one
    -									</p>
    -
    -</html><xml><![CDATA[<table>
    -  <thead>
    -    <tr>
    -      <th>ID</th>
    -      <th>AUTHOR_ID</th>
    -      <th>TITLE</th>
    -    </tr>
    -  </thead>
    -  <tbody>
    -    <tr>
    -      <td>1</td>
    -      <td>1</td>
    -      <td>1984</td>
    -    </tr>
    -    <tr>
    -      <td>2</td>
    -      <td>1</td>
    -      <td>Animal Farm</td>
    -    </tr>
    -  </tbody>
    -</table>]]></xml></content>
    -							</section>
    -
    -							<section id="exporting-text">
    -								<title>Exporting Text</title>
    -								<content><java>// Fetch books and format them as text
    -String text = create.selectFrom(BOOK).fetch().format();</java><html>
    -
    -									<p>
    -										The above query will result in a text document looking like the following one
    -									</p>
    -
    -</html><text>+---+---------+-----------+
    -| ID|AUTHOR_ID|TITLE      |
    -+---+---------+-----------+
    -|  1|        1|1984       |
    -|  2|        1|Animal Farm|
    -+---+---------+-----------+</text><html>
    -
    -									<p>
    -										A simple text representation can also be obtained by calling toString() on a Result object. See also the manual's section about <reference id="logging" title="DEBUG logging"/>
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -				    <section id="importing">
    -						<title>Importing data</title>
    -						<content><html>
    -							<p>
    -								If you are using jOOQ for scripting purposes or in a slim, unlayered application server, you might be interested in using jOOQ's importing functionality (see also exporting functionality). You can import data directly into a table from the formats described in the subsequent sections of this manual.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="importing-csv">
    -								<title>Importing CSV</title>
    -								<content><html>
    -
    -									<p>
    -										The below CSV data represents two author records that may have been exported previously, by jOOQ's <reference id="exporting" title="exporting functionality"/>, and then modified in Microsoft Excel or any other spreadsheet tool:
    -									</p>
    -
    -</html><text>ID;AUTHOR_ID;TITLE
    -1;1;1984
    -2;1;Animal Farm</text><html>
    -
    -									<p>
    -										With jOOQ, you can load this data using various parameters from the	loader API. A simple load may look like this:
    -									</p>
    -
    -</html><java>DSLContext create = DSL.using(connection, dialect);
    -
    -// Load data into the AUTHOR table from an input stream
    -// holding the CSV data.
    -create.loadInto(AUTHOR)
    -      .loadCSV(inputstream)
    -      .fields(ID, AUTHOR_ID, TITLE)
    -      .execute();</java><html>
    -
    -      								<p>
    -      									Here are various other examples:
    -   									</p>
    -
    -</html><java>// Ignore the AUTHOR_ID column from the CSV file when inserting
    -create.loadInto(AUTHOR)
    -      .loadCSV(inputstream)
    -      .fields(ID, null, TITLE)
    -      .execute();
    -
    -// Specify behaviour for duplicate records.
    -create.loadInto(AUTHOR)
    -
    -      // choose any of these methods
    -      .onDuplicateKeyUpdate()
    -      .onDuplicateKeyIgnore()
    -      .onDuplicateKeyError() // the default
    -
    -      .loadCSV(inputstream)
    -      .fields(ID, null, TITLE)
    -      .execute();
    -
    -// Specify behaviour when errors occur.
    -create.loadInto(AUTHOR)
    -
    -      // choose any of these methods
    -      .onErrorIgnore()
    -      .onErrorAbort() // the default
    -
    -      .loadCSV(inputstream)
    -      .fields(ID, null, TITLE)
    -      .execute();
    -
    -// Specify transactional behaviour where this is possible
    -// (e.g. not in container-managed transactions)
    -create.loadInto(AUTHOR)
    -
    -      // choose any of these methods
    -      .commitEach()
    -      .commitAfter(10)
    -      .commitAll()
    -      .commitNone() // the default
    -
    -      .loadCSV(inputstream)
    -      .fields(ID, null, TITLE)
    -      .execute();</java><html>
    -
    -									<p>
    -										Any of the above configuration methods can be combined to achieve the type of load you need. Please refer to the API's Javadoc to learn about more details. Errors that occur during the load are reported by the execute method's result:
    -									</p>
    -
    -</html><java><![CDATA[Loader<Author> loader = /* .. */ .execute();
    -
    -// The number of processed rows
    -int processed = loader.processed();
    -
    -// The number of stored rows (INSERT or UPDATE)
    -int stored = loader.stored();
    -
    -// The number of ignored rows (due to errors, or duplicate rule)
    -int ignored = loader.ignored();
    -
    -// The errors that may have occurred during loading
    -List<LoaderError> errors = loader.errors();
    -LoaderError error = errors.get(0);
    -
    -// The exception that caused the error
    -DataAccessException exception = error.exception();
    -
    -// The row that caused the error
    -int rowIndex = error.rowIndex();
    -String[] row = error.row();
    -
    -// The query that caused the error
    -Query query = error.query();]]></java></content>
    -							</section>
    -
    -							<section id="importing-xml">
    -								<title>Importing XML</title>
    -								<content><html>
    -									<p>This is not yet supported</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -				    <section id="crud-with-updatablerecords">
    -						<title>CRUD with UpdatableRecords</title>
    -						<content><html>
    -							<p>
    -								Your database application probably consists of 50% - 80% CRUD, whereas only the remaining 20% - 50% of querying is actual querying. Most often, you will operate on records of tables without using any advanced relational concepts. This is called CRUD for
    -							</p>
    -							<ul>
    -								<li>Create (<reference id="insert-statement" title="INSERT"/>)</li>
    -								<li>Read (<reference id="select-statement" title="SELECT"/>)</li>
    -								<li>Update (<reference id="update-statement" title="UPDATE"/>)</li>
    -								<li>Delete (<reference id="delete-statement" title="DELETE"/>)</li>
    -							</ul>
    -							<p>								
    -								CRUD always uses the same patterns, regardless of the nature of underlying tables. This again, leads to a lot of boilerplate code, if you have to issue your statements yourself. Like Hibernate / JPA and other ORMs, jOOQ facilitates CRUD using a specific API involving <reference class="org.jooq.UpdatableRecord"/> types.
    -							</p>
    -							
    -							<h3>Primary keys and updatability</h3>
    -							<p>
    -								In normalised databases, every table has a primary key by which a tuple/record within that table can be uniquely identified. In simple cases, this is a (possibly auto-generated) number called ID. But in many cases, primary keys include several non-numeric columns. An important feature of such keys is the fact that in most databases, they are enforced using an index that allows for very fast random access to the table. A typical way to access / modify / delete a book is this:
    -							</p>
    -							
    -</html><sql><![CDATA[-- Inserting uses a previously generated key value or generates it afresh
    -INSERT INTO BOOK (ID, TITLE) VALUES (5, 'Animal Farm');
    -
    --- Other operations can use a previously generated key value
    -SELECT * FROM BOOK WHERE ID = 5;
    -UPDATE BOOK SET TITLE = '1984' WHERE ID = 5;
    -DELETE FROM BOOK WHERE ID = 5;]]></sql><html>
    -							
    -							<p>
    -								Normalised databases assume that a primary key is unique "forever", i.e. that a key, once inserted into a table, will never be changed or re-inserted after deletion. In order to use jOOQ's <reference id="simple-crud" title="CRUD"/> operations correctly, you should design your database accordingly.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="simple-crud">
    -								<title>Simple CRUD</title>
    -								<content><html>
    -									<p>
    -										If you're using jOOQ's <reference id="code-generation" title="code generator"/>, it will generate <reference class="org.jooq.UpdatableRecord"/> implementations for every table that has a primary key. When <reference id="fetching" title="fetching"/> such a record form the database, these records are "attached" to the <reference id="dsl-context" title="Configuration" /> that created them. This means that they hold an internal reference to the same database connection that was used to fetch them. This connection is used internally by any of the following methods of the UpdatableRecord:
    -									</p>
    -									
    -</html><java><![CDATA[// Refresh a record from the database.
    -void refresh() throws DataAccessException;
    -
    -// Store (insert or update) a record to the database.
    -int store() throws DataAccessException;
    -
    -// Delete a record from the database
    -int delete() throws DataAccessException;]]></java><html>
    -									
    -									<p>
    -										See the manual's section about <reference id="serializability" title="serializability"/> for some more insight on "attached" objects. 
    -									</p>
    -									
    -									<h3>Storing</h3>
    -									<p>
    -										Storing a record will perform an <reference id="insert-statement" title="INSERT statement"/> or an <reference id="update-statement" title="UPDATE statement"/>. In general, new records are always inserted, whereas records loaded from the database are always updated. This is best visualised in code:
    -									</p>
    -
    -</html><java><![CDATA[// Create a new record
    -BookRecord book1 = create.newRecord(BOOK);
    -
    -// Insert the record: INSERT INTO BOOK (TITLE) VALUES ('1984');
    -book1.setTitle("1984");
    -book1.store();
    -
    -// Update the record: UPDATE BOOK SET PUBLISHED_IN = 1984 WHERE ID = [id]
    -book1.setPublishedIn(1948);
    -book1.store();
    -
    -// Get the (possibly) auto-generated ID from the record
    -Integer id = book1.getId();
    -
    -// Get another instance of the same book
    -BookRecord book2 = create.fetchOne(BOOK, BOOK.ID.equal(id));
    -
    -// Update the record: UPDATE BOOK SET TITLE = 'Animal Farm' WHERE ID = [id]
    -book2.setTitle("Animal Farm");
    -book2.store();]]></java><html>
    -									
    -									<p>
    -										Some remarks about storing:
    -									</p>
    -									<ul>
    -										<li>jOOQ sets only modified values in <reference id="insert-statement" title="INSERT statements"/> or <reference id="update-statement" title="UPDATE statements"/>. This allows for default values to be applied to inserted records, as specified in CREATE TABLE DDL statements.</li>
    -										<li>When store() performs an <reference id="insert-statement" title="INSERT statement"/>, jOOQ attempts to load any generated keys from the database back into the record. For more details, see the manual's section about <reference id="identity-values" title="IDENTITY values"/>.</li>
    -										<li>When loading records from <reference id="pojos" title="POJOs"/>, jOOQ will assume the record is a new record. It will hence attempt to INSERT it.</li>
    -										<li>When you activate <reference id="optimistic-locking" title="optimistic locking"/>, storing a record may fail, if the underlying database record has been changed in the mean time.</li>
    -									</ul>
    -																		
    -									<h3>Deleting</h3>
    -									<p>
    -										Deleting a record will remove it from the database. Here's how you delete records:
    -									</p>
    -									
    -</html><java><![CDATA[// Get a previously inserted book
    -BookRecord book = create.fetchOne(BOOK, BOOK.ID.equal(5));
    -
    -// Delete the book
    -book.delete();]]></java><html>
    -									
    -									<h3>Refreshing</h3>
    -									<p>
    -										Refreshing a record from the database means that jOOQ will issue a <reference id="select-statement" title="SELECT statement"/> to refresh all record values that are not the primary key. This is particularly useful when you use jOOQ's <reference id="optimistic-locking" title="optimistic locking"/> feature, in case a modified record is "stale" and cannot be stored to the database, because the underlying database record has changed in the mean time.
    -									</p>
    -									<p>
    -										In order to perform a refresh, use the following Java code:
    -									</p>									
    -
    -</html><java><![CDATA[// Fetch an updatable record from the database
    -BookRecord book = create.fetchOne(BOOK, BOOK.ID.equal(5));
    -
    -// Refresh the record
    -book.refresh();]]></java><html>
    -
    -									<h3>CRUD and SELECT statements</h3>
    -									<p>
    -										CRUD operations can be combined with regular querying, if you select records from single database tables, as explained in the manual's section about <reference id="select-statement" title="SELECT statements"/>. For this, you will need to use the <code>selectFrom()</code> method from the <reference id="dsl-context" title="DSLContext"/>:
    -									</p>
    -									
    -</html><java><![CDATA[// Loop over records returned from a SELECT statement
    -for (BookRecord book : create.fetch(BOOK, BOOK.PUBLISHED_IN.equal(1948))) {
    -
    -  // Perform actions on BookRecords depending on some conditions
    -  if ("Orwell".equals(book.fetchParent(FK_BOOK_AUTHOR).getLastName())) {
    -    book.delete();
    -  }
    -}]]></java></content>
    -							</section>
    -
    -							<section id="internal-flags">
    -								<title>Records' internal flags</title>
    -								<content><html>
    -									<p>
    -										All of jOOQ's <reference id="record-vs-tablerecord" title="Record types and subtypes"/> maintain an internal state for every column value. This state is composed of three elements:
    -									</p>
    -									<ul>
    -										<li>The value itself</li>
    -										<li>The "original" value, i.e. the value as it was originally fetched from the database or <code>null</code>, if the record was never in the database</li>
    -										<li>The "changed" flag, indicating if the value was ever changed through the <code>Record</code> API.</li>
    -									</ul>
    -									
    -									<p>
    -										The purpose of the above information is for jOOQ's <reference id="simple-crud" title="CRUD operations"/> to know, which values need to be stored to the database, and which values have been left untouched.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="identity-values">
    -								<title>IDENTITY values</title>
    -								<content><html>
    -									<p>
    -										Many databases support the concept of IDENTITY values, or <reference id="sequence-execution" title="SEQUENCE-generated"/> key values. This is reflected by JDBC's <reference class="java.sql.Statement" anchor="#getGeneratedKeys()" title="getGeneratedKeys()"/> method. jOOQ abstracts using this method as many databases and JDBC drivers behave differently with respect to generated keys. Let's assume the following SQL Server BOOK table:
    -									</p>
    -									
    -</html><sql><![CDATA[CREATE TABLE book (
    -  ID INTEGER IDENTITY(1,1) NOT NULL,
    -  
    -  -- [...]
    -  
    -  CONSTRAINT pk_book PRIMARY KEY (id)
    -)]]></sql><html>
    -
    -									<p>
    -										If you're using jOOQ's <reference id="code-generation" title="code generator"/>, the above table will generate a <reference class="org.jooq.UpdatableRecord"/> with an IDENTITY column. This information is used by jOOQ internally, to update IDs after calling <reference id="crud-with-updatablerecords" title="store()"/>: 
    -									</p>
    -									
    -</html><java><![CDATA[BookRecord book = create.newRecord(BOOK);
    -book.setTitle("1984");
    -book.store();
    -
    -// The generated ID value is fetched after the above INSERT statement
    -System.out.println(book.getId());]]></java><html>
    -
    -									<h3>Database compatibility</h3>
    -									<p>
    -										<strong>DB2, Derby, HSQLDB, Ingres</strong>
    -									</p>
    -									<p>
    -										These SQL dialects implement the standard very neatly.
    -									</p>
    -</html><sql><![CDATA[id INTEGER GENERATED BY DEFAULT AS IDENTITY
    -id INTEGER GENERATED BY DEFAULT AS IDENTITY (START WITH 1)]]></sql><html>
    -
    -									<p>
    -										<strong>H2, MySQL, Postgres, SQL Server, Sybase ASE, Sybase SQL Anywhere</strong>
    -									</p>
    -									<p>
    -										These SQL dialects implement identites, but the DDL syntax doesn’t follow the standard
    -									</p>
    -</html><sql><![CDATA[-- H2 mimicks MySQL's and SQL Server's syntax
    -ID INTEGER IDENTITY(1,1)
    -ID INTEGER AUTO_INCREMENT
    --- MySQL and SQLite
    -ID INTEGER NOT NULL AUTO_INCREMENT
    -
    --- Postgres serials implicitly create a sequence
    --- Postgres also allows for selecting from custom sequences
    --- That way, sequences can be shared among tables
    -id SERIAL NOT NULL
    -
    --- SQL Server
    -ID INTEGER IDENTITY(1,1) NOT NULL
    --- Sybase ASE
    -id INTEGER IDENTITY NOT NULL
    --- Sybase SQL Anywhere
    -id INTEGER NOT NULL IDENTITY]]></sql><html>
    -
    -									<p>
    -										<strong>Oracle</strong>
    -									</p>
    -									<p>
    -										Oracle does not know any identity columns at all. Instead, you will have to use a trigger and update the ID column yourself, using a custom sequence. Something along these lines:
    -									</p>
    -</html><sql><![CDATA[CREATE OR REPLACE TRIGGER my_trigger
    -BEFORE INSERT
    -ON my_table
    -REFERENCING NEW AS new
    -FOR EACH ROW
    -BEGIN
    -  SELECT my_sequence.nextval
    -  INTO :new.id
    -  FROM dual;
    -END my_trigger;]]></sql><html>
    -
    -									<p>
    -										Note, that this approach can be employed in most databases supporting sequences and triggers! It is a lot more flexible than standard identities
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="navigation-methods">
    -								<title>Navigation methods</title>
    -								<content><html>
    -									<p>
    -										<reference class="org.jooq.TableRecord"/> and <reference class="org.jooq.UpdatableRecord"/> contain foreign key navigation methods. These navigation methods allow for "navigating" inbound or outbound foreign key references by executing an appropriate query. An example is given here: 
    -									</p>
    -				
    -</html><code-pair>
    -<sql><![CDATA[CREATE TABLE book (
    -  AUTHOR_ID NUMBER(7) NOT NULL,
    -  
    -  -- [...]
    -  
    -  FOREIGN KEY (AUTHOR_ID) REFERENCES author(ID)
    -)]]></sql><java><![CDATA[BookRecord book = create.fetch(BOOK, BOOK.ID.equal(5));
    -
    -// Find the author of a book
    -AuthorRecord author = book.fetchParent(FK_BOOK_AUTHOR);
    -
    -// Find other books by that author
    -List<BookRecord> books = author.fetchChildren(FK_BOOK_AUTHOR);]]></java>
    -</code-pair><html>					
    -
    -									<p>
    -										Note that, unlike in Hibernate, jOOQ's navigation methods will always lazy-fetch relevant records, without caching any results. In other words, every time you run such a fetch method, a new query will be issued.
    -									</p>
    -									<p>
    -										These fetch methods only work on "attached" records. See the manual's section about <reference id="serializability" title="serializability"/> for some more insight on "attached" objects.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="non-updatable-records">
    -								<title>Non-updatable records</title>
    -								<content><html>
    -									<p>
    -										Tables without a <code>PRIMARY KEY</code> are considered non-updatable by jOOQ, as jOOQ has no way of uniquely identifying such a record within the database. If you're using jOOQ's <reference id="code-generation" title="code generator"/>, such tables will generate <reference class="org.jooq.TableRecord"/> classes, instead of <reference class="org.jooq.UpdatableRecord"/> classes. When you fetch <reference id="record-vs-tablerecord" title="typed records"/> from such a table, the returned records will not allow for calling any of the <reference id="crud-with-updatablerecords" title="store(), refresh(), delete()"/> methods. 
    -									</p>
    -									
    -									<p>
    -										Note, that some databases use internal rowid or object-id values to identify such records. jOOQ does not support these vendor-specific record meta-data.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="optimistic-locking">
    -								<title>Optimistic locking</title>
    -								<content><html>
    -									<p>
    -										jOOQ allows you to perform <reference id="crud-with-updatablerecords" title="CRUD"/> operations using optimistic locking. You can immediately take advantage of this feature by activating the relevant <reference id="custom-settings" title="executeWithOptimisticLocking Setting"/>. Without any further knowledge of the underlying data semantics, this will have the following impact on store() and delete() methods:
    -									</p>
    -									<ul>
    -										<li>INSERT statements are not affected by this Setting flag</li>
    -										<li>Prior to UPDATE or DELETE statements, jOOQ will run a <reference id="for-update-clause" title="SELECT .. FOR UPDATE"/> statement, pessimistically locking the record for the subsequent UPDATE / DELETE</li>
    -										<li>The data fetched with the previous SELECT will be compared against the data in the record being stored or deleted</li>
    -										<li>An <reference class="org.jooq.exception.DataChangedException"/> is thrown if the record had been modified in the mean time</li>
    -										<li>The record is successfully stored / deleted, if the record had not been modified in the mean time.</li>
    -									</ul>
    -									<p>
    -										The above changes to jOOQ's behaviour are transparent to the API, the only thing you need to do for it to be activated is to set the Settings flag. Here is an example illustrating optimistic locking:
    -									</p>
    -
    -</html><java><![CDATA[// Properly configure the DSLContext
    -DSLContext optimistic = DSLContext.using(connection, SQLDialect.ORACLE, 
    -  new Settings().withExecuteWithOptimisticLocking(true));
    -  
    -// Fetch a book two times
    -BookRecord book1 = optimistic.fetch(BOOK, BOOK.ID.equal(5));
    -BookRecord book2 = optimistic.fetch(BOOK, BOOK.ID.equal(5));
    -
    -// Change the title and store this book. The underlying database record has not been modified, it can be safely updated.
    -book1.setTitle("Animal Farm");
    -book1.store();
    -
    -// Book2 still references the original TITLE value, but the database holds a new value from book1.store(). 
    -// This store() will thus fail:
    -book2.setTitle("1984");
    -book2.store();]]></java><html>								
    -	
    -									<h3>Optimised optimistic locking using TIMESTAMP fields</h3>
    -									<p>
    -										If you're using jOOQ's <reference id="code-generation" title="code generator"/>, you can take indicate TIMESTAMP or UPDATE COUNTER fields for every generated table in the <reference id="codegen-advanced" title="code generation configuration"/>. Let's say we have this table:
    -									</p>
    -
    -</html><sql><![CDATA[CREATE TABLE book (
    -  
    -  -- This column indicates when each book record was modified for the last time
    -  MODIFIED TIMESTAMP NOT NULL,
    -  -- [...]
    -)]]></sql><html>									
    -
    -									<p>
    -										The MODIFIED column will contain a timestamp indicating the last modification timestamp for any book in the BOOK table. If you're using jOOQ and it's <reference id="crud-with-updatablerecords" title="store() methods on UpdatableRecords"/>, jOOQ will then generate this TIMESTAMP value for you, automatically. However, instead of running an additional <reference id="for-update-clause" title="SELECT .. FOR UPDATE"/> statement prior to an UPDATE or DELETE statement, jOOQ adds a WHERE-clause to the UPDATE or DELETE statement, checking for TIMESTAMP's integrity. This can be best illustrated with an example:   
    -									</p>
    -									
    -</html><java><![CDATA[// Properly configure the DSLContext
    -DSLContext optimistic = DSL.using(connection, SQLDialect.ORACLE, 
    -  new Settings().withExecuteWithOptimisticLocking(true));
    -  
    -// Fetch a book two times
    -BookRecord book1 = optimistic.fetch(BOOK, BOOK.ID.equal(5));
    -BookRecord book2 = optimistic.fetch(BOOK, BOOK.ID.equal(5));
    -
    -// Change the title and store this book. The MODIFIED value has not been changed since the book was fetched. 
    -// It can be safely updated
    -book1.setTitle("Animal Farm");
    -book1.store();
    -
    -// Book2 still references the original MODIFIED value, but the database holds a new value from book1.store(). 
    -// This store() will thus fail:
    -book2.setTitle("1984");
    -book2.store();]]></java><html>
    -
    -									<p>
    -										As before, without the added TIMESTAMP column, optimistic locking is transparent to the API.
    -									</p>
    -									
    -									<h3>Optimised optimistic locking using VERSION fields</h3>
    -									<p>
    -										Instead of using TIMESTAMPs, you may also use numeric VERSION fields, containing version numbers that are incremented by jOOQ upon store() calls.
    -									</p>
    -
    -									<p>
    -										Note, for explicit pessimistic locking, please consider the manual's section about the <reference id="for-update-clause" title="FOR UPDATE clause"/>. For more details about how to configure TIMESTAMP or VERSION fields, consider the manual's section about <reference id="codegen-advanced" title="advanced code generator configuration"/>.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="batch-execution-for-crud">
    -								<title>Batch execution</title>
    -								<content><html>
    -									<p>
    -										When inserting, updating, deleting a lot of records, you may wish to profit from JDBC batch operations, which can be performed by jOOQ. These are available through jOOQ's <reference id="dsl-context" title="DSLContext"/> as shown in the following example:
    -									</p>
    -									
    -</html><java><![CDATA[// Fetch a bunch of books
    -List<BookRecord> books = create.fetch(BOOK);
    -
    -// Modify the above books, and add some new ones:
    -modify(books);
    -addMore(books);
    -
    -// Batch-update and/or insert all of the above books
    -create.batchStore(books);]]></java><html>					
    -
    -									<p>
    -										Internally, jOOQ will render all the required SQL statements and execute them as a regular <reference id="batch-execution" title="JDBC batch execution"/>. 
    -									</p>				
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -				    <section id="daos">
    -						<title>DAOs</title>
    -						<content><html>
    -							<p>
    -								If you're using jOOQ's <reference id="code-generation" title="code generator"/>, you can configure it to generate <reference id="pojos" title="POJOs" /> and DAOs for you. jOOQ then generates one DAO per <reference id="crud-with-updatablerecords" title="UpdatableRecord"/>, i.e. per table with a single-column primary key. Generated DAOs implement a common jOOQ type called <reference class="org.jooq.DAO"/>. This type contains the following methods:
    -							</p>
    -							
    -</html><java><![CDATA[// <R> corresponds to the DAO's related table
    -// <P> corresponds to the DAO's related generated POJO type
    -// <T> corresponds to the DAO's related table's primary key type. 
    -// Note that multi-column primary keys are not yet supported by DAOs
    -public interface DAO<R extends TableRecord<R>, P, T> {
    -
    -    // These methods allow for inserting POJOs
    -    void insert(P object) throws DataAccessException;
    -    void insert(P... objects) throws DataAccessException;
    -    void insert(Collection<P> objects) throws DataAccessException;
    -    
    -    // These methods allow for updating POJOs based on their primary key
    -    void update(P object) throws DataAccessException;
    -    void update(P... objects) throws DataAccessException;
    -    void update(Collection<P> objects) throws DataAccessException;
    -    
    -    // These methods allow for deleting POJOs based on their primary key
    -    void delete(P... objects) throws DataAccessException;
    -    void delete(Collection<P> objects) throws DataAccessException;
    -    void deleteById(T... ids) throws DataAccessException;
    -    void deleteById(Collection<T> ids) throws DataAccessException;
    -    
    -    // These methods allow for checking record existence
    -    boolean exists(P object) throws DataAccessException;
    -    boolean existsById(T id) throws DataAccessException;
    -    long count() throws DataAccessException;
    -    
    -    // These methods allow for retrieving POJOs by primary key or by some other field
    -    List<P> findAll() throws DataAccessException;
    -    P findById(T id) throws DataAccessException;
    -    <Z> List<P> fetch(Field<Z> field, Z... values) throws DataAccessException;
    -    <Z> P fetchOne(Field<Z> field, Z value) throws DataAccessException;
    -
    -    // These methods provide DAO meta-information
    -    Table<R> getTable();
    -    Class<P> getType();
    -}]]></java><html>
    -
    -							<p>
    -								Besides these base methods, generated DAO classes implement various useful fetch methods. An incomplete example is given here, for the BOOK table:
    -							</p>
    -
    -</html><java><![CDATA[// An example generated BookDao class
    -public class BookDao extends DAOImpl<BookRecord, Book, Integer> {
    -
    -    // Columns with primary / unique keys produce fetchOne() methods    
    -    public Book fetchOneById(Integer value) { ... }
    -
    -    // Other columns produce fetch() methods, returning several records
    -    public List<Book> fetchByAuthorId(Integer... values) { ... }
    -    public List<Book> fetchByTitle(String... values) { ... }
    -}]]></java><html>
    -							<p>
    -								Note that you can further subtype those pre-generated DAO classes, to add more useful DAO methods to them. Using such a DAO is simple:
    -							</p>
    -							
    -</html><java><![CDATA[// Initialise an Configuration
    -Configuration configuration = new DefaultConfiguration().set(connection).set(SQLDialect.ORACLE);
    -
    -// Initialise the DAO with the Configuration
    -BookDao bookDao = new BookDao(configuration);
    -
    -// Start using the DAO
    -Book book = bookDao.findById(5);
    -
    -// Modify and update the POJO
    -book.setTitle("1984");
    -book.setPublishedIn(1948);
    -bookDao.update(book);
    -
    -// Delete it again
    -bookDao.delete(book);]]></java></content>
    -					</section>
    -
    -				    <section id="exception-handling">
    -						<title>Exception handling</title>
    -						<content><html>
    -							<h3>Checked vs. unchecked exceptions</h3>
    -							<p>
    -								This is an eternal and religious debate. Pros and cons have been discussed time and again, and it still is a matter of taste, today. In this case, jOOQ clearly takes a side. jOOQ's exception strategy is simple:
    -							</p>
    -							<ul>
    -								<li>All "system exceptions" are unchecked. If in the middle of a transaction involving business logic, there is no way that you can recover sensibly from a lost database connection, or a constraint violation that indicates a bug in your understanding of your database model.</li>
    -								<li>All "business exceptions" are checked. Business exceptions are true exceptions that you should handle (e.g. not enough funds to complete a transaction).</li>
    -							</ul>
    -							<p>
    -								With jOOQ, it's simple. All of jOOQ's exceptions are "system exceptions", hence they are all unchecked.
    -							</p>
    -							
    -							<h3>jOOQ's DataAccessException</h3>
    -							<p>
    -								jOOQ uses its own <reference class="org.jooq.exception.DataAccessException"/> to wrap any underlying <reference class="java.sql.SQLException"/> that might have occurred. Note that all methods in jOOQ that may cause such a DataAccessException document this both in the Javadoc as well as in their method signature.
    -							</p>
    -							<p>
    -								DataAccessException is subtyped several times as follows:
    -							</p>
    -							<ul>
    -								<li><strong>DataAccessException</strong>: General exception usually originating from a <reference class="java.sql.SQLException"/></li>
    -								<li><strong>DataChangedException</strong>: An exception indicating that the database's underlying record has been changed in the mean time (see <reference id="optimistic-locking" title="optimistic locking"/>)</li>
    -								<li><strong>DataTypeException</strong>: Something went wrong during type conversion</li>
    -								<li><strong>DetachedException</strong>: A SQL statement was executed on a "detached" <reference id="crud-with-updatablerecords" title="UpdatableRecord"/> or a "detached" <reference id="sql-statements" title="SQL statement"/>.</li>
    -								<li><strong>InvalidResultException</strong>: An operation was performed expecting only one result, but several results were returned.</li>
    -								<li><strong>MappingException</strong>: Something went wrong when loading a record from a <reference id="pojos" title="POJO"/> or when mapping a record into a POJO</li>
    -							</ul>
    -							
    -							<h3>Override jOOQ's exception handling</h3>
    -							<p>
    -								The following section about <reference id="execute-listeners" title="execute listeners"/> documents means of overriding jOOQ's exception handling, if you wish to deal separately with some types of constraint violations, or if you raise business errors from your database, etc.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="execute-listeners">
    -						<title>ExecuteListeners</title>
    -						<content><html>
    -							<p>
    -								The <reference id="dsl-context" title="Executor class"/> lets you specify a list of <reference class="org.jooq.ExecuteListener"/> instances. The ExecuteListener is essentially an event listener for Query, Routine, or ResultSet render, prepare, bind, execute, fetch steps. It is a base type for loggers, debuggers, profilers, data collectors, triggers, etc. Advanced ExecuteListeners can also provide custom implementations of Connection, PreparedStatement and ResultSet to jOOQ in apropriate methods.
    -							</p>
    -							<p>
    -								For convenience and better backwards-compatibility, consider extending <reference class="org.jooq.impl.DefaultExecuteListener"/> instead of implementing this interface.
    -							</p>
    -							<p>
    -								Here is a sample implementation of an ExecuteListener, that is simply counting the number of queries per type that are being executed using jOOQ:
    -							</p>
    -
    -</html><java><![CDATA[package com.example;
    -
    -// Extending DefaultExecuteListener, which provides empty implementations for all methods...
    -public class StatisticsListener extends DefaultExecuteListener {
    -    public static Map<ExecuteType, Integer> STATISTICS = new HashMap<ExecuteType, Integer>();
    -
    -    // Count "start" events for every type of query executed by jOOQ
    -    @Override
    -    public void start(ExecuteContext ctx) {
    -        synchronized (STATISTICS) {
    -            Integer count = STATISTICS.get(ctx.type());
    -    
    -            if (count == null) {
    -                count = 0;
    -            }
    -    
    -            STATISTICS.put(ctx.type(), count + 1);
    -        }
    -    }
    -}]]></java><html>
    -
    -							<p>
    -								Now, configure jOOQ's runtime to load your listener
    -							</p>
    -
    -</html><java><![CDATA[// Create a configuration with an appropriate listener provider:
    -Configuration configuration = new DefaultConfiguration().set(connection).set(dialect);
    -configuration.set(new DefaultExecuteListenerProvider(new StatisticsListener()));
    -
    -// Create a DSLContext from the above configuration
    -DSLContext create = DSL.using(configuration);]]></java><html>
    -
    -							<p>
    -								And log results any time with a snippet like this:
    -							</p>
    -
    -</html><java><![CDATA[log.info("STATISTICS");
    -log.info("----------");
    -
    -for (ExecuteType type : ExecuteType.values()) {
    -    log.info(type.name(), StatisticsListener.STATISTICS.get(type) + " executions");
    -}]]></java><html>
    -                            <p>
    -                            	This may result in the following log output:
    -                            </p>
    -
    -</html><config>15:16:52,982  INFO - TEST STATISTICS
    -15:16:52,982  INFO - ---------------
    -15:16:52,983  INFO - READ                     : 919 executions
    -15:16:52,983  INFO - WRITE                    : 117 executions
    -15:16:52,983  INFO - DDL                      : 2 executions
    -15:16:52,983  INFO - BATCH                    : 4 executions
    -15:16:52,983  INFO - ROUTINE                  : 21 executions
    -15:16:52,983  INFO - OTHER                    : 30 executions</config><html>
    -
    -							<p>
    -								Please read the <reference class="org.jooq.ExecuteListener" title="ExecuteListener Javadoc"/> for more details
    -							</p>
    -							
    -							<h3>Writing a custom ExecuteListener for logging</h3>
    -							<p>
    -								The following depicts an example of a custom ExecuteListener, which pretty-prints all queries being executed by jOOQ to stdout:
    -							</p>
    -
    -</html><java><![CDATA[import org.jooq.DSLContext;
    -import org.jooq.ExecuteContext;
    -import org.jooq.conf.Settings;
    -import org.jooq.impl.DefaultExecuteListener;
    -import org.jooq.tools.StringUtils;
    -
    -public class PrettyPrinter extends DefaultExecuteListener {
    -
    -    /**
    -     * Hook into the query execution lifecycle before executing queries
    -     */
    -    @Override
    -    public void executeStart(ExecuteContext ctx) {
    -
    -        // Create a new DSLContext for logging rendering purposes
    -        // This DSLContext doesn't need a connection, only the SQLDialect...
    -        DSLContext create = DSL.using(ctx.dialect(), 
    -        
    -        // ... and the flag for pretty-printing
    -        	new Settings().withRenderFormatted(true));
    -
    -        // If we're executing a query
    -        if (ctx.query() != null) {
    -            System.out.println(create.renderInlined(ctx.query()));
    -        }
    -        
    -        // If we're executing a routine
    -        else if (ctx.routine() != null) {
    -            System.out.println(create.renderInlined(ctx.routine()));
    -        }
    -        
    -        // If we're executing anything else (e.g. plain SQL)
    -        else if (!StringUtils.isBlank(ctx.sql())) {
    -            System.out.println(ctx.sql());
    -        }
    -    }
    -}]]></java><html>
    -							<p>
    -								See also the manual's sections about <reference id="logging" title="logging"/> and the <reference id="jooq-console" title="jOOQ Console"/> for more sample implementations of actual ExecuteListeners.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -					<section id="meta-data">
    -						<title>Database meta data</title>
    -						<content><html>
    -							<p>
    -								Since jOOQ 3.0, a simple wrapping API has been added to wrap JDBC's rather awkward <reference class="java.sql.DatabaseMetaData"/>. This API is still experimental, as the calls to the underlying JDBC type are not always available for all SQL dialects.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="logging">
    -						<title>Logging</title>
    -						<content><html>
    -							<p>
    -								jOOQ logs all SQL queries and fetched result sets to its internal DEBUG logger, which is implemented as an <reference id="execute-listeners" title="execute listener"/>. By default, execute logging is activated in the <reference id="custom-settings" title="jOOQ Settings"/>. In order to see any DEBUG log output, put either log4j or slf4j on jOOQ's classpath along with their respective configuration. A sample log4j configuration can be seen here:
    -							</p>
    -							
    -</html><xml><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
    -<log4j:configuration>
    -    <appender name="stdout" class="org.apache.log4j.ConsoleAppender">
    -        <layout class="org.apache.log4j.PatternLayout">
    -            <param name="ConversionPattern" value="%m%n" />
    -        </layout>
    -    </appender>
    -
    -    <root>
    -        <priority value="debug" />
    -        <appender-ref ref="stdout" />
    -    </root>
    -</log4j:configuration>]]></xml><html>
    -
    -							<p>
    -								With the above configuration, let's fetch some data with jOOQ
    -							</p>
    -							
    -</html><java><![CDATA[// Using H2, this time
    -create.select(BOOK.ID, BOOK.TITLE).from(BOOK).orderBy(BOOK.ID).limit(1, 2).fetch();]]></java><html>
    -
    -							<p>
    -								The above query may result in the following log output:
    -							</p>
    -
    -</html><text><![CDATA[Executing query          : select "BOOK"."ID", "BOOK"."TITLE" from "BOOK" order by "BOOK"."ID" asc, limit ? offset ?
    --> with bind values      : select "BOOK"."ID", "BOOK"."TITLE" from "BOOK" order by "BOOK"."ID" asc, limit 2 offset 1
    -Query executed           : Total: 1.439ms
    -Fetched result           : +----+------------+
    -                         : |  ID|TITLE       |
    -                         : +----+------------+
    -                         : |   2|Animal Farm |
    -                         : |   3|O Alquimista|
    -                         : +----+------------+
    -Finishing                : Total: 4.814ms, +3.375ms
    -]]></text><html>
    -
    -							<p>
    -								Essentially, jOOQ will log
    -							</p>
    -							<ul>
    -								<li>The SQL statement as rendered to the prepared statement</li>
    -								<li>The SQL statement with inlined bind values (for improved debugging)</li>
    -								<li>The query execution time</li>
    -								<li>The first 5 records of the result. This is formatted using <reference id="exporting-text" title="jOOQ's text export"/></li>
    -								<li>The total execution + fetching time</li>
    -							</ul>
    -
    -							<p>
    -								If you wish to use your own logger (e.g. avoiding printing out sensitive data), you can deactivate jOOQ's logger using <reference id="custom-settings" title="your custom settings"/> and implement your own <reference id="execute-listeners" title="execute listener logger"/>.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="performance-considerations">
    -						<title>Performance considerations</title>
    -						<content><html>
    -							<p>
    -								Many users may have switched from higher-level abstractions such as Hibernate to jOOQ, because of Hibernate's difficult-to-manage performance, when it comes to large database schemas and complex second-level caching strategies. However, jOOQ itself is not a lightweight database abstraction framework, and it comes with its own overhead. Please be sure to consider the following points:
    -							</p>
    -							<ul>
    -								<li>It takes some time to construct jOOQ queries. If you can reuse the same queries, you might cache them. Beware of thread-safety issues, though, as jOOQ's <reference id="dsl-context" title="Configuration"/> is not necessarily threadsafe, and queries are "attached" to their creating DSLContext</li>
    -								<li>It takes some time to render SQL strings. Internally, jOOQ reuses the same <reference class="java.lang.StringBuilder"/> for the complete query, but some rendering elements may take their time. You could, of course, cache SQL generated by jOOQ and prepare your own <reference class="java.sql.PreparedStatement"/> objects</li>
    -								<li>It takes some time to bind values to prepared statements. jOOQ does not keep any open prepared statements, internally. Use a sophisticated connection pool, that will cache prepared statements and inject them into jOOQ through the standard JDBC API</li>
    -								<li>It takes some time to fetch results. By default, jOOQ will always fetch the complete <reference class="java.sql.ResultSet"/> into memory. Use <reference id="lazy-fetching" title="lazy fetching"/> to prevent that, and scroll over an open underlying database cursor</li>
    -							</ul>
    -							
    -							<h3>Optimise wisely</h3>
    -							<p>
    -								Don't be put off by the above paragraphs. You should optimise wisely, i.e. only in places where you really need very high throughput to your database. jOOQ's overhead compared to plain JDBC is typically less than 1ms per query.
    -							</p>
    -						</html></content>
    -					</section>
    -				</sections>
    -			</section>
    -
    -			<section id="code-generation">
    -				<title>Code generation</title>
    -				<content><html>
    -					<p>
    -						While optional, source code generation is one of jOOQ's main assets if you wish to increase developer productivity. jOOQ's code generator takes your database schema and reverse-engineers it into a set of Java classes modelling <reference id="table-expressions" title="tables"/>, <reference id="record-vs-tablerecord" title="records"/>, <reference id="sequence-execution" title="sequences"/>, <reference id="pojos" title="POJOs"/>, <reference id="daos" title="DAOs"/>, <reference id="stored-procedures" title="stored procedures"/>, user-defined types and many more.
    -					</p>
    -					<p>
    -						The essential ideas behind source code generation are these:
    -					</p>
    -					<ul>
    -						<li><strong>Increased IDE support</strong>: Type your Java code directly against your database schema, with all type information available</li>
    -						<li><strong>Type-safety</strong>: When your database schema changes, your generated code will change as well. Removing columns will lead to compilation errors, which you can detect early.</li>
    -					</ul>
    -					<p>
    -						The following chapters will show how to configure the code generator and how to generate various artefacts.
    -					</p>
    -				</html></content>
    -
    -				<sections>
    -				    <section id="codegen-configuration">
    -						<title>Configuration and setup of the generator</title>
    -						<content><html>
    -							<p>
    -								There are three binaries available with jOOQ, to be downloaded from <a href="https://sourceforge.net/projects/jooq/">SourceForge</a> or from Maven central:
    -							</p>
    -							<ul>
    -								<li>
    -									<strong>jooq-{jooq-version}.jar</strong>
    -									<br />
    -									The main library that you will include in your application to run jOOQ
    -								</li>
    -								<li>
    -									<strong>jooq-meta-{jooq-version}.jar</strong>
    -									<br />
    -									The utility that you will include in your build to navigate your database schema for code generation. This can be used as a schema crawler as well.
    -								</li>
    -								<li>
    -									<strong>jooq-codegen-{jooq-version}.jar</strong>
    -									<br />
    -									The utility that you will include in your build to generate your database schema
    -								</li>
    -							</ul>
    -
    -							<h3>Configure jOOQ's code generator</h3>
    -							<p>
    -								You need to tell jOOQ some things about your database connection. Here's an example of how to do it for an Oracle database
    -							</p>
    -							
    -</html><xml><![CDATA[<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    -<configuration>
    -  <!-- Configure the database connection here -->
    -  <jdbc>
    -    <driver>oracle.jdbc.OracleDriver</driver>
    -    <url>jdbc:oracle:thin:@[your jdbc connection parameters]</url>
    -    <user>[your database user]</user>
    -    <password>[your database password]</password>
    -    
    -    <!-- You can also pass user/password and other JDBC properties in the optional properties tag: -->
    -    <properties>
    -      <property><key>user</key><value>[db-user]</value></property>
    -      <property><key>password</key><value>[db-password]</value></property>
    -    </properties>
    -  </jdbc>
    -
    -  <generator>
    -    <database>
    -      <!-- The database dialect from jooq-meta. Available dialects are
    -           named org.util.[database].[database]Database. Known values are:
    -
    -           org.jooq.util.ase.ASEDatabase (to be used with Sybase ASE)
    -           org.jooq.util.cubrid.CUBRIDDatabase
    -           org.jooq.util.db2.DB2Database
    -           org.jooq.util.derby.DerbyDatabase
    -           org.jooq.util.h2.H2Database
    -           org.jooq.util.hsqldb.HSQLDBDatabase
    -           org.jooq.util.ingres.IngresDatabase
    -           org.jooq.util.mysql.MySQLDatabase
    -           org.jooq.util.oracle.OracleDatabase
    -           org.jooq.util.postgres.PostgresDatabase
    -           org.jooq.util.sqlite.SQLiteDatabase
    -           org.jooq.util.sqlserver.SQLServerDatabase
    -           org.jooq.util.sybase.SybaseDatabase (to be used with Sybase SQL Anywhere)
    -
    -           You can also provide your own org.jooq.util.Database implementation
    -           here, if your database is currently not supported or if you wish to
    -           read the database schema from a file, such as a Hibernate .hbm.xml file -->
    -      <name>org.jooq.util.oracle.OracleDatabase</name>
    -
    -      <!-- All elements that are generated from your schema (A Java regular expression. 
    -           Use the pipe to separate several expressions) Watch out for
    -           case-sensitivity. Depending on your database, this might be
    -           important! You can create case-insensitive regular expressions
    -           using this syntax: (?i:expr) -->
    -      <includes>.*</includes>
    -
    -      <!-- All elements that are excluded from your schema (A Java regular expression. 
    -           Use the pipe to separate several expressions). Excludes match before
    -           includes -->
    -      <excludes></excludes>
    -
    -      <!-- The schema that is used locally as a source for meta information.
    -           This could be your development schema or the production schema, etc
    -           This cannot be combined with the schemata element.
    -
    -           If left empty, jOOQ will generate all available schemata. See the
    -           manual's next section to learn how to generate several schemata -->
    -      <inputSchema>[your database schema / owner / name]</inputSchema>
    -    </database>
    -
    -    <generate>
    -      <!-- Generation flags: See advanced configuration properties -->
    -    </generate>
    -
    -    <target>
    -      <!-- The destination package of your generated classes (within the
    -           destination directory) -->
    -      <packageName>[org.jooq.your.packagename]</packageName>
    -
    -      <!-- The destination directory of your generated classes -->
    -      <directory>[/path/to/your/dir]</directory>
    -    </target>
    -  </generator>
    -</configuration>]]></xml><html>
    -
    -							<p>
    -								There are also lots of advanced configuration parameters, which will be treated in the <reference id="codegen-advanced" title="manual's section about advanced code generation features"/> Note, you can find the official XSD file for a formal specification at:<br/>
    -							    <a href="http://www.jooq.org/xsd/jooq-codegen-{codegen-xsd-version}.xsd" title="The jOOQ-codegen configuration XSD">http://www.jooq.org/xsd/jooq-codegen-{codegen-xsd-version}.xsd</a>
    -						    </p>
    -
    -							<h3>Run jOOQ code generation</h3>
    -							<p>
    -								Code generation works by calling this class with the above property file as argument.
    -							</p>
    -							
    -</html><config>org.jooq.util.GenerationTool /jooq-config.xml</config><html>
    -
    -							<p>
    -								Be sure that these elements are located on the classpath:
    -							</p>
    -							
    -							<ul>
    -								<li>The XML configuration file</li>
    -								<li>jooq-{jooq-version}.jar, jooq-meta-{jooq-version}.jar, jooq-codegen-{jooq-version}.jar</li>
    -								<li>The JDBC driver you configured</li>
    -							</ul>
    -
    -							<h3>A command-line example (For Windows, unix/linux/etc will be similar)</h3>
    -							<ul>
    -								<li>Put the property file, jooq*.jar and the JDBC driver into a directory, e.g. C:\temp\jooq</li>
    -							    <li>Go to C:\temp\jooq</li>
    -							    <li>Run java -cp jooq-{jooq-version}.jar;jooq-meta-{jooq-version}.jar;jooq-codegen-{jooq-version}.jar;[JDBC-driver].jar;. org.jooq.util.GenerationTool /[XML file] </li>
    -							</ul>
    -							<p>
    -								Note that the property file must be passed as a classpath resource
    -							</p>
    -
    -							<h3>Run code generation from Eclipse</h3>
    -							<p>
    -								Of course, you can also run code generation from your IDE. In Eclipse, set up a project like this. Note that:
    -							</p>
    -                            <ul>
    -                                <li>this example uses jOOQ's log4j support by adding log4j.xml and log4j.jar to the project classpath.</li>
    -                                <li>the actual jooq-{jooq-version}.jar, jooq-meta-{jooq-version}.jar, jooq-codegen-{jooq-version}.jar artefacts may contain version numbers in the file names.</li>
    -                            </ul>
    -                            
    -							<div class="screenshot">
    -							<img class="screenshot" src="&lt;?=$root?&gt;/img/eclipse-example-01.png" alt="Eclipse configuration"/>
    -							</div>
    -
    -							<p>
    -								Once the project is set up correctly with all required artefacts on the classpath, you can configure an Eclipse Run Configuration for org.jooq.util.GenerationTool.
    -							</p>
    -							<div class="screenshot">
    -							<img class="screenshot" src="&lt;?=$root?&gt;/img/eclipse-example-02.png" alt="Eclipse configuration"/>
    -							</div>
    -
    -							<p>
    -								With the XML file as an argument
    -							</p>
    -							<div class="screenshot">
    -							<img class="screenshot" src="&lt;?=$root?&gt;/img/eclipse-example-03.png" alt="Eclipse configuration"/>
    -							</div>
    -
    -							<p>
    -								And the classpath set up correctly
    -							</p>
    -							<div class="screenshot">
    -							<img class="screenshot" src="&lt;?=$root?&gt;/img/eclipse-example-04.png" alt="Eclipse configuration"/>
    -							</div>
    -
    -							<p>
    -								Finally, run the code generation and see your generated artefacts
    -							</p>
    -							<div class="screenshot">
    -							<img class="screenshot" src="&lt;?=$root?&gt;/img/eclipse-example-05.png" alt="Eclipse configuration"/>
    -							</div>
    -
    -							<h3>Run generation with ant</h3>
    -							<p>
    -								When running code generation with ant's &lt;java/&gt; task, you may have to set fork="true":
    -							</p>
    -
    -</html><xml><![CDATA[<!-- Run the code generation task -->
    -<target name="generate-test-classes">
    -  <java fork="true" classname="org.jooq.util.GenerationTool">
    -    [...]
    -  </java><html>
    -</target>
    -]]></xml><html>
    -
    -							<h3>Integrate generation with Maven</h3>
    -							<p>
    -								Using the official jOOQ-codegen-maven plugin, you can integrate source code generation in your Maven build process:
    -							</p>
    -
    -</html><xml><![CDATA[<plugin>
    -
    -  <!-- Specify the maven code generator plugin -->
    -  <groupId>org.jooq</groupId>
    -  <artifactId>jooq-codegen-maven</artifactId>
    -  <version>{jooq-version}</version>
    -
    -  <!-- The plugin should hook into the generate goal -->
    -  <executions>
    -    <execution>
    -      <goals>
    -        <goal>generate</goal>
    -      </goals>
    -    </execution>
    -  </executions>
    -
    -  <!-- Manage the plugin's dependency. In this example, we'll use a PostgreSQL database -->
    -  <dependencies>
    -    <dependency>
    -      <groupId>postgresql</groupId>
    -      <artifactId>postgresql</artifactId>
    -      <version>8.4-702.jdbc4</version>
    -    </dependency>
    -  </dependencies>
    -
    -  <!-- Specify the plugin configuration.
    -       The configuration format is the same as for the standalone code generator -->
    -  <configuration>
    -
    -    <!-- JDBC connection parameters -->
    -    <jdbc>
    -      <driver>org.postgresql.Driver</driver>
    -      <url>jdbc:postgresql:postgres</url>
    -      <user>postgres</user>
    -      <password>test</password>
    -    </jdbc>
    -
    -    <!-- Generator parameters -->
    -    <generator>
    -      <name>org.jooq.util.DefaultGenerator</name>
    -      <database>
    -        <name>org.jooq.util.postgres.PostgresDatabase</name>
    -        <includes>.*</includes>
    -        <excludes></excludes>
    -        <inputSchema>public</inputSchema>
    -      </database>
    -      <target>
    -        <packageName>org.jooq.util.maven.example</packageName>
    -        <directory>target/generated-sources/jooq</directory>
    -      </target>
    -    </generator>
    -  </configuration>
    -</plugin>
    -]]></xml><html>
    -
    -							<p>
    -								See the full example of a pom.xml including the jOOQ-codegen artefact here:<br/>
    -								<a href="https://github.com/jOOQ/jOOQ/blob/master/jOOQ-codegen-maven-example/pom.xml"
    -								  title="jOOQ-codegen-maven example pom.xml file">https://github.com/jOOQ/jOOQ/blob/master/jOOQ-codegen-maven-example/pom.xml</a>
    -							  </p>
    -
    -							<h3>Use jOOQ generated classes in your application</h3>
    -							<p>
    -								Be sure, both jooq-{jooq-version}.jar and your generated package (see configuration) are located on your classpath. Once this is done, you can execute SQL statements with your generated classes.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-advanced">
    -						<title>Advanced generator configuration</title>
    -						<content><html>
    -							<p>
    -								In the <reference id="codegen-configuration" title="previous section"/> we have seen how jOOQ's source code generator is configured and run within a few steps. In this chapter we'll cover some advanced settings
    -							</p>
    -
    -</html><xml><![CDATA[<!-- These properties can be added directly to the generator element: -->
    -<generator>
    -  <!-- The default code generator. You can override this one, to generate your own code style
    -       Defaults to org.jooq.util.DefaultGenerator -->
    -  <name>org.jooq.util.DefaultGenerator</name>
    -
    -  <!-- The naming strategy used for class and field names.
    -       You may override this with your custom naming strategy. Some examples follow
    -       Defaults to org.jooq.util.DefaultGeneratorStrategy -->
    -  <strategy>
    -    <name>org.jooq.util.DefaultGeneratorStrategy</name>
    -  </strategy>
    -</generator>]]></xml><html>
    -
    -							<p>
    -								The following example shows how you can override the DefaultGeneratorStrategy to render table and column names the way they are defined in the database, rather than switching them to camel case:
    -							</p>
    -
    -</html><java><![CDATA[/**
    - * It is recommended that you extend the DefaultGeneratorStrategy. Most of the
    - * GeneratorStrategy API is already declared final. You only need to override any
    - * of the following methods, for whatever generation behaviour you'd like to achieve
    - *
    - * Beware that most methods also receive a "Mode" object, to tell you whether a
    - * TableDefinition is being rendered as a Table, Record, POJO, etc. Depending on
    - * that information, you can add a suffix only for TableRecords, not for Tables
    - */
    -public class AsInDatabaseStrategy extends DefaultGeneratorStrategy {
    -
    -    /**
    -     * Override this to specifiy what identifiers in Java should look like.
    -     * This will just take the identifier as defined in the database.
    -     */
    -    @Override
    -    public String getJavaIdentifier(Definition definition) {
    -        return definition.getOutputName();
    -    }
    -
    -    /**
    -     * Override these to specify what a setter in Java should look like. Setters
    -     * are used in TableRecords, UDTRecords, and POJOs. This example will name
    -     * setters "set[NAME_IN_DATABASE]"
    -     */
    -    @Override
    -    public String getJavaSetterName(Definition definition, Mode mode) {
    -        return "set" + definition.getOutputName();
    -    }
    -
    -    /**
    -     * Just like setters...
    -     */
    -    @Override
    -    public String getJavaGetterName(Definition definition, Mode mode) {
    -        return "get" + definition.getOutputName();
    -    }
    -
    -    /**
    -     * Override this method to define what a Java method generated from a database
    -     * Definition should look like. This is used mostly for convenience methods
    -     * when calling stored procedures and functions. This example shows how to
    -     * set a prefix to a CamelCase version of your procedure
    -     */
    -    @Override
    -    public String getJavaMethodName(Definition definition, Mode mode) {
    -        return "call" + org.jooq.tools.StringUtils.toCamelCase(definition.getOutputName());
    -    }
    -
    -    /**
    -     * Override this method to define how your Java classes and Java files should
    -     * be named. This example applies no custom setting and uses CamelCase versions
    -     * instead
    -     */
    -    @Override
    -    public String getJavaClassName(Definition definition, Mode mode) {
    -        return super.getJavaClassName(definition, mode);
    -    }
    -
    -    /**
    -     * Override this method to re-define the package names of your generated
    -     * artefacts.
    -     */
    -    @Override
    -    public String getJavaPackageName(Definition definition, Mode mode) {
    -        return super.getJavaPackageName(definition, mode);
    -    }
    -
    -    /**
    -     * Override this method to define how Java members should be named. This is
    -     * used for POJOs and method arguments
    -     */
    -    @Override
    -    public String getJavaMemberName(Definition definition, Mode mode) {
    -        return definition.getOutputName();
    -    }
    -
    -    /**
    -     * Override this method to define the base class for those artefacts that
    -     * allow for custom base classes
    -     */
    -    @Override
    -    public String getJavaClassExtends(Definition definition, Mode mode) {
    -        return Object.class.getName();
    -    }
    -
    -    /**
    -     * Override this method to define the interfaces to be implemented by those
    -     * artefacts that allow for custom interface implementation
    -     */
    -    @Override
    -    public List<String> getJavaClassImplements(Definition definition, Mode mode) {
    -        return Arrays.asList(Serializable.class.getName(), Cloneable.class.getName());
    -    }
    -
    -    /**
    -     * Override this method to define the suffix to apply to routines when
    -     * they are overloaded.
    -     *
    -     * Use this to resolve compile-time conflicts in generated source code, in
    -     * case you make heavy use of procedure overloading
    -     */
    -    @Override
    -    public String getOverloadSuffix(Definition definition, Mode mode, String overloadIndex) {
    -        return "_OverloadIndex_" + overloadIndex;
    -    }
    -}]]></java><html>
    -
    -                            <p>
    -                                More examples can be found here:
    -                            </p>
    -                            <ul>
    -                                <li><a href="https://github.com/jOOQ/jOOQ/blob/master/jOOQ-codegen/src/main/java/org/jooq/util/example/JPrefixGeneratorStrategy.java">org.jooq.util.example.JPrefixGeneratorStrategy</a></li>
    -                                <li><a href="https://github.com/jOOQ/jOOQ/blob/master/jOOQ-codegen/src/main/java/org/jooq/util/example/JVMArgsGeneratorStrategy.java">org.jooq.util.example.JVMArgsGeneratorStrategy</a></li>
    -                            </ul>
    -
    -                            <h3>jooq-meta configuration</h3>
    -							<p>
    -								Within the &lt;generator/&gt; element, there are other configuration elements:
    -							</p>
    -
    -</html><xml><![CDATA[<!-- These properties can be added to the database element: -->
    -<database>
    -
    -  <!-- All table and view columns that are used as "version" fields for
    -       optimistic locking (A Java regular expression. Use the pipe to separate several expressions).
    -       See UpdatableRecord.store() and UpdatableRecord.delete() for details -->
    -  <recordVersionFields>REC_VERSION</recordVersionFields/>
    -
    -  <!-- All table and view columns that are used as "timestamp" fields for
    -       optimistic locking (A Java regular expression. Use the pipe to separate several expressions).
    -       See UpdatableRecord.store() and UpdatableRecord.delete() for details -->
    -  <recordTimestampFields>REC_TIMESTAMP</recordTimestampFields/>
    -      
    -  <!-- Generate java.sql.Timestamp fields for DATE columns. This is
    -       particularly useful for Oracle databases.
    -       Defaults to false -->
    -  <dateAsTimestamp>false</dateAsTimestamp>
    -
    -  <!-- Generate jOOU data types for your unsigned data types, which are
    -       not natively supported in Java.
    -       Defaults to true -->
    -  <unsignedTypes>true</unsignedTypes>
    -
    -  <!-- The schema that is used in generated source code. This will be the
    -       production schema. Use this to override your local development
    -       schema name for source code generation. If not specified, this
    -       will be the same as the input-schema. -->
    -  <outputSchema>[your database schema / owner / name]</outputSchema>
    -
    -  <!-- A configuration element to configure several input and/or output
    -       schemata for jooq-meta, in case you're using jooq-meta in a multi-
    -       schema environment.
    -       This cannot be combined with the above inputSchema / outputSchema -->
    -  <schemata>
    -    <schema>
    -      <inputSchema>...</inputSchema>
    -      <outputSchema>...</outputSchema>
    -    </schema>
    -    [ <schema>...</schema> ... ]
    -  </schemata>
    -
    -  <!-- A configuration element to configure custom data types -->
    -  <customTypes>...</customTypes>
    -
    -  <!-- A configuration element to configure type overrides for generated
    -       artefacts (e.g. in combination with customTypes) -->
    -  <forcedTypes>...</forcedTypes>
    -</database>]]></xml><html>
    -
    -							<p>
    -								Check out the some of the manual's "advanced" sections to find out more about the advanced configuration parameters.
    -							</p>
    -							<ul>
    -								<li><reference id="schema-mapping" title="Schema mapping"/></li>
    -								<li><reference id="custom-data-types" title="Custom types"/></li>
    -							</ul>
    -
    -							<h3>jooq-codegen configuration</h3>
    -                            <p>
    -                            	Also, you can add some optional advanced configuration parameters for the generator:
    -                           	</p>
    -
    -</html><xml><![CDATA[<!-- These properties can be added to the generate element: -->
    -<generate>
    -  <!-- Primary key / foreign key relations should be generated and used.
    -       This is a prerequisite for various advanced features.
    -       Defaults to true -->
    -  <relations>true</relations>
    -
    -  <!-- Generate deprecated code for backwards compatibility
    -       Defaults to true -->
    -  <deprecated>true</deprecated>
    -
    -  <!-- Generate instance fields in your tables, as opposed to static
    -       fields. This simplifies aliasing.
    -       Defaults to true -->
    -  <instanceFields>true</instanceFields>
    -
    -  <!-- Generate the javax.annotation.Generated annotation to indicate
    -       jOOQ version used for source code.
    -       Defaults to true -->
    -  <generatedAnnotation>true</generatedAnnotation>
    -
    -  <!-- Generate jOOQ Record classes for type-safe querying. You can
    -       turn this off, if you don't need "active records" for CRUD
    -       Defaults to true -->
    -  <records>true</records>
    -
    -  <!-- Generate POJOs in addition to Record classes for usage of the
    -       ResultQuery.fetchInto(Class) API
    -       Defaults to false -->
    -  <pojos>false</pojos>
    -
    -  <!-- Generate immutable POJOs for usage of the ResultQuery.fetchInto(Class) API
    -       This overrides any value set in <pojos/>
    -       Defaults to false -->
    -  <immutablePojos>false</immutablePojos>
    -
    -  <!-- Generate interfaces that will be implemented by records and/or pojos.
    -       You can also use these interfaces in Record.into(Class<?>) and similar
    -       methods, to let jOOQ return proxy objects for them.
    -       Defaults to false -->
    -  <interfaces>false</interfaces>
    -
    -  <!-- Generate DAOs in addition to POJO classes
    -       Defaults to false -->
    -  <daos>false</daos>
    -
    -  <!-- Annotate POJOs and Records with JPA annotations for increased
    -       compatibility and better integration with JPA/Hibernate, etc
    -       Defaults to false -->
    -  <jpaAnnotations>false</jpaAnnotations>
    -
    -  <!-- Annotate POJOs and Records with JSR-303 validation annotations
    -       Defaults to false -->
    -  <validationAnnotations>false</validationAnnotations>
    -  
    -  <!-- Allow to turn off the generation of global object references, which include
    -  
    -       - Tables.java
    -       - Sequences.java
    -       - UDTs.java
    -  
    -       Turning off the generation of the above files may be necessary for very
    -       large schemas, which exceed the amount of allowed constants in a class's
    -       constant pool (64k) or, whose static initialiser would exceed 64k of
    -       byte code
    -       
    -       Defaults to true -->
    -  <globalObjectReferences>true</globalObjectReferences>
    -</generate>]]></xml><html>
    -
    -							<h3>Property interdependencies</h3>
    -							<p>
    -								Some of the above properties depend on other properties to work correctly. For instance, when generating immutable pojos, pojos must be generated. jOOQ will enforce such properties even if you tell it otherwise. Here is a list of property interdependencies:
    -							</p>
    -							
    -							<ul>
    -								<li>When <code>daos = true</code>, then jOOQ will set <code>relations = true</code></li>
    -								<li>When <code>daos = true</code>, then jOOQ will set <code>records = true</code></li>
    -								<li>When <code>daos = true</code>, then jOOQ will set <code>pojos = true</code></li>
    -								<li>When <code>immutablePojos = true</code>, then jOOQ will set <code>pojos = true</code></li>
    -							</ul>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-globals">
    -						<title>Generated global artefacts</title>
    -						<content><html>
    -							<p>
    -								For increased convenience at the use-site, jOOQ generates "global" artefacts at the code generation root location, referencing tables, routines, sequences, etc. In detail, these global artefacts include the following:
    -							</p>
    -							<ul>
    -								<li><strong>Keys.java</strong>: This file contains all of the required primary key, unique key, foreign key and identity references in the form of static members of type <reference class="org.jooq.Key"/>.</li>
    -								<li><strong>Routines.java</strong>: This file contains all standalone routines (not in packages) in the form of static factory methods for <reference class="org.jooq.Routine"/> types.</li>
    -								<li><strong>Sequences.java</strong>: This file contains all sequence objects in the form of static members of type <reference class="org.jooq.Sequence"/>.</li>
    -								<li><strong>Tables.java</strong>: This file contains all table objects in the form of static member references to the actual singleton <reference class="org.jooq.Table"/> object</li>
    -								<li><strong>UDTs.java</strong>: This file contains all UDT objects in the form of static member references to the actual singleton <reference class="org.jooq.UDT"/> object</li>
    -							</ul>
    -							
    -							<h3>Referencing global artefacts</h3>
    -							<p>
    -								When referencing global artefacts from your client application, you would typically static import them as such:
    -							</p>
    -							
    -</html><java><![CDATA[// Static imports for all global artefacts
    -import static com.example.generated.Routines.*;
    -import static com.example.generated.Sequences.*;
    -import static com.example.generated.Tables.*;
    -
    -// You could then reference your artefacts as follows:
    -create.insertInto(MY_TABLE)
    -      .values(MY_SEQUENCE.nextval(), myFunction())
    -      
    -// as a more concise form of this:
    -create.insertInto(com.example.generated.Tables.MY_TABLE)
    -      .values(com.example.generated.Sequences.MY_SEQUENCE.nextval(), com.example.generated.Routines.myFunction())]]></java></content>
    -					</section>
    -
    -				    <section id="codegen-tables">
    -						<title>Generated tables</title>
    -						<content><html>
    -							<p>
    -								Every table in your database will generate a <reference class="org.jooq.Table"/> implementation that looks like this:
    -							</p>
    -							
    -</html><java><![CDATA[public class Book extends TableImpl<BookRecord> {
    -
    -    // The singleton instance
    -    public static final Book BOOK = new Book();
    -
    -    // Generated columns
    -    public final TableField<BookRecord, Integer> ID        = createField("ID",        SQLDataType.INTEGER, this);
    -    public final TableField<BookRecord, Integer> AUTHOR_ID = createField("AUTHOR_ID", SQLDataType.INTEGER, this);
    -    public final TableField<BookRecord, String>  ITLE      = createField("TITLE",     SQLDataType.VARCHAR, this);
    -
    -    // Covariant aliasing method, returning a table of the same type as BOOK
    -    @Override
    -    public Book as(java.lang.String alias) {
    -        return new Book(alias);
    -    }
    -    
    -    // [...]
    -}]]></java><html>
    -
    -							<h3>Flags influencing generated tables</h3>
    -							<p>
    -								These flags from the <reference id="codegen-advanced" title="code generation configuration"/> influence generated tables:
    -							</p>
    -							<ul>
    -								<li><strong>recordVersionFields</strong>: Relevant methods from super classes are overridden to return the VERSION field</li>
    -								<li><strong>recordTimestampFields</strong>: Relevant methods from super classes are overridden to return the TIMESTAMP field</li>
    -								<li><strong>dateAsTimestamp</strong>: This influences all relevant columns</li>
    -								<li><strong>unsignedTypes</strong>: This influences all relevant columns</li>
    -								<li><strong>relations</strong>: Relevant methods from super classes are overridden to provide primary key, unique key, foreign key and identity information</li>
    -								<li><strong>instanceFields</strong>: This flag controls the "static" keyword on table columns, as well as aliasing convenience</li>
    -								<li><strong>records</strong>: The generated record type is referenced from tables allowing for type-safe single-table record fetching</li>
    -							</ul>
    -							
    -							<h3>Flags controlling table generation</h3>
    -							<p>
    -								Table generation cannot be deactivated
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-records">
    -						<title>Generated records</title>
    -						<content><html>
    -							<p>
    -								Every table in your database will generate a <reference class="org.jooq.Table"/> implementation that looks like this:
    -							</p>
    -							
    -</html><java><![CDATA[// JPA annotations can be generated, optionally
    -@Entity
    -@Table(name = "BOOK", schema = "TEST")
    -public class BookRecord extends UpdatableRecordImpl<BookRecord> 
    -
    -// An interface common to records and pojos can be generated, optionally
    -implements IBook {
    -
    -    // Every column generates a setter and a getter
    -    @Override
    -    public void setId(Integer value) {
    -        setValue(BOOK.ID, value);
    -    }
    -    
    -    @Id
    -    @Column(name = "ID", unique = true, nullable = false, precision = 7)
    -    @Override
    -    public Integer getId() {
    -        return getValue(BOOK.ID);
    -    }
    -    
    -    // More setters and getters
    -    public void setAuthorId(Integer value) {...}
    -    public Integer getAuthorId() {...}
    -    
    -    // Convenience methods for foreign key methods
    -    public void setAuthorId(AuthorRecord value) {
    -        if (value == null) {
    -            setValue(BOOK.AUTHOR_ID, null);
    -        }
    -        else {
    -            setValue(BOOK.AUTHOR_ID, value.getValue(AUTHOR.ID));
    -        }
    -    }
    -    
    -    // Navigation methods
    -    public AuthorRecord fetchAuthor() {
    -        return create().selectFrom(AUTHOR).where(AUTHOR.ID.equal(getValue(BOOK.AUTHOR_ID))).fetchOne();
    -    }
    -    
    -    // [...]
    -}]]></java><html>							
    -							
    -							<h3>Flags influencing generated records</h3>
    -							<p>
    -								These flags from the <reference id="codegen-advanced" title="code generation configuration"/> influence generated records:
    -							</p>
    -							<ul>
    -								<li><strong>dateAsTimestamp</strong>: This influences all relevant getters and setters</li>
    -								<li><strong>unsignedTypes</strong>: This influences all relevant getters and setters</li>
    -								<li><strong>relations</strong>: This is needed as a prerequisite for navigation methods</li>
    -								<li><strong>navigationMethods</strong>: This controls whether navigation methods will be generated or not</li>
    -								<li><strong>daos</strong>: Records are a pre-requisite for DAOs. If DAOs are generated, records are generated as well</li>
    -								<li><strong>interfaces</strong>: If interfaces are generated, records will implement them</li>
    -								<li><strong>jpaAnnotations</strong>: JPA annotations are used on generated records</li>
    -							</ul>
    -														
    -							<h3>Flags controlling record generation</h3>
    -							<p>
    -								Record generation can be deactivated using the <strong>records</strong> flag
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-pojos">
    -						<title>Generated POJOs</title>
    -						<content><html>
    -							<p>
    -								Every table in your database will generate a POJO implementation that looks like this:
    -							</p>
    -							
    -</html><java><![CDATA[// JPA annotations can be generated, optionally
    -@javax.persistence.Entity
    -@javax.persistence.Table(name = "BOOK", schema = "TEST")
    -public class Book implements java.io.Serializable
    -
    -// An interface common to records and pojos can be generated, optionally
    -, IBook {
    -
    -    // JSR-303 annotations can be generated, optionally
    -    @NotNull
    -    private Integer id;
    -
    -    @NotNull
    -    private Integer authorId;
    -
    -    @NotNull
    -    @Size(max = 400)
    -    private String title;
    -
    -    // Every column generates a getter and a setter
    -    @Id
    -    @Column(name = "ID", unique = true, nullable = false, precision = 7)
    -    @Override
    -    public Integer getId() {
    -        return this.id;
    -    }
    -
    -    @Override
    -    public void setId(Integer id) {
    -        this.id = id;
    -    }
    -    
    -    // [...]
    -}]]></java><html>							
    -							
    -							<h3>Flags influencing generated POJOs</h3>
    -							<p>
    -								These flags from the <reference id="codegen-advanced" title="code generation configuration"/> influence generated POJOs:
    -							</p>
    -							<ul>
    -								<li><strong>dateAsTimestamp</strong>: This influences all relevant getters and setters</li>
    -								<li><strong>unsignedTypes</strong>: This influences all relevant getters and setters</li>
    -								<li><strong>interfaces</strong>: If interfaces are generated, POJOs will implement them</li>
    -								<li><strong>immutablePojos</strong>: Immutable POJOs have final members and no setters. All members must be passed to the constructor</li>
    -								<li><strong>daos</strong>: POJOs are a pre-requisite for DAOs. If DAOs are generated, POJOs are generated as well</li>
    -								<li><strong>jpaAnnotations</strong>: JPA annotations are used on generated records</li>
    -								<li><strong>validationAnnotations</strong>: JSR-303 validation annotations are used on generated records</li>
    -							</ul>
    -														
    -							<h3>Flags controlling POJO generation</h3>
    -							<p>
    -								POJO generation can be activated using the <strong>pojos</strong> flag
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-interfaces">
    -						<title>Generated Interfaces</title>
    -						<content><html>
    -							<p>
    -								Every table in your database will generate an interface that looks like this:
    -							</p>
    -							
    -</html><java><![CDATA[public interface IBook extends java.io.Serializable {
    -
    -    // Every column generates a getter and a setter
    -    public void setId(Integer value);
    -    public Integer getId();
    -    
    -    // [...]
    -}]]></java><html>    						
    -							
    -							<h3>Flags influencing generated interfaces</h3>
    -							<p>
    -								These flags from the <reference id="codegen-advanced" title="code generation configuration"/> influence generated interfaces:
    -							</p>
    -							<ul>
    -								<li><strong>dateAsTimestamp</strong>: This influences all relevant getters and setters</li>
    -								<li><strong>unsignedTypes</strong>: This influences all relevant getters and setters</li>
    -							</ul>
    -														
    -							<h3>Flags controlling POJO generation</h3>
    -							<p>
    -								POJO generation can be activated using the <strong>interfaces</strong> flag
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-daos">
    -						<title>Generated DAOs</title>
    -						<content><html>
    -							<h3>Generated DAOs</h3>
    -							<p>
    -								Every table in your database will generate a <reference class="org.jooq.DAO"/> implementation that looks like this:
    -							</p>
    -							
    -</html><java><![CDATA[public class BookDao extends DAOImpl<BookRecord, Book, Integer> {
    -
    -    // Generated constructors
    -    public BookDao() {
    -        super(BOOK, Book.class);
    -    }
    -
    -    public BookDao(Configuration configuration) {
    -        super(BOOK, Book.class, configuration);
    -    }
    -
    -    // Every column generates at least one fetch method
    -    public List<Book> fetchById(Integer... values) {
    -        return fetch(BOOK.ID, values);
    -    }
    -
    -    public Book fetchOneById(Integer value) {
    -        return fetchOne(BOOK.ID, value);
    -    }
    -
    -    public List<Book> fetchByAuthorId(Integer... values) {
    -        return fetch(BOOK.AUTHOR_ID, values);
    -    }
    -    
    -    // [...]
    -}]]></java><html>							
    -							
    -							<h3>Flags controlling DAO generation</h3>
    -							<p>
    -								DAO generation can be activated using the <strong>daos</strong> flag
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-sequences">
    -						<title>Generated sequences</title>
    -						<content><html>
    -							<p>
    -								Every sequence in your database will generate a <reference class="org.jooq.Sequence"/> implementation that looks like this:
    -							</p>
    -							
    -</html><java><![CDATA[public final class Sequences {
    -
    -    // Every sequence generates a member
    -    public static final Sequence<Integer> S_AUTHOR_ID = new SequenceImpl<Integer>("S_AUTHOR_ID", TEST, SQLDataType.INTEGER);
    -}]]></java><html>		
    -							
    -							<h3>Flags controlling sequence generation</h3>
    -							<p>
    -								Sequence generation cannot be deactivated
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-procedures">
    -						<title>Generated procedures</title>
    -						<content><html>
    -							<p>
    -								Every procedure or function (routine) in your database will generate a <reference class="org.jooq.Routine"/> implementation that looks like this:
    -							</p>
    -
    -</html><java><![CDATA[public class AuthorExists extends AbstractRoutine<java.lang.Void> {
    -
    -    // All IN, IN OUT, OUT parameters and function return values generate a static member
    -    public static final Parameter<String>     AUTHOR_NAME = createParameter("AUTHOR_NAME", SQLDataType.VARCHAR);
    -    public static final Parameter<BigDecimal> RESULT      = createParameter("RESULT",      SQLDataType.NUMERIC);
    -
    -    // A constructor for a new "empty" procedure call
    -    public AuthorExists() {
    -        super("AUTHOR_EXISTS", TEST);
    -
    -        addInParameter(AUTHOR_NAME);
    -        addOutParameter(RESULT);
    -    }
    -
    -    // Every IN and IN OUT parameter generates a setter
    -    public void setAuthorName(String value) {
    -        setValue(AUTHOR_NAME, value);
    -    }
    -
    -    // Every IN OUT, OUT and RETURN_VALUE generates a getter
    -    public BigDecimal getResult() {
    -        return getValue(RESULT);
    -    }
    -    
    -    // [...]
    -}]]></java><html>
    -
    -							<h3>Package and member procedures or functions</h3>
    -							<p>
    -								Procedures or functions contained in packages or UDTs are generated in a sub-package that corresponds to the package or UDT name.
    -							</p>
    -
    -							<h3>Flags controlling routine generation</h3>
    -							<p>
    -								Routine generation cannot be deactivated
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-udts">
    -						<title>Generated UDTs</title>
    -						<content><html>
    -							<p>
    -								Every UDT in your database will generate a <reference class="org.jooq.UDT"/> implementation that looks like this:
    -							</p>
    -						
    -</html><java><![CDATA[public class AddressType extends UDTImpl<AddressTypeRecord> {
    -
    -    // The singleton UDT instance
    -    public static final UAddressType U_ADDRESS_TYPE = new UAddressType();
    -
    -    // Every UDT attribute generates a static member
    -    public static final UDTField<AddressTypeRecord, String> ZIP     = 
    -      createField("ZIP",     SQLDataType.VARCHAR, U_ADDRESS_TYPE);
    -    public static final UDTField<AddressTypeRecord, String> CITY    = 
    -      createField("CITY",    SQLDataType.VARCHAR, U_ADDRESS_TYPE);
    -    public static final UDTField<AddressTypeRecord, String> COUNTRY = 
    -      createField("COUNTRY", SQLDataType.VARCHAR, U_ADDRESS_TYPE);
    -    
    -    // [...]
    -}]]></java><html>						
    -										
    -							<p>
    -								Besides the <reference class="org.jooq.UDT"/> implementation, a <reference class="org.jooq.UDTRecord"/> implementation is also generated
    -							</p>		
    -
    -</html><java><![CDATA[public class AddressTypeRecord extends UDTRecordImpl<AddressTypeRecord> {
    -
    -    // Every attribute generates a getter and a setter
    -
    -    public void setZip(String value) {...}
    -    public String getZip() {...}
    -    public void setCity(String value) {...}
    -    public String getCity() {...}
    -    public void setCountry(String value) {...}
    -    public String getCountry() {...}
    -    
    -    // [...]
    -}]]></java><html>						
    -
    -							<h3>Flags controlling UDT generation</h3>
    -							<p>
    -								UDT generation cannot be deactivated
    -							</p>
    -						</html></content>
    -					</section>
    -
    -
    -                    <section id="data-type-rewrites">
    -                        <title>Data type rewrites</title>
    -                        <content><html>
    -                            <p>
    -                                Sometimes, the actual database data type does not match the SQL data type that you would like to use in Java. This is often the case for ill-supported SQL data types, such as <code>BOOLEAN</code> or <code>UUID</code>. jOOQ's code generator allows you to apply simple data type rewriting. The following configuration will rewrite <code>IS_VALID</code> columns in all tables to be of type <code>BOOLEAN</code>.
    -                            </p>
    -
    -
    -</html><xml><![CDATA[<database>
    -
    -  <!-- Associate data type rewrites with database columns -->
    -  <forcedTypes>
    -    <forcedType>
    -      <!-- Specify any data type from org.jooq.impl.SQLDataType -->
    -      <name>BOOLEAN</name>
    -
    -      <!-- Add a Java regular expression matching fully-qualified columns. 
    -           Use the pipe to separate several expressions -->
    -      <expressions>.*\.IS_VALID</expressions>
    -    </forcedType>
    -  </forcedTypes>
    -</database>]]></xml><html>
    -
    -                            <p>
    -                                See the section about <reference id="custom-data-types" title="Custom data types"/> for rewriting columns to your own custom data types.
    -                            </p>
    -                        </html></content>
    -                    </section>
    -
    -
    -				    <section id="custom-data-types">
    -						<title>Custom data types and type conversion</title>
    -						<content><html>
    -							<p>
    -								When using a custom type in jOOQ, you need to let jOOQ know about its associated <reference class="org.jooq.Converter"/>. Ad-hoc usages of such converters has been discussed in the chapter about <reference id="data-type-conversion" title="data type conversion"/>. A more common use-case, however, is to let jOOQ know about custom types at code generation time. Use the following configuration elements to specify, that you'd like to use GregorianCalendar for all database fields that start with DATE_OF_
    -      						</p>
    -
    -</html><xml><![CDATA[<database>
    -  <!-- First, register your custom types here -->
    -  <customTypes>
    -    <customType>
    -      <!-- Specify the fully-qualified class name of your custom type -->
    -      <name>java.util.GregorianCalendar</name>
    -
    -      <!-- Associate that custom type with your converter. Note, a
    -           custom type can only have one converter in jOOQ -->
    -      <converter>com.example.CalendarConverter</converter>
    -    </customType>
    -  </customTypes>
    -
    -  <!-- Then, associate custom types with database columns -->
    -  <forcedTypes>
    -    <forcedType>
    -      <!-- Specify again he fully-qualified class name of your custom type -->
    -      <name>java.util.GregorianCalendar</name>
    -
    -      <!-- Add a Java regular expression matching fully-columns. 
    -           Use the pipe to separate several expressions -->
    -      <expressions>.*\.DATE_OF_.*</expressions>
    -    </forcedType>
    -  </forcedTypes>
    -</database>]]></xml><html>
    -
    -                            <p>
    -                            	The above configuration will lead to AUTHOR.DATE_OF_BIRTH being generated like this:
    -                            </p>
    -
    -</html><java><![CDATA[public class TAuthor extends TableImpl<TAuthorRecord> {
    -
    -    // [...]
    -    public final TableField<TAuthorRecord, GregorianCalendar> DATE_OF_BIRTH =    // [...]
    -    // [...]
    -
    -}]]></java><html>
    -
    -                            <p>
    -                            	This means that the bound type of &lt;T&gt; will be GregorianCalendar, wherever you reference DATE_OF_BIRTH. jOOQ will use your custom converter when binding variables and when fetching data from <reference class="java.util.ResultSet"/>:
    -                            </p>
    -
    -</html><java><![CDATA[// Get all date of births of authors born after 1980
    -List<GregorianCalendar> result =
    -create.selectFrom(AUTHOR)
    -      .where(AUTHOR.DATE_OF_BIRTH.greaterThan(new GregorianCalendar(1980, 0, 1)))
    -      .fetch(AUTHOR.DATE_OF_BIRTH);]]></java></content>
    -					</section>
    -
    -				    <section id="schema-mapping">
    -						<title>Mapping generated schemata and tables</title>
    -						<content><html>
    -							<p>
    -								We've seen previously in the chapter about <reference id="runtime-schema-mapping" title="runtime schema mapping"/>, that schemata and tables can be mapped at runtime to other names. But you can also hard-wire schema mapping in generated artefacts at code generation time, e.g. when you have 5 developers with their own dedicated developer databases, and a common integration database. In the code generation configuration, you would then write.
    -							</p>
    -
    -</html><xml><![CDATA[<schemata>
    -  <schema>
    -    <!-- Use this as the developer's schema: -->
    -    <inputSchema>LUKAS_DEV_SCHEMA</inputSchema>
    -
    -    <!-- Use this as the integration / production database: -->
    -    <outputSchema>PROD</outputSchema>
    -  </schema>
    -</schemata>]]></xml></content>
    -					</section>
    -					
    -					<section id="codegen-large-schemas">
    -						<title>Code generation for large schemas</title>
    -						<content><html>
    -							<p>
    -								Databases can become very large in real-world applications. This is not a problem for jOOQ's code generator, but it can be for the Java compiler. jOOQ generates some classes for <reference id="codegen-globals" title="global access"/>. These classes can hit two sorts of limits of the compiler / JVM:
    -							</p>
    -							
    -							<ul>
    -								<li>Methods (including static / instance initialisers) are allowed to contain only 64kb of bytecode.</li>
    -								<li>Classes are allowed to contain at most 64k of constant literals</li>
    -							</ul>
    -							
    -							<p>
    -								While there exist workarounds for the above two limitations (delegating initialisations to nested classes, inheriting constant literals from implemented interfaces), the preferred approach is either one of these:
    -							</p>
    -							
    -							<ul>
    -								<li>Distribute your database objects in several schemas. That is probably a good idea anyway for such large databases</li>
    -								<li><reference id="codegen-configuration" title="Configure jOOQ's code generator"/> to exclude excess database objects</li>
    -								<li><reference id="codegen-configuration" title="Configure jOOQ's code generator"/> to avoid generating <reference id="codegen-globals" title="global objects"/> using <code>&lt;globalObjectReferences/&gt;</code></li>
    -								<li>Remove uncompilable classes after code generation</li>
    -							</ul>
    -						</html></content>
    -					</section>
    -				</sections>
    -			</section>
    -
    -			<section id="tools">
    -				<title>Tools</title>
    -				<content><html>
    -					<p>
    -						These chapters hold some information about tools to be used with jOOQ
    -					</p>
    -				</html></content>
    -
    -				<sections>
    -					<section id="jdbc-mocking">
    -						<title>JDBC mocking for unit testing</title>
    -						<content><html>
    -							<p>
    -								When writing unit tests for your data access layer, you have probably used some generic mocking tool offered by popular providers like <a href="http://code.google.com/p/mockito/">Mockito</a>, <a href="http://jmock.org/">jmock</a>, <a href="http://mockrunner.sourceforge.net/">mockrunner</a>, or even <a href="http://www.dbunit.org/">DBUnit</a>. With jOOQ, you can take advantage of the built-in JDBC mock API that allows you to simulate a database on the JDBC level for precisely those SQL/JDBC use cases supported by jOOQ.
    -							</p>
    -							
    -							<h3>Mocking the JDBC API</h3>
    -							<p>
    -								JDBC is a very complex API. It takes a lot of time to write a useful and correct mock implementation, implementing at least these interfaces:
    -							</p>
    -							<ul>
    -								<li><reference class="java.sql.Connection"/></li>
    -								<li><reference class="java.sql.Statement"/></li>
    -								<li><reference class="java.sql.PreparedStatement"/></li>
    -								<li><reference class="java.sql.CallableStatement"/></li>
    -								<li><reference class="java.sql.ResultSet"/></li>
    -								<li><reference class="java.sql.ResultSetMetaData"/></li>
    -							</ul>
    -							
    -							<p>
    -								Optionally, you may even want to implement interfaces, such as <reference class="java.sql.Array"/>, <reference class="java.sql.Blob"/>, <reference class="java.sql.Clob"/>, and many others. In addition to the above, you might need to find a way to simultaneously support incompatible JDBC minor versions, such as 4.0, 4.1
    -							</p>
    -							
    -							<h3>Using jOOQ's own mock API</h3>
    -							<p>
    -								This work is greatly simplified, when using jOOQ's own mock API. The <code>org.jooq.tools.jdbc</code> package contains all the essential implementations for both JDBC 4.0 and 4.1, which are needed to mock JDBC for jOOQ. In order to write mock tests, provide the jOOQ <reference id="dsl-context" title="Configuration"/> with a <reference class="org.jooq.tools.jdbc.MockConnection" title="MockConnection"/>, and implement the <reference class="org.jooq.tools.jdbc.MockDataProvider" title="MockDataProvider"/>:
    -							</p>
    -							
    -</html><java><![CDATA[// Initialise your data provider (implementation further down):
    -MockDataProvider provider = new MyProvider();
    -MockConnection connection = new MockConnection(provider);
    -
    -// Pass the mock connection to a jOOQ DSLContext:
    -DSLContext create = DSL.using(connection, SQLDialect.ORACLE);
    -
    -// Execute queries transparently, with the above DSLContext:
    -Result<BookRecord> result = create.selectFrom(BOOK).where(BOOK.ID.equal(5)).fetch();]]></java><html>
    -
    -                            <p>
    -                                As you can see, the configuration setup is simple. Now, the <code>MockDataProvider</code> acts as your single point of contact with JDBC / jOOQ. It unifies any of these execution modes, transparently:
    -                            </p>
    -                            
    -                            <ul>
    -                                <li>Statements without results</li>
    -                                <li>Statements without results but with generated keys</li>
    -                                <li>Statements with results</li>
    -                                <li>Statements with several results</li>
    -                                <li>Batch statements with single queries and multiple bind value sets</li>
    -                                <li>Batch statements with multiple queries and no bind values</li>
    -                            </ul>
    -                            
    -                            <p>
    -                                The above are the execution modes supported by jOOQ. Whether you're using any of jOOQ's various fetching modes (e.g. <reference id="pojos" title="pojo fetching"/>, <reference id="lazy-fetching" title="lazy fetching"/>, <reference id="many-fetching" title="many fetching"/>, <reference id="later-fetching" title="later fetching"/>) is irrelevant, as those modes are all built on top of the standard JDBC API.
    -                            </p>
    -                            
    -                            <h3>Implementing MockDataProvider</h3>
    -                            <p>
    -                                 Now, here's how to implement <code>MockDataProvider</code>:
    -                            </p>
    -                            
    -</html><java><![CDATA[public class MyProvider implements MockDataProvider {
    -
    -    @Override
    -    public MockResult[] execute(MockExecuteContext ctx) throws SQLException {
    -
    -        // You might need a DSLContext to create org.jooq.Result and org.jooq.Record objects
    -        DSLContext create = DSL.using(SQLDialect.ORACLE);
    -        MockResult[] mock = new MockResult[1];
    -        
    -        // The execute context contains SQL string(s), bind values, and other meta-data
    -        String sql = ctx.sql();
    -        
    -        // Exceptions are propagated through the JDBC and jOOQ APIs
    -        if (sql.toUpperCase().startsWith("DROP")) {
    -            throw new SQLException("Statement not supported: " + sql);
    -        }
    -        
    -        // You decide, whether any given statement returns results, and how many
    -        else if (sql.toUpperCase().startsWith("SELECT")) {
    -            
    -            // Always return one author record
    -            Result<AuthorRecord> result = create.newResult(AUTHOR);
    -            result.add(create.newRecord(AUTHOR));
    -            result.get(0).setValue(AUTHOR.ID, 1);
    -            result.get(0).setValue(AUTHOR.LAST_NAME, "Orwell");
    -            mock[0] = new MockResult(1, result);
    -        }
    -        
    -        // You can detect batch statements easily
    -        else if (ctx.batch()) {
    -            // [...]
    -        }
    -        
    -        return mock;
    -    }
    -}]]></java><html>
    -
    -							<p>
    -								Essentially, the <reference class="org.jooq.tools.jdbc.MockExecuteContext" title="MockExecuteContext"/> contains all the necessary information for you to decide, what kind of data you should return. The <reference class="org.jooq.tools.jdbc.MockResult" title="MockResult"/> wraps up two pieces of information:
    -							</p>
    -							<ul>
    -							    <li> <reference class="java.sql.Statement" anchor="#getUpdateCount" title="Statement.getUpdateCount()"/>: The number of affected rows</li>
    -							    <li> <reference class="java.sql.Statement" anchor="#getResultSet()" title="Statement.getResultSet()"/>: The result set</li>
    -							</ul>
    -							
    -							<p>
    -								You should return as many <code>MockResult</code> objects as there were query executions (in <reference id="batch-execution" title="batch mode"/>) or results (in <reference id="many-fetching" title="fetch-many mode"/>). Instead of an awkward JDBC <code>ResultSet</code>, however, you can construct a "friendlier" <reference class="org.jooq.Result"/> with your own record types. The jOOQ mock API will use meta data provided with this <code>Result</code> in order to create the necessary JDBC <reference class="java.sql.ResultSetMetaData"/> 
    -							</p>
    -														
    -							<p>
    -								See the <reference class="org.jooq.tools.jdbc.MockDataProvider" title="MockDataProvider Javadoc"/> for a list of rules that you should follow.
    -							</p>
    -						</html></content>
    -					</section>
    -					
    -					<section id="jooq-console">
    -						<title>jOOQ Console</title>
    -						<content><html>
    -							<p>
    -							    The <reference id="execute-listeners" title="ExecuteListener API"/> was driven by a feature request by Christopher Deckers, who has had the courtesy to contribute the jOOQ Console, a sample application interfacing with jOOQ's ExecuteListeners. The jOOQ Console logs all queries executed by jOOQ and displays them nicely in a Swing application. With the jOOQ Console's logger, you can:
    -						    </p>
    -						    <ul>
    -						    	<li>Activate the console's DebugListener anytime (in-process or if the remote server is active).</li>
    -						    	<li>View simple and batch queries and their parameters.</li>
    -						    	<li>Reformat queries along with syntax highlighting for better readability.</li>
    -						    	<li>View stack trace of originator of the call.</li>
    -						    	<li>Dump the stack to stdout when in an IDE, to directly navigate to relevant classes.</li>
    -						    	<li>Track execution time, binding time, parsing time, rows read, fields read.</li>
    -						    	<li>Show/hide queries depending on their type (SELECT, UPDATE, etc.).</li>
    -						    	<li>Sort any column (timing columns, queries, types, etc.)</li>
    -						    	<li>Easy copy paste of rows/columns to Spreadsheet editors.</li>
    -						    </ul>
    -
    -						    <p>
    -						    	A short overview of such a debugging session can be seen here:
    -						    </p>
    -   							<div class="screenshot">
    -								<img class="screenshot" src="&lt;?=$root?&gt;/img/jooq-console-01.png" alt="jOOQ Console example"/>
    -							</div>
    -						    <p>
    -							    Please note that the jOOQ Console is still experimental. Any feedback is very welcome on <br/>
    -							    <a href="http://groups.google.com/group/jooq-user" title="the jooq-user group">the jooq-user group</a>
    -							</p>
    -
    -							<h3>jOOQ Console operation modes</h3>
    -							<p>
    -								The jOOQ Console can be run in two different modes:
    -							</p>
    -							<ul>
    -								<li>In-process mode: running in the same process as the queries you're analysing</li>
    -								<li>"headless" mode: running remotely</li>
    -							</ul>
    -
    -							<p>
    -								Both modes will require that you set the <reference class="org.jooq.debug.impl.DebugListener"/> in the Configuration:
    -							</p>
    -
    -</html><java><![CDATA[// Create a configuration with an appropriate listener provider:
    -Configuration configuration = new DefaultConfiguration.set(connection).set(dialect);
    -configuration.set(new DefaultExecuteListenerProvider(new org.jooq.debug.impl.DebugListener()));
    -
    -// Create a DSLContext from the above configuration
    -DSLContext create = DSL.using(configuration);]]></java><html>
    -
    -							<h3>In-process mode</h3>
    -							<p>
    -								The in-process mode is useful for Swing applications or other, locally run Java programs accessing the database via jOOQ. In order to launch the jOOQ Console "in-process", specify the previously documented settings and launch the Console as follows:
    -							</p>
    -
    -</html><java><![CDATA[// Define a DatabaseDescriptor for the "in-process" mode
    -// It is needed for the "Editor" tab
    -DatabaseDescriptor descriptor = new DatabaseDescriptor() {
    -
    -    // Return your generated schema. This is used by the console
    -    // to introspect your schema data
    -    @Override
    -    public Schema getSchema() {
    -        return com.example.MySchema.MY_SCHEMA;
    -    }
    -
    -    // Return the SQL dialect that you're using
    -    @Override
    -    public SQLDialect getSQLDialect() {
    -        return SQLDialect.ORACLE;
    -    }
    -
    -    // Return a connection
    -    @Override
    -    public Connection createConnection() {
    -        try {
    -            return DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "test", "test");
    -        }
    -        catch (Exception ignore) {}
    -    }
    -};
    -
    -// Now pass this database descriptor to the Console and make it visible
    -try {
    -
    -    // Use this for a nicer look-and-feel
    -    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    -
    -    // Create a new Console
    -    Console console = new Console(descriptor, true);
    -    console.setLoggingActive(true);
    -    console.setVisible(true);
    -}
    -catch (Exception ignore) {}
    -]]></java><html>
    -
    -							<p>
    -								Only in the in-process mode, you can execute ad-hoc queries directly from the console, if you provide it with proper DatabaseDescriptor. These queries are executed from the Editor pane which features:
    -							</p>
    -							<ul>
    -								<li>SQL editing within the console.</li>
    -								<li>Incremental search on tables.</li>
    -								<li>Simple code completion with tables/columns/SQL keywords.</li>
    -								<li>Syntax highlighting and formatting capabilities.</li>
    -								<li>Results shown in one or several tabs.</li>
    -								<li>Easy analysis of Logger output by copy/pasting/running queries in the Editor.</li>
    -							</ul>
    -   							<div class="screenshot">
    -								<img class="screenshot" src="&lt;?=$root?&gt;/img/jooq-console-02.png" alt="jOOQ Console example"/>
    -							</div>
    -
    -                            <h3>"Headless" mode</h3>
    -							<p>
    -								In J2EE or other server/client environments, you may not be able to run the console in the same process as your application. You can then run the jOOQ Console in "headless" mode. In addition to the previously documented settings, you'll have to start a debugger server in your application process, that the console can connect to:
    -							</p>
    -
    -</html><java>// Create a new RemoteDebuggerServer in your application that listens to
    -// incoming connections on a given port
    -SERVER = new RemoteDebuggerServer(DEBUGGER_PORT);</java><html>
    -
    -							<p>
    -								Now start your application along with the debugger server and launch the console with this command:
    -							</p>
    -
    -</html><config>java -jar jooq-console-{jooq-version}.jar [host] [port]</config><html>
    -
    -							<p>
    -								Depending on your distribution, you may have to manually add rsyntaxtextarea-2.0.2.jar and jOOQ artefacts on your classpath.
    -							</p>
    -						</html></content>
    -					</section>
    -				</sections>
    -			</section>
    -
    -			<section id="reference">
    -				<title>Reference</title>
    -				<content><html>
    -					<p>
    -						These chapters hold some general jOOQ reference information
    -					</p>
    -				</html></content>
    -
    -				<sections>
    -					<section id="supported-rdbms">
    -						<title>Supported RDBMS</title>
    -						<content><html>
    -							<h3>A list of supported databases</h3>
    -							<p>
    -						   		Every RDMBS out there has its own little specialties. jOOQ considers those specialties as much as possible, while trying to standardise the behaviour in jOOQ. In order to increase the quality of jOOQ, some 70 unit tests are run for syntax and variable binding verification, as well as some 180 integration tests with an overall of around 1200 queries for any of these databases:
    -					   		</p>
    -							<ul>
    -							    <li>CUBRID 8.4.1 and 9.0.0</li>
    -							    <li>DB2 9.7</li>
    -							    <li>Derby 10.8</li>
    -							    <li>Firebird 2.5.1</li>
    -							    <li>H2 1.3.161</li>
    -							    <li>HSQLDB 2.2.5</li>
    -							    <li>Ingres 10.1.0</li>
    -							    <li>MySQL 5.1.41 and 5.5.8</li>
    -							    <li>Oracle XE 10.2.0.1.0 and 11g</li>
    -							    <li>PostgreSQL 9.0</li>
    -							    <li>SQLite with inofficial JDBC driver v056</li>
    -							    <li>SQL Server 2008 R8 and 2012</li>
    -							    <li>Sybase Adaptive Server Enterprise 15.5</li>
    -							    <li>Sybase SQL Anywhere 12</li>
    -							</ul>
    -							<p>
    -								These platforms have been observed to work as well, but are not integration-tested
    -							</p>
    -							<ul>
    -								<li>Google Cloud SQL (MySQL)</li>
    -							</ul>
    -								
    -							<h3>Databases planned for support</h3>
    -							<p>
    -								Any of the following databases might be available in the future
    -							</p>
    -						    <ul>
    -							    <li>Informix</li>
    -							    <li>Interbase</li>
    -							    <li>MS Access</li>
    -							    <li>MS Excel</li>
    -							    <li>SQL Azure</li>
    -							    <li>Sybase SQL Anywhere OnDemand</li>
    -							    <li>Teradata</li>
    -						    </ul>
    -						    
    -							<h3>Databases being watched</h3>
    -							<p>
    -								Any of the following databases are being observed for a potential integration
    -							</p>
    -							<ul>
    -								<li>Mondrian</li>
    -								<li>Netezza</li>
    -								<li>SQLFire</li>
    -								<li>Vectorwise</li>
    -								<li>Vertica</li>
    -								<li>VoltDB</li>
    -							</ul>
    -
    -							<h3>Feature matrix</h3>
    -							<p>
    -								This section will soon contain a feature matrix, documenting what feature is available for which database.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -					<section id="reference-data-types">
    -						<title>Data types</title>
    -						<content><html>
    -							<p>
    -								There is always a small mismatch between SQL data types and Java data types. This is for two reasons:
    -							</p>
    -							<ul>
    -								<li>SQL data types are insufficiently covered by the JDBC API.</li>
    -								<li>Java data types are often less expressive than SQL data types</li>
    -							</ul>
    -							<p>
    -								This chapter should document the most important notes about SQL, JDBC and jOOQ data types.
    -							</p>
    -						</html></content>
    -						
    -						<sections>
    -							<section id="data-types-lobs">
    -								<title>BLOBs and CLOBs</title>
    -								<content><html>
    -									<p>
    -										jOOQ currently doesn't explicitly support JDBC BLOB and CLOB data types. If you use any of these data types in your database, jOOQ will map them to byte[] and String instead. In simple cases (small data), this simplification is sufficient. In more sophisticated cases, you may have to bypass jOOQ, in order to deal with these data types and their respective resources. True support for LOBs is on the roadmap, though.
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -							<section id="data-types-unsigned">
    -								<title>Unsigned integer types</title>
    -								<content><html>
    -									<p>
    -										Some databases explicitly support unsigned integer data types. In most normal JDBC-based applications, they would just be mapped to their signed counterparts letting bit-wise shifting and tweaking to the user. jOOQ ships with a set of unsigned <reference class="java.lang.Number"/> implementations modelling the following types:
    -									</p>
    -									<ul>
    -										<li><reference class="org.jooq.types.UByte"/>: Unsigned byte, an 8-bit unsigned integer</li>
    -										<li><reference class="org.jooq.types.UShort"/>: Unsigned short, a 16-bit unsigned integer</li>
    -										<li><reference class="org.jooq.types.UInteger"/>: Unsigned int, a 32-bit unsigned integer</li>
    -										<li><reference class="org.jooq.types.ULong"/>: Unsigned long, a 64-bit unsigned integer</li>
    -									</ul>
    -									<p>
    -										Each of these wrapper types extends <reference class="java.lang.Number"/>, wrapping a higher-level integer type, internally:
    -									</p>
    -									<ul>
    -										<li>UByte wraps <reference class="java.lang.Short"/></li>
    -										<li>UShort wraps <reference class="java.lang.Integer"/></li>
    -										<li>UInteger wraps <reference class="java.lang.Long"/></li>
    -										<li>ULong wraps <reference class="java.math.BigInteger"/></li>
    -									</ul>
    -								</html></content>
    -							</section>
    -							
    -							<section id="data-types-intervals">
    -								<title>INTERVAL data types</title>
    -								<content><html>
    -									<p>
    -										jOOQ fills a gap opened by JDBC, which neglects an important SQL data type as defined by the SQL standards: INTERVAL types. SQL knows two different types of intervals:
    -									</p>
    -									<ul>
    -										<li><strong>YEAR TO MONTH</strong>: This interval type models a number of months and years</li>
    -										<li><strong>DAY TO SECOND</strong>: This interval type models a number of days, hours, minutes, seconds and milliseconds</li>
    -									</ul>
    -									
    -									<p>
    -										Both interval types ship with a variant of subtypes, such as DAY TO HOUR, HOUR TO SECOND, etc. jOOQ models these types as Java objects extending <reference class="java.lang.Number"/>: <reference class="org.jooq.types.YearToMonth"/> (where Number.intValue() corresponds to the absolute number of months) and <reference class="org.jooq.types.DayToSecond"/> (where Number.intValue() corresponds to the absolute number of milliseconds)
    -									</p>
    -									
    -									<h3>Interval arithmetic</h3>
    -									<p>
    -										In addition to the <reference id="arithmetic-expressions" title="arithmetic expressions"/> documented previously, interval arithmetic is also supported by jOOQ. Essentially, the following operations are supported:
    -									</p>
    -									<ul>
    -										<li>DATETIME - DATETIME => INTERVAL</li>
    -										<li>DATETIME + or - INTERVAL => DATETIME</li>
    -										<li>INTERVAL + DATETIME => DATETIME</li>
    -										<li>INTERVAL + - INTERVAL => INTERVAL</li>
    -										<li>INTERVAL * or / NUMERIC => INTERVAL</li>
    -										<li>NUMERIC * INTERVAL => INTERVAL</li>
    -									</ul>
    -								</html></content>
    -							</section>
    -							
    -							<section id="data-types-xml">
    -								<title>XML data types</title>
    -								<content><html>
    -									<p>
    -										XML data types are currently not supported
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -							<section id="data-types-geospacial">
    -								<title>Geospacial data types</title>
    -								<content><html>
    -									<h3>Geospacial data types</h3>
    -									<p>
    -										Geospacial data types are currently not supported
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -							<section id="data-types-cursors">
    -								<title>CURSOR data types</title>
    -								<content><html>
    -									<p>
    -										Some databases support cursors returned from stored procedures. They are mapped to the following jOOQ data type:
    -									</p>
    -
    -</html><java><![CDATA[Field<Result<Record>> cursor;]]></java><html>
    -									
    -									<p>
    -										In fact, such a cursor will be fetched immediately by jOOQ and wrapped in an <reference class="org.jooq.Result"/> object.
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -							<section id="data-types-arrays">
    -								<title>ARRAY and TABLE data types</title>
    -								<content><html>
    -									<p>
    -										The SQL standard specifies ARRAY data types, that can be mapped to Java arrays as such:
    -									</p>
    -									
    -</html><java><![CDATA[Field<Integer[]> intArray;]]></java><html>
    -										
    -									<p>
    -										The above array type is supported by these SQL dialects:
    -									</p>
    -									<ul>
    -										<li>H2</li>
    -										<li>HSQLDB</li>
    -										<li>Postgres</li>
    -									</ul>
    -									
    -									<h3>Oracle typed arrays</h3>
    -									<p>
    -										Oracle has strongly-typed arrays and table types (as opposed to the previously seen anonymously typed arrays). These arrays are wrapped by <reference class="org.jooq.ArrayRecord"/> types.
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -                    <section id="dsl-mapping-rules">
    -                        <title>SQL to DSL mapping rules</title>
    -                        <content><html>
    -                            <p>
    -                                jOOQ takes SQL as an external domain-specific language and maps it onto Java, creating an internal domain-specific language. Internal DSLs cannot 100% implement their external language counter parts, as they have to adhere to the syntax rules of their host or target language (i.e. Java). This section explains the various problems and workarounds encountered and implemented in jOOQ.
    -                            </p>
    -                            
    -                            <h3>SQL allows for "keywordless" syntax</h3>
    -                            <p>
    -                                SQL syntax does not always need keywords to form expressions. The <code><reference id="update-statement" title="UPDATE .. SET"/></code> clause takes various argument assignments:
    -                            </p>
    -     
    -</html><code-pair>
    -<sql>UPDATE t SET a = 1, b = 2</sql><java>update(t).set(a, 1).set(b, 2)</java>
    -</code-pair><html>
    -
    -                            <p>
    -                                The above example also shows missing operator overloading capabilities, where <code>"="</code> is replaced by <code>","</code> in jOOQ. Another example are <reference id="row-value-expressions" title="row value expressions"/>, which can be formed with parentheses only in SQL:
    -                            </p>
    -
    -</html><code-pair>
    -<sql>(a, b) IN ((1, 2), (3, 4))</sql><java>row(a, b).in(row(1, 2), row(3, 4))</java>
    -</code-pair><html>
    -
    -                            <p>
    -                                In this case, <code>ROW</code> is an actual (optional) SQL keyword, implemented by at least PostgreSQL.
    -                            </p>
    -                            
    -                            <h3>SQL contains "composed" keywords</h3>
    -                            <p>
    -                                As most languages, SQL does not attribute any meaning to whitespace. However, whitespace is important when forming "composed" keywords, i.e. SQL clauses composed of several keywords. jOOQ follows standard Java method naming conventions to map SQL keywords (case-insensitive) to Java methods (case-sensitive, camel-cased). Some examples:
    -                            </p>
    -                            
    -</html><code-pair>
    -<sql>GROUP BY
    -ORDER BY
    -WHEN MATCHED THEN UPDATE</sql><java>groupBy()
    -orderBy()
    -whenMatchedThenUpdate()</java>
    -</code-pair><html>
    -
    -                            <p>
    -                                Future versions of jOOQ may use all-uppercased method names in addition to the camel-cased ones (to prevent collisions with Java keywords):
    -                            </p>
    -                            
    -</html><code-pair>
    -<sql>GROUP BY
    -ORDER BY
    -WHEN MATCHED THEN UPDATE</sql><java>GROUP_BY()
    -ORDER_BY()
    -WHEN_MATCHED_THEN_UPDATE()</java>
    -</code-pair><html>
    -
    -                            <h3>SQL contains "superfluous" keywords</h3>
    -                            <p>
    -                                Some SQL keywords aren't really necessary. They are just part of a keyword-rich language, the way Java developers aren't used to anymore. These keywords date from times when languages such as ADA, BASIC, COBOL, FORTRAN, PASCAL were more verbose:
    -                            </p>
    -                            <ul>
    -                                <li><code>BEGIN .. END</code></li>
    -                                <li><code>REPEAT .. UNTIL</code></li>
    -                                <li><code>IF .. THEN .. ELSE .. END IF</code></li>
    -                            </ul>
    -                            <p>
    -                                jOOQ omits some of those keywords when it is too tedious to write them in Java.
    -                            </p>
    -
    -</html><code-pair>
    -<sql>CASE WHEN .. THEN .. END</sql><java>decode().when(.., ..)</java>
    -</code-pair><html>
    -
    -                            <p>
    -                                The above example omits <code>THEN</code> and <code>END</code> keywords in Java. Future versions of jOOQ may comprise a more complete DSL, including such keywords again though, to provide a more 1:1 match for the SQL language.
    -                            </p>
    -                            
    -                            <h3>SQL contains "superfluous" syntactic elements</h3>
    -                            <p>
    -                                Some SQL constructs are hard to map to Java, but they are also not really necessary. SQL often expects syntactic parentheses where they wouldn't really be needed, or where they feel slightly inconsistent with the rest of the SQL language. 
    -                            </p>
    -
    -</html><code-pair>
    -<sql>LISTAGG(a, b) WITHIN GROUP (ORDER BY c)
    -              OVER (PARTITION BY d)</sql><java>listagg(a, b).withinGroupOrderBy(c)
    -             .over().partitionBy(d)</java>
    -</code-pair><html>
    -
    -                            <p>
    -                                The parentheses used for the <code>WITHIN GROUP (..)</code> and <code>OVER (..)</code> clauses are required in SQL but do not seem to add any immediate value. In some cases, jOOQ omits them, although the above might be optionally re-phrased in the future to form a more SQLesque experience:  
    -                            </p>
    -
    -</html><code-pair>
    -<sql>LISTAGG(a, b) WITHIN GROUP (ORDER BY c)
    -              OVER (PARTITION BY d)</sql><java>listagg(a, b).withinGroup(orderBy(c))
    -             .over(partitionBy(d))</java>
    -</code-pair><html>
    -
    -                            <h3>SQL uses some of Java's reserved words</h3>
    -                            <p>
    -                                Some SQL keywords map onto <a href="http://download.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html">Java Language Keywords</a> if they're mapped using camel-casing. These keywords currently include: 
    -                            </p>
    -                            <ul>
    -                                <li><code>CASE</code></li>
    -                                <li><code>ELSE</code></li>
    -                                <li><code>FOR</code></li>
    -                            </ul>
    -
    -                            <p>
    -                                jOOQ replaces those keywords by "synonyms":
    -                            </p>
    -                            
    -</html><code-pair>
    -<sql>CASE .. ELSE
    -PIVOT .. FOR .. IN ..</sql><java>decode() .. otherwise()
    -pivot(..).on(..).in(..)</java>
    -</code-pair><html>           
    -
    -                            <p>
    -                                There is more future collision potential with:
    -                            </p>
    -                            <ul>
    -                                <li><code>BOOLEAN</code></li>
    -                                <li><code>CHAR</code></li>
    -                                <li><code>DEFAULT</code></li>
    -                                <li><code>DOUBLE</code></li>
    -                                <li><code>ENUM</code></li>
    -                                <li><code>FLOAT</code></li>
    -                                <li><code>IF</code></li>
    -                                <li><code>INT</code></li>
    -                                <li><code>LONG</code></li>
    -                                <li><code>PACKAGE</code></li>
    -                            </ul>
    -
    -                            <h3>SQL operators cannot be overloaded in Java</h3>
    -                            <p>
    -                                Most SQL operators have to be mapped to descriptive method names in Java, as Java does not allow operator overloading:
    -                            </p>
    -                            
    -</html><code-pair>
    -<sql><![CDATA[=
    -<>, !=
    -||
    -SET a = b]]></sql><java>equal(), eq()
    -notEqual(), ne()
    -concat()
    -set(a, b)</java>
    -</code-pair><html>
    -
    -                            <p>
    -                                For those users using <reference id="scala-sql-building" title="jOOQ with Scala or Groovy"/>, operator overloading and implicit conversion can be leveraged to enhance jOOQ:
    -                            </p>
    -
    -</html><code-pair>
    -<sql><![CDATA[=
    -<>, !=
    -||]]></sql><java><![CDATA[===
    -<>, !==
    -||]]></java>
    -</code-pair><html>
    -
    -                            <h3>SQL's reference before declaration capability</h3>
    -                            <p>
    -                                This is less of a syntactic SQL feature than a semantic one. In SQL, objects can be referenced before (i.e. "lexicographically before") they are declared. This is particularly true for <reference id="aliased-tables" title="aliasing"/>
    -                            </p>
    - 
    -</html><code-pair>
    -<sql><![CDATA[SELECT t.a
    -FROM my_table t]]></sql><java><![CDATA[MyTable t = MY_TABLE.as("t");
    -select(t.a).from(t)]]></java>
    -</code-pair><html>
    -
    -                            <p>
    -                                A more sophisticated example are common table expressions (CTE), which are currently not supported by jOOQ:
    -                            </p>
    -                            
    -</html><sql>WITH t(a, b) AS (
    -  SELECT 1, 2 FROM DUAL
    -)
    -SELECT t.a, t.b
    -FROM t</sql><html>
    -
    -                            <p>
    -                                Common table expressions define a "derived column list", just like <reference id="aliased-tables" title="table aliases"/> can do. The formal record type thus created cannot be typesafely verified by the Java compiler, i.e. it is not possible to formally dereference <code>t.a</code> from <code>t</code>.
    -                            </p>
    -                        </html></content>
    -                    </section>
    -                    
    -					<section id="reference-bnf-notation">
    -						<title>jOOQ's BNF pseudo-notation</title>
    -						<content><html>
    -							<p>
    -								This chapter will soon contain an overview over jOOQ's API using a pseudo BNF notation.
    -							</p>
    -						</html></content>
    -					</section>
    -					
    -					<section id="quality-assurance">
    -						<title>Quality Assurance</title>
    -						<content><html>
    -							<p>
    -								jOOQ is running some of your most mission-critical logic: the interface layer between your Java / Scala application and the database. You have probably chosen jOOQ for any of the following reasons:
    -							</p>
    -							<ul>
    -								<li>To evade JDBC's verbosity and error-proneness due to string concatenation and index-based variable binding</li>
    -								<li>To add lots of type-safety to your inline SQL</li>
    -								<li>To increase productivity when writing inline SQL using your favourite IDE's autocompletion capabilities</li>
    -							</ul>
    -							
    -							<p>
    -								With jOOQ being in the core of your application, you want to be sure that you can trust jOOQ. That is why jOOQ is heavily unit and integration tested with a strong focus on integration tests:
    -							</p>
    -							
    -							<h3>Unit tests</h3>
    -							<p>
    -								Unit tests are performed against dummy JDBC interfaces using <a href="http://jmock.org/" title="jmock">http://jmock.org/</a>. These tests verify that various <reference class="org.jooq.QueryPart"/> implementations render correct SQL and bind variables correctly.
    -							</p>
    -							
    -							<h3>Integration tests</h3>
    -							<p>
    -								This is the most important part of the jOOQ test suites. Some 1500 queries are currently run against a standard integration test database. Both the test database and the queries are translated into every one of the 14 supported SQL dialects to ensure that regressions are unlikely to be introduced into the code base.
    -							</p>
    -							<p>
    -								For libraries like jOOQ, integration tests are much more expressive than unit tests, as there are so many subtle differences in SQL dialects. Simple mocks just don't give as much feedback as an actual database instance.
    -							</p>
    -							<p>
    -								jOOQ integration tests run the weirdest and most unrealistic queries. As a side-effect of these extensive integration test suites, many corner-case bugs for JDBC drivers and/or open source databases have been discovered, feature requests submitted through jOOQ and reported mainly to CUBRID, Derby, H2, HSQLDB.
    -							</p>
    -							
    -							<h3>Code generation tests</h3>
    -							<p>
    -								For every one of the 14 supported integration test databases, source code is generated and the tiniest differences in generated source code can be discovered. In case of compilation errors in generated source code, new test tables/views/columns are added to avoid regressions in this field.
    -							</p>
    -							
    -							<h3>API Usability tests and proofs of concept</h3>
    -							<p>
    -								jOOQ is used in jOOQ-meta as a proof of concept. This includes complex queries such as the following Postgres query
    -							</p>
    -							
    -</html><java><![CDATA[Routines r1 = ROUTINES.as("r1");
    -Routines r2 = ROUTINES.as("r2");
    -
    -for (Record record : create().select(
    -        r1.ROUTINE_SCHEMA,
    -        r1.ROUTINE_NAME,
    -        r1.SPECIFIC_NAME,
    -
    -        // Ignore the data type when there is at least one out parameter
    -        decode()
    -            .when(exists(
    -                selectOne()
    -                .from(PARAMETERS)
    -                .where(PARAMETERS.SPECIFIC_SCHEMA.equal(r1.SPECIFIC_SCHEMA))
    -                .and(PARAMETERS.SPECIFIC_NAME.equal(r1.SPECIFIC_NAME))
    -                .and(upper(PARAMETERS.PARAMETER_MODE).notEqual("IN"))),
    -                    val("void"))
    -            .otherwise(r1.DATA_TYPE).as("data_type"),
    -        r1.CHARACTER_MAXIMUM_LENGTH,
    -        r1.NUMERIC_PRECISION,
    -        r1.NUMERIC_SCALE,
    -        r1.TYPE_UDT_NAME,
    -
    -        // Calculate overload index if applicable
    -        decode().when(
    -        exists(
    -            selectOne()
    -            .from(r2)
    -            .where(r2.ROUTINE_SCHEMA.in(getInputSchemata()))
    -            .and(r2.ROUTINE_SCHEMA.equal(r1.ROUTINE_SCHEMA))
    -            .and(r2.ROUTINE_NAME.equal(r1.ROUTINE_NAME))
    -            .and(r2.SPECIFIC_NAME.notEqual(r1.SPECIFIC_NAME))),
    -            select(count())
    -            .from(r2)
    -            .where(r2.ROUTINE_SCHEMA.in(getInputSchemata()))
    -            .and(r2.ROUTINE_SCHEMA.equal(r1.ROUTINE_SCHEMA))
    -            .and(r2.ROUTINE_NAME.equal(r1.ROUTINE_NAME))
    -            .and(r2.SPECIFIC_NAME.lessOrEqual(r1.SPECIFIC_NAME)).asField())
    -        .as("overload"))
    -    .from(r1)
    -    .where(r1.ROUTINE_SCHEMA.in(getInputSchemata()))
    -    .orderBy(
    -        r1.ROUTINE_SCHEMA.asc(),
    -        r1.ROUTINE_NAME.asc())
    -    .fetch()) {
    -
    -    result.add(new PostgresRoutineDefinition(this, record));
    -}]]></java><html>
    -							<p>
    -								These rather complex queries show that the jOOQ API is fit for advanced SQL use-cases, compared to the rather simple, often unrealistic queries in the integration test suite. 
    -							</p>
    -							
    -							<h3>Clean API and implementation. Code is kept DRY</h3>
    -							<p>
    -								As a general rule of thumb throughout the jOOQ code, everything is kept <a href="http://en.wikipedia.org/wiki/DRY">DRY</a>. Some examples:
    -							</p>
    -							<ul>
    -								<li>There is only one place in the entire code base, which consumes values from a JDBC ResultSet</li>
    -								<li>There is only one place in the entire code base, which transforms jOOQ Records into custom POJOs</li>
    -							</ul>
    -							<p>
    -								Keeping things DRY leads to longer stack traces, but in turn, also increases the relevance of highly reusable code-blocks. Chances that some parts of the jOOQ code base slips by integration test coverage decrease significantly.
    -							</p>
    -						</html></content>
    -					</section>
    -					
    -					<section id="migrating-to-3.0">
    -						<title>Migrating to jOOQ 3.0</title>
    -						<content><html>
    -							<p>
    -								This section is for all users of jOOQ 2.x who wish to upgrade to the next major release. In the next sub-sections, the most important changes are explained. Some code hints are also added to help you fix compilation errors.
    -							</p>
    -							
    -							<h3>Type-safe row value expressions</h3>
    -							<p>
    -								Support for <reference id="row-value-expressions" title="row value expressions"/> has been added in jOOQ 2.6. In jOOQ 3.0, many API parts were thoroughly (but often incompatibly) changed, in order to provide you with even more type-safety. 
    -							</p>
    -							
    -							<p>
    -								Here are some affected API parts:
    -							</p>
    -							<ul>
    -								<li>[N] in Row[N] has been raised from 8 to 22. This means that existing row value expressions with degree >= 9 are now type-safe</li>
    -								<li>Subqueries returned from <code>DSL.select(...)</code> now implement <code>Select&lt;Record[N]>, not Select&lt;Record></code></li>
    -								<li><code>IN</code> predicates and comparison predicates taking subselects changed incompatibly</li>
    -								<li><code>INSERT</code> and <code>MERGE</code> statements now take typesafe <code>VALUES()</code> clauses</li>
    -							</ul>
    -							
    -							<p>
    -								Some hints related to row value expressions:
    -							</p>
    -							
    -</html><java><![CDATA[// SELECT statements are now more typesafe:
    -Record2<String, Integer> record         = create.select(BOOK.TITLE, BOOK.ID).from(BOOK).where(ID.eq(1)).fetchOne();
    -Result<Record2<String, Integer>> result = create.select(BOOK.TITLE, BOOK.ID).from(BOOK).fetch();
    -
    -// But Record2 extends Record. You don't have to use the additional typesafety:
    -Record record    = create.select(BOOK.TITLE, BOOK.ID).from(BOOK).where(ID.eq(1)).fetchOne();
    -Result<?> result = create.select(BOOK.TITLE, BOOK.ID).from(BOOK).fetch();]]></java><html>
    -							
    -							<h3>SelectQuery and SelectXXXStep are now generic</h3>
    -							<p>
    -								In order to support type-safe row value expressions and type-safe Record[N] types, SelectQuery is now generic: SelectQuery&lt;R>
    -							</p>
    -							
    -							<h3>SimpleSelectQuery and SimpleSelectXXXStep API were removed</h3>
    -							<p>
    -							    The duplication of the SELECT API is no longer useful, now that SelectQuery and SelectXXXStep are generic.
    -							</p>
    -							
    -							<h3>Factory was split into DSL (query building) and DSLContext (query execution)</h3>
    -							<p>
    -								The pre-existing Factory class has been split into two parts:
    -							</p>
    -							
    -							<ol>
    -								<li><strong>The DSL</strong>: This class contains only static factory methods. All QueryParts constructed from this class are "unattached", i.e. queries that are constructed through DSL cannot be executed immediately. This is useful for subqueries.<br/>The DSL class corresponds to the static part of the jOOQ 2.x Factory type</li>
    -								<li><strong>The DSLContext</strong>: This type holds a reference to a Configuration and can construct executable ("attached") QueryParts.<br/>The DSLContext type corresponds to the non-static part of the jOOQ 2.x Factory / FactoryOperations type.</li>
    -							</ol>
    -							
    -							<p>
    -								The FactoryOperations interface has been renamed to DSLContext. An example:
    -							</p>
    -							
    -</html><java><![CDATA[// jOOQ 2.6, check if there are any books
    -Factory create = new Factory(connection, dialect);
    -create.selectOne()
    -      .whereExists(
    -        create.selectFrom(BOOK) // Reuse the factory to create subselects
    -      ).fetch();                // Execute the "attached" query
    -
    -// jOOQ 3.0
    -DSLContext create = DSL.using(connection, dialect);
    -create.selectOne()
    -      .whereExists(
    -        selectFrom(BOOK)        // Create a static subselect from the DSL
    -      ).fetch();                // Execute the "attached" query]]></java><html>							
    -							
    -							<h3>Quantified comparison predicates</h3>
    -							<p>
    -								Field.equalAny(...) and similar methods have been removed in favour of Field.equal(any(...)). This greatly simplified the Field API. An example:
    -							</p>
    -							
    -</html><java><![CDATA[// jOOQ 2.6
    -Condition condition = BOOK.ID.equalAny(create.select(BOOK.ID).from(BOOK));
    -
    -// jOOQ 3.0 adds some typesafety to comparison predicates involving quantified selects
    -QuantifiedSelect<Record1<Integer>> subselect = any(select(BOOK.ID).from(BOOK));
    -Condition condition = BOOK.ID.equal(subselect);]]></java><html>							
    -							
    -							<h3>FieldProvider</h3>
    -							<p>
    -								The FieldProvider marker interface was removed. Its methods still exist on FieldProvider subtypes. Note, they have changed names from <code>getField()</code> to <code>field()</code> and from <code>getIndex()</code> to <code>indexOf()</code>
    -							</p>
    -							
    -							<h3>GroupField</h3>
    -							<p>
    -								GroupField has been introduced as a DSL marker interface to denote fields that can be passed to <code>GROUP BY</code> clauses. This includes all org.jooq.Field types. However, fields obtained from <code>ROLLUP()</code>, <code>CUBE()</code>, and <code>GROUPING SETS()</code> functions no longer implement Field. Instead, they only implement GroupField. An example:
    -							</p>
    -							
    -</html><java><![CDATA[// jOOQ 2.6
    -Field<?>   field1a = Factory.rollup(...); // OK
    -Field<?>   field2a = Factory.one();       // OK
    -
    -// jOOQ 3.0
    -GroupField field1b = DSL.rollup(...); // OK
    -Field<?>   field1c = DSL.rollup(...); // Compilation error
    -GroupField field2b = DSL.one();       // OK
    -Field<?>   field2c = DSL.one();       // OK]]></java><html>
    -							
    -							<h3>NULL predicate</h3>
    -							<p>
    -							   Beware! Previously, Field.equal(null) was translated internally to an IS NULL predicate. This is no longer the case. Binding Java "null" to a comparison predicate will result in a regular comparison predicate (which never returns true). This was changed for several reasons:
    -							</p>
    -							
    -							<ul>
    -								<li>To most users, this was a surprising "feature".</li>
    -								<li>Other predicates didn't behave in such a way, e.g. the IN predicate, the BETWEEN predicate, or the LIKE predicate.</li>
    -								<li>Variable binding behaved unpredictably, as IS NULL predicates don't bind any variables.</li>
    -								<li>The generated SQL depended on the possible combinations of bind values, which creates unnecessary hard-parses every time a new unique SQL statement is rendered.</li>
    -							</ul>
    -							
    -							<p>
    -								Here is an example how to check if a field has a given value, without applying SQL's ternary NULL logic:
    -							</p>
    -
    -</html><java><![CDATA[String possiblyNull = null; // Or else...
    -
    -// jOOQ 2.6
    -Condition condition1 = BOOK.TITLE.equal(possiblyNull);
    -
    -// jOOQ 3.0
    -Condition condition2 = BOOK.TITLE.equal(possiblyNull).or(BOOK.TITLE.isNull().and(val(possiblyNull).isNull()));
    -Condition condition3 = BOOK.TITLE.isNotDistinctFrom(possiblyNull);]]></java><html>
    -							
    -							<h3>Configuration</h3>
    -							<p>
    -								<code>DSLContext</code>, <code>ExecuteContext</code>, <code>RenderContext</code>, <code>BindContext</code> no longer extend <code>Configuration</code> for "convenience". From jOOQ 3.0 onwards, composition is chosen over inheritance as these objects are not really configurations. Most importantly
    -							</p>
    -							<ul>
    -								<li><code>DSLContext</code> is only a DSL entry point for constructing "attached" QueryParts</li>
    -								<li><code>ExecuteContext</code> has a well-defined lifecycle, tied to that of a single query execution</li>
    -								<li><code>RenderContext</code> has a well-defined lifecycle, tied to that of a single rendering operation</li>
    -								<li><code>BindContext</code> has a well-defined lifecycle, tied to that of a single variable binding operation</li>
    -							</ul>
    -							<p>
    -								In order to resolve confusion that used to arise because of different lifecycle durations, these types are now no longer formally connected through inheritance.
    -							</p>
    -							
    -							<h3>ConnectionProvider</h3>
    -							<p>
    -							    In order to allow for simpler connection / data source management, jOOQ externalised connection handling in a new ConnectionProvider type. The previous two connection modes are maintained backwards-compatibly (JDBC standalone connection mode, pooled DataSource mode). Other connection modes can be injected using:
    -							</p>
    -
    -</html><java><![CDATA[public interface ConnectionProvider {
    -
    -    // Provide jOOQ with a connection
    -    Connection acquire() throws DataAccessException;
    -  
    -    // Get a connection back from jOOQ
    -    void release(Connection connection) throws DataAccessException;
    -}]]></java><html>
    -							
    -							<p>
    -							    These are some side-effects of the above change
    -							</p>
    -							
    -							<ul>
    -								<li>Connection-related JDBC wrapper utility methods (commit, rollback, etc) have been moved to the new DefaultConnectionProvider. They're no longer available from the DSLContext. This had been confusing to some users who called upon these methods while operating in pool DataSource mode.</li>
    -							</ul>
    -							
    -							<h3>ExecuteListeners</h3>
    -							<p>
    -								ExecuteListeners can no longer be configured via Settings. Instead they have to be injected into the Configuration. This resolves many class loader issues that were encountered before. It also helps listener implementations control their lifecycles themselves.
    -							</p>
    -							
    -							<h3>Data type API</h3>
    -							<p>
    -								The data type API has been changed drastically in order to enable some new DataType-related features. These changes include:
    -							</p>
    -
    -							<ul>
    -								<li>[SQLDialect]DataType and SQLDataType no longer implement DataType. They're mere constant containers</li>
    -								<li>Various minor API changes have been done.</li>
    -							</ul>
    -														
    -							<h3>Object renames</h3>
    -							<p>
    -								These objects have been moved / renamed:
    -							</p>
    -							
    -							<ul>
    -								<li>jOOU: a library used to represent unsigned integer types was moved from <code>org.jooq.util.unsigned</code> to <code>org.jooq.util.types</code> (which already contained INTERVAL data types)</li>
    -							</ul>
    -							
    -							<h3>Feature removals</h3>
    -							<p>
    -								Here are some minor features that have been removed in jOOQ 3.0
    -							</p>
    -
    -							<ul>
    -								<li>The ant task for code generation was removed, as it was not up to date at all. Code generation through ant can be performed easily by calling jOOQ's GenerationTool through a &lt;java> target.</li>
    -								<li>The navigation methods and "foreign key setters" are no longer generated in Record classes, as they are useful only to few users and the generated code is very collision-prone.</li>
    -								<li>The code generation configuration no longer accepts comma-separated regular expressions. Use the regex pipe | instead.</li>
    -								<li>The code generation configuration can no longer be loaded from .properties files. Only XML configurations are supported.</li>
    -								<li>The master data type feature is no longer supported. This feature was unlikely to behave exactly as users expected. It is better if users write their own code generators to generate master enum data types from their database tables. jOOQ's enum mapping and converter features sufficiently cover interacting with such user-defined types.</li>
    -								<li>The DSL subtypes are no longer instanciable. As DSL now only contains static methods, subclassing is no longer useful. There are still dialect-specific DSL types providing static methods for dialect-specific functions. But the code-generator no longer generates a schema-specific DSL</li>
    -								<li>The concept of a "main key" is no longer supported. The code generator produces UpdatableRecords only if the underlying table has a PRIMARY KEY. The reason for this removal is the fact that "main keys" are not reliable enough. They were chosen arbitrarily among UNIQUE KEYs.</li>
    -								<li>The UpdatableTable type has been removed. While adding significant complexity to the type hierarchy, this type adds not much value over a simple <code>Table.getPrimaryKey() != null</code> check.</li>
    -							    <li>The <code>USE</code> statement support has been removed from jOOQ. Its behaviour was ill-defined, while it didn't work the same way (or didn't work at all) in some databases.</li>
    -                            </ul>
    -						</html></content>
    -					</section>
    -
    -					<!-- 
    -					<section id="reference-glossary">
    -					  Analytical function -> window function
    -					  Arity -> Degree
    -					  AST
    -					  Batch
    -					  BNF
    -					  Catalog
    -					  Clause
    -					  Code generation
    -					  Column -> Field
    -					  Column expression
    -					  Common table expression
    -					  Condition -> Predicate
    -					  Configuration
    -					  Connection
    -					  Console
    -					  CRUD -> OLTP
    -					  DAO
    -					  Database
    -					  DataSource
    -					  Degree
    -					  Dialect
    -					  Domain Specific language (internal / external)
    -                      DSL
    -                      DSLContext
    -					  Execute
    -					  Execute listener
    -					  Execution lifecycle
    -					  Export
    -					  Expression
    -					  Fetch
    -					  Field
    -					  Function
    -					  Generic R-type
    -					  Generic T-type
    -					  JDBC
    -					  JPQL
    -					  Hibernate
    -					  Hierarchical query
    -					  HQL
    -					  Identifier
    -					  Import
    -					  Keyword
    -					  LINQ
    -					  Literal
    -					  Locking (optimistic / pessimistic)
    -					  Name -> Identifier
    -					  OLAP
    -					  OLTP
    -					  Pivot
    -					  POJO
    -					  Predicate
    -					  PreparedStatement
    -					  Procedure
    -					  Projection
    -					  Query
    -					  Schema
    -					  Settings
    -					  SLICK
    -					  SQL
    -					  SQL building
    -					  SQL execution
    -					  SQL standard
    -					  Statement
    -					  Table
    -					  Table expression
    -					  Record
    -					  Row
    -					  Row value expression
    -					  Result
    -					  ResultQuery
    -					  UDT
    -					  View
    -					  Window function
    -					
    -					</section>
    -					  -->
    -
    -					<section id="reference-credits">
    -						<title>Credits</title>
    -						<content><html>
    -							<p>
    -								jOOQ lives in a very challenging ecosystem. The Java to SQL interface is still one of the most important system interfaces. Yet there are still a lot of open questions, best practices and no "true" standard has been established. This situation gave way to a lot of tools, APIs, utilities which essentially tackle the same problem domain as jOOQ. jOOQ has gotten great inspiration from pre-existing tools and this section should give them some credit. Here is a list of inspirational tools in alphabetical order:
    -							</p>
    -							<ul>
    -								<li><a href="http://avaje.org">Avajé EBean</a>: Play! Framework's preferred ORM has a feature called asynchronous query execution. This idea made it into jOOQ as <reference class="org.jooq.ResultQuery" anchor="#fetchLater()"/></li>
    -								<li><a href="http://www.hibernate.org">Hibernate</a>: The de-facto standard (JPA) with its useful table-to-POJO mapping features have influenced jOOQ's <reference class="org.jooq.ResultQuery" anchor="#fetchInto(java.lang.Class)"/> facilities</li>
    -								<li><a href="http://www.h2database.com/html/jaqu.html">JaQu</a>: H2's own fluent API for querying databases</li>
    -								<li><a href="http://www.oracle.com/technetwork/java/javaee/tech/persistence-jsp-140049.html">JPA</a>: The de-facto standard in the javax.persistence packages, supplied by Oracle. Its annotations are useful to jOOQ as well.</li>
    -								<li><a href="http://onewebsql.com">OneWebSQL</a>: A commercial SQL abstraction API with support for DAO source code generation, which was integrated also in jOOQ</li>
    -								<li><a href="http://www.querydsl.com">QueryDSL</a>: A "LINQ-port" to Java. It has a similar fluent API, a similar code-generation facility, yet quite a different purpose. While jOOQ is all about SQL, QueryDSL (like LINQ) is mostly about querying.</li>
    -								<li><a href="http://slick.typesafe.com">SLICK</a>: A "LINQ-like" database abstraction layer for Scala. Unlike LINQ, its API doesn't really remind of SQL. Instead, it makes SQL look like Scala.</li>
    -								<li><a href="http://www.springsource.org/features/data-access">Spring Data</a>: Spring's JdbcTemplate knows RowMappers, which are reflected by jOOQ's <reference id="recordhandler"/> or <reference id="recordmapper"/></li>
    -							</ul>
    -						</html></content>
    -					</section>
    -				</sections>
    -			</section>
    -		</sections>
    -	</section>
    -</manual>
    diff --git a/jOOQ-website/src/main/resources/manual-3.2.xml b/jOOQ-website/src/main/resources/manual-3.2.xml
    deleted file mode 100644
    index 309df59369..0000000000
    --- a/jOOQ-website/src/main/resources/manual-3.2.xml
    +++ /dev/null
    @@ -1,11113 +0,0 @@
    -<?xml version="1.0" encoding="UTF-8"?>
    -<!-- 
    -  * Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com)
    -  * All rights reserved.
    -  *
    -  * This work is dual-licensed
    -  * - under the Apache Software License 2.0 (the "ASL")
    -  * - under the jOOQ License and Maintenance Agreement (the "jOOQ License")
    -  * ===========================================================================
    -  * You may choose which license applies to you:
    -  *
    -  * - If you're using this work with Open Source databases, you may choose
    -  *   either ASL or jOOQ License.
    -  * - If you're using this work with at least one commercial database, you must
    -  *   choose jOOQ License
    -  *
    -  * For more information, please visit http://www.jooq.org/licenses
    -  *
    -  * Apache Software License 2.0:
    -  * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -  * Licensed under the Apache License, Version 2.0 (the "License");
    -  * you may not use this file except in compliance with the License.
    -  * You may obtain a copy of the License at
    -  *
    -  *  http://www.apache.org/licenses/LICENSE-2.0
    -  *
    -  * Unless required by applicable law or agreed to in writing, software
    -  * distributed under the License is distributed on an "AS IS" BASIS,
    -  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  * See the License for the specific language governing permissions and
    -  * limitations under the License.
    -  *
    -  * jOOQ License and Maintenance Agreement:
    -  * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -  * Data Geekery grants the Customer the non-exclusive, timely limited and
    -  * non-transferable license to install and use the Software under the terms of
    -  * the jOOQ License and Maintenance Agreement.
    -  *
    -  * This library is distributed with a LIMITED WARRANTY. See the jOOQ License
    -  * and Maintenance Agreement for more details: http://www.jooq.org/licensing
    -  -->
    -<manual>
    -	<section id="manual">
    -		<title>The jOOQ User Manual. Multiple Pages</title>
    -		<content><html>
    -			<h2 id="Overview"><a href="#Overview" name="Overview">Overview</a></h2>
    -			<p>This manual is divided into six main sections:</p>
    -
    -			<ul>
    -				<li>
    -					<reference id="getting-started"/>
    -					<p>
    -						This section will get you started with jOOQ quickly. It contains
    -						simple explanations about what jOOQ is, what jOOQ isn't and how
    -						to set it up for the first time
    -					</p>
    -				</li>
    -				<li>
    -					<reference id="sql-building"/>
    -					<p>
    -						This section explains all about the jOOQ syntax used for building
    -						queries. It explains the central factories, the supported SQL
    -						statements and various other syntax elements
    -					</p>
    -				</li>
    -				<li>
    -					<reference id="code-generation"/>
    -					<p>
    -						This section explains how to configure and use the built-in source code
    -						generator
    -					</p>
    -				</li>
    -				<li>
    -					<reference id="sql-execution"/>
    -					<p>
    -						This section will get you through the specifics of what can be done
    -						with jOOQ at runtime, in order to execute queries, perform CRUD
    -						operations, import and export data, and hook into the jOOQ execution
    -						lifecycle for debugging
    -					</p>
    -				</li>
    -				<li>
    -					<reference id="tools"/>
    -					<p>
    -						This section is dedicated to tools that ship with jOOQ, such as the
    -						jOOQ's JDBC mocking feature
    -					</p>
    -				</li>
    -				<li>
    -					<reference id="reference"/>
    -					<p>
    -						This section is a reference for elements in this manual
    -					</p>
    -				</li>
    -			</ul>
    -		</html></content>
    -
    -		<sections>
    -			<section id="preface">
    -				<title>Preface</title>
    -				<content><html>
    -					<h3>jOOQ's reason for being - compared to JPA</h3>
    -					<p>
    -						Java and SQL have come a long way. SQL is an "ancient", yet established and well-understood technology. Java is a legacy too, although its platform JVM allows for many new and contemporary languages built on top of it. Yet, after all these years, libraries dealing with the interface between SQL and Java have come and gone, leaving JPA to be a standard that is accepted only with doubts, short of any surviving options.
    -					</p>
    -					<p>
    -						So far, there had been only few database abstraction frameworks or libraries, that truly respected SQL as a first class citizen among languages. Most frameworks, including the industry standards JPA, EJB, Hibernate, JDO, Criteria Query, and many others try to hide SQL itself, minimising its scope to things called JPQL, HQL, JDOQL and various other inferior query languages
    -					</p>
    -					<p>
    -						jOOQ has come to fill this gap.
    -					</p>
    -
    -					<h3>jOOQ's reason for being - compared to LINQ</h3>
    -					<p>
    -						Other platforms incorporate ideas such as LINQ (with LINQ-to-SQL), or Scala's SLICK, or also Java's QueryDSL to better integrate querying as a concept into their respective language. By querying, they understand querying of arbitrary targets, such as SQL, XML, Collections and other heterogeneous data stores. jOOQ claims that this is going the wrong way too.
    -					</p>
    -					<p>
    - 						In more advanced querying use-cases (more than simple CRUD and the occasional JOIN), people will want to profit from the expressivity of SQL. Due to the relational nature of SQL, this is quite different from what object-oriented and partially functional languages such as C#, Scala, or Java can offer.
    - 					</p>
    - 					<p>
    - 						It is very hard to formally express and validate joins and the ad-hoc table expression types they create. It gets even harder when you want support for more advanced table expressions, such as pivot tables, unnested cursors, or just arbitrary projections from derived tables. With a very strong object-oriented typing model, these features will probably stay out of scope.
    - 					</p>
    - 					<p>
    - 						In essence, the decision of creating an API that looks like SQL or one that looks like C#, Scala, Java is a definite decision in favour of one or the other platform. While it will be easier to evolve SLICK in similar ways as LINQ (or QueryDSL in the Java world), SQL feature scope that clearly communicates its underlying intent will be very hard to add, later on (e.g. how would you model Oracle's partitioned outer join syntax? How would you model ANSI/ISO SQL:1999 grouping sets? How can you support scalar subquery caching? etc...).					
    -					</p>
    -					<p>
    -						jOOQ has come to fill this gap.
    -					</p>
    -					
    -					<h3>jOOQ's reason for being - compared to SQL / JDBC</h3>
    -					<p>
    -						So why not just use SQL?
    -					</p> 
    -					<p>
    -						SQL can be written as plain text and passed through the JDBC API. Over the years, people have become wary of this approach for many reasons:
    -					</p>
    -					<ul>
    -						<li>No typesafety</li>
    -						<li>No syntax safety</li>
    -						<li>No bind value index safety</li>
    -						<li>Verbose SQL String concatenation</li>
    -						<li>Boring bind value indexing techniques</li>
    -						<li>Verbose resource and exception handling in JDBC</li>
    -						<li>A very "stateful", not very object-oriented JDBC API, which is hard to use</li>
    -					</ul>
    -					<p>
    -						For these many reasons, other frameworks have tried to abstract JDBC away in the past in one way or another. Unfortunately, many have completely abstracted SQL away as well
    -					</p>
    -					<p>
    -						jOOQ has come to fill this gap.
    -					</p>					
    -					
    -					<h3>jOOQ is different</h3>
    -					<p>
    -						SQL was never meant to be abstracted. To be confined in the narrow boundaries of heavy mappers, hiding the beauty and simplicity of relational data. SQL was never meant to be object-oriented. SQL was never meant to be anything other than... SQL!
    -					</p>					
    -				</html></content>
    -			</section>
    -			
    -			<section id="copyright">
    -				<title>Copyright, License, and Trademarks</title>
    -				<content>
    -                    <html>
    -                        <p>
    -                            This section lists the various licenses that apply to different versions of jOOQ. Prior to version 3.2, jOOQ was shipped for free under the terms of the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache Software License 2.0</a>. With jOOQ 3.2, jOOQ became dual-licensed: <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache Software License 2.0</a> (for use with Open Source databases) and <a href="http://www.jooq.org/licensing">commercial</a> (for use with commercial databases). Please contact <a href="mailto:sales@datageekery.com">sales@datageekery.com</a>, should you have any questions regarding licensing.
    -                        </p>
    -                        <h3>License for jOOQ 3.2 and later</h3>
    -                    </html>
    -                    
    -<text>Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com)
    -All rights reserved.
    -
    -This work is dual-licensed
    -- under the Apache Software License 2.0 (the "ASL")
    -- under the jOOQ License and Maintenance Agreement (the "jOOQ License")
    -=============================================================================
    -You may choose which license applies to you:
    -
    -- If you're using this work with Open Source databases, you may choose
    -  either ASL or jOOQ License.
    -- If you're using this work with at least one commercial database, you must
    -  choose jOOQ License
    -
    -For more information, please visit http://www.jooq.org/licenses
    -
    -Apache Software License 2.0:
    ------------------------------------------------------------------------------
    -Licensed under the Apache License, Version 2.0 (the "License");
    -you may not use this file except in compliance with the License.
    -You may obtain a copy of the License at
    -
    - http://www.apache.org/licenses/LICENSE-2.0
    -
    -Unless required by applicable law or agreed to in writing, software
    -distributed under the License is distributed on an "AS IS" BASIS,
    -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -See the License for the specific language governing permissions and
    -limitations under the License.
    -
    -jOOQ License and Maintenance Agreement:
    ------------------------------------------------------------------------------
    -Data Geekery grants the Customer the non-exclusive, timely limited and
    -non-transferable license to install and use the Software under the terms of
    -the jOOQ License and Maintenance Agreement.
    -
    -This library is distributed with a LIMITED WARRANTY. See the jOOQ License
    -and Maintenance Agreement for more details: http://www.jooq.org/licensing</text>
    -
    -                    <html>    
    -                        <h3>Historic license for jOOQ 1.x, 2.x, 3.0, 3.1</h3>
    -                    </html>
    -                    
    -<text>Copyright (c) 2009-2013, Lukas Eder, lukas.eder@gmail.com
    -All rights reserved.
    -
    -This software is licensed to you under the Apache License, Version 2.0
    -(the "License"); You may obtain a copy of the License at
    -
    -  http://www.apache.org/licenses/LICENSE-2.0
    -
    -Redistribution and use in source and binary forms, with or without
    -modification, are permitted provided that the following conditions are met:
    -
    -. Redistributions of source code must retain the above copyright notice, this
    -  list of conditions and the following disclaimer.
    -
    -. Redistributions in binary form must reproduce the above copyright notice,
    -  this list of conditions and the following disclaimer in the documentation
    -  and/or other materials provided with the distribution.
    -
    -. Neither the name "jOOQ" nor the names of its contributors may be
    -  used to endorse or promote products derived from this software without
    -  specific prior written permission.
    -
    -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -POSSIBILITY OF SUCH DAMAGE.</text>
    -
    -                    <html>    
    -                        <h3>Trademarks owned by Data Geekeryâ„¢ GmbH</h3>
    -                        <ul>
    -                            <li>jOOQâ„¢ is a trademark by Data Geekeryâ„¢ GmbH</li>
    -                            <li>jOOXâ„¢ is a trademark by Data Geekeryâ„¢ GmbH</li>
    -                            <li>jOORâ„¢ is a trademark by Data Geekeryâ„¢ GmbH</li>
    -                            <li>jOOUâ„¢ is a trademark by Data Geekeryâ„¢ GmbH</li>
    -                        </ul>
    -                        
    -                        <h3>Trademarks owned by database vendors with no affiliation to Data Geekeryâ„¢ GmbH</h3>
    -                        <ul>
    -                            <li>Access® is a registered trademark of Microsoft® Inc.</li>
    -                            <li>Adaptive Server® Enterprise is a registered trademark of Sybase®, Inc.</li>
    -                            <li>CUBRID™ is a trademark of NHN® Corp.</li>
    -                            <li>DB2® is a registered trademark of IBM® Corp.</li>
    -                            <li>Derby is a trademark of the Apacheâ„¢ Software Foundation</li>
    -                            <li>H2 is a trademark of the H2 Group</li>
    -                            <li>HSQLDB is a trademark of The hsql Development Group</li>
    -                            <li>Ingres is a trademark of Actianâ„¢ Corp.</li>
    -                            <li>MariaDB is a trademark of Monty Program Ab</li>
    -                            <li>MySQL® is a registered trademark of Oracle® Corp.</li>
    -                            <li>Firebird® is a registered trademark of Firebird Foundation Inc.</li>
    -                            <li>Oracle® database is a registered trademark of Oracle® Corp.</li>
    -                            <li>PostgreSQL® is a registered trademark of The PostgreSQL Global Development Group</li>
    -                            <li>Postgres Plus® is a registered trademark of EnterpriseDB® software</li>
    -                            <li>SQL Anywhere® is a registered trademark of Sybase®, Inc.</li>
    -                            <li>SQL Server® is a registered trademark of Microsoft® Inc.</li>
    -                            <li>SQLite is a trademark of Hipp, Wyrick &amp; Company, Inc.</li>
    -                        </ul>
    -                        
    -                        <h3>Other trademarks by vendors with no affiliation to Data Geekeryâ„¢ GmbH</h3>
    -                        <ul>
    -                            <li>Java® is a registered trademark by Oracle® Corp. and/or its affiliates</li>
    -                            <li>Scala is a trademark of EPFL</li>
    -                        </ul>
    -                        
    -                        <h3>Other trademark remarks</h3>
    -                        <p>
    -                            Other names may be trademarks of their respective owners.
    -                        </p>
    -                        
    -                        <p>
    -                            Throughout the manual, the above trademarks are referenced without a formal ® (R) or ™ (TM) symbol. It is believed that referencing third-party trademarks in this manual or on the jOOQ website constitutes "fair use". Please <a href="mailto:contact@datageekery.com">contact us</a> if you think that your trademark(s) are not properly attributed.
    -                        </p>
    -                    </html>
    -				</content>
    -			</section>
    -			
    -			<section id="getting-started">
    -				<title>Getting started with jOOQ</title>
    -				<content><html>
    -					<p>
    -						These chapters contain a quick overview of how to get started with this manual and with jOOQ. While the subsequent chapters contain a lot of reference information, this chapter here just wraps up the essentials.
    -					</p>
    -				</html></content>
    -
    -				<sections>
    -					<section id="the-manual">
    -					    <title>How to read this manual</title>
    -						<content><html>
    -							<p>
    -								This section helps you correctly interpret this manual in the context of jOOQ.
    -							</p>
    -							
    -							<h3>Code blocks</h3>
    -							<p>
    -								The following are code blocks:
    -							</p>
    -							
    -</html><sql><![CDATA[-- A SQL code block
    -SELECT 1 FROM DUAL]]></sql>
    -
    -<java><![CDATA[// A Java code block
    -for (int i = 0; i < 10; i++);]]></java>
    -
    -<xml><![CDATA[<!-- An XML code block -->
    -<hello what="world"></hello>]]></xml>		
    -
    -<config><![CDATA[# A config file code block
    -org.jooq.property=value]]></config><html>		
    -
    -							<p>
    -								These are useful to provide examples in code. Often, with jOOQ, it is even more useful to compare SQL code with its corresponding Java/jOOQ code. When this is done, the blocks are aligned side-by-side, with SQL usually being on the left, and Java usually being on the right:
    -							</p>					
    -							
    -</html><code-pair>
    -<sql><![CDATA[-- In SQL:
    -SELECT 1 FROM DUAL]]></sql>
    -<java><![CDATA[// Using jOOQ:
    -create.selectOne()]]></java>
    -</code-pair><html>
    -
    -							<h3>Code block contents</h3>
    -							<p>
    -								The contents of code blocks follow conventions, too. If nothing else is mentioned next to any given code block, then the following can be assumed:
    -							</p>
    -							
    -							
    -</html><sql><![CDATA[-- SQL assumptions
    -------------------
    -
    --- If nothing else is specified, assume that the Oracle syntax is used 
    -SELECT 1 FROM DUAL]]></sql>
    -							
    -<java><![CDATA[// Java assumptions
    -// ----------------
    - 
    -// Whenever you see "standalone functions", assume they were static imported from org.jooq.impl.DSL 
    -exists(); max(); min(); val(); inline(); // correspond to DSL.exists(); DSL.max(); DSL.min(); etc...
    -
    -// Whenever you see BOOK/Book, AUTHOR/Author and similar entities, assume they were (static) imported from the generated schema
    -BOOK.TITLE, AUTHOR.LAST_NAME // correspond to com.example.generated.Tables.BOOK.TITLE, com.example.generated.Tables.BOOK.TITLE
    -
    -// Whenever you see "create" being used in Java code, assume that this is an instance of org.jooq.DSLContext.
    -// The reason why it is called "create" is the fact, that a jOOQ QueryPart is being created from the DSL object:
    -DSLContext create = DSL.using(connection, SQLDialect.ORACLE);]]></java><html>
    -
    -                            <p>
    -                                Your naming may differ, of course. For instance, you could name the "create" instance "db", instead.
    -                            </p>
    -
    -							<h3>Degree (arity)</h3>
    -							<p>
    -							    jOOQ records (and many other API elements) have a degree N between 1 and {max-row-degree}. The variable degree of an API element is denoted as [N], e.g. Row[N] or Record[N]. The term "degree" is preferred over arity, as "degree" is the term used in the SQL standard, whereas "arity" is used more often in mathematics and relational theory.
    -							</p>
    -
    -							<h3>Settings</h3>
    -							<p>
    -								jOOQ allows to override runtime behaviour using <reference class="org.jooq.conf.Settings"/>. If nothing is specified, the default runtime settings are assumed.
    -							</p>
    -							
    -							<h3>Sample database</h3>
    -							<p>
    -								jOOQ query examples run against the sample database. See the manual's section about <reference id="sample-database" title="the sample database used in this manual"/> to learn more about the sample database.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -					<section id="sample-database">
    -					    <title>The sample database used in this manual</title>
    -						<content><html>
    -							<p>
    -							For the examples in this manual, the same database will always be referred to. It essentially consists of these entities created using the Oracle dialect
    -							</p>
    -</html><sql>CREATE TABLE language (
    -  id              NUMBER(7)     NOT NULL PRIMARY KEY,
    -  cd              CHAR(2)       NOT NULL,
    -  description     VARCHAR2(50)
    -)
    -
    -CREATE TABLE author (
    -  id              NUMBER(7)     NOT NULL PRIMARY KEY,
    -  first_name      VARCHAR2(50),
    -  last_name       VARCHAR2(50)  NOT NULL,
    -  date_of_birth   DATE,
    -  year_of_birth   NUMBER(7),
    -  distinguished   NUMBER(1)
    -)
    -
    -CREATE TABLE book (
    -  id              NUMBER(7)     NOT NULL PRIMARY KEY,
    -  author_id       NUMBER(7)     NOT NULL,
    -  title           VARCHAR2(400) NOT NULL,
    -  published_in    NUMBER(7)     NOT NULL,
    -  language_id     NUMBER(7)     NOT NULL,
    -  
    -  CONSTRAINT fk_book_author     FOREIGN KEY (author_id)   REFERENCES author(id),
    -  CONSTRAINT fk_book_language   FOREIGN KEY (language_id) REFERENCES language(id)
    -)
    -
    -CREATE TABLE book_store (
    -  name            VARCHAR2(400) NOT NULL UNIQUE
    -)
    -
    -CREATE TABLE book_to_book_store (
    -  name            VARCHAR2(400) NOT NULL,
    -  book_id         INTEGER       NOT NULL,
    -  stock           INTEGER,
    -  
    -  PRIMARY KEY(name, book_id),
    -  CONSTRAINT fk_b2bs_book_store FOREIGN KEY (name)        REFERENCES book_store (name) ON DELETE CASCADE,
    -  CONSTRAINT fk_b2bs_book       FOREIGN KEY (book_id)     REFERENCES book (id)         ON DELETE CASCADE
    -)</sql><html>
    -							<p>
    -								More entities, types (e.g. UDT's, ARRAY types, ENUM types, etc), stored procedures and packages are introduced for specific examples
    -							</p>
    -						</html></content>
    -					</section>
    -
    -					<section id="use-cases">
    -						<title>Different use cases for jOOQ</title>
    -						<content><html>
    -							<p>
    -								jOOQ has originally been created as a library for complete abstraction of JDBC and all database interaction. Various best practices that are frequently encountered in pre-existing software products are applied to this library. This includes:
    -							</p>
    -							<ul>
    -								<li>Typesafe database object referencing through generated schema, table, column, record, procedure, type, dao, pojo artefacts (see the chapter about <reference id="code-generation" title="code generation"/>)</li>
    -								<li>Typesafe SQL construction through a complete API modelling SQL as a domain specific language in Java (see the chapter about <reference id="dsl-and-non-dsl" title="the DSL API"/>)</li>
    -								<li>Convenient query execution through an improved API for result fetching (see the chapters about <reference id="fetching" title="the various types of data fetching"/>)</li>
    -								<li>SQL dialect abstraction and SQL clause simulation to improve cross-database compatibility and to enable missing features in simpler databases (see the chapter about <reference id="sql-dialects" title="SQL dialects"/>)</li>
    -								<li>SQL logging and debugging using jOOQ as an integral part of your development process (see the chapters about <reference id="logging" title="logging"/>)</li>
    -							</ul>
    -							<p>
    -								Effectively, jOOQ was originally designed to replace any other database abstraction framework short of the ones handling connection pooling and transaction management (see also the <reference id="reference-credits" title="credits for other database abstraction libraries"/>)
    -							</p>
    -							
    -							<h3>Use jOOQ the way you prefer</h3>
    -							<p>
    -								... but open source is community-driven. And the community has shown various ways of using jOOQ that diverge from its original intent. Some use cases encountered are:
    -							</p>
    -							<ul>
    -								<li>Using Hibernate for 70% of the queries (i.e. <reference id="crud-with-updatablerecords" title="CRUD"/>) and jOOQ for the remaining 30% where SQL is really needed</li>
    -								<li>Using jOOQ for SQL building and JDBC for SQL execution</li> 
    -								<li>Using jOOQ for SQL building and Spring Data for SQL execution</li>
    -								<li>Using jOOQ without the <reference id="code-generation" title="source code generator"/> to build the basis of a framework for dynamic SQL execution.</li> 
    -							</ul>
    -							
    -							<p>
    -								The following sections explain about various use cases for using jOOQ in your application.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="jooq-as-a-standalone-sql-builder">
    -								<title>jOOQ as a SQL builder</title>
    -								<content><html>
    -									<p>
    -										This is the most simple of all use cases, allowing for construction of valid SQL for any database. In this use case, you will not use <reference id="jooq-as-a-sql-builder-with-code-generation" title="jOOQ's code generator"/> and probably not even <reference id="jooq-as-a-sql-executor" title="jOOQ's query execution facilities"/>. Instead, you'll use jOOQ to wrap strings, literals and other user-defined objects into an object-oriented, type-safe AST modelling your SQL statements. An example is given here: 
    -									</p>
    -									
    -</html><java><![CDATA[// Fetch a SQL string from a jOOQ Query in order to manually execute it with another tool.
    -String sql = create.select(fieldByName("BOOK","TITLE"), fieldByName("AUTHOR","FIRST_NAME"), fieldByName("AUTHOR","LAST_NAME"))
    -                   .from(tableByName("BOOK"))
    -                   .join(tableByName("AUTHOR"))
    -                   .on(fieldByName("BOOK", "AUTHOR_ID").equal("AUTHOR", "ID"))
    -                   .where(fieldByName("BOOK", "PUBLISHED_IN").equal(1948))
    -                   .getSQL();]]></java><html>
    -                   
    -                   					<p>
    -                   						The SQL string that you can generate as such can then be executed using JDBC directly, using Spring's JdbcTemplate, using Apache DbUtils and many other tools.
    -                   					</p>
    -                   					<p>
    -                   						If you wish to use jOOQ only as a SQL builder, the following sections of the manual will be of interest to you:
    -                  					</p>
    -                  					<ul>
    -                  						<li><reference id="sql-building" title="SQL building"/>: This section contains a lot of information about creating SQL statements using the jOOQ API</li>
    -                  						<li><reference id="plain-sql" title="Plain SQL"/>: This section contains information useful in particular to those that want to supply <reference id="table-expressions" title="table expressions"/>, <reference id="column-expressions" title="column expressions"/>, etc. as plain SQL to jOOQ, rather than through generated artefacts</li>
    -                  					</ul>
    -								</html></content>
    -							</section>
    -
    -							<section id="jooq-as-a-sql-builder-with-code-generation">
    -								<title>jOOQ as a SQL builder with code generation</title>
    -								<content><html>
    -									<p>
    -										In addition to using jOOQ as a <reference id="jooq-as-a-standalone-sql-builder" title="standalone SQL builder"/>, you can also use jOOQ's code generation features in order to compile your SQL statements using a Java compiler against an actual database schema. This adds a lot of power and expressiveness to just simply constructing SQL using custom strings and literals, as you can be sure that all database artefacts actually exist in the database, and that their type is correct. An example is given here: 
    -									</p>
    -
    -</html><java><![CDATA[// Fetch a SQL string from a jOOQ Query in order to manually execute it with another tool.
    -String sql = create.select(BOOK.TITLE, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -                   .from(BOOK)
    -                   .join(AUTHOR)
    -                   .on(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -                   .where(BOOK.PUBLISHED_IN.equal(1948))
    -                   .getSQL();]]></java><html>
    -                   
    -                   					<p>
    -                   						The SQL string that you can generate as such can then be executed using JDBC directly, using Spring's JdbcTemplate, using Apache DbUtils and many other tools.
    -                   					</p>
    -                   					<p>
    -                   						If you wish to use jOOQ only as a SQL builder with code generation, the following sections of the manual will be of interest to you:
    -                  					</p>
    -                  					<ul>
    -                  						<li><reference id="sql-building" title="SQL building"/>: This section contains a lot of information about creating SQL statements using the jOOQ API</li>
    -                  						<li><reference id="code-generation" title="Code generation"/>: This section contains the necessary information to run jOOQ's code generator against your developer database</li>
    -                  					</ul>
    -								</html></content>
    -							</section>
    -
    -							<section id="jooq-as-a-sql-executor">
    -								<title>jOOQ as a SQL executor</title>
    -								<content><html>
    -									<p>
    -										Instead of any tool mentioned in the previous chapters, you can also use jOOQ directly to execute your jOOQ-generated SQL statements. This will add a lot of convenience on top of the previously discussed API for typesafe SQL construction, when you can re-use the information from generated classes to fetch records and custom data types. An example is given here:
    -									</p>
    -									
    -</html><java><![CDATA[// Typesafely execute the SQL statement directly with jOOQ
    -Result<Record3<String, String, String>> result = 
    -create.select(BOOK.TITLE, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .from(BOOK)
    -      .join(AUTHOR)
    -      .on(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -      .where(BOOK.PUBLISHED_IN.equal(1948))
    -      .fetch();]]></java><html>
    -
    -									<p>
    -										jOOQ doesn't stop here, though! You can execute any SQL with jOOQ. In other words, you can use any other SQL building tool and run the SQL statements with jOOQ. An example is given here:
    -									</p>
    -
    -</html><java><![CDATA[// Use your favourite tool to construct SQL strings:
    -String sql = "SELECT title, first_name, last_name FROM book JOIN author ON book.author_id = author.id " +
    -             "WHERE book.published_in = 1984";
    -
    -// Fetch results using jOOQ
    -Result<Record> result = create.fetch(sql);
    -
    -// Or execute that SQL with JDBC, fetching the ResultSet with jOOQ:
    -ResultSet rs = connection.createStatement().executeQuery(sql);
    -Result<Record> result = create.fetch(rs);]]></java><html>
    -
    -									<p>
    -                   						If you wish to use jOOQ as a SQL executor with (or without) code generation, the following sections of the manual will be of interest to you:
    -                  					</p>
    -                  					<ul>
    -                  						<li><reference id="sql-building" title="SQL building"/>: This section contains a lot of information about creating SQL statements using the jOOQ API</li>
    -                  						<li><reference id="code-generation" title="Code generation"/>: This section contains the necessary information to run jOOQ's code generator against your developer database</li>
    -                  						<li><reference id="sql-execution" title="SQL execution"/>: This section contains a lot of information about executing SQL statements using the jOOQ API</li>
    -                  						<li><reference id="fetching"/>: This section contains some useful information about the various ways of fetching data with jOOQ</li>
    -                  					</ul>
    -								</html></content>
    -							</section>
    -
    -							<section id="jooq-for-crud">
    -								<title>jOOQ for CRUD</title>
    -								<content><html>
    -									<p>
    -										This is probably the most complete use-case for jOOQ: Use all of jOOQ's features. Apart from jOOQ's fluent API for query construction, jOOQ can also help you execute everyday CRUD operations. An example is given here:
    -									</p>
    -
    -</html><java><![CDATA[// Fetch all authors
    -for (AuthorRecord author : create.fetch(AUTHOR)) {
    -
    -    // Skip previously distinguished authors  
    -    if ((int) author.getDistinguished() == 1)
    -        continue;
    -  
    -    // Check if the author has written more than 5 books
    -    if (author.fetchChildren(FK_BOOK_AUTHOR).size() > 5) {
    -    
    -        // Mark the author as a "distinguished" author
    -        author.setDistinguished(1);
    -        author.store();
    -    }
    -}]]></java><html>
    -
    -									<p>
    -                   						If you wish to use all of jOOQ's features, the following sections of the manual will be of interest to you (including all sub-sections):
    -                  					</p>
    -                  					<ul>
    -                  						<li><reference id="sql-building" title="SQL building"/>: This section contains a lot of information about creating SQL statements using the jOOQ API</li>
    -                  						<li><reference id="code-generation" title="Code generation"/>: This section contains the necessary information to run jOOQ's code generator against your developer database</li>
    -                  						<li><reference id="sql-execution" title="SQL execution"/>: This section contains a lot of information about executing SQL statements using the jOOQ API</li>
    -                  					</ul>
    -								</html></content>
    -							</section>
    -							
    -							<section id="jooq-for-pros">
    -								<title>jOOQ for PROs</title>
    -								<content><html>
    -									<p>
    -										jOOQ isn't just a library that helps you <reference id="sql-building" title="build"/> and <reference id="sql-execution" title="execute"/> SQL against your <reference id="code-generation" title="generated, compilable schema"/>. jOOQ ships with a lot of tools. Here are some of the most important tools shipped with jOOQ:
    -									</p>
    -									<ul>
    -										<li><reference id="execute-listeners" title="jOOQ's Execute Listeners"/>: jOOQ allows you to hook your custom execute listeners into jOOQ's SQL statement execution lifecycle in order to centrally coordinate any arbitrary operation performed on SQL being executed. Use this for logging, identity generation, SQL tracing, performance measurements, etc.</li>
    -										<li><reference id="logging" title="Logging"/>: jOOQ has a standard DEBUG logger built-in, for logging and tracing all your executed SQL statements and fetched result sets</li>
    -										<li><reference id="stored-procedures" title="Stored Procedures"/>: jOOQ supports stored procedures and functions of your favourite database. All routines and user-defined types are generated and can be included in jOOQ's SQL building API as function references.</li>
    -										<li><reference id="batch-execution" title="Batch execution"/>: Batch execution is important when executing a big load of SQL statements. jOOQ simplifies these operations compared to JDBC</li>
    -										<li><reference id="exporting" title="Exporting"/> and <reference id="importing" title="Importing"/>: jOOQ ships with an API to easily export/import data in various formats</li>
    -									</ul>
    -									<p>
    -										If you're a power user of your favourite, feature-rich database, jOOQ will help you access all of your database's vendor-specific features, such as OLAP features, stored procedures, user-defined types, vendor-specific SQL, functions, etc. Examples are given throughout this manual.
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="tutorials">
    -						<title>Tutorials</title>
    -						<content><html>
    -							<p>
    -								Don't have time to read the full manual? Here are a couple of tutorials that will get you into the most essential parts of jOOQ as quick as possible.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="jooq-in-7-steps">
    -								<title>jOOQ in 7 easy steps</title>
    -								<content><html>
    -									<p>
    -										This manual section is intended for new users, to help them get a running application with jOOQ, quickly.
    -									</p>
    -								</html></content>
    -								
    -								<sections>
    -									<section id="jooq-in-7-steps-step1">
    -										<title>Step 1: Preparation</title>
    -										<content><html>
    -											<p>
    -												If you haven't already downloaded it, download jOOQ:<br/>
    -												<a href="https://sourceforge.net/projects/jooq/files/Release/" title="jOOQ download">https://sourceforge.net/projects/jooq/files/Release/</a>
    -											</p>
    -											
    -											<p>
    -												Alternatively, you can create a Maven dependency to download jOOQ artefacts:
    -											</p>
    -</html><xml><![CDATA[<dependency>
    -  <groupId>org.jooq</groupId>
    -  <artifactId>jooq</artifactId>
    -  <version>{jooq-version}</version>
    -</dependency>
    -<dependency>
    -  <groupId>org.jooq</groupId>
    -  <artifactId>jooq-meta</artifactId>
    -  <version>{jooq-version}</version>
    -</dependency>
    -<dependency>
    -  <groupId>org.jooq</groupId>
    -  <artifactId>jooq-codegen</artifactId>
    -  <version>{jooq-version}</version>
    -</dependency>]]></xml><html>
    -
    -											<p>
    -												Please refer to the manual's section about <reference id="codegen-configuration" title="Code generation configuration"/> to learn how to use jOOQ's code generator with Maven.
    -											</p>
    -
    -											<p>
    -												For this example, we'll be using MySQL. If you haven't already downloaded MySQL Connector/J, download it here:<br/>
    -												<a href="http://dev.mysql.com/downloads/connector/j/" target="_blank" title="MySQL JDBC driver">http://dev.mysql.com/downloads/connector/j/</a>
    -											</p>
    -
    -											<p>
    -												If you don't have a MySQL instance up and running yet, get <a href="http://www.apachefriends.org/en/xampp.html" title="XAMPP">XAMPP</a> now! XAMPP is a simple installation bundle for Apache, MySQL, PHP and Perl
    -											</p>
    -										</html></content>
    -									</section>
    -									
    -									<section id="jooq-in-7-steps-step2">
    -										<title>Step 2: Your database</title>
    -										<content><html>
    -											<p>
    -												We're going to create a database called "library" and a corresponding "author" table. Connect to MySQL via your command line client and type the following:
    -											</p>
    -											
    -</html><sql>CREATE DATABASE library;
    -
    -CREATE TABLE `author` (
    -  `id` int NOT NULL,
    -  `first_name` varchar(255) DEFAULT NULL,
    -  `last_name` varchar(255) DEFAULT NULL,
    -  PRIMARY KEY (`id`)
    -);
    -</sql>
    -										</content>
    -									</section>
    -									
    -									<section id="jooq-in-7-steps-step3">
    -										<title>Step 3: Code generation</title>
    -										<content><html>
    -											<p>
    -												In this step, we're going to use jOOQ's command line tools to generate classes that map to the Author table we just created. More detailed information about how to set up the jOOQ code generator can be found here:<br/>
    -												<reference id="code-generation" title="jOOQ manual pages about setting up the code generator"/>
    -											</p>
    -
    -											<p>
    -												The easiest way to generate a schema is to copy the jOOQ jar files (there should be 3) and the MySQL Connector jar file to a temporary directory. Then, create a library.xml that looks like this:
    -											</p>
    -											
    -</html><xml><![CDATA[<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    -<configuration xmlns="http://www.jooq.org/xsd/jooq-codegen-{codegen-xsd-version}.xsd">
    -  <!-- Configure the database connection here -->
    -  <jdbc>
    -    <driver>com.mysql.jdbc.Driver</driver>
    -    <url>jdbc:mysql://localhost:3306/library</url>
    -    <user>root</user>
    -    <password></password>
    -  </jdbc>
    -
    -  <generator>
    -    <!-- The default code generator. You can override this one, to generate your own code style
    -         Defaults to org.jooq.util.DefaultGenerator -->
    -    <name>org.jooq.util.DefaultGenerator</name>
    -
    -    <database>
    -      <!-- The database type. The format here is:
    -           org.util.[database].[database]Database -->
    -      <name>org.jooq.util.mysql.MySQLDatabase</name>
    -
    -      <!-- The database schema (or in the absence of schema support, in your RDBMS this
    -           can be the owner, user, database name) to be generated -->
    -      <inputSchema>library</inputSchema>
    -
    -      <!-- All elements that are generated from your schema 
    -           (A Java regular expression. Use the pipe to separate several expressions)
    -           Watch out for case-sensitivity. Depending on your database, this might be important! -->
    -      <includes>.*</includes>
    -
    -      <!-- All elements that are excluded from your schema 
    -           (A Java regular expression. Use the pipe to separate several expressions).
    -           Excludes match before includes -->
    -      <excludes></excludes>
    -    </database>
    -
    -    <target>
    -      <!-- The destination package of your generated classes (within the destination directory) -->
    -      <packageName>test.generated</packageName>
    -
    -      <!-- The destination directory of your generated classes -->
    -      <directory>C:/workspace/MySQLTest/src</directory>
    -    </target>
    -  </generator>
    -</configuration>]]></xml><html>
    -											<p>
    -												Replace the username with whatever user has the appropriate privileges to query the database meta data. You'll also want to look at the other values and replace as necessary. Here are the two interesting properties:
    -											</p>
    -											<p>
    -												<code>generator.target.package</code> - set this to the parent package you want to create for the generated classes. The setting of <code>test.generated</code> will cause the <code>test.generated.Author</code> and <code>test.generated.AuthorRecord</code> to be created
    -											</p>
    -											<p>
    -												<code>generator.target.directory</code> - the directory to output to.
    -											</p>
    -											
    -											<p>
    -												Once you have the JAR files and library.xml in your temp directory, type this (use colons instead of semi-colons on UNIX/Linux systems):
    -											</p>
    -
    -</html><text>java -classpath jooq-{jooq-version}.jar;jooq-meta-{jooq-version}.jar;jooq-codegen-{jooq-version}.jar;mysql-connector-java-5.1.18-bin.jar;. 
    -  org.jooq.util.GenerationTool /library.xml
    -</text><html>
    -
    -											<p>
    -												Note the prefix slash before library.xml. Even though it's in our working directory, we need to prepend a slash, as the configuration file is loaded from the classpath. Replace the filenames with your filenames. In this example, jOOQ {jooq-version} is being used. If everything has worked, you should see this in your console output:
    -											</p>
    -
    -</html><text>Nov 1, 2011 7:25:06 PM org.jooq.impl.JooqLogger info
    -INFO: Initialising properties  : /library.xml
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Database parameters
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: ----------------------------------------------------------
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO:   dialect                : MYSQL
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO:   schema                 : library
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO:   target dir             : C:/workspace/MySQLTest/src
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO:   target package         : test.generated
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: ----------------------------------------------------------
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Emptying                 : C:/workspace/MySQLTest/src/test/generated
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Generating classes in    : C:/workspace/MySQLTest/src/test/generated
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Generating schema        : Library.java
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Schema generated         : Total: 122.18ms
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Sequences fetched        : 0 (0 included, 0 excluded)
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Tables fetched           : 5 (5 included, 0 excluded)
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Generating tables        : C:/workspace/MySQLTest/src/test/generated/tables
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: ARRAYs fetched           : 0 (0 included, 0 excluded)
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Enums fetched            : 0 (0 included, 0 excluded)
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: UDTs fetched             : 0 (0 included, 0 excluded)
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Generating table         : Author.java
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Tables generated         : Total: 680.464ms, +558.284ms
    -Nov 1, 2011 7:25:07 PM org.jooq.impl.JooqLogger info
    -INFO: Generating Keys          : C:/workspace/MySQLTest/src/test/generated/tables
    -Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info
    -INFO: Keys generated           : Total: 718.621ms, +38.157ms
    -Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info
    -INFO: Generating records       : C:/workspace/MySQLTest/src/test/generated/tables/records
    -Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info
    -INFO: Generating record        : AuthorRecord.java
    -Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info
    -INFO: Table records generated  : Total: 782.545ms, +63.924ms
    -Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info
    -INFO: Routines fetched         : 0 (0 included, 0 excluded)
    -Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info
    -INFO: Packages fetched         : 0 (0 included, 0 excluded)
    -Nov 1, 2011 7:25:08 PM org.jooq.impl.JooqLogger info
    -INFO: GENERATION FINISHED!     : Total: 791.688ms, +9.143ms
    -</text>
    -										
    -										</content>
    -									</section>
    -									
    -									<section id="jooq-in-7-steps-step4">
    -										<title>Step 4: Connect to your database</title>
    -										<content><html>
    -											<p>
    -												Let's just write a vanilla main class in the project containing the generated classes:
    -											</p>
    -											
    -</html><java><![CDATA[// For convenience, always static import your generated tables and jOOQ functions to decrease verbosity:
    -import static test.generated.Tables.*;
    -import static org.jooq.impl.DSL.*;
    -
    -public class Main {
    -    public static void main(String[] args) {
    -        Connection conn = null;
    -
    -        String userName = "root";
    -        String password = "";
    -        String url = "jdbc:mysql://localhost:3306/library";
    -
    -        try {
    -            Class.forName("com.mysql.jdbc.Driver").newInstance();
    -            conn = DriverManager.getConnection(url, userName, password);
    -        } catch (Exception e) {
    -            // For the sake of this tutorial, let's keep exception handling simple
    -            e.printStackTrace();
    -        } finally {
    -            if (conn != null) {
    -                try {
    -                    conn.close();
    -                } catch (SQLException ignore) {
    -                }
    -            }
    -        }
    -    }
    -}]]></java><html>
    -
    -											<p>
    -												This is pretty standard code for establishing a MySQL connection.
    -											</p>
    -										</html></content>
    -									</section>
    -									
    -									<section id="jooq-in-7-steps-step5">
    -										<title>Step 5: Querying</title>
    -										<content><html>
    -											<p>
    -												Let's add a simple query:
    -											</p>
    -											
    -</html><java><![CDATA[DSLContext create = DSL.using(conn, SQLDialect.MYSQL);
    -Result<Record> result = create.select().from(AUTHOR).fetch();]]></java><html>
    -
    -											<p>
    -												First get an instance of <code>DSLContext</code> so we can write a simple <code>SELECT</code> query. We pass an instance of the MySQL connection to <code>DSL</code>. Note that the DSLContext doesn't close the connection. We'll have to do that ourselves.
    -											</p>
    -											<p>
    -												We then use jOOQ's DSL to return an instance of Result. We'll be using this result in the next step.
    -											</p>
    -										</html></content>
    -									</section>
    -									
    -									<section id="jooq-in-7-steps-step6">
    -										<title>Step 6: Iterating</title>
    -										<content><html>
    -											<p>
    -												After the line where we retrieve the results, let's iterate over the results and print out the data:
    -											</p>
    -
    -</html><java><![CDATA[for (Record r : result) {
    -    Integer id = r.getValue(AUTHOR.ID);
    -    String firstName = r.getValue(AUTHOR.FIRST_NAME);
    -    String lastName = r.getValue(AUTHOR.LAST_NAME);
    -
    -    System.out.println("ID: " + id + " first name: " + firstName + " last name: " + lastName);
    -}]]></java><html>
    -
    -											<p>
    -												The full program should now look like this:
    -											</p>
    -											
    -</html><java><![CDATA[package test;
    -
    -// For convenience, always static import your generated tables and
    -// jOOQ functions to decrease verbosity:
    -import static test.generated.Tables.*;
    -import static org.jooq.impl.DSL.*;
    -
    -import java.sql.*;
    -
    -import org.jooq.*;
    -import org.jooq.impl.*;
    -
    -public class Main {
    -
    -    /**
    -     * @param args
    -     */
    -    public static void main(String[] args) {
    -        Connection conn = null;
    -
    -        String userName = "root";
    -        String password = "";
    -        String url = "jdbc:mysql://localhost:3306/library";
    -
    -        try {
    -            Class.forName("com.mysql.jdbc.Driver").newInstance();
    -            conn = DriverManager.getConnection(url, userName, password);
    -
    -            DSLContext create = DSL.using(conn, SQLDialect.MYSQL);
    -            Result<Record> result = create.select().from(AUTHOR).fetch();
    -
    -            for (Record r : result) {
    -                Long id = r.getValue(AUTHOR.ID);
    -                String firstName = r.getValue(AUTHOR.FIRST_NAME);
    -                String lastName = r.getValue(AUTHOR.LAST_NAME);
    -
    -                System.out.println("ID: " + id + " first name: " + firstName + " last name: " + lastName);
    -            }
    -        } catch (Exception e) {
    -            // For the sake of this tutorial, let's keep exception handling simple
    -            e.printStackTrace();
    -        } finally {
    -            if (conn != null) {
    -                try {
    -                    conn.close();
    -                } catch (SQLException ignore) {
    -                }
    -            }
    -        }
    -    }
    -}]]></java>
    -										</content>
    -									</section>
    -									
    -									<section id="jooq-in-7-steps-step7">
    -										<title>Step 7: Explore!</title>
    -										<content><html>
    -											<p>
    -												jOOQ has grown to be a comprehensive SQL library. For more information, please consider the documentation:<br/>
    -												<a href="http://www.jooq.org/learn.php" title="jOOQ Manual">http://www.jooq.org/learn.php</a>
    -											</p>
    -											<p>
    -												... explore the Javadoc:<br/>
    -												<a href="http://www.jooq.org/javadoc/latest/" title="jOOQ Javadoc">http://www.jooq.org/javadoc/latest/</a>
    -											</p>
    -											<p>
    -												... or join the news group:<br/>
    -												<a href="https://groups.google.com/forum/#!forum/jooq-user" title="jOOQ news group">https://groups.google.com/forum/#!forum/jooq-user</a>
    -											</p>
    -											<p>
    -											    This tutorial is the courtesy of Ikai Lan. See the original source here:<br/>
    -											    <a href="http://ikaisays.com/2011/11/01/getting-started-with-jooq-a-tutorial/" target="_blank" title="Ikai Lan's jOOQ tutorial">http://ikaisays.com/2011/11/01/getting-started-with-jooq-a-tutorial/</a>
    -											</p>
    -										</html></content>
    -									</section>
    -								</sections>
    -							</section>
    -
    -							<section id="jooq-in-modern-ides">
    -								<title>Using jOOQ in modern IDEs</title>
    -								<content><html>
    -									<p>Feel free to contribute a tutorial!</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="jooq-with-spring">
    -								<title>Using jOOQ with Spring and DBCP</title>
    -								<content><html>
    -									<p>
    -                                        jOOQ and Spring are easy to integrate. In this example, we shall integrate:
    -                                    </p>
    -                                    <ul>
    -                                        <li><a href="http://commons.apache.org/proper/commons-dbcp">Apache Commons DBCP</a> as the connection pooling library.</li>
    -                                        <li><a href="http://www.springsource.org/spring-data">Spring JDBC</a> as the transaction management library.</li>
    -                                        <li><a href="http://www.jooq.org">jOOQ</a> as the <reference id="sql-building" title="SQL building"/> and <reference id="sql-execution" title="execution"/> library.</li>
    -                                    </ul>
    -                                    
    -                                    <p>
    -                                        The following steps show how to integrate the libraries.
    -                                    </p>
    -                                    
    -                                    <h3>Add the required Maven dependencies</h3>
    -                                    <p>
    -                                        For this example, we'll create the following Maven dependencies
    -                                    </p>
    -
    -</html><xml><![CDATA[<!-- Use this or the latest Spring RELEASE version -->
    -<properties>
    -    <org.springframework.version>3.2.3.RELEASE</org.springframework.version>
    -</properties>
    -
    -<dependencies>
    -    <dependency>
    -        <groupId>org.jooq</groupId>
    -        <artifactId>jooq</artifactId>
    -        <version>{jooq-version}</version>
    -    </dependency>
    -    <dependency>
    -        <groupId>com.h2database</groupId>
    -        <artifactId>h2</artifactId>
    -        <version>1.3.168</version>
    -    </dependency>
    -    <dependency>
    -        <groupId>commons-dbcp</groupId>
    -        <artifactId>commons-dbcp</artifactId>
    -        <version>1.4</version>
    -    </dependency>
    -    <dependency>
    -        <groupId>org.springframework</groupId>
    -        <artifactId>spring-core</artifactId>
    -        <version>${org.springframework.version}</version>
    -    </dependency>
    -    <dependency>
    -        <groupId>org.springframework</groupId>
    -        <artifactId>spring-beans</artifactId>
    -        <version>${org.springframework.version}</version>
    -    </dependency>
    -    <dependency>
    -        <groupId>org.springframework</groupId>
    -        <artifactId>spring-context</artifactId>
    -        <version>${org.springframework.version}</version>
    -    </dependency>
    -    <dependency>
    -        <groupId>org.springframework</groupId>
    -        <artifactId>spring-jdbc</artifactId>
    -        <version>${org.springframework.version}</version>
    -    </dependency>
    -</dependencies>
    -]]></xml><html>          
    -
    -                                    <h3>Create a minimal Spring configuration file</h3>
    -                                    <p>
    -                                        The above dependencies are configured together using a Spring Beans configuration:
    -                                    </p>
    -                                    
    -</html><xml><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
    -<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
    -
    -<beans>
    -    <!-- Using Apache DBCP as a connection pooling library.
    -         Replace this with your preferred DataSource implementation -->
    -    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
    -        init-method="createDataSource" destroy-method="close">
    -        <property name="driverClassName" value="org.h2.Driver" />
    -        <property name="url" value="jdbc:h2:~/maven-test" />
    -        <property name="username" value="sa" />
    -        <property name="password" value="" />
    -    </bean>
    -
    -    <!-- Using Spring JDBC for transaction management -->
    -    <bean id="transactionManager"
    -        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    -        <property name="dataSource" ref="dataSource" />
    -    </bean>
    -
    -    <bean id="transactionAwareDataSource"
    -        class="org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy">
    -        <constructor-arg ref="dataSource" />
    -    </bean>
    -
    -    <!-- Bridging Spring JDBC data sources to jOOQ's ConnectionProvider -->
    -    <bean class="org.jooq.impl.DataSourceConnectionProvider" name="connectionProvider">
    -        <constructor-arg ref="transactionAwareDataSource" />
    -    </bean>
    -
    -    <bean id="dsl" class="org.jooq.impl.DefaultDSLContext">
    -        <constructor-arg ref="config" />
    -    </bean>
    -
    -    <!-- Invoking an internal, package-private constructor for the example
    -         Implement your own Configuration for more reliable behaviour -->
    -    <bean class="org.jooq.impl.DefaultConfiguration" name="config">
    -        <constructor-arg index="0" ref="connectionProvider" />
    -        <constructor-arg index="1"><null /></constructor-arg>
    -        <constructor-arg index="2"><value type="org.jooq.SQLDialect">H2</value></constructor-arg>
    -        <constructor-arg index="3"><null /></constructor-arg>
    -        <constructor-arg index="4"><null /></constructor-arg>
    -    </bean>
    -</beans>]]></xml><html>
    -
    -                                    <h3>Run a query in the JDBC Connection's transaction:</h3>
    -                                    <p>
    -                                        The following simple program shows how you can now easily obtain a <reference id="dsl-context" title="DSLContext" /> instance, from which queries can be executed:
    -                                    </p>
    -                                    
    -</html><java><![CDATA[package org.jooq.test.spring;
    -
    -import org.jooq.DSLContext;
    -
    -import org.springframework.context.ApplicationContext;
    -import org.springframework.context.support.ClassPathXmlApplicationContext;
    -
    -public class Test {
    -    public static void main(String[] args) {
    -
    -        // Configure the Spring application context, loading the bean configuration
    -        ApplicationContext context =
    -        new ClassPathXmlApplicationContext(new String[] {
    -            "jooq-spring-config-minimal.xml"
    -        });
    -
    -        // Fetch a DSLContext reference
    -        DSLContext dsl = context.getBean("dsl", DSLContext.class);
    -
    -        // Execute a jOOQ query in its JDBC Connection's transaction
    -        // ---------------------------------------------------------
    -        System.out.println(dsl.selectOne().fetch());
    -    }
    -}]]></java><html>
    -
    -                                    <p>
    -                                        The above example shows how Spring's TransactionAwareDataSourceProxy discovers that a jOOQ query is not executed in a transactional context.
    -                                    </p>
    -                                    
    -                                    <h3>Run a query in an "explicit transaction":</h3>
    -                                    <p>
    -                                        The following simple program shows how Spring's TransactionAwareDataSourceProxy will discover that several jOOQ queries are executed in the context of an explicitly created transaction 
    -                                    </p>
    -                                    
    -</html><java><![CDATA[package org.jooq.test.spring;
    -
    -import org.jooq.DSLContext;
    -
    -import org.springframework.context.ApplicationContext;
    -import org.springframework.context.support.ClassPathXmlApplicationContext;
    -
    -public class Test {
    -    public static void main(String[] args) {
    -
    -        // Configure the Spring application context, loading the bean configuration
    -        ApplicationContext context =
    -        new ClassPathXmlApplicationContext(new String[] {
    -            "jooq-spring-config-minimal.xml"
    -        });
    -
    -        // Fetch a DSLContext reference
    -        DSLContext dsl = context.getBean("dsl", DSLContext.class);
    -
    -        // Execute some jOOQ queries in an explicit transaction
    -        // ----------------------------------------------------
    -        PlatformTransactionManager transactionManager =
    -            context.getBean("transactionManager", PlatformTransactionManager.class);
    -
    -        TransactionStatus tx = transactionManager.getTransaction(new DefaultTransactionDefinition());
    -        dsl.selectOne().fetch();
    -        dsl.selectOne().fetch();
    -        dsl.selectOne().fetch();
    -        transactionManager.commit(tx);
    -    }
    -}]]></java><html>                                  
    -
    -                                    <p>
    -                                        Of course, in an actual productive setup, you are more likely to use Spring's AOP features to declare transactions and transactional behaviour on service methods, instead of explicitly starting and committing / rollbacking transactions. There are many other transaction models that you can choose to use with jOOQ.
    -                                    </p>  
    -								</html></content>
    -							</section>
    -
    -							<section id="a-simple-web-application">
    -								<title>A simple web application with jOOQ</title>
    -								<content><html>
    -									<p>Feel free to contribute a tutorial!</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -					
    -					<section id="jooq-and-scala">
    -						<title>jOOQ and Scala</title>
    -						<content><html>
    -							<p>
    -								As any other library, jOOQ can be easily used in Scala, taking advantage of the many Scala language features such as for example:
    -							</p>
    -							<ul>
    -								<li>Optional "." to dereference methods from expressions</li>
    -								<li>Optional "(" and ")" to delimit method argument lists</li>
    -								<li>Optioanl ";" at the end of a Scala statement</li>
    -								<li>Type inference using "var" and "val" keywords</li>
    -							</ul>
    -						
    -							<p>
    -								But jOOQ also leverages other useful Scala features, such as
    -							</p>
    -							<ul>
    -								<li>implicit defs for operator overloading</li>
    -								<li>Scala Macros (soon to come)</li>
    -							</ul>
    -							
    -							<p>
    -								A short example jOOQ application in Scala might look like this:
    -							</p>
    -							
    -</html><scala><![CDATA[
    -import collection.JavaConversions._                                  // Import implicit defs for iteration over org.jooq.Result
    -                                                                     //
    -import java.sql.DriverManager                                        //
    -                                                                     //
    -import org.jooq._                                                    //
    -import org.jooq.impl._                                               //
    -import org.jooq.impl.DSL._                                           //
    -import org.jooq.scala.example.h2.Tables._                            //
    -import org.jooq.scala.Conversions._                                  // Import implicit defs for overloaded jOOQ/SQL operators
    -                                                                     //
    -object Test {                                                        //
    -  def main(args: Array[String]): Unit = {                            //
    -    val c = DriverManager.getConnection("jdbc:h2:~/test", "sa", ""); // Standard JDBC connection
    -    val e = DSL.using(c, SQLDialect.H2);                             //
    -    val x = T_AUTHOR as "x"                                          // SQL-esque table aliasing
    -                                                                     //
    -    for (r <- e                                                      // Iteration over Result. "r" is an org.jooq.Record3
    -        select (                                                     //
    -          T_BOOK.ID * T_BOOK.AUTHOR_ID,                              // Using the overloaded "*" operator
    -          T_BOOK.ID + T_BOOK.AUTHOR_ID * 3 + 4,                      // Using the overloaded "+" operator
    -          T_BOOK.TITLE || " abc" || " xy"                            // Using the overloaded "||" operator
    -        )                                                            //
    -        from T_BOOK                                                  // No need to use parentheses or "." here
    -        leftOuterJoin (                                              //
    -          select (x.ID, x.YEAR_OF_BIRTH)                             // Dereference fields from aliased table
    -          from x                                                     //
    -          limit 1                                                    //
    -          asTable x.getName()                                        //
    -        )                                                            //
    -        on T_BOOK.AUTHOR_ID === x.ID                                 // Using the overloaded "===" operator
    -        where (T_BOOK.ID <> 2)                                       // Using the olerloaded "<>" operator
    -        or (T_BOOK.TITLE in ("O Alquimista", "Brida"))               // Neat IN predicate expression
    -        fetch                                                        //
    -    ) {                                                              //
    -      println(r)                                                     //
    -    }                                                                //
    -  }                                                                  //
    -}]]></scala><html>
    -
    -							<p>
    -								For more details about jOOQ's Scala integration, please refer to the manual's section about <reference id="scala-sql-building" title="SQL building with Scala"/>.
    -							</p>
    -						</html></content>
    -					</section>
    -					
    -					<section id="dependencies">
    -						<title>Dependencies</title>
    -						<content><html>
    -							<p>
    -								Dependencies are a big hassle in modern software. Many libraries depend on other, non-JDK library parts that come in different, incompatible versions, potentially causing trouble in your runtime environment. jOOQ has no external dependencies on any third-party libraries.
    -							</p>
    -							<p>
    -								However, the above rule has some exceptions:
    -							</p>
    -							<ul>
    -								<li><reference id="logging" title="logging APIs"/> are referenced as "optional dependencies". jOOQ tries to find <a href="http://www.slf4j.org/">slf4j</a> or <a href="http://logging.apache.org/log4j">log4j</a> on the classpath. If it fails, it will use the <reference class="java.util.logging.Logger"/></li>
    -								<li>Oracle ojdbc types used for array creation are loaded using reflection. The same applies to Postgres PG* types.</li>
    -								<li>Small libraries with compatible licenses are incorporated into jOOQ. These include <a href="https://github.com/jOOQ/jOOR">jOOR</a>, <a href="https://github.com/jOOQ/jOOU">jOOU</a>, parts of <a href="http://opencsv.sourceforge.net/">OpenCSV</a>, <a href="http://code.google.com/p/json-simple/">json simple</a>, parts of <a href="http://commons.apache.org/lang/">commons-lang</a></li>
    -								<li><a href="http://docs.oracle.com/javaee/6/api/javax/persistence/package-summary.html">javax.persistence</a> and <a href="http://docs.oracle.com/javaee/6/api/javax/validation/package-summary.html">javax.validation</a> will be needed if you activate the relevant <reference id="code-generation" title="code generation flags"/></li>
    -							</ul>
    -						</html></content>
    -					</section>
    -					
    -					<section id="build-your-own">
    -						<title>Build your own</title>
    -						<content><html>
    -							<p>
    -								In order to build jOOQ yourself, please download the sources from <a href="https://github.com/jOOQ/jOOQ">https://github.com/jOOQ/jOOQ</a> and use Maven to build jOOQ, preferably in Eclipse. jOOQ requires Java 6+ to compile and run.
    -							</p>
    -							<p>
    -								Some useful hints to build jOOQ yourself:
    -							</p>
    -							<ul>
    -								<li>Get the latest version of <a href="http://git-scm.com">Git</a> or <a href="http://www.eclipse.org/egit">EGit</a></li>
    -								<li>Get the latest version of <a href="http://maven.apache.org">Maven</a> or <a href="http://eclipse.org/m2e">M2E</a></li>
    -								<li>Check out the jOOQ sources from <a href="https://github.com/jOOQ/jOOQ">https://github.com/jOOQ/jOOQ</a></li>
    -								<li>Optionally, import Maven artefacts into an Eclipse workspace using the following command (see the <a href="http://maven.apache.org/plugins/maven-eclipse-plugin/">maven-eclipse-plugin</a> documentation for details):
    -									<ul>
    -										<li><code>mvn eclipse:eclipse</code></li>
    -									</ul>
    -								</li>
    -								<li>Build the <code>jooq-parent</code> artefact by using any of these commands:
    -									<ul>
    -										<li><code>mvn clean package</code><br/>create .jar files in <code>${project.build.directory}</code></li>
    -										<li><code>mvn clean install</code><br/>install the .jar files in your local repository (e.g. <code>~/.m2</code>)</li>
    -										<li><code>mvn clean {goal} -Dmaven.test.skip=true</code><br/>don't run unit tests when building artefacts</li>
    -									</ul>
    -								</li>
    -							</ul>
    -						</html></content>
    -					</section>
    -					
    -					<section id="semantic-versioning">
    -						<title>jOOQ and backwards-compatibility</title>
    -						<content><html>
    -							<p>
    -								jOOQ follows the rules of semantic versioning according to <a href="http://semver.org">http://semver.org</a> quite strictly. Those rules impose a versioning scheme [X].[Y].[Z] that can be summarised as follows:
    -							</p>
    -							<ul>
    -								<li>If a patch release includes bugfixes, performance improvements and API-irrelevant new features, [Z] is incremented by one.</li>
    -								<li>If a minor release includes backwards-compatible, API-relevant new features, [Y] is incremented by one and [Z] is reset to zero.</li>
    -								<li>If a major release includes backwards-incompatible, API-relevant new features, [X] is incremented by one and [Y], [Z] are reset to zero.</li>
    -							</ul>
    -							
    -							<h3>jOOQ's understanding of backwards-compatibility</h3>
    -							<p>
    -								Backwards-compatibility is important to jOOQ. You've chosen jOOQ as a strategic SQL engine and you don't want your SQL to break. That is why there is at most one major release per year, which changes only those parts of jOOQ's API and functionality, which were agreed upon on the user group. During the year, only minor releases are shipped, adding new features in a backwards-compatible way
    -							</p>
    -							<p>
    -								However, there are some elements of API evolution that would be considered backwards-incompatible in other APIs, but not in jOOQ. As discussed later on in the section about <reference id="dsl-and-non-dsl" title="jOOQ's DSL API"/>, much of jOOQ's API is indeed an internal domain-specific language implemented mostly using Java interfaces. Adding language elements to these interfaces means any of these actions:  
    -							</p>
    -							<ul>
    -								<li>Adding methods to the interface</li>
    -								<li>Overloading methods for convenience</li>
    -								<li>Changing the type hierarchy of interfaces</li>
    -							</ul>
    -							
    -							<p>
    -								It becomes obvious that it would be impossible to add new language elements (e.g. new <reference id="column-expressions" title="SQL functions"/>, new <reference id="select-statement" title="SELECT clauses"/>) to the API without breaking any client code that actually implements those interfaces. Hence, the following rule should be observed: 
    -							</p>
    -							
    -							<p>jOOQ's DSL interfaces should not be implemented by client code! Extend only those extension points that are explicitly documented as "extendable" (e.g. <reference id="custom-queryparts" title="custom QueryParts"/>)</p>
    -						</html></content>
    -					</section>
    -				</sections>
    -			</section>
    -
    -			<section id="sql-building">
    -				<title>SQL building</title>
    -				<content><html>
    -					<p>
    -					    SQL is a declarative language that is hard to integrate into procedural, object-oriented, functional or any other type of programming languages. jOOQ's philosophy is to give SQL the credit it deserves and integrate SQL itself as an <a href="http://en.wikipedia.org/wiki/Domain_Specific_Language">"internal domain specific language"</a> directly into Java.
    -					</p>
    -					<p>
    -						With this philosophy in mind, SQL building is the main feature of jOOQ. All other features (such as <reference id="sql-execution" title="SQL execution"/> and <reference id="code-generation" title="code generation"/>) are mere convenience built on top of jOOQ's SQL building capabilities.
    -					</p>
    -					<p>
    -						This section explains all about the various syntax elements involved with jOOQ's SQL building capabilities. For a complete overview of all syntax elements, please refer to the manual's sections about <reference id="dsl-mapping-rules" title="SQL to DSL mapping rules"/> as well as <reference id="reference-bnf-notation" title="jOOQ's BNF notation"/>
    -					</p>
    -				</html></content>
    -
    -				<sections>
    -                    <redirect id="factory" redirect-to="dsl">
    -                        <redirect id="factory-subclasses" redirect-to="dsl-subclasses"/>
    -                    </redirect>
    -                    
    -					<section id="dsl">
    -					    <title>The DSL type</title>
    -					    <content><html>
    -							<p>
    -								jOOQ exposes a lot of interfaces and hides most implementation facts from client code. The reasons for this are:
    -							</p>
    -							<ul>
    -								<li>Interface-driven design. This allows for modelling queries in a fluent API most efficiently</li>
    -								<li>Reduction of complexity for client code.</li>
    -								<li>API guarantee. You only depend on the exposed interfaces, not concrete (potentially dialect-specific) implementations.</li>
    -							</ul>
    -							<p>
    -								The <reference class="org.jooq.impl.DSL"/> class is the main class from where you will create all jOOQ objects.	It serves as a static factory for <reference id="table-expressions" title="table expressions"/>, <reference id="column-expressions" title="column expressions"/> (or "fields"), <reference id="conditional-expressions" title="conditional expressions"/> and many other <reference id="queryparts" title="QueryParts"/>.
    -							</p>
    -
    -							<h3>The static DSL API</h3>
    -							<p>
    -								With jOOQ 2.0, static factory methods have been introduced in order to make client code look more like SQL. Ideally, when working with jOOQ, you will simply static import all methods from the DSL class:
    -							</p>
    -
    -</html><java>import static org.jooq.impl.DSL.*;</java><html>
    -
    -							<p>
    -							    Note, that when working with Eclipse, you could also add the DSL to your favourites. This will allow to access functions even more fluently:
    -							</p>
    -</html><java>concat(trim(FIRST_NAME), trim(LAST_NAME));
    -
    -// ... which is in fact the same as:
    -DSL.concat(DSL.trim(FIRST_NAME), DSL.trim(LAST_NAME));</java>
    -					    </content>
    -					    
    -					    <sections>
    -							<section id="dsl-subclasses">
    -								<title>DSL subclasses</title>
    -								<content><html>
    -									<p>
    -										There are a couple of subclasses for the general DSL. Each SQL dialect has its own dialect-specific DSL. For instance, if you're only using the MySQL dialect, you can choose to reference the MySQLDSL instead of the standard DSL:
    -									</p>
    -									<p>
    -										The advantage of referencing a dialect-specific DSL lies in the fact that you have access to more proprietary RDMBS functionality. This may include:
    -									</p>
    -									<ul>
    -		    							<li>MySQL's encryption functions</li>
    -		    							<li>PL/SQL constructs, pgplsql, or any other dialect's ROUTINE-language (maybe in the future)</li>
    -									</ul>
    -								</html></content>
    -							</section>
    -					    </sections>
    -					</section>
    -                    
    -                    <redirect id="executor" redirect-to="dsl-context">
    -                        <redirect id="sql-dialects" redirect-to="sql-dialects"/>
    -                        <redirect id="connection-vs-datasource" redirect-to="connection-vs-datasource"/>
    -                        <redirect id="custom-data" redirect-to="custom-data"/>
    -                        <redirect id="custom-execute-listeners" redirect-to="custom-execute-listeners"/>
    -                        <redirect id="custom-settings" redirect-to="custom-settings"/>
    -                        <redirect id="runtime-schema-mapping" redirect-to="runtime-schema-mapping"/>
    -                    </redirect>
    -					
    -					<section id="dsl-context">
    -						<title>The DSLContext class</title>
    -						<content><html>
    -							<p>
    -							    DSLContext references a <reference class="org.jooq.Configuration"/>, an object that configures jOOQ's behaviour when executing queries (see <reference id="sql-execution"/> for more details). Unlike the static DSL, the DSLContext allow for creating <reference id="sql-statements" title="SQL statements"/> that are already "configured" and ready for execution.
    -							</p>
    -							
    -                            <h3>Fluent creation of a DSLContext object</h3>
    -                            <p>
    -                                The DSLContext object can be created fluently from the <reference id="dsl" title="DSL type"/>:
    -                            </p>
    -
    -</html><java><![CDATA[// Create it from a pre-existing configuration
    -DSLContext create = DSL.using(configuration);
    -
    -// Create it from ad-hoc arguments
    -DSLContext create = DSL.using(connection, dialect);]]></java><html>
    -
    -                            <p>
    -                                If you do not have a reference to a pre-existing Configuration object (e.g. created from <reference class="org.jooq.impl.DefaultConfiguration"/>), the various overloaded <code>DSL.using()</code> methods will create one for you.
    -                            </p>
    -                            
    -							<h3>Contents of a Configuration object</h3>
    -							<p>
    -							    A Configuration can be supplied with these objects:
    -							</p>
    -							<ul>
    -								<li><reference class="org.jooq.SQLDialect"/> : The dialect of your database. This may be any of the currently supported database types (see <reference id="sql-dialects"/> for more details)</li>
    -    							<li><reference class="org.jooq.conf.Settings"/> : An optional runtime configuration (see <reference id="custom-settings"/> for more details)</li>
    -								<li><reference class="org.jooq.ExecuteListenerProvider"/> : An optional reference to a provider class that can provide execute listeners to jOOQ (see <reference id="execute-listeners"/> for more details)</li>
    -                                <li><reference class="org.jooq.RecordMapperProvider"/> : An optional reference to a provider class that can provide record mappers to jOOQ (see <reference id="pojos-with-recordmapper-provider"/> for more details)</li>
    -                                <li>
    -									Any of these:
    -									<ul>
    -										<li><reference class="java.sql.Connection"/> : An optional JDBC Connection that will be re-used for the whole lifecycle of your Configuration (see <reference id="connection-vs-datasource"/> for more details). For simplicity, this is the use-case referenced from this manual, most of the time.</li>
    -		    							<li><reference class="java.sql.DataSource"/> : An optional JDBC DataSource that will be re-used for the whole lifecycle of your Configuration. If you prefer using DataSources over Connections, jOOQ will internally fetch new Connections from your DataSource, conveniently closing them again after query execution. This is particularly useful in J2EE or Spring contexts (see <reference id="connection-vs-datasource"/> for more details)</li>
    -		    							<li><reference class="org.jooq.ConnectionProvider"/> : A custom abstraction that is used by jOOQ to "acquire" and "release" connections. jOOQ will internally "acquire" new Connections from your ConnectionProvider, conveniently "releasing" them again after query execution. (see <reference id="connection-vs-datasource"/> for more details)</li>
    -									</ul>
    -								</li>
    -							</ul>
    -							
    -							<p>
    -								Wrapping a Configuration object, a DSLContext can construct <reference id="sql-statements" title="statements"/>, for later <reference id="sql-execution" title="execution"/>. An example is given here:
    -							</p>
    -</html><java><![CDATA[// The DSLContext is "configured" with a Connection and a SQLDialect
    -DSLContext create = DSL.using(connection, dialect);
    -
    -// This select statement contains an internal reference to the DSLContext's Configuration:
    -Select<?> select = create.selectOne();
    -
    -// Using the internally referenced Configuration, the select statement can now be executed:
    -Result<?> result = select.fetch();]]></java><html>
    -
    -                            <p>
    -                                Note that you do not need to keep a reference to a DSLContext. You may as well inline your local variable, and fluently execute a SQL statement as such:
    -                            </p>
    -
    -</html><java><![CDATA[// Execute a statement from a single execution chain:
    -Result<?> result =
    -DSL.using(connection, dialect)
    -   .select()
    -   .from(BOOK)
    -   .where(BOOK.TITLE.like("Animal%"))
    -   .fetch();]]></java>
    -						</content>
    -
    -						<sections>
    -							<section id="sql-dialects">
    -								<title>SQL Dialect</title>
    -								<content><html>
    -									<p>
    -										While jOOQ tries to represent the SQL standard as much as possible, many features are vendor-specific to a given database and to its "SQL dialect". jOOQ models this using the <reference class="org.jooq.SQLDialect"/> enum type.
    -									</p>
    -									<p>
    -										The SQL dialect is one of the main attributes of a <reference id="dsl-context" title="Configuration"/>. Queries created from DSLContexts will assume dialect-specific behaviour when <reference id="sql-rendering" title="rendering SQL"/> and <reference id="variable-binding" title="binding bind values"/>.
    -									</p>
    -									<p>
    -										Some parts of the jOOQ API are officially supported only by a given subset of the supported SQL dialects. For instance, the <reference id="connect-by-clause" title="Oracle CONNECT BY clause"/>, which is supported by the Oracle and CUBRID databases, is annotated with a <reference class="org.jooq.Support"/> annotation, as such:
    -									</p>
    -</html><java><![CDATA[/**
    - * Add an Oracle-specific <code>CONNECT BY</code> clause to the query
    - */
    -@Support({ SQLDialect.CUBRID, SQLDialect.ORACLE })
    -SelectConnectByConditionStep<R> connectBy(Condition condition);]]></java><html>
    -
    -									<p>
    -									    jOOQ API methods which are not annotated with the <reference class="org.jooq.Support"/> annotation, or which are annotated with the Support annotation, but without any SQL dialects can be safely used in all SQL dialects. An example for this is the <reference id="select-statement" title="SELECT statement"/> factory method:
    -									</p>
    -</html><java><![CDATA[/**
    - * Create a new DSL select statement.
    - */
    -@Support
    -SelectSelectStep<R> select(Field<?>... fields);]]></java><html>
    -
    -									<h3>jOOQ's SQL clause simulation capabilities</h3>
    -									<p>
    -										The aforementioned Support annotation does not only designate, which databases natively support a feature. It also indicates that a feature is simulated by jOOQ for some databases lacking this feature. An example of this is the <reference id="distinct-predicate" title="DISTINCT predicate"/>, a predicate syntax defined by SQL:1999 and implemented only by H2, HSQLDB, and Postgres:
    -									</p>
    -
    -</html><sql><![CDATA[A IS DISTINCT FROM B]]></sql><html>
    -
    -									<p>
    -										Nevertheless, the <code>IS DISTINCT FROM</code> predicate is supported by jOOQ in all dialects, as its semantics can be expressed with an equivalent <reference id="case-expressions" title="CASE expression"/>. For more details, see the manual's section about the <reference id="distinct-predicate" title="DISTINCT predicate"/>.
    -									</p>
    -									
    -									<h3>jOOQ and the Oracle SQL dialect</h3>
    -									<p>
    -										Oracle SQL is much more expressive than many other SQL dialects. It features many unique keywords, clauses and functions that are out of scope for the SQL standard. Some examples for this are
    -									</p>
    -									<ul>
    -										<li>The <reference id="connect-by-clause" title="CONNECT BY clause"/>, for hierarchical queries</li>
    -										<li>The <reference id="pivot-tables" title="PIVOT"/> keyword for creating PIVOT tables</li>
    -										<li><reference id="oracle-packages" title="Packages"/>, <reference id="oracle-member-procedures" title="object-oriented user-defined types, member procedures"/> as described in the section about <reference id="stored-procedures" title="stored procedures and functions"/></li>
    -										<li>Advanced analytical functions as described in the section about <reference id="window-functions" title="window functions"/></li>
    -									</ul>
    -
    -									<p>
    -										jOOQ has a historic affinity to Oracle's SQL extensions. If something is supported in Oracle SQL, it has a high probability of making it into the jOOQ API
    -									</p>
    -								</html></content>
    -							</section>
    -
    -                            <section id="sql-dialect-family">
    -                                <title>SQL Dialect Family</title>
    -                                <content><html>
    -                                    <p>
    -                                        In jOOQ 3.1, the notion of a <code>SQLDialect.family()</code> was introduced, in order to group several similar <reference id="sql-dialects" title="SQL dialects"/> into a common family. An example for this is SQL Server, which is supported by jOOQ in various versions:
    -                                    </p>
    -                                    
    -                                    <ul>
    -                                        <li> <reference class="org.jooq.SQLDialect" title="SQL Server" anchor="#SQLSERVER"/>: The "version-less" SQL Server version. This always maps to the latest supported version of SQL Server</li>
    -                                        <li> <reference class="org.jooq.SQLDialect" title="SQL Server 2012" anchor="#SQLSERVER2012"/>: The SQL Server version 2012</li>
    -                                        <li> <reference class="org.jooq.SQLDialect" title="SQL Server 2008" anchor="#SQLSERVER2008"/>: The SQL Server version 2008</li>
    -                                    </ul>
    -                                    
    -                                    <p>
    -                                        In the above list, <code>SQLSERVER</code> is both a dialect and a family of three dialects. This distinction is used internally by jOOQ to distinguish whether to use the <reference id="limit-clause" title="OFFSET .. FETCH"/> clause (SQL Server 2012), or whether to simulate it using <code>ROW_NUMBER() OVER()</code> (SQL Server 2008).
    -                                    </p>
    -                                </html></content>
    -                            </section>
    -
    -							<section id="connection-vs-datasource">
    -								<title>Connection vs. DataSource</title>
    -								<content><html>
    -									<h3>Interact with JDBC Connections</h3>
    -									<p>
    -										While you can use jOOQ for <reference id="sql-building" title="SQL building"/> only, you can also run queries against a JDBC <reference class="java.sql.Connection"/>. Internally, jOOQ creates <reference class="java.sql.Statement"/> or <reference class="java.sql.PreparedStatement"/> objects from such a Connection, in order to execute statements. The normal operation mode is to provide a <reference id="dsl-context" title="Configuration"/> with a JDBC Connection, whose lifecycle you will control yourself. This means that jOOQ will not actively close connections, rollback or commit transactions.
    -									</p>
    -									<p>
    -										Note, in this case, jOOQ will internally use a <reference class="org.jooq.impl.DefaultConnectionProvider"/>, which you can reference directly if you prefer that. The DefaultConnectionProvider exposes various transaction-control methods, such as commit(), rollback(), etc.
    -									</p>
    -									
    -									<h3>Interact with JDBC DataSources</h3>
    -									<p>
    -										If you're in a J2EE or Spring context, however, you may wish to use a <reference class="javax.sql.DataSource"/> instead. Connections obtained from such a DataSource will be closed after query execution by jOOQ. The semantics of such a close operation should be the returning of the connection into a connection pool, not the actual closing of the underlying physical connection. Typically, this makes sense in an environment using distributed JTA transactions. An example of using DataSources with jOOQ can be seen in the tutorial section about <reference id="jooq-with-spring" title="using jOOQ with Spring"/>.
    -									</p>
    -									<p>
    -										Note, in this case, jOOQ iwll internally use a <reference class="org.jooq.impl.DataSourceConnectionProvider"/>, which you can reference directly if you prefer that.
    -									</p>
    -									
    -									<h3>Inject custom behaviour</h3>
    -									<p>
    -										If your specific environment works differently from any of the above approaches, you can inject your own custom implementation of a ConnectionProvider into jOOQ. This is the API contract you have to fulfil:
    -									</p>
    -									
    -</html><java><![CDATA[public interface ConnectionProvider {
    -
    -    // Provide jOOQ with a connection
    -    Connection acquire() throws DataAccessException;
    -  
    -    // Get a connection back from jOOQ
    -    void release(Connection connection) throws DataAccessException;
    -}]]></java><html>
    -
    -									<p>
    -									    Note that <code>acquire()</code> should always return the same Connection until this connection is returned via <code>release()</code> 
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -							<section id="custom-data">
    -								<title>Custom data</title>
    -								<content><html>
    -									<p>
    -										In advanced use cases of integrating your application with jOOQ, you may want to put custom data into your <reference id="dsl-context" title="Configuration"/>, which you can then access from your...
    -									</p>
    -									
    -									<ul>
    -										<li><reference id="custom-execute-listeners" title="Custom ExecuteListeners"/></li>
    -										<li><reference id="custom-queryparts" title="Custom QueryParts"/></li>
    -									</ul>
    -									
    -									<p>
    -										Here is an example of how to use the custom data API. Let's assume that you have written an <reference id="execute-listeners" title="ExecuteListener"/>, that prevents <code>INSERT</code> statements, when a given flag is set to <code>true</code>: 
    -									</p>
    -
    -</html><java><![CDATA[// Implement an ExecuteListener
    -public class NoInsertListener extends DefaultExecuteListener {
    -
    -    @Override
    -    public void start(ExecuteContext ctx) {
    -    
    -        // This listener is active only, when your custom flag is set to true
    -        if (Boolean.TRUE.equals(ctx.configuration().data("com.example.my-namespace.no-inserts"))) {
    -        
    -            // If active, fail this execution, if an INSERT statement is being executed
    -            if (ctx.query() instanceof Insert) {
    -                throw new DataAccessException("No INSERT statements allowed");
    -            }
    -        }
    -    }
    -}]]></java><html>
    -									<p>
    -										See the manual's section about <reference id="execute-listeners" title="ExecuteListeners"/> to learn more about how to implement an <code>ExecuteListener</code>.
    -									</p>
    -									
    -									<p>
    -										Now, the above listener can be added to your <reference id="dsl-context" title="Configuration"/>, but you will also need to pass the flag to the <code>Configuration</code>, in order for the listener to work:
    -									</p>
    -									
    -</html><java><![CDATA[// Create your Configuration
    -Configuration configuration = new DefaultConfiguration().set(connection).set(dialect);
    -
    -// Set a new execute listener provider onto the configuration:
    -configuration.set(new DefaultExecuteListenerProvider(new NoInsertListener()));
    -
    -// Use any String literal to identify your custom data
    -configuration.data("com.example.my-namespace.no-inserts", true);
    -
    -// Try to execute an INSERT statement
    -try {
    -    DSL.using(configuration)
    -       .insertInto(AUTHOR, AUTHOR.ID, AUTHOR.LAST_NAME)
    -       .values(1, "Orwell")
    -       .execute();
    -          
    -    // You shouldn't get here
    -    Assert.fail();
    -}
    -
    -// Your NoInsertListener should be throwing this exception here:
    -catch (DataAccessException expected) {
    -    Assert.assertEquals("No INSERT statements allowed", expected.getMessage());
    -}]]></java><html>
    -
    -									<p>
    -										Using the <code>data()</code> methods, you can store and retrieve custom data in your <code>Configurations</code>.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="custom-execute-listeners">
    -								<title>Custom ExecuteListeners</title>
    -								<content><html>
    -									<p>
    -										<code>ExecuteListeners</code> are a useful tool to...
    -									</p>
    -									
    -									<ul>
    -										<li>implement custom logging</li>
    -										<li>apply triggers written in Java</li>
    -										<li>collect query execution statistics</li>
    -									</ul>
    -									
    -									<p>
    -										ExecuteListeners are hooked into your <reference id="dsl-context" title="Configuration"/> by returning them from an <reference class="org.jooq.ExecuteListenerProvider"/>:
    -									</p>
    -
    -</html><java><![CDATA[// Create your Configuration
    -Configuration configuration = new DefaultConfiguration().set(connection).set(dialect);
    -
    -// Hook your listener providers into the configuration:
    -configuration.set(
    -    new DefaultExecuteListenerProvider(new MyFirstListener()),
    -    new DefaultExecuteListenerProvider(new PerformanceLoggingListener()),
    -    new DefaultExecuteListenerProvider(new NoInsertListener())
    -);]]></java><html>
    -									
    -									<p>
    -										See the manual's section about <reference id="execute-listeners" title="ExecuteListeners"/> to see examples of such listener implementations.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="custom-settings">
    -								<title>Custom Settings</title>
    -								<content><html>
    -									<p>
    -										The jOOQ Configuration allows for some optional configuration elements to be used by advanced users. The <reference class="org.jooq.conf.Settings" /> class is a JAXB-annotated type, that can be provided to a Configuration in several ways:
    -									</p>
    -									<ul>
    -										<li>In the DSLContext constructor (<code>DSL.using()</code>). This will override default settings below</li>
    -										<li>in the <reference class="org.jooq.impl.DefaultConfiguration"/> constructor. This will override default settings below</li>
    -                                        <li>From a location specified by a JVM parameter: -Dorg.jooq.settings</li>
    -										<li>From the classpath at /jooq-settings.xml</li>
    -										<li>From the settings defaults, as specified in <a href="http://www.jooq.org/xsd/jooq-runtime-{runtime-xsd-version}.xsd" title="The jOOQ Runtime configuration XSD">http://www.jooq.org/xsd/jooq-runtime-{runtime-xsd-version}.xsd</a></li>
    -									</ul>
    -									<h3>Example</h3>
    -									<p>
    -										For example, if you want to indicate to jOOQ, that it should inline all bind variables, and execute static <reference class="java.sql.Statement"/> instead of binding its variables to <reference class="java.sql.PreparedStatement"/>, you can do so by creating the following DSLContext:
    -									</p>
    -</html><java><![CDATA[Settings settings = new Settings();
    -settings.setStatementType(StatementType.STATIC_STATEMENT);
    -DSLContext create = DSL.using(connection, dialect, settings);]]></java><html>
    -									<p>
    -										Subsequent sections of the manual contain some more in-depth explanations about these settings:
    -									</p>
    -									<ul>
    -										<li>
    -		     								<reference id="schema-mapping" title="Runtime schema and table mapping"/>
    -		   								</li>
    -		     							<li>
    -		     								<reference id="optimistic-locking" title="Execute CRUD with optimistic locking enabled"/>
    -		     							</li>
    -		     							<li>
    -		     								<reference id="logging" title="Enabling DEBUG logging of all executed SQL"/>
    -		     							</li>
    -		   							</ul>
    -		   							<p>
    -										Please refer to the jOOQ runtime configuration XSD for more details:<br/>
    -										<a href="http://www.jooq.org/xsd/jooq-runtime-{runtime-xsd-version}.xsd" title="The jOOQ Runtime configuration XSD">http://www.jooq.org/xsd/jooq-runtime-{runtime-xsd-version}.xsd</a>
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -							<section id="runtime-schema-mapping">
    -								<title>Runtime schema and table mapping</title>
    -								<content><html>
    -									<h3>Mapping your DEV schema to a productive environment</h3>
    -									<p>
    -										You may wish to design your database in a way that you have several instances of your schema. This is useful when you want to cleanly separate data belonging to several customers / organisation units / branches / users and put each of those entities' data in a separate database or schema.
    -									</p>
    -									
    -									<p>
    -										In our AUTHOR example this would mean that you provide a book reference database to several companies, such as My Book World and Books R Us. In that case, you'll probably have a schema setup like this:
    -									</p>
    -									<ul>
    -										<li>DEV: Your development schema. This will be the schema that you base code generation upon, with jOOQ </li>
    -										<li>MY_BOOK_WORLD: The schema instance for My Book World </li>
    -										<li>BOOKS_R_US: The schema instance for Books R Us </li>
    -									</ul>
    -
    -									<h3>Mapping DEV to MY_BOOK_WORLD with jOOQ</h3>
    -									<p>
    -										When a user from My Book World logs in, you want them to access the MY_BOOK_WORLD schema using classes generated from DEV. This can be achieved with the <reference class="org.jooq.conf.RenderMapping"/> class, that you can equip your Configuration's <reference id="custom-settings" title="settings"/> with. Take the following example:
    -									</p>
    -
    -</html><java>Settings settings = new Settings()
    -    .withRenderMapping(new RenderMapping()
    -    .withSchemata(
    -        new MappedSchema().withInput("DEV")
    -                          .withOutput("MY_BOOK_WORLD")));
    -
    -// Add the settings to the DSLContext
    -DSLContext create = DSL.using(connection, SQLDialect.ORACLE, settings);
    -
    -// Run queries with the "mapped" Configuration
    -create.selectFrom(AUTHOR).fetch();</java><html>
    -
    -									<p>
    -										The query executed with a Configuration equipped with the above mapping will in fact produce this SQL statement:
    -									</p>
    -									
    -</html><sql>SELECT * FROM MY_BOOK_WORLD.AUTHOR</sql><html>
    -									<p>
    -										Even if AUTHOR was generated from DEV.
    -									</p>
    -
    -									<h3>Mapping several schemata</h3>
    -									<p>
    -										Your development database may not be restricted to hold only one DEV schema. You may also have a LOG schema and a MASTER schema. Let's say the MASTER schema is shared among all customers, but each customer has their own LOG schema instance. Then you can enhance your RenderMapping like this (e.g. using an XML configuration file):
    -									</p>
    -
    -</html><xml><![CDATA[<settings xmlns="http://www.jooq.org/xsd/jooq-runtime-{runtime-xsd-version}.xsd">
    -  <renderMapping>
    -    <schemata>
    -      <schema>
    -        <input>DEV</input>
    -        <output>MY_BOOK_WORLD</output>
    -      </schema>
    -      <schema>
    -        <input>LOG</input>
    -        <output>MY_BOOK_WORLD_LOG</output>
    -      </schema>
    -    </schemata>
    -  </renderMapping>
    -</settings>]]></xml><html>
    -
    -                            		<p>
    -                            			Note, you can load the above XML file like this:
    -                           			</p>
    -
    -</html><java>Settings settings = JAXB.unmarshal(new File("jooq-runtime.xml"), Settings.class);</java><html>
    -
    -									<p>
    -										This will map generated classes from DEV to MY_BOOK_WORLD, from LOG to MY_BOOK_WORLD_LOG, but leave the MASTER schema alone. Whenever you want to change your mapping configuration, you will have to create a new Configuration.
    -									</p>
    -
    -
    -									<h3>Using a default schema</h3>
    -                            		<p>
    -                            			If you wish not to render any schema name at all, use the following Settings property for this:
    -                           			</p>
    -
    -
    -</html><java>Settings settings = new Settings()
    -    .withRenderSchema(false);
    -
    -// Add the settings to the Configuration
    -DSLContext create = DSL.using(connection, SQLDialect.ORACLE, settings);
    -
    -// Run queries that omit rendering schema names
    -create.selectFrom(AUTHOR).fetch();</java><html>
    -
    -									<h3>Mapping of tables</h3>
    -									<p>
    -										Not only schemata can be mapped, but also tables. If you are not the owner of the database your application connects to, you might need to install your schema with some sort of prefix to every table. In our examples, this might mean that you will have to map DEV.AUTHOR to something MY_BOOK_WORLD.MY_APP__AUTHOR, where MY_APP__ is a prefix applied to all of your tables. This can be achieved by creating the following mapping: 
    -									</p>
    -
    -</html><java>Settings settings = new Settings()
    -    .withRenderMapping(new RenderMapping()
    -    .withSchemata(
    -        new MappedSchema().withInput("DEV")
    -                          .withOutput("MY_BOOK_WORLD")
    -                          .withTables(
    -         new MappedTable().withInput("AUTHOR")
    -                          .withOutput("MY_APP__AUTHOR"))));
    -
    -// Add the settings to the Configuration
    -DSLContext create = DSL.using(connection, SQLDialect.ORACLE, settings);
    -
    -// Run queries with the "mapped" configuration
    -create.selectFrom(AUTHOR).fetch();</java><html>
    -
    -									<p>
    -										The query executed with a Configuration equipped with the above mapping will in fact produce this SQL statement:
    -									</p>
    -									
    -</html><sql>SELECT * FROM MY_BOOK_WORLD.MY_APP__AUTHOR</sql><html>
    -
    -		                            <p>
    -		                           		Table mapping and schema mapping can be applied independently, by specifying several MappedSchema entries in the above configuration. jOOQ will process them in order of appearance and map at first match. Note that you can always omit a MappedSchema's output value, in case of which, only the table mapping is applied. If you omit a MappedSchema's input value, the table mapping is applied to all schemata!
    -		                            </p>
    -
    -									<h3>Hard-wiring mappings at code-generation time</h3>
    -									<p>
    -										Note that the manual's section about <reference id="schema-mapping" title="code generation schema mapping"/> explains how you can hard-wire your schema mappings at code generation time
    -									</p>									
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="sql-statements">
    -						<title>SQL Statements</title>
    -						<content><html>
    -							<p>
    -								jOOQ currently supports 6 types of SQL statements. All of these statements are constructed from a DSLContext instance with an optional <reference id="connection-vs-datasource" title="JDBC Connection or DataSource"/>. If supplied with a Connection or DataSource, they can be executed. Depending on the <reference id="query-vs-resultquery" title="query type"/>, executed queries can return results.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="dsl-and-non-dsl">
    -								<title>jOOQ's DSL and model API</title>
    -								<content><html>
    -									<p>
    -										jOOQ ships with its own DSL (or	<a href="http://en.wikipedia.org/wiki/Domain-specific_language" title="Domain Specific Language">Domain Specific Language</a>) that	simulates SQL in Java. This means, that you can	write SQL statements almost as if Java natively supported it, just like .NET's C# does with <a href="http://msdn.microsoft.com/en-us/library/bb425822.aspx">LINQ to SQL.</a>
    -									</p>
    -									<p>
    -										Here is an example to illustrate what that means:
    -									</p>
    -									
    -</html><code-pair><sql><![CDATA[-- Select all books by authors born after 1920,
    --- named "Paulo" from a catalogue:
    -SELECT *
    -  FROM author a
    -  JOIN book b ON a.id = b.author_id
    - WHERE a.year_of_birth > 1920
    -   AND a.first_name = 'Paulo'
    - ORDER BY b.title]]></sql>
    -<java><![CDATA[Result<Record> result =
    -create.select()
    -      .from(AUTHOR.as("a"))
    -      .join(BOOK.as("b")).on(a.ID.equal(b.AUTHOR_ID))
    -      .where(a.YEAR_OF_BIRTH.greaterThan(1920)
    -      .and(a.FIRST_NAME.equal("Paulo")))
    -      .orderBy(b.TITLE)
    -      .fetch();]]></java></code-pair><html>
    -
    -									<p>
    -										We'll see how the aliasing works later in the section about <reference id="aliased-tables" title="aliased tables"/>
    -									</p>
    -
    -									<h3>jOOQ as an internal domain specific language in Java (a.k.a. the DSL API)</h3>
    -									<p>
    -										Many other frameworks have similar APIs with similar feature sets. Yet, what makes jOOQ special is its informal <reference id="reference-bnf-notation" title="BNF notation"/> modelling a unified SQL dialect suitable for many vendor-specific dialects, and implementing that BNF notation as a hierarchy of interfaces in Java. This concept is extremely powerful, when <reference id="jooq-in-modern-ides" title="using jOOQ in modern IDEs" /> with syntax completion. Not only can you code much faster, your SQL code will be compile-checked to a certain extent. An example of a DSL query equivalent to the previous one is given here:
    -									</p>
    -									
    -</html><java><![CDATA[DSLContext create = DSL.using(connection, dialect);
    -Result<?> result = create.select()
    -                         .from(AUTHOR)
    -                         .join(BOOK).on(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -                         .fetch();]]></java><html>
    -
    -                         			<p>
    -                         				Unlike other, simpler frameworks that use <a href="http://en.wikipedia.org/wiki/Fluent_interface">"fluent APIs"</a> or <a href="http://en.wikipedia.org/wiki/Method_chaining">"method chaining"</a>, jOOQ's BNF-based interface hierarchy will not allow bad query syntax. The following will not compile, for instance:
    -                         			</p>
    -</html><java><![CDATA[DSLContext create = DSL.using(connection, dialect);
    -Result<?> result = create.select()
    -                         .join(BOOK).on(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -                      //  ^^^^ "join" is not possible here
    -                         .from(AUTHOR)
    -                         .fetch();
    -
    -Result<?> result = create.select()
    -                         .from(AUTHOR)
    -                         .join(BOOK)
    -                         .fetch();
    -                      //  ^^^^^ "on" is missing here
    -
    -Result<?> result = create.select(rowNumber())
    -                      //         ^^^^^^^^^ "over()" is missing here
    -                         .from(AUTHOR)
    -                         .fetch();
    -
    -Result<?> result = create.select()
    -                         .from(AUTHOR)
    -                         .where(AUTHOR.ID.in(select(BOOK.TITLE).from(BOOK)))
    -                      //                     ^^^^^^^^^^^^^^^^^^
    -                      // AUTHOR.ID is of type Field<Integer> but subselect returns Record1<String>
    -                         .fetch();
    -
    -Result<?> result = create.select()
    -                         .from(AUTHOR)
    -                         .where(AUTHOR.ID.in(select(BOOK.AUTHOR_ID, BOOK.ID).from(BOOK)))
    -                      //                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    -                      // AUTHOR.ID is of degree 1 but subselect returns Record2<Integer, Integer>
    -                         .fetch();]]></java><html>
    -
    -									<h3>History of SQL building and incremental query building (a.k.a. the model API)</h3>
    -									<p>
    -										Historically, jOOQ started out as an object-oriented SQL builder library like any other. This meant that all queries and their syntactic components were modeled as so-called <reference id="queryparts" title="QueryParts"/>, which delegate <reference id="sql-rendering" title="SQL rendering"/> and <reference id="variable-binding" title="variable binding"/> to child components. This part of the API will be referred to as the model API (or non-DSL API), which is still maintained and used internally by jOOQ for incremental query building. An example of incremental query building is given here:
    -									</p>
    -									
    -</html><java><![CDATA[DSLContext create = DSL.using(connection, dialect);
    -SelectQuery<Record> query = create.selectQuery();
    -query.addFrom(AUTHOR);
    -
    -// Join books only under certain circumstances
    -if (join) {
    -    query.addJoin(BOOK, BOOK.AUTHOR_ID.equal(AUTHOR.ID));
    -}
    -
    -Result<?> result = query.fetch();]]></java><html>
    -
    -									<p>
    -										This query is equivalent to the one shown before using the DSL syntax. In fact, internally, the DSL API constructs precisely this SelectQuery object. Note, that you can always access the SelectQuery object to switch between DSL and model APIs:
    -									</p>
    -
    -</html><java><![CDATA[DSLContext create = DSL.using(connection, dialect);
    -SelectFinalStep<?> select = create.select().from(AUTHOR);
    -
    -// Add the JOIN clause on the internal QueryObject representation
    -SelectQuery<?> query = select.getQuery();
    -query.addJoin(BOOK, BOOK.AUTHOR_ID.equal(AUTHOR.ID));]]></java><html>
    -
    -									<h3>Mutability</h3>
    -									<p>
    -										Note, that for historic reasons, the DSL API mixes mutable and immutable behaviour with respect to the internal representation of the <reference id="queryparts" title="QueryPart"/> being constructed. While creating <reference id="conditional-expressions" title="conditional expressions"/>, <reference id="column-expressions" title="column expressions"/> (such as functions) assumes immutable behaviour, creating <reference id="sql-statements" title="SQL statements"/> does not. In other words, the following can be said:
    -									</p>
    -									
    -</html><java><![CDATA[// Conditional expressions (immutable)
    -// -----------------------------------
    -Condition a = BOOK.TITLE.equal("1984");
    -Condition b = BOOK.TITLE.equal("Animal Farm");
    -
    -// The following can be said
    -a       != a.or(b); // or() does not modify a
    -a.or(b) != a.or(b); // or() always creates new objects
    -
    -// Statements (mutable)
    -// --------------------
    -SelectFromStep<?> s1 = select();
    -SelectJoinStep<?> s2 = s1.from(BOOK);
    -SelectJoinStep<?> s3 = s1.from(AUTHOR);
    -
    -// The following can be said
    -s1 == s2; // The internal object is always the same
    -s2 == s3; // The internal object is always the same]]></java><html>
    -
    -									<p>
    -										On the other hand, beware that you can always extract and modify <reference id="bind-values" title="bind values"/> from any <code>QueryPart</code>.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="select-statement">
    -								<title>The SELECT statement</title>
    -								<content><html>
    -									<p>
    -										When you don't just perform <reference id="crud-with-updatablerecords" title="CRUD"/> (i.e. SELECT * FROM your_table WHERE ID = ?), you're usually generating new record types using custom projections. With jOOQ, this is as intuitive, as if using SQL directly. A more or less complete example of the "standard" SQL syntax, plus some extensions, is provided by a query like this:
    -									</p>
    -
    -									<h3>SELECT from a complex table expression</h3>
    -</html><code-pair>
    -<sql><![CDATA[-- get all authors' first and last names, and the number
    --- of books they've written in German, if they have written
    --- more than five books in German in the last three years
    --- (from 2011), and sort those authors by last names
    --- limiting results to the second and third row, locking
    --- the rows for a subsequent update... whew!
    -
    -  SELECT AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME, COUNT(*)
    -    FROM AUTHOR
    -    JOIN BOOK ON AUTHOR.ID = BOOK.AUTHOR_ID
    -   WHERE BOOK.LANGUAGE = 'DE'
    -     AND BOOK.PUBLISHED > '2008-01-01'
    -GROUP BY AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME
    -  HAVING COUNT(*) > 5
    -ORDER BY AUTHOR.LAST_NAME ASC NULLS FIRST
    -   LIMIT 2
    -  OFFSET 1
    -     FOR UPDATE]]></sql>
    -<java><![CDATA[// And with jOOQ...
    -
    -
    -
    -
    -DSLContext create = DSL.using(connection, dialect);
    -
    -create.select(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME, count())
    -      .from(AUTHOR)
    -      .join(BOOK).on(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -      .where(BOOK.LANGUAGE.equal("DE"))
    -      .and(BOOK.PUBLISHED.greaterThan("2008-01-01"))
    -      .groupBy(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .having(count().greaterThan(5))
    -      .orderBy(AUTHOR.LAST_NAME.asc().nullsFirst())
    -      .limit(1)
    -      .offset(2)
    -      .forUpdate();]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										Details about the various clauses of this query will be provided in subsequent sections.
    -									</p>
    -
    -									<h3>SELECT from single physical tables</h3>
    -									<p>
    -										A very similar, but limited API is available, if you want to select from single physical tables in order to retrieve <reference id="crud-with-updatablerecords" title="TableRecords or even UpdatableRecords"/>. The decision, which type of select to create is already made at the very first step, when you create the <code>SELECT</code> statement with the DSL or DSLContext types:
    -									</p>
    -
    -</html><java><![CDATA[public <R extends Record> SelectWhereStep<R> selectFrom(Table<R> table);]]></java><html>
    -									<p>
    -										As you can see, there is no way to further restrict/project the selected fields. This just selects all known TableFields in the supplied Table, and it also binds &lt;R extends Record&gt; to your Table's associated Record. An example of such a Query would then be:
    -									</p>
    -</html><java><![CDATA[BookRecord book = create.selectFrom(BOOK)
    -                        .where(BOOK.LANGUAGE.equal("DE"))
    -                        .orderBy(BOOK.TITLE)
    -                        .fetchAny();]]></java><html>
    -
    -                   					<p>
    -                   						The "reduced" SELECT API is limited in the way that it skips DSL access to any of these clauses:
    -                   					</p>
    -                   					<ul>
    -                   						<li><reference id="select-clause"/></li>
    -                   						<li><reference id="join-clause"/></li>
    -                   					</ul>
    -                   					<p>
    -                   						In most parts of this manual, it is assumed that you do not use the "reduced" SELECT API. For more information about the simple SELECT API, see the manual's section about <reference id="record-vs-tablerecord" title="fetching strongly or weakly typed records"/>.
    -                   					</p>
    -								</html></content>
    -
    -								<sections>
    -									<section id="select-clause">
    -										<title>The SELECT clause</title>
    -										<content><html>
    -											<p>
    -												The SELECT clause lets you project your own record types, referencing table fields, functions, arithmetic expressions, etc. The DSL type provides several methods for expressing a SELECT clause:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- The SELECT clause
    -SELECT BOOK.ID, BOOK.TITLE
    -SELECT BOOK.ID, TRIM(BOOK.TITLE)
    -]]></sql>
    -<java><![CDATA[// Provide a varargs Fields list to the SELECT clause:
    -Select<?> s1 = create.select(BOOK.ID, BOOK.TITLE);
    -Select<?> s2 = create.select(BOOK.ID, trim(BOOK.TITLE));]]></java>
    -</code-pair><html>
    -
    -											<p>
    -												Some commonly used projections can be easily created using convenience methods:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- Simple SELECTs
    -SELECT COUNT(*)
    -SELECT 0 -- Not a bind variable
    -SELECT 1 -- Not a bind variable
    -]]></sql>
    -<java><![CDATA[// Select commonly used values
    -Select<?> select1 = create.selectCount();
    -Select<?> select2 = create.selectZero();
    -Select<?> select2 = create.selectOne();]]></java>
    -</code-pair><html>
    -
    -											<p>
    -												See more details about functions and expressions in the manual's section about <reference id="column-expressions"/>
    -											</p>
    -
    -											<h3>The SELECT DISTINCT clause</h3>
    -											<p>
    -												The DISTINCT keyword can be included in the method name, constructing a SELECT clause
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT DISTINCT BOOK.TITLE]]></sql>
    -<java><![CDATA[Select<?> select1 = create.selectDistinct(BOOK.TITLE);]]></java>
    -</code-pair><html>
    -
    -                                            <h3>SELECT *</h3>
    -                                            <p>
    -                                            	jOOQ does not explicitly support the asterisk operator in projections. However, you can omit the projection as in these examples:
    -                                            </p>
    -                                            
    -</html><java><![CDATA[// Explicitly selects all columns available from BOOK
    -create.select().from(BOOK);
    -
    -// Explicitly selects all columns available from BOOK and AUTHOR
    -create.select().from(BOOK, AUTHOR);
    -create.select().from(BOOK).crossJoin(AUTHOR);
    -
    -// Renders a SELECT * statement, as columns are unknown to jOOQ
    -create.select().from(tableByName("BOOK"));]]></java><html>                                            
    -
    -											<h3>Typesafe projections with degree up to {max-row-degree}</h3>
    -											<p>
    -												Since jOOQ 3.0, <reference id="record-n" title="records"/> and <reference id="row-value-expressions" title="row value expressions"/> up to degree {max-row-degree} are now generically typesafe. This is reflected by an overloaded <code>SELECT</code> (and <code>SELECT DISTINCT</code>) API in both DSL and DSLContext. An extract from the DSL type:
    -											</p>
    -											
    -</html><java><![CDATA[// Non-typesafe select methods:
    -public static SelectSelectStep<Record> select(Collection<? extends Field<?>> fields);
    -public static SelectSelectStep<Record> select(Field<?>... fields);
    -
    -// Typesafe select methods:
    -public static <T1>         SelectSelectStep<Record1<T1>>         select(Field<T1> field1);
    -public static <T1, T2>     SelectSelectStep<Record2<T1, T2>>     select(Field<T1> field1, Field<T2> field2);
    -public static <T1, T2, T3> SelectSelectStep<Record3<T1, T2, T3>> select(Field<T1> field1, Field<T2> field2, Field<T3> field3);
    -// [...]]]></java><html>
    -		
    -											<p>
    -												Since the generic R type is bound to some <reference id="record-n" title="Record[N]"/>, the associated T type information can be used in various other contexts, e.g. the <reference id="in-predicate" title="IN predicate"/>. Such a <code>SELECT</code> statement can be assigned typesafely:
    -											</p>
    -
    -</html><java><![CDATA[Select<Record2<Integer, String>> s1 = create.select(BOOK.ID, BOOK.TITLE);
    -Select<Record2<Integer, String>> s2 = create.select(BOOK.ID, trim(BOOK.TITLE));]]></java><html>
    -																				
    -											<p>
    -												For more information about typesafe record types with degree up to {max-row-degree}, see the manual's section about <reference id="record-n" title="Record1 to Record{max-row-degree}"/>.
    -											</p>
    -										</html></content>
    -									</section>
    -
    -									<section id="from-clause">
    -										<title>The FROM clause</title>
    -										<content><html>
    -											<p>
    -												The SQL FROM clause allows for specifying any number of <reference id="table-expressions" title="table expressions"/> to select data from. The following are examples of how to form normal FROM clauses:
    -											</p>
    -
    -</html><code-pair>
    -	<sql><![CDATA[SELECT 1 FROM BOOK
    -SELECT 1 FROM BOOK, AUTHOR
    -SELECT 1 FROM BOOK "b", AUTHOR "a"]]></sql>
    -	<java><![CDATA[create.selectOne().from(BOOK);
    -create.selectOne().from(BOOK, AUTHOR);
    -create.selectOne().from(BOOK.as("b"), AUTHOR.as("a"));]]></java>
    -</code-pair><html>
    -
    -											<p>
    -												Read more about aliasing in the manual's section about <reference id="aliased-tables" title="aliased tables"/>.
    -											</p>
    -											
    -											<h3>More advanced table expressions</h3>
    -											<p>
    -												Apart from simple tables, you can pass any arbitrary <reference id="table-expressions" title="table expression"/> to the jOOQ FROM clause. This may include <reference id="array-and-cursor-unnesting" title="unnested cursors"/> in Oracle:
    -											</p>
    -
    -</html><code-pair>
    -	<sql><![CDATA[SELECT *
    -FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(null, null, 'ALLSTATS'));]]></sql>
    -	<java><![CDATA[create.select()
    -      .from(table(DbmsXplan.displayCursor(null, null, "ALLSTATS"));]]></java>
    -</code-pair><html>
    -
    -											<p>
    -												Note, in order to access the DbmsXplan package, you can use the <reference id="code-generation" title="code generator"/> to generate Oracle's SYS schema.
    -											</p>
    -
    -
    -											<h3>Selecting FROM DUAL with jOOQ</h3>
    -											<p>
    -												In many SQL dialects, FROM is a mandatory clause, in some it isn't. jOOQ allows you to omit the FROM clause, returning just one record. An example:
    -											</p>
    -
    -</html><code-pair>
    -	<sql><![CDATA[SELECT 1 FROM DUAL
    -SELECT 1]]></sql>
    -	<java><![CDATA[DSL.using(SQLDialect.ORACLE).selectOne().getSQL();
    -DSL.using(SQLDialect.POSTGRES).selectOne().getSQL();]]></java>
    -</code-pair><html>
    -
    -											<p>
    -												Read more about dual or dummy tables in the manual's section about <reference id="dual" title="the DUAL table"/>. The following are examples of how to form normal FROM clauses:
    -											</p>
    -										</html></content>
    -									</section>
    -
    -									<section id="join-clause">
    -										<title>The JOIN clause</title>
    -										<content><html>
    -											<p>
    -												jOOQ supports many different types of standard SQL JOIN operations:
    -											</p>
    -											<ul>
    -												<li>[ INNER ] JOIN</li>
    -												<li>LEFT [ OUTER ] JOIN</li>
    -												<li>RIGHT [ OUTER ] JOIN</li>
    -												<li>FULL OUTER JOIN</li>
    -												<li>CROSS JOIN</li>
    -												<li>NATURAL JOIN</li>
    -												<li>NATURAL LEFT [ OUTER ] JOIN</li>
    -												<li>NATURAL RIGHT [ OUTER ] JOIN</li>
    -											</ul>
    -
    -											<p>
    -												All of these JOIN methods can be called on <reference class="org.jooq.Table"/> types, or directly after the FROM clause for convenience. The following example joins AUTHOR and BOOK
    -											</p>
    -
    -</html><java><![CDATA[DSLContext create = DSL.using(connection, dialect);
    -
    -// Call "join" directly on the AUTHOR table
    -Result<?> result = create.select()
    -                         .from(AUTHOR.join(BOOK)
    -                                     .on(BOOK.AUTHOR_ID.equal(AUTHOR.ID)))
    -                         .fetch();
    -
    -// Call "join" on the type returned by "from"
    -Result<?> result = create.select()
    -                         .from(AUTHOR)
    -                         .join(BOOK)
    -                         .on(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -                         .fetch();]]></java><html>
    -
    -											<p>
    -												The two syntaxes will produce the same SQL statement. However, calling "join" on <reference class="org.jooq.Table"/> objects allows for more powerful, nested JOIN expressions (if you can handle the parentheses):
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM AUTHOR
    -LEFT OUTER JOIN (
    -  BOOK JOIN BOOK_TO_BOOK_STORE
    -       ON BOOK_TO_BOOK_STORE.BOOK_ID = BOOK.ID
    -)
    -ON BOOK.AUTHOR_ID = AUTHOR.ID]]></sql>
    -<java><![CDATA[// Nest joins and provide JOIN conditions only at the end
    -create.select()
    -      .from(AUTHOR
    -      .leftOuterJoin(BOOK
    -        .join(BOOK_TO_BOOK_STORE)
    -        .on(BOOK_TO_BOOK_STORE.BOOK_ID.equal(BOOK.ID)))
    -      .on(BOOK.AUTHOR_ID.equal(AUTHOR.ID)));]]></java></code-pair><html>
    -
    -      										<ul>
    -      											<li>See the section about <reference id="conditional-expressions" title="conditional expressions"/> to learn more about the many ways to create <reference class="org.jooq.Condition"/> objects in jOOQ.</li>
    -      											<li>See the section about <reference id="table-expressions" title="table expressions"/> to learn about the various ways of referencing <reference class="org.jooq.Table"/> objects in jOOQ</li>
    -      										</ul>
    -
    -											<h3>JOIN ON KEY, convenience provided by jOOQ</h3>
    -											<p>
    -												Surprisingly, the SQL standard does not allow to formally JOIN on well-known foreign key relationship information. Naturally, when you join BOOK to AUTHOR, you will want to do that based on the BOOK.AUTHOR_ID foreign key to AUTHOR.ID primary key relation. Not being able to do this in SQL leads to a lot of repetitive code, re-writing the same JOIN predicate again and again - especially, when your foreign keys contain more than one column. With jOOQ, when you use <reference id="code-generation" title="code generation"/>, you can use foreign key constraint information in JOIN expressions as such:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM AUTHOR
    -JOIN BOOK ON BOOK.AUTHOR_ID = AUTHOR.ID]]></sql>
    -<java><![CDATA[create.select()
    -      .from(AUTHOR)
    -      .join(BOOK).onKey();]]></java></code-pair><html>
    -
    -      										<p>
    -      											In case of ambiguity, you can also supply field references for your foreign keys, or the generated foreign key reference to the onKey() method.
    -      										</p>
    -      										<p>
    -      											Note that formal support for the Sybase <code>JOIN ON KEY</code> syntax is on the roadmap.
    -      										</p>
    -
    -											<h3>The JOIN USING syntax</h3>
    -											<p>
    -												Most often, you will provide jOOQ with JOIN conditions in the JOIN .. ON clause. SQL supports a different means of specifying how two tables are to be joined. This is the JOIN .. USING clause. Instead of a condition, you supply a set of fields whose names are common to both tables to the left and right of a JOIN operation. This can be useful when your database schema has a high degree of <a href="http://en.wikipedia.org/wiki/Database_normalization">relational normalisation</a>. An example:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- Assuming that both tables contain AUTHOR_ID columns
    -SELECT *
    -FROM AUTHOR
    -JOIN BOOK USING (AUTHOR_ID)]]></sql>
    -<java><![CDATA[// join(...).using(...)
    -create.select()
    -      .from(AUTHOR)
    -      .join(BOOK).using(AUTHOR.AUTHOR_ID);]]></java></code-pair><html>
    -
    -											<p>
    -												In schemas with high degrees of normalisation, you may also choose to use NATURAL JOIN, which takes no JOIN arguments as it joins using all fields that are common to the table expressions to the left and to the right of the JOIN operator. An example:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- Assuming that both tables contain AUTHOR_ID columns
    -SELECT *
    -FROM AUTHOR
    -NATURAL JOIN BOOK]]></sql>
    -<java><![CDATA[// naturalJoin(...)
    -create.select()
    -      .from(AUTHOR)
    -      .naturalJoin(BOOK);]]></java></code-pair><html>
    -
    -											<h3>Oracle's partitioned OUTER JOIN</h3>
    -											<p>
    -												Oracle SQL ships with a special syntax available for OUTER JOIN clauses. According to the <a href="http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_10002.htm#i2196190">Oracle documentation about partitioned outer joins</a> this can be used to fill gaps for simplified analytical calculations. jOOQ only supports putting the PARTITION BY clause to the right of the OUTER JOIN clause. The following example will create at least one record per AUTHOR and per existing value in BOOK.PUBLISHED_IN, regardless if an AUTHOR has actually published a book in that year.
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM AUTHOR
    -LEFT OUTER JOIN BOOK
    -PARTITION BY (PUBLISHED_IN)
    -ON BOOK.AUTHOR_ID = AUTHOR.ID]]></sql>
    -<java><![CDATA[create.select()
    -      .from(AUTHOR)
    -      .leftOuterJoin(BOOK)
    -      .partitionBy(BOOK.PUBLISHED_IN)
    -      .on(BOOK.AUTHOR_ID.equal(AUTHOR.ID));]]></java></code-pair>
    -
    -										</content>
    -									</section>
    -
    -									<section id="where-clause">
    -										<title>The WHERE clause</title>
    -										<content><html>
    -											<p>
    -												The WHERE clause can be used for JOIN or filter predicates, in order to restrict the data returned by the <reference id="table-expressions" title="table expressions"/> supplied to the previously specified <reference id="from-clause" title="from clause"/> and <reference id="join-clause" title="join clause"/>. Here is an example:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM BOOK
    -WHERE AUTHOR_ID = 1
    -AND TITLE = '1984']]></sql>
    -<java><![CDATA[create.select()
    -      .from(BOOK)
    -      .where(BOOK.AUTHOR_ID.equal(1))
    -      .and(BOOK.TITLE.equal("1984"));]]></java></code-pair><html>
    -
    -											<p>
    -												The above syntax is convenience provided by jOOQ, allowing you to connect the <reference class="org.jooq.Condition"/> supplied in the WHERE clause with another condition using an AND operator. You can of course also create a more complex condition and supply that to the WHERE clause directly (observe the different placing of parentheses). The results will be the same:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM BOOK
    -WHERE AUTHOR_ID = 1
    -AND TITLE = '1984']]></sql>
    -<java><![CDATA[create.select()
    -      .from(BOOK)
    -      .where(BOOK.AUTHOR_ID.equal(1).and(
    -             BOOK.TITLE.equal("1984")));]]></java></code-pair><html>
    -
    -											<p>
    -												You will find more information about creating <reference id="conditional-expressions" title="conditional expressions"/> later in the manual.
    -											</p>
    -										</html></content>
    -									</section>
    -
    -									<section id="connect-by-clause">
    -										<title>The CONNECT BY clause</title>
    -										<content><html>
    -											<p>
    -												The Oracle database knows a very succinct syntax for creating hierarchical queries: the CONNECT BY clause, which is fully supported by jOOQ, including all related functions and pseudo-columns. A more or less formal definition of this clause is given here:
    -											</p>
    -</html><sql>--   SELECT ..
    ---     FROM ..
    ---    WHERE ..
    - CONNECT BY [ NOCYCLE ] condition [ AND condition, ... ] [ START WITH condition ]
    --- GROUP BY ..
    --- ORDER [ SIBLINGS ] BY ..</sql><html>
    -
    -											<p>
    -												An example for an iterative query, iterating through values between 1 and 5 is this:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT LEVEL
    -FROM DUAL
    -CONNECT BY LEVEL <= 5]]></sql>
    -<java><![CDATA[// Get a table with elements 1, 2, 3, 4, 5
    -create.select(level())
    -      .connectBy(level().lessOrEqual(5));]]></java></code-pair><html>
    -
    -											<p>
    -												Here's a more complex example where you can recursively fetch directories in your database, and concatenate them to a path:
    -											</p>
    -</html><code-pair>
    -<sql><![CDATA[SELECT 
    -  SUBSTR(SYS_CONNECT_BY_PATH(DIRECTORY.NAME, '/'), 2)
    -FROM DIRECTORY
    -CONNECT BY 
    -  PRIOR DIRECTORY.ID = DIRECTORY.PARENT_ID
    -START WITH DIRECTORY.PARENT_ID IS NULL
    -ORDER BY 1]]></sql>
    -<java><![CDATA[.select(
    -   sysConnectByPath(DIRECTORY.NAME, "/").substring(2))
    -.from(DIRECTORY)
    -.connectBy(
    -   prior(DIRECTORY.ID).equal(DIRECTORY.PARENT_ID))
    -.startWith(DIRECTORY.PARENT_ID.isNull())
    -.orderBy(1);]]></java>
    -</code-pair><html>
    -
    -    										<p>
    -    											The output might then look like this
    -   											</p>
    -
    -</html><text>+------------------------------------------------+
    -|substring                                       |
    -+------------------------------------------------+
    -|C:                                              |
    -|C:/eclipse                                      |
    -|C:/eclipse/configuration                        |
    -|C:/eclipse/dropins                              |
    -|C:/eclipse/eclipse.exe                          |
    -+------------------------------------------------+
    -|...21 record(s) truncated...
    -</text><html>
    -
    -											<p>
    -												Some of the supported functions and pseudo-columns are these (available from the <reference id="dsl" title="DSL"/>):
    -											</p>
    -
    -											<ul>
    -												<li>LEVEL</li>
    -												<li>CONNECT_BY_IS_CYCLE</li>
    -												<li>CONNECT_BY_IS_LEAF</li>
    -												<li>CONNECT_BY_ROOT</li>
    -												<li>SYS_CONNECT_BY_PATH</li>
    -												<li>PRIOR</li>
    -											</ul>
    -
    -											<p>
    -												Note that this syntax is also supported in the CUBRID database and might be simulated in other dialects supporting common table expressions in the future.
    -											</p>
    -											
    -											<h3>ORDER SIBLINGS</h3>
    -											<p>
    -												The Oracle database allows for specifying a SIBLINGS keyword in the <reference id="order-by-clause" title="ORDER BY clause"/>. Instead of ordering the overall result, this will only order siblings among each other, keeping the hierarchy intact. An example is given here:
    -											</p>
    -											
    -</html><code-pair>
    -<sql><![CDATA[SELECT DIRECTORY.NAME
    -FROM DIRECTORY
    -CONNECT BY 
    -  PRIOR DIRECTORY.ID = DIRECTORY.PARENT_ID
    -START WITH DIRECTORY.PARENT_ID IS NULL
    -ORDER SIBLINGS BY 1]]></sql>
    -<java><![CDATA[.select(DIRECTORY.NAME)
    -.from(DIRECTORY)
    -.connectBy(
    -   prior(DIRECTORY.ID).equal(DIRECTORY.PARENT_ID))
    -.startWith(DIRECTORY.PARENT_ID.isNull())
    -.orderSiblingsBy(1);]]></java>
    -</code-pair>
    -											
    -										</content>
    -									</section>
    -
    -									<section id="group-by-clause">
    -										<title>The GROUP BY clause</title>
    -										<content><html>
    -											<p>
    -												GROUP BY can be used to create unique groups of data, to form aggregations, to remove duplicates and for other reasons. It will transform your previously defined <reference id="table-expressions" title="set of table expressions"/>, and return only one record per unique group as specified in this clause. For instance, you can group books by BOOK.AUTHOR_ID:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT AUTHOR_ID, COUNT(*)
    -FROM BOOK
    -GROUP BY AUTHOR_ID]]></sql>
    -<java><![CDATA[create.select(BOOK.AUTHOR_ID, count())
    -      .from(BOOK)
    -      .groupBy(BOOK.AUTHOR_ID);]]></java></code-pair><html>
    -
    -											<p>
    -												The above example counts all books per author.
    -											</p>
    -											<p>
    -												Note, as defined in the SQL standard, when grouping, you may no longer project any columns that are not a formal part of the GROUP BY clause, or <reference id="aggregate-functions" title="aggregate functions"/>.
    -											</p>
    -											
    -											<h3>MySQL's deviation from the SQL standard</h3>
    -											<p>
    -												MySQL has a peculiar way of not adhering to this standard behaviour. This is documented in the <a href="http://dev.mysql.com/doc/refman/5.6/en/group-by-hidden-columns.html">MySQL manual</a>. In short, with MySQL, you can also project any other field that is not part of the GROUP BY clause. The projected values will just be arbitrary values from within the group. You cannot rely on any ordering. For example:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT AUTHOR_ID, TITLE
    -FROM BOOK
    -GROUP BY AUTHOR_ID]]></sql>
    -<java><![CDATA[create.select(BOOK.AUTHOR_ID, BOOK.TITLE)
    -      .from(BOOK)
    -      .groupBy(AUTHOR_ID);]]></java></code-pair><html>
    -
    -											<p>
    -												This will return an arbitrary title per author. jOOQ supports this syntax, as jOOQ is not doing any checks internally, about the consistence of tables/fields/functions that you provide it.
    -											</p>
    -
    -											<h3>Empty GROUP BY clauses</h3>
    -											<p>
    -												jOOQ supports empty <code>GROUP BY ()</code> clause as well. This will result in <reference id="select-statement" title="SELECT statements"/> that return only one record.
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT COUNT(*)
    -FROM BOOK
    -GROUP BY ()]]></sql>
    -<java><![CDATA[create.selectCount()
    -      .from(BOOK)
    -      .groupBy();]]></java></code-pair><html>
    -
    -											
    -											<h3>ROLLUP(), CUBE() and GROUPING SETS()</h3>
    -											<p>
    -												Some databases support the SQL standard grouping functions and some extensions thereof. See the manual's section about <reference id="grouping-functions" title="grouping functions"/> for more details.
    -											</p>
    -										</html></content>
    -									</section>
    -
    -									<section id="having-clause">
    -										<title>The HAVING clause</title>
    -										<content><html>
    -											<p>
    -												The HAVING clause is commonly used to further restrict data resulting from a previously issued <reference id="group-by-clause" title="GROUP BY clause"/>. An example, selecting only those authors that have written at least two books:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT AUTHOR_ID, COUNT(*)
    -FROM BOOK
    -GROUP BY AUTHOR_ID
    -HAVING COUNT(*) >= 2]]></sql>
    -<java><![CDATA[create.select(BOOK.AUTHOR_ID, count(*))
    -      .from(BOOK)
    -      .groupBy(AUTHOR_ID)
    -      .having(count().greaterOrEqual(2));]]></java></code-pair><html>
    -
    -											<p>
    -												According to the SQL standard, you may omit the GROUP BY clause and still issue a HAVING clause. This will implicitly GROUP BY (). jOOQ also supports this syntax. The following example selects one record, only if there are at least 4 books in the books table:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT COUNT(*)
    -FROM BOOK
    -HAVING COUNT(*) >= 4]]></sql>
    -<java><![CDATA[create.select(count(*))
    -      .from(BOOK)
    -      .having(count().greaterOrEqual(4));]]></java></code-pair>
    -
    -										</content>
    -									</section>
    -
    -									<section id="order-by-clause">
    -										<title>The ORDER BY clause</title>
    -										<content><html>
    -											<p>
    -												Databases are allowed to return data in any arbitrary order, unless you explicitly declare that order in the ORDER BY clause. In jOOQ, this is straight-forward:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT AUTHOR_ID, TITLE
    -FROM BOOK
    -ORDER BY AUTHOR_ID ASC, TITLE DESC]]></sql>
    -<java><![CDATA[create.select(BOOK.AUTHOR_ID, BOOK.TITLE)
    -      .from(BOOK)
    -      .orderBy(BOOK.AUTHOR_ID.asc(), BOOK.TITLE.desc());]]></java></code-pair><html>
    -
    -											<p>
    -												Any jOOQ <reference id="column-expressions" title="column expression (or field)"/> can be transformed into an <reference class="org.jooq.SortField"/> by calling the asc() and desc() methods.
    -											</p>
    -
    -											<h3>Ordering by field index</h3>
    -											<p>
    -												The SQL standard allows for specifying integer literals (<reference id="inlined-parameters" title="literals"/>, not <reference id="bind-values" title="bind values"/>!) to reference column indexes from the projection (<reference id="select-clause" title="SELECT clause"/>). This may be useful if you do not want to repeat a lengthy expression, by which you want to order - although most databases also allow for referencing <reference id="aliased-columns" title="aliased column references"/> in the ORDER BY clause. An example of this is given here:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT AUTHOR_ID, TITLE
    -FROM BOOK
    -ORDER BY 1 ASC, 2 DESC]]></sql>
    -<java><![CDATA[create.select(BOOK.AUTHOR_ID, BOOK.TITLE)
    -      .from(BOOK)
    -      .orderBy(one().asc(), inline(2).desc());]]></java></code-pair><html>
    -
    -											<p>
    -												Note, how <code>one()</code> is used as a convenience short-cut for <code>inline(1)</code>
    -											</p>
    -
    -											<h3>Ordering and NULLS</h3>
    -											<p>
    -												A few databases support the SQL standard "null ordering" clause in sort specification lists, to define whether <code>NULL</code> values should come first or last in an ordered result.
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT 
    -  BOOK.AUTHOR_ID, 
    -  BOOK.CO_AUTHOR_ID, 
    -  BOOK.TITLE
    -FROM BOOK
    -ORDER BY AUTHOR_ID ASC,
    -         CO_AUTHOR_ID ASC NULLS LAST]]></sql>
    -<java><![CDATA[create.select(
    -         BOOK.AUTHOR_ID, 
    -         BOOK.CO_AUTHOR_ID, 
    -         BOOK.TITLE)
    -      .from(BOOK)
    -      .orderBy(BOOK.AUTHOR_ID.asc(),
    -               BOOK.CO_AUTHOR_ID.asc().nullsLast());]]></java></code-pair><html>
    -
    -											<p>
    -												If your database doesn't support this syntax, jOOQ simulates it using a <reference id="case-expressions" title="CASE expression"/> as follows
    -											</p>
    -</html><code-pair>
    -<sql><![CDATA[SELECT 
    -  BOOK.AUTHOR_ID, BOOK.CO_AUTHOR_ID, BOOK.TITLE
    -FROM BOOK
    -ORDER BY AUTHOR_ID ASC,
    -         CASE WHEN CO_AUTHOR_ID IS NULL 
    -              THEN 1 ELSE 0 END ASC,
    -         CO_AUTHOR_ID ASC]]></sql>
    -<java><![CDATA[create.select(
    -         BOOK.AUTHOR_ID, 
    -         BOOK.CO_AUTHOR_ID,
    -         BOOK.TITLE)
    -      .from(BOOK)
    -      .orderBy(BOOK.AUTHOR_ID.asc(),
    -               BOOK.CO_AUTHOR_ID.asc().nullsLast());]]></java></code-pair><html>
    -
    -											<h3>Ordering using CASE expressions</h3>
    -											<p>
    -												Using <reference id="case-expressions" title="CASE expressions"/> in SQL ORDER BY clauses is a common pattern, if you want to introduce some sort indirection / sort mapping into your queries. As with SQL, you can add any type of <reference id="column-expressions" title="column expression"/> into your ORDER BY clause. For instance, if you have two favourite books that you always want to appear on top, you could write:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM BOOK
    -ORDER BY CASE TITLE
    -         WHEN '1984' THEN 0
    -         WHEN 'Animal Farm' THEN 1
    -         ELSE 2 END ASC]]></sql>
    -<java><![CDATA[create.select()
    -      .from(BOOK)
    -      .orderBy(decode().value(BOOK.TITLE)
    -                       .when("1984", 0)
    -                       .when("Animal Farm", 1)
    -                       .otherwise(2).asc());]]></java></code-pair><html>
    -
    -											<p>
    -												But writing these things can become quite verbose. jOOQ supports a convenient syntax for specifying sort mappings. The same query can be written in jOOQ as such:
    -											</p>
    -
    -</html><java><![CDATA[create.select()
    -      .from(BOOK)
    -      .orderBy(BOOK.TITLE.sortAsc("1984", "Animal Farm"));]]></java><html>
    -
    -											<p>
    -												More complex sort indirections can be provided using a Map:
    -											</p>
    -
    -</html><java><![CDATA[create.select()
    -      .from(BOOK)
    -      .orderBy(BOOK.TITLE.sort(new HashMap<String, Integer>() {{
    -          put("1984", 1);
    -          put("Animal Farm", 13);
    -          put("The jOOQ book", 10);
    -      }}));]]></java><html>
    -
    -      										<p>
    -      											Of course, you can combine this feature with the previously discussed NULLS FIRST / NULLS LAST feature. So, if in fact these two books are the ones you like least, you can put all NULLS FIRST (all the other books):
    -      										</p>
    -
    -</html><java><![CDATA[create.select()
    -      .from(BOOK)
    -      .orderBy(BOOK.TITLE.sortAsc("1984", "Animal Farm").nullsFirst());]]></java><html>
    -
    -											<h3>jOOQ's understanding of SELECT .. ORDER BY</h3>
    -											<p>
    -												The SQL standard defines that a "query expression" can be ordered, and that query expressions can contain <reference id="union-clause" title="UNION, INTERSECT and EXCEPT clauses"/>, whose subqueries cannot be ordered. While this is defined as such in the SQL standard, many databases allowing for the non-standard <reference id="limit-clause" title="LIMIT clause"/> in one way or another, do not adhere to this part of the SQL standard. Hence, jOOQ allows for ordering all SELECT statements, regardless whether they are constructed as a part of a UNION or not. Corner-cases are handled internally by jOOQ, by introducing synthetic subselects to adhere to the correct syntax, where this is needed.
    -											</p>
    -											
    -											
    -											<h3>Oracle's ORDER SIBLINGS BY clause</h3>
    -											<p>
    -												jOOQ also supports Oracle's SIBLINGS keyword to be used with ORDER BY clauses for <reference id="connect-by-clause" title="hierarchical queries using CONNECT BY"/>
    -											</p>
    -										</html></content>
    -									</section>
    -
    -									<section id="limit-clause">
    -										<title>The LIMIT .. OFFSET clause</title>
    -										<content><html>
    -											<p>
    -												While being extremely useful for every application that does paging, or just to limit result sets to reasonable sizes, this clause is not yet part of any SQL standard (up until SQL:2008). Hence, there exist a variety of possible implementations in various SQL dialects, concerning this limit clause. jOOQ chose to implement the LIMIT .. OFFSET clause as understood and supported by MySQL, H2, HSQLDB, Postgres, and SQLite. Here is an example of how to apply limits with jOOQ:
    -											</p>
    -
    -</html><java><![CDATA[create.select().from(BOOK).limit(1).offset(2);]]></java><html>
    -
    -											<p>
    -												This will limit the result to 1 books starting with the 2nd book (starting at offset 0!). limit() is supported in all dialects, offset() in all but Sybase ASE, which has no reasonable means to simulate it. This is how jOOQ simulates the above query in various SQL dialects:
    -											</p>
    -
    -</html><sql><![CDATA[-- MySQL, H2, HSQLDB, Postgres, and SQLite
    -SELECT * FROM BOOK LIMIT 1 OFFSET 2
    -
    --- CUBRID supports a MySQL variant of the LIMIT .. OFFSET clause
    -SELECT * FROM BOOK LIMIT 2, 1
    -
    --- Derby, SQL Server 2012
    -SELECT * FROM BOOK OFFSET 2 ROWS FETCH NEXT 1 ROWS ONLY
    -
    --- Ingres
    -SELECT * FROM BOOK OFFSET 2 FETCH FIRST 1 ROWS ONLY
    -
    --- Firebird
    -SELECT * FROM BOOK ROWS 2 TO 3
    -
    --- Sybase SQL Anywhere
    -SELECT TOP 1 ROWS START AT 3 * FROM BOOK
    -
    --- DB2 (without OFFSET)
    -SELECT * FROM BOOK FETCH FIRST 1 ROWS ONLY
    -
    --- Sybase ASE, SQL Server 2008 (without OFFSET)
    -SELECT TOP 1 * FROM BOOK
    -
    --- DB2 (with OFFSET), SQL Server 2008 (with OFFSET), Oracle (actual query may vary)
    -SELECT * FROM (
    -  SELECT LIMIT_98843777.*, ROW_NUMBER() OVER (ORDER BY ID ASC) AS ROWNUM_98843777
    -  FROM (
    -    SELECT TOP 100 PERCENT *
    -    FROM BOOK
    -    ORDER BY ID ASC
    -  ) AS LIMIT_98843777
    -) AS OUTER_LIMIT_98843777
    -WHERE ROWNUM_98843777 > 1
    -AND ROWNUM_98843777 <= 3
    -]]></sql><html>
    -
    -											<p>
    -												As you can see, jOOQ will take care of the incredibly painful ROW_NUMBER() OVER() (or ROWNUM for Oracle) filtering in subselects for you, you'll just have to write limit(1).offset(2) in any dialect.
    -											</p>
    -
    -											<h3>SQL Server's ORDER BY, TOP and subqueries</h3>
    -											<p>
    -												As can be seen in the above example, writing correct SQL can be quite tricky, depending on the SQL dialect. For instance, with SQL Server, you cannot have an ORDER BY clause in a subquery, unless you also have a TOP clause. This is illustrated by the fact that jOOQ renders a TOP 100 PERCENT clause for you. The same applies to the fact that ROW_NUMBER() OVER() needs an ORDER BY windowing clause, even if you don't provide one to the jOOQ query. By default, jOOQ adds ordering by the first column of your projection.
    -											</p>
    -										</html></content>
    -									</section>
    -
    -									<section id="for-update-clause">
    -										<title>The FOR UPDATE clause</title>
    -										<content><html>
    -											<p>
    -												For inter-process synchronisation and other reasons, you may choose to use the SELECT .. FOR UPDATE clause to indicate to the database, that a set of cells or records should be locked by a given transaction for subsequent updates. With jOOQ, this can be achieved as such:
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM BOOK
    -WHERE ID = 3
    -FOR UPDATE]]></sql>
    -<java><![CDATA[create.select()
    -      .from(BOOK)
    -      .where(BOOK.ID.equal(3))
    -      .forUpdate();]]></java></code-pair><html>
    -
    -											<p>
    -												The above example will produce a record-lock, locking the whole record for updates. Some databases also support cell-locks using FOR UPDATE OF ..
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM BOOK
    -WHERE ID = 3
    -FOR UPDATE OF TITLE]]></sql>
    -<java><![CDATA[create.select()
    -      .from(BOOK)
    -      .where(BOOK.ID.equal(3))
    -      .forUpdate().of(BOOK.TITLE);]]></java></code-pair><html>
    -
    -											<p>
    -												Oracle goes a bit further and also allows to specify the actual locking behaviour. It features these additional clauses, which are all supported by jOOQ:
    -											</p>
    -											<ul>
    -												<li><code>FOR UPDATE NOWAIT</code>: This is the default behaviour. If the lock cannot be acquired, the query fails immediately</li>
    -												<li><code>FOR UPDATE WAIT n</code>: Try to wait for [n] seconds for the lock acquisition. The query will fail only afterwards</li>
    -												<li><code>FOR UPDATE SKIP LOCKED</code>: This peculiar syntax will skip all locked records. This is particularly useful when implementing queue tables with multiple consumers</li>
    -											</ul>
    -											<p>
    -												With jOOQ, you can use those Oracle extensions as such:
    -											</p>
    -
    -</html><java><![CDATA[create.select().from(BOOK).where(BOOK.ID.equal(3)).forUpdate().nowait();
    -create.select().from(BOOK).where(BOOK.ID.equal(3)).forUpdate().wait(5);
    -create.select().from(BOOK).where(BOOK.ID.equal(3)).forUpdate().skipLocked();]]></java><html>
    -
    -											<h3>FOR UPDATE in CUBRID and SQL Server</h3>
    -											<p>
    -												The SQL standard specifies a <code>FOR UPDATE</code> clause to be applicable for cursors. Most databases interpret this as being applicable for all <code>SELECT</code> statements. An exception to this rule are the CUBRID and SQL Server databases, that do not allow for any <code>FOR UPDATE</code> clause in a regular SQL <code>SELECT</code> statement. jOOQ simulates the <code>FOR UPDATE</code> behaviour, by locking record by record with JDBC. JDBC allows for specifying the flags <code>TYPE_SCROLL_SENSITIVE</code>, <code>CONCUR_UPDATABLE</code> for any statement, and then using ResultSet.updateXXX() methods to produce a cell-lock / row-lock. Here's a simplified example in JDBC:
    -											</p>
    -</html><java><![CDATA[PreparedStatement stmt = connection.prepareStatement(
    -  "SELECT * FROM author WHERE id IN (3, 4, 5)",
    -  ResultSet.TYPE_SCROLL_SENSITIVE,
    -  ResultSet.CONCUR_UPDATABLE);
    -ResultSet rs = stmt.executeQuery();
    -
    -while (rs.next()) {
    -  // UPDATE the primary key for row-locks, or any other columns for cell-locks
    -  rs.updateObject(1, rs.getObject(1));
    -  rs.updateRow();
    -
    -  // Do more stuff with this record
    -}]]></java><html>
    -
    -											<p>
    -												The main drawback of this approach is the fact that the database has to maintain a scrollable cursor, whose records are locked one by one. This can cause a major risk of deadlocks or race conditions if the JDBC driver can recover from the unsuccessful locking, if two Java threads execute the following statements:
    -											</p>
    -
    -</html><sql><![CDATA[-- thread 1
    -SELECT * FROM author ORDER BY id ASC;
    -
    --- thread 2
    -SELECT * FROM author ORDER BY id DESC;]]></sql><html>
    -
    -											<p>
    -												So use this technique with care, possibly only ever locking single rows!
    -											</p>
    -
    -											<h3>Pessimistic (shared) locking with the <code>FOR SHARE</code> clause</h3>
    -											<p>
    -												Some databases (MySQL, Postgres) also allow to issue a non-exclusive lock explicitly using a <code>FOR SHARE</code> clause. This is also supported by jOOQ
    -											</p>
    -
    -											<h3>Optimistic locking in jOOQ</h3>
    -											<p>
    -												Note, that jOOQ also supports optimistic locking, if you're doing simple CRUD. This is documented in the section's manual about <reference id="optimistic-locking" title="optimistic locking"/>.
    -											</p>
    -										</html></content>
    -									</section>
    -
    -									<section id="union-clause">
    -										<title>UNION, INTERSECTION and EXCEPT</title>
    -										<content><html>
    -											<p>
    -												SQL allows to perform set operations as understood in standard set theory on result sets. These operations include unions, intersections, subtractions. For two subselects to be combinable by such a set operator, each subselect must return a <reference id="table-expressions" title="table expression"/> of the same degree and type.
    -											</p>
    -											
    -											<h3>UNION and UNION ALL</h3>
    -											<p>
    -												These operators combine two results into one. While <code>UNION</code> removes all duplicate records resulting from this combination, <code>UNION ALL</code> leaves subselect results as they are. Typically, you should prefer <code>UNION ALL</code> over <code>UNION</code>, if you don't really need to remove duplicates. The following example shows how to use such a <code>UNION</code> operation in jOOQ.
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT * FROM BOOK WHERE ID = 3
    -UNION ALL
    -SELECT * FROM BOOK WHERE ID = 5]]></sql>
    -<java><![CDATA[create.selectFrom(BOOK).where(BOOK.ID.equal(3))
    -      .unionAll(
    -create.selectFrom(BOOK).where(BOOK.ID.equal(5)));]]></java></code-pair><html>
    -											
    -											<h3>INTERSECT [ ALL ] and EXCEPT [ ALL ]</h3>
    -											<p>
    -												<code>INTERSECT</code> is the operation that produces only those values that are returned by both subselects. <code>EXCEPT</code> is the operation that returns only those values that are returned exclusively in the first subselect. Both operators will remove duplicates from their results. The SQL standard allows to specify the <code>ALL</code> keyword for both of these operators as well, but this is hardly supported in any database. jOOQ does not support <code>INTERSECT ALL</code>, <code>EXEPT ALL</code> operations either. 
    -											</p>
    -											
    -											<h3>jOOQ's set operators and how they're different from standard SQL</h3>
    -											<p>
    -												As previously mentioned in the manual's section about the <reference id="order-by-clause" title="ORDER BY clause"/>, jOOQ has slightly changed the semantics of these set operators. While in SQL, a subselect may not contain any <reference id="order-by-clause" title="ORDER BY clause"/> or <reference id="limit-clause" title="LIMIT clause"/> (unless you wrap the subselect into a <reference id="nested-selects" title="nested SELECT"/>), jOOQ allows you to do so. In order to select both the youngest and the oldest author from the database, you can issue the following statement with jOOQ (rendered to the MySQL dialect):
    -											</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[  (SELECT * FROM AUTHOR 
    -   ORDER BY DATE_OF_BIRTH ASC LIMIT 1)
    -UNION
    -  (SELECT * FROM AUTHOR 
    -   ORDER BY DATE_OF_BIRTH DESC LIMIT 1)]]></sql>
    -<java><![CDATA[create.selectFrom(AUTHOR)
    -      .orderBy(AUTHOR.DATE_OF_BIRTH.asc()).limit(1)
    -      .union(
    -create.selectFrom(AUTHOR)
    -      .orderBy(AUTHOR.DATE_OF_BIRTH.desc()).limit(1));]]></java></code-pair><html>
    -		
    -											<h3>Projection typesafety for degrees between 1 and {max-row-degree}</h3>
    -											<p>
    -												Two subselects that are combined by a set operator are required to be of the same degree and, in most databases, also of the same type. jOOQ 3.0's introduction of <reference id="record-n" title="Typesafe Record[N] types"/> helps compile-checking these constraints:
    -											</p>
    -											
    -</html><java><![CDATA[// Some sample SELECT statements
    -Select<Record2<Integer, String>>  s1 = select(BOOK.ID, BOOK.TITLE).from(BOOK);
    -Select<Record1<Integer>>          s2 = selectOne();
    -Select<Record2<Integer, Integer>> s3 = select(one(), zero());
    -Select<Record2<Integer, String>>  s4 = select(one(), inline("abc"));
    -
    -// Let's try to combine them:
    -s1.union(s2); // Doesn't compile because of a degree mismatch. Expected: Record2<...>, got: Record1<...>
    -s1.union(s3); // Doesn't compile because of a type mismatch. Expected: <Integer, String>, got: <Integer, Integer>
    -s1.union(s4); // OK. The two Record[N] types match]]></java>											
    -										</content>
    -									</section>
    -
    -									<section id="oracle-hints">
    -										<title>Oracle-style hints</title>
    -										<content><html>
    -											<p>
    -												If you are closely coupling your application to an Oracle (or CUBRID) database,	you might need to be able to pass hints of the form <code>/*+HINT*/</code> with your SQL statements to the Oracle database. For example:
    -											</p>
    -
    -</html><sql>SELECT /*+ALL_ROWS*/ FIRST_NAME, LAST_NAME
    -  FROM AUTHOR</sql><html>
    -
    -				  							<p>
    -				  								This can be done in jOOQ using the <code>.hint()</code> clause in your SELECT statement:
    -			  								</p>
    -
    -</html><java>create.select(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .hint("/*+ALL_ROWS*/")
    -      .from(AUTHOR);</java><html>
    -
    -											<p>
    -												Note that you can pass any string in the <code>.hint()</code> clause. If you use that clause, the passed string will always be put in between the <code>SELECT [DISTINCT]</code> keywords and the actual projection list. This can be useful in other databases too, such as MySQL, for instance:
    -											</p>
    -											
    -</html><code-pair>
    -<sql><![CDATA[SELECT SQL_CALC_FOUND_ROWS field1, field2
    -FROM table1
    -]]></sql>
    -<java><![CDATA[create.select(field1, field2)
    -       .hint("SQL_CALC_FOUND_ROWS")
    -       .from(table1)]]></java>
    -</code-pair>
    -										</content>
    -									</section>
    -									
    -									<section id="select-lexical-vs-logical-order">
    -										<title>Lexical and logical SELECT clause order</title>
    -										<content><html>
    -											<p>
    -												SQL has a lexical and a logical order of <code>SELECT</code> clauses. The lexical order of <code>SELECT</code> clauses is inspired by the English language. As SQL statements are commands for the database, it is natural to express a statement in an imperative tense, such as "SELECT this and that!".
    -											</p>
    -											
    -											<h3>Logical SELECT clause order</h3>
    -											<p>
    -												The logical order of <code>SELECT</code> clauses, however, does not correspond to the syntax. In fact, the logical order is this:
    -											</p>
    -											
    -											<ul>
    -												<li><reference id="from-clause" title="The FROM clause"/>: First, all data sources are defined and joined</li>
    -												<li><reference id="where-clause" title="The WHERE clause"/>: Then, data is filtered as early as possible</li>
    -												<li><reference id="connect-by-clause" title="The CONNECT BY clause"/>: Then, data is traversed iteratively or recursively, to produce new tuples</li>
    -												<li><reference id="group-by-clause" title="The GROUP BY clause"/>: Then, data is reduced to groups, possibly producing new tuples if <reference id="grouping-functions" title="grouping functions like ROLLUP(), CUBE(), GROUPING SETS()"/> are used</li>
    -												<li><reference id="having-clause" title="The HAVING clause"/>: Then, data is filtered again</li>
    -												<li><reference id="select-clause" title="The SELECT clause"/>: Only now, the projection is evaluated. In case of a <code>SELECT DISTINCT</code> statement, data is further reduced to remove duplicates</li>
    -												<li><reference id="union-clause" title="The UNION clause"/>: Optionally, the above is repeated for several <code>UNION</code>-connected subqueries. Unless this is a <code>UNION ALL</code> clause, data is further reduced to remove duplicates</li>
    -												<li><reference id="order-by-clause" title="The ORDER BY clause"/>: Now, all remaining tuples are ordered</li>
    -												<li><reference id="limit-clause" title="The LIMIT clause"/>: Then, a paging view is created for the ordered tuples</li>
    -												<li><reference id="for-update-clause" title="The FOR UPDATE clause"/>: Finally, pessimistic locking is applied</li>
    -											</ul>
    -											
    -											<p>
    -												The <a href="http://msdn.microsoft.com/en-us/library/ms189499.aspx">SQL Server documentation</a> also explains this, with slightly different clauses:
    -											</p>
    -											
    -											<ul>
    -												<li><code>FROM</code></li>
    -												<li><code>ON</code></li>
    -												<li><code>JOIN</code></li>
    -												<li><code>WHERE</code></li>
    -												<li><code>GROUP BY</code></li>
    -												<li><code>WITH CUBE</code> or <code>WITH ROLLUP</code></li>
    -												<li><code>HAVING</code></li>
    -												<li><code>SELECT</code></li>
    -												<li><code>DISTINCT</code></li>
    -												<li><code>ORDER BY</code></li>
    -												<li><code>TOP</code></li>
    -											</ul>
    -											
    -											<p>
    -												As can be seen, databases have to logically reorder a SQL statement in order to determine the best execution plan. 
    -											</p>
    -											
    -											<h3>Alternative syntaxes: LINQ, SLICK</h3>
    -											<p>
    -											    Some "higher-level" abstractions, such as C#'s LINQ or Scala's SLICK try to inverse the lexical order of <code>SELECT</code> clauses to what appears to be closer to the logical order. The obvious advantage of moving the <code>SELECT</code> clause to the end is the fact that the projection type, which is the record type returned by the <code>SELECT</code> statement can be re-used more easily in the target environment of the internal domain specific language.
    -											</p>
    -											
    -											<p>
    -												A LINQ example:
    -											</p>
    -</html><java><![CDATA[// LINQ-to-SQL looks somewhat similar to SQL
    -// AS clause    // FROM clause
    -From p          In db.Products
    -
    -// WHERE clause
    -Where p.UnitsInStock <= p.ReorderLevel AndAlso Not p.Discontinued
    -
    -// SELECT clause
    -Select p]]></java><html>											
    -											
    -											<p> 
    -											    A SLICK example:
    -											</p>
    -											
    -</html><scala><![CDATA[// "for" is the "entry-point" to the DSL
    -val q = for {
    -
    -    // FROM clause   WHERE clause
    -    c <- Coffees     if c.supID === 101
    -
    -// SELECT clause and projection to a tuple
    -} yield (c.name, c.price)]]></scala><html>
    -
    -											<p>
    -												While this looks like a good idea at first, it only complicates translation to more advanced SQL statements while impairing readability for those users that are used to writing SQL. jOOQ is designed to look just like SQL. This is specifically true for SLICK, which not only changed the <code>SELECT</code> clause order, but also heavily "integrated" SQL clauses with the Scala language.
    -											</p>
    -											<p>
    -												For these reasons, the jOOQ DSL API is modelled in SQL's lexical order.
    -											</p>
    -										</html></content>
    -									</section>
    -								</sections>
    -							</section>
    -
    -							<section id="insert-statement">
    -								<title>The INSERT statement</title>
    -								<content><html>
    -									<p>
    -										The <code>INSERT</code> statement is used to insert new records into a database table. Records can either be supplied using a <code>VALUES()</code> constructor, or a <code>SELECT</code> statement. jOOQ supports both types of <code>INSERT</code> statements. An example of an <code>INSERT</code> statement using a <code>VALUES()</code> constructor is given here:
    -									</p>
    -
    -
    -</html><code-pair>
    -<sql>INSERT INTO AUTHOR 
    -       (ID, FIRST_NAME, LAST_NAME)
    -VALUES (100, 'Hermann', 'Hesse');</sql>
    -<java>create.insertInto(AUTHOR,
    -        AUTHOR.ID, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .values(100, "Hermann", "Hesse");</java></code-pair><html>
    -
    -									<p>
    -										Note that for explicit degrees up to {max-row-degree}, the <code>VALUES()</code> constructor provides additional typesafety. The following example illustrates this:
    -									</p>
    -
    -</html><java><![CDATA[InsertValuesStep3<AuthorRecord, Integer, String, String> step = 
    -  create.insertInto(AUTHOR, AUTHOR.ID, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME);
    -    step.values("A", "B", "C");
    -         // ^^^ Doesn't compile, the expected type is Integer]]></java><html>
    -									<h3>INSERT multiple rows with the VALUES() constructor</h3>
    -									<p>
    -										The SQL standard specifies that multiple rows can be supplied to the VALUES() constructor in an INSERT statement. Here's an example of a multi-record INSERT
    -									</p>
    -</html><code-pair>
    -<sql>INSERT INTO AUTHOR
    -       (ID, FIRST_NAME, LAST_NAME)
    -VALUES (100, 'Hermann', 'Hesse'),
    -       (101, 'Alfred', 'Döblin');</sql>
    -<java>create.insertInto(AUTHOR,
    -        AUTHOR.ID, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .values(100, "Hermann", "Hesse")
    -      .values(101, "Alfred", "Döblin");</java></code-pair><html>
    -
    -									<p>
    -										jOOQ tries to stay close to actual SQL. In detail, however, Java's expressiveness is limited. That's why the values() clause is repeated for every record in multi-record inserts. 
    -									</p>
    -									<p> 
    -										Some RDBMS do not support inserting several records in a single statement. In those cases, jOOQ simulates multi-record INSERTs using the following SQL:
    -									</p>
    -
    -</html><code-pair>
    -<sql>INSERT INTO AUTHOR
    -    (ID, FIRST_NAME, LAST_NAME)
    -SELECT 100, 'Hermann', 'Hesse' FROM DUAL UNION ALL
    -SELECT 101, 'Alfred', 'Döblin' FROM DUAL;</sql>
    -<java>create.insertInto(AUTHOR,
    -        AUTHOR.ID, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .values(100, "Hermann", "Hesse")
    -      .values(101, "Alfred", "Döblin");
    -</java></code-pair><html>
    -
    -									<h3>INSERT using jOOQ's alternative syntax</h3>
    -									<p>
    -										MySQL (and some other RDBMS) allow for using a non-SQL-standard, UPDATE-like syntax for INSERT statements. This is also supported in jOOQ, should you prefer that syntax. The above INSERT statement can also be expressed as follows:
    -									</p>
    -
    -</html><java>create.insertInto(AUTHOR)
    -      .set(AUTHOR.ID, 100)
    -      .set(AUTHOR.FIRST_NAME, "Hermann")
    -      .set(AUTHOR.LAST_NAME, "Hesse")
    -      .newRecord()
    -      .set(AUTHOR.ID, 101)
    -      .set(AUTHOR.FIRST_NAME, "Alfred")
    -      .set(AUTHOR.LAST_NAME, "Döblin");</java><html>
    -      
    -									<p>
    -										As you can see, this syntax is a bit more verbose, but also more readable, as every field can be matched with its value. Internally, the two syntaxes are strictly equivalent.
    -									</p>
    -
    -									<h3>MySQL's INSERT .. ON DUPLICATE KEY UPDATE</h3>
    -									<p>
    -										The MySQL database supports a very convenient way to INSERT or UPDATE a record. This is a non-standard extension to the SQL syntax, which is supported by jOOQ and simulated in other RDBMS, where this is possible (i.e. if they support the SQL standard <reference id="merge-statement" title="MERGE statement"/>). Here is an example how to use the ON DUPLICATE KEY UPDATE clause:
    -									</p>
    -									
    -</html><java>// Add a new author called "Koontz" with ID 3.
    -// If that ID is already present, update the author's name
    -create.insertInto(AUTHOR, AUTHOR.ID, AUTHOR.LAST_NAME)
    -      .values(3, "Koontz")
    -      .onDuplicateKeyUpdate()
    -      .set(AUTHOR.LAST_NAME, "Koontz");</java><html>
    -
    -									<h3>The synthetic ON DUPLICATE KEY IGNORE clause</h3>
    -							
    -									<p>
    -										The MySQL database also supports an INSERT IGNORE INTO clause. This is supported by jOOQ using the more convenient SQL syntax variant of ON DUPLICATE KEY IGNORE, which can be equally simulated in other databases using a <reference id="merge-statement" title="MERGE statement"/>:
    -									</p>
    -									
    -</html><java>// Add a new author called "Koontz" with ID 3.
    -// If that ID is already present, ignore the INSERT statement
    -create.insertInto(AUTHOR, AUTHOR.ID, AUTHOR.LAST_NAME)
    -      .values(3, "Koontz")
    -      .onDuplicateKeyIgnore();</java><html>
    -
    -      								<h3>Postgres's INSERT .. RETURNING</h3>
    -									<p>
    -										The Postgres database has native support for an INSERT .. RETURNING clause. This is a very powerful concept that is simulated for all other dialects using JDBC's <reference class="java.sql.Statement" anchor="#getGeneratedKeys()" title="getGeneratedKeys()"/> method. Take this example:
    -									</p>
    -
    -</html><java><![CDATA[// Add another author, with a generated ID
    -Record<?> record =
    -create.insertInto(AUTHOR, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .values("Charlotte", "Roche")
    -      .returning(AUTHOR.ID)
    -      .fetchOne();
    -
    -System.out.println(record.getValue(AUTHOR.ID));
    -
    -// For some RDBMS, this also works when inserting several values
    -// The following should return a 2x2 table
    -Result<?> result =
    -create.insertInto(AUTHOR, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .values("Johann Wolfgang", "von Goethe")
    -      .values("Friedrich", "Schiller")
    -      // You can request any field. Also trigger-generated values
    -      .returning(AUTHOR.ID, AUTHOR.CREATION_DATE)
    -      .fetch();]]></java><html>
    -
    -		      						<p>
    -		      							Some databases have poor support for returning generated keys after INSERTs. In those cases, jOOQ might need to issue another <reference id="select-statement" title="SELECT statement"/> in order to fetch an @@identity value. Be aware, that this can lead to race-conditions in those databases that cannot properly return generated ID values. For more information, please consider the jOOQ Javadoc for the returning() clause.
    -		      						</p>
    -
    -									<h3>The INSERT SELECT statement</h3>
    -							
    -									<p>
    -										In some occasions, you may prefer the INSERT SELECT syntax, for instance, when you copy records from one table to another:
    -									</p>
    -									
    -</html><java>create.insertInto(AUTHOR_ARCHIVE)
    -      .select(create.selectFrom(AUTHOR).where(AUTHOR.DECEASED.isTrue()));</java>
    -								
    -								</content>
    -							</section>
    -
    -							<section id="update-statement">
    -								<title>The UPDATE statement</title>
    -								<content><html>
    -									<p>
    -										The UPDATE statement is used to modify one or several pre-existing records in a database table. UPDATE statements are only possible on single tables. Support for multi-table updates will be implemented in the near future. An example update query is given here:
    -									</p>
    -
    -</html><code-pair>
    -<sql>UPDATE AUTHOR
    -   SET FIRST_NAME = 'Hermann',
    -       LAST_NAME = 'Hesse'
    - WHERE ID = 3;</sql>
    -<java>create.update(AUTHOR)
    -      .set(AUTHOR.FIRST_NAME, "Hermann")
    -      .set(AUTHOR.LAST_NAME, "Hesse")
    -      .where(AUTHOR.ID.equal(3));</java>
    -</code-pair><html>
    -
    -									<p>
    -										Most databases allow for using scalar subselects in UPDATE statements in one way or another. jOOQ models this through a <code>set(Field&lt;T>, Select&lt;? extends Record1&lt;T>>)</code> method in the <code>UPDATE</code> DSL API:
    -									</p>
    -
    -</html><code-pair>
    -<sql>UPDATE AUTHOR
    -   SET FIRST_NAME = (
    -         SELECT FIRST_NAME
    -         FROM PERSON
    -         WHERE PERSON.ID = AUTHOR.ID
    -       ),
    - WHERE ID = 3;</sql>
    -<java>create.update(AUTHOR)
    -      .set(AUTHOR.FIRST_NAME, 
    -         select(PERSON.FIRST_NAME)
    -        .from(PERSON)
    -        .where(PERSON.ID.equal(AUTHOR.ID))
    -      )
    -      .where(AUTHOR.ID.equal(3));</java>
    -</code-pair><html>
    -
    -
    -									<h3>Using row value expressions in an UPDATE statement</h3>
    -									<p>
    -										jOOQ supports formal <reference id="row-value-expressions" title="row value expressions"/> in various contexts, among which the UPDATE statement. Only one row value expression can be updated at a time. Here's an example:
    -									</p>
    -									
    -</html><code-pair>
    -<sql>UPDATE AUTHOR
    -   SET (FIRST_NAME, LAST_NAME) = 
    -       ('Hermann',  'Hesse')
    - WHERE ID = 3;</sql>
    -<java>create.update(AUTHOR)
    -      .set(row(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME),
    -           row("Herman",          "Hesse"))
    -      .where(AUTHOR.ID.equal(3));</java>
    -</code-pair><html>
    -
    -									<p>
    -										This can be particularly useful when using subselects:
    -									</p>
    -
    -</html><code-pair>
    -<sql>UPDATE AUTHOR
    -   SET (FIRST_NAME, LAST_NAME) = (
    -         SELECT PERSON.FIRST_NAME, PERSON.LAST_NAME
    -         FROM PERSON
    -         WHERE PERSON.ID = AUTHOR.ID
    -       )
    - WHERE ID = 3;</sql>
    -<java>create.update(AUTHOR)
    -      .set(row(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME),
    -           select(PERSON.FIRST_NAME, PERSON.LAST_NAME)
    -          .from(PERSON)
    -          .where(PERSON.ID.equal(AUTHOR.ID))
    -      )
    -      .where(AUTHOR.ID.equal(3));</java>
    -</code-pair><html>
    -
    -									<p>
    -										The above row value expressions usages are completely typesafe.
    -									</p>
    -									
    -									<h3>UPDATE .. RETURNING</h3>
    -									<p>
    -										The Firebird and Postgres databases support a <code>RETURNING</code> clause on their <code>UPDATE</code> statements, similar as the <code>RETURNING</code> clause in <reference id="insert-statement" title="INSERT statements"/>. This is useful to fetch trigger-generated values in one go. An example is given here:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[-- Fetch a trigger-generated value
    -UPDATE BOOK
    -SET TITLE = 'Animal Farm'
    -WHERE ID = 5
    -RETURNING UPDATE_COUNT]]></sql>
    -<java><![CDATA[int count = create.update(BOOK)
    -                  .set(BOOK.TITLE, "Animal Farm")
    -                  .where(BOOK.ID.equal(5))
    -                  .returning(BOOK.UPDATE_COUNT)
    -                  .fetchOne().getValue(BOOK.UPDATE_COUNT);]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										The <code>UPDATE .. RETURNING</code> clause is currently not simulated for other databases. Future versions might execute an additional <reference id="select-statement" title="SELECT statement"/> to fetch results.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="delete-statement">
    -								<title>The DELETE statement</title>
    -								<content><html>
    -									<p>
    -										The DELETE statement physically removes records from a database table. DELETE statements are only possible on single tables. Support for multi-table deletes will be implemented in the near future. An example delete query is given here:
    -									</p>
    -
    -</html><code-pair>
    -<sql>DELETE AUTHOR
    - WHERE ID = 100;</sql>
    -<java>create.delete(AUTHOR)
    -      .where(AUTHOR.ID.equal(100));</java>
    -</code-pair>
    -
    -								</content>
    -							</section>
    -
    -							<section id="merge-statement">
    -								<title>The MERGE statement</title>
    -								<content><html>
    -									<p>
    -										The MERGE statement is one of the most advanced standardised SQL constructs, which is supported by DB2, HSQLDB, Oracle, SQL Server and Sybase (MySQL has the similar INSERT .. ON DUPLICATE KEY UPDATE construct)
    -									</p>
    -									<p>
    -										The point of the standard MERGE statement is to take a TARGET table, and merge (INSERT, UPDATE) data from a SOURCE table into it. DB2, Oracle, SQL Server and Sybase also allow for DELETING some data and for adding many additional clauses. With jOOQ {jooq-version}, only Oracle's MERGE extensions are supported. Here is an example:
    -									</p>
    -
    -</html><code-pair>
    -<sql>-- Check if there is already an author called 'Hitchcock'
    --- If there is, rename him to John. If there isn't add him.
    -MERGE INTO AUTHOR
    -USING (SELECT 1 FROM DUAL)
    -ON (LAST_NAME = 'Hitchcock')
    -WHEN MATCHED THEN UPDATE SET FIRST_NAME = 'John'
    -WHEN NOT MATCHED THEN INSERT (LAST_NAME) VALUES ('Hitchcock')</sql>
    -<java>create.mergeInto(AUTHOR)
    -      .using(create().selectOne())
    -      .on(AUTHOR.LAST_NAME.equal("Hitchcock"))
    -      .whenMatchedThenUpdate()
    -      .set(AUTHOR.FIRST_NAME, "John")
    -      .whenNotMatchedThenInsert(AUTHOR.LAST_NAME)
    -      .values("Hitchcock");
    -
    -</java></code-pair><html>
    -
    -		                            <h3>MERGE Statement (H2-specific syntax)</h3>
    -									<p>
    -									    The H2 database ships with a somewhat less powerful but a little more intuitive syntax for its own version of the MERGE statement. An example more or less equivalent to the previous one can be seen here:
    -									</p>
    -									
    -</html><code-pair>
    -<sql>-- Check if there is already an author called 'Hitchcock'
    --- If there is, rename him to John. If there isn't add him.
    -
    -MERGE INTO AUTHOR (FIRST_NAME, LAST_NAME)
    -KEY (LAST_NAME)
    -VALUES ('John', 'Hitchcock')</sql>
    -<java>create.mergeInto(AUTHOR,
    -                 AUTHOR.FIRST_NAME,
    -                 AUTHOR.LAST_NAME)
    -      .key(AUTHOR.LAST_NAME)
    -      .values("John", "Hitchcock")
    -      .execute();
    -</java></code-pair><html>
    -
    -		                            <p>
    -		                                This syntax can be fully simulated by jOOQ for all other databases that support the SQL standard. For more information about the H2 MERGE syntax, see the documentation here:<br/>
    -		                                <a href="http://www.h2database.com/html/grammar.html#merge">http://www.h2database.com/html/grammar.html#merge</a>
    -		                            </p>
    -								
    -									<h3>Typesafety of VALUES() for degrees up to {max-row-degree}</h3>
    -									<p>
    -										Much like the <reference id="insert-statement" title="INSERT statement"/>, the <code>MERGE</code> statement's <code>VALUES()</code> clause provides typesafety for degrees up to {max-row-degree}, in both the standard syntax variant as well as the H2 variant.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="truncate-statement">
    -								<title>The TRUNCATE statement</title>
    -								<content><html>
    -									<p>
    -										The TRUNCATE statement is the only DDL statement supported by jOOQ so far. It is popular in many databases when you want to bypass constraints for table truncation. Databases may behave differently, when a truncated table is referenced by other tables. For instance, they may fail if records from a truncated table are referenced, even with ON DELETE CASCADE clauses in place. Please, consider your database manual to learn more about its TRUNCATE implementation.
    -									</p>
    -									<p>
    -										The TRUNCATE syntax is trivial:
    -									</p>
    -
    -</html><code-pair>
    -	<sql>TRUNCATE TABLE AUTHOR;</sql>
    -	<java>create.truncate(AUTHOR).execute();</java>
    -</code-pair><html>
    -									
    -									<p>
    -										TRUNCATE is not supported by Ingres and SQLite. jOOQ will execute a DELETE FROM AUTHOR statement instead.
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="table-expressions">
    -						<title>Table expressions</title>
    -						<content><html>
    -							<p>
    -								The following sections explain the various types of table expressions supported by jOOQ
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="generated-tables">
    -								<title>Generated Tables</title>
    -								<content><html>
    -									<p>
    -										Most of the times, when thinking about a <reference id="table-expressions" title="table expression"/> you're probably thinking about an actual physical table in your database schema. If you're using jOOQ's <reference id="code-generation" title="code generator"/>, you will have all tables from your database schema available to you as type safe Java objects. You can then use these tables in SQL <reference id="from-clause" title="FROM clauses"/>, <reference id="join-clause" title="JOIN clauses"/> or in other <reference id="sql-statements" title="SQL statements"/>, just like any other table expression. An example is given here:
    -									</p>
    -							
    -</html><code-pair>
    -<sql><![CDATA[SELECT *
    -FROM AUTHOR -- Table expression AUTHOR
    -JOIN BOOK   -- Table expression BOOK
    -ON (AUTHOR.ID = BOOK.AUTHOR_ID)]]></sql>
    -<java><![CDATA[create.select()
    -      .from(AUTHOR) // Table expression AUTHOR
    -      .join(BOOK)   // Table expression BOOK
    -      .on(AUTHOR.ID.equal(BOOK.AUTHOR_ID));]]></java></code-pair><html>
    -							
    -									<p>
    -										The above example shows how AUTHOR and BOOK tables are joined in a <reference id="select-statement" title="SELECT statement"/>. It also shows how you can access physical <reference id="table-columns" title="table columns"/> by dereferencing the relevant Java attributes of their tables.
    -									</p>
    -									<p>
    -										See the manual's section about <reference id="codegen-tables" title="generated tables"/> for more information about what is really generated by the <reference id="code-generation" title="code generator"/>
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="aliased-tables">
    -								<title>Aliased Tables</title>
    -								<content><html>
    -									<p>
    -										The strength of jOOQ's <reference id="code-generation" title="code generator"/> becomes more obvious when you perform table aliasing and dereference fields from generated aliased tables. This can best be shown by example:
    -									</p>
    -
    -</html><code-pair><sql><![CDATA[-- Select all books by authors born after 1920,
    --- named "Paulo" from a catalogue:
    -
    -
    -
    -SELECT *
    -  FROM author a
    -  JOIN book b ON a.id = b.author_id
    - WHERE a.year_of_birth > 1920
    -   AND a.first_name = 'Paulo'
    - ORDER BY b.title]]></sql>
    -<java><![CDATA[// Declare your aliases before using them in SQL:
    -Author a = AUTHOR.as("a");
    -Book b = BOOK.as("b");
    -
    -// Use aliased tables in your statement
    -create.select()
    -      .from(a)
    -      .join(b).on(a.ID.equal(b.AUTHOR_ID))
    -      .where(a.YEAR_OF_BIRTH.greaterThan(1920)
    -      .and(a.FIRST_NAME.equal("Paulo")))
    -      .orderBy(b.TITLE);]]></java></code-pair><html>
    -								
    -									<p>
    -										As you can see in the above example, calling <code>as()</code> on generated tables returns an object of the same type as the table. This means that the resulting object can be used to dereference fields from the aliased table. This is quite powerful in terms of having your Java compiler check the syntax of your SQL statements. If you remove a column from a table, dereferencing that column from that table alias will cause compilation errors.
    -									</p>
    -									
    -									<h3>Dereferencing columns from other table expressions</h3>
    -									<p>
    -										Only few table expressions provide the SQL syntax typesafety as shown above, where generated tables are used. Most tables, however, expose their fields through <code>field()</code> methods:
    -									</p>
    -
    -</html><java><![CDATA[// "Type-unsafe" aliased table:
    -Table<?> a = AUTHOR.as("a");
    -
    -// Get fields from a:
    -Field<?> id = a.field("ID");
    -Field<?> firstName = a.field("FIRST_NAME");]]></java><html>
    -									
    -									<h3>Derived column lists</h3>
    -									<p>
    -										The SQL standard specifies how a table can be renamed / aliased in one go along with its columns. It references the term "derived column list" for the following syntax (as supported by Postgres, for instance):
    -									</p>
    -									
    -</html><sql><![CDATA[SELECT t.a, t.b
    -FROM (
    -  SELECT 1, 2
    -) t(a, b)]]></sql><html>
    -
    -									<p>
    -										This feature is useful in various use-cases where column names are not known in advance (but the table's degree is!). An example for this are <reference id="array-and-cursor-unnesting" title="unnested tables"/>, or the <reference id="values" title="VALUES() table constructor"/>:
    -									</p>
    -
    -</html><sql><![CDATA[-- Unnested tables
    -SELECT t.a, t.b
    -FROM unnest(my_table_function()) t(a, b)
    -
    --- VALUES() constructor
    -SELECT t.a, t.b
    -FROM VALUES(1, 2),(3, 4) t(a, b)]]></sql><html>
    -
    -									<p>
    -										Only few databases really support such a syntax, but fortunately, jOOQ can simulate it easily using <code>UNION ALL</code> and an empty dummy record specifying the new column names. The two statements are equivalent:
    -									</p>
    -
    -</html><sql><![CDATA[-- Using derived column lists
    -SELECT t.a, t.b
    -FROM (
    -  SELECT 1, 2
    -) t(a, b)
    -
    --- Using UNION ALL and a dummy record
    -SELECT t.a, t.b
    -FROM (
    -  SELECT null a, null b FROM DUAL WHERE 1 = 0
    -  UNION ALL
    -  SELECT 1, 2 FROM DUAL
    -) t]]></sql><html>
    -									<p>
    -										In jOOQ, you would simply specify a varargs list of column aliases as such:
    -									</p>
    -									
    -</html><java><![CDATA[// Unnested tables
    -create.select().from(unnest(myTableFunction()).as("t", "a", "b"));
    -
    -// VALUES() constructor
    -create.select().from(values(
    -  row(1, 2),
    -  row(3, 4)
    -).as("t", "a", "b"));]]></java>									
    -								</content>
    -							</section>
    -
    -							<section id="joined-tables">
    -								<title>Joined tables</title>
    -								<content><html>
    -									<p>
    -										The <reference id="join-clause" title="JOIN operators"/> that can be used in <reference id="select-statement" title="SQL SELECT statements"/> are the most powerful and best supported means of creating new <reference id="table-expressions" title="table expressions"/> in SQL. Informally, the following can be said:
    -									</p>
    -									
    -</html><text>A(colA1, ..., colAn) "join" B(colB1, ..., colBm) "produces" C(colA1, ..., colAn, colB1, ..., colBm)</text><html>
    -
    -									<p>
    -										SQL and relational algebra distinguish between at least the following JOIN types (upper-case: SQL, lower-case: relational algebra):
    -									</p>
    -									<ul>
    -										<li><strong>CROSS JOIN or cartesian product</strong>: The basic JOIN in SQL, producing a relational cross product, combining every record of table A with every record of table B. Note that cartesian products can also be produced by listing comma-separated <reference id="table-expressions" title="table expressions"/> in the <reference id="from-clause" title="FROM clause"/> of a <reference id="select-statement" title="SELECT statement"/></li>
    -										<li><strong>NATURAL JOIN</strong>: The basic JOIN in relational algebra, yet a rarely used JOIN in databases with everyday degree of normalisation. This JOIN type unconditionally equi-joins two tables by all columns with the same name (requiring foreign keys and primary keys to share the same name). Note that the JOIN columns will only figure once in the resulting <reference id="table-expressions" title="table expression"/>.</li>
    -										<li><strong>INNER JOIN or equi-join</strong>: This JOIN operation performs a cartesian product (CROSS JOIN) with a <reference id="conditional-expressions" title="filtering predicate"/> being applied to the resulting <reference id="table-expressions" title="table expression"/>. Most often, a <reference id="comparison-predicate" title="equal comparison predicate"/> comparing foreign keys and primary keys will be applied as a filter, but any other predicate will work, too.</li>
    -										<li><strong>OUTER JOIN</strong>: This JOIN operation performs a cartesian product (CROSS JOIN) with a <reference id="conditional-expressions" title="filtering predicate"/> being applied to the resulting <reference id="table-expressions" title="table expression"/>. Most often, a <reference id="comparison-predicate" title="equal comparison predicate"/> comparing foreign keys and primary keys will be applied as a filter, but any other predicate will work, too. Unlike the INNER JOIN, an OUTER JOIN will add "empty records" to the left (table A) or right (table B) or both tables, in case the conditional expression fails to produce a .</li>										
    -										<li><strong>semi-join</strong>: In SQL, this JOIN operation can only be expressed implicitly using <reference id="in-predicate" title="IN predicates"/> or <reference id="exists-predicate" title="EXISTS predicates"/>. The <reference id="table-expressions" title="table expression"/> resulting from a semi-join will only contain the left-hand side table A</li>										
    -										<li><strong>anti-join</strong>: In SQL, this JOIN operation can only be expressed implicitly using <reference id="in-predicate" title="NOT IN predicates"/> or <reference id="exists-predicate" title="NOT EXISTS predicates"/>. The <reference id="table-expressions" title="table expression"/> resulting from a semi-join will only contain the left-hand side table A</li>
    -										<li><strong>division</strong>: This JOIN operation is hard to express at all, in SQL. See the manual's chapter about <reference id="relational-division" title="relational division"/> for details on how jOOQ simulates this operation.</li>
    -									</ul>									
    -									<p>
    -										jOOQ supports all of these JOIN types (except semi-join and anti-join) directly on any <reference id="table-expressions" title="table expression"/>:
    -									</p>
    -									
    -</html><java><![CDATA[// jOOQ's relational division convenience syntax 
    -DivideByOnStep divideBy(Table<?> table)
    -
    -// Various overloaded INNER JOINs
    -TableOnStep join(TableLike<?>)
    -TableOnStep join(String)
    -TableOnStep join(String, Object...)
    -TableOnStep join(String, QueryPart...)
    -
    -// Various overloaded OUTER JOINs (supporting Oracle's partitioned OUTER JOIN)
    -// Overloading is similar to that of INNER JOIN
    -TablePartitionByStep leftOuterJoin(TableLike<?>)
    -TablePartitionByStep rightOuterJoin(TableLike<?>)
    -
    -// Various overloaded FULL OUTER JOINs
    -TableOnStep fullOuterJoin(TableLike<?>)
    -
    -// Various overloaded CROSS JOINs
    -Table<Record> crossJoin(TableLike<?>)
    -
    -// Various overloaded NATURAL JOINs
    -Table<Record> naturalJoin(TableLike<?>)
    -Table<Record> naturalLeftOuterJoin(TableLike<?>)
    -Table<Record> naturalRightOuterJoin(TableLike<?>)]]></java><html>							
    -
    -									<p>
    -										Note that most of jOOQ's JOIN operations give way to a similar DSL API hierarchy as previously seen in the manual's section about the <reference id="join-clause" title="JOIN clause"/>
    -									</p>		
    -								</html></content>
    -							</section>
    -
    -							<section id="values">
    -								<title>The VALUES() table constructor</title>
    -								<content><html>
    -									<p>
    -										Some databases allow for expressing in-memory temporary tables using a <code>VALUES()</code> constructor. This constructor usually works the same way as the <code>VALUES()</code> clause known from the <reference id="insert-statement" title="INSERT statement"/> or from the <reference id="merge-statement" title="MERGE statement"/>. With jOOQ, you can also use the <code>VALUES()</code> table constructor, to create tables that can be used in a <reference id="select-statement" title="SELECT statement's"/> <reference id="from-clause" title="FROM clause"/>:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[SELECT a, b
    -FROM VALUES(1, 'a'), 
    -           (2, 'b') t(a, b)]]></sql>
    -<java><![CDATA[create.select()
    -      .from(values(row(1, "a"),
    -                   row(2, "b")).as("t", "a", "b"));]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										Note, that it is usually quite useful to provide column aliases ("derived column lists") along with the table alias for the <code>VALUES()</code> constructor.
    -									</p>
    -									
    -									<p>
    -										The above statement is simulated by jOOQ for those databases that do not support the <code>VALUES()</code> constructor, natively (actual simulations may vary):
    -									</p>
    -									
    -</html><sql><![CDATA[-- If derived column expressions are supported:
    -SELECT a, b
    -FROM (
    -  SELECT 1, 'a' FROM DUAL UNION ALL
    -  SELECT 2, 'b' FROM DUAL
    -) t(a, b)
    -
    --- If derived column expressions are not supported:
    -SELECT a, b
    -FROM (
    -
    -  -- An empty dummy record is added to provide column names for the simulated derived column expression
    -  SELECT NULL a, NULL b FROM DUAL WHERE 1 = 0 UNION ALL
    -  
    -  -- Then, the actual VALUES() constructor is simulated
    -  SELECT 1,      'a'    FROM DUAL             UNION ALL
    -  SELECT 2,      'b'    FROM DUAL
    -) t
    -]]></sql>									
    -								</content>
    -							</section>
    -
    -							<section id="nested-selects">
    -								<title>Nested SELECTs</title>
    -								<content><html>
    -									<p>
    -										A <reference id="select-statement" title="SELECT statement"/> can appear almost anywhere a <reference id="table-expressions" title="table expression"/> can. Such a "nested SELECT" is often called a "derived table". Apart from many convenience methods accepting <reference class="org.jooq.Select"/> objects directly, a SELECT statement can always be transformed into a <reference class="org.jooq.Table"/> object using the asTable() method.
    -									</p>
    -									
    -									<h3>Example: Scalar subquery</h3>
    -									
    -</html><code-pair>
    -<sql>SELECT *
    -  FROM BOOK
    - WHERE BOOK.AUTHOR_ID = (
    - 		SELECT ID
    -          FROM AUTHOR
    -         WHERE LAST_NAME = 'Orwell')</sql>
    -<java>create.select()
    -      .from(BOOK)
    -      .where(BOOK.AUTHOR_ID.equal(create
    -             .select(AUTHOR.ID)
    -             .from(AUTHOR)
    -             .where(AUTHOR.LAST_NAME.equal("Orwell"))));</java>
    -</code-pair><html>
    -
    -									<h3>Example: Derived table</h3>
    -
    -</html><code-pair>
    -<sql><![CDATA[SELECT nested.* FROM (
    -      SELECT AUTHOR_ID, count(*) books
    -        FROM BOOK
    -    GROUP BY AUTHOR_ID
    -) nested
    -ORDER BY nested.books DESC
    -
    -
    -
    -]]></sql>
    -<java><![CDATA[Table<Record> nested =
    -    create.select(BOOK.AUTHOR_ID, count().as("books"))
    -          .from(BOOK)
    -          .groupBy(BOOK.AUTHOR_ID).asTable("nested");
    -
    -create.select(nested.getFields())
    -      .from(nested)
    -      .orderBy(nested.getField("books"));]]></java>
    -</code-pair><html>
    -
    -									<h3>Example: Correlated subquery</h3>
    -</html><code-pair>
    -<sql><![CDATA[  SELECT LAST_NAME, (
    -      SELECT COUNT(*)
    -       FROM BOOK
    -      WHERE BOOK.AUTHOR_ID = AUTHOR.ID) books
    -    FROM AUTHOR
    -ORDER BY books DESC
    -
    -
    -
    -]]></sql>
    -<java><![CDATA[// The type of books cannot be inferred from the Select<?>
    -Field<Object> books =
    -    create.selectCount()
    -          .from(BOOK)
    -          .where(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -          .asField("books");
    -create.select(AUTHOR.ID, books)
    -      .from(AUTHOR)
    -      .orderBy(books, AUTHOR.ID));]]></java>
    -</code-pair>									
    -								</content>
    -							</section>
    -
    -							<section id="pivot-tables">
    -								<title>The Oracle 11g PIVOT clause</title>
    -								<content><html>
    -									<p>
    -										If you are closely coupling your application to an Oracle database, you can take advantage of some Oracle-specific features, such as the PIVOT clause, used for statistical analyses. The formal syntax definition is as follows:
    -									</p>
    -									
    -</html><sql>-- SELECT ..
    -     FROM table PIVOT (aggregateFunction [, aggregateFunction] FOR column IN (expression [, expression]))
    ---  WHERE ..</sql><html>
    -		
    -									<p>
    -										The PIVOT clause is available from the <reference class="org.jooq.Table"/> type, as pivoting is done directly on a table. Currently, only Oracle's PIVOT clause is supported. Support for SQL Server's slightly different PIVOT clause will be added later. Also, jOOQ may simulate PIVOT for other dialects in the future.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="relational-division">
    -								<title>jOOQ's relational division syntax</title>
    -								<content><html>
    -									<p>
    -									    There is one operation in relational algebra that is not given a lot of attention, because it is rarely used in real-world applications. It is the relational division, the opposite operation of the cross product (or, relational multiplication). The following is an approximate definition of a relational division:
    -									</p>
    -
    -</html><config>Assume the following cross join / cartesian product
    -C = A × B
    -
    -Then it can be said that
    -A = C ÷ B
    -B = C ÷ A</config><html>
    -
    -									<p>
    -									   With jOOQ, you can simplify using relational divisions by using the following syntax:
    -									</p>
    -
    -</html><java>C.divideBy(B).on(C.ID.equal(B.C_ID)).returning(C.TEXT)</java><html>
    -
    -									<p>
    -										The above roughly translates to
    -									</p>
    -
    -</html><sql>SELECT DISTINCT C.TEXT FROM C "c1"
    -WHERE NOT EXISTS (
    -  SELECT 1 FROM B
    -  WHERE NOT EXISTS (
    -    SELECT 1 FROM C "c2"
    -    WHERE "c2".TEXT = "c1".TEXT
    -    AND "c2".ID = B.C_ID
    -  )
    -)</sql><html>
    -
    -									<p>
    -										Or in plain text: Find those TEXT values in C whose ID's correspond to all ID's in B. Note that from the above SQL statement, it is immediately clear that proper indexing is of the essence. Be sure to have indexes on all columns referenced from the on(...) and returning(...) clauses.
    -									</p>
    -
    -									<p>
    -										For more information about relational division and some nice, real-life examples, see
    -									</p>
    -
    -									<ul>
    -										<li><a href="http://en.wikipedia.org/wiki/Relational_algebra#Division" title="Wikipedia article on relational division">http://en.wikipedia.org/wiki/Relational_algebra#Division</a></li>
    -										<li><a href="http://www.simple-talk.com/sql/t-sql-programming/divided-we-stand-the-sql-of-relational-division/" title="A nice summary of what relational division is and how it is best implemented in SQL">http://www.simple-talk.com/sql/t-sql-programming/divided-we-stand-the-sql-of-relational-division/</a></li>
    -									</ul>
    -								</html></content>
    -
    -							</section>
    -
    -							<section id="array-and-cursor-unnesting">
    -								<title>Array and cursor unnesting</title>
    -								<content><html>
    -									<p>
    -										The SQL standard specifies how SQL databases should implement ARRAY and TABLE types, as well as CURSOR types. Put simply, a CURSOR is a pointer to any materialised <reference id="table-expressions" title="table expression"/>. Depending on the cursor's features, this table expression can be scrolled through in both directions, records can be locked, updated, removed, inserted, etc. Often, CURSOR types contain s, whereas ARRAY and TABLE types contain simple scalar values, although that is not a requirement
    -									</p>
    -									
    -									<p>
    -										ARRAY types in SQL are similar to Java's array types. They contain a "component type" or "element type" and a "dimension". This sort of ARRAY type is implemented in H2, HSQLDB and Postgres and supported by jOOQ as such. Oracle uses strongly-typed arrays, which means that an ARRAY type (VARRAY or TABLE type) has a name and possibly a maximum capacity associated with it.
    -									</p>
    -
    -									<h3>Unnesting array and cursor types</h3>									
    -									<p>
    -										The real power of these types become more obvious when you fetch them from <reference id="stored-procedures" title="stored procedures"/> to unnest them as <reference id="table-expressions" title="table expressions"/> and use them in your <reference id="from-clause" title="FROM clause"/>. An example is given here, where Oracle's DBMS_XPLAN package is used to fetch a cursor containing data about the most recent execution plan:
    -									</p>									
    -
    -</html><code-pair>
    -	<sql><![CDATA[SELECT *
    -FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(null, null, 'ALLSTATS'));]]></sql>
    -	<java><![CDATA[create.select()
    -      .from(table(DbmsXplan.displayCursor(null, null, "ALLSTATS"));]]></java>
    -</code-pair><html>
    -									<p>
    -										Note, in order to access the DbmsXplan package, you can use the <reference id="code-generation" title="code generator"/> to generate Oracle's SYS schema.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="dual">
    -								<title>The DUAL table</title>
    -								<content><html>
    -									<p>
    -										The SQL standard specifies that the <reference id="from-clause" title="FROM clause"/> is optional in a <reference id="select-statement" title="SELECT statement"/>. However, according to the standard, you may then no longer use some other clauses, such as the <reference id="where-clause" title="WHERE clause"/>. In the real world, there exist three types of databases:
    -									</p>
    -									<ul>
    -										<li>The ones that always require a <code>FROM</code> clause</li>
    -										<li>The ones that never require a <code>FROM</code> clause (and still allow a <code>WHERE</code> clause)</li>
    -										<li>The ones that correctly implement the SQL standard</li>
    -									</ul>
    -									<p>
    -										With jOOQ, you don't have to worry about the above distinction of SQL dialects. jOOQ never requires a <code>FROM</code> clause, but renders the necessary <code>"DUAL"</code> table, if needed. The following program shows how jOOQ renders <code>"DUAL"</code> tables
    -									</p>
    -
    -</html><code-pair>
    -	<sql><![CDATA[SELECT 1
    -SELECT 1 FROM "db_root"
    -SELECT 1 FROM "SYSIBM"."DUAL"
    -SELECT 1 FROM "SYSIBM"."SYSDUMMY1"
    -SELECT 1 FROM "RDB$DATABASE"
    -SELECT 1 FROM dual
    -SELECT 1 FROM "INFORMATION_SCHEMA"."SYSTEM_USERS"
    -SELECT 1 FROM (select 1 as dual) as dual
    -SELECT 1 FROM dual
    -SELECT 1 FROM dual
    -SELECT 1
    -SELECT 1
    -SELECT 1
    -SELECT 1 FROM [SYS].[DUMMY]
    -]]></sql>
    -	<java><![CDATA[DSL.using(SQLDialect.ASE      ).selectOne().getSQL();
    -DSL.using(SQLDialect.CUBRID   ).selectOne().getSQL();
    -DSL.using(SQLDialect.DB2      ).selectOne().getSQL();
    -DSL.using(SQLDialect.DERBY    ).selectOne().getSQL();
    -DSL.using(SQLDialect.FIREBIRD ).selectOne().getSQL();
    -DSL.using(SQLDialect.H2       ).selectOne().getSQL();
    -DSL.using(SQLDialect.HSQLDB   ).selectOne().getSQL();
    -DSL.using(SQLDialect.INGRES   ).selectOne().getSQL();
    -DSL.using(SQLDialect.MYSQL    ).selectOne().getSQL();
    -DSL.using(SQLDialect.ORACLE   ).selectOne().getSQL();
    -DSL.using(SQLDialect.POSTGRES ).selectOne().getSQL();
    -DSL.using(SQLDialect.SQLITE   ).selectOne().getSQL();
    -DSL.using(SQLDialect.SQLSERVER).selectOne().getSQL();
    -DSL.using(SQLDialect.SYBASE   ).selectOne().getSQL();]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										Note, that some databases (H2, MySQL) can normally do without <code>"DUAL"</code>. However, there exist some corner-cases with complex nested <code>SELECT</code> statements, where this will cause syntax errors (or parser bugs). To stay on the safe side, jOOQ will always render "dual" in those dialects.
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="column-expressions">
    -						<title>Column expressions</title>
    -						<content><html>
    -						    <p>
    -						    	Column expressions can be used in various SQL clauses in order to refer to one or several columns. This chapter explains how to form various types of column expressions with jOOQ. A particular type of column expression is given in the section about <reference id="row-value-expressions" title="tuples or row value expressions"/>, where an expression may have a degree of more than one.
    -						    </p>
    -						
    -						    <h3>Using column expressions in jOOQ</h3>
    -							<p>
    -								jOOQ allows you to freely create arbitrary column expressions using a fluent expression construction API. Many expressions can be formed as functions from <reference id="dsl" title="DSL methods"/>, other expressions can be formed based on a pre-existing column expression. For example:
    -							</p>
    -							
    -</html><java><![CDATA[// A regular table column expression
    -Field<String> field1 = BOOK.TITLE;
    -
    -// A function created from the DSL using "prefix" notation
    -Field<String> field2 = trim(BOOK.TITLE);
    -
    -// The same function created from a pre-existing Field using "postfix" notation
    -Field<String> field3 = BOOK.TITLE.trim();
    -
    -// More complex function with advanced DSL syntax
    -Field<String> field4 = listAgg(BOOK.TITLE)
    -                          .withinGroupOrderBy(BOOK.ID.asc())
    -                          .over().partitionBy(AUTHOR.ID);]]></java><html>
    -
    -							<p>
    -								In general, it is up to you whether you want to use the "prefix" notation or the "postfix" notation to create new column expressions based on existing ones. The "SQL way" would be to use the "prefix notation", with functions created from the <reference id="dsl" title="DSL"/>. The "Java way" or "object-oriented way" would be to use the "postfix" notation with functions created from <reference class="org.jooq.Field"/> objects. Both ways ultimately create the same query part, though.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="table-columns">
    -								<title>Table columns</title>
    -								<content><html>
    -									<p>
    -										Table columns are the most simple implementations of a <reference id="column-expressions" title="column expression"/>. They are mainly produced by jOOQ's <reference id="code-generation" title="code generator"/> and can be dereferenced from the generated tables. This manual is full of examples involving table columns. Another example is given in this query:
    -									</p>
    -
    -</html><code-pair>
    -	<sql><![CDATA[SELECT BOOK.ID, BOOK.TITLE
    -FROM BOOK
    -WHERE BOOK.TITLE LIKE '%SQL%'
    -ORDER BY BOOK.TITLE]]></sql>
    -	<java><![CDATA[create.select(BOOK.ID, BOOK.TITLE)
    -	  .from(BOOK)
    -	  .where(BOOK.TITLE.like("%SQL%"))
    -	  .orderBy(BOOK.TITLE);]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										Table columns implement a more specific interface called <reference class="org.jooq.TableField"/>, which is parameterised with its associated <code>&lt;R extends Record&gt;</code> record type.
    -									</p>
    -									<p>
    -										See the manual's section about <reference id="codegen-tables" title="generated tables"/> for more information about what is really generated by the <reference id="code-generation" title="code generator"/>
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="aliased-columns">
    -								<title>Aliased columns</title>
    -								<content><html>
    -									<p>
    -										Just like <reference id="aliased-tables" title="tables"/>, columns can be renamed using aliases. Here is an example:
    -									</p>
    -									
    -</html><sql>  SELECT FIRST_NAME || ' ' || LAST_NAME author, COUNT(*) books
    -    FROM AUTHOR
    -    JOIN BOOK ON AUTHOR.ID = AUTHOR_ID
    -GROUP BY FIRST_NAME, LAST_NAME;</sql><html>
    -
    -									<p>
    -										Here is how it's done with jOOQ:
    -									</p>
    -									
    -</html><java>Record record = create.select(
    -         concat(AUTHOR.FIRST_NAME, val(" "), AUTHOR.LAST_NAME).as("author"),
    -         count().as("books"))
    -      .from(AUTHOR)
    -      .join(BOOK).on(AUTHOR.ID.equal(BOOK.AUTHOR_ID))
    -      .groupBy(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME).fetchAny();</java><html>
    -      
    -      								<p>
    -      									When you alias Fields like above, you can access those Fields' values using the alias name:
    -  									</p>
    -  									
    -</html><java>System.out.println("Author : " + record.getValue("author"));
    -System.out.println("Books  : " + record.getValue("books"));</java>
    -									
    -								</content>
    -							</section>
    -
    -							<section id="cast-expressions">
    -								<title>Cast expressions</title>
    -								<content><html>
    -									<p>
    -										jOOQ's source code generator tries to find the most accurate type mapping between your vendor-specific data types and a matching Java type. For instance, most <code>VARCHAR</code>, <code>CHAR</code>, <code>CLOB</code> types will map to String. Most <code>BINARY</code>, <code>BYTEA</code>, <code>BLOB</code> types will map to <code>byte[]</code>. <code>NUMERIC</code> types will default to <reference class="java.math.BigDecimal"/>, but can also be any of <reference class="java.math.BigInteger"/>, <reference class="java.lang.Long"/>, <reference class="java.lang.Integer"/>, <reference class="java.lang.Short"/>, <reference class="java.lang.Byte"/>, <reference class="java.lang.Double"/>, <reference class="java.lang.Float"/>.
    -									</p>
    -									<p>
    -										Sometimes, this automatic mapping might not be what you needed, or jOOQ cannot know the type of a field. In those cases you would write SQL type <code>CAST</code> like this:
    -									</p>
    -									
    -</html><sql>-- Let's say, your Postgres column LAST_NAME was VARCHAR(30)
    --- Then you could do this:
    -SELECT CAST(AUTHOR.LAST_NAME AS TEXT) FROM DUAL</sql><html>
    -
    -									<p>
    -										in jOOQ, you can write something like that:
    -									</p>
    -									
    -</html><java>create.select(TAuthor.LAST_NAME.cast(PostgresDataType.TEXT));</java><html>
    -
    -									<p>
    -										The same thing can be achieved by casting a Field directly to String.class, as <code>TEXT</code> is the default data type in Postgres to map to Java's String
    -									</p>
    -									
    -</html><java>create.select(TAuthor.LAST_NAME.cast(String.class));</java><html>
    -		
    -									<p>
    -										The complete <code>CAST</code> API in <reference class="org.jooq.Field"/> consists of these three methods:
    -									</p>
    -									
    -</html><java><![CDATA[public interface Field<T> {
    -
    -    // Cast this field to the type of another field
    -    <Z> Field<Z> cast(Field<Z> field);
    -    
    -    // Cast this field to a given DataType
    -    <Z> Field<Z> cast(DataType<Z> type);
    -    
    -    // Cast this field to the default DataType for a given Class
    -    <Z> Field<Z> cast(Class<? extends Z> type);
    -}
    -
    -// And additional convenience methods in the DSL:
    -public class DSL {
    -    <T> Field<T> cast(Object object, Field<T> field);
    -    <T> Field<T> cast(Object object, DataType<T> type);
    -    <T> Field<T> cast(Object object, Class<? extends T> type);
    -    <T> Field<T> castNull(Field<T> field);
    -    <T> Field<T> castNull(DataType<T> type);
    -    <T> Field<T> castNull(Class<? extends T> type);
    -}]]></java>
    -								</content>
    -							</section>
    -
    -                            <section id="datatype-coercions">
    -                                <title>Datatype coercions</title>
    -                                <content><html>
    -                                    <p>
    -                                        A slightly different use case than <reference id="cast-expressions" title="CAST expressions"/> are data type coercions, which are not rendered through to generated SQL. Sometimes, you may want to pretend that a numeric value is really treated as a string value, for instance when binding a numeric <reference id="variable-binding" title="bind value"/>:
    -                                    </p>
    -                                    
    -</html><java><![CDATA[Field<String>  field1 = val(1).coerce(String.class);
    -Field<Integer> field2 = val("1").coerce(Integer.class);]]></java><html>
    -
    -                                    <p>
    -                                        In the above example, <code>field1</code> will be treated by jOOQ as a <code>Field&lt;String></code>, binding the numeric literal <code>1</code> as a <code>VARCHAR</code> value. The same applies to <code>field2</code>, whose string literal <code>"1"</code> will be bound as an <code>INTEGER</code> value.
    -                                    </p>
    -                                    
    -                                    <p>
    -                                        This technique is better than performing unsafe or rawtype casting in Java, if you cannot access the "right" field type from any given expression.
    -                                    </p>
    -                                </html></content>
    -                            </section>
    -
    -							<section id="arithmetic-expressions">
    -								<title>Arithmetic expressions</title>
    -								<content><html>
    -									<h3>Numeric arithmetic expressions</h3>
    -									<p>
    -										Your database can do the math for you. Arithmetic operations are implemented just like <reference id="numeric-functions" title="numeric functions"/>, with similar limitations as far as type restrictions are concerned. You can use any of these operators:
    -									</p>
    -
    -</html><config>  +  -  *  /  %</config><html>
    -
    -									<p>
    -										In order to express a SQL query like this one:
    -									</p>
    -									
    -</html><sql>SELECT ((1 + 2) * (5 - 3) / 2) % 10 FROM DUAL</sql><html>
    -							
    -									<p>
    -										You can write something like this in jOOQ:
    -									</p>
    -									
    -</html><java>create.select(val(1).add(2).mul(val(5).sub(3)).div(2).mod(10));</java><html>
    -                                    
    -                                    <h3>Operator precedence</h3>
    -                                    <p>
    -                                        jOOQ does not know any operator precedence (see also <reference id="boolean-operator-precedence" title="boolean operator precedence"/>). All operations are evaluated from left to right, as with any object-oriented API. The two following expressions are the same:
    -                                    </p>
    -
    -</html><java>   val(1).add(2) .mul(val(5).sub(3)) .div(2) .mod(10);
    -(((val(1).add(2)).mul(val(5).sub(3))).div(2)).mod(10);</java><html>
    -
    -									<h3>Datetime arithmetic expressions</h3>
    -									<p>
    -										jOOQ also supports the Oracle-style syntax for adding days to a Field&lt;? extends java.util.Date&gt; 
    -									</p>
    -
    -</html><code-pair>
    -	<sql>SELECT SYSDATE + 3 FROM DUAL;</sql>
    -	<java>create.select(currentTimestamp().add(3));</java>
    -</code-pair><html>
    -
    -									<p>
    -										For more advanced datetime arithmetic, use the DSL's timestampDiff() and dateDiff() functions, as well as jOOQ's built-in SQL standard <code>INTERVAL</code> data type support:
    -									</p>
    -									<ul>
    -										<li><code>INTERVAL YEAR TO MONTH</code>: <reference class="org.jooq.types.YearToMonth"/></li>
    -										<li><code>INTERVAL DAY TO SECOND</code>: <reference class="org.jooq.types.DayToSecond"/></li>
    -									</ul>
    -								</html></content>
    -							</section>
    -							
    -							<section id="string-concatenation">
    -								<title>String concatenation</title>
    -								<content><html>
    -									<p>
    -										The SQL standard defines the concatenation operator to be an infix operator, similar to the ones we've seen in the chapter about <reference id="arithmetic-expressions" title="arithmetic expressions"/>. This operator looks like this: <code>||</code>. Some other dialects do not support this operator, but expect a <code>concat()</code> function, instead. jOOQ renders the right operator / function, depending on your <reference id="sql-dialects" title="SQL dialect"/>:
    -									</p>
    -									
    -</html><code-pair>
    -<sql>SELECT 'A' || 'B' || 'C' FROM DUAL
    --- Or in MySQL:
    -SELECT concat('A', 'B', 'C') FROM DUAL</sql>
    -<java>&#160;
    -// For all RDBMS, including MySQL:
    -create.select(concat("A", "B", "C"));
    -</java>
    -</code-pair>								
    -								</content>
    -							</section>
    -
    -							<section id="general-functions">
    -								<title>General functions</title>
    -								<content><html>
    -									<p>
    -										There are a variety of general functions supported by jOOQ As discussed in the chapter about <reference id="sql-dialects" title="SQL dialects"/> functions are mostly simulated in your database, in case they are not natively supported.
    -									</p>
    -									<p>
    -										This is a list of general functions supported by jOOQ's <reference id="dsl" title="DSL"/>:
    -									</p>
    -									<ul>
    -										<li><strong><code>COALESCE</code></strong>: Get the first non-null value in a list of arguments.</li>
    -										<li><strong><code>NULLIF</code></strong>: Return <code>NULL</code> if both arguments are equal, or the first argument, otherwise.</li>
    -										<li><strong><code>NVL</code></strong>: Get the first non-null value among two arguments.</li>
    -										<li><strong><code>NVL2</code></strong>: Get the second argument if the first is null, or the third argument, otherwise.</li>
    -									</ul>
    -																
    -									<p>
    -										Please refer to the <reference class="org.jooq.impl.DSL" title="DSL Javadoc"/> for more details.
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -							<section id="numeric-functions">
    -								<title>Numeric functions</title>
    -								<content><html>
    -									<p>
    -										Math can be done efficiently in the database before returning results to your Java application. In addition to the <reference id="arithmetic-expressions" title="arithmetic expressions" /> discussed previously, jOOQ also supports a variety of numeric functions. As discussed in the chapter about <reference id="sql-dialects" title="SQL dialects"/> numeric functions (as any function type) are mostly simulated in your database, in case they are not natively supported.
    -									</p>
    -									<p>
    -										This is a list of numeric functions supported by jOOQ's <reference id="dsl" title="DSL"/>:
    -									</p>
    -									
    -									<ul>
    -										<li><strong><code>ABS</code></strong>: Get the absolute value of a value.</li>
    -										<li><strong><code>ACOS</code></strong>: Get the arc cosine of a value.</li>
    -										<li><strong><code>ASIN</code></strong>: Get the arc sine of a value.</li>
    -										<li><strong><code>ATAN</code></strong>: Get the arc tangent of a value.</li>
    -										<li><strong><code>ATAN2</code></strong>: Get the atan2 function of two values.</li>
    -										<li><strong><code>CEIL</code></strong>: Get the smalles integer value larger than a given numeric value.</li>
    -										<li><strong><code>COS</code></strong>: Get the cosine of a value.</li>
    -										<li><strong><code>COSH</code></strong>: Get the hyperbolic cosine of a value.</li>
    -										<li><strong><code>COT</code></strong>: Get the cotangent of a value.</li>
    -										<li><strong><code>COTH</code></strong>: Get the hyperbolic cotangent of a value.</li>
    -										<li><strong><code>DEG</code></strong>: Transform radians into degrees.</li>
    -										<li><strong><code>EXP</code></strong>: Calculate e^value.</li>
    -										<li><strong><code>FLOOR</code></strong>: Get the largest integer value smaller than a given numeric value.</li>
    -										<li><strong><code>GREATEST</code></strong>: Finds the greatest among all argument values (can also be used with non-numeric values).</li>
    -										<li><strong><code>LEAST</code></strong>: Finds the least among all argument values (can also be used with non-numeric values).</li>
    -										<li><strong><code>LN</code></strong>: Get the natural logarithm of a value.</li>
    -										<li><strong><code>LOG</code></strong>: Get the logarithm of a value given a base.</li>
    -										<li><strong><code>POWER</code></strong>: Calculate value^exponent.</li>
    -										<li><strong><code>RAD</code></strong>: Transform degrees into radians.</li>
    -										<li><strong><code>RAND</code></strong>: Get a random number.</li>
    -										<li><strong><code>ROUND</code></strong>: Rounds a value to the nearest integer.</li>
    -										<li><strong><code>SIGN</code></strong>: Get the sign of a value (-1, 0, 1).</li>
    -										<li><strong><code>SIN</code></strong>: Get the sine of a value.</li>
    -										<li><strong><code>SINH</code></strong>: Get the hyperbolic sine of a value.</li>
    -										<li><strong><code>SQRT</code></strong>: Calculate the square root of a value.</li>
    -										<li><strong><code>TAN</code></strong>: Get the tangent of a value.</li>
    -										<li><strong><code>TANH</code></strong>: Get the hyperbolic tangent of a value.</li>
    -										<li><strong><code>TRUNC</code></strong>: Truncate the decimals off a given value.</li>
    -									</ul>
    -									
    -									<p>
    -										Please refer to the <reference class="org.jooq.impl.DSL" title="DSL Javadoc"/> for more details.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="bitwise-functions">
    -								<title>Bitwise functions</title>
    -								<content><html>
    -									<p>
    -										Interestingly, bitwise functions and bitwise arithmetic is not very popular among SQL databases. Most databases only support a few bitwise operations, while others ship with the full set of operators. jOOQ's API includes most bitwise operations as listed below. In order to avoid ambiguities with <reference id="conditional-expressions" title="conditional operators"/>, all bitwise functions are prefixed with "bit"
    -									</p>
    -									<ul>
    -										<li><strong><code>BIT_COUNT</code></strong>: Count the number of bits set to 1 in a number</li>
    -										<li><strong><code>BIT_AND</code></strong>: Set only those bits that are set in two numbers</li>
    -										<li><strong><code>BIT_OR</code></strong>: Set all bits that are set in at least one number</li>
    -										<li><strong><code>BIT_NAND</code></strong>: Set only those bits that are set in two numbers, and inverse the result</li>
    -										<li><strong><code>BIT_NOR</code></strong>: Set all bits that are set in at least one number, and inverse the result</li>
    -										<li><strong><code>BIT_NOT</code></strong>: Inverse the bits in a number</li>
    -										<li><strong><code>BIT_XOR</code></strong>: Set all bits that are set in at exactly one number</li>
    -										<li><strong><code>BIT_XNOR</code></strong>: Set all bits that are set in at exactly one number, and inverse the result</li>
    -										<li><strong><code>SHL</code></strong>: Shift bits to the left</li>
    -										<li><strong><code>SHR</code></strong>: Shift bits to the right</li>
    -									</ul>
    -									
    -									<h3>Some background about bitwise operation simulation</h3>
    -									<p>
    -										As stated before, not all databases support all of these bitwise operations. jOOQ simulates them wherever this is possible. More details can be seen in this blog post: <br/>
    -										<a href="http://blog.jooq.org/2011/10/30/the-comprehensive-sql-bitwise-operations-compatibility-list/">http://blog.jooq.org/2011/10/30/the-comprehensive-sql-bitwise-operations-compatibility-list/</a>
    -									</p>
    -									
    -								</html></content>
    -							</section>
    -
    -							<section id="string-functions">
    -								<title>String functions</title>
    -								<content><html>
    -									<p>
    -										String formatting can be done efficiently in the database before returning results to your Java application. As discussed in the chapter about <reference id="sql-dialects" title="SQL dialects"/> string functions (as any function type) are mostly simulated in your database, in case they are not natively supported.
    -									</p>
    -									<p>
    -										This is a list of numeric functions supported by jOOQ's <reference id="dsl" title="DSL"/>:
    -									</p>
    -									
    -									<ul>
    -										<li><strong><code>ASCII</code></strong>: Get the <code>ASCII</code> code of a character.</li>
    -										<li><strong><code>BIT_LENGTH</code></strong>: Get the length of a string in bits.</li>
    -										<li><strong><code>CHAR_LENGTH</code></strong>: Get the length of a string in characters.</li>
    -										<li><strong><code>CONCAT</code></strong>: Concatenate several strings.</li>
    -										<li><strong><code>ESCAPE</code></strong>: Escape a string for use with the <reference id="like-predicate" title="LIKE predicate"/>.</li>
    -										<li><strong><code>LENGTH</code></strong>: Get the length of a string.</li>
    -										<li><strong><code>LOWER</code></strong>: Get a string in lower case letters.</li>
    -										<li><strong><code>LPAD</code></strong>: Pad a string on the left side.</li>
    -										<li><strong><code>LTRIM</code></strong>: Trim a string on the left side.</li>
    -										<li><strong><code>OCTET_LENGTH</code></strong>: Get the length of a string in octets.</li>
    -										<li><strong><code>POSITION</code></strong>: Find a string within another string.</li>
    -										<li><strong><code>REPEAT</code></strong>: Repeat a string a given number of times.</li>
    -										<li><strong><code>REPLACE</code></strong>: Replace a string within another string.</li>
    -										<li><strong><code>RPAD</code></strong>: Pad a string on the right side.</li>
    -										<li><strong><code>RTRIM</code></strong>: Trim a string on the right side.</li>
    -										<li><strong><code>SUBSTRING</code></strong>: Get a substring of a string.</li>
    -										<li><strong><code>TRIM</code></strong>: Trim a string on both sides.</li>
    -										<li><strong><code>UPPER</code></strong>: Get a string in upper case letters.</li>
    -									</ul>
    -									
    -									<p>
    -										Please refer to the <reference class="org.jooq.impl.DSL" title="DSL Javadoc"/> for more details.
    -									</p>
    -									
    -									<h3>Regular expressions, <code>REGEXP</code>, <code>REGEXP_LIKE</code>, etc.</h3>
    -									<p>
    -										Various databases have some means of searching through columns using regular expressions if the <reference id="like-predicate" title="LIKE predicate"/> does not provide sufficient pattern matching power. While there are many different functions and operators in the various databases, jOOQ settled for the SQL:2008 standard <code>REGEX_LIKE</code> operator. Being an operator (and not a function), you should use the corresponding method on <reference class="org.jooq.Field"/>:
    -									</p>
    -									
    -</html><java><![CDATA[create.selectFrom(BOOK).where(TITLE.likeRegex("^.*SQL.*$"));]]></java><html>
    -
    -									<p>
    -										Note that the SQL standard specifies that patterns should follow the XQuery standards. In the real world, the POSIX regular expression standard is the most used one, some use Java regular expressions, and only a few ones use Perl regular expressions. jOOQ does not make any assumptions about regular expression syntax. For cross-database compatibility, please read the relevant database manuals carefully, to learn about the appropriate syntax. Please refer to the <reference class="org.jooq.impl.DSL" title="DSL Javadoc"/> for more details.
    -									</p>
    -								</html></content>
    -								<!-- don't forget regex here! -->
    -							</section>
    -
    -							<section id="date-and-time-functions">
    -								<title>Date and time functions</title>
    -								<content><html>
    -									<p>
    -										This is a list of date and time functions supported by jOOQ's <reference id="dsl" title="DSL"/>:
    -									</p>
    -									
    -									<ul>
    -										<li><strong><code>CURRENT_DATE</code></strong>: Get current date as a <code>DATE</code> object.</li>
    -										<li><strong><code>CURRENT_TIME</code></strong>: Get current time as a <code>TIME</code> object.</li>
    -										<li><strong><code>CURRENT_TIMESTAMP</code></strong>: Get current date as a <code>TIMESTAMP</code> object.</li>
    -										<li><strong><code>DATE_ADD</code></strong>: Add a number of days or an interval to a date.</li>
    -										<li><strong><code>DATE_DIFF</code></strong>: Get the difference in days between two dates.</li>
    -										<li><strong><code>TIMESTAMP_ADD</code></strong>: Add a number of days or an interval to a timestamp.</li>
    -										<li><strong><code>TIMESTAMP_DIFF</code></strong>: Get the difference as an <code>INTERVAL DAY TO SECOND</code> between two dates.</li>
    -									</ul>
    -									
    -									<h3>Intervals in jOOQ</h3>
    -									<p>
    -										jOOQ fills a gap opened by JDBC, which neglects an important SQL data type as defined by the SQL standards: <code>INTERVAL</code> types. See the manual's section about <reference id="data-types-intervals" title="INTERVAL data types"/> for more details.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="system-functions">
    -								<title>System functions</title>
    -								<content><html>
    -									<p>
    -										This is a list of system functions supported by jOOQ's <reference id="dsl" title="DSL"/>:
    -									</p>
    -									<ul>
    -										<li><strong><code>CURRENT_USER</code></strong>: Get current user.</li>
    -									</ul>
    -								</html></content>
    -							</section>
    -
    -							<section id="aggregate-functions">
    -								<title>Aggregate functions</title>
    -								<content><html>
    -									<p>
    -										Aggregate functions work just like functions, even if they have a slightly different semantics. Here are some example aggregate functions from the <reference id="dsl" title="DSL"/>:
    -									</p>
    -
    -</html><java><![CDATA[// Every-day, SQL standard aggregate functions
    -AggregateFunction<Integer>    count();
    -AggregateFunction<Integer>    count(Field<?> field);
    -AggregateFunction<T>          max  (Field<T> field);
    -AggregateFunction<T>          min  (Field<T> field);
    -AggregateFunction<BigDecimal> sum  (Field<? extends Number> field);
    -AggregateFunction<BigDecimal> avg  (Field<? extends Number> field);
    -
    -// DISTINCT keyword in aggregate functions
    -AggregateFunction<Integer>    countDistinct(Field<?> field);
    -AggregateFunction<T>          maxDistinct  (Field<T> field);
    -AggregateFunction<T>          minDistinct  (Field<T> field);
    -AggregateFunction<BigDecimal> sumDistinct  (Field<? extends Number> field);
    -AggregateFunction<BigDecimal> avgDistinct  (Field<? extends Number> field);
    -
    -// String aggregate functions
    -AggregateFunction<String> groupConcat        (Field<?> field);
    -AggregateFunction<String> groupConcatDistinct(Field<?> field);
    -OrderedAggregateFunction<String> listAgg(Field<?> field);
    -OrderedAggregateFunction<String> listAgg(Field<?> field, String separator);
    -
    -// Statistical functions
    -AggregateFunction<BigDecimal> median    (Field<? extends Number> field);
    -AggregateFunction<BigDecimal> stddevPop (Field<? extends Number> field);
    -AggregateFunction<BigDecimal> stddevSamp(Field<? extends Number> field);
    -AggregateFunction<BigDecimal> varPop    (Field<? extends Number> field);
    -AggregateFunction<BigDecimal> varSamp   (Field<? extends Number> field);
    -
    -// Linear regression functions
    -AggregateFunction<BigDecimal> regrAvgX     (Field<? extends Number> y, Field<? extends Number> x);
    -AggregateFunction<BigDecimal> regrAvgY     (Field<? extends Number> y, Field<? extends Number> x);
    -AggregateFunction<BigDecimal> regrCount    (Field<? extends Number> y, Field<? extends Number> x);
    -AggregateFunction<BigDecimal> regrIntercept(Field<? extends Number> y, Field<? extends Number> x);
    -AggregateFunction<BigDecimal> regrR2       (Field<? extends Number> y, Field<? extends Number> x);
    -AggregateFunction<BigDecimal> regrSlope    (Field<? extends Number> y, Field<? extends Number> x);
    -AggregateFunction<BigDecimal> regrSXX      (Field<? extends Number> y, Field<? extends Number> x);
    -AggregateFunction<BigDecimal> regrSXY      (Field<? extends Number> y, Field<? extends Number> x);
    -AggregateFunction<BigDecimal> regrSYY      (Field<? extends Number> y, Field<? extends Number> x);]]></java><html>
    -
    -									<p>
    -										Here's an example, counting the number of books any author has written:
    -									</p>
    -
    -</html><code-pair>
    -<sql>SELECT AUTHOR_ID, COUNT(*)
    -FROM BOOK
    -GROUP BY AUTHOR_ID</sql>
    -<java>create.select(BOOK.AUTHOR_ID, count())
    -      .from(BOOK)
    -      .groupBy(BOOK.AUTHOR_ID);</java>
    -</code-pair><html>
    -
    -									<p>
    -										Aggregate functions have strong limitations about when they may be used and when not. For instance, you can use aggregate functions in scalar queries. Typically, this means you only select aggregate functions, no <reference id="table-columns" title="regular columns"/> or other <reference id="column-expressions" title="column expressions"/>. Another use case is to use them along with a <reference id="group-by-clause" title="GROUP BY clause"/> as seen in the previous example. Note, that jOOQ does not check whether your using of aggregate functions is correct according to the SQL standards, or according to your database's behaviour.
    -									</p>
    -
    -		                            <h3>Ordered aggregate functions</h3>
    -		                            <p>
    -		                            	Oracle and some other databases support "ordered aggregate functions". This means you can provide an <code>ORDER BY</code> clause to an aggregate function, which will be taken into consideration when aggregating. The best example for this is Oracle's <code>LISTAGG()</code> (also known as <code>GROUP_CONCAT</code> in other <reference id="sql-dialects" title="SQL dialects"/>). The following query groups by authors and concatenates their books' titles
    -		                           	</p>
    -</html><code-pair>
    -<sql>SELECT   LISTAGG(TITLE, ', ')
    -         WITHIN GROUP (ORDER BY TITLE)
    -FROM     BOOK
    -GROUP BY AUTHOR_ID</sql>
    -<java>create.select(listAgg(BOOK.TITLE, ", ")
    -      .withinGroupOrderBy(BOOK.TITLE))
    -      .from(BOOK)
    -      .groupBy(BOOK.AUTHOR_ID)</java>
    -</code-pair><html>
    -
    -									<p>
    -										The above query might yield:
    -									</p>
    -
    -</html><text>+---------------------+
    -| LISTAGG             |
    -+---------------------+
    -| 1984, Animal Farm   |
    -| O Alquimista, Brida |
    -+---------------------+</text><html>
    -
    -									<h3>FIRST and LAST: Oracle's "ranked" aggregate functions</h3>
    -									<p>
    -										Oracle allows for restricting aggregate functions using the <code>KEEP()</code> clause, which is supported by jOOQ. In Oracle, some aggregate functions (<code>MIN</code>, <code>MAX</code>, <code>SUM</code>, <code>AVG</code>, <code>COUNT</code>, <code>VARIANCE</code>, or <code>STDDEV</code>) can be restricted by this clause, hence <reference class="org.jooq.AggregateFunction"/> also allows for specifying it. Here are a couple of examples using this clause:
    -									</p>
    -
    -</html><code-pair>
    -<sql>SUM(BOOK.AMOUNT_SOLD)
    -  KEEP(DENSE_RANK FIRST ORDER BY BOOK.AUTHOR_ID)</sql>
    -<java>sum(BOOK.AMOUNT_SOLD)
    -  .keepDenseRankFirstOrderBy(BOOK.AUTHOR_ID)</java>
    -</code-pair><html>
    -
    -									<h3>User-defined aggregate functions</h3>
    -									<p>
    -										jOOQ also supports using your own user-defined aggregate functions. See the manual's section about <reference id="user-defined-aggregate-functions" title="user-defined aggregate functions"/> for more details.
    -									</p>
    -
    -									<h3>Window functions / analytical functions</h3>
    -									<p>
    -										In those databases that support <reference id="window-functions" title="window functions"/>, jOOQ's <reference class="org.jooq.AggregateFunction"/> can be transformed into a window function / analytical function by calling <code>over()</code> on it. See the manual's section about <reference id="window-functions" title="window functions"/> for more details.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="window-functions">
    -								<title>Window functions</title>
    -								<content><html>
    -									<p>
    -										Most major RDBMS support the concept of window functions. jOOQ knows of implementations in DB2, Oracle, Postgres, SQL Server, and Sybase SQL Anywhere, and supports most of their specific syntaxes. Note, that H2 and HSQLDB have implemented <code>ROW_NUMBER()</code> functions, without true windowing support.
    -									</p>
    -									<p>
    -										As previously discussed, any <reference class="org.jooq.AggregateFunction"/> can be transformed into a window function using the <code>over()</code> method. See the chapter about <reference id="aggregate-functions" title="aggregate functions"/> for details. In addition to those, there are also some more window functions supported by jOOQ, as declared in the <reference id="dsl" title="DSL"/>:
    -									</p>
    -
    -</html><java><![CDATA[// Ranking functions
    -    WindowOverStep<Integer>    rowNumber();
    -    WindowOverStep<Integer>    rank();
    -    WindowOverStep<Integer>    denseRank();
    -    WindowOverStep<BigDecimal> percentRank();
    -    
    -// Windowing functions
    -<T> WindowIgnoreNullsStep<T>   firstValue(Field<T> field);
    -<T> WindowIgnoreNullsStep<T>   lastValue(Field<T> field)
    -<T> WindowIgnoreNullsStep<T>   lead(Field<T> field);
    -<T> WindowIgnoreNullsStep<T>   lead(Field<T> field, int offset);
    -<T> WindowIgnoreNullsStep<T>   lead(Field<T> field, int offset, T defaultValue);
    -<T> WindowIgnoreNullsStep<T>   lead(Field<T> field, int offset, Field<T> defaultValue);
    -<T> WindowIgnoreNullsStep<T>   lag(Field<T> field);
    -<T> WindowIgnoreNullsStep<T>   lag(Field<T> field, int offset);
    -<T> WindowIgnoreNullsStep<T>   lag(Field<T> field, int offset, T defaultValue);
    -<T> WindowIgnoreNullsStep<T>   lag(Field<T> field, int offset, Field<T> defaultValue);
    -
    -// Statistical functions
    -    WindowOverStep<BigDecimal> cumeDist();
    -    WindowOverStep<Integer>    ntile(int number);]]></java><html>	
    -    								
    -    								<p>
    -    									SQL distinguishes between various window function types (e.g. "ranking functions"). Depending on the function, SQL expects mandatory <code>PARTITION BY</code> or <code>ORDER BY</code> clauses within the <code>OVER()</code> clause. jOOQ does not enforce those rules for two reasons:
    -    								</p>
    -    								<ul>
    -    									<li>Your JDBC driver or database already checks SQL syntax semantics</li>
    -    									<li>Not all databases behave correctly according to the SQL standard</li>
    -    								</ul>
    -    								<p>
    -    									If possible, however, jOOQ tries to render missing clauses for you, if a given <reference id="sql-dialects" title="SQL dialect"/> is more restrictive.
    -    								</p>
    -    								<h3>Some examples</h3>
    -									<p>
    -										 Here are some simple examples of window functions with jOOQ:
    -									</p>
    -									
    -</html><code-pair>
    -<sql>-- Sample uses of ROW_NUMBER()
    -ROW_NUMBER() OVER()
    -ROW_NUMBER() OVER(PARTITION BY 1)
    -ROW_NUMBER() OVER(ORDER BY BOOK.ID)
    -ROW_NUMBER() OVER(PARTITION BY BOOK.AUTHOR_ID ORDER BY BOOK.ID)
    -                  
    --- Sample uses of FIRST_VALUE
    -FIRST_VALUE(BOOK.ID) OVER()
    -FIRST_VALUE(BOOK.ID IGNORE NULLS) OVER()
    -FIRST_VALUE(BOOK.ID RESPECT NULLS) OVER()
    -</sql>
    -<java>// Sample uses of rowNumber()
    -rowNumber().over()
    -rowNumber().over().partitionByOne()
    -rowNumber().over().partitionBy(BOOK.AUTHOR_ID)
    -rowNumber().over().partitionBy(BOOK.AUTHOR_ID).orderBy(BOOK.ID)
    -                  
    -// Sample uses of firstValue()
    -firstValue(BOOK.ID).over()
    -firstValue(BOOK.ID).ignoreNulls().over()
    -firstValue(BOOK.ID).respectNulls().over()
    -</java>
    -</code-pair><html>
    -    								
    -									<h3>An advanced window function example</h3>
    -									<p>
    -										Window functions can be used for things like calculating a "running total". The following example fetches transactions and the running total for every transaction going back to the beginning of the transaction table (ordered by booked_at). Window functions are accessible from the previously seen <reference class="org.jooq.AggregateFunction"/> type using the <code>over()</code> method:
    -									</p>
    -
    -</html><code-pair>
    -<sql>SELECT booked_at, amount,
    -   SUM(amount) OVER (PARTITION BY 1
    -                     ORDER BY booked_at
    -                     ROWS BETWEEN UNBOUNDED PRECEDING
    -                     AND CURRENT ROW) AS total
    -  FROM transactions</sql>
    -<java>create.select(t.BOOKED_AT, t.AMOUNT,
    -         sum(t.AMOUNT).over().partitionByOne()
    -                      .orderBy(t.BOOKED_AT)
    -                      .rowsBetweenUnboundedPreceding()
    -                      .andCurrentRow().as("total")
    -      .from(TRANSACTIONS.as("t"));</java>
    -</code-pair><html>
    -
    -
    -									<h3>Window functions created from ordered aggregate functions</h3>
    -									<p>
    -										In the previous chapter about <reference id="aggregate-functions" title="aggregate functions"/>, we have seen the concept of "ordered aggregate functions", such as Oracle's <code>LISTAGG()</code>. These functions have a window function / analytical function variant, as well. For example:
    -									</p>
    -									
    -</html><code-pair>
    -<sql>SELECT   LISTAGG(TITLE, ', ')
    -         WITHIN GROUP (ORDER BY TITLE)
    -         OVER (PARTITION BY BOOK.AUTHOR_ID)
    -FROM     BOOK</sql>
    -<java>create.select(listAgg(BOOK.TITLE, ", ")
    -      .withinGroupOrderBy(BOOK.TITLE)
    -      .over().partitionBy(BOOK.AUTHOR_ID))
    -      .from(BOOK)</java>
    -</code-pair><html>
    -
    -									<h3>Window functions created from Oracle's <code>FIRST</code> and <code>LAST</code> aggregate functions</h3>
    -									<p>
    -										In the previous chapter about <reference id="aggregate-functions" title="aggregate functions"/>, we have seen the concept of "<code>FIRST</code> and <code>LAST</code> aggregate functions". These functions have a window function / analytical function variant, as well. For example:
    -									</p>
    -
    -</html><code-pair>
    -<sql>SUM(BOOK.AMOUNT_SOLD)
    -  KEEP(DENSE_RANK FIRST ORDER BY BOOK.AUTHOR_ID)
    -  OVER(PARTITION BY 1)</sql>
    -<java>sum(BOOK.AMOUNT_SOLD)
    -  .keepDenseRankFirstOrderBy(BOOK.AUTHOR_ID)
    -  .over().partitionByOne()</java>
    -</code-pair><html>
    -
    -
    -									<h3>Window functions created from user-defined aggregate functions</h3>
    -									<p>
    -										User-defined aggregate functions also implement <reference class="org.jooq.AggregateFunction"/>, hence they can also be transformed into window functions using <code>over()</code>. This is supported by Oracle in particular. See the manual's section about <reference id="user-defined-aggregate-functions" title="user-defined aggregate functions"/> for more details.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="grouping-functions">
    -								<title>Grouping functions</title>
    -								<content><html>
    -									<h3>ROLLUP() explained in SQL</h3>
    -									<p>
    -										The SQL standard defines special functions that can be used in the <reference id="group-by-clause" title="GROUP BY clause"/>: the grouping functions. These functions can be used to generate several groupings in a single clause. This can best be explained in SQL. Let's take <code>ROLLUP()</code> for instance:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- ROLLUP() with one argument 
    -SELECT AUTHOR_ID, COUNT(*)
    -FROM BOOK
    -GROUP BY ROLLUP(AUTHOR_ID)
    -
    -
    --- ROLLUP() with two arguments
    -SELECT AUTHOR_ID, PUBLISHED_IN, COUNT(*)
    -FROM BOOK
    -GROUP BY ROLLUP(AUTHOR_ID, PUBLISHED_IN)
    -
    -
    -
    -
    -
    -
    -
    -]]></sql>
    -<sql><![CDATA[-- The same query using UNION ALL:
    -  SELECT AUTHOR_ID, COUNT(*) FROM BOOK GROUP BY (AUTHOR_ID)
    -UNION ALL
    -  SELECT NULL, COUNT(*) FROM BOOK GROUP BY ()
    -ORDER BY 1 NULLS LAST
    -
    --- The same query using UNION ALL:
    -  SELECT AUTHOR_ID, PUBLISHED_IN, COUNT(*) 
    -  FROM BOOK GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -UNION ALL
    -  SELECT AUTHOR_ID, NULL, COUNT(*) 
    -  FROM BOOK GROUP BY (AUTHOR_ID)
    -UNION ALL
    -  SELECT NULL, NULL, COUNT(*) 
    -  FROM BOOK GROUP BY ()
    -ORDER BY 1 NULLS LAST, 2 NULLS LAST
    -]]></sql>
    -</code-pair><html>
    -
    -									<p>
    -										In English, the <code>ROLLUP()</code> grouping function provides <code>N+1</code> groupings, when <code>N</code> is the number of arguments to the <code>ROLLUP()</code> function. Each grouping has an additional group field from the <code>ROLLUP()</code> argument field list. The results of the second query might look something like this:
    -									</p>
    -									
    -</html><text><![CDATA[+-----------+--------------+----------+
    -| AUTHOR_ID | PUBLISHED_IN | COUNT(*) |
    -+-----------+--------------+----------+
    -|         1 |         1945 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -|         1 |         1948 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -|         1 |         NULL |        2 | <- GROUP BY (AUTHOR_ID)
    -|         2 |         1988 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -|         2 |         1990 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -|         2 |         NULL |        2 | <- GROUP BY (AUTHOR_ID)
    -|      NULL |         NULL |        4 | <- GROUP BY ()
    -+-----------+--------------+----------+]]></text><html>
    -
    -									<h3>CUBE() explained in SQL</h3>
    -									<p>
    -										<code>CUBE()</code> is different from <code>ROLLUP()</code> in the way that it doesn't just create <code>N+1</code> groupings, it creates all <code>2^N</code> possible combinations between all group fields in the <code>CUBE()</code> function argument list. Let's re-consider our second query from before:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- CUBE() with two arguments
    -SELECT AUTHOR_ID, PUBLISHED_IN, COUNT(*)
    -FROM BOOK
    -GROUP BY CUBE(AUTHOR_ID, PUBLISHED_IN)
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -]]></sql>
    -<sql><![CDATA[-- The same query using UNION ALL:
    -  SELECT AUTHOR_ID, PUBLISHED_IN, COUNT(*) 
    -  FROM BOOK GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -UNION ALL
    -  SELECT AUTHOR_ID, NULL, COUNT(*) 
    -  FROM BOOK GROUP BY (AUTHOR_ID)
    -UNION ALL
    -  SELECT NULL, PUBLISHED_IN, COUNT(*) 
    -  FROM BOOK GROUP BY (PUBLISHED_IN)
    -UNION ALL
    -  SELECT NULL, NULL, COUNT(*) 
    -  FROM BOOK GROUP BY ()
    -ORDER BY 1 NULLS FIRST, 2 NULLS FIRST
    -]]></sql>
    -</code-pair><html>
    -
    -									<p>
    -										The results would then hold:
    -									</p>
    -
    -</html><text><![CDATA[+-----------+--------------+----------+
    -| AUTHOR_ID | PUBLISHED_IN | COUNT(*) |
    -+-----------+--------------+----------+
    -|      NULL |         NULL |        2 | <- GROUP BY ()
    -|      NULL |         1945 |        1 | <- GROUP BY (PUBLISHED_IN)
    -|      NULL |         1948 |        1 | <- GROUP BY (PUBLISHED_IN)
    -|      NULL |         1988 |        1 | <- GROUP BY (PUBLISHED_IN)
    -|      NULL |         1990 |        1 | <- GROUP BY (PUBLISHED_IN)
    -|         1 |         NULL |        2 | <- GROUP BY (AUTHOR_ID)
    -|         1 |         1945 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -|         1 |         1948 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -|         2 |         NULL |        2 | <- GROUP BY (AUTHOR_ID)
    -|         2 |         1988 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -|         2 |         1990 |        1 | <- GROUP BY (AUTHOR_ID, PUBLISHED_IN)
    -+-----------+--------------+----------+]]></text><html>
    -
    -									<h3>GROUPING SETS()</h3>
    -									<p>
    -										<code>GROUPING SETS()</code> are the generalised way to create multiple groupings. From our previous examples 
    -									</p>
    -									<ul>
    -										<li><code>ROLLUP(AUTHOR_ID, PUBLISHED_IN)</code> corresponds to <code>GROUPING SETS((AUTHOR_ID, PUBLISHED_IN), (AUTHOR_ID), ())</code></li>
    -										<li><code>CUBE(AUTHOR_ID, PUBLISHED_IN)</code> corresponds to <code>GROUPING SETS((AUTHOR_ID, PUBLISHED_IN), (AUTHOR_ID), (PUBLISHED_IN), ())</code></li>
    -									</ul>
    -									<p>
    -										This is nicely explained in the SQL Server manual pages about <code>GROUPING SETS()</code> and other grouping functions:<br/>
    -										<a href="http://msdn.microsoft.com/en-us/library/bb510427(v=sql.105)">http://msdn.microsoft.com/en-us/library/bb510427(v=sql.105)</a>
    -									</p>
    -									
    -									<h3>jOOQ's support for ROLLUP(), CUBE(), GROUPING SETS()</h3>
    -									<p>
    -										jOOQ fully supports all of these functions, as well as the utility functions <code>GROUPING()</code> and <code>GROUPING_ID()</code>, used for identifying the grouping set ID of a record. The <reference id="dsl" title="DSL API"/> thus includes:
    -									</p>
    -									
    -</html><java><![CDATA[// The various grouping function constructors
    -GroupField rollup(Field<?>... fields);
    -GroupField cube(Field<?>... fields);
    -GroupField groupingSets(Field<?>... fields);
    -GroupField groupingSets(Field<?>[]... fields);
    -GroupField groupingSets(Collection<? extends Field<?>>... fields);
    -
    -// The utility functions generating IDs per GROUPING SET
    -Field<Integer> grouping(Field<?>);
    -Field<Integer> groupingId(Field<?>...);]]></java><html>
    -
    -									<h3>MySQL's and CUBRID's WITH ROLLUP syntax</h3>
    -									<p>
    -										MySQL and CUBRID don't know any grouping functions, but they support a <code>WITH ROLLUP</code> clause, that is equivalent to simple <code>ROLLUP()</code> grouping functions. jOOQ simulates <code>ROLLUP()</code> in MySQL and CUBRID, by rendering this <code>WITH ROLLUP</code> clause. The following two statements mean the same:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[-- Statement 1: SQL standard
    -GROUP BY ROLLUP(A, B, C)
    -
    --- Statement 2: SQL standard
    -GROUP BY A, ROLLUP(B, C)]]></sql>
    -<sql><![CDATA[-- Statement 1: MySQL
    -GROUP BY A, B, C WITH ROLLUP
    -
    --- Statement 2: MySQL
    --- This is not supported in MySQL]]></sql>
    -</code-pair>
    -								</content>
    -							</section>
    -
    -							<section id="user-defined-functions">
    -								<title>User-defined functions</title>
    -								<content><html>
    -									<p>
    -										Some databases support user-defined functions, which can be embedded in any SQL statement, if you're using jOOQ's <reference id="code-generation" title="code generator"/>. Let's say you have the following simple function in Oracle SQL:
    -									</p>
    -									
    -</html><sql><![CDATA[CREATE OR REPLACE FUNCTION echo (INPUT NUMBER)
    -RETURN NUMBER
    -IS
    -BEGIN
    -    RETURN INPUT;
    -END echo;
    -]]></sql><html>
    -
    -                                    <p>
    -                                    	The above function will be made available from a generated <reference id="codegen-procedures" title="Routines"/> class. You can use it like any other <reference id="column-expressions" title="column expression"/>:
    -                                    </p>
    -                                    
    -</html><code-pair>
    -<sql><![CDATA[SELECT echo(1) FROM DUAL WHERE echo(2) = 2]]></sql>
    -<java><![CDATA[create.select(echo(1)).where(echo(2).equal(2));]]></java>
    -</code-pair><html>
    -                                
    -                                	<p>
    -                                		Note that user-defined functions returning <reference id="data-types-cursors" title="CURSOR"/> or <reference id="data-types-arrays" title="ARRAY"/> data types can also be used wherever <reference id="table-expressions" title="table expressions"/> can be used, if they are <reference id="array-and-cursor-unnesting" title="unnested"/>
    -                                	</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="user-defined-aggregate-functions">
    -								<title>User-defined aggregate functions</title>
    -								<content><html>
    -									<p>
    -										Some databases support user-defined aggregate functions, which can then be used along with <reference id="group-by-clause" title="GROUP BY clauses"/> or as <reference id="window-functions" title="window functions"/>. An example for such a database is Oracle. With Oracle, you can define the following <code>OBJECT</code> type (the example was taken from the <a href="http://docs.oracle.com/cd/B28359_01/appdev.111/b28425/ext_agg_ref.htm">Oracle 11g documentation</a>): 
    -									</p>
    -									
    -</html><sql><![CDATA[CREATE TYPE U_SECOND_MAX AS OBJECT
    -(
    -  MAX NUMBER, -- highest value seen so far
    -  SECMAX NUMBER, -- second highest value seen so far
    -  STATIC FUNCTION ODCIAggregateInitialize(sctx IN OUT U_SECOND_MAX) RETURN NUMBER,
    -  MEMBER FUNCTION ODCIAggregateIterate(self IN OUT U_SECOND_MAX, value IN NUMBER) RETURN NUMBER,
    -  MEMBER FUNCTION ODCIAggregateTerminate(self IN U_SECOND_MAX, returnValue OUT NUMBER, flags IN NUMBER) RETURN NUMBER,
    -  MEMBER FUNCTION ODCIAggregateMerge(self IN OUT U_SECOND_MAX, ctx2 IN U_SECOND_MAX) RETURN NUMBER
    -);
    -
    -CREATE OR REPLACE TYPE BODY U_SECOND_MAX IS
    -STATIC FUNCTION ODCIAggregateInitialize(sctx IN OUT U_SECOND_MAX)
    -RETURN NUMBER IS
    -BEGIN
    -  SCTX := U_SECOND_MAX(0, 0);
    -  RETURN ODCIConst.Success;
    -END;
    -
    -MEMBER FUNCTION ODCIAggregateIterate(self IN OUT U_SECOND_MAX, value IN NUMBER) RETURN NUMBER IS
    -BEGIN
    -  IF VALUE > SELF.MAX THEN
    -    SELF.SECMAX := SELF.MAX;
    -    SELF.MAX := VALUE;
    -  ELSIF VALUE > SELF.SECMAX THEN
    -    SELF.SECMAX := VALUE;
    -  END IF;
    -  RETURN ODCIConst.Success;
    -END;
    -
    -MEMBER FUNCTION ODCIAggregateTerminate(self IN U_SECOND_MAX, returnValue OUT NUMBER, flags IN NUMBER) RETURN NUMBER IS
    -BEGIN
    -  RETURNVALUE := SELF.SECMAX;
    -  RETURN ODCIConst.Success;
    -END;
    -
    -MEMBER FUNCTION ODCIAggregateMerge(self IN OUT U_SECOND_MAX, ctx2 IN U_SECOND_MAX) RETURN NUMBER IS
    -BEGIN
    -  IF CTX2.MAX > SELF.MAX THEN
    -    IF CTX2.SECMAX > SELF.SECMAX THEN
    -      SELF.SECMAX := CTX2.SECMAX;
    -    ELSE
    -      SELF.SECMAX := SELF.MAX;
    -    END IF;
    -    SELF.MAX := CTX2.MAX;
    -  ELSIF CTX2.MAX > SELF.SECMAX THEN
    -    SELF.SECMAX := CTX2.MAX;
    -  END IF;
    -  RETURN ODCIConst.Success;
    -END;
    -END;]]></sql><html>
    -
    -									<p>
    -										The above <code>OBJECT</code> type is then available to function declarations as such:
    -									</p>
    -
    -</html><sql><![CDATA[
    -CREATE FUNCTION SECOND_MAX (input NUMBER) RETURN NUMBER
    -PARALLEL_ENABLE AGGREGATE USING U_SECOND_MAX;]]></sql><html>
    -
    -									<h3>Using the generated aggregate function</h3>
    -									<p>
    -										jOOQ's <reference id="code-generation" title="code generator"/> will detect such aggregate functions and generate them differently from regular <reference id="user-defined-functions" title="user-defined functions"/>. They implement the <reference class="org.jooq.AggregateFunction"/> type, as mentioned in the manual's section about <reference id="aggregate-functions" title="aggregate functions"/>. Here's how you can use the <code>SECOND_MAX()</code> aggregate function with jOOQ:
    -									</p>
    -				
    -</html><code-pair>					
    -<sql><![CDATA[-- Get the second-latest publishing date by author
    -SELECT SECOND_MAX(PUBLISHED_IN) 
    -FROM BOOK
    -GROUP BY AUTHOR_ID]]></sql>
    -<java><![CDATA[// Routines.secondMax() can be static-imported
    -create.select(secondMax(BOOK.PUBLISHED_IN))
    -      .from(BOOK)
    -      .groupBy(BOOK.AUTHOR_ID)]]></java>
    -</code-pair>
    -								</content>
    -							</section>
    -
    -							<section id="case-expressions">
    -								<title>The CASE expression</title>
    -								<content><html>
    -									<p>
    -										The <code>CASE</code> expression is part of the standard SQL syntax. While some RDBMS also offer an <code>IF</code> expression, or a <code>DECODE</code> function, you can always rely on the two types of <code>CASE</code> syntax:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[CASE WHEN AUTHOR.FIRST_NAME = 'Paulo'  THEN 'brazilian'
    -     WHEN AUTHOR.FIRST_NAME = 'George' THEN 'english'
    -                                       ELSE 'unknown'
    -END
    -
    --- OR:
    -
    -CASE AUTHOR.FIRST_NAME WHEN 'Paulo'  THEN 'brazilian'
    -                       WHEN 'George' THEN 'english'
    -                                     ELSE 'unknown'
    -END]]></sql>
    -<java><![CDATA[create.decode()
    -      .when(AUTHOR.FIRST_NAME.equal("Paulo"), "brazilian")
    -      .when(AUTHOR.FIRST_NAME.equal("George"), "english")
    -      .otherwise("unknown");
    -
    -// OR:
    -
    -create.decode().value(AUTHOR.FIRST_NAME)
    -               .when("Paulo", "brazilian")
    -               .when("George", "english")
    -               .otherwise("unknown");]]></java>
    -</code-pair><html>
    -
    -								<p>
    -									In jOOQ, both syntaxes are supported (The second one is simulated in Derby, which only knows the first one). Unfortunately, both case and else are reserved words in Java. jOOQ chose to use decode() from the Oracle <code>DECODE</code> function, and otherwise(), which means the same as else.
    -								</p>
    -
    -								<p>
    -									A <code>CASE</code> expression can be used anywhere where you can place a <reference id="column-expressions" title="column expression (or Field)"/>. For instance, you can <code>SELECT</code> the above expression, if you're selecting from <code>AUTHOR</code>:
    -							 	</p>
    -
    -</html><sql>SELECT AUTHOR.FIRST_NAME, [... CASE EXPR ...] AS nationality
    -  FROM AUTHOR</sql><html>
    -
    -								<h3>The Oracle DECODE() function</h3>
    -								<p>
    -									Oracle knows a more succinct, but maybe less readable <code>DECODE()</code> function with a variable number of arguments. This function roughly does the same as the second case expression syntax. jOOQ supports the <code>DECODE()</code> function and simulates it using <code>CASE</code> expressions in all dialects other than Oracle:
    -								</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- Oracle:
    -DECODE(FIRST_NAME, 'Paulo', 'brazilian',
    -                   'George', 'english',
    -                   'unknown');
    -
    --- Other SQL dialects
    -CASE AUTHOR.FIRST_NAME WHEN 'Paulo'  THEN 'brazilian'
    -                       WHEN 'George' THEN 'english'
    -                                     ELSE 'unknown'
    -END]]></sql>
    -<java><![CDATA[
    -
    -
    -
    -
    -// Use the Oracle-style DECODE() function with jOOQ.
    -// Note, that you will not be able to rely on type-safety
    -create.decode(AUTHOR.FIRST_NAME,
    -    "Paulo", "brazilian",
    -    "George", "english",
    -    "unknown");]]></java>
    -</code-pair><html>
    -
    -		  							<h3>CASE clauses in an ORDER BY clause</h3>
    -									<p>
    -										Sort indirection is often implemented with a <code>CASE</code> clause of a <code>SELECT</code>'s <code>ORDER BY</code> clause. See the manual's section about the <reference id="order-by-clause" title="ORDER BY clause"/> for more details.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="sequences-and-serials">
    -								<title>Sequences and serials</title>
    -								<content><html>
    -									<p>
    -										Sequences implement the <reference class="org.jooq.Sequence"/> interface, providing essentially this functionality:
    -									</p>
    -
    -</html><java><![CDATA[// Get a field for the CURRVAL sequence property
    -Field<T> currval();
    -
    -// Get a field for the NEXTVAL sequence property
    -Field<T> nextval();]]></java><html>
    -
    -									<p>
    -										So if you have a sequence like this in Oracle:
    -									</p>
    -
    -</html><sql>CREATE SEQUENCE s_author_id</sql><html>
    -
    -									<p>
    -										You can then use your <reference id="codegen-sequences" title="generated sequence"/> object directly in a SQL statement as such:
    -									</p>
    -
    -</html><java><![CDATA[// Reference the sequence in a SELECT statement:
    -BigInteger nextID = create.select(s).fetchOne(S_AUTHOR_ID.nextval());
    -
    -// Reference the sequence in an INSERT statement:
    -create.insertInto(AUTHOR, AUTHOR.ID, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .values(S_AUTHOR_ID.nextval(), val("William"), val("Shakespeare"));
    -]]></java><html>
    -
    -									<ul>
    -										<li>For more information about generated sequences, refer to the manual's section about <reference id="codegen-sequences" title="generated sequences"/></li>
    -										<li>For more information about executing standalone calls to sequences, refer to the manual's section about <reference id="sequence-execution" title="sequence execution"/></li>
    -									</ul>
    -								</html></content>
    -							</section>
    -							
    -							<section id="row-value-expressions">
    -								<title>Tuples or row value expressions</title>
    -								<content><html>
    -									<p>
    -										According to the SQL standard, row value expressions can have a degree of more than one. This is commonly used in the <reference id="insert-statement" title="INSERT statement"/>, where the <code>VALUES</code> row value constructor allows for providing a row value expression as a source for <code>INSERT</code> data. Row value expressions can appear in various other places, though. They are supported by jOOQ as records / rows. jOOQ's <reference id="dsl" title="DSL"/> allows for the construction of type-safe records up to the degree of {max-row-degree}. Higher-degree Rows are supported as well, but without any type-safety. Row types are modelled as follows:
    -									</p>
    -									
    -</html><java><![CDATA[// The DSL provides overloaded row value expression constructor methods:
    -public static <T1>             Row1<T1>             row(T1 t1)                      { ... }
    -public static <T1, T2>         Row2<T1, T2>         row(T1 t1, T2 t2)               { ... }
    -public static <T1, T2, T3>     Row3<T1, T2, T3>     row(T1 t1, T2 t2, T3 t3)        { ... }
    -public static <T1, T2, T3, T4> Row4<T1, T2, T3, T4> row(T1 t1, T2 t2, T3 t3, T4 t4) { ... }
    -
    -// [ ... idem for Row5, Row6, Row7, ..., Row{max-row-degree} ]
    -
    -// Degrees of more than {max-row-degree} are supported without type-safety
    -public static RowN row(Object... values) { ... }]]></java><html>
    -
    -									<h3>Using row value expressions in predicates</h3>
    -                                	<p>
    -                                		Row value expressions are incompatible with most other <reference id="queryparts" title="QueryParts"/>, but they can be used as a basis for constructing various <reference id="conditional-expressions" title="conditional expressions"/>, such as:
    -                                	</p>
    -                                	<ul>
    -                                		<li><reference id="comparison-predicate-degree-n" title="comparison predicates"/></li>
    -                                		<li><reference id="null-predicate-degree-n" title="NULL predicates"/></li>
    -                                		<li><reference id="between-predicate-degree-n" title="BETWEEN predicates"/></li>
    -                                		<li><reference id="in-predicate-degree-n" title="IN predicates"/></li>
    -                                		<li><reference id="overlaps-predicate" title="OVERLAPS predicate"/> (for degree 2 row value expressions only)</li>
    -                                	</ul>
    -                                	<p>
    -                                		See the relevant sections for more details about how to use row value expressions in predicates.
    -                                	</p>
    -                                	
    -                                	<h3>Using row value expressions in UPDATE statements</h3>
    -                                	<p>
    -                                		The <reference id="update-statement" title="UPDATE statement"/> also supports a variant where row value expressions are updated, rather than single columns. See the relevant section for more details
    -                                	</p>
    -                                	
    -									<h3>Higher-degree row value expressions</h3>
    -									<p>
    -										jOOQ chose to explicitly support degrees up to {max-row-degree} to match Scala's typesafe tuple, function and product support. Unlike Scala, however, jOOQ also supports higher degrees without the additional typesafety. 
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="conditional-expressions">
    -					    <title>Conditional expressions</title>
    -						<content><html>
    -							<p>
    -								Conditions or conditional expressions are widely used in SQL and in the jOOQ API. They can be used in
    -							</p>
    -							<ul>
    -								<li>The <reference id="case-expressions" title="CASE expression"/></li>
    -								<li>The <reference id="join-clause" title="JOIN clause"/> (or <code>JOIN .. ON</code> clause, to be precise) of a <reference id="select-statement" title="SELECT statement"/>, <reference id="update-statement" title="UPDATE statement"/>, <reference id="delete-statement" title="DELETE statement"/></li>
    -								<li>The <reference id="where-clause" title="WHERE clause"/> of a <reference id="select-statement" title="SELECT statement"/>, <reference id="update-statement" title="UPDATE statement"/>, <reference id="delete-statement" title="DELETE statement"/></li>
    -								<li>The <reference id="connect-by-clause" title="CONNECT BY clause"/> of a <reference id="select-statement" title="SELECT statement"/></li>
    -								<li>The <reference id="having-clause" title="HAVING clause"/> of a <reference id="select-statement" title="SELECT statement"/></li>
    -								<li>The <reference id="merge-statement" title="MERGE statement"/>'s ON clause</li>
    -							</ul>
    -							
    -							<h3>Boolean types in SQL</h3>
    -							<p>
    -								Before SQL:1999, boolean types did not really exist in SQL. They were modelled by 0 and 1 numeric/char values. With SQL:1999, true booleans were introduced and are now supported by most databases. In short, these are possible boolean values:
    -							</p>
    -							<ul>
    -								<li><code>1</code> or <code>TRUE</code></li>
    -								<li><code>0</code> or <code>FALSE</code></li>
    -								<li><code>NULL</code> or <code>UNKNOWN</code></li>
    -							</ul>
    -							<p>
    -								It is important to know that SQL differs from many other languages in the way it interprets the <code>NULL</code> boolean value. Most importantly, the following facts are to be remembered:
    -							</p>
    -							<ul>
    -								<li><code>[ANY] = NULL</code> yields <code>NULL</code> (not <code>FALSE</code>)</li>
    -								<li><code>[ANY] != NULL</code> yields <code>NULL</code> (not <code>TRUE</code>)</li>
    -								<li><code>NULL = NULL</code> yields <code>NULL</code> (not <code>TRUE</code>)</li>
    -								<li><code>NULL != NULL</code> yields <code>NULL</code> (not <code>FALSE</code>)</li>
    -							</ul>
    -							<p>
    -								For simplified <code>NULL</code> handling, please refer to the section about the <reference id="distinct-predicate" title="DISTINCT predicate"/>.
    -							</p>
    -							<p>
    -								Note that jOOQ does not model these values as actual <reference id="column-expressions" title="column expression"/> compatible.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -						    <section id="condition-building">
    -							    <title>Condition building</title>
    -								<content><html>
    -									<p>
    -										With jOOQ, most <reference id="conditional-expressions" title="conditional expressions"/> are built from <reference id="column-expressions" title="column expressions"/>, calling various methods on them. For instance, to build a <reference id="comparison-predicate" title="comparison predicate"/>, you can write the following expression:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[TITLE  = 'Animal Farm'
    -TITLE != 'Animal Farm']]></sql>
    -<java><![CDATA[BOOK.TITLE.equal("Animal Farm")
    -BOOK.TITLE.notEqual("Animal Farm")]]></java>
    -</code-pair><html>
    -
    -									<h3>Create conditions from the DSL</h3>
    -									<p>
    -										There are a few types of conditions, that can be created statically from the <reference id="dsl" title="DSL"/>. These are:
    -									</p>
    -									<ul>
    -										<li><reference id="plain-sql" title="plain SQL conditions"/>, that allow you to phrase your own SQL string <reference id="conditional-expressions" title="conditional expression"/></li>
    -										<li>The <reference id="exists-predicate" title="EXISTS predicate"/>, a standalone predicate that creates a conditional expression</li>
    -										<li>Constant <code>TRUE</code> and <code>FALSE</code> conditional expressions</li>
    -									</ul>
    -
    -									<h3>Connect conditions using boolean operators</h3>
    -									<p>
    -										Conditions can also be connected using <reference id="boolean-operators" title="boolean operators"/> as will be discussed in a subsequent chapter.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -						    <section id="boolean-operators">
    -							    <title>AND, OR, NOT boolean operators</title>
    -								<content><html>
    -									<p>
    -										In SQL, as in most other languages, <reference id="conditional-expressions" title="conditional expressions"/> can be connected using the <code>AND</code> and <code>OR</code> binary operators, as well as the <code>NOT</code> unary operator, to form new conditional expressions. In jOOQ, this is modelled as such: 
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- A simple conditional expression
    -TITLE = 'Animal Farm' OR TITLE = '1984'
    -
    --- A more complex conditional expression
    -        (TITLE = 'Animal Farm' OR TITLE = '1984') 
    -AND NOT (AUTHOR.LAST_NAME = 'Orwell')]]></sql>
    -<java><![CDATA[// A simple boolean connection
    -BOOK.TITLE.equal("Animal Farm").or(BOOK.TITLE.equal("1984"))
    -
    -// A more complex conditional expression
    -BOOK.TITLE.equal("Animal Farm").or(BOOK.TITLE.equal("1984"))
    -    .andNot(AUTHOR.LAST_NAME.equal("Orwell"))]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										The above example shows that the number of parentheses in Java can quickly explode. Proper indentation may become crucial in making such code readable. In order to understand how jOOQ composes combined conditional expressions, let's assign component expressions first:
    -									</p>
    -
    -</html><java><![CDATA[Condition a = BOOK.TITLE.equal("Animal Farm");
    -Condition b = BOOK.TITLE.equal("1984");
    -Condition c = AUTHOR.LAST_NAME.equal("Orwell");
    -
    -Condition combined1 = a.or(b);             // These OR-connected conditions form a new condition, wrapped in parentheses
    -Condition combined2 = combined1.andNot(c); // The left-hand side of the AND NOT () operator is already wrapped in parentheses]]></java><html>
    -
    -									<h3>The Condition API</h3>
    -									<p>
    -										Here are all boolean operators on the <reference class="org.jooq.Condition"/> interface:
    -									</p>
    -									
    -</html><java><![CDATA[and(Condition)            // Combine conditions with AND
    -and(String)               // Combine conditions with AND. Convenience for adding plain SQL to the right-hand side
    -and(String, Object...)    // Combine conditions with AND. Convenience for adding plain SQL to the right-hand side
    -and(String, QueryPart...) // Combine conditions with AND. Convenience for adding plain SQL to the right-hand side
    -andExists(Select<?>)      // Combine conditions with AND. Convenience for adding an exists predicate to the rhs
    -andNot(Condition)         // Combine conditions with AND. Convenience for adding an inverted condition to the rhs
    -andNotExists(Select<?>)   // Combine conditions with AND. Convenience for adding an inverted exists predicate to the rhs
    -
    -or(Condition)             // Combine conditions with OR
    -or(String)                // Combine conditions with OR. Convenience for adding plain SQL to the right-hand side
    -or(String, Object...)     // Combine conditions with OR. Convenience for adding plain SQL to the right-hand side
    -or(String, QueryPart...)  // Combine conditions with OR. Convenience for adding plain SQL to the right-hand side
    -orExists(Select<?>)       // Combine conditions with OR. Convenience for adding an exists predicate to the rhs
    -orNot(Condition)          // Combine conditions with OR. Convenience for adding an inverted condition to the rhs
    -orNotExists(Select<?>)    // Combine conditions with OR. Convenience for adding an inverted exists predicate to the rhs
    -
    -not()                     // Invert a condition (synonym for DSL.not(Condition)]]></java>
    -								</content>
    -							</section>
    -
    -						    <section id="comparison-predicate">
    -							    <title>Comparison predicate</title>
    -								<content><html>
    -									<p>
    -										In SQL, comparison predicates are formed using common comparison operators:
    -									</p>
    -									<ul>
    -										<li><strong>=</strong> to test for equality</li>
    -										<li><strong>&lt;&gt;</strong> or <strong>!=</strong> to test for non-equality</li>
    -										<li><strong>&gt;</strong> to test for being strictly greater</li>
    -										<li><strong>&gt;=</strong> to test for being greater or equal</li>
    -										<li><strong>&lt;</strong> to test for being strictly less</li>
    -										<li><strong>&lt;=</strong> to test for being less or equal</li>
    -									</ul>
    -									
    -									<p>
    -										Unfortunately, Java does not support operator overloading, hence these operators are also implemented as methods in jOOQ, like any other SQL syntax elements. The relevant parts of the <reference class="org.jooq.Field"/> interface are these:
    -									</p>
    -									
    -</html><java><![CDATA[eq or equal(T);                                     // =  (some bind value)
    -eq or equal(Field<T>);                              // =  (some column expression)
    -eq or equal(Select<? extends Record1<T>>);          // =  (some scalar SELECT statement)
    -ne or notEqual(T);                                  // <> (some bind value)
    -ne or notEqual(Field<T>);                           // <> (some column expression)
    -ne or notEqual(Select<? extends Record1<T>>);       // <> (some scalar SELECT statement)
    -lt or lessThan(T);                                  // <  (some bind value)
    -lt or lessThan(Field<T>);                           // <  (some column expression)
    -lt or lessThan(Select<? extends Record1<T>>);       // <  (some scalar SELECT statement)
    -le or lessOrEqual(T);                               // <= (some bind value)
    -le or lessOrEqual(Field<T>);                        // <= (some column expression)
    -le or lessOrEqual(Select<? extends Record1<T>>);    // <= (some scalar SELECT statement)
    -gt or greaterThan(T);                               // >  (some bind value)
    -gt or greaterThan(Field<T>);                        // >  (some column expression)
    -gt or greaterThan(Select<? extends Record1<T>>);    // >  (some scalar SELECT statement)
    -ge or greaterOrEqual(T);                            // >= (some bind value)
    -ge or greaterOrEqual(Field<T>);                     // >= (some column expression)
    -ge or greaterOrEqual(Select<? extends Record1<T>>); // >= (some scalar SELECT statement)]]></java><html>
    -
    -									<p>
    -										Note that every operator is represented by two methods. A verbose one (such as <code>equal()</code>) and a two-character one (such as <code>eq()</code>). Both methods are the same. You may choose either one, depending on your taste. The manual will always use the more verbose one.
    -									</p>
    -									
    -									<h3>jOOQ's convenience methods using comparison operators</h3>
    -									<p>
    -										In addition to the above, jOOQ provides a few convenience methods for common operations performed on strings using comparison predicates:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[-- case insensitivity
    -LOWER(TITLE)  = LOWER('animal farm')
    -LOWER(TITLE) <> LOWER('animal farm')]]></sql>
    -<java><![CDATA[// case insensitivity
    -BOOK.TITLE.equalIgnoreCase("animal farm")
    -BOOK.TITLE.notEqualIgnoreCase("animal farm")]]></java>
    -</code-pair>
    -								</content>
    -							</section>
    -                            
    -                            <section id="boolean-operator-precedence">
    -                                <title>Boolean operator precedence</title>
    -                                <content><html>
    -                                    <p>
    -                                        As previously mentioned in the manual's section about <reference id="arithmetic-expressions" title="arithmetic expressions"/>, jOOQ does not implement operator precedence. All operators are evaluated from left to right, as expected in an object-oriented API. This is important to understand when combining <reference id="boolean-operators" title="boolean operators"/>, such as <code>AND</code>, <code>OR</code>, and <code>NOT</code>. The following expressions are equivalent:
    -                                    </p>
    -
    -</html><java>
    -   A.and(B) .or(C) .and(D) .or(E)
    -(((A.and(B)).or(C)).and(D)).or(E)
    -</java><html>
    -
    -                                    <p>
    -                                        In SQL, the two expressions wouldn't be the same, as SQL natively knows operator precedence.
    -                                    </p>
    -                                    
    -</html><sql>
    -   A AND B  OR C  AND D  OR E -- Precedence is applied
    -(((A AND B) OR C) AND D) OR E -- Precedence is overridden
    -</sql>                                    
    -                                </content>
    -                            </section>
    -
    -							<section id="comparison-predicate-degree-n">
    -							    <title>Comparison predicate (degree > 1)</title>
    -							    <content><html>
    -							    	<p>
    -							    		All variants of the <reference id="comparison-predicate" title="comparison predicate"/> that we've seen in the previous chapter also work for <reference id="row-value-expressions" title="row value expressions"/>. If your database does not support row value expression comparison predicates, jOOQ simulates them the way they are defined in the SQL standard:
    -							    	</p>
    -	
    -</html><code-pair>
    -<sql><![CDATA[-- Row value expressions (equal)
    -(A, B)    =  (X, Y)
    -(A, B, C) =  (X, Y, Z)
    --- greater than
    -(A, B)    >  (X, Y)
    -
    -(A, B, C) >  (X, Y, Z)
    -
    -
    --- greater or equal  
    -(A, B)    >= (X, Y)
    -
    -
    -(A, B, C) >= (X, Y, Z)
    -
    -
    -
    --- Inverse comparisons
    -
    -(A, B)    <> (X, Y)
    -(A, B)    <  (X, Y)
    -(A, B)    <= (X, Y)]]></sql>	
    -<sql><![CDATA[-- Equivalent factored-out predicates (equal)
    -(A = X) AND (B = Y)
    -(A = X) AND (B = Y) AND (C = Z)
    --- greater than
    -(A > X) 
    -  OR ((A = X) AND (B > Y)) 
    -(A > X) 
    -  OR ((A = X) AND (B > Y)) 
    -  OR ((A = X) AND (B = Y) AND (C > Z))
    --- greater or equal  
    -(A > X) 
    -  OR ((A = X) AND (B > Y))
    -  OR ((A = X) AND (B = Y))
    -(A > X) 
    -  OR ((A = X) AND (B > Y)) 
    -  OR ((A = X) AND (B = Y) AND (C > Z))
    -  OR ((A = X) AND (B = Y) AND (C = Z))
    --- For simplicity, these predicates are shown in terms
    --- of their negated counter parts
    -NOT((A, B) =  (X, Y))
    -NOT((A, B) >= (X, Y))
    -NOT((A, B) >  (X, Y))]]></sql>	
    -</code-pair><html>						    	
    -
    -									<p>
    -										jOOQ supports all of the above row value expression comparison predicates, both with <reference id="column-expressions" title="column expression lists"/> and <reference id="select-statement" title="scalar subselects"/> at the right-hand side:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[-- With regular column expressions
    -(BOOK.AUTHOR_ID, BOOK.TITLE) = (1, 'Animal Farm')
    -
    --- With scalar subselects
    -(BOOK.AUTHOR_ID, BOOK.TITLE) = (
    -  SELECT PERSON.ID, 'Animal Farm'
    -  FROM PERSON
    -  WHERE PERSON.ID = 1
    -)]]></sql>
    -<java><![CDATA[// Column expressions
    -row(BOOK.AUTHOR_ID, BOOK.TITLE).equal(1, "Animal Farm");
    -
    -// Subselects
    -row(BOOK.AUTHOR_ID, BOOK.TITLE).equal(
    -  select(PERSON.ID, val("Animal Farm"))
    -  .from(PERSON)
    -  .where(PERSON.ID.equal(1))
    -);]]></java>
    -</code-pair>									
    -							    </content>
    -						    </section>
    -						    
    -						    <section id="quantified-comparison-predicate">
    -							    <title>Quantified comparison predicate</title>
    -								<content><html>
    -									<p>
    -										If the right-hand side of a <reference id="comparison-predicate" title="comparison predicate"/> turns out to be a non-scalar table subquery, you can wrap that subquery in a quantifier, such as <code>ALL</code>, <code>ANY</code>, or <code>SOME</code>. Note that the SQL standard defines <code>ANY</code> and <code>SOME</code> to be equivalent. jOOQ settled for the more intuitive <code>ANY</code> and doesn't support <code>SOME</code>. Here are some examples, supported by jOOQ:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[TITLE = ANY('Animal Farm', '1982')
    -PUBLISHED_IN > ALL(1920, 1940)]]></sql>
    -<java><![CDATA[BOOK.TITLE.equal(any("Animal Farm", "1982"));
    -BOOK.PUBLISHED_IN.greaterThan(all(1920, 1940));]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										For the example, the right-hand side of the quantified comparison predicates were filled with argument lists. But it is easy to imagine that the source of values results from a <reference id="nested-selects" title="subselect"/>.
    -									</p>
    -
    -									<h3>ANY and the IN predicate</h3>
    -									<p>
    -										It is interesting to note that the SQL standard defines the <reference id="in-predicate" title="IN predicate"/> in terms of the <code>ANY</code>-quantified predicate. The following two expressions are equivalent:
    -									</p>
    -									
    -</html><code-pair>
    -<text><![CDATA[[ROW VALUE EXPRESSION] IN [IN PREDICATE VALUE]]]></text>
    -<text><![CDATA[[ROW VALUE EXPRESSION] = ANY [IN PREDICATE VALUE]]]></text>
    -</code-pair><html>
    -
    -									<p>
    -										Typically, the <reference id="in-predicate" title="IN predicate"/> is more readable than the quantified comparison predicate.
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -						    <section id="null-predicate">
    -							    <title>NULL predicate</title>
    -								<content><html>
    -									<p>
    -										In SQL, you cannot compare <code>NULL</code> with any value using <reference id="comparison-predicate" title="comparison predicates"/>, as the result would yield <code>NULL</code> again, which is neither <code>TRUE</code> nor <code>FALSE</code> (see also the manual's section about <reference id="conditional-expressions" title="conditional expressions"/>). In order to test a <reference id="column-expressions" title="column expression"/> for <code>NULL</code>, use the <code>NULL</code> predicate as such:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[TITLE IS NULL
    -TITLE IS NOT NULL]]></sql>
    -<java><![CDATA[BOOK.TITLE.isNull()
    -BOOK.TITLE.isNotNull()]]></java>
    -</code-pair>
    -
    -								</content>
    -							</section>
    -
    -						    <section id="null-predicate-degree-n">
    -							    <title>NULL predicate (degree > 1)</title>
    -							    <content><html>
    -							    	<p>
    -							    		The SQL <code>NULL</code> predicate also works well for <reference id="row-value-expressions" title="row value expressions"/>, although it has some subtle, counter-intuitive features when it comes to inversing predicates with the <code>NOT()</code> operator! Here are some examples:
    -							    	</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[-- Row value expressions
    -(A, B) IS     NULL
    -(A, B) IS NOT NULL
    -
    --- Inverse of the above
    -NOT((A, B) IS     NULL)
    -NOT((A, B) IS NOT NULL)]]></sql>	
    -<sql><![CDATA[-- Equivalent factored-out predicates
    -(A IS     NULL) AND (B IS     NULL)
    -(A IS NOT NULL) AND (B IS NOT NULL)
    -
    --- Inverse
    -(A IS NOT NULL) OR  (B IS NOT NULL)
    -(A IS     NULL) OR  (B IS     NULL)]]></sql>	
    -</code-pair><html>						    	
    -
    -									<p>
    -										The SQL standard contains a nice truth table for the above rules:
    -									</p>
    -									
    -</html><text>+-----------------------+-----------+---------------+---------------+-------------------+
    -| Expression            | R IS NULL | R IS NOT NULL | NOT R IS NULL | NOT R IS NOT NULL |
    -+-----------------------+-----------+---------------+---------------+-------------------+
    -| degree 1: null        | true      | false         | false         |  true             |
    -| degree 1: not null    | false     | true          | true          |  false            |
    -| degree > 1: all null  | true      | false         | false         |  true             |
    -| degree > 1: some null | false     | false         | true          |  true             |
    -| degree > 1: none null | false     | true          | true          |  false            |
    -+-----------------------+-----------+---------------+---------------+-------------------+</text><html>		
    -
    -									<p>
    -										In jOOQ, you would simply use the <code>isNull()</code> and <code>isNotNull()</code> methods on row value expressions. Again, as with the <reference id="comparison-predicate-degree-n" title="row value expression comparison predicate"/>, the row value expression <code>NULL</code> predicate is simulated by jOOQ, if your database does not natively support it:
    -									</p>
    -									
    -</html><java><![CDATA[row(BOOK.ID, BOOK.TITLE).isNull();
    -row(BOOK.ID, BOOK.TITLE).isNotNull();]]></java>
    -
    -							    </content>
    -						    </section>
    -						    
    -						    <section id="distinct-predicate">
    -							    <title>DISTINCT predicate</title>
    -								<content><html>
    -									<p>
    -										Some databases support the <code>DISTINCT</code> predicate, which serves as a convenient, <code>NULL</code>-safe <reference id="comparison-predicate" title="comparison predicate"/>. With the <code>DISTINCT</code> predicate, the following truth table can be assumed:
    -									</p>
    -									<ul>
    -										<li><code>[ANY] IS DISTINCT FROM NULL</code> yields <code>TRUE</code></li>
    -										<li><code>[ANY] IS NOT DISTINCT FROM NULL</code> yields <code>FALSE</code></li>
    -										<li><code>NULL IS DISTINCT FROM NULL</code> yields <code>FALSE</code></li>
    -										<li><code>NULL IS NOT DISTINCT FROM NULL</code> yields <code>TRUE</code></li>
    -									</ul>
    -									<p>
    -										For instance, you can compare two fields for distinctness, ignoring the fact that any of the two could be <code>NULL</code>, which would lead to funny results. This is supported by jOOQ as such:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[TITLE IS DISTINCT FROM SUB_TITLE
    -TITLE IS NOT DISTINCT FROM SUB_TITLE]]></sql>
    -<java><![CDATA[BOOK.TITLE.isDistinctFrom(BOOK.SUB_TITLE)
    -BOOK.TITLE.isNotDistinctFrom(BOOK.SUB_TITLE)]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										If your database does not natively support the <code>DISTINCT</code> predicate, jOOQ simulates it with an equivalent <reference id="case-expressions" title="CASE expression"/>, modelling the above truth table:
    -									</p>
    -	
    -</html><code-pair>								
    -<sql><![CDATA[-- [A] IS DISTINCT FROM [B] 
    -CASE WHEN [A] IS     NULL AND [B] IS     NULL THEN FALSE
    -     WHEN [A] IS     NULL AND [B] IS NOT NULL THEN TRUE
    -     WHEN [A] IS NOT NULL AND [B] IS     NULL THEN TRUE
    -     WHEN [A] =               [B]             THEN FALSE
    -     ELSE                                          TRUE
    -END
    -]]></sql>
    -<sql><![CDATA[-- [A] IS NOT DISTINCT FROM [B] 
    -CASE WHEN [A] IS     NULL AND [B] IS     NULL THEN TRUE
    -     WHEN [A] IS     NULL AND [B] IS NOT NULL THEN FALSE
    -     WHEN [A] IS NOT NULL AND [B] IS     NULL THEN FALSE
    -     WHEN [A] =               [B]             THEN TRUE
    -     ELSE                                          FALSE
    -END
    -]]></sql>
    -</code-pair>							
    -								</content>
    -							</section>
    -
    -						    <section id="between-predicate">
    -							    <title>BETWEEN predicate</title>
    -								<content><html>
    -									<p>
    -										The <code>BETWEEN</code> predicate can be seen as syntactic sugar for a pair of <reference id="comparison-predicate" title="comparison predicates"/>. According to the SQL standard, the following two predicates are equivalent:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[[A] BETWEEN [B] AND [C]]]></sql>
    -<sql><![CDATA[[A] >= [B] AND [A] <= [C]]]></sql>
    -</code-pair><html>
    -
    -									<p>
    -										Note the inclusiveness of range boundaries in the definition of the <code>BETWEEN</code> predicate. Intuitively, this is supported in jOOQ as such:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[PUBLISHED_IN     BETWEEN 1920 AND 1940
    -PUBLISHED_IN NOT BETWEEN 1920 AND 1940]]></sql>
    -<java><![CDATA[BOOK.PUBLISHED_IN.between(1920).and(1940)
    -BOOK.PUBLISHED_IN.notBetween(1920).and(1940)]]></java>
    -</code-pair><html>
    -
    -									<h3>BETWEEN SYMMETRIC</h3>
    -									<p>
    -										The SQL standard defines the <code>SYMMETRIC</code> keyword to be used along with <code>BETWEEN</code> to indicate that you do not care which bound of the range is larger than the other. A database system should simply swap range bounds, in case the first bound is greater than the second one. jOOQ supports this keyword as well, simulating it if necessary.
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[PUBLISHED_IN     BETWEEN SYMMETRIC 1940 AND 1920
    -PUBLISHED_IN NOT BETWEEN SYMMETRIC 1940 AND 1920]]></sql>
    -<java><![CDATA[BOOK.PUBLISHED_IN.betweenSymmetric(1940).and(1920)
    -BOOK.PUBLISHED_IN.notBetweenSymmetric(1940).and(1920)]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										The simulation is done trivially:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[[A] BETWEEN SYMMETRIC [B] AND [C]]]></sql>
    -<sql><![CDATA[([A] BETWEEN [B] AND [C]) OR ([A] BETWEEN [C] AND [B])]]></sql>
    -</code-pair>
    -
    -								</content>
    -							</section>
    -
    -						    <section id="between-predicate-degree-n">
    -							    <title>BETWEEN predicate (degree > 1)</title>
    -							    <content><html>
    -							    	<p>
    -							    	    The SQL <code>BETWEEN</code> predicate also works well for <reference id="row-value-expressions" title="row value expressions"/>. Much like the <reference id="between-predicate" title="BETWEEN predicate for degree 1"/>, it is defined in terms of a pair of regular <reference id="comparison-predicate" title="comparison predicates"/>:
    -							    	</p>
    -							    	
    -</html><code-pair>
    -<sql><![CDATA[[A] BETWEEN           [B] AND [C]
    -[A] BETWEEN SYMMETRIC [B] AND [C]]]></sql>
    -<sql><![CDATA[ [A] >= [B] AND [A] <= [C]
    -([A] >= [B] AND [A] <= [C]) OR ([A] >= [C] AND [A] <= [B])]]></sql>
    -</code-pair><html>
    -							    	
    -							    	<p>
    -							    		The above can be factored out according to the rules listed in the manual's section about <reference id="comparison-predicate-degree-n" title="row value expression comparison predicates"/>.
    -							    	</p>
    -							    	
    -							    	<p>
    -							    		jOOQ supports the <code>BETWEEN [SYMMETRIC]</code> predicate and simulates it in all SQL dialects where necessary. An example is given here:
    -							    	</p>
    -							    	
    -</html><java><![CDATA[row(BOOK.ID, BOOK.TITLE).between(1, "A").and(10, "Z");]]></java>
    -							    	
    -							    </content>
    -							</section>
    -							
    -						    <section id="like-predicate">
    -							    <title>LIKE predicate</title>
    -								<content><html>
    -									<p>
    -										<code>LIKE</code> predicates are popular for simple wildcard-enabled pattern matching. Supported wildcards in all SQL databases are:
    -									</p>
    -									<ul>
    -										<li><strong>_</strong>: (single-character wildcard)</li>
    -										<li><strong>%</strong>: (multi-character wildcard)</li>
    -									</ul>
    -									<p>
    -										With jOOQ, the <code>LIKE</code> predicate can be created from any <reference id="column-expressions" title="column expression"/> as such:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[TITLE     LIKE '%abc%'
    -TITLE NOT LIKE '%abc%']]></sql>
    -<java><![CDATA[BOOK.TITLE.like("%abc%")
    -BOOK.TITLE.notLike("%abc%")]]></java>
    -</code-pair><html>
    -									
    -									<h3>Escaping operands with the LIKE predicate</h3>
    -									<p>
    -										Often, your pattern may contain any of the wildcard characters <code>"_"</code> and <code>"%"</code>, in case of which you may want to escape them. jOOQ does not automatically escape patterns in <code>like()</code> and <code>notLike()</code> methods. Instead, you can explicitly define an escape character as such:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[TITLE     LIKE '%The !%-Sign Book%' ESCAPE '!'
    -TITLE NOT LIKE '%The !%-Sign Book%' ESCAPE '!']]></sql>
    -<java><![CDATA[BOOK.TITLE.like("%The !%-Sign Book%", '!')
    -BOOK.TITLE.notLike("%The !%-Sign Book%", '!')]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										In the above predicate expressions, the exclamation mark character is passed as the escape character to escape wildcard characters <code>"!_"</code> and <code>"!%"</code>, as well as to escape the escape character itself: <code>"!!"</code>
    -									</p>
    -									<p>
    -										Please refer to your database manual for more details about escaping patterns with the <code>LIKE</code> predicate.
    -									</p>
    -									
    -									<h3>jOOQ's convenience methods using the LIKE predicate</h3>
    -									<p>
    -										In addition to the above, jOOQ provides a few convenience methods for common operations performed on strings using the <code>LIKE</code> predicate. Typical operations are "contains predicates", "starts with predicates", "ends with predicates", etc. Here is the full convenience API wrapping <code>LIKE</code> predicates:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[-- case insensitivity
    -LOWER(TITLE) LIKE LOWER('%abc%')
    -LOWER(TITLE) NOT LIKE LOWER('%abc%')
    -
    --- contains and similar methods
    -TITLE LIKE '%' || 'abc' || '%'
    -TITLE LIKE 'abc' || '%'
    -TITLE LIKE '%' || 'abc']]></sql>
    -<java><![CDATA[// case insensitivity
    -BOOK.TITLE.likeIgnoreCase("%abc%")
    -BOOK.TITLE.notLikeIgnoreCase("%abc%")
    -
    -// contains and similar methods
    -BOOK.TITLE.contains("abc")
    -BOOK.TITLE.startsWith("abc")
    -BOOK.TITLE.endsWith("abc")]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										Note, that jOOQ escapes <code>%</code> and <code>_</code> characters in value in some of the above predicate implementations. For simplicity, this has been omitted in this manual.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -						    <section id="in-predicate">
    -							    <title>IN predicate</title>
    -								<content><html>
    -									<p>
    -										In SQL, apart from comparing a value against several values, the <code>IN</code> predicate can be used to create semi-joins or anti-joins. jOOQ knows the following methods on the <reference class="org.jooq.Field" /> interface, to construct such <code>IN</code> predicates:
    -									</p>
    -
    -</html><java><![CDATA[in(Collection<T>)                   // Construct an IN predicate from a collection of bind values
    -in(T...)                            // Construct an IN predicate from bind values
    -in(Field<?>...)                     // Construct an IN predicate from column expressions
    -in(Select<? extends Record1<T>>)    // Construct an IN predicate from a subselect
    -notIn(Collection<T>)                // Construct a NOT IN predicate from a collection of bind values
    -notIn(T...)                         // Construct a NOT IN predicate from bind values
    -notIn(Field<?>...)                  // Construct a NOT IN predicate from column expressions
    -notIn(Select<? extends Record1<T>>) // Construct a NOT IN predicate from a subselect]]></java><html>
    -
    -									<p>
    -										A sample <code>IN</code> predicate might look like this:
    -									</p>
    -									
    -</html><code-pair>
    -<sql><![CDATA[TITLE     IN ('Animal Farm', '1984')
    -TITLE NOT IN ('Animal Farm', '1984')]]></sql>
    -<java><![CDATA[BOOK.TITLE.in("Animal Farm", "1984")
    -BOOK.TITLE.notIn("Animal Farm", "1984")]]></java>
    -</code-pair><html>
    -
    -									
    -									<h3>NOT IN and NULL values</h3>
    -									<p>
    -										Beware that you should probably not have any <code>NULL</code> values in the right hand side of a <code>NOT IN</code> predicate, as the whole expression would evaluate to <code>NULL</code>, which is rarely desired. This can be shown informally using the following reasoning:
    -									</p>
    -									
    -</html><sql>-- The following conditional expressions are formally or informally equivalent
    -A NOT IN (B, C)
    -A != ANY(B, C)
    -A != B AND A != C
    -
    --- Substitute C for NULL, you'll get
    -A NOT IN (B, NULL)   -- Substitute C for NULL
    -A != B AND A != NULL -- From the above rules
    -A != B AND NULL      -- [ANY] != NULL yields NULL
    -NULL                 -- [ANY] AND NULL yields NULL</sql><html>
    -
    -									<p>
    -										A good way to prevent this from happening is to use the <reference id="exists-predicate" title="EXISTS predicate"/> for anti-joins, which is <code>NULL</code>-value insensitive. See the manual's section about <reference id="conditional-expressions" title="conditional expressions"/> to see a boolean truth table.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -						    <section id="in-predicate-degree-n">
    -							    <title>IN predicate (degree > 1)</title>
    -							    <content><html>
    -							    	<p>
    -							    	    The SQL <code>IN</code> predicate also works well for <reference id="row-value-expressions" title="row value expressions"/>. Much like the <reference id="in-predicate" title="IN predicate for degree 1"/>, it is defined in terms of a <reference id="quantified-comparison-predicate" title="quantified comparison predicate"/>. The two expressions are equivalent:
    -							    	</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[R IN [IN predicate value]]]></sql>
    -<sql><![CDATA[R = ANY [IN predicate value]]]></sql>
    -</code-pair><html>		
    -
    -									<p>
    -							    		jOOQ supports the <code>IN</code> predicate. Simulation of the <code>IN</code> predicate where row value expressions aren't well supported is currently only available for <code>IN</code> predicates that do not take a subselect as an <code>IN</code> predicate value. An example is given here:
    -							    	</p>
    -							    	
    -</html><java><![CDATA[row(BOOK.ID, BOOK.TITLE).in(row(1, "A"), row(2, "B"));]]></java>					    	
    -							    </content>
    -							</section>
    -							
    -						    <section id="exists-predicate">
    -							    <title>EXISTS predicate</title>
    -								<content><html>
    -									<p>
    -										Slightly less intuitive, yet more powerful than the previously discussed <reference id="in-predicate" title="IN predicate"/> is the <code>EXISTS</code> predicate, that can be used to form semi-joins or anti-joins. With jOOQ, the <code>EXISTS</code> predicate can be formed in various ways:
    -									</p>
    -									<ul>
    -										<li>From the <reference id="dsl" title="DSL"/>, using static methods. This is probably the most used case</li>
    -										<li>From a <reference id="conditional-expressions" title="conditional expression"/> using <reference id="boolean-operators" title="convenience methods attached to boolean operators"/></li>
    -										<li>From a <reference id="select-statement" title="SELECT statement"/> using <reference id="where-clause" title="convenience methods attached to the where clause"/>, and from other clauses</li>
    -									</ul>
    -									
    -									<p>
    -										An example of an <code>EXISTS</code> predicate can be seen here:
    -									</p>
    -
    -</html><code-pair>
    -<sql><![CDATA[    EXISTS (SELECT 1 FROM BOOK 
    -            WHERE AUTHOR_ID = 3)
    -NOT EXISTS (SELECT 1 FROM BOOK 
    -            WHERE AUTHOR_ID = 3)]]></sql>
    -<java><![CDATA[   exists(create.selectOne().from(BOOK)
    -                .where(BOOK.AUTHOR_ID.equal(3)));
    -notExists(create.selectOne().from(BOOK)
    -                .where(BOOK.AUTHOR_ID.equal(3)));]]></java>
    -</code-pair><html>
    -
    -									<p>
    -										Note that in SQL, the projection of a subselect in an <code>EXISTS</code> predicate is irrelevant. To help you write queries like the above, you can use jOOQ's selectZero() or selectOne() <reference id="dsl" title="DSL"/> methods
    -									</p>
    -									
    -									<h3>Performance of IN vs. EXISTS</h3>
    -									<p>
    -										In theory, the two types of predicates can perform equally well. If your database system ships with a sophisticated cost-based optimiser, it will be able to transform one predicate into the other, if you have all necessary constraints set (e.g. referential constraints, not null constraints). However, in reality, performance between the two might differ substantially. An interesting blog post investigating this topic on the MySQL database can be seen here:<br/>
    -										<a href="http://blog.jooq.org/2012/07/27/not-in-vs-not-exists-vs-left-join-is-null-mysql/">http://blog.jooq.org/2012/07/27/not-in-vs-not-exists-vs-left-join-is-null-mysql/</a>
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -							<section id="overlaps-predicate">
    -								<title>OVERLAPS predicate</title>
    -								<content><html>
    -									<p>
    -										When comparing dates, the SQL standard allows for using a special <code>OVERLAPS</code> predicate, which checks whether two date ranges overlap each other. The following can be said:
    -									</p>
    -
    -</html><sql><![CDATA[-- This yields true
    -(DATE '2010-01-01', DATE '2010-01-03') OVERLAPS (DATE '2010-01-02' DATE '2010-01-04')
    -
    --- INTERVAL data types are also supported. This is equivalent to the above
    -(DATE '2010-01-01', CAST('+2 00:00:00' AS INTERVAL DAY TO SECOND)) OVERLAPS 
    -(DATE '2010-01-02', CAST('+2 00:00:00' AS INTERVAL DAY TO SECOND))]]></sql><html>
    -
    -									<h3>The OVERLAPS predicate in jOOQ</h3>
    -									<p>
    -									    jOOQ supports the <code>OVERLAPS</code> predicate on <reference id="row-value-expressions" title="row value expressions of degree 2"/>. The following methods are contained in <reference class="org.jooq.Row2"/>:
    -									</p>
    -
    -</html><java><![CDATA[Condition overlaps(T1 t1, T2 t2);
    -Condition overlaps(Field<T1> t1, Field<T2> t2);
    -Condition overlaps(Row2<T1, T2> row);]]></java><html>
    -
    -									<p>
    -										This allows for expressing the above predicates as such:
    -									</p>																		
    -
    -</html><java><![CDATA[// The date range tuples version
    -row(Date.valueOf('2010-01-01'), Date.valueOf('2010-01-03')).overlaps(Date.valueOf('2010-01-02'), Date.valueOf('2010-01-04'))
    -
    -// The INTERVAL tuples version
    -row(Date.valueOf('2010-01-01'), new DayToSecond(2)).overlaps(Date.valueOf('2010-01-02'), new DayToSecond(2))]]></java><html>
    -
    -									<h3>jOOQ's extensions to the standard</h3>
    -									<p>
    -										Unlike the standard (or any database implementing the standard), jOOQ also supports the <code>OVERLAPS</code> predicate for comparing arbitrary <reference id="row-value-expressions" title="row vlaue expressions of degree 2"/>. For instance, <code>(1, 3) OVERLAPS (2, 4)</code> will yield true in jOOQ. This is simulated as such
    -									</p>
    -									
    -</html><sql><![CDATA[-- This predicate
    -(A, B) OVERLAPS (C, D)
    -
    --- can be simulated as such
    -(C <= B) AND (A <= D)]]></sql>
    -								</content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="plain-sql">
    -						<title>Plain SQL</title>
    -						<content><html>
    -							<p>
    -								A DSL is a nice thing to have, it feels "fluent" and "natural", especially if it models a well-known language, such as SQL. But a DSL is always expressed in a host language (Java in this case), which was not made for exactly the same purposes as its hosted DSL. If it were, then jOOQ would be implemented on a compiler-level, similar to LINQ in .NET. But it's not, and so, the DSL is limited by language constraints of its host language. We have seen many functionalities where the DSL becomes a bit verbose. This can be especially true for:
    -							</p>
    -							<ul>
    -								<li><reference id="aliased-columns" title="aliasing"/></li>
    -								<li><reference id="nested-selects" title="nested selects"/></li>
    -								<li><reference id="arithmetic-expressions" title="arithmetic expressions"/></li>
    -								<li><reference id="cast-expressions" title="casting"/></li>
    -							</ul>
    -							
    -							<p>
    -								You'll probably find other examples. If verbosity scares you off, don't worry. The verbose use-cases for jOOQ are rather rare, and when they come up, you do have an option. Just write SQL the way you're used to!
    -							</p>
    -							<p>
    -								jOOQ allows you to embed SQL as a String into any supported <reference id="sql-statements" title="statement"/> in these contexts:
    -							</p>
    -							<ul>
    -								<li>Plain SQL as a <reference id="conditional-expressions" title="conditional expression"/></li>
    -								<li>Plain SQL as a <reference id="column-expressions" title="column expression"/></li>
    -								<li>Plain SQL as a <reference id="column-expressions" title="function"/></li>
    -								<li>Plain SQL as a <reference id="table-expressions" title="table expression"/></li>
    -								<li>Plain SQL as a <reference id="query-vs-resultquery" title="query"/></li>
    -							</ul>
    -
    -							<h3>The DSL plain SQL API</h3>
    -							<p>
    -								Plain SQL API methods are usually overloaded in three ways. Let's look at the <code>condition</code> query part constructor:
    -							</p>
    -</html><java><![CDATA[// Construct a condition without bind values
    -// Example: condition("a = b")
    -Condition condition(String sql);
    -
    -// Construct a condition with bind values
    -// Example: condition("a = ?", 1);
    -Condition condition(String sql, Object... bindings);
    -
    -// Construct a condition taking other jOOQ object arguments
    -// Example: condition("a = {0}", val(1));
    -Condition condition(String sql, QueryPart... parts);]]></java><html>
    -							
    -							<p>
    -								Please refer to the <reference class="org.jooq.impl.DSL"/> Javadoc for more details. The following is a more complete listing of plain SQL construction methods from the DSL:
    -							</p>
    -
    -</html><java><![CDATA[// A condition
    -Condition condition(String sql);
    -Condition condition(String sql, Object... bindings);
    -Condition condition(String sql, QueryPart... parts);
    -
    -// A field with an unknown data type
    -Field<Object> field(String sql);
    -Field<Object> field(String sql, Object... bindings);
    -Field<Object> field(String sql, QueryPart... parts);
    -
    -// A field with a known data type
    -<T> Field<T> field(String sql, Class<T> type);
    -<T> Field<T> field(String sql, Class<T> type, Object... bindings);
    -<T> Field<T> field(String sql, Class<T> type, QueryPart... parts);
    -<T> Field<T> field(String sql, DataType<T> type);
    -<T> Field<T> field(String sql, DataType<T> type, Object... bindings);
    -<T> Field<T> field(String sql, DataType<T> type, QueryPart... parts);
    -
    -// A field with a known name (properly escaped)
    -Field<Object> fieldByName(String... fieldName);
    -<T> Field<T>  fieldByName(Class<T> type, String... fieldName);
    -<T> Field<T>  fieldByName(DataType<T> type, String... fieldName)
    -
    -// A function
    -<T> Field<T> function(String name, Class<T> type, Field<?>... arguments);
    -<T> Field<T> function(String name, DataType<T> type, Field<?>... arguments);
    -
    -// A table
    -Table<?> table(String sql);
    -Table<?> table(String sql, Object... bindings);
    -Table<?> table(String sql, QueryPart... parts);
    -
    -// A table with a known name (properly escaped)
    -Table<Record> tableByName(String... fieldName);
    -
    -// A query without results (update, insert, etc)
    -Query query(String sql);
    -Query query(String sql, Object... bindings);
    -Query query(String sql, QueryPart... parts);
    -
    -// A query with results
    -ResultQuery<Record> resultQuery(String sql);
    -ResultQuery<Record> resultQuery(String sql, Object... bindings);
    -ResultQuery<Record> resultQuery(String sql, QueryPart... parts);
    -
    -// A query with results. This is the same as resultQuery(...).fetch();
    -Result<Record> fetch(String sql);
    -Result<Record> fetch(String sql, Object... bindings);
    -Result<Record> fetch(String sql, QueryPart... parts);]]></java><html>
    -
    -							<p>
    -								Apart from the general factory methods, plain SQL is also available in various other contexts. For instance, when adding a <code>.where("a = b")</code> clause to a query. Hence, there exist several convenience methods where plain SQL can be inserted usefully. This is an example displaying all various use-cases in one single query:
    -							</p>
    -							
    -</html><java><![CDATA[// You can use your table aliases in plain SQL fields
    -// As long as that will produce syntactically correct SQL
    -Field<?> LAST_NAME    = create.field("a.LAST_NAME");
    -
    -// You can alias your plain SQL fields
    -Field<?> COUNT1       = create.field("count(*) x");
    -
    -// If you know a reasonable Java type for your field, you
    -// can also provide jOOQ with that type
    -Field<Integer> COUNT2 = create.field("count(*) y", Integer.class);
    -
    -       // Use plain SQL as select fields
    -create.select(LAST_NAME, COUNT1, COUNT2)
    -
    -       // Use plain SQL as aliased tables (be aware of syntax!)
    -      .from("author a")
    -      .join("book b")
    -
    -       // Use plain SQL for conditions both in JOIN and WHERE clauses
    -      .on("a.id = b.author_id")
    -
    -       // Bind a variable in plain SQL
    -      .where("b.title != ?", "Brida")
    -
    -       // Use plain SQL again as fields in GROUP BY and ORDER BY clauses
    -      .groupBy(LAST_NAME)
    -      .orderBy(LAST_NAME);]]></java><html>
    -
    -							<h3>Important things to note about plain SQL!</h3>
    -							<p>
    -								There are some important things to keep in mind when using plain SQL:
    -							</p>
    -							<ul>
    -								<li>jOOQ doesn't know what you're doing. You're on your own again!</li>
    -								<li>You have to provide something that will be syntactically correct. If it's not, then jOOQ won't know. Only your JDBC driver or your RDBMS will detect the syntax error.</li>
    -								<li>You have to provide consistency when you use variable binding. The number of ? must match the number of variables</li>
    -								<li>Your SQL is inserted into jOOQ queries without further checks. Hence, jOOQ can't prevent SQL injection. </li>
    -							</ul>
    -						</html></content>
    -					</section>
    -
    -					<section id="bind-values">
    -					    <title>Bind values and parameters</title>
    -						<content><html>
    -							<p>
    -								Bind values are used in SQL / JDBC for various reasons. Among the most obvious ones are:
    -							</p>
    -							<ul>
    -								<li>
    -									Protection against SQL injection. Instead of inlining values possibly originating from user input, you bind those values to your prepared statement and let the JDBC driver / database take care of handling security aspects.
    -								</li>
    -								<li>
    -									Increased speed. Advanced databases such as Oracle can keep execution plans of similar queries in a dedicated cache to prevent hard-parsing your query again and again. In many cases, the actual value of a bind variable does not influence the execution plan, hence it can be reused. Preparing a statement will thus be faster
    -								</li>
    -								<li>
    -									On a JDBC level, you can also reuse the SQL string and prepared statement object instead of constructing it again, as you can bind new values to the prepared statement. jOOQ currently does not cache prepared statements, internally.
    -								</li>
    -							</ul>
    -							
    -							<p>
    -								The following sections explain how you can introduce bind values in jOOQ, and how you can control the way they are rendered and bound to SQL.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -						    <section id="indexed-parameters">
    -							    <title>Indexed parameters</title>
    -								<content><html>
    -									<p>
    -										JDBC only knows indexed bind values. A typical example for using bind values with JDBC is this:
    -									</p>
    -									
    -</html><java><![CDATA[PreparedStatement stmt = connection.prepareStatement("SELECT * FROM BOOK WHERE ID = ? AND TITLE = ?");
    -
    -// bind values to the above statement for appropriate indexes 
    -stmt.setInt(1, 5);
    -stmt.setString(2, "Animal Farm");
    -stmm.executeQuery();]]></java><html>
    -
    -									<p>
    -										With dynamic SQL, keeping track of the number of question marks and their corresponding index may turn out to be hard. jOOQ abstracts this and lets you provide the bind value right where it is needed. A trivial example is this:
    -									</p>
    -									
    -</html><java><![CDATA[create.select().from(BOOK).where(BOOK.ID.equal(5)).and(BOOK.TITLE.equal("Animal Farm"));
    -
    -// This notation is in fact a short form for the equivalent:
    -create.select().from(BOOK).where(BOOK.ID.equal(val(5))).and(BOOK.TITLE.equal(val("Animal Farm")));]]></java><html>
    -
    -									<p>
    -										Note the using of <reference class="org.jooq.impl.DSL" anchor="#val(java.lang.Object)" title="DSL.val()"/> to explicitly create an indexed bind value. You don't have to worry about that index. When the query is <reference id="sql-rendering" title="rendered"/>, each bind value will render a question mark. When the query <reference id="variable-binding" title="binds its variables"/>, each bind value will generate the appropriate bind value index. 
    -									</p>
    -									
    -									<h3>Extract bind values from a query</h3>
    -									<p>
    -										Should you decide to run the above query outside of jOOQ, using your own <reference class="java.sql.PreparedStatement"/>, you can do so as follows:
    -									</p>
    -									
    -</html><java><![CDATA[Select<?> select = create.select().from(BOOK).where(BOOK.ID.equal(5)).and(BOOK.TITLE.equal("Animal Farm"));
    -
    -// Render the SQL statement:
    -String sql = select.getSQL();
    -assertEquals("SELECT * FROM BOOK WHERE ID = ? AND TITLE = ?", sql);
    -
    -// Get the bind values:
    -List<Object> values = select.getBindValues();
    -assertEquals(2, values.size());
    -assertEquals(5, values.get(0));
    -assertEquals("Animal Farm", values.get(1));]]></java><html>
    -
    -									<p>
    -										You can also extract specific bind values by index from a query, if you wish to modify their underlying value after creating a query. This can be achieved as such:
    -									</p>
    -
    -</html><java><![CDATA[Select<?> select = create.select().from(BOOK).where(BOOK.ID.equal(5)).and(BOOK.TITLE.equal("Animal Farm"));
    -Param<?> param = select.getParam("2");
    -
    -// You could now modify the Query's underlying bind value:
    -if ("Animal Farm".equals(param.getValue())) {
    -    param.setConverted("1984");
    -}]]></java><html>
    -
    -									<p>
    -										For more details about jOOQ's internals, see the manual's section about <reference id="queryparts" title="QueryParts"/>.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -						    <section id="named-parameters">
    -							    <title>Named parameters</title>
    -								<content><html>
    -									<p>
    -										Some SQL access abstractions that are built on top of JDBC, or some that bypass JDBC may support named parameters. jOOQ allows you to give names to your parameters as well, although those names are not rendered to SQL strings by default. Here is an example of how to create named parameters using the <reference class="org.jooq.Param"/> type:
    -									</p>
    -
    -</html><java><![CDATA[// Create a query with a named parameter. You can then use that name for accessing the parameter again
    -Query query1 = create.select().from(AUTHOR).where(LAST_NAME.equal(param("lastName", "Poe")));
    -Param<?> param1 = query.getParam("lastName");
    -
    -// Or, keep a reference to the typed parameter in order not to lose the <T> type information:
    -Param<String> param2 = param("lastName", "Poe");
    -Query query2 = create.select().from(AUTHOR).where(LAST_NAME.equal(param2));
    -
    -// You can now change the bind value directly on the Param reference:
    -param2.setValue("Orwell");]]></java><html>
    -
    -									<p>
    -										The <reference class="org.jooq.Query"/> interface also allows for setting new bind values directly, without accessing the Param type:
    -									</p>
    -
    -</html><java><![CDATA[Query query1 = create.select().from(AUTHOR).where(LAST_NAME.equal("Poe"));
    -query1.bind(1, "Orwell");
    -
    -// Or, with named parameters
    -Query query2 = create.select().from(AUTHOR).where(LAST_NAME.equal(param("lastName", "Poe")));
    -query2.bind("lastName", "Orwell");]]></java><html>
    -
    -									<p>
    -										In order to actually render named parameter names in generated SQL, use the <reference class="org.jooq.DSLContext" anchor="#renderNamedParams(org.jooq.QueryPart)" title="DSLContext.renderNamedParams()"/> method:
    -									</p>
    -
    -</html><code-pair>
    -<java><![CDATA[create.renderNamedParams(
    -    create.select()
    -          .from(AUTHOR)
    -          .where(LAST_NAME.equal(
    -                 param("lastName", "Poe"))));]]></java>
    -<sql><![CDATA[-- The named bind variable can be rendered
    -
    -SELECT *
    -FROM AUTHOR
    -WHERE LAST_NAME = :lastName]]></sql>
    -</code-pair>
    -								</content>
    -							</section>
    -
    -						    <section id="inlined-parameters">
    -							    <title>Inlined parameters</title>
    -								<content><html>
    -									<p>
    -										Sometimes, you may wish to avoid rendering bind variables while still using custom values in SQL. jOOQ refers to that as "inlined" bind values. When bind values are inlined, they render the actual value in SQL rather than a JDBC question mark. Bind value inlining can be achieved in two ways:
    -									</p>
    -									<ul>
    -										<li>
    -											By using the <reference id="custom-settings" title="Settings"/> and setting the <reference class="org.jooq.conf.StatementType"/> to STATIC_STATEMENT. This will inline all bind values for SQL statements rendered from such a Configuration.
    -										</li>
    -										<li>
    -											By using <reference class="org.jooq.impl.DSL" anchor="#inline(java.lang.Object)" title="DSL.inline()"/> methods.
    -										</li>
    -									</ul>
    -									<p>
    -										In both cases, your inlined bind values will be properly escaped to avoid SQL syntax errors and SQL injection. Some examples:
    -									</p>
    -
    -</html><java><![CDATA[
    -// Use dedicated calls to inline() in order to specify
    -// single bind values to be rendered as inline values
    -// --------------------------------------------------
    -create.select()
    -      .from(AUTHOR)
    -      .where(LAST_NAME.equal(inline("Poe")));
    -
    -// Or render the whole query with inlined values
    -// --------------------------------------------------
    -Settings settings = new Settings()
    -    .withStatementType(StatementType.STATIC_STATEMENT);
    -
    -// Add the settings to the Configuration
    -DSLContext create = DSL.using(connection, SQLDialect.ORACLE, settings);
    -
    -// Run queries that omit rendering schema names
    -create.select()
    -      .from(AUTHOR)
    -      .where(LAST_NAME.equal("Poe"));]]></java>
    -								</content>
    -							</section>
    -
    -						    <section id="sql-injection-and-plain-sql-queryparts">
    -							    <title>SQL injection and plain SQL QueryParts</title>
    -								<content><html>
    -									<p>
    -										Special care needs to be taken when using <reference id="plain-sql" title="plain SQL QueryParts"/>. While jOOQ's API allows you to specify bind values for use with plain SQL, you're not forced to do that. For instance, both of the following queries will lead to the same, valid result:
    -									</p>
    -									
    -</html><java><![CDATA[// This query will use bind values, internally.
    -create.fetch("SELECT * FROM BOOK WHERE ID = ? AND TITLE = ?", 5 "Animal Farm");
    -
    -// This query will not use bind values, internally.
    -create.fetch("SELECT * FROM BOOK WHERE ID = 5 AND TITLE = 'Animal Farm'");]]></java><html>
    -
    -									<p>
    -										All methods in the jOOQ API that allow for plain (unescaped, untreated) SQL contain a warning message in their relevant Javadoc, to remind you of the risk of SQL injection in what is otherwise a SQL-injection-safe API.
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -					<section id="queryparts">
    -					    <title>QueryParts</title>
    -						<content><html>
    -							<p>
    -								A <reference class="org.jooq.Query" /> and all its contained objects is a <reference class="org.jooq.QueryPart" />. QueryParts essentially provide this functionality:
    -							</p>
    -							<ul>
    -								<li>they can <reference id="sql-rendering" title="render SQL"/> using the <reference class="org.jooq.QueryPartInternal" anchor="#toSQL(org.jooq.RenderContext)" title="toSQL(RenderContext)"/> method</li>
    -								<li>they can <reference id="variable-binding" title="bind variables"/> using the <reference class="org.jooq.QueryPartInternal" anchor="#bind(org.jooq.BindContext)" title="bind(BindContext)"/> method</li>
    -							</ul>
    -
    -							<p>
    -								Both of these methods are contained in jOOQ's internal API's <reference class="org.jooq.QueryPartInternal"/>, which is internally implemented by every QueryPart.
    -							</p>
    -
    -							<p>
    -								The following sections explain some more details about <reference id="sql-rendering" title="SQL rendering"/> and <reference id="variable-binding" title="variable binding"/>, as well as other implementation details about QueryParts in general.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -						    <section id="sql-rendering">
    -							    <title>SQL rendering</title>
    -								<content><html>
    -									<p>
    -										Every <reference class="org.jooq.QueryPart"/> must implement the <reference class="org.jooq.QueryPartInternal" anchor="#toSQL(org.jooq.RenderContext)" title="toSQL(RenderContext)"/> method to render its SQL string to a <reference class="org.jooq.RenderContext"/>. This RenderContext has two purposes:
    -									</p>
    -									<ul>
    -										<li>It provides some information about the "state" of SQL rendering.</li>
    -										<li>It provides a common API for constructing SQL strings on the context's internal <reference class="java.lang.StringBuilder"/></li>
    -									</ul>
    -									<p>
    -										An overview of the <reference class="org.jooq.RenderContext"/> API is given here:
    -									</p>
    -
    -</html><java><![CDATA[// These methods are useful for generating unique aliases within a RenderContext (and thus within a Query)
    -String peekAlias();
    -String nextAlias();
    -
    -// These methods return rendered SQL
    -String render();
    -String render(QueryPart part);
    -
    -// These methods allow for fluent appending of SQL to the RenderContext's internal StringBuilder
    -RenderContext keyword(String keyword);
    -RenderContext literal(String literal);
    -RenderContext sql(String sql);
    -RenderContext sql(char sql);
    -RenderContext sql(int sql);
    -RenderContext sql(QueryPart part);
    -
    -// These methods allow for controlling formatting of SQL, if the relevant Setting is active
    -RenderContext formatNewLine();
    -RenderContext formatSeparator();
    -RenderContext formatIndentStart();
    -RenderContext formatIndentStart(int indent);
    -RenderContext formatIndentLockStart();
    -RenderContext formatIndentEnd();
    -RenderContext formatIndentEnd(int indent);
    -RenderContext formatIndentLockEnd();
    -
    -// These methods control the RenderContext's internal state
    -boolean       inline();
    -RenderContext inline(boolean inline);
    -boolean       qualify();
    -RenderContext qualify(boolean qualify);
    -boolean       namedParams();
    -RenderContext namedParams(boolean renderNamedParams);
    -CastMode      castMode();
    -RenderContext castMode(CastMode mode);
    -Boolean       cast();
    -RenderContext castModeSome(SQLDialect... dialects);]]></java><html>
    -
    -									<p>
    -										The following additional methods are inherited from a common <reference class="org.jooq.Context"/>, which is shared among <reference class="org.jooq.RenderContext"/> and <reference class="org.jooq.BindContext"/>:
    -									</p>
    -
    -</html><java><![CDATA[// These methods indicate whether fields or tables are being declared (MY_TABLE AS MY_ALIAS) or referenced (MY_ALIAS)
    -boolean declareFields();
    -Context declareFields(boolean declareFields);
    -boolean declareTables();
    -Context declareTables(boolean declareTables);
    -
    -// These methods indicate whether a top-level query is being rendered, or a subquery
    -boolean subquery();
    -Context subquery(boolean subquery);
    -
    -// These methods provide the bind value indices within the scope of the whole Context (and thus of the whole Query)
    -int nextIndex();
    -int peekIndex();]]></java><html>
    -
    -									<h3>An example of rendering SQL</h3>
    -								   	<p>
    -								   		A simple example can be provided by checking out jOOQ's internal representation of a (simplified) <reference id="comparison-predicate" title="CompareCondition"/>. It is used for any <reference class="org.jooq.Condition"/> comparing two fields as for example the <code>AUTHOR.ID = BOOK.AUTHOR_ID</code> condition here:
    -							   		</p>
    -							   		
    -</html><sql>-- [...]
    -FROM AUTHOR
    -JOIN BOOK ON AUTHOR.ID = BOOK.AUTHOR_ID
    --- [...]</sql><html>
    -
    -									<p>
    -										This is how jOOQ renders such a condition (simplified example):
    -									</p>
    -
    -</html><java><![CDATA[@Override
    -public final void toSQL(RenderContext context) {
    -    // The CompareCondition delegates rendering of the Fields to the Fields
    -    // themselves and connects them using the Condition's comparator operator:
    -    context.sql(field1)
    -           .sql(" ")
    -           .sql(comparator.toSQL())
    -           .sql(" ")
    -           .sql(field2);
    -}]]></java><html>
    -
    -									<p>
    -										See the manual's sections about <reference id="custom-queryparts" title="custom QueryParts"/> and <reference id="plain-sql-queryparts" title="plain SQL QueryParts"/> to learn about how to write your own query parts in order to extend jOOQ.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="pretty-printing">
    -								<title>Pretty printing SQL</title>
    -								<content><html>
    -									<p>
    -										As mentioned in the previous chapter about <reference id="sql-rendering" title="SQL rendering"/>, there are some elements in the <reference class="org.jooq.RenderContext"/> that are used for formatting / pretty-printing rendered SQL. In order to obtain pretty-printed SQL, just use the following <reference id="custom-settings" title="custom settings"/>: 
    -									</p>
    -	
    -	
    -</html><java><![CDATA[// Create a DSLContext that will render "formatted" SQL
    -DSLContext pretty = DSL.using(dialect, new Settings().withRenderFormatted(true));]]></java><html>
    -
    -									<p>
    -										And then, use the above DSLContext to render pretty-printed SQL:
    -									</p>
    -									
    -</html><code-pair>
    -<java><![CDATA[String sql = pretty.select(
    -                       AUTHOR.LAST_NAME, count().as("c"))
    -                   .from(BOOK)
    -                   .join(AUTHOR)
    -                   .on(BOOK.AUTHOR_ID.equal(AUTHOR.ID))
    -                   .where(BOOK.TITLE.notEqual("1984"))
    -                   .groupBy(AUTHOR.LAST_NAME)
    -                   .having(count().equal(2))
    -                   .getSQL();]]></java>
    -<sql><![CDATA[select 
    -  "TEST"."AUTHOR"."LAST_NAME", 
    -  count(*) "c"
    -from "TEST"."BOOK"
    -  join "TEST"."AUTHOR"
    -  on "TEST"."BOOK"."AUTHOR_ID" = "TEST"."AUTHOR"."ID"
    -where "TEST"."BOOK"."TITLE" <> '1984'
    -group by "TEST"."AUTHOR"."LAST_NAME"
    -having count(*) = 2]]></sql>
    -</code-pair><html>
    -
    -									<p>
    -										The section about <reference id="execute-listeners" title="ExecuteListeners"/> shows an example of how such pretty printing can be used to log readable SQL to the stdout.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -						    <section id="variable-binding">
    -							    <title>Variable binding</title>
    -								<content><html>
    -									<p>
    -										Every <reference class="org.jooq.QueryPart"/> must implement the <reference class="org.jooq.QueryPartInternal" anchor="#bind(org.jooq.BindContext)" title="bind(BindContext)"/> method. This BindContext has two purposes:
    -									</p>
    -									<ul>
    -										<li>It provides some information about the "state" of the variable binding in process.</li>
    -										<li>It provides a common API for binding values to the context's internal <reference class="java.sql.PreparedStatement"/></li>
    -									</ul>
    -									<p>
    -										An overview of the <reference class="org.jooq.RenderContext"/> API is given here:
    -									</p>
    -
    -</html><java><![CDATA[// This method provides access to the PreparedStatement to which bind values are bound
    -PreparedStatement statement();
    -
    -// These methods provide convenience to delegate variable binding
    -BindContext bind(QueryPart part) throws DataAccessException;
    -BindContext bind(Collection<? extends QueryPart> parts) throws DataAccessException;
    -BindContext bind(QueryPart[] parts) throws DataAccessException;
    -
    -// These methods perform the actual variable binding
    -BindContext bindValue(Object value, Class<?> type) throws DataAccessException;
    -BindContext bindValues(Object... values) throws DataAccessException;]]></java><html>
    -
    -									<p>
    -										Some additional methods are inherited from a common <reference class="org.jooq.Context"/>, which is shared among <reference class="org.jooq.RenderContext"/> and <reference class="org.jooq.BindContext"/>. Details are documented in the previous chapter about <reference id="sql-rendering" title="SQL rendering"/>
    -									</p>
    -
    -									<h3>An example of binding values to SQL</h3>
    -								   	<p>
    -								   		A simple example can be provided by checking out jOOQ's internal representation of a (simplified) <reference id="comparison-predicate" title="CompareCondition"/>. It is used for any <reference class="org.jooq.Condition"/> comparing two fields as for example the <code>AUTHOR.ID = BOOK.AUTHOR_ID</code> condition here:
    -							   		</p>
    -							   		
    -</html><sql>-- [...]
    -WHERE AUTHOR.ID = ?
    --- [...]</sql><html>
    -
    -									<p>
    -										This is how jOOQ binds values on such a condition:
    -									</p>
    -</html><java><![CDATA[@Override
    -public final void bind(BindContext context) throws DataAccessException {
    -    // The CompareCondition itself does not bind any variables.
    -    // But the two fields involved in the condition might do so...
    -    context.bind(field1).bind(field2);
    -}]]></java><html>
    -
    -									<p>
    -										See the manual's sections about <reference id="custom-queryparts" title="custom QueryParts"/> and <reference id="plain-sql-queryparts" title="plain SQL QueryParts"/> to learn about how to write your own query parts in order to extend jOOQ.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -						    <section id="custom-queryparts">
    -							    <title>Extend jOOQ with custom types</title>
    -								<content><html>
    -									<p>
    -										If a SQL clause is too complex to express with jOOQ, you can extend either one of the following types for use directly in a jOOQ query:
    -									</p>
    -									
    -</html><java><![CDATA[public abstract class CustomField<T> extends AbstractField<T> {}
    -public abstract class CustomCondition extends AbstractCondition {}
    -public abstract class CustomTable<R extends TableRecord<R>> extends TableImpl<R> {}
    -public abstract class CustomRecord<R extends TableRecord<R>> extends TableRecordImpl<R> {}]]></java><html>
    -
    -									<p>
    -										These classes are declared public and covered by jOOQ's integration tests. When you extend these classes, you will have to provide your own implementations for the <reference id="queryparts" title="QueryParts'"/> <reference id="sql-rendering" title="toSQL()"/> and <reference id="variable-binding" title="bind()"/> methods, as discussed before:
    -									</p>
    -									
    -</html><java><![CDATA[// This method must produce valid SQL. If your QueryPart contains other QueryParts, you may delegate SQL generation to them
    -// in the correct order, passing the render context.
    -//
    -// If context.inline() is true, you must inline all bind variables
    -// If context.inline() is false, you must generate ? for your bind variables
    -public void toSQL(RenderContext context);
    -
    -// This method must bind all bind variables to a PreparedStatement. If your QueryPart contains other QueryParts, $
    -// you may delegate variable binding to them in the correct order, passing the bind context.
    -//
    -// Every QueryPart must ensure, that it starts binding its variables at context.nextIndex().
    -public void bind(BindContext context) throws DataAccessException;]]></java><html>
    -
    -									<p>
    -										The above contract may be a bit tricky to understand at first. The best thing is to check out jOOQ source code and have a look at a couple of QueryParts, to see how it's done. Here's an example <reference class="org.jooq.impl.CustomField"/> showing how to create a field multiplying another field by 2
    -									</p>
    -									
    -</html><java><![CDATA[// Create an anonymous CustomField, initialised with BOOK.ID arguments
    -final Field<Integer> IDx2 = new CustomField<Integer>(BOOK.ID.getName(), BOOK.ID.getDataType()) {
    -    @Override
    -    public void toSQL(RenderContext context) {
    -    
    -        // In inline mode, render the multiplication directly
    -        if (context.inline()) {
    -            context.sql(BOOK.ID).sql(" * 2");
    -        }
    -        
    -        // In non-inline mode, render a bind value
    -        else {
    -            context.sql(BOOK.ID).sql(" * ?");
    -        }
    -    }
    -
    -    @Override
    -    public void bind(BindContext context) {
    -        try {
    -        
    -            // Manually bind the value 2
    -            context.statement().setInt(context.nextIndex(), 2);
    -            
    -            // Alternatively, you could also write:
    -            // context.bind(DSL.val(2));
    -        }
    -        catch (SQLException e) {
    -            throw translate(getSQL(), e);
    -        }
    -    }
    -};
    -
    -// Use the above field in a SQL statement:
    -create.select(IDx2).from(BOOK);]]></java>    								
    -								</content>
    -							</section>
    -							
    -						    <section id="plain-sql-queryparts">
    -							    <title>Plain SQL QueryParts</title>
    -								<content><html>
    -									<p>
    -										If you don't need the integration of rather complex QueryParts into jOOQ, then you might be safer using simple <reference id="plain-sql" title="Plain SQL"/> functionality, where you can provide jOOQ with a simple String representation of your embedded SQL. Plain SQL methods in jOOQ's API come in two flavours. 
    -									</p>
    -									<ul>
    -										<li><strong>method(String, Object...)</strong>: This is a method that accepts a SQL string and a list of bind values that are to be bound to the variables contained in the SQL string</li>
    -										<li><strong>method(String, QueryPart...)</strong>: This is a method that accepts a SQL string and a list of QueryParts that are "injected" at the position of their respective placeholders in the SQL string</li>
    -									</ul>
    -									<p>
    -										The above distinction is best explained using an example:
    -									</p>
    -									
    -</html><java><![CDATA[// Plain SQL using bind values. The value 5 is bound to the first variable, "Animal Farm" to the second variable:
    -create.selectFrom(BOOK).where("BOOK.ID = ? AND TITLE = ?", 5, "Animal Farm");
    -
    -// Plain SQL using placeholders (counting from zero). 
    -// The QueryPart "id" is substituted for the placeholder {0}, the QueryPart "title" for {1}
    -Field<Integer> id   = val(5);
    -Field<String> title = val("Animal Farm");
    -create.selectFrom(BOOK).where("BOOK.ID = {0} AND TITLE = {1}", id, title);]]></java><html>
    -
    -									<p>
    -										The above technique allows for creating rather complex SQL clauses that are currently not supported by jOOQ, without extending any of the <reference id="custom-queryparts" title="custom QueryParts"/> as indicated in the previous chapter.
    -									</p>									
    -								</html></content>
    -							</section>
    -
    -						    <section id="serializability">
    -							    <title>Serializability</title>
    -								<content><html>
    -									<p>
    -										The only transient, non-serializable element in any jOOQ object is the <reference id="dsl-context" title="Configuration's"/> underlying <reference class="java.sql.Connection"/>. When you want to execute queries after de-serialisation, or when you want to store/refresh/delete <reference id="crud-with-updatablerecords" title="Updatable Records"/>, you may have to "re-attach" them to a Configuration
    -									</p>
    -
    -</html><java><![CDATA[// Deserialise a SELECT statement
    -ObjectInputStream in = new ObjectInputStream(...);
    -Select<?> select = (Select<?>) in.readObject();
    -
    -// This will throw a DetachedException:
    -select.execute();
    -
    -// In order to execute the above select, attach it first
    -DSLContext create = DSL.using(connection, SQLDialect.ORACLE);
    -create.attach(select);]]></java><html>
    -
    -									<h3>Automatically attaching QueryParts</h3>
    -									<p>
    -										Another way of attaching QueryParts automatically, or rather providing them with a new <reference class="java.sql.Connection"/> at will, is to hook into the <reference id="execute-listeners" title="Execute Listener support"/>. More details about this can be found in the manual's chapter about <reference id="execute-listeners" title="ExecuteListeners"/>
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -					
    -					<section id="scala-sql-building">
    -						<title>SQL building in Scala</title>
    -						<content><html>
    -							<p>
    -								jOOQ-Scala is a maven module used for leveraging some advanced Scala features for those users that wish to use jOOQ with Scala.
    -							</p>
    -							
    -							<h3>Using Scala's implicit defs to allow for operator overloading</h3>
    -							<p>
    -								The most obvious Scala feature to use in jOOQ are implicit defs for implicit conversions in order to enhance the <reference class="org.jooq.Field"/> type with SQL-esque operators. 
    -							</p>
    -							<p>
    -								The following depicts a trait which wraps all fields:
    -							</p>
    -							
    -</html><scala><![CDATA[/**
    - * A Scala-esque representation of {@link org.jooq.Field}, adding overloaded
    - * operators for common jOOQ operations to arbitrary fields
    - */
    -trait SAnyField[T] extends Field[T] {
    -
    -    // String operations
    -    // -----------------
    -
    -    def ||(value : String)            : Field[String]
    -    def ||(value : Field[_])          : Field[String]
    -
    -    // Comparison predicates
    -    // ---------------------
    -
    -    def ===(value : T)                : Condition
    -    def ===(value : Field[T])         : Condition
    -
    -    def !==(value : T)                : Condition
    -    def !==(value : Field[T])         : Condition
    -
    -    def <>(value : T)                 : Condition
    -    def <>(value : Field[T])          : Condition
    -
    -    def >(value : T)                  : Condition
    -    def >(value : Field[T])           : Condition
    -
    -    def >=(value : T)                 : Condition
    -    def >=(value : Field[T])          : Condition
    -
    -    def <(value : T)                  : Condition
    -    def <(value : Field[T])           : Condition
    -
    -    def <=(value : T)                 : Condition
    -    def <=(value : Field[T])          : Condition
    -
    -    def <=>(value : T)                : Condition
    -    def <=>(value : Field[T])         : Condition
    -}]]></scala><html>
    -
    -							<p>
    -								The following depicts a trait which wraps numeric fields:
    -							</p>
    -							
    -</html><scala><![CDATA[/**
    - * A Scala-esque representation of {@link org.jooq.Field}, adding overloaded
    - * operators for common jOOQ operations to numeric fields
    - */
    -trait SNumberField[T <: Number] extends SAnyField[T] {
    -
    -    // Arithmetic operations
    -    // ---------------------
    -
    -    def unary_-                       : Field[T]
    -
    -    def +(value : Number)             : Field[T]
    -    def +(value : Field[_ <: Number]) : Field[T]
    -
    -    def -(value : Number)             : Field[T]
    -    def -(value : Field[_ <: Number]) : Field[T]
    -
    -    def *(value : Number)             : Field[T]
    -    def *(value : Field[_ <: Number]) : Field[T]
    -
    -    def /(value : Number)             : Field[T]
    -    def /(value : Field[_ <: Number]) : Field[T]
    -
    -    def %(value : Number)             : Field[T]
    -    def %(value : Field[_ <: Number]) : Field[T]
    -
    -    // Bitwise operations
    -    // ------------------
    -
    -    def unary_~                       : Field[T]
    -
    -    def &(value : T)                  : Field[T]
    -    def &(value : Field[T])           : Field[T]
    -
    -    def |(value : T)                  : Field[T]
    -    def |(value : Field[T])           : Field[T]
    -
    -    def ^(value : T)                  : Field[T]
    -    def ^(value : Field[T])           : Field[T]
    -
    -    def <<(value : T)                 : Field[T]
    -    def <<(value : Field[T])          : Field[T]
    -
    -    def >>(value : T)                 : Field[T]
    -    def >>(value : Field[T])          : Field[T]
    -}]]></scala><html>
    -
    -							<p>
    -								An example query using such overloaded operators would then look like this:
    -							</p>
    -							
    -</html><scala><![CDATA[select (
    -  T_BOOK.ID * T_BOOK.AUTHOR_ID,
    -  T_BOOK.ID + T_BOOK.AUTHOR_ID * 3 + 4,
    -  T_BOOK.TITLE || " abc" || " xy")
    -from T_BOOK
    -leftOuterJoin (
    -  select (x.ID, x.YEAR_OF_BIRTH)
    -  from x
    -  limit 1
    -  asTable x.getName()
    -)
    -on T_BOOK.AUTHOR_ID === x.ID
    -where (T_BOOK.ID <> 2)
    -or (T_BOOK.TITLE in ("O Alquimista", "Brida"))
    -fetch]]></scala><html>
    -
    -							<h3>Scala 2.10 Macros</h3>
    -							<p>
    -								This feature is still being experimented with. With Scala Macros, it might be possible to inline a true SQL dialect into the Scala syntax, backed by the jOOQ API. Stay tuned!
    -							</p>
    -						</html></content>
    -					</section>
    -				</sections>
    -			</section>
    -
    -			<section id="sql-execution">
    -				<title>SQL execution</title>
    -				<content><html>
    -					<p>
    -						In a previous section of the manual, we've seen how jOOQ can be used to <reference id="sql-building" title="build SQL"/> that can be executed with any API including JDBC or ... jOOQ. This section of the manual deals with various means of actually executing SQL with jOOQ.
    -					</p>
    -					
    -					<h3>SQL execution with JDBC</h3>
    -					<p>
    -						JDBC calls executable objects "<reference class="java.sql.Statement"/>". It distinguishes between three types of statements:
    -					</p>
    -					<ul>
    -						<li><reference class="java.sql.Statement"/>, or "static statement": This statement type is used for any arbitrary type of SQL statement. It is particularly useful with <reference id="inlined-parameters" title="inlined parameters"/></li>
    -						<li><reference class="java.sql.PreparedStatement"/>: This statement type is used for any arbitrary type of SQL statement. It is particularly useful with <reference id="indexed-parameters" title="indexed parameters"/> (note that JDBC does not support <reference id="named-parameters" title="named parameters"/>)</li>
    -						<li><reference class="java.sql.CallableStatement"/>: This statement type is used for SQL statements that are "called" rather than "executed". In particular, this includes calls to <reference id="stored-procedures" title="stored procedures"/>. Callable statements can register OUT parameters</li>
    -					</ul>
    -					<p>
    -						Today, the JDBC API may look weird to users being used to object-oriented design. While statements hide a lot of SQL dialect-specific implementation details quite well, they assume a lot of knowledge about the internal state of a statement. For instance, you can use the <reference class="java.sql.PreparedStatement" anchor="#addBatch()" title="PreparedStatement.addBatch()"/> method, to add a the prepared statement being created to an "internal list" of batch statements. Instead of returning a new type, this method forces user to reflect on the prepared statement's internal state or "mode".
    -					</p>
    -					
    -					<h3>jOOQ is wrapping JDBC</h3>
    -					<p>						
    -						These things are abstracted away by jOOQ, which exposes such concepts in a more object-oriented way. For more details about jOOQ's batch query execution, see the manual's section about <reference id="batch-execution" title="batch execution"/>.
    -					</p> 
    -					<p>
    -						The following sections of this manual will show how jOOQ is wrapping JDBC for SQL execution
    -					</p>
    -				</html></content>
    -
    -				<sections>
    -					<section id="comparison-with-jdbc">
    -						<title>Comparison between jOOQ and JDBC</title>
    -						<content><html>
    -							<h3>Similarities with JDBC</h3>
    -							<p>
    -								Even if there are <reference id="query-vs-resultquery" title="two general types of Query"/>, there are a lot of similarities between JDBC and jOOQ. Just to name a few:
    -							</p>
    -							<ul>
    -								<li>Both APIs return the number of affected records in non-result queries. JDBC: <reference class="java.sql.Statement" anchor="#executeUpdate(java.lang.String)" title="Statement.executeUpdate()"/>, jOOQ: <reference class="org.jooq.Query" anchor="#execute()" title="Query.execute()"/></li>
    -								<li>Both APIs return a scrollable result set type from result queries. JDBC: <reference class="java.sql.ResultSet"/>, jOOQ: <reference class="org.jooq.Result"/></li>
    -							</ul>
    -							
    -							<h3>Differences to JDBC</h3>
    -							<p>
    -								Some of the most important differences between JDBC and jOOQ are listed here:
    -							</p>
    -							<ul>
    -								<li><reference id="query-vs-resultquery" title="Query vs. ResultQuery"/>: JDBC does not formally distinguish between queries that can return results, and queries that cannot. The same API is used for both. This greatly reduces the possibility for <reference id="fetching" title="fetching convenience methods"/></li>
    -								<li><reference id="exception-handling" title="Exception handling"/>: While SQL uses the checked <reference class="java.sql.SQLException"/>, jOOQ wraps all exceptions in an unchecked <reference class="org.jooq.exception.DataAccessException"/></li>
    -								<li><reference class="org.jooq.Result"/>: Unlike its JDBC counter-part, this type implements <reference class="java.util.List"/> and is fully loaded into Java memory, freeing resources as early as possible. Just like statements, this means that users don't have to deal with a "weird" internal result set state.</li>
    -								<li><reference class="org.jooq.Cursor"/>: If you want more fine-grained control over how many records are fetched into memory at once, you can still do that using jOOQ's <reference id="lazy-fetching" title="lazy fetching"/> feature</li>
    -								<li><reference id="statement-type" title="Statement type"/>: jOOQ does not formally distinguish between static statements and prepared statements. By default, all statements are prepared statements in jOOQ, internally. Executing a statement as a static statement can be done simply using a <reference id="custom-settings" title="custom settings flag"/></li>
    -								<li><reference id="reusing-statements" title="Closing Statements"/>: JDBC keeps open resources even if they are already consumed. With JDBC, there is a lot of verbosity around safely closing resources. In jOOQ, resources are closed after consumption, by default. If you want to keep them open after consumption, you have to explicitly say so.</li>
    -                                <li><reference id="jdbc-flags" title="JDBC flags"/>: JDBC execution flags and modes are not modified. They can be set fluently on a <reference id="query-vs-resultquery" title="Query"/></li>
    -							</ul>
    -						</html></content>
    -					</section>
    -				    
    -				    <section id="query-vs-resultquery">
    -						<title>Query vs. ResultQuery</title>
    -						<content><html>
    -							<p>
    -								Unlike JDBC, jOOQ has a lot of knowledge about a SQL query's structure and internals (see the manual's section about <reference id="sql-building" title="SQL building"/>). Hence, jOOQ distinguishes between these two fundamental types of queries. While every <reference class="org.jooq.Query"/> can be executed, only <reference class="org.jooq.ResultQuery"/> can return results (see the manual's section about <reference id="fetching" title="fetching"/> to learn more about fetching results). With plain SQL, the distinction can be made clear most easily:
    -							</p>
    -							
    -</html><java><![CDATA[// Create a Query object and execute it:
    -Query query = create.query("DELETE FROM BOOK");
    -query.execute();
    -
    -// Create a ResultQuery object and execute it, fetching results:
    -ResultQuery<Record> resultQuery = create.resultQuery("SELECT * FROM BOOK");
    -Result<Record> resultQuery.fetch();]]></java>
    -						</content>
    -					</section>
    -
    -				    <section id="fetching">
    -						<title>Fetching</title>
    -						<content><html>
    -							<p>
    -								Fetching is something that has been completely neglegted by JDBC and also by various other database abstraction libraries. Fetching is much more than just looping or listing records or mapped objects. There are so many ways you may want to fetch data from a database, it should be considered a first-class feature of any database abstraction API. Just to name a few, here are some of jOOQ's fetching modes:
    -							</p>
    -							<ul>
    -								<li><reference id="record-vs-tablerecord" title="Untyped vs. typed fetching"/>: Sometimes you care about the returned type of your records, sometimes (with arbitrary projections) you don't.</li>
    -								<li><reference id="arrays-maps-and-lists" title="Fetching arrays, maps, or lists"/>: Instead of letting you transform your result sets into any more suitable data type, a library should do that work for you.</li>
    -								<li><reference id="recordhandler" title="Fetching through handler callbacks"/>: This is an entirely different fetching paradigm. With Java 8's lambda expressions, this will become even more powerful.</li>
    -								<li><reference id="recordmapper" title="Fetching through mapper callbacks"/>: This is an entirely different fetching paradigm. With Java 8's lambda expressions, this will become even more powerful.</li>
    -								<li><reference id="pojos" title="Fetching custom POJOs"/>: This is what made Hibernate and JPA so strong. Automatic mapping of tables to custom POJOs.</li>
    -								<li><reference id="lazy-fetching" title="Lazy vs. eager fetching"/>: It should be easy to distinguish these two fetch modes.</li>
    -								<li><reference id="many-fetching" title="Fetching many results"/>: Some databases allow for returning many result sets from a single query. JDBC can handle this but it's very verbose. A list of results should be returned instead.</li>
    -								<li><reference id="later-fetching" title="Fetching data asynchronously"/>: Some queries take too long to execute to wait for their results. You should be able to spawn query execution in a separate process.</li>
    -							</ul>
    -							
    -							<h3>Convenience and how ResultQuery, Result, and Record share API</h3>
    -							<p>
    -								The term "fetch" is always reused in jOOQ when you can fetch data from the database. An <reference class="org.jooq.ResultQuery"/> provides many overloaded means of fetching data:
    -							</p>
    -							
    -							<h3>Various modes of fetching</h3>
    -							<p>
    -								These modes of fetching are also documented in subsequent sections of the manual
    -							</p>
    -							
    -</html><java><![CDATA[// The "standard" fetch
    -Result<R> fetch();    
    -
    -// The "standard" fetch when you know your query returns only one record
    -R fetchOne();
    -
    -// The "standard" fetch when you only want to fetch the first record
    -R fetchAny();
    -
    -// Create a "lazy" Cursor, that keeps an open underlying JDBC ResultSet
    -Cursor<R> fetchLazy();
    -Cursor<R> fetchLazy(int fetchSize);
    -
    -// Fetch several results at once
    -List<Result<Record>> fetchMany();
    -
    -// Fetch records into a custom callback
    -<H extends RecordHandler<R>> H fetchInto(H handler);
    -
    -// Map records using a custom callback
    -<E> List<E> fetch(RecordMapper<? super R, E> mapper);
    -
    -// Execute a ResultQuery with jOOQ, but return a JDBC ResultSet, not a jOOQ object
    -ResultSet fetchResultSet();]]></java><html>
    -							
    -							<h3>Fetch convenience</h3>
    -							<p>
    -								These means of fetching are also available from <reference class="org.jooq.Result"/> and <reference class="org.jooq.Record"/> APIs
    -							</p>
    -
    -</html><java><![CDATA[// These methods are convenience for fetching only a single field, 
    -// possibly converting results to another type
    -<T>    List<T> fetch(Field<T> field);
    -<T>    List<T> fetch(Field<?> field, Class<? extends T> type);
    -<T, U> List<U> fetch(Field<T> field, Converter<? super T, U> converter);
    -       List<?> fetch(int fieldIndex);
    -<T>    List<T> fetch(int fieldIndex, Class<? extends T> type);
    -<U>    List<U> fetch(int fieldIndex, Converter<?, U> converter);
    -       List<?> fetch(String fieldName);
    -<T>    List<T> fetch(String fieldName, Class<? extends T> type);
    -<U>    List<U> fetch(String fieldName, Converter<?, U> converter);
    -
    -// These methods are convenience for fetching only a single field, possibly converting results to another type
    -// Instead of returning lists, these return arrays
    -<T>    T[]      fetchArray(Field<T> field);
    -<T>    T[]      fetchArray(Field<?> field, Class<? extends T> type);
    -<T, U> U[]      fetchArray(Field<T> field, Converter<? super T, U> converter);
    -       Object[] fetchArray(int fieldIndex);
    -<T>    T[]      fetchArray(int fieldIndex, Class<? extends T> type);
    -<U>    U[]      fetchArray(int fieldIndex, Converter<?, U> converter);
    -       Object[] fetchArray(String fieldName);
    -<T>    T[]      fetchArray(String fieldName, Class<? extends T> type);
    -<U>    U[]      fetchArray(String fieldName, Converter<?, U> converter);
    -
    -// These methods are convenience for fetching only a single field from a single record, 
    -// possibly converting results to another type
    -<T>    T      fetchOne(Field<T> field);
    -<T>    T      fetchOne(Field<?> field, Class<? extends T> type);
    -<T, U> U      fetchOne(Field<T> field, Converter<? super T, U> converter);
    -       Object fetchOne(int fieldIndex);
    -<T>    T      fetchOne(int fieldIndex, Class<? extends T> type);
    -<U>    U      fetchOne(int fieldIndex, Converter<?, U> converter);
    -       Object fetchOne(String fieldName);
    -<T>    T      fetchOne(String fieldName, Class<? extends T> type);
    -<U>    U      fetchOne(String fieldName, Converter<?, U> converter);]]></java><html>
    -
    -							<h3>Fetch transformations</h3>
    -							<p>
    -								These means of fetching are also available from <reference class="org.jooq.Result"/> and <reference class="org.jooq.Record"/> APIs
    -							</p>
    -							
    -</html><java><![CDATA[// Transform your Records into arrays, Results into matrices
    -       Object[][] fetchArrays();
    -       Object[]   fetchOneArray();
    -       
    -// Reduce your Result object into maps
    -<K>    Map<K, R>      fetchMap(Field<K> key);
    -<K, V> Map<K, V>      fetchMap(Field<K> key, Field<V> value);
    -<K, E> Map<K, E>      fetchMap(Field<K> key, Class<E> value);
    -       Map<Record, R> fetchMap(Field<?>[] key);
    -<E>    Map<Record, E> fetchMap(Field<?>[] key, Class<E> value);       
    -
    -// Transform your Result object into maps
    -       List<Map<String, Object>> fetchMaps();
    -       Map<String, Object>       fetchOneMap();
    -
    -// Transform your Result object into groups
    -<K>    Map<K, Result<R>>      fetchGroups(Field<K> key);
    -<K, V> Map<K, List<V>>        fetchGroups(Field<K> key, Field<V> value);
    -<K, E> Map<K, List<E>>        fetchGroups(Field<K> key, Class<E> value);
    -       Map<Record, Result<R>> fetchGroups(Field<?>[] key);
    -<E>    Map<Record, List<E>>   fetchGroups(Field<?>[] key, Class<E> value);
    -
    -// Transform your Records into custom POJOs
    -<E>    List<E> fetchInto(Class<? extends E> type);
    -
    -// Transform your records into another table type
    -<Z extends Record> Result<Z> fetchInto(Table<Z> table);]]></java><html>
    -
    -							<p>
    -								Note, that apart from the <reference class="org.jooq.ResultQuery" anchor="#fetchLazy()" title="fetchLazy()"/> methods, all fetch() methods will immediately close underlying JDBC result sets.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="record-vs-tablerecord">
    -								<title>Record vs. TableRecord</title>
    -								<content><html>
    -									<p>
    -										jOOQ understands that SQL is much more expressive than Java, when it comes to the declarative typing of <reference id="table-expressions" title="table expressions"/>. As a declarative language, SQL allows for creating ad-hoc row value expressions (records with indexed columns, or tuples) and records (records with named columns). In Java, this is not possible to the same extent. Yet, still, sometimes you wish to use strongly typed records, when you know that you're selecting only from a single table
    -									</p>
    -									
    -									<h3>Fetching strongly or weakly typed records</h3>
    -									<p>
    -										When fetching data only from a single table, the <reference id="table-expressions" title="table expression's"/> type is known to jOOQ if you use jOOQ's <reference id="code-generation" title="code generator"/> to generate <reference id="codegen-records" title="TableRecords"/> for your database tables. In order to fetch such strongly typed records, you will have to use the <reference id="select-statement" title="simple select API"/>:
    -									</p>
    -
    -</html><java><![CDATA[// Use the selectFrom() method:
    -BookRecord book = create.selectFrom(BOOK).where(BOOK.ID.equal(1)).fetchOne();
    -
    -// Typesafe field access is now possible:
    -System.out.println("Title       : " + book.getTitle());
    -System.out.println("Published in: " + book.getPublishedIn());]]></java><html>
    -									
    -									<p>
    -										When you use the <reference class="org.jooq.DSLContext" anchor="#selectFrom(org.jooq.Table)" title="DSLContext.selectFrom()"/> method, jOOQ will return the record type supplied with the argument table. Beware though, that you will no longer be able to use any clause that modifies the type of your <reference id="table-expressions" title="table expression"/>. This includes: 
    -									</p>
    -									<ul>
    -                   						<li><reference id="select-clause" title="The SELECT clause"/></li>
    -                   						<li><reference id="join-clause" title="The JOIN clause"/></li>
    -                   					</ul>		
    -								</html></content>
    -							</section>
    -
    -							<section id="record-n">
    -								<title>Record1 to Record{max-row-degree}</title>
    -								<content><html>
    -									<p>
    -										jOOQ's <reference id="row-value-expressions" title="row value expression (or tuple)"/> support has been explained earlier in this manual. It is useful for constructing row value expressions where they can be used in SQL. The same typesafety is also applied to records for degrees up to {max-row-degree}. To express this fact, <reference class="org.jooq.Record"/> is extended by <reference class="org.jooq.Record1"/> to <reference class="org.jooq.Record{max-row-degree}"/>. Apart from the fact that these extensions of the R type can be used throughout the <reference id="dsl-and-non-dsl" title="jOOQ DSL"/>, they also provide a useful API. Here is <reference class="org.jooq.Record2"/>, for instance: 
    -									</p>
    -
    -</html><java><![CDATA[public interface Record2<T1, T2> extends Record {
    -
    -    // Access fields and values as row value expressions
    -    Row2<T1, T2> fieldsRow();
    -    Row2<T1, T2> valuesRow();
    -
    -    // Access fields by index
    -    Field<T1> field1();
    -    Field<T2> field2();
    -
    -    // Access values by index
    -    T1 value1();
    -    T2 value2();
    -}]]></java><html>
    -
    -									<h3>Higher-degree records</h3>
    -									<p>
    -										jOOQ chose to explicitly support degrees up to {max-row-degree} to match Scala's typesafe tuple, function and product support. Unlike Scala, however, jOOQ also supports higher degrees without the additional typesafety. 
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="arrays-maps-and-lists">
    -								<title>Arrays, Maps and Lists</title>
    -								<content><html>
    -									<p>
    -										By default, jOOQ returns an <reference class="org.jooq.Result"/> object, which is essentially a <reference class="java.util.List"/> of <reference class="org.jooq.Record"/>. Often, you will find yourself wanting to transform this result object into a type that corresponds more to your specific needs. Or you just want to list all values of one specific column. Here are some examples to illustrate those use cases:
    -									</p>
    -									
    -</html><java><![CDATA[// Fetching only book titles (the two calls are equivalent):
    -List<String> titles1 = create.select().from(BOOK).fetch().getValues(BOOK.TITLE);
    -List<String> titles2 = create.select().from(BOOK).fetch(BOOK.TITLE);
    -String[]     titles3 = create.select().from(BOOK).fetchArray(BOOK.TITLE);
    -
    -// Fetching only book IDs, converted to Long
    -List<Long> ids1 = create.select().from(BOOK).fetch().getValues(BOOK.ID, Long.class);
    -List<Long> ids2 = create.select().from(BOOK).fetch(BOOK.ID, Long.class);
    -Long[]     ids3 = create.select().from(BOOK).fetchArray(BOOK.ID, Long.class);
    -
    -// Fetching book IDs and mapping each ID to their records or titles
    -Map<Integer, BookRecord> map1 = create.selectFrom(BOOK).fetch().intoMap(BOOK.ID);
    -Map<Integer, BookRecord> map2 = create.selectFrom(BOOK).fetchMap(BOOK.ID);
    -Map<Integer, String>     map3 = create.selectFrom(BOOK).fetch().intoMap(BOOK.ID, BOOK.TITLE);
    -Map<Integer, String>     map4 = create.selectFrom(BOOK).fetchMap(BOOK.ID, BOOK.TITLE);
    -
    -// Group by AUTHOR_ID and list all books written by any author:       
    -Map<Integer, Result<BookRecord>> group1 = create.selectFrom(BOOK).fetch().intoGroups(BOOK.AUTHOR_ID);
    -Map<Integer, Result<BookRecord>> group2 = create.selectFrom(BOOK).fetchGroups(BOOK.AUTHOR_ID);
    -Map<Integer, List<String>>       group3 = create.selectFrom(BOOK).fetch().intoGroups(BOOK.AUTHOR_ID, BOOK.TITLE);
    -Map<Integer, List<String>>       group4 = create.selectFrom(BOOK).fetchGroups(BOOK.AUTHOR_ID, BOOK.TITLE);]]></java><html>									
    -
    -									<p>
    -										Note that most of these convenience methods are available both through <reference class="org.jooq.ResultQuery"/> and <reference class="org.jooq.Result"/>, some are even available through <reference class="org.jooq.Record"/> as well.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="recordhandler">
    -								<title>RecordHandler</title>
    -								<content><html>
    -									<p>
    -										In a more functional operating mode, you might want to write callbacks that receive records from your select statement results in order to do some processing. This is a common data access pattern in Spring's JdbcTemplate, and it is also available in jOOQ. With jOOQ, you can implement your own <reference class="org.jooq.RecordHandler"/> classes and plug them into jOOQ's <reference class="org.jooq.ResultQuery"/>:
    -									</p>
    -									
    -</html><java><![CDATA[// Write callbacks to receive records from select statements
    -create.selectFrom(BOOK)
    -      .orderBy(BOOK.ID)
    -      .fetch()
    -      .into(new RecordHandler<BookRecord>() {
    -          @Override
    -          public void next(BookRecord book) {
    -              Util.doThingsWithBook(book);
    -          }
    -      });
    -      
    -// Or more concisely
    -create.selectFrom(BOOK)
    -      .orderBy(BOOK.ID)
    -      .fetchInto(new RecordHandler<BookRecord>() {...});
    -      
    -// Or even more concisely with Java 8's lambda expressions:
    -create.selectFrom(BOOK)
    -      .orderBy(BOOK.ID)
    -      .fetchInto(book -> { Util.doThingsWithBook(book); }; );
    -]]></java><html>
    -
    -									<p>
    -										See also the manual's section about the <reference id="recordmapper" title="RecordMapper"/>, which provides similar features
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="recordmapper">
    -								<title>RecordMapper</title>
    -								<content><html>
    -									<p>
    -										In a more functional operating mode, you might want to write callbacks that map records from your select statement results in order to do some processing. This is a common data access pattern in Spring's JdbcTemplate, and it is also available in jOOQ. With jOOQ, you can implement your own <reference class="org.jooq.RecordMapper"/> classes and plug them into jOOQ's <reference class="org.jooq.ResultQuery"/>:
    -									</p>
    -									
    -</html><java><![CDATA[// Write callbacks to receive records from select statements
    -List<Integer> ids =
    -create.selectFrom(BOOK)
    -      .orderBy(BOOK.ID)
    -      .fetch()
    -      .map(new RecordMapper<BookRecord, Integer>() {
    -          @Override
    -          public Integer map(BookRecord book) {
    -              return book.getId();
    -          }
    -      });
    -      
    -// Or more concisely
    -create.selectFrom(BOOK)
    -      .orderBy(BOOK.ID)
    -      .fetch(new RecordMapper<BookRecord, Integer>() {...});
    -      
    -// Or even more concisely with Java 8's lambda expressions:
    -create.selectFrom(BOOK)
    -      .orderBy(BOOK.ID)
    -      .fetch(book -> book.getId());
    -]]></java><html>
    -
    -                                    <p>
    -                                        Your custom <code>RecordMapper</code> types can be used automatically through jOOQ's <reference id="pojos" title="POJO mapping APIs"/>, by injecting a <reference id="pojos-with-recordmapper-provider" title="RecordMapperProvider"/> into your <reference id="dsl-context" title="Configuration"/>. 
    -                                    </p>
    -
    -									<p>
    -										See also the manual's section about the <reference id="recordhandler" title="RecordHandler"/>, which provides similar features
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="pojos">
    -								<title>POJOs</title>
    -								<content><html>
    -									<p>
    -										Fetching data in records is fine as long as your application is not really layered, or as long as you're still writing code in the DAO layer. But if you have a more advanced application architecture, you may not want to allow for jOOQ artefacts to leak into other layers. You may choose to write POJOs (Plain Old Java Objects) as your primary DTOs (Data Transfer Objects), without any dependencies on jOOQ's <reference class="org.jooq.Record"/> types, which may even potentially hold a reference to a <reference id="dsl-context" title="Configuration"/>, and thus a JDBC <reference class="java.sql.Connection"/>. Like Hibernate/JPA, jOOQ allows you to operate with POJOs. Unlike Hibernate/JPA, jOOQ does not "attach" those POJOs or create proxies with any magic in them.
    -									</p>
    -									<p>
    -										If you're using jOOQ's <reference id="code-generation" title="code generator"/>, you can configure it to <reference id="codegen-pojos" title="generate POJOs"/> for you, but you're not required to use those generated POJOs. You can use your own. See the manual's section about <reference id="pojos-with-recordmapper-provider" title="POJOs with custom RecordMappers"/> to see how to modify jOOQ's standard POJO mapping behaviour.
    -									</p>
    -									
    -									<h3>Using JPA-annotated POJOs</h3>									
    -									<p>
    -										jOOQ tries to find JPA annotations on your POJO types. If it finds any, they are used as the primary source for mapping meta-information. Only the <reference class="javax.persistence.Column"/> annotation is used and understood by jOOQ. An example:
    -									</p>
    -
    -</html><java><![CDATA[// A JPA-annotated POJO class
    -public class MyBook {
    -  @Column(name = "ID")
    -  public int myId;
    -  
    -  @Column(name = "TITLE")
    -  public String myTitle;
    -}
    -
    -// The various "into()" methods allow for fetching records into your custom POJOs:
    -MyBook myBook        = create.select().from(BOOK).fetchAny().into(MyBook.class); 
    -List<MyBook> myBooks = create.select().from(BOOK).fetch().into(MyBook.class);
    -List<MyBook> myBooks = create.select().from(BOOK).fetchInto(MyBook.class);]]></java><html>									
    -									
    -									<p>
    -										Just as with any other JPA implementation, you can put the <reference class="javax.persistence.Column"/> annotation on any class member, including attributes, setters and getters. Please refer to the <reference class="org.jooq.Record" anchor="#into(java.lang.Class)" title="Record.into()"/> Javadoc for more details.
    -									</p>
    -									
    -									<h3>Using simple POJOs</h3>
    -									<p>
    -										If jOOQ does not find any JPA-annotations, columns are mapped to the "best-matching" constructor, attribute or setter. An example illustrates this:
    -									</p>
    -									
    -</html><java><![CDATA[// A "mutable" POJO class
    -public class MyBook1 {
    -  public int id;
    -  public String title;
    -}
    -
    -// The various "into()" methods allow for fetching records into your custom POJOs:
    -MyBook1 myBook        = create.select().from(BOOK).fetchAny().into(MyBook1.class); 
    -List<MyBook1> myBooks = create.select().from(BOOK).fetch().into(MyBook1.class);
    -List<MyBook1> myBooks = create.select().from(BOOK).fetchInto(MyBook1.class);]]></java><html>	
    -
    -									<p>
    -										Please refer to the <reference class="org.jooq.Record" anchor="#into(java.lang.Class)" title="Record.into()"/> Javadoc for more details.
    -									</p>
    -									
    -									<h3>Using "immutable" POJOs</h3>
    -									<p>
    -										If jOOQ does not find any default constructor, columns are mapped to the "best-matching" constructor. This allows for using "immutable" POJOs with jOOQ. An example illustrates this:
    -									</p>
    -									
    -</html><java><![CDATA[// An "immutable" POJO class
    -public class MyBook2 {
    -  public final int id;
    -  public final String title;
    -  
    -  public MyBook2(int id, String title) {
    -    this.id = id;
    -    this.title = title;
    -  }
    -}
    -
    -// With "immutable" POJO classes, there must be an exact match between projected fields and available constructors:
    -MyBook2 myBook        = create.select(BOOK.ID, BOOK.TITLE).from(BOOK).fetchAny().into(MyBook2.class); 
    -List<MyBook2> myBooks = create.select(BOOK.ID, BOOK.TITLE).from(BOOK).fetch().into(MyBook2.class);
    -List<MyBook2> myBooks = create.select(BOOK.ID, BOOK.TITLE).from(BOOK).fetchInto(MyBook2.class);
    -
    -// An "immutable" POJO class with a java.beans.ConstructorProperties annotation
    -public class MyBook3 {
    -  public final String title;
    -  public final int id;
    -  
    -  @ConstructorProperties({ "title", "id"})
    -  public MyBook2(String title, int id) {
    -    this.title = title;
    -    this.id = id;
    -  }
    -}
    -
    -// With annotated "immutable" POJO classes, there doesn't need to be an exact match between fields and constructor arguments.
    -// In the below cases, only BOOK.ID is really set onto the POJO, BOOK.TITLE remains null and BOOK.AUTHOR_ID is ignored
    -MyBook3 myBook        = create.select(BOOK.ID, BOOK.AUTHOR_ID).from(BOOK).fetchAny().into(MyBook3.class); 
    -List<MyBook3> myBooks = create.select(BOOK.ID, BOOK.AUTHOR_ID).from(BOOK).fetch().into(MyBook3.class);
    -List<MyBook3> myBooks = create.select(BOOK.ID, BOOK.AUTHOR_ID).from(BOOK).fetchInto(MyBook3.class);
    -]]></java><html>	
    -									
    -									<p>
    -										Please refer to the <reference class="org.jooq.Record" anchor="#into(java.lang.Class)" title="Record.into()"/> Javadoc for more details.
    -									</p>
    -
    -									<h3>Using proxyable types</h3>
    -									<p>
    -										jOOQ also allows for fetching data into abstract classes or interfaces, or in other words, "proxyable" types. This means that jOOQ will return a <reference class="java.util.HashMap"/> wrapped in a <reference class="java.lang.reflect.Proxy"/> implementing your custom type. An example of this is given here:
    -									</p>
    -									
    -</html><java><![CDATA[// A "proxyable" type
    -public interface MyBook3 {
    -  int getId(); 
    -  void setId(int id);
    -  
    -  String getTitle();
    -  void setTitle(String title);
    -}
    -
    -// The various "into()" methods allow for fetching records into your custom POJOs:
    -MyBook3 myBook        = create.select(BOOK.ID, BOOK.TITLE).from(BOOK).fetchAny().into(MyBook3.class); 
    -List<MyBook3> myBooks = create.select(BOOK.ID, BOOK.TITLE).from(BOOK).fetch().into(MyBook3.class);
    -List<MyBook3> myBooks = create.select(BOOK.ID, BOOK.TITLE).from(BOOK).fetchInto(MyBook3.class);]]></java><html>									
    -
    -									<p>
    -										Please refer to the <reference class="org.jooq.Record" anchor="#into(java.lang.Class)" title="Record.into()"/> Javadoc for more details.
    -									</p>
    -
    -									<h3>Loading POJOs back into Records to store them</h3>
    -									<p>
    -										The above examples show how to fetch data into your own custom POJOs / DTOs. When you have modified the data contained in POJOs, you probably want to store those modifications back to the database. An example of this is given here:
    -									</p>
    -
    -</html><java><![CDATA[// A "mutable" POJO class
    -public class MyBook {
    -  public int id;
    -  public String title;
    -}
    -
    -// Create a new POJO instance
    -MyBook myBook = new MyBook();
    -myBook.id = 10;
    -myBook.title = "Animal Farm";
    -
    -// Load a jOOQ-generated BookRecord from your POJO
    -BookRecord book = create.newRecord(BOOK, myBook); 
    -
    -// Insert it (implicitly)
    -book.store();
    -
    -// Insert it (explicitly)
    -create.executeInsert(book);
    -
    -// or update it (ID = 10)
    -create.executeUpdate(book);]]></java><html>
    -							
    -									<p>
    -										Note: Because of your manual setting of ID = 10, jOOQ's store() method will asume that you want to insert a new record. See the manual's section about <reference id="crud-with-updatablerecords" title="CRUD with UpdatableRecords"/> for more details on this.
    -									</p>
    -											
    -									<h3>Interaction with DAOs</h3>
    -									<p>
    -										If you're using jOOQ's <reference id="code-generation" title="code generator"/>, you can configure it to <reference id="codegen-daos" title="generate DAOs"/> for you. Those DAOs operate on <reference id="codegen-pojos" title="generated POJOs"/>. An example of using such a DAO is given here:
    -									</p>
    -
    -</html><java><![CDATA[// Initialise a Configuration
    -Configuration configuration = new DefaultConfiguration().set(connection).set(SQLDialect.ORACLE);
    -
    -// Initialise the DAO with the Configuration
    -BookDao bookDao = new BookDao(configuration);
    -
    -// Start using the DAO
    -Book book = bookDao.findById(5);
    -
    -// Modify and update the POJO
    -book.setTitle("1984");
    -book.setPublishedIn(1948);
    -bookDao.update(book);
    -
    -// Delete it again
    -bookDao.delete(book);]]></java><html>
    -									
    -									<h3>More complex data structures</h3>
    -									<p>
    -										jOOQ currently doesn't support more complex data structures, the way Hibernate/JPA attempt to map relational data onto POJOs. While future developments in this direction are not excluded, jOOQ claims that generic mapping strategies lead to an enormous additional complexity that only serves very few use cases. You are likely to find a solution using any of jOOQ's various <reference id="fetching" title="fetching modes"/>, with only little boiler-plate code on the client side.
    -									</p>
    -								</html></content>
    -							</section>
    -                            
    -                            <section id="pojos-with-recordmapper-provider">
    -                                <title>POJOs with RecordMappers</title>
    -                                <content><html>
    -                                    <p>
    -                                        In the previous sections we have seen how to create <reference id="recordmapper" title="RecordMapper"/> types to map jOOQ records onto arbitrary objects. We have also seen how jOOQ provides default algorithms to map jOOQ records onto <reference id="pojos" title="POJOs"/>. Your own custom domain model might be much more complex, but you want to avoid looking up the most appropriate <code>RecordMapper</code> every time you need one. For this, you can provide jOOQ's <reference id="dsl-context" title="Configuration"/> with your own implementation of the <reference class="org.jooq.RecordMapperProvider"/> interface. An example is given here:
    -                                    </p>
    -                                    
    -</html><java><![CDATA[DSL.using(new DefaultConfiguration()
    -   .set(connection)
    -   .set(SQLDialect.ORACLE)
    -   .set(
    -       new RecordMapperProvider() {
    -           @Override
    -           public <R extends Record, E> RecordMapper<R, E> provide(RecordType<R> recordType, Class<? extends E> type) {
    -
    -               // UUID mappers will always try to find the ID column
    -               if (type == UUID.class) {
    -                   return new RecordMapper<R, E>() {
    -                       @Override
    -                       public E map(R record) {
    -                           return (E) record.getValue("ID");
    -                       }
    -                   }
    -               }
    -               
    -               // Books might be joined with their authors, create a 1:1 mapping
    -               if (type == Book.class) {
    -                   return new BookMapper();
    -               }
    -
    -               // Fall back to jOOQ's DefaultRecordMapper, which maps records onto
    -               // POJOs using reflection.
    -               return new DefaultRecordMapper(recordType, type);           
    -           }
    -       }
    -   ))
    -   .selectFrom(BOOK)
    -   .orderBy(BOOK.ID)
    -   .fetchInto(UUID.class);]]></java><html>
    -
    -                                    <p>
    -                                        The above is a very simple example showing that you will have complete flexibility in how to override jOOQ's record to POJO mapping mechanisms.
    -                                    </p>
    -                                    
    -                                    <p>
    -                                        If you're looking into a generic, third-party mapping utility, have a look at <a href="http://modelmapper.org">ModelMapper</a>, or <a href="http://orika-mapper.github.io/orika-docs">Orika Mapper</a>, which can both be easily integrated with jOOQ.
    -                                    </p>
    -                                </html></content>
    -                            </section>
    -
    -							<section id="lazy-fetching">
    -								<title>Lazy fetching</title>
    -								<content><html>
    -									<p>
    -										Unlike JDBC's <reference class="java.sql.ResultSet"/>, jOOQ's <reference class="org.jooq.Result"/> does not represent an open database cursor with various fetch modes and scroll modes, that needs to be closed after usage. jOOQ's results are simple in-memory Java <reference class="java.util.List"/> objects, containing all of the result values. If your result sets are large, or if you have a lot of network latency, you may wish to fetch records one-by-one, or in small chunks. jOOQ supports a <reference class="org.jooq.Cursor"/> type for that purpose. In order to obtain such a reference, use the <reference class="org.jooq.ResultQuery" anchor="#fetchLazy()" title="ResultQuery.fetchLazy()"/> method. An example is given here:
    -									</p>
    -									
    -</html><java><![CDATA[// Obtain a Cursor reference:
    -Cursor<BookRecord> cursor = null;
    -
    -try {
    -    cursor = create.selectFrom(BOOK).fetchLazy();
    -
    -    // Cursor has similar methods as Iterator<R>
    -    while (cursor.hasNext()) {
    -        BookRecord book = cursor.fetchOne();
    -        
    -        Util.doThingsWithBook(book);
    -    }
    -}
    -
    -// Close the cursor and the cursor's underlying JDBC ResultSet
    -finally {
    -    if (cursor != null) {
    -        cursor.close();
    -    }
    -}]]></java><html>
    -
    -									<p>
    -										As a <reference class="org.jooq.Cursor"/> holds an internal reference to an open <reference class="java.sql.ResultSet"/>, it may need to be closed at the end of iteration. If a cursor is completely scrolled through, it will conveniently close the underlying ResultSet. However, you should not rely on that.
    -									</p>
    -									
    -									<h3>Cursors ship with all the other fetch features</h3>
    -									<p>
    -										Like <reference class="org.jooq.ResultQuery"/> or <reference class="org.jooq.Result"/>, <reference class="org.jooq.Cursor"/> gives access to all of the other fetch features that we've seen so far, i.e.
    -									</p>
    -									<ul>
    -										<li><reference id="record-vs-tablerecord" title="Strongly or weakly typed records"/>: Cursors are also typed with the &lt;R&gt; type, allowing to fetch custom, generated <reference class="org.jooq.TableRecord"/> or plain <reference class="org.jooq.Record"/> types.</li>
    -										<li><reference id="recordhandler" title="RecordHandler callbacks"/>: You can use your own <reference class="org.jooq.RecordHandler"/> callbacks to receive lazily fetched records.</li>
    -										<li><reference id="recordmapper" title="RecordMapper callbacks"/>: You can use your own <reference class="org.jooq.RecordMapper"/> callbacks to map lazily fetched records.</li>
    -										<li><reference id="pojos" title="POJOs"/>: You can fetch data into your own custom POJO types.</li>
    -									</ul>
    -								</html></content>
    -							</section>
    -
    -							<section id="many-fetching">
    -								<title>Many fetching</title>
    -								<content><html>
    -									<p>
    -										Many databases support returning several result sets, or cursors, from single queries. An example for this is Sybase ASE's sp_help command:
    -									</p>
    -</html><text><![CDATA[> sp_help 'author'
    -
    -+--------+-----+-----------+-------------+-------------------+
    -|Name    |Owner|Object_type|Object_status|Create_date        |
    -+--------+-----+-----------+-------------+-------------------+
    -|  author|dbo  |user table | -- none --  |Sep 22 2011 11:20PM|
    -+--------+-----+-----------+-------------+-------------------+
    -
    -+-------------+-------+------+----+-----+-----+
    -|Column_name  |Type   |Length|Prec|Scale|...  |
    -+-------------+-------+------+----+-----+-----+
    -|id           |int    |     4|NULL| NULL|    0|
    -|first_name   |varchar|    50|NULL| NULL|    1|
    -|last_name    |varchar|    50|NULL| NULL|    0|
    -|date_of_birth|date   |     4|NULL| NULL|    1|
    -|year_of_birth|int    |     4|NULL| NULL|    1|
    -+-------------+-------+------+----+-----+-----+]]></text><html>
    -
    -
    -									<p>
    -										The correct (and verbose) way to do this with JDBC is as follows:
    -									</p>
    -									
    -</html><java><![CDATA[ResultSet rs = statement.executeQuery();
    -
    -// Repeat until there are no more result sets
    -for (;;) {
    -
    -  // Empty the current result set
    -  while (rs.next()) {
    -    // [ .. do something with it .. ]
    -  }
    -
    -  // Get the next result set, if available
    -  if (statement.getMoreResults()) {
    -    rs = statement.getResultSet();
    -  }
    -  else {
    -    break;
    -  }
    -}
    -
    -// Be sure that all result sets are closed
    -statement.getMoreResults(Statement.CLOSE_ALL_RESULTS);
    -statement.close();]]></java><html>
    -
    -									<p>
    -										As previously discussed in the chapter about <reference id="comparison-with-jdbc" title="differences between jOOQ and JDBC"/>, jOOQ does not rely on an internal state of any JDBC object, which is "externalised" by Javadoc. Instead, it has a straight-forward API allowing you to do the above in a one-liner: 
    -									</p>
    -									
    -</html><java><![CDATA[// Get some information about the author table, its columns, keys, indexes, etc
    -List<Result<Record>> results = create.fetchMany("sp_help 'author'");]]></java><html>
    -
    -									<p>
    -										Using generics, the resulting structure is immediately clear.
    -									</p>									
    -								</html></content>
    -							</section>
    -
    -							<section id="later-fetching">
    -								<title>Later fetching</title>
    -								<content><html>
    -									<p>
    -										Some queries take very long to execute, yet they are not crucial for the continuation of the main program. For instance, you could be generating a complicated report in a Swing application, and while this report is being calculated in your database, you want to display a background progress bar, allowing the user to pursue some other work. This can be achived simply with jOOQ, by creating a <reference class="org.jooq.FutureResult"/>, a type that extends <reference class="java.util.concurrent.Future"/>. An example is given here:
    -									</p>
    -									
    -</html><java><![CDATA[// Spawn off this query in a separate process:
    -FutureResult<BookRecord> future = create.selectFrom(BOOK).where(... complex predicates ...).fetchLater();
    -
    -// This example actively waits for the result to be done
    -while (!future.isDone()) {
    -    progressBar.increment(1);
    -    Thread.sleep(50);
    -}
    -
    -// The result should be ready, now
    -Result<BookRecord> result = future.get();]]></java><html>
    -
    -									<p>
    -										Note, that instead of letting jOOQ spawn a new thread, you can also provide jOOQ with your own <reference class="java.util.concurrent.ExecutorService"/>:
    -									</p>
    -									
    -</html><java><![CDATA[// Spawn off this query in a separate process:
    -ExecutorService service = // [...]
    -FutureResult<BookRecord> future = create.selectFrom(BOOK).where(... complex predicates ...).fetchLater(service);]]></java>
    -
    -								</content>
    -							</section>
    -
    -							<section id="resultset-fetching">
    -								<title>ResultSet fetching</title>
    -								<content><html>
    -									<p>
    -										When interacting with legacy applications, you may prefer to have jOOQ return a <reference class="java.sql.ResultSet"/>, rather than jOOQ's own <reference class="org.jooq.Result"/> types. This can be done simply, in two ways:
    -									</p>
    -									
    -</html><java><![CDATA[// jOOQ's Cursor type exposes the underlying ResultSet:
    -ResultSet rs1 = create.selectFrom(BOOK).fetchLazy().resultSet();
    -
    -// But you can also directly access that ResultSet from ResultQuery:
    -ResultSet rs2 = create.selectFrom(BOOK).fetchResultSet();
    -
    -// Don't forget to close these, though!
    -rs1.close();
    -rs2.close();]]></java><html>
    -
    -									<h3>Transform jOOQ's Result into a JDBC ResultSet</h3>
    -									<p>
    -										Instead of operating on a JDBC ResultSet holding an open resource from your database, you can also let jOOQ's <reference class="org.jooq.Result"/> wrap itself in a <reference class="java.sql.ResultSet"/>. The advantage of this is that the so-created ResultSet has no open connection to the database. It is a completely in-memory ResultSet:								
    -									</p>
    -
    -</html><java><![CDATA[// Transform a jOOQ Result into a ResultSet
    -Result<BookRecord> result = create.selectFrom(BOOK).fetch();
    -ResultSet rs = result.intoResultSet();]]></java><html>
    -
    -									<h3>The inverse: Fetch data from a legacy ResultSet using jOOQ</h3>
    -									<p>
    -										The inverse of the above is possible too. Maybe, a legacy part of your application produces JDBC <reference class="java.sql.ResultSet"/>, and you want to turn them into a <reference class="org.jooq.Result"/>: 
    -									</p>
    -
    -</html><java><![CDATA[// Transform a JDBC ResultSet into a jOOQ Result
    -ResultSet rs = connection.createStatement().executeQuery("SELECT * FROM BOOK");
    -
    -// As a Result:
    -Result<Record> result = create.fetch(rs);
    -
    -// As a Cursor
    -Cursor<Record> cursor = create.fetchLazy(rs);]]></java><html>
    -
    -                                    <p>
    -                                        You can also tighten the interaction with jOOQ's data type system and <reference id="data-type-conversion" title="data type conversion"/> features, by passing the record type to the above fetch methods:
    -                                    </p>
    -                                    
    -</html><java><![CDATA[// Pass an array of types:
    -Result<Record> result = create.fetch    (rs, Integer.class, String.class);
    -Cursor<Record> result = create.fetchLazy(rs, Integer.class, String.class);
    -
    -// Pass an array of data types:
    -Result<Record> result = create.fetch    (rs, SQLDataType.INTEGER, SQLDataType.VARCHAR);
    -Cursor<Record> result = create.fetchLazy(rs, SQLDataType.INTEGER, SQLDataType.VARCHAR);
    -
    -// Pass an array of fields:
    -Result<Record> result = create.fetch    (rs, BOOK.ID, BOOK.TITLE);
    -Cursor<Record> result = create.fetchLazy(rs, BOOK.ID, BOOK.TITLE);]]></java><html>
    -
    -                                    <p>
    -                                        If supplied, the additional information is used to override the information obtained from the <reference class="java.sql.ResultSet" title="ResultSet"/>'s <reference class="java.sql.ResultSetMetaData"/> information.
    -                                    </p>                                    
    -								</html></content>
    -							</section>
    -
    -							<section id="data-type-conversion">
    -								<title>Data type conversion</title>
    -								<content><html>
    -									<p>
    -										Apart from a few extra features (<reference id="codegen-udts" title="user-defined types"/>), jOOQ only supports basic types as supported by the JDBC API. In your application, you may choose to transform these data types into your own ones, without writing too much boiler-plate code. This can be done using jOOQ's <reference class="org.jooq.Converter"/> types. A converter essentially allows for two-way conversion between two Java data types &lt;T&gt; and &lt;U&gt;. By convention, the &lt;T&gt; type corresponds to the type in your database whereas the &gt;U&gt; type corresponds to your own user type. The Converter API is given here:
    -									</p>
    -									
    -</html><java><![CDATA[public interface Converter<T, U> extends Serializable {
    -
    -    /**
    -     * Convert a database object to a user object
    -     */
    -    U from(T databaseObject);
    -
    -    /**
    -     * Convert a user object to a database object
    -     */
    -    T to(U userObject);
    -
    -    /**
    -     * The database type
    -     */
    -    Class<T> fromType();
    -
    -    /**
    -     * The user type
    -     */
    -    Class<U> toType();
    -}]]></java><html>
    -
    -									<p>
    -										Such a converter can be used in many parts of the jOOQ API. Some examples have been illustrated in the manual's section about <reference id="fetching" title="fetching"/>.
    -									</p>
    -									
    -									<h3>A Converter for GregorianCalendar</h3>
    -									<p>
    -										Here is a some more elaborate example involving a Converter for <reference class="java.util.GregorianCalendar"/>: 
    -									</p>
    -									
    -</html><java><![CDATA[// You may prefer Java Calendars over JDBC Timestamps
    -public class CalendarConverter implements Converter<Timestamp, GregorianCalendar> {
    -
    -    @Override
    -    public GregorianCalendar from(Timestamp databaseObject) {
    -        GregorianCalendar calendar = (GregorianCalendar) Calendar.getInstance();
    -        calendar.setTimeInMillis(databaseObject.getTime());
    -        return calendar;
    -    }
    -
    -    @Override
    -    public Timestamp to(GregorianCalendar userObject) {
    -        return new Timestamp(userObject.getTime().getTime());
    -    }
    -
    -    @Override
    -    public Class<Timestamp> fromType() {
    -        return Timestamp.class;
    -    }
    -
    -    @Override
    -    public Class<GregorianCalendar> toType() {
    -        return GregorianCalendar.class;
    -    }
    -}
    -
    -// Now you can fetch calendar values from jOOQ's API:
    -List<GregorianCalendar> dates1 = create.selectFrom(BOOK).fetch().getValues(BOOK.PUBLISHING_DATE, new CalendarConverter());
    -List<GregorianCalendar> dates2 = create.selectFrom(BOOK).fetch(BOOK.PUBLISHING_DATE, new CalendarConverter());
    -]]></java><html>									
    -									
    -									<h3>Enum Converters</h3>
    -									<p>
    -										jOOQ ships with a built-in default <reference class="org.jooq.impl.EnumConverter"/>, that you can use to map VARCHAR values to enum literals or NUMBER values to enum ordinals (both modes are supported). Let's say, you want to map a YES / NO / MAYBE column to a custom Enum:
    -									</p>
    -									
    -</html><java><![CDATA[// Define your Enum
    -public enum YNM {
    -    YES, NO, MAYBE
    -}
    -
    -// Define your converter
    -public class YNMConverter extends EnumConverter<String, YNM> {
    -    public YNMConverter() {
    -        super(String.class, YNM.class);
    -    }
    -}
    -
    -// And you're all set for converting records to your custom Enum:
    -for (BookRecord book : create.selectFrom(BOOK).fetch()) {
    -    switch (book.getValue(BOOK.I_LIKE, new YNMConverter())) {
    -        case YES:    System.out.println("I like this book             : " + book.getTitle()); break;
    -        case NO:     System.out.println("I didn't like this book      : " + book.getTitle()); break;
    -        case MAYBE:  System.out.println("I'm not sure about this book : " + book.getTitle()); break;
    -    }
    -}]]></java><html>
    -									
    -									<h3>Using Converters in generated source code</h3>
    -									<p>
    -										jOOQ also allows for generated source code to reference your own custom converters, in order to permanently replace a <reference id="table-columns" title="table column's"/> &lt;T&gt; type by your own, custom &lt;U&gt; type. See the manual's section about <reference id="custom-data-types" title="custom data types"/> for details.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="interning">
    -								<title>Interning data</title>
    -								<content><html>
    -									<p>
    -										SQL result tables are not optimal in terms of used memory as they are not designed to represent hierarchical data as produced by <code>JOIN</code> operations. Specifically, <code>FOREIGN KEY</code> values may repeat themselves unnecessarily:
    -									</p>
    -
    -</html><text>+----+-----------+--------------+
    -| ID | AUTHOR_ID | TITLE        |
    -+----+-----------+--------------+
    -|  1 |         1 | 1984         |
    -|  2 |         1 | Animal Farm  |
    -|  3 |         2 | O Alquimista |
    -|  4 |         2 | Brida        |
    -+----+-----------+--------------+</text><html>
    -
    -									<p>
    -										Now, if you have millions of records with only few distinct values for <code>AUTHOR_ID</code>, you may not want to hold references to distinct (but equal) <reference class="java.lang.Integer"/> objects. This is specifically true for IDs of type <reference class="java.util.UUID"/> or string representations thereof. jOOQ allows you to "intern" those values:
    -									</p>
    -
    -</html><java><![CDATA[// Interning data after fetching
    -Result<?> r1 = create.select(BOOK.ID, BOOK.AUTHOR_ID, BOOK.TITLE)
    -                     .from(BOOK)
    -                     .join(AUTHOR).on(BOOK.AUTHOR_ID.eq(AUTHOR.ID))
    -                     .fetch()
    -                     .intern(BOOK.AUTHOR_ID);
    -
    -// Interning data while fetching
    -Result<?> r1 = create.select(BOOK.ID, BOOK.AUTHOR_ID, BOOK.TITLE)
    -                     .from(BOOK)
    -                     .join(AUTHOR).on(BOOK.AUTHOR_ID.eq(AUTHOR.ID))
    -                     .intern(BOOK.AUTHOR_ID)
    -                     .fetch();]]></java><html>
    -                     
    -                     				<p>
    -                     					You can specify as many fields as you want for interning. The above has the following effect:
    -                     				</p>
    -                     				
    -                     				<ul>
    -                     					<li>If the interned Field is of type <reference class="java.lang.String"/>, then <reference class="java.lang.String" anchor="#intern()" title="String.intern()"/> is called upon each string</li>
    -                     					<li>If the interned Field is of any other type, then the call is ignored</li>
    -                     				</ul>
    -                     				
    -                     				<p>
    -                     					Future versions of jOOQ will implement interning of data for non-String data types by collecting values in <reference class="java.util.Set"/>, removing duplicate instances.
    -                     				</p>
    -                     				
    -                     				<p>
    -                     					Note, that jOOQ will not use interned data for identity comparisons: <code>string1 == string2</code>. Interning is used only to reduce the memory footprint of <reference class="org.jooq.Result"/> objects.
    -                     				</p>
    -								</html></content>
    -							</section>							
    -						</sections>
    -					</section>
    -					
    -					<section id="statement-type">
    -						<title>Static statements vs. Prepared Statements</title>
    -						<content><html>
    -							<p>
    -								With JDBC, you have full control over your SQL statements. You can decide yourself, if you want to execute a static <reference class="java.sql.Statement"/> without bind values, or a <reference class="java.sql.PreparedStatement"/> with (or without) bind values. But you have to decide early, which way to go. And you'll have to prevent SQL injection and syntax errors manually, when inlining your bind variables.
    -							</p>
    -							<p>
    -								With jOOQ, this is easier. As a matter of fact, it is plain simple. With jOOQ, you can just set a flag in your <reference id="dsl-context" title="Configuration's"/> <reference id="custom-settings" title="Settings"/>, and all queries produced by that configuration will be executed as static statements, with all bind values inlined. An example is given here:
    -							</p>
    -							
    -</html><code-pair>
    -<sql><![CDATA[
    -
    -
    -
    -
    -
    -
    --- These statements are rendered by the two factories:
    -SELECT ? FROM DUAL WHERE ? = ?
    -SELECT 1 FROM DUAL WHERE 1 = 1]]></sql>
    -<java><![CDATA[// This DSLContext executes PreparedStatements
    -DSLContext prepare = DSL.using(connection, SQLDialect.ORACLE);
    -
    -// This DSLContext executes static Statements
    -DSLContext inlined = DSL.using(connection, SQLDialect.ORACLE, 
    -  new Settings().withStatementType(StatementType.STATIC_STATEMENT));
    -  
    -prepare.select(val(1)).where(val(1).equal(1)).fetch();
    -inlined.select(val(1)).where(val(1).equal(1)).fetch();]]></java>
    -</code-pair><html>
    -
    -							<h3>Reasons for choosing one or the other</h3>
    -							<p>
    -								Not all databases are equal. Some databases show improved performance if you use <reference class="java.sql.PreparedStatement"/>, as the database will then be able to re-use execution plans for identical SQL statements, regardless of actual bind values. This heavily improves the time it takes for soft-parsing a SQL statement. In other situations, assuming that bind values are irrelevant for SQL execution plans may be a bad idea, as you might run into "bind value peeking" issues. You may be better off spending the extra cost for a new hard-parse of your SQL statement and instead having the database fine-tune the new plan to the concrete bind values.
    -							</p>
    -							<p>
    -								Whichever aproach is more optimal for you cannot be decided by jOOQ. In most cases, prepared statements are probably better. But you always have the option of forcing jOOQ to render inlined bind values.
    -							</p>
    -							
    -							<h3>Inlining bind values on a per-bind-value basis</h3>
    -							<p>
    -								Note that you don't have to inline all your bind values at once. If you know that a bind value is not really a variable and should be inlined explicitly, you can do so by using <reference class="org.jooq.impl.DSL" anchor="#inline(Object)" title="DSL.inline()"/>, as documented in the manual's section about <reference id="inlined-parameters" title="inlined parameters"/>
    -							</p>
    -						</html></content>
    -					</section>
    -
    -					<section id="reusing-statements">
    -						<title>Reusing a Query's PreparedStatement</title>
    -						<content><html>
    -							<p>
    -								As previously discussed in the chapter about <reference id="comparison-with-jdbc" title="differences between jOOQ and JDBC"/>, reusing PreparedStatements is handled a bit differently in jOOQ from how it is handled in JDBC
    -							</p>
    -							
    -							<h3>Keeping open PreparedStatements with JDBC</h3>
    -							<p>
    -								With JDBC, you can easily reuse a <reference class="java.sql.PreparedStatement"/> by not closing it between subsequent executions. An example is given here:
    -							</p>
    -							
    -</html><java><![CDATA[PreparedStatement stmt = null;
    -ResultSet rs1 = null;
    -ResultSet rs2 = null;
    -
    -try {
    -    // Execute the statement and fetch a first ResultSet
    -    stmt = connection.prepareStatement("SELECT 1 FROM DUAL");
    -    rs1  = stmt.executeQuery();
    -
    -    // Without closing the statement, execute it again to fetch another ResultSet
    -    rs2  = stmt.executeQuery();
    -}
    -finally {
    -    try { rs1.close();  } catch (Exception ignore) {}
    -    try { rs2.close();  } catch (Exception ignore) {}
    -    try { stmt.close(); } catch (Exception ignore) {}
    -}]]></java><html>
    -
    -							<p>
    -								The above technique can be quite useful when you want to reuse expensive database resources. This can be the case when your statement is executed very frequently and your database would take non-negligible time to soft-parse the prepared statement and generate a new statement / cursor resource.
    -							</p>
    -							
    -							<h3>Keeping open PreparedStatements with jOOQ</h3>
    -							<p>
    -								This is also modeled in jOOQ. However, the difference to JDBC is that closing a statement is the default action, whereas keeping it open has to be configured explicitly. This is better than JDBC, because the default action should be the one that is used most often. Keeping open statements is rarely done in average applications. Here's an example of how to keep open PreparedStatements with jOOQ:
    -							</p>
    -							
    -</html><java><![CDATA[// Create a query which is configured to keep its underlying PreparedStatement open
    -ResultQuery<Record> query = create.selectOne().keepStatement(true);
    -
    -// Execute the query twice, against the same underlying PreparedStatement:
    -try {
    -    Result<Record> result1 = query.fetch(); // This will lazily create a new PreparedStatement
    -    Result<Record> result2 = query.fetch(); // This will reuse the previous PreparedStatement
    -}
    -
    -// ... but now, you must not forget to close the query
    -finally {
    -    query.close();
    -}]]></java><html>
    -
    -							<p>
    -								The above example shows how a query can be executed twice against the same underlying PreparedStatement. Unlike in other execution scenarios, you must not forget to close this query now
    -							</p>
    -						</html></content>
    -					</section>
    -
    -                    <section id="jdbc-flags">
    -                        <title>JDBC flags</title>
    -                        <content><html>
    -                            <p>
    -                                JDBC knows a couple of execution flags and modes, which can be set through the jOOQ API as well. jOOQ essentially supports these flags and execution modes:
    -                            </p>
    -                            
    -</html><java><![CDATA[public interface Query extends QueryPart, Attachable {
    -
    -    // [...]
    -
    -    // The query execution timeout.
    -    // -----------------------------------------------------------
    -    Query queryTimeout(int timeout);
    -    
    -}]]></java>
    -                            
    -<java><![CDATA[public interface ResultQuery<R extends Record> extends Query {
    -
    -    // [...]
    -
    -    // The query execution timeout.
    -    // -----------------------------------------------------------
    -    @Override
    -    ResultQuery<R> queryTimeout(int timeout);
    -
    -    // Flags allowing to specify the resulting ResultSet modes
    -    // -----------------------------------------------------------
    -    ResultQuery<R> resultSetConcurrency(int resultSetConcurrency);
    -    ResultQuery<R> resultSetType(int resultSetType);
    -    ResultQuery<R> resultSetHoldability(int resultSetHoldability);
    -
    -    // The maximum number of rows to be fetched by JDBC
    -    // -----------------------------------------------------------
    -    ResultQuery<R> maxRows(int rows);
    -    
    -}]]></java><html>
    -
    -                            <h3>Using ResultSet concurrency with ExecuteListeners</h3>
    -                            <p>
    -                                An example of why you might want to manually set a ResultSet's concurrency flag to something non-default is given here:
    -                            </p>
    -                            
    -</html><java><![CDATA[
    -DSL.using(new DefaultConfiguration()
    -   .set(connection)
    -   .set(SQLDialect.ORACLE)
    -   .set(DefaultExecuteListenerProvider.providers(
    -           new DefaultExecuteListener() {
    -        
    -               @Override
    -               public void recordStart(ExecuteContext ctx) {
    -                   try {
    -            
    -                       // Change values in the cursor before reading a record
    -                       ctx.resultSet().updateString(BOOK.TITLE.getName(), "New Title");
    -                       ctx.resultSet().updateRow();
    -                   }
    -                   catch (SQLException e) {
    -                       throw new DataAccessException("Exception", e);
    -                   }
    -               }
    -          }
    -       )
    -   ))
    -   .select(BOOK.ID, BOOK.TITLE)
    -   .from(BOOK)
    -   .orderBy(BOOK.ID)
    -   .resultSetType(ResultSet.TYPE_SCROLL_INSENSITIVE)
    -   .resultSetConcurrency(ResultSet.CONCUR_UPDATABLE)
    -   .fetch(BOOK.TITLE);]]></java><html>
    -   
    -                            <p>
    -                                In the above example, your custom <reference id="execute-listeners" title="ExecuteListener callback"/> is triggered before jOOQ loads a new <code>Record</code> from the JDBC <code>ResultSet</code>. With the concurrency being set to <code>ResultSet.CONCUR_UPDATABLE</code>, you can now modify the database cursor through the standard JDBC <code>ResultSet</code> API.  
    -                            </p>
    -                        </html></content>
    -                    </section>
    -
    -				    <section id="batch-execution">
    -						<title>Using JDBC batch operations</title>
    -						<content><html>
    -							<p>
    -								With JDBC, you can easily execute several statements at once using the addBatch() method. Essentially, there are two modes in JDBC
    -							</p>
    -
    -							<ul>
    -								<li>Execute several queries without bind values</li>
    -								<li>Execute one query several times with bind values</li>
    -							</ul>
    -
    -							<p>
    -								In code, this looks like the following snippet:
    -							</p>
    -</html><java><![CDATA[// 1. several queries
    -// ------------------
    -Statement stmt = connection.createStatement();
    -stmt.addBatch("INSERT INTO author(id, first_name, last_name) VALUES (1, 'Erich', 'Gamma')");
    -stmt.addBatch("INSERT INTO author(id, first_name, last_name) VALUES (2, 'Richard', 'Helm')");
    -stmt.addBatch("INSERT INTO author(id, first_name, last_name) VALUES (3, 'Ralph', 'Johnson')");
    -stmt.addBatch("INSERT INTO author(id, first_name, last_name) VALUES (4, 'John', 'Vlissides')");
    -int[] result = stmt.executeBatch();
    -
    -// 2. a single query
    -// -----------------
    -PreparedStatement stmt = connection.prepareStatement("INSERT INTO author(id, first_name, last_name) VALUES (?, ?, ?)");
    -stmt.setInt(1, 1);
    -stmt.setString(2, "Erich");
    -stmt.setString(3, "Gamma");
    -stmt.addBatch();
    -
    -stmt.setInt(1, 2);
    -stmt.setString(2, "Richard");
    -stmt.setString(3, "Helm");
    -stmt.addBatch();
    -
    -stmt.setInt(1, 3);
    -stmt.setString(2, "Ralph");
    -stmt.setString(3, "Johnson");
    -stmt.addBatch();
    -
    -stmt.setInt(1, 4);
    -stmt.setString(2, "John");
    -stmt.setString(3, "Vlissides");
    -stmt.addBatch();
    -
    -int[] result = stmt.executeBatch();]]></java><html>
    -
    -
    -							<h3>This will also be supported by jOOQ</h3>
    -							<p>
    -								jOOQ supports executing queries in batch mode as follows:
    -							</p>
    -							
    -</html><java><![CDATA[// 1. several queries
    -// ------------------
    -create.batch(
    -	create.insertInto(AUTHOR, ID, FIRST_NAME, LAST_NAME).values(1, "Erich", "Gamma"),
    -	create.insertInto(AUTHOR, ID, FIRST_NAME, LAST_NAME).values(2, "Richard", "Helm"),
    -	create.insertInto(AUTHOR, ID, FIRST_NAME, LAST_NAME).values(3, "Ralph", "Johnson"),
    -	create.insertInto(AUTHOR, ID, FIRST_NAME, LAST_NAME).values(4, "John", "Vlissides"))
    -.execute();
    -
    -// 2. a single query
    -// -----------------
    -create.batch(create.insertInto(AUTHOR, ID, FIRST_NAME, LAST_NAME).values((Integer) null, null, null))
    -      .bind(1, "Erich", "Gamma")
    -      .bind(2, "Richard", "Helm")
    -      .bind(3, "Ralph", "Johnson")
    -      .bind(4, "John", "Vlissides")
    -      .execute();]]></java><html>
    -      
    -                            <p>
    -                                When creating a batch execution with a single query and multiple bind values, you will still have to provide jOOQ with dummy bind values for the original query. In the above example, these are set to <code>null</code>. For subsequent calls to <code>bind()</code>, there will be no type safety provided by jOOQ.
    -                            </p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="sequence-execution">
    -						<title>Sequence execution</title>
    -						<content><html>
    -							<p>
    -								Most databases support sequences of some sort, to provide you with unique values to be used for primary keys and other enumerations. If you're using jOOQ's <reference id="code-generation" title="code generator"/>, it will generate a sequence object per sequence for you. There are two ways of using such a sequence object:
    -							</p>
    -
    -							<h3>Standalone calls to sequences</h3>
    -							<p>
    -								Instead of actually phrasing a select statement, you can also use the <reference id="dsl-context" title="DSLContext's"/> convenience methods:
    -							</p>							
    -							
    -</html><java><![CDATA[// Fetch the next value from a sequence
    -BigInteger nextID = create.nextval(S_AUTHOR_ID);
    -
    -// Fetch the current value from a sequence
    -BigInteger currID = create.currval(S_AUTHOR_ID);]]></java><html>
    -							
    -							<h3>Inlining sequence references in SQL</h3>
    -							<p>
    -								You can inline sequence references in jOOQ SQL statements. The following are examples of how to do that:
    -							</p>
    -							
    -</html><java><![CDATA[// Reference the sequence in a SELECT statement:
    -BigInteger nextID = create.select(s).fetchOne(S_AUTHOR_ID.nextval());
    -
    -// Reference the sequence in an INSERT statement:
    -create.insertInto(AUTHOR, AUTHOR.ID, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
    -      .values(S_AUTHOR_ID.nextval(), val("William"), val("Shakespeare"));
    -]]></java><html>
    -
    -							<p>
    -								For more info about inlining sequence references in SQL statements, please refer to the manual's section about <reference id="sequences-and-serials" title="sequences and serials"/>.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="stored-procedures">
    -						<title>Stored procedures and functions</title>
    -						<content><html>
    -							<p>
    -								Many RDBMS support the concept of "routines", usually calling them procedures and/or functions. These concepts have been around in programming languages for a while, also outside of databases. Famous languages distinguishing procedures from functions are:
    -							</p>
    -							<ul>
    -								<li>Ada</li>
    -								<li>BASIC</li>
    -								<li>Pascal</li>
    -								<li>etc...</li>
    -							</ul>
    -							<p>
    -								The general distinction between (stored) procedures and (stored) functions can be summarised like this:
    -							</p>
    -							
    -							<h3>Procedures</h3>
    -							<ul>
    -								<li>Are called using JDBC CallableStatement</li>
    -								<li>Have no return value</li>
    -								<li>Usually support OUT parameters</li>
    -							</ul>
    -							
    -							<h3>Functions</h3>
    -							<ul>
    -								<li>Can be used in SQL statements</li>
    -								<li>Have a return value</li>
    -								<li>Usually don't support OUT parameters</li>
    -							</ul>
    -							
    -							<h3>Exceptions to these rules</h3>
    -							<ul>
    -								<li>DB2, H2, and HSQLDB don't allow for JDBC escape syntax when calling functions. Functions must be used in a SELECT statement</li>
    -								<li>H2 only knows functions (without OUT parameters)</li>
    -								<li>Oracle functions may have OUT parameters</li>
    -								<li>Oracle knows functions that must not be used in SQL statements for transactional reasons</li>
    -								<li>Postgres only knows functions (with all features combined). OUT parameters can also be interpreted as return values, which is quite elegant/surprising, depending on your taste</li>
    -								<li>The Sybase jconn3 JDBC driver doesn't handle null values correctly when using the JDBC escape syntax on functions</li>
    -							</ul>
    -							<p>
    -								In general, it can be said that the field of routines (procedures / functions) is far from being standardised in modern RDBMS even if the SQL:2008 standard specifies things quite well. Every database has its ways and JDBC only provides little abstraction over the great variety of procedures / functions implementations, especially when advanced data types such as cursors / UDT's / arrays are involved.
    -							</p>
    -							<p>
    -								To simplify things a little bit, jOOQ handles both procedures and functions the same way, using a more general <reference class="org.jooq.Routine"/> type.
    -							</p>
    -							
    -							<h3>Using jOOQ for standalone calls to stored procedures and functions</h3>
    -							<p>
    -								If you're using jOOQ's <reference id="code-generation" title="code generator"/>, it will generate <reference class="org.jooq.Routine"/> objects for you. Let's consider the following example:
    -							</p>
    -							
    -</html><sql><![CDATA[-- Check whether there is an author in AUTHOR by that name and get his ID
    -CREATE OR REPLACE PROCEDURE author_exists (author_name VARCHAR2, result OUT NUMBER, id OUT NUMBER);]]></sql><html>
    -
    -							<p>
    -								The generated artefacts can then be used as follows:
    -							</p>
    -							
    -</html><java><![CDATA[// Make an explicit call to the generated procedure object:
    -AuthorExists procedure = new AuthorExists();
    -
    -// All IN and IN OUT parameters generate setters
    -procedure.setAuthorName("Paulo");
    -procedure.execute(configuration);
    -
    -// All OUT and IN OUT parameters generate getters
    -assertEquals(new BigDecimal("1"), procedure.getResult());
    -assertEquals(new BigDecimal("2"), procedure.getId();]]></java><html>							
    -							
    -							<p>
    -								But you can also call the procedure using a generated convenience method in a global Routines class:
    -							</p>
    -
    -</html><java><![CDATA[// The generated Routines class contains static methods for every procedure.
    -// Results are also returned in a generated object, holding getters for every OUT or IN OUT parameter.
    -AuthorExists result = Routines.authorExists("Paulo");
    -
    -// All OUT and IN OUT parameters generate getters
    -assertEquals(new BigDecimal("1"), procedure.getResult());
    -assertEquals(new BigDecimal("2"), procedure.getId();]]></java><html>			
    -
    -							<p>
    -								For more details about <reference id="code-generation" title="code generation"/> for procedures, see the manual's section about <reference id="codegen-procedures" title="procedures and code generation"/>.
    -							</p>				
    -							
    -							<h3>Inlining stored function references in SQL</h3>
    -							<p>
    -								Unlike procedures, functions can be inlined in SQL statements to generate <reference id="column-expressions" title="column expressions"/> or <reference id="table-expressions" title="table expressions"/>, if you're using <reference id="array-and-cursor-unnesting" title="unnesting operators"/>. Assume you have a function like this:
    -							</p>
    -
    -</html><sql><![CDATA[-- Check whether there is an author in AUTHOR by that name and get his ID
    -CREATE OR REPLACE FUNCTION author_exists (author_name VARCHAR2) RETURN NUMBER;]]></sql><html>
    -							
    -							<p>
    -								The generated artefacts can then be used as follows:
    -							</p>
    -							
    -</html><code-pair>
    -<sql><![CDATA[-- This is the rendered SQL
    -
    -SELECT AUTHOR_EXISTS('Paulo') FROM DUAL]]></sql>
    -<java><![CDATA[// Use the static-imported method from Routines:
    -boolean exists = 
    -create.select(authorExists("Paulo")).fetchOne(0, boolean.class);]]></java>							
    -</code-pair><html>
    -							
    -							<p>
    -								For more info about inlining stored function references in SQL statements, please refer to the manual's section about <reference id="user-defined-functions" title="user-defined functions"/>.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="oracle-packages">
    -								<title>Oracle Packages</title>
    -								<content><html>
    -									<p>
    -										Oracle uses the concept of a PACKAGE to group several procedures/functions into a sort of namespace. The <a href="http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt" title="SQL 92 standard">SQL 92 standard</a> talks about "modules", to represent this concept, even if this is rarely implemented as such. This is reflected in jOOQ by the use of Java sub-packages in the <reference id="code-generation" title="source code generation"/> destination package. Every Oracle package will be reflected by
    -									</p>
    -									<ul>
    -										<li>A Java package holding classes for formal Java representations of the procedure/function in that package</li>
    -										<li>A Java class holding convenience methods to facilitate calling those procedures/functions</li>
    -									</ul>
    -									<p>
    -										Apart from this, the generated source code looks exactly like the one for standalone procedures/functions.
    -									</p>
    -									<p>
    -										For more details about <reference id="code-generation" title="code generation"/> for procedures and packages see the manual's section about <reference id="codegen-procedures" title="procedures and code generation"/>.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="oracle-member-procedures">
    -								<title>Oracle member procedures</title>
    -								<content><html>
    -									<p>
    -										Oracle UDTs can have object-oriented structures including member functions and procedures. With Oracle, you can do things like this:
    -									</p>
    -									
    -</html><sql><![CDATA[CREATE OR REPLACE TYPE u_author_type AS OBJECT (
    -  id NUMBER(7),
    -  first_name VARCHAR2(50),
    -  last_name VARCHAR2(50),
    -
    -  MEMBER PROCEDURE LOAD,
    -  MEMBER FUNCTION counBOOKs RETURN NUMBER
    -)
    -
    --- The type body is omitted for the example]]></sql><html>
    -
    -									<p>
    -										These member functions and procedures can simply be mapped to Java methods:
    -									</p>
    -
    -</html><java><![CDATA[// Create an empty, attached UDT record from the DSLContext
    -UAuthorType author = create.newRecord(U_AUTHOR_TYPE);
    -
    -// Set the author ID and load the record using the LOAD procedure
    -author.setId(1);
    -author.load();
    -
    -// The record is now updated with the LOAD implementation's content
    -assertNotNull(author.getFirstName());
    -assertNotNull(author.getLastName());]]></java><html>
    -
    -									<p>
    -										For more details about <reference id="code-generation" title="code generation"/> for UDTs see the manual's section about <reference id="codegen-udts" title="user-defined types and code generation"/>.
    -									</p>								
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -				    <section id="exporting">
    -						<title>Exporting to XML, CSV, JSON, HTML, Text</title>
    -						<content><html>
    -							<p>
    -								If you are using jOOQ for scripting purposes or in a slim, unlayered application server, you might be interested in using jOOQ's exporting functionality (see also the <reference id="importing" title="importing functionality"/>). You can export any Result&lt;Record&gt; into the formats discussed in the subsequent chapters of the manual
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="exporting-xml">
    -								<title>Exporting XML</title>
    -								<content>
    -
    -<java>// Fetch books and format them as XML
    -String xml = create.selectFrom(BOOK).fetch().formatXML();</java><html>
    -
    -									<p>
    -										The above query will result in an XML document looking like the following one:
    -									</p>
    -
    -</html><xml><![CDATA[<result xmlns="http://www.jooq.org/xsd/jooq-export-{export-xsd-version}.xsd">
    -  <fields>
    -    <field name="ID" type="INTEGER"/>
    -    <field name="AUTHOR_ID" type="INTEGER"/>
    -    <field name="TITLE" type="VARCHAR"/>
    -  </fields>
    -  <records>
    -    <record>
    -      <value field="ID">1</value>
    -      <value field="AUTHOR_ID">1</value>
    -      <value field="TITLE">1984</value>
    -    </record>
    -    <record>
    -      <value field="ID">2</value>
    -      <value field="AUTHOR_ID">1</value>
    -      <value field="TITLE">Animal Farm</value>
    -    </record>
    -  </records>
    -</result>]]></xml><html>
    -
    -									<p>
    -										The same result as an <reference class="org.w3c.dom.Document"/> can be obtained using the Result.intoXML() method:
    -									</p>
    -
    -
    -</html><java>// Fetch books and format them as XML
    -Document xml = create.selectFrom(BOOK).fetch().intoXML();</java><html>
    -
    -									<p>
    -										See the XSD schema definition here, for a formal definition of the XML export format:<br/>
    -										<a href="http://www.jooq.org/xsd/jooq-export-{export-xsd-version}.xsd">http://www.jooq.org/xsd/jooq-export-{export-xsd-version}.xsd</a>
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="exporting-csv">
    -								<title>Exporting CSV</title>
    -								<content>
    -
    -<java>// Fetch books and format them as CSV
    -String csv = create.selectFrom(BOOK).fetch().formatCSV();</java><html>
    -
    -									<p>
    -										The above query will result in a CSV document looking like the following one:
    -									</p>
    -
    -</html><text>ID,AUTHOR_ID,TITLE
    -1,1,1984
    -2,1,Animal Farm</text><html>
    -
    -									<p>
    -										In addition to the standard behaviour, you can also specify a separator character, as well as a special string to represent NULL values (which cannot be represented in standard CSV):
    -									</p>
    -
    -</html><java>// Use ";" as the separator character
    -String csv = create.selectFrom(BOOK).fetch().formatCSV(';');
    -
    -// Specify "{null}" as a representation for NULL values
    -String csv = create.selectFrom(BOOK).fetch().formatCSV(';', "{null}");</java>
    -
    -								</content>
    -							</section>
    -
    -							<section id="exporting-json">
    -								<title>Exporting JSON</title>
    -								<content>
    -
    -<java>// Fetch books and format them as JSON
    -String json = create.selectFrom(BOOK).fetch().formatJSON();</java><html>
    -
    -									<p>
    -										The above query will result in a JSON document looking like the following one:
    -									</p>
    -
    -</html><text>{"fields":[{"name":"field-1","type":"type-1"},
    -           {"name":"field-2","type":"type-2"},
    -           ...,
    -           {"name":"field-n","type":"type-n"}],
    - "records":[[value-1-1,value-1-2,...,value-1-n],
    -            [value-2-1,value-2-2,...,value-2-n]]}</text><html>
    -             
    -             						<p>
    -             							Note: This format has changed in jOOQ 2.6.0
    -             						</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="exporting-html">
    -								<title>Exporting HTML</title>
    -								<content>
    -<java>// Fetch books and format them as HTML
    -String html = create.selectFrom(BOOK).fetch().formatHTML();</java><html>
    -
    -									<p>
    -										The above query will result in an HTML document looking like the following one
    -									</p>
    -
    -</html><xml><![CDATA[<table>
    -  <thead>
    -    <tr>
    -      <th>ID</th>
    -      <th>AUTHOR_ID</th>
    -      <th>TITLE</th>
    -    </tr>
    -  </thead>
    -  <tbody>
    -    <tr>
    -      <td>1</td>
    -      <td>1</td>
    -      <td>1984</td>
    -    </tr>
    -    <tr>
    -      <td>2</td>
    -      <td>1</td>
    -      <td>Animal Farm</td>
    -    </tr>
    -  </tbody>
    -</table>]]></xml>
    -
    -								</content>
    -							</section>
    -
    -							<section id="exporting-text">
    -								<title>Exporting Text</title>
    -								<content>
    -
    -<java>// Fetch books and format them as text
    -String text = create.selectFrom(BOOK).fetch().format();</java><html>
    -
    -									<p>
    -										The above query will result in a text document looking like the following one
    -									</p>
    -
    -</html><text>+---+---------+-----------+
    -| ID|AUTHOR_ID|TITLE      |
    -+---+---------+-----------+
    -|  1|        1|1984       |
    -|  2|        1|Animal Farm|
    -+---+---------+-----------+</text><html>
    -
    -									<p>
    -										A simple text representation can also be obtained by calling toString() on a Result object. See also the manual's section about <reference id="logging" title="DEBUG logging"/>
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -				    <section id="importing">
    -						<title>Importing data</title>
    -						<content><html>
    -							<p>
    -								If you are using jOOQ for scripting purposes or in a slim, unlayered application server, you might be interested in using jOOQ's importing functionality (see also exporting functionality). You can import data directly into a table from the formats described in the subsequent sections of this manual.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="importing-csv">
    -								<title>Importing CSV</title>
    -								<content><html>
    -
    -									<p>
    -										The below CSV data represents two author records that may have been exported previously, by jOOQ's <reference id="exporting" title="exporting functionality"/>, and then modified in Microsoft Excel or any other spreadsheet tool:
    -									</p>
    -
    -</html><text>ID;AUTHOR_ID;TITLE
    -1;1;1984
    -2;1;Animal Farm</text><html>
    -
    -									<p>
    -										With jOOQ, you can load this data using various parameters from the	loader API. A simple load may look like this:
    -									</p>
    -
    -</html><java>DSLContext create = DSL.using(connection, dialect);
    -
    -// Load data into the AUTHOR table from an input stream
    -// holding the CSV data.
    -create.loadInto(AUTHOR)
    -      .loadCSV(inputstream)
    -      .fields(ID, AUTHOR_ID, TITLE)
    -      .execute();</java><html>
    -
    -      								<p>
    -      									Here are various other examples:
    -   									</p>
    -
    -</html><java>// Ignore the AUTHOR_ID column from the CSV file when inserting
    -create.loadInto(AUTHOR)
    -      .loadCSV(inputstream)
    -      .fields(ID, null, TITLE)
    -      .execute();
    -
    -// Specify behaviour for duplicate records.
    -create.loadInto(AUTHOR)
    -
    -      // choose any of these methods
    -      .onDuplicateKeyUpdate()
    -      .onDuplicateKeyIgnore()
    -      .onDuplicateKeyError() // the default
    -
    -      .loadCSV(inputstream)
    -      .fields(ID, null, TITLE)
    -      .execute();
    -
    -// Specify behaviour when errors occur.
    -create.loadInto(AUTHOR)
    -
    -      // choose any of these methods
    -      .onErrorIgnore()
    -      .onErrorAbort() // the default
    -
    -      .loadCSV(inputstream)
    -      .fields(ID, null, TITLE)
    -      .execute();
    -
    -// Specify transactional behaviour where this is possible
    -// (e.g. not in container-managed transactions)
    -create.loadInto(AUTHOR)
    -
    -      // choose any of these methods
    -      .commitEach()
    -      .commitAfter(10)
    -      .commitAll()
    -      .commitNone() // the default
    -
    -      .loadCSV(inputstream)
    -      .fields(ID, null, TITLE)
    -      .execute();</java><html>
    -
    -									<p>
    -										Any of the above configuration methods can be combined to achieve the type of load you need. Please refer to the API's Javadoc to learn about more details. Errors that occur during the load are reported by the execute method's result:
    -									</p>
    -
    -</html><java><![CDATA[Loader<Author> loader = /* .. */ .execute();
    -
    -// The number of processed rows
    -int processed = loader.processed();
    -
    -// The number of stored rows (INSERT or UPDATE)
    -int stored = loader.stored();
    -
    -// The number of ignored rows (due to errors, or duplicate rule)
    -int ignored = loader.ignored();
    -
    -// The errors that may have occurred during loading
    -List<LoaderError> errors = loader.errors();
    -LoaderError error = errors.get(0);
    -
    -// The exception that caused the error
    -DataAccessException exception = error.exception();
    -
    -// The row that caused the error
    -int rowIndex = error.rowIndex();
    -String[] row = error.row();
    -
    -// The query that caused the error
    -Query query = error.query();]]></java>
    -
    -								</content>
    -							</section>
    -
    -							<section id="importing-xml">
    -								<title>Importing XML</title>
    -								<content><html>
    -									<p>This is not yet supported</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -				    <section id="crud-with-updatablerecords">
    -						<title>CRUD with UpdatableRecords</title>
    -						<content><html>
    -							<p>
    -								Your database application probably consists of 50% - 80% CRUD, whereas only the remaining 20% - 50% of querying is actual querying. Most often, you will operate on records of tables without using any advanced relational concepts. This is called CRUD for
    -							</p>
    -							<ul>
    -								<li>Create (<reference id="insert-statement" title="INSERT"/>)</li>
    -								<li>Read (<reference id="select-statement" title="SELECT"/>)</li>
    -								<li>Update (<reference id="update-statement" title="UPDATE"/>)</li>
    -								<li>Delete (<reference id="delete-statement" title="DELETE"/>)</li>
    -							</ul>
    -							<p>								
    -								CRUD always uses the same patterns, regardless of the nature of underlying tables. This again, leads to a lot of boilerplate code, if you have to issue your statements yourself. Like Hibernate / JPA and other ORMs, jOOQ facilitates CRUD using a specific API involving <reference class="org.jooq.UpdatableRecord"/> types.
    -							</p>
    -							
    -							<h3>Primary keys and updatability</h3>
    -							<p>
    -								In normalised databases, every table has a primary key by which a tuple/record within that table can be uniquely identified. In simple cases, this is a (possibly auto-generated) number called ID. But in many cases, primary keys include several non-numeric columns. An important feature of such keys is the fact that in most databases, they are enforced using an index that allows for very fast random access to the table. A typical way to access / modify / delete a book is this:
    -							</p>
    -							
    -</html><sql><![CDATA[-- Inserting uses a previously generated key value or generates it afresh
    -INSERT INTO BOOK (ID, TITLE) VALUES (5, 'Animal Farm');
    -
    --- Other operations can use a previously generated key value
    -SELECT * FROM BOOK WHERE ID = 5;
    -UPDATE BOOK SET TITLE = '1984' WHERE ID = 5;
    -DELETE FROM BOOK WHERE ID = 5;]]></sql><html>
    -							
    -							<p>
    -								Normalised databases assume that a primary key is unique "forever", i.e. that a key, once inserted into a table, will never be changed or re-inserted after deletion. In order to use jOOQ's <reference id="simple-crud" title="CRUD"/> operations correctly, you should design your database accordingly.
    -							</p>
    -						</html></content>
    -
    -						<sections>
    -							<section id="simple-crud">
    -								<title>Simple CRUD</title>
    -								<content><html>
    -									<p>
    -										If you're using jOOQ's <reference id="code-generation" title="code generator"/>, it will generate <reference class="org.jooq.UpdatableRecord"/> implementations for every table that has a primary key. When <reference id="fetching" title="fetching"/> such a record form the database, these records are "attached" to the <reference id="dsl-context" title="Configuration" /> that created them. This means that they hold an internal reference to the same database connection that was used to fetch them. This connection is used internally by any of the following methods of the UpdatableRecord:
    -									</p>
    -									
    -</html><java><![CDATA[// Refresh a record from the database.
    -void refresh() throws DataAccessException;
    -
    -// Store (insert or update) a record to the database.
    -int store() throws DataAccessException;
    -
    -// Delete a record from the database
    -int delete() throws DataAccessException;]]></java><html>
    -									
    -									<p>
    -										See the manual's section about <reference id="serializability" title="serializability"/> for some more insight on "attached" objects. 
    -									</p>
    -									
    -									<h3>Storing</h3>
    -									<p>
    -										Storing a record will perform an <reference id="insert-statement" title="INSERT statement"/> or an <reference id="update-statement" title="UPDATE statement"/>. In general, new records are always inserted, whereas records loaded from the database are always updated. This is best visualised in code:
    -									</p>
    -
    -</html><java><![CDATA[// Create a new record
    -BookRecord book1 = create.newRecord(BOOK);
    -
    -// Insert the record: INSERT INTO BOOK (TITLE) VALUES ('1984');
    -book1.setTitle("1984");
    -book1.store();
    -
    -// Update the record: UPDATE BOOK SET PUBLISHED_IN = 1984 WHERE ID = [id]
    -book1.setPublishedIn(1948);
    -book1.store();
    -
    -// Get the (possibly) auto-generated ID from the record
    -Integer id = book1.getId();
    -
    -// Get another instance of the same book
    -BookRecord book2 = create.fetchOne(BOOK, BOOK.ID.equal(id));
    -
    -// Update the record: UPDATE BOOK SET TITLE = 'Animal Farm' WHERE ID = [id]
    -book2.setTitle("Animal Farm");
    -book2.store();]]></java><html>
    -									
    -									<p>
    -										Some remarks about storing:
    -									</p>
    -									<ul>
    -										<li>jOOQ sets only modified values in <reference id="insert-statement" title="INSERT statements"/> or <reference id="update-statement" title="UPDATE statements"/>. This allows for default values to be applied to inserted records, as specified in CREATE TABLE DDL statements.</li>
    -										<li>When store() performs an <reference id="insert-statement" title="INSERT statement"/>, jOOQ attempts to load any generated keys from the database back into the record. For more details, see the manual's section about <reference id="identity-values" title="IDENTITY values"/>.</li>
    -										<li>When loading records from <reference id="pojos" title="POJOs"/>, jOOQ will assume the record is a new record. It will hence attempt to INSERT it.</li>
    -										<li>When you activate <reference id="optimistic-locking" title="optimistic locking"/>, storing a record may fail, if the underlying database record has been changed in the mean time.</li>
    -									</ul>
    -																		
    -									<h3>Deleting</h3>
    -									<p>
    -										Deleting a record will remove it from the database. Here's how you delete records:
    -									</p>
    -									
    -</html><java><![CDATA[// Get a previously inserted book
    -BookRecord book = create.fetchOne(BOOK, BOOK.ID.equal(5));
    -
    -// Delete the book
    -book.delete();]]></java><html>
    -									
    -									<h3>Refreshing</h3>
    -									<p>
    -										Refreshing a record from the database means that jOOQ will issue a <reference id="select-statement" title="SELECT statement"/> to refresh all record values that are not the primary key. This is particularly useful when you use jOOQ's <reference id="optimistic-locking" title="optimistic locking"/> feature, in case a modified record is "stale" and cannot be stored to the database, because the underlying database record has changed in the mean time.
    -									</p>
    -									<p>
    -										In order to perform a refresh, use the following Java code:
    -									</p>									
    -
    -</html><java><![CDATA[// Fetch an updatable record from the database
    -BookRecord book = create.fetchOne(BOOK, BOOK.ID.equal(5));
    -
    -// Refresh the record
    -book.refresh();]]></java><html>
    -
    -									<h3>CRUD and SELECT statements</h3>
    -									<p>
    -										CRUD operations can be combined with regular querying, if you select records from single database tables, as explained in the manual's section about <reference id="select-statement" title="SELECT statements"/>. For this, you will need to use the <code>selectFrom()</code> method from the <reference id="dsl-context" title="DSLContext"/>:
    -									</p>
    -									
    -</html><java><![CDATA[// Loop over records returned from a SELECT statement
    -for (BookRecord book : create.fetch(BOOK, BOOK.PUBLISHED_IN.equal(1948))) {
    -
    -  // Perform actions on BookRecords depending on some conditions
    -  if ("Orwell".equals(book.fetchParent(FK_BOOK_AUTHOR).getLastName())) {
    -    book.delete();
    -  }
    -}]]></java>
    -								</content>
    -							</section>
    -
    -							<section id="internal-flags">
    -								<title>Records' internal flags</title>
    -								<content><html>
    -									<p>
    -										All of jOOQ's <reference id="record-vs-tablerecord" title="Record types and subtypes"/> maintain an internal state for every column value. This state is composed of three elements:
    -									</p>
    -									<ul>
    -										<li>The value itself</li>
    -										<li>The "original" value, i.e. the value as it was originally fetched from the database or <code>null</code>, if the record was never in the database</li>
    -										<li>The "changed" flag, indicating if the value was ever changed through the <code>Record</code> API.</li>
    -									</ul>
    -									
    -									<p>
    -										The purpose of the above information is for jOOQ's <reference id="simple-crud" title="CRUD operations"/> to know, which values need to be stored to the database, and which values have been left untouched.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="identity-values">
    -								<title>IDENTITY values</title>
    -								<content><html>
    -									<p>
    -										Many databases support the concept of IDENTITY values, or <reference id="sequence-execution" title="SEQUENCE-generated"/> key values. This is reflected by JDBC's <reference class="java.sql.Statement" anchor="#getGeneratedKeys()" title="getGeneratedKeys()"/> method. jOOQ abstracts using this method as many databases and JDBC drivers behave differently with respect to generated keys. Let's assume the following SQL Server BOOK table:
    -									</p>
    -									
    -</html><sql><![CDATA[CREATE TABLE book (
    -  ID INTEGER IDENTITY(1,1) NOT NULL,
    -  
    -  -- [...]
    -  
    -  CONSTRAINT pk_book PRIMARY KEY (id)
    -)]]></sql><html>
    -
    -									<p>
    -										If you're using jOOQ's <reference id="code-generation" title="code generator"/>, the above table will generate a <reference class="org.jooq.UpdatableRecord"/> with an IDENTITY column. This information is used by jOOQ internally, to update IDs after calling <reference id="crud-with-updatablerecords" title="store()"/>: 
    -									</p>
    -									
    -</html><java><![CDATA[BookRecord book = create.newRecord(BOOK);
    -book.setTitle("1984");
    -book.store();
    -
    -// The generated ID value is fetched after the above INSERT statement
    -System.out.println(book.getId());]]></java><html>
    -
    -									<h3>Database compatibility</h3>
    -									<p>
    -										<strong>DB2, Derby, HSQLDB, Ingres</strong>
    -									</p>
    -									<p>
    -										These SQL dialects implement the standard very neatly.
    -									</p>
    -</html><sql><![CDATA[id INTEGER GENERATED BY DEFAULT AS IDENTITY
    -id INTEGER GENERATED BY DEFAULT AS IDENTITY (START WITH 1)]]></sql><html>
    -
    -									<p>
    -										<strong>H2, MySQL, Postgres, SQL Server, Sybase ASE, Sybase SQL Anywhere</strong>
    -									</p>
    -									<p>
    -										These SQL dialects implement identites, but the DDL syntax doesn’t follow the standard
    -									</p>
    -</html><sql><![CDATA[-- H2 mimicks MySQL's and SQL Server's syntax
    -ID INTEGER IDENTITY(1,1)
    -ID INTEGER AUTO_INCREMENT
    --- MySQL and SQLite
    -ID INTEGER NOT NULL AUTO_INCREMENT
    -
    --- Postgres serials implicitly create a sequence
    --- Postgres also allows for selecting from custom sequences
    --- That way, sequences can be shared among tables
    -id SERIAL NOT NULL
    -
    --- SQL Server
    -ID INTEGER IDENTITY(1,1) NOT NULL
    --- Sybase ASE
    -id INTEGER IDENTITY NOT NULL
    --- Sybase SQL Anywhere
    -id INTEGER NOT NULL IDENTITY]]></sql><html>
    -
    -									<p>
    -										<strong>Oracle</strong>
    -									</p>
    -									<p>
    -										Oracle does not know any identity columns at all. Instead, you will have to use a trigger and update the ID column yourself, using a custom sequence. Something along these lines:
    -									</p>
    -</html><sql><![CDATA[CREATE OR REPLACE TRIGGER my_trigger
    -BEFORE INSERT
    -ON my_table
    -REFERENCING NEW AS new
    -FOR EACH ROW
    -BEGIN
    -  SELECT my_sequence.nextval
    -  INTO :new.id
    -  FROM dual;
    -END my_trigger;]]></sql><html>
    -
    -									<p>
    -										Note, that this approach can be employed in most databases supporting sequences and triggers! It is a lot more flexible than standard identities
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="navigation-methods">
    -								<title>Navigation methods</title>
    -								<content><html>
    -									<p>
    -										<reference class="org.jooq.TableRecord"/> and <reference class="org.jooq.UpdatableRecord"/> contain foreign key navigation methods. These navigation methods allow for "navigating" inbound or outbound foreign key references by executing an appropriate query. An example is given here: 
    -									</p>
    -				
    -</html><code-pair>
    -<sql><![CDATA[CREATE TABLE book (
    -  AUTHOR_ID NUMBER(7) NOT NULL,
    -  
    -  -- [...]
    -  
    -  FOREIGN KEY (AUTHOR_ID) REFERENCES author(ID)
    -)]]></sql>
    -<java><![CDATA[BookRecord book = create.fetch(BOOK, BOOK.ID.equal(5));
    -
    -// Find the author of a book
    -AuthorRecord author = book.fetchParent(FK_BOOK_AUTHOR);
    -
    -// Find other books by that author
    -List<BookRecord> books = author.fetchChildren(FK_BOOK_AUTHOR);]]></java>
    -</code-pair><html>					
    -
    -									<p>
    -										Note that, unlike in Hibernate, jOOQ's navigation methods will always lazy-fetch relevant records, without caching any results. In other words, every time you run such a fetch method, a new query will be issued.
    -									</p>
    -									<p>
    -										These fetch methods only work on "attached" records. See the manual's section about <reference id="serializability" title="serializability"/> for some more insight on "attached" objects.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="non-updatable-records">
    -								<title>Non-updatable records</title>
    -								<content><html>
    -									<p>
    -										Tables without a <code>PRIMARY KEY</code> are considered non-updatable by jOOQ, as jOOQ has no way of uniquely identifying such a record within the database. If you're using jOOQ's <reference id="code-generation" title="code generator"/>, such tables will generate <reference class="org.jooq.TableRecord"/> classes, instead of <reference class="org.jooq.UpdatableRecord"/> classes. When you fetch <reference id="record-vs-tablerecord" title="typed records"/> from such a table, the returned records will not allow for calling any of the <reference id="crud-with-updatablerecords" title="store(), refresh(), delete()"/> methods. 
    -									</p>
    -									
    -									<p>
    -										Note, that some databases use internal rowid or object-id values to identify such records. jOOQ does not support these vendor-specific record meta-data.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="optimistic-locking">
    -								<title>Optimistic locking</title>
    -								<content><html>
    -									<p>
    -										jOOQ allows you to perform <reference id="crud-with-updatablerecords" title="CRUD"/> operations using optimistic locking. You can immediately take advantage of this feature by activating the relevant <reference id="custom-settings" title="executeWithOptimisticLocking Setting"/>. Without any further knowledge of the underlying data semantics, this will have the following impact on store() and delete() methods:
    -									</p>
    -									<ul>
    -										<li>INSERT statements are not affected by this Setting flag</li>
    -										<li>Prior to UPDATE or DELETE statements, jOOQ will run a <reference id="for-update-clause" title="SELECT .. FOR UPDATE"/> statement, pessimistically locking the record for the subsequent UPDATE / DELETE</li>
    -										<li>The data fetched with the previous SELECT will be compared against the data in the record being stored or deleted</li>
    -										<li>An <reference class="org.jooq.exception.DataChangedException"/> is thrown if the record had been modified in the mean time</li>
    -										<li>The record is successfully stored / deleted, if the record had not been modified in the mean time.</li>
    -									</ul>
    -									<p>
    -										The above changes to jOOQ's behaviour are transparent to the API, the only thing you need to do for it to be activated is to set the Settings flag. Here is an example illustrating optimistic locking:
    -									</p>
    -
    -</html><java><![CDATA[// Properly configure the DSLContext
    -DSLContext optimistic = DSLContext.using(connection, SQLDialect.ORACLE, 
    -  new Settings().withExecuteWithOptimisticLocking(true));
    -  
    -// Fetch a book two times
    -BookRecord book1 = optimistic.fetch(BOOK, BOOK.ID.equal(5));
    -BookRecord book2 = optimistic.fetch(BOOK, BOOK.ID.equal(5));
    -
    -// Change the title and store this book. The underlying database record has not been modified, it can be safely updated.
    -book1.setTitle("Animal Farm");
    -book1.store();
    -
    -// Book2 still references the original TITLE value, but the database holds a new value from book1.store(). 
    -// This store() will thus fail:
    -book2.setTitle("1984");
    -book2.store();]]></java><html>								
    -	
    -									<h3>Optimised optimistic locking using TIMESTAMP fields</h3>
    -									<p>
    -										If you're using jOOQ's <reference id="code-generation" title="code generator"/>, you can take indicate TIMESTAMP or UPDATE COUNTER fields for every generated table in the <reference id="codegen-advanced" title="code generation configuration"/>. Let's say we have this table:
    -									</p>
    -
    -</html><sql><![CDATA[CREATE TABLE book (
    -  
    -  -- This column indicates when each book record was modified for the last time
    -  MODIFIED TIMESTAMP NOT NULL,
    -  -- [...]
    -)]]></sql><html>									
    -
    -									<p>
    -										The MODIFIED column will contain a timestamp indicating the last modification timestamp for any book in the BOOK table. If you're using jOOQ and it's <reference id="crud-with-updatablerecords" title="store() methods on UpdatableRecords"/>, jOOQ will then generate this TIMESTAMP value for you, automatically. However, instead of running an additional <reference id="for-update-clause" title="SELECT .. FOR UPDATE"/> statement prior to an UPDATE or DELETE statement, jOOQ adds a WHERE-clause to the UPDATE or DELETE statement, checking for TIMESTAMP's integrity. This can be best illustrated with an example:   
    -									</p>
    -									
    -</html><java><![CDATA[// Properly configure the DSLContext
    -DSLContext optimistic = DSL.using(connection, SQLDialect.ORACLE, 
    -  new Settings().withExecuteWithOptimisticLocking(true));
    -  
    -// Fetch a book two times
    -BookRecord book1 = optimistic.fetch(BOOK, BOOK.ID.equal(5));
    -BookRecord book2 = optimistic.fetch(BOOK, BOOK.ID.equal(5));
    -
    -// Change the title and store this book. The MODIFIED value has not been changed since the book was fetched. 
    -// It can be safely updated
    -book1.setTitle("Animal Farm");
    -book1.store();
    -
    -// Book2 still references the original MODIFIED value, but the database holds a new value from book1.store(). 
    -// This store() will thus fail:
    -book2.setTitle("1984");
    -book2.store();]]></java><html>
    -
    -									<p>
    -										As before, without the added TIMESTAMP column, optimistic locking is transparent to the API.
    -									</p>
    -									
    -									<h3>Optimised optimistic locking using VERSION fields</h3>
    -									<p>
    -										Instead of using TIMESTAMPs, you may also use numeric VERSION fields, containing version numbers that are incremented by jOOQ upon store() calls.
    -									</p>
    -
    -									<p>
    -										Note, for explicit pessimistic locking, please consider the manual's section about the <reference id="for-update-clause" title="FOR UPDATE clause"/>. For more details about how to configure TIMESTAMP or VERSION fields, consider the manual's section about <reference id="codegen-advanced" title="advanced code generator configuration"/>.
    -									</p>
    -								</html></content>
    -							</section>
    -
    -							<section id="batch-execution-for-crud">
    -								<title>Batch execution</title>
    -								<content><html>
    -									<p>
    -										When inserting, updating, deleting a lot of records, you may wish to profit from JDBC batch operations, which can be performed by jOOQ. These are available through jOOQ's <reference id="dsl-context" title="DSLContext"/> as shown in the following example:
    -									</p>
    -									
    -</html><java><![CDATA[// Fetch a bunch of books
    -List<BookRecord> books = create.fetch(BOOK);
    -
    -// Modify the above books, and add some new ones:
    -modify(books);
    -addMore(books);
    -
    -// Batch-update and/or insert all of the above books
    -create.batchStore(books);]]></java><html>					
    -
    -									<p>
    -										Internally, jOOQ will render all the required SQL statements and execute them as a regular <reference id="batch-execution" title="JDBC batch execution"/>. 
    -									</p>				
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -				    <section id="daos">
    -						<title>DAOs</title>
    -						<content><html>
    -							<p>
    -								If you're using jOOQ's <reference id="code-generation" title="code generator"/>, you can configure it to generate <reference id="pojos" title="POJOs" /> and DAOs for you. jOOQ then generates one DAO per <reference id="crud-with-updatablerecords" title="UpdatableRecord"/>, i.e. per table with a single-column primary key. Generated DAOs implement a common jOOQ type called <reference class="org.jooq.DAO"/>. This type contains the following methods:
    -							</p>
    -							
    -</html><java><![CDATA[// <R> corresponds to the DAO's related table
    -// <P> corresponds to the DAO's related generated POJO type
    -// <T> corresponds to the DAO's related table's primary key type. 
    -// Note that multi-column primary keys are not yet supported by DAOs
    -public interface DAO<R extends TableRecord<R>, P, T> {
    -
    -    // These methods allow for inserting POJOs
    -    void insert(P object) throws DataAccessException;
    -    void insert(P... objects) throws DataAccessException;
    -    void insert(Collection<P> objects) throws DataAccessException;
    -    
    -    // These methods allow for updating POJOs based on their primary key
    -    void update(P object) throws DataAccessException;
    -    void update(P... objects) throws DataAccessException;
    -    void update(Collection<P> objects) throws DataAccessException;
    -    
    -    // These methods allow for deleting POJOs based on their primary key
    -    void delete(P... objects) throws DataAccessException;
    -    void delete(Collection<P> objects) throws DataAccessException;
    -    void deleteById(T... ids) throws DataAccessException;
    -    void deleteById(Collection<T> ids) throws DataAccessException;
    -    
    -    // These methods allow for checking record existence
    -    boolean exists(P object) throws DataAccessException;
    -    boolean existsById(T id) throws DataAccessException;
    -    long count() throws DataAccessException;
    -    
    -    // These methods allow for retrieving POJOs by primary key or by some other field
    -    List<P> findAll() throws DataAccessException;
    -    P findById(T id) throws DataAccessException;
    -    <Z> List<P> fetch(Field<Z> field, Z... values) throws DataAccessException;
    -    <Z> P fetchOne(Field<Z> field, Z value) throws DataAccessException;
    -
    -    // These methods provide DAO meta-information
    -    Table<R> getTable();
    -    Class<P> getType();
    -}]]></java><html>
    -
    -							<p>
    -								Besides these base methods, generated DAO classes implement various useful fetch methods. An incomplete example is given here, for the BOOK table:
    -							</p>
    -
    -</html><java><![CDATA[// An example generated BookDao class
    -public class BookDao extends DAOImpl<BookRecord, Book, Integer> {
    -
    -    // Columns with primary / unique keys produce fetchOne() methods    
    -    public Book fetchOneById(Integer value) { ... }
    -
    -    // Other columns produce fetch() methods, returning several records
    -    public List<Book> fetchByAuthorId(Integer... values) { ... }
    -    public List<Book> fetchByTitle(String... values) { ... }
    -}]]></java><html>
    -							<p>
    -								Note that you can further subtype those pre-generated DAO classes, to add more useful DAO methods to them. Using such a DAO is simple:
    -							</p>
    -							
    -</html><java><![CDATA[// Initialise an Configuration
    -Configuration configuration = new DefaultConfiguration().set(connection).set(SQLDialect.ORACLE);
    -
    -// Initialise the DAO with the Configuration
    -BookDao bookDao = new BookDao(configuration);
    -
    -// Start using the DAO
    -Book book = bookDao.findById(5);
    -
    -// Modify and update the POJO
    -book.setTitle("1984");
    -book.setPublishedIn(1948);
    -bookDao.update(book);
    -
    -// Delete it again
    -bookDao.delete(book);]]></java>
    -
    -						</content>
    -					</section>
    -
    -				    <section id="exception-handling">
    -						<title>Exception handling</title>
    -						<content><html>
    -							<h3>Checked vs. unchecked exceptions</h3>
    -							<p>
    -								This is an eternal and religious debate. Pros and cons have been discussed time and again, and it still is a matter of taste, today. In this case, jOOQ clearly takes a side. jOOQ's exception strategy is simple:
    -							</p>
    -							<ul>
    -								<li>All "system exceptions" are unchecked. If in the middle of a transaction involving business logic, there is no way that you can recover sensibly from a lost database connection, or a constraint violation that indicates a bug in your understanding of your database model.</li>
    -								<li>All "business exceptions" are checked. Business exceptions are true exceptions that you should handle (e.g. not enough funds to complete a transaction).</li>
    -							</ul>
    -							<p>
    -								With jOOQ, it's simple. All of jOOQ's exceptions are "system exceptions", hence they are all unchecked.
    -							</p>
    -							
    -							<h3>jOOQ's DataAccessException</h3>
    -							<p>
    -								jOOQ uses its own <reference class="org.jooq.exception.DataAccessException"/> to wrap any underlying <reference class="java.sql.SQLException"/> that might have occurred. Note that all methods in jOOQ that may cause such a DataAccessException document this both in the Javadoc as well as in their method signature.
    -							</p>
    -							<p>
    -								DataAccessException is subtyped several times as follows:
    -							</p>
    -							<ul>
    -								<li><strong>DataAccessException</strong>: General exception usually originating from a <reference class="java.sql.SQLException"/></li>
    -								<li><strong>DataChangedException</strong>: An exception indicating that the database's underlying record has been changed in the mean time (see <reference id="optimistic-locking" title="optimistic locking"/>)</li>
    -								<li><strong>DataTypeException</strong>: Something went wrong during type conversion</li>
    -								<li><strong>DetachedException</strong>: A SQL statement was executed on a "detached" <reference id="crud-with-updatablerecords" title="UpdatableRecord"/> or a "detached" <reference id="sql-statements" title="SQL statement"/>.</li>
    -								<li><strong>InvalidResultException</strong>: An operation was performed expecting only one result, but several results were returned.</li>
    -								<li><strong>MappingException</strong>: Something went wrong when loading a record from a <reference id="pojos" title="POJO"/> or when mapping a record into a POJO</li>
    -							</ul>
    -							
    -							<h3>Override jOOQ's exception handling</h3>
    -							<p>
    -								The following section about <reference id="execute-listeners" title="execute listeners"/> documents means of overriding jOOQ's exception handling, if you wish to deal separately with some types of constraint violations, or if you raise business errors from your database, etc.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="execute-listeners">
    -						<title>ExecuteListeners</title>
    -						<content><html>
    -							<p>
    -								The <reference id="dsl-context" title="Executor class"/> lets you specify a list of <reference class="org.jooq.ExecuteListener"/> instances. The ExecuteListener is essentially an event listener for Query, Routine, or ResultSet render, prepare, bind, execute, fetch steps. It is a base type for loggers, debuggers, profilers, data collectors, triggers, etc. Advanced ExecuteListeners can also provide custom implementations of Connection, PreparedStatement and ResultSet to jOOQ in apropriate methods.
    -							</p>
    -							<p>
    -								For convenience and better backwards-compatibility, consider extending <reference class="org.jooq.impl.DefaultExecuteListener"/> instead of implementing this interface.
    -							</p>
    -                            
    -                            <h3>Example: Query statistics ExecuteListener</h3>
    -							<p>
    -								Here is a sample implementation of an ExecuteListener, that is simply counting the number of queries per type that are being executed using jOOQ:
    -							</p>
    -
    -</html><java><![CDATA[package com.example;
    -
    -// Extending DefaultExecuteListener, which provides empty implementations for all methods...
    -public class StatisticsListener extends DefaultExecuteListener {
    -    public static Map<ExecuteType, Integer> STATISTICS = new HashMap<ExecuteType, Integer>();
    -
    -    // Count "start" events for every type of query executed by jOOQ
    -    @Override
    -    public void start(ExecuteContext ctx) {
    -        synchronized (STATISTICS) {
    -            Integer count = STATISTICS.get(ctx.type());
    -    
    -            if (count == null) {
    -                count = 0;
    -            }
    -    
    -            STATISTICS.put(ctx.type(), count + 1);
    -        }
    -    }
    -}]]></java><html>
    -
    -							<p>
    -								Now, configure jOOQ's runtime to load your listener
    -							</p>
    -
    -</html><java><![CDATA[// Create a configuration with an appropriate listener provider:
    -Configuration configuration = new DefaultConfiguration().set(connection).set(dialect);
    -configuration.set(new DefaultExecuteListenerProvider(new StatisticsListener()));
    -
    -// Create a DSLContext from the above configuration
    -DSLContext create = DSL.using(configuration);]]></java><html>
    -
    -							<p>
    -								And log results any time with a snippet like this:
    -							</p>
    -
    -</html><java><![CDATA[log.info("STATISTICS");
    -log.info("----------");
    -
    -for (ExecuteType type : ExecuteType.values()) {
    -    log.info(type.name(), StatisticsListener.STATISTICS.get(type) + " executions");
    -}]]></java><html>
    -                            <p>
    -                            	This may result in the following log output:
    -                            </p>
    -
    -</html><config>15:16:52,982  INFO - TEST STATISTICS
    -15:16:52,982  INFO - ---------------
    -15:16:52,983  INFO - READ                     : 919 executions
    -15:16:52,983  INFO - WRITE                    : 117 executions
    -15:16:52,983  INFO - DDL                      : 2 executions
    -15:16:52,983  INFO - BATCH                    : 4 executions
    -15:16:52,983  INFO - ROUTINE                  : 21 executions
    -15:16:52,983  INFO - OTHER                    : 30 executions</config><html>
    -
    -							<p>
    -								Please read the <reference class="org.jooq.ExecuteListener" title="ExecuteListener Javadoc"/> for more details
    -							</p>
    -							
    -							<h3>Example: Custom Logging ExecuteListener</h3>
    -							<p>
    -								The following depicts an example of a custom ExecuteListener, which pretty-prints all queries being executed by jOOQ to stdout:
    -							</p>
    -
    -</html><java><![CDATA[import org.jooq.DSLContext;
    -import org.jooq.ExecuteContext;
    -import org.jooq.conf.Settings;
    -import org.jooq.impl.DefaultExecuteListener;
    -import org.jooq.tools.StringUtils;
    -
    -public class PrettyPrinter extends DefaultExecuteListener {
    -
    -    /**
    -     * Hook into the query execution lifecycle before executing queries
    -     */
    -    @Override
    -    public void executeStart(ExecuteContext ctx) {
    -
    -        // Create a new DSLContext for logging rendering purposes
    -        // This DSLContext doesn't need a connection, only the SQLDialect...
    -        DSLContext create = DSL.using(ctx.dialect(), 
    -        
    -        // ... and the flag for pretty-printing
    -        	new Settings().withRenderFormatted(true));
    -
    -        // If we're executing a query
    -        if (ctx.query() != null) {
    -            System.out.println(create.renderInlined(ctx.query()));
    -        }
    -        
    -        // If we're executing a routine
    -        else if (ctx.routine() != null) {
    -            System.out.println(create.renderInlined(ctx.routine()));
    -        }
    -        
    -        // If we're executing anything else (e.g. plain SQL)
    -        else if (!StringUtils.isBlank(ctx.sql())) {
    -            System.out.println(ctx.sql());
    -        }
    -    }
    -}]]></java><html>
    -							<p>
    -								See also the manual's sections about <reference id="logging" title="logging"/> for more sample implementations of actual ExecuteListeners.
    -							</p>
    -                            
    -                            <h3>Example: Bad query execution ExecuteListener</h3>
    -                            <p>
    -                                You can also use ExecuteListeners to interact with your SQL statements, for instance when you want to check if executed <code><reference id="update-statement" title="UPDATE"/></code> or <code><reference id="delete-statement" title="DELETE"/></code> statements contain a <code>WHERE</code> clause. This can be achieved trivially with the following sample ExecuteListener:
    -                            </p>
    -                            
    -</html><java><![CDATA[public class DeleteOrUpdateWithoutWhereListener extends DefaultExecuteListener {
    -
    -    @Override
    -    public void renderEnd(ExecuteContext ctx) {
    -        if (ctx.sql().matches("^(?i:(UPDATE|DELETE)(?!.* WHERE ).*)$")) {
    -            throw new DeleteOrUpdateWithoutWhereException();
    -        }
    -    }
    -}
    -
    -public class DeleteOrUpdateWithoutWhereException extends RuntimeException {}
    -]]></java><html>
    -                            <p>
    -                                You might want to replace the above implementation with a more efficient and more reliable one, of course.
    -                            </p>
    -						</html></content>
    -					</section>
    -
    -					<section id="meta-data">
    -						<title>Database meta data</title>
    -						<content><html>
    -							<p>
    -								Since jOOQ 3.0, a simple wrapping API has been added to wrap JDBC's rather awkward <reference class="java.sql.DatabaseMetaData"/>. This API is still experimental, as the calls to the underlying JDBC type are not always available for all SQL dialects.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="logging">
    -						<title>Logging</title>
    -						<content><html>
    -							<p>
    -								jOOQ logs all SQL queries and fetched result sets to its internal DEBUG logger, which is implemented as an <reference id="execute-listeners" title="execute listener"/>. By default, execute logging is activated in the <reference id="custom-settings" title="jOOQ Settings"/>. In order to see any DEBUG log output, put either log4j or slf4j on jOOQ's classpath along with their respective configuration. A sample log4j configuration can be seen here:
    -							</p>
    -							
    -</html><xml><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
    -<log4j:configuration>
    -    <appender name="stdout" class="org.apache.log4j.ConsoleAppender">
    -        <layout class="org.apache.log4j.PatternLayout">
    -            <param name="ConversionPattern" value="%m%n" />
    -        </layout>
    -    </appender>
    -
    -    <root>
    -        <priority value="debug" />
    -        <appender-ref ref="stdout" />
    -    </root>
    -</log4j:configuration>]]></xml><html>
    -
    -							<p>
    -								With the above configuration, let's fetch some data with jOOQ
    -							</p>
    -							
    -</html><java><![CDATA[create.select(BOOK.ID, BOOK.TITLE).from(BOOK).orderBy(BOOK.ID).limit(1, 2).fetch();]]></java><html>
    -
    -							<p>
    -								The above query may result in the following log output:
    -							</p>
    -
    -</html><text><![CDATA[Executing query          : select "BOOK"."ID", "BOOK"."TITLE" from "BOOK" order by "BOOK"."ID" asc limit ? offset ?
    --> with bind values      : select "BOOK"."ID", "BOOK"."TITLE" from "BOOK" order by "BOOK"."ID" asc limit 2 offset 1
    -Query executed           : Total: 1.439ms
    -Fetched result           : +----+------------+
    -                         : |  ID|TITLE       |
    -                         : +----+------------+
    -                         : |   2|Animal Farm |
    -                         : |   3|O Alquimista|
    -                         : +----+------------+
    -Finishing                : Total: 4.814ms, +3.375ms
    -]]></text><html>
    -
    -							<p>
    -								Essentially, jOOQ will log
    -							</p>
    -							<ul>
    -								<li>The SQL statement as rendered to the prepared statement</li>
    -								<li>The SQL statement with inlined bind values (for improved debugging)</li>
    -								<li>The query execution time</li>
    -								<li>The first 5 records of the result. This is formatted using <reference id="exporting-text" title="jOOQ's text export"/></li>
    -								<li>The total execution + fetching time</li>
    -							</ul>
    -
    -							<p>
    -								If you wish to use your own logger (e.g. avoiding printing out sensitive data), you can deactivate jOOQ's logger using <reference id="custom-settings" title="your custom settings"/> and implement your own <reference id="execute-listeners" title="execute listener logger"/>.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="performance-considerations">
    -						<title>Performance considerations</title>
    -						<content><html>
    -							<p>
    -								Many users may have switched from higher-level abstractions such as Hibernate to jOOQ, because of Hibernate's difficult-to-manage performance, when it comes to large database schemas and complex second-level caching strategies. However, jOOQ itself is not a lightweight database abstraction framework, and it comes with its own overhead. Please be sure to consider the following points:
    -							</p>
    -							<ul>
    -								<li>It takes some time to construct jOOQ queries. If you can reuse the same queries, you might cache them. Beware of thread-safety issues, though, as jOOQ's <reference id="dsl-context" title="Configuration"/> is not necessarily threadsafe, and queries are "attached" to their creating DSLContext</li>
    -								<li>It takes some time to render SQL strings. Internally, jOOQ reuses the same <reference class="java.lang.StringBuilder"/> for the complete query, but some rendering elements may take their time. You could, of course, cache SQL generated by jOOQ and prepare your own <reference class="java.sql.PreparedStatement"/> objects</li>
    -								<li>It takes some time to bind values to prepared statements. jOOQ does not keep any open prepared statements, internally. Use a sophisticated connection pool, that will cache prepared statements and inject them into jOOQ through the standard JDBC API</li>
    -								<li>It takes some time to fetch results. By default, jOOQ will always fetch the complete <reference class="java.sql.ResultSet"/> into memory. Use <reference id="lazy-fetching" title="lazy fetching"/> to prevent that, and scroll over an open underlying database cursor</li>
    -							</ul>
    -							
    -							<h3>Optimise wisely</h3>
    -							<p>
    -								Don't be put off by the above paragraphs. You should optimise wisely, i.e. only in places where you really need very high throughput to your database. jOOQ's overhead compared to plain JDBC is typically less than 1ms per query.
    -							</p>
    -						</html></content>
    -					</section>
    -				</sections>
    -			</section>
    -
    -			<section id="code-generation">
    -				<title>Code generation</title>
    -				<content><html>
    -					<p>
    -						While optional, source code generation is one of jOOQ's main assets if you wish to increase developer productivity. jOOQ's code generator takes your database schema and reverse-engineers it into a set of Java classes modelling <reference id="table-expressions" title="tables"/>, <reference id="record-vs-tablerecord" title="records"/>, <reference id="sequence-execution" title="sequences"/>, <reference id="pojos" title="POJOs"/>, <reference id="daos" title="DAOs"/>, <reference id="stored-procedures" title="stored procedures"/>, user-defined types and many more.
    -					</p>
    -					<p>
    -						The essential ideas behind source code generation are these:
    -					</p>
    -					<ul>
    -						<li><strong>Increased IDE support</strong>: Type your Java code directly against your database schema, with all type information available</li>
    -						<li><strong>Type-safety</strong>: When your database schema changes, your generated code will change as well. Removing columns will lead to compilation errors, which you can detect early.</li>
    -					</ul>
    -					<p>
    -						The following chapters will show how to configure the code generator and how to generate various artefacts.
    -					</p>
    -				</html></content>
    -
    -				<sections>
    -				    <section id="codegen-configuration">
    -						<title>Configuration and setup of the generator</title>
    -						<content><html>
    -							<p>
    -								There are three binaries available with jOOQ, to be downloaded from <a href="https://sourceforge.net/projects/jooq/">SourceForge</a> or from Maven central:
    -							</p>
    -							<ul>
    -								<li>
    -									<strong>jooq-{jooq-version}.jar</strong>
    -									<br />
    -									The main library that you will include in your application to run jOOQ
    -								</li>
    -								<li>
    -									<strong>jooq-meta-{jooq-version}.jar</strong>
    -									<br />
    -									The utility that you will include in your build to navigate your database schema for code generation. This can be used as a schema crawler as well.
    -								</li>
    -								<li>
    -									<strong>jooq-codegen-{jooq-version}.jar</strong>
    -									<br />
    -									The utility that you will include in your build to generate your database schema
    -								</li>
    -							</ul>
    -
    -							<h3>Configure jOOQ's code generator</h3>
    -							<p>
    -								You need to tell jOOQ some things about your database connection. Here's an example of how to do it for an Oracle database
    -							</p>
    -							
    -</html><xml><![CDATA[<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    -<configuration>
    -  <!-- Configure the database connection here -->
    -  <jdbc>
    -    <driver>oracle.jdbc.OracleDriver</driver>
    -    <url>jdbc:oracle:thin:@[your jdbc connection parameters]</url>
    -    <user>[your database user]</user>
    -    <password>[your database password]</password>
    -    
    -    <!-- You can also pass user/password and other JDBC properties in the optional properties tag: -->
    -    <properties>
    -      <property><key>user</key><value>[db-user]</value></property>
    -      <property><key>password</key><value>[db-password]</value></property>
    -    </properties>
    -  </jdbc>
    -
    -  <generator>
    -    <database>
    -      <!-- The database dialect from jooq-meta. Available dialects are
    -           named org.util.[database].[database]Database. Known values are:
    -
    -           org.jooq.util.ase.ASEDatabase (to be used with Sybase ASE)
    -           org.jooq.util.cubrid.CUBRIDDatabase
    -           org.jooq.util.db2.DB2Database
    -           org.jooq.util.derby.DerbyDatabase
    -           org.jooq.util.h2.H2Database
    -           org.jooq.util.hsqldb.HSQLDBDatabase
    -           org.jooq.util.ingres.IngresDatabase
    -           org.jooq.util.mysql.MySQLDatabase
    -           org.jooq.util.oracle.OracleDatabase
    -           org.jooq.util.postgres.PostgresDatabase
    -           org.jooq.util.sqlite.SQLiteDatabase
    -           org.jooq.util.sqlserver.SQLServerDatabase
    -           org.jooq.util.sybase.SybaseDatabase (to be used with Sybase SQL Anywhere)
    -
    -           You can also provide your own org.jooq.util.Database implementation
    -           here, if your database is currently not supported or if you wish to
    -           read the database schema from a file, such as a Hibernate .hbm.xml file -->
    -      <name>org.jooq.util.oracle.OracleDatabase</name>
    -
    -      <!-- All elements that are generated from your schema (A Java regular expression. 
    -           Use the pipe to separate several expressions) Watch out for
    -           case-sensitivity. Depending on your database, this might be
    -           important! You can create case-insensitive regular expressions
    -           using this syntax: (?i:expr) -->
    -      <includes>.*</includes>
    -
    -      <!-- All elements that are excluded from your schema (A Java regular expression. 
    -           Use the pipe to separate several expressions). Excludes match before
    -           includes -->
    -      <excludes></excludes>
    -
    -      <!-- The schema that is used locally as a source for meta information.
    -           This could be your development schema or the production schema, etc
    -           This cannot be combined with the schemata element.
    -
    -           If left empty, jOOQ will generate all available schemata. See the
    -           manual's next section to learn how to generate several schemata -->
    -      <inputSchema>[your database schema / owner / name]</inputSchema>
    -    </database>
    -
    -    <generate>
    -      <!-- Generation flags: See advanced configuration properties -->
    -    </generate>
    -
    -    <target>
    -      <!-- The destination package of your generated classes (within the
    -           destination directory)
    -           
    -           jOOQ may append the schema name to this package if generating multiple schemas,
    -           e.g. org.jooq.your.packagename.schema1
    -                org.jooq.your.packagename.schema2 -->
    -      <packageName>[org.jooq.your.packagename]</packageName>
    -
    -      <!-- The destination directory of your generated classes -->
    -      <directory>[/path/to/your/dir]</directory>
    -    </target>
    -  </generator>
    -</configuration>]]></xml><html>
    -
    -							<p>
    -								There are also lots of advanced configuration parameters, which will be treated in the <reference id="codegen-advanced" title="manual's section about advanced code generation features"/> Note, you can find the official XSD file for a formal specification at:<br/>
    -							    <a href="http://www.jooq.org/xsd/jooq-codegen-{codegen-xsd-version}.xsd" title="The jOOQ-codegen configuration XSD">http://www.jooq.org/xsd/jooq-codegen-{codegen-xsd-version}.xsd</a>
    -						    </p>
    -
    -							<h3>Run jOOQ code generation</h3>
    -							<p>
    -								Code generation works by calling this class with the above property file as argument.
    -							</p>
    -							
    -</html><config>org.jooq.util.GenerationTool /jooq-config.xml</config><html>
    -
    -							<p>
    -								Be sure that these elements are located on the classpath:
    -							</p>
    -							
    -							<ul>
    -								<li>The XML configuration file</li>
    -								<li>jooq-{jooq-version}.jar, jooq-meta-{jooq-version}.jar, jooq-codegen-{jooq-version}.jar</li>
    -								<li>The JDBC driver you configured</li>
    -							</ul>
    -
    -							<h3>A command-line example (For Windows, unix/linux/etc will be similar)</h3>
    -							<ul>
    -								<li>Put the property file, jooq*.jar and the JDBC driver into a directory, e.g. C:\temp\jooq</li>
    -							    <li>Go to C:\temp\jooq</li>
    -							    <li>Run java -cp jooq-{jooq-version}.jar;jooq-meta-{jooq-version}.jar;jooq-codegen-{jooq-version}.jar;[JDBC-driver].jar;. org.jooq.util.GenerationTool /[XML file] </li>
    -							</ul>
    -							<p>
    -								Note that the property file must be passed as a classpath resource
    -							</p>
    -
    -							<h3>Run code generation from Eclipse</h3>
    -							<p>
    -								Of course, you can also run code generation from your IDE. In Eclipse, set up a project like this. Note that:
    -							</p>
    -                            <ul>
    -                                <li>this example uses jOOQ's log4j support by adding log4j.xml and log4j.jar to the project classpath.</li>
    -                                <li>the actual jooq-{jooq-version}.jar, jooq-meta-{jooq-version}.jar, jooq-codegen-{jooq-version}.jar artefacts may contain version numbers in the file names.</li>
    -                            </ul>
    -                            
    -							<div class="screenshot">
    -							<img class="screenshot" src="&lt;?=$root?&gt;/img/eclipse-example-01.png" alt="Eclipse configuration"/>
    -							</div>
    -
    -							<p>
    -								Once the project is set up correctly with all required artefacts on the classpath, you can configure an Eclipse Run Configuration for org.jooq.util.GenerationTool.
    -							</p>
    -							<div class="screenshot">
    -							<img class="screenshot" src="&lt;?=$root?&gt;/img/eclipse-example-02.png" alt="Eclipse configuration"/>
    -							</div>
    -
    -							<p>
    -								With the XML file as an argument
    -							</p>
    -							<div class="screenshot">
    -							<img class="screenshot" src="&lt;?=$root?&gt;/img/eclipse-example-03.png" alt="Eclipse configuration"/>
    -							</div>
    -
    -							<p>
    -								And the classpath set up correctly
    -							</p>
    -							<div class="screenshot">
    -							<img class="screenshot" src="&lt;?=$root?&gt;/img/eclipse-example-04.png" alt="Eclipse configuration"/>
    -							</div>
    -
    -							<p>
    -								Finally, run the code generation and see your generated artefacts
    -							</p>
    -							<div class="screenshot">
    -							<img class="screenshot" src="&lt;?=$root?&gt;/img/eclipse-example-05.png" alt="Eclipse configuration"/>
    -							</div>
    -
    -							<h3>Run generation with ant</h3>
    -							<p>
    -								When running code generation with ant's &lt;java/&gt; task, you may have to set fork="true":
    -							</p>
    -
    -</html><xml><![CDATA[<!-- Run the code generation task -->
    -<target name="generate-test-classes">
    -  <java fork="true" classname="org.jooq.util.GenerationTool">
    -    [...]
    -  </java><html>
    -</target>
    -]]></xml><html>
    -
    -							<h3>Integrate generation with Maven</h3>
    -							<p>
    -								Using the official jOOQ-codegen-maven plugin, you can integrate source code generation in your Maven build process:
    -							</p>
    -
    -</html><xml><![CDATA[<plugin>
    -
    -  <!-- Specify the maven code generator plugin -->
    -  <groupId>org.jooq</groupId>
    -  <artifactId>jooq-codegen-maven</artifactId>
    -  <version>{jooq-version}</version>
    -
    -  <!-- The plugin should hook into the generate goal -->
    -  <executions>
    -    <execution>
    -      <goals>
    -        <goal>generate</goal>
    -      </goals>
    -    </execution>
    -  </executions>
    -
    -  <!-- Manage the plugin's dependency. In this example, we'll use a PostgreSQL database -->
    -  <dependencies>
    -    <dependency>
    -      <groupId>postgresql</groupId>
    -      <artifactId>postgresql</artifactId>
    -      <version>8.4-702.jdbc4</version>
    -    </dependency>
    -  </dependencies>
    -
    -  <!-- Specify the plugin configuration.
    -       The configuration format is the same as for the standalone code generator -->
    -  <configuration>
    -
    -    <!-- JDBC connection parameters -->
    -    <jdbc>
    -      <driver>org.postgresql.Driver</driver>
    -      <url>jdbc:postgresql:postgres</url>
    -      <user>postgres</user>
    -      <password>test</password>
    -    </jdbc>
    -
    -    <!-- Generator parameters -->
    -    <generator>
    -      <name>org.jooq.util.DefaultGenerator</name>
    -      <database>
    -        <name>org.jooq.util.postgres.PostgresDatabase</name>
    -        <includes>.*</includes>
    -        <excludes></excludes>
    -        <inputSchema>public</inputSchema>
    -      </database>
    -      <target>
    -        <packageName>org.jooq.util.maven.example</packageName>
    -        <directory>target/generated-sources/jooq</directory>
    -      </target>
    -    </generator>
    -  </configuration>
    -</plugin>
    -]]></xml><html>
    -
    -							<p>
    -								See the full example of a pom.xml including the jOOQ-codegen artefact here:<br/>
    -								<a href="https://github.com/jOOQ/jOOQ/blob/master/jOOQ-codegen-maven-example/pom.xml"
    -								  title="jOOQ-codegen-maven example pom.xml file">https://github.com/jOOQ/jOOQ/blob/master/jOOQ-codegen-maven-example/pom.xml</a>
    -							  </p>
    -
    -							<h3>Use jOOQ generated classes in your application</h3>
    -							<p>
    -								Be sure, both jooq-{jooq-version}.jar and your generated package (see configuration) are located on your classpath. Once this is done, you can execute SQL statements with your generated classes.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-advanced">
    -						<title>Advanced generator configuration</title>
    -						<content><html>
    -							<p>
    -								In the <reference id="codegen-configuration" title="previous section"/> we have seen how jOOQ's source code generator is configured and run within a few steps. In this chapter we'll cover some advanced settings
    -							</p>
    -
    -</html><xml><![CDATA[<!-- These properties can be added directly to the generator element: -->
    -<generator>
    -  <!-- The default code generator. You can override this one, to generate your own code style
    -       Defaults to org.jooq.util.DefaultGenerator -->
    -  <name>org.jooq.util.DefaultGenerator</name>
    -
    -  <!-- The naming strategy used for class and field names.
    -       You may override this with your custom naming strategy. Some examples follow
    -       Defaults to org.jooq.util.DefaultGeneratorStrategy -->
    -  <strategy>
    -    <name>org.jooq.util.DefaultGeneratorStrategy</name>
    -  </strategy>
    -</generator>]]></xml><html>
    -
    -							<p>
    -								The following example shows how you can override the DefaultGeneratorStrategy to render table and column names the way they are defined in the database, rather than switching them to camel case:
    -							</p>
    -
    -</html><java><![CDATA[/**
    - * It is recommended that you extend the DefaultGeneratorStrategy. Most of the
    - * GeneratorStrategy API is already declared final. You only need to override any
    - * of the following methods, for whatever generation behaviour you'd like to achieve
    - *
    - * Beware that most methods also receive a "Mode" object, to tell you whether a
    - * TableDefinition is being rendered as a Table, Record, POJO, etc. Depending on
    - * that information, you can add a suffix only for TableRecords, not for Tables
    - */
    -public class AsInDatabaseStrategy extends DefaultGeneratorStrategy {
    -
    -    /**
    -     * Override this to specifiy what identifiers in Java should look like.
    -     * This will just take the identifier as defined in the database.
    -     */
    -    @Override
    -    public String getJavaIdentifier(Definition definition) {
    -        return definition.getOutputName();
    -    }
    -
    -    /**
    -     * Override these to specify what a setter in Java should look like. Setters
    -     * are used in TableRecords, UDTRecords, and POJOs. This example will name
    -     * setters "set[NAME_IN_DATABASE]"
    -     */
    -    @Override
    -    public String getJavaSetterName(Definition definition, Mode mode) {
    -        return "set" + definition.getOutputName();
    -    }
    -
    -    /**
    -     * Just like setters...
    -     */
    -    @Override
    -    public String getJavaGetterName(Definition definition, Mode mode) {
    -        return "get" + definition.getOutputName();
    -    }
    -
    -    /**
    -     * Override this method to define what a Java method generated from a database
    -     * Definition should look like. This is used mostly for convenience methods
    -     * when calling stored procedures and functions. This example shows how to
    -     * set a prefix to a CamelCase version of your procedure
    -     */
    -    @Override
    -    public String getJavaMethodName(Definition definition, Mode mode) {
    -        return "call" + org.jooq.tools.StringUtils.toCamelCase(definition.getOutputName());
    -    }
    -
    -    /**
    -     * Override this method to define how your Java classes and Java files should
    -     * be named. This example applies no custom setting and uses CamelCase versions
    -     * instead
    -     */
    -    @Override
    -    public String getJavaClassName(Definition definition, Mode mode) {
    -        return super.getJavaClassName(definition, mode);
    -    }
    -
    -    /**
    -     * Override this method to re-define the package names of your generated
    -     * artefacts.
    -     */
    -    @Override
    -    public String getJavaPackageName(Definition definition, Mode mode) {
    -        return super.getJavaPackageName(definition, mode);
    -    }
    -
    -    /**
    -     * Override this method to define how Java members should be named. This is
    -     * used for POJOs and method arguments
    -     */
    -    @Override
    -    public String getJavaMemberName(Definition definition, Mode mode) {
    -        return definition.getOutputName();
    -    }
    -
    -    /**
    -     * Override this method to define the base class for those artefacts that
    -     * allow for custom base classes
    -     */
    -    @Override
    -    public String getJavaClassExtends(Definition definition, Mode mode) {
    -        return Object.class.getName();
    -    }
    -
    -    /**
    -     * Override this method to define the interfaces to be implemented by those
    -     * artefacts that allow for custom interface implementation
    -     */
    -    @Override
    -    public List<String> getJavaClassImplements(Definition definition, Mode mode) {
    -        return Arrays.asList(Serializable.class.getName(), Cloneable.class.getName());
    -    }
    -
    -    /**
    -     * Override this method to define the suffix to apply to routines when
    -     * they are overloaded.
    -     *
    -     * Use this to resolve compile-time conflicts in generated source code, in
    -     * case you make heavy use of procedure overloading
    -     */
    -    @Override
    -    public String getOverloadSuffix(Definition definition, Mode mode, String overloadIndex) {
    -        return "_OverloadIndex_" + overloadIndex;
    -    }
    -}]]></java><html>
    -
    -                            <p>
    -                                More examples can be found here:
    -                            </p>
    -                            <ul>
    -                                <li><a href="https://github.com/jOOQ/jOOQ/blob/master/jOOQ-codegen/src/main/java/org/jooq/util/example/JPrefixGeneratorStrategy.java">org.jooq.util.example.JPrefixGeneratorStrategy</a></li>
    -                                <li><a href="https://github.com/jOOQ/jOOQ/blob/master/jOOQ-codegen/src/main/java/org/jooq/util/example/JVMArgsGeneratorStrategy.java">org.jooq.util.example.JVMArgsGeneratorStrategy</a></li>
    -                            </ul>
    -
    -                            <h3>jooq-meta configuration</h3>
    -							<p>
    -								Within the &lt;generator/&gt; element, there are other configuration elements:
    -							</p>
    -
    -</html><xml><![CDATA[<!-- These properties can be added to the database element: -->
    -<database>
    -
    -  <!-- All table and view columns that are used as "version" fields for
    -       optimistic locking (A Java regular expression. Use the pipe to separate several expressions).
    -       See UpdatableRecord.store() and UpdatableRecord.delete() for details -->
    -  <recordVersionFields>REC_VERSION</recordVersionFields/>
    -
    -  <!-- All table and view columns that are used as "timestamp" fields for
    -       optimistic locking (A Java regular expression. Use the pipe to separate several expressions).
    -       See UpdatableRecord.store() and UpdatableRecord.delete() for details -->
    -  <recordTimestampFields>REC_TIMESTAMP</recordTimestampFields/>
    -      
    -  <!-- Generate java.sql.Timestamp fields for DATE columns. This is
    -       particularly useful for Oracle databases.
    -       Defaults to false -->
    -  <dateAsTimestamp>false</dateAsTimestamp>
    -
    -  <!-- Generate jOOU data types for your unsigned data types, which are
    -       not natively supported in Java.
    -       Defaults to true -->
    -  <unsignedTypes>true</unsignedTypes>
    -
    -  <!-- The schema that is used in generated source code. This will be the
    -       production schema. Use this to override your local development
    -       schema name for source code generation. If not specified, this
    -       will be the same as the input-schema. -->
    -  <outputSchema>[your database schema / owner / name]</outputSchema>
    -
    -  <!-- A configuration element to configure several input and/or output
    -       schemata for jooq-meta, in case you're using jooq-meta in a multi-
    -       schema environment.
    -       This cannot be combined with the above inputSchema / outputSchema -->
    -  <schemata>
    -    <schema>
    -      <inputSchema>...</inputSchema>
    -      <outputSchema>...</outputSchema>
    -    </schema>
    -    [ <schema>...</schema> ... ]
    -  </schemata>
    -
    -  <!-- A configuration element to configure custom data types -->
    -  <customTypes>...</customTypes>
    -
    -  <!-- A configuration element to configure type overrides for generated
    -       artefacts (e.g. in combination with customTypes) -->
    -  <forcedTypes>...</forcedTypes>
    -</database>]]></xml><html>
    -
    -							<p>
    -								Check out the some of the manual's "advanced" sections to find out more about the advanced configuration parameters.
    -							</p>
    -							<ul>
    -								<li><reference id="schema-mapping" title="Schema mapping"/></li>
    -								<li><reference id="custom-data-types" title="Custom types"/></li>
    -							</ul>
    -
    -							<h3>jooq-codegen configuration</h3>
    -                            <p>
    -                            	Also, you can add some optional advanced configuration parameters for the generator:
    -                           	</p>
    -
    -</html><xml><![CDATA[<!-- These properties can be added to the generate element: -->
    -<generate>
    -  <!-- Primary key / foreign key relations should be generated and used.
    -       This is a prerequisite for various advanced features.
    -       Defaults to true -->
    -  <relations>true</relations>
    -
    -  <!-- Generate deprecated code for backwards compatibility
    -       Defaults to true -->
    -  <deprecated>true</deprecated>
    -
    -  <!-- Generate instance fields in your tables, as opposed to static
    -       fields. This simplifies aliasing.
    -       Defaults to true -->
    -  <instanceFields>true</instanceFields>
    -
    -  <!-- Generate the javax.annotation.Generated annotation to indicate
    -       jOOQ version used for source code.
    -       Defaults to true -->
    -  <generatedAnnotation>true</generatedAnnotation>
    -
    -  <!-- Generate jOOQ Record classes for type-safe querying. You can
    -       turn this off, if you don't need "active records" for CRUD
    -       Defaults to true -->
    -  <records>true</records>
    -
    -  <!-- Generate POJOs in addition to Record classes for usage of the
    -       ResultQuery.fetchInto(Class) API
    -       Defaults to false -->
    -  <pojos>false</pojos>
    -
    -  <!-- Generate immutable POJOs for usage of the ResultQuery.fetchInto(Class) API
    -       This overrides any value set in <pojos/>
    -       Defaults to false -->
    -  <immutablePojos>false</immutablePojos>
    -
    -  <!-- Generate interfaces that will be implemented by records and/or pojos.
    -       You can also use these interfaces in Record.into(Class<?>) and similar
    -       methods, to let jOOQ return proxy objects for them.
    -       Defaults to false -->
    -  <interfaces>false</interfaces>
    -
    -  <!-- Generate DAOs in addition to POJO classes
    -       Defaults to false -->
    -  <daos>false</daos>
    -
    -  <!-- Annotate POJOs and Records with JPA annotations for increased
    -       compatibility and better integration with JPA/Hibernate, etc
    -       Defaults to false -->
    -  <jpaAnnotations>false</jpaAnnotations>
    -
    -  <!-- Annotate POJOs and Records with JSR-303 validation annotations
    -       Defaults to false -->
    -  <validationAnnotations>false</validationAnnotations>
    -  
    -  <!-- Allow to turn off the generation of global object references, which include
    -  
    -       - Tables.java
    -       - Sequences.java
    -       - UDTs.java
    -  
    -       Turning off the generation of the above files may be necessary for very
    -       large schemas, which exceed the amount of allowed constants in a class's
    -       constant pool (64k) or, whose static initialiser would exceed 64k of
    -       byte code
    -       
    -       Defaults to true -->
    -  <globalObjectReferences>true</globalObjectReferences>
    -</generate>]]></xml><html>
    -
    -							<h3>Property interdependencies</h3>
    -							<p>
    -								Some of the above properties depend on other properties to work correctly. For instance, when generating immutable pojos, pojos must be generated. jOOQ will enforce such properties even if you tell it otherwise. Here is a list of property interdependencies:
    -							</p>
    -							
    -							<ul>
    -								<li>When <code>daos = true</code>, then jOOQ will set <code>relations = true</code></li>
    -								<li>When <code>daos = true</code>, then jOOQ will set <code>records = true</code></li>
    -								<li>When <code>daos = true</code>, then jOOQ will set <code>pojos = true</code></li>
    -								<li>When <code>immutablePojos = true</code>, then jOOQ will set <code>pojos = true</code></li>
    -							</ul>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-globals">
    -						<title>Generated global artefacts</title>
    -						<content><html>
    -							<p>
    -								For increased convenience at the use-site, jOOQ generates "global" artefacts at the code generation root location, referencing tables, routines, sequences, etc. In detail, these global artefacts include the following:
    -							</p>
    -							<ul>
    -								<li><strong>Keys.java</strong>: This file contains all of the required primary key, unique key, foreign key and identity references in the form of static members of type <reference class="org.jooq.Key"/>.</li>
    -								<li><strong>Routines.java</strong>: This file contains all standalone routines (not in packages) in the form of static factory methods for <reference class="org.jooq.Routine"/> types.</li>
    -								<li><strong>Sequences.java</strong>: This file contains all sequence objects in the form of static members of type <reference class="org.jooq.Sequence"/>.</li>
    -								<li><strong>Tables.java</strong>: This file contains all table objects in the form of static member references to the actual singleton <reference class="org.jooq.Table"/> object</li>
    -								<li><strong>UDTs.java</strong>: This file contains all UDT objects in the form of static member references to the actual singleton <reference class="org.jooq.UDT"/> object</li>
    -							</ul>
    -							
    -							<h3>Referencing global artefacts</h3>
    -							<p>
    -								When referencing global artefacts from your client application, you would typically static import them as such:
    -							</p>
    -							
    -</html><java><![CDATA[// Static imports for all global artefacts
    -import static com.example.generated.Routines.*;
    -import static com.example.generated.Sequences.*;
    -import static com.example.generated.Tables.*;
    -
    -// You could then reference your artefacts as follows:
    -create.insertInto(MY_TABLE)
    -      .values(MY_SEQUENCE.nextval(), myFunction())
    -      
    -// as a more concise form of this:
    -create.insertInto(com.example.generated.Tables.MY_TABLE)
    -      .values(com.example.generated.Sequences.MY_SEQUENCE.nextval(), com.example.generated.Routines.myFunction())]]></java>
    -						</content>
    -					</section>
    -
    -				    <section id="codegen-tables">
    -						<title>Generated tables</title>
    -						<content><html>
    -							<p>
    -								Every table in your database will generate a <reference class="org.jooq.Table"/> implementation that looks like this:
    -							</p>
    -							
    -</html><java><![CDATA[public class Book extends TableImpl<BookRecord> {
    -
    -    // The singleton instance
    -    public static final Book BOOK = new Book();
    -
    -    // Generated columns
    -    public final TableField<BookRecord, Integer> ID        = createField("ID",        SQLDataType.INTEGER, this);
    -    public final TableField<BookRecord, Integer> AUTHOR_ID = createField("AUTHOR_ID", SQLDataType.INTEGER, this);
    -    public final TableField<BookRecord, String>  ITLE      = createField("TITLE",     SQLDataType.VARCHAR, this);
    -
    -    // Covariant aliasing method, returning a table of the same type as BOOK
    -    @Override
    -    public Book as(java.lang.String alias) {
    -        return new Book(alias);
    -    }
    -    
    -    // [...]
    -}]]></java><html>
    -
    -							<h3>Flags influencing generated tables</h3>
    -							<p>
    -								These flags from the <reference id="codegen-advanced" title="code generation configuration"/> influence generated tables:
    -							</p>
    -							<ul>
    -								<li><strong>recordVersionFields</strong>: Relevant methods from super classes are overridden to return the VERSION field</li>
    -								<li><strong>recordTimestampFields</strong>: Relevant methods from super classes are overridden to return the TIMESTAMP field</li>
    -								<li><strong>dateAsTimestamp</strong>: This influences all relevant columns</li>
    -								<li><strong>unsignedTypes</strong>: This influences all relevant columns</li>
    -								<li><strong>relations</strong>: Relevant methods from super classes are overridden to provide primary key, unique key, foreign key and identity information</li>
    -								<li><strong>instanceFields</strong>: This flag controls the "static" keyword on table columns, as well as aliasing convenience</li>
    -								<li><strong>records</strong>: The generated record type is referenced from tables allowing for type-safe single-table record fetching</li>
    -							</ul>
    -							
    -							<h3>Flags controlling table generation</h3>
    -							<p>
    -								Table generation cannot be deactivated
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-records">
    -						<title>Generated records</title>
    -						<content><html>
    -							<p>
    -								Every table in your database will generate a <reference class="org.jooq.Table"/> implementation that looks like this:
    -							</p>
    -							
    -</html><java><![CDATA[// JPA annotations can be generated, optionally
    -@Entity
    -@Table(name = "BOOK", schema = "TEST")
    -public class BookRecord extends UpdatableRecordImpl<BookRecord> 
    -
    -// An interface common to records and pojos can be generated, optionally
    -implements IBook {
    -
    -    // Every column generates a setter and a getter
    -    @Override
    -    public void setId(Integer value) {
    -        setValue(BOOK.ID, value);
    -    }
    -    
    -    @Id
    -    @Column(name = "ID", unique = true, nullable = false, precision = 7)
    -    @Override
    -    public Integer getId() {
    -        return getValue(BOOK.ID);
    -    }
    -    
    -    // More setters and getters
    -    public void setAuthorId(Integer value) {...}
    -    public Integer getAuthorId() {...}
    -    
    -    // Convenience methods for foreign key methods
    -    public void setAuthorId(AuthorRecord value) {
    -        if (value == null) {
    -            setValue(BOOK.AUTHOR_ID, null);
    -        }
    -        else {
    -            setValue(BOOK.AUTHOR_ID, value.getValue(AUTHOR.ID));
    -        }
    -    }
    -    
    -    // Navigation methods
    -    public AuthorRecord fetchAuthor() {
    -        return create().selectFrom(AUTHOR).where(AUTHOR.ID.equal(getValue(BOOK.AUTHOR_ID))).fetchOne();
    -    }
    -    
    -    // [...]
    -}]]></java><html>							
    -							
    -							<h3>Flags influencing generated records</h3>
    -							<p>
    -								These flags from the <reference id="codegen-advanced" title="code generation configuration"/> influence generated records:
    -							</p>
    -							<ul>
    -								<li><strong>dateAsTimestamp</strong>: This influences all relevant getters and setters</li>
    -								<li><strong>unsignedTypes</strong>: This influences all relevant getters and setters</li>
    -								<li><strong>relations</strong>: This is needed as a prerequisite for navigation methods</li>
    -								<li><strong>navigationMethods</strong>: This controls whether navigation methods will be generated or not</li>
    -								<li><strong>daos</strong>: Records are a pre-requisite for DAOs. If DAOs are generated, records are generated as well</li>
    -								<li><strong>interfaces</strong>: If interfaces are generated, records will implement them</li>
    -								<li><strong>jpaAnnotations</strong>: JPA annotations are used on generated records</li>
    -							</ul>
    -														
    -							<h3>Flags controlling record generation</h3>
    -							<p>
    -								Record generation can be deactivated using the <strong>records</strong> flag
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-pojos">
    -						<title>Generated POJOs</title>
    -						<content><html>
    -							<p>
    -								Every table in your database will generate a POJO implementation that looks like this:
    -							</p>
    -							
    -</html><java><![CDATA[// JPA annotations can be generated, optionally
    -@javax.persistence.Entity
    -@javax.persistence.Table(name = "BOOK", schema = "TEST")
    -public class Book implements java.io.Serializable
    -
    -// An interface common to records and pojos can be generated, optionally
    -, IBook {
    -
    -    // JSR-303 annotations can be generated, optionally
    -    @NotNull
    -    private Integer id;
    -
    -    @NotNull
    -    private Integer authorId;
    -
    -    @NotNull
    -    @Size(max = 400)
    -    private String title;
    -
    -    // Every column generates a getter and a setter
    -    @Id
    -    @Column(name = "ID", unique = true, nullable = false, precision = 7)
    -    @Override
    -    public Integer getId() {
    -        return this.id;
    -    }
    -
    -    @Override
    -    public void setId(Integer id) {
    -        this.id = id;
    -    }
    -    
    -    // [...]
    -}]]></java><html>							
    -							
    -							<h3>Flags influencing generated POJOs</h3>
    -							<p>
    -								These flags from the <reference id="codegen-advanced" title="code generation configuration"/> influence generated POJOs:
    -							</p>
    -							<ul>
    -								<li><strong>dateAsTimestamp</strong>: This influences all relevant getters and setters</li>
    -								<li><strong>unsignedTypes</strong>: This influences all relevant getters and setters</li>
    -								<li><strong>interfaces</strong>: If interfaces are generated, POJOs will implement them</li>
    -								<li><strong>immutablePojos</strong>: Immutable POJOs have final members and no setters. All members must be passed to the constructor</li>
    -								<li><strong>daos</strong>: POJOs are a pre-requisite for DAOs. If DAOs are generated, POJOs are generated as well</li>
    -								<li><strong>jpaAnnotations</strong>: JPA annotations are used on generated records</li>
    -								<li><strong>validationAnnotations</strong>: JSR-303 validation annotations are used on generated records</li>
    -							</ul>
    -														
    -							<h3>Flags controlling POJO generation</h3>
    -							<p>
    -								POJO generation can be activated using the <strong>pojos</strong> flag
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-interfaces">
    -						<title>Generated Interfaces</title>
    -						<content><html>
    -							<p>
    -								Every table in your database will generate an interface that looks like this:
    -							</p>
    -							
    -</html><java><![CDATA[public interface IBook extends java.io.Serializable {
    -
    -    // Every column generates a getter and a setter
    -    public void setId(Integer value);
    -    public Integer getId();
    -    
    -    // [...]
    -}]]></java><html>    						
    -							
    -							<h3>Flags influencing generated interfaces</h3>
    -							<p>
    -								These flags from the <reference id="codegen-advanced" title="code generation configuration"/> influence generated interfaces:
    -							</p>
    -							<ul>
    -								<li><strong>dateAsTimestamp</strong>: This influences all relevant getters and setters</li>
    -								<li><strong>unsignedTypes</strong>: This influences all relevant getters and setters</li>
    -							</ul>
    -														
    -							<h3>Flags controlling POJO generation</h3>
    -							<p>
    -								POJO generation can be activated using the <strong>interfaces</strong> flag
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-daos">
    -						<title>Generated DAOs</title>
    -						<content><html>
    -							<h3>Generated DAOs</h3>
    -							<p>
    -								Every table in your database will generate a <reference class="org.jooq.DAO"/> implementation that looks like this:
    -							</p>
    -							
    -</html><java><![CDATA[public class BookDao extends DAOImpl<BookRecord, Book, Integer> {
    -
    -    // Generated constructors
    -    public BookDao() {
    -        super(BOOK, Book.class);
    -    }
    -
    -    public BookDao(Configuration configuration) {
    -        super(BOOK, Book.class, configuration);
    -    }
    -
    -    // Every column generates at least one fetch method
    -    public List<Book> fetchById(Integer... values) {
    -        return fetch(BOOK.ID, values);
    -    }
    -
    -    public Book fetchOneById(Integer value) {
    -        return fetchOne(BOOK.ID, value);
    -    }
    -
    -    public List<Book> fetchByAuthorId(Integer... values) {
    -        return fetch(BOOK.AUTHOR_ID, values);
    -    }
    -    
    -    // [...]
    -}]]></java><html>							
    -							
    -							<h3>Flags controlling DAO generation</h3>
    -							<p>
    -								DAO generation can be activated using the <strong>daos</strong> flag
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-sequences">
    -						<title>Generated sequences</title>
    -						<content><html>
    -							<p>
    -								Every sequence in your database will generate a <reference class="org.jooq.Sequence"/> implementation that looks like this:
    -							</p>
    -							
    -</html><java><![CDATA[public final class Sequences {
    -
    -    // Every sequence generates a member
    -    public static final Sequence<Integer> S_AUTHOR_ID = new SequenceImpl<Integer>("S_AUTHOR_ID", TEST, SQLDataType.INTEGER);
    -}]]></java><html>		
    -							
    -							<h3>Flags controlling sequence generation</h3>
    -							<p>
    -								Sequence generation cannot be deactivated
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-procedures">
    -						<title>Generated procedures</title>
    -						<content><html>
    -							<p>
    -								Every procedure or function (routine) in your database will generate a <reference class="org.jooq.Routine"/> implementation that looks like this:
    -							</p>
    -
    -</html><java><![CDATA[public class AuthorExists extends AbstractRoutine<java.lang.Void> {
    -
    -    // All IN, IN OUT, OUT parameters and function return values generate a static member
    -    public static final Parameter<String>     AUTHOR_NAME = createParameter("AUTHOR_NAME", SQLDataType.VARCHAR);
    -    public static final Parameter<BigDecimal> RESULT      = createParameter("RESULT",      SQLDataType.NUMERIC);
    -
    -    // A constructor for a new "empty" procedure call
    -    public AuthorExists() {
    -        super("AUTHOR_EXISTS", TEST);
    -
    -        addInParameter(AUTHOR_NAME);
    -        addOutParameter(RESULT);
    -    }
    -
    -    // Every IN and IN OUT parameter generates a setter
    -    public void setAuthorName(String value) {
    -        setValue(AUTHOR_NAME, value);
    -    }
    -
    -    // Every IN OUT, OUT and RETURN_VALUE generates a getter
    -    public BigDecimal getResult() {
    -        return getValue(RESULT);
    -    }
    -    
    -    // [...]
    -}]]></java><html>
    -
    -							<h3>Package and member procedures or functions</h3>
    -							<p>
    -								Procedures or functions contained in packages or UDTs are generated in a sub-package that corresponds to the package or UDT name.
    -							</p>
    -
    -							<h3>Flags controlling routine generation</h3>
    -							<p>
    -								Routine generation cannot be deactivated
    -							</p>
    -						</html></content>
    -					</section>
    -
    -				    <section id="codegen-udts">
    -						<title>Generated UDTs</title>
    -						<content><html>
    -							<p>
    -								Every UDT in your database will generate a <reference class="org.jooq.UDT"/> implementation that looks like this:
    -							</p>
    -						
    -</html><java><![CDATA[public class AddressType extends UDTImpl<AddressTypeRecord> {
    -
    -    // The singleton UDT instance
    -    public static final UAddressType U_ADDRESS_TYPE = new UAddressType();
    -
    -    // Every UDT attribute generates a static member
    -    public static final UDTField<AddressTypeRecord, String> ZIP     = 
    -      createField("ZIP",     SQLDataType.VARCHAR, U_ADDRESS_TYPE);
    -    public static final UDTField<AddressTypeRecord, String> CITY    = 
    -      createField("CITY",    SQLDataType.VARCHAR, U_ADDRESS_TYPE);
    -    public static final UDTField<AddressTypeRecord, String> COUNTRY = 
    -      createField("COUNTRY", SQLDataType.VARCHAR, U_ADDRESS_TYPE);
    -    
    -    // [...]
    -}]]></java><html>						
    -										
    -							<p>
    -								Besides the <reference class="org.jooq.UDT"/> implementation, a <reference class="org.jooq.UDTRecord"/> implementation is also generated
    -							</p>		
    -
    -</html><java><![CDATA[public class AddressTypeRecord extends UDTRecordImpl<AddressTypeRecord> {
    -
    -    // Every attribute generates a getter and a setter
    -
    -    public void setZip(String value) {...}
    -    public String getZip() {...}
    -    public void setCity(String value) {...}
    -    public String getCity() {...}
    -    public void setCountry(String value) {...}
    -    public String getCountry() {...}
    -    
    -    // [...]
    -}]]></java><html>						
    -
    -							<h3>Flags controlling UDT generation</h3>
    -							<p>
    -								UDT generation cannot be deactivated
    -							</p>
    -						</html></content>
    -					</section>
    -
    -
    -                    <section id="data-type-rewrites">
    -                        <title>Data type rewrites</title>
    -                        <content><html>
    -                            <p>
    -                                Sometimes, the actual database data type does not match the SQL data type that you would like to use in Java. This is often the case for ill-supported SQL data types, such as <code>BOOLEAN</code> or <code>UUID</code>. jOOQ's code generator allows you to apply simple data type rewriting. The following configuration will rewrite <code>IS_VALID</code> columns in all tables to be of type <code>BOOLEAN</code>.
    -                            </p>
    -
    -
    -</html><xml><![CDATA[<database>
    -
    -  <!-- Associate data type rewrites with database columns -->
    -  <forcedTypes>
    -    <forcedType>
    -      <!-- Specify any data type from org.jooq.impl.SQLDataType -->
    -      <name>BOOLEAN</name>
    -
    -      <!-- Add a Java regular expression matching fully-qualified columns. 
    -           Use the pipe to separate several expressions -->
    -      <expressions>.*\.IS_VALID</expressions>
    -    </forcedType>
    -  </forcedTypes>
    -</database>]]></xml><html>
    -
    -                            <p>
    -                                See the section about <reference id="custom-data-types" title="Custom data types"/> for rewriting columns to your own custom data types.
    -                            </p>
    -                        </html></content>
    -                    </section>
    -
    -
    -				    <section id="custom-data-types">
    -						<title>Custom data types and type conversion</title>
    -						<content><html>
    -							<p>
    -								When using a custom type in jOOQ, you need to let jOOQ know about its associated <reference class="org.jooq.Converter"/>. Ad-hoc usages of such converters has been discussed in the chapter about <reference id="data-type-conversion" title="data type conversion"/>. A more common use-case, however, is to let jOOQ know about custom types at code generation time. Use the following configuration elements to specify, that you'd like to use GregorianCalendar for all database fields that start with DATE_OF_
    -      						</p>
    -
    -</html><xml><![CDATA[<database>
    -  <!-- First, register your custom types here -->
    -  <customTypes>
    -    <customType>
    -      <!-- Specify the fully-qualified class name of your custom type -->
    -      <name>java.util.GregorianCalendar</name>
    -
    -      <!-- Associate that custom type with your converter. Note, a
    -           custom type can only have one converter in jOOQ -->
    -      <converter>com.example.CalendarConverter</converter>
    -    </customType>
    -  </customTypes>
    -
    -  <!-- Then, associate custom types with database columns -->
    -  <forcedTypes>
    -    <forcedType>
    -      <!-- Specify again he fully-qualified class name of your custom type -->
    -      <name>java.util.GregorianCalendar</name>
    -
    -      <!-- Add a Java regular expression matching fully-columns. 
    -           Use the pipe to separate several expressions -->
    -      <expressions>.*\.DATE_OF_.*</expressions>
    -    </forcedType>
    -  </forcedTypes>
    -</database>]]></xml><html>
    -
    -                            <p>
    -                            	The above configuration will lead to AUTHOR.DATE_OF_BIRTH being generated like this:
    -                            </p>
    -
    -</html><java><![CDATA[public class TAuthor extends TableImpl<TAuthorRecord> {
    -
    -    // [...]
    -    public final TableField<TAuthorRecord, GregorianCalendar> DATE_OF_BIRTH =    // [...]
    -    // [...]
    -
    -}]]></java><html>
    -
    -                            <p>
    -                            	This means that the bound type of &lt;T&gt; will be GregorianCalendar, wherever you reference DATE_OF_BIRTH. jOOQ will use your custom converter when binding variables and when fetching data from <reference class="java.util.ResultSet"/>:
    -                            </p>
    -
    -</html><java><![CDATA[// Get all date of births of authors born after 1980
    -List<GregorianCalendar> result =
    -create.selectFrom(AUTHOR)
    -      .where(AUTHOR.DATE_OF_BIRTH.greaterThan(new GregorianCalendar(1980, 0, 1)))
    -      .fetch(AUTHOR.DATE_OF_BIRTH);]]></java>
    -
    -						</content>
    -					</section>
    -
    -				    <section id="schema-mapping">
    -						<title>Mapping generated schemata and tables</title>
    -						<content><html>
    -							<p>
    -								We've seen previously in the chapter about <reference id="runtime-schema-mapping" title="runtime schema mapping"/>, that schemata and tables can be mapped at runtime to other names. But you can also hard-wire schema mapping in generated artefacts at code generation time, e.g. when you have 5 developers with their own dedicated developer databases, and a common integration database. In the code generation configuration, you would then write.
    -							</p>
    -
    -</html><xml><![CDATA[<schemata>
    -  <schema>
    -    <!-- Use this as the developer's schema: -->
    -    <inputSchema>LUKAS_DEV_SCHEMA</inputSchema>
    -
    -    <!-- Use this as the integration / production database: -->
    -    <outputSchema>PROD</outputSchema>
    -  </schema>
    -</schemata>]]></xml>
    -
    -						</content>
    -					</section>
    -					
    -					<section id="codegen-large-schemas">
    -						<title>Code generation for large schemas</title>
    -						<content><html>
    -							<p>
    -								Databases can become very large in real-world applications. This is not a problem for jOOQ's code generator, but it can be for the Java compiler. jOOQ generates some classes for <reference id="codegen-globals" title="global access"/>. These classes can hit two sorts of limits of the compiler / JVM:
    -							</p>
    -							
    -							<ul>
    -								<li>Methods (including static / instance initialisers) are allowed to contain only 64kb of bytecode.</li>
    -								<li>Classes are allowed to contain at most 64k of constant literals</li>
    -							</ul>
    -							
    -							<p>
    -								While there exist workarounds for the above two limitations (delegating initialisations to nested classes, inheriting constant literals from implemented interfaces), the preferred approach is either one of these:
    -							</p>
    -							
    -							<ul>
    -								<li>Distribute your database objects in several schemas. That is probably a good idea anyway for such large databases</li>
    -								<li><reference id="codegen-configuration" title="Configure jOOQ's code generator"/> to exclude excess database objects</li>
    -								<li><reference id="codegen-configuration" title="Configure jOOQ's code generator"/> to avoid generating <reference id="codegen-globals" title="global objects"/> using <code>&lt;globalObjectReferences/&gt;</code></li>
    -								<li>Remove uncompilable classes after code generation</li>
    -							</ul>
    -						</html></content>
    -					</section>
    -				</sections>
    -			</section>
    -
    -			<section id="tools">
    -				<title>Tools</title>
    -				<content><html>
    -					<p>
    -						These chapters hold some information about tools to be used with jOOQ
    -					</p>
    -				</html></content>
    -
    -				<sections>
    -					<section id="jdbc-mocking">
    -						<title>JDBC mocking for unit testing</title>
    -						<content><html>
    -							<p>
    -								When writing unit tests for your data access layer, you have probably used some generic mocking tool offered by popular providers like <a href="http://code.google.com/p/mockito/">Mockito</a>, <a href="http://jmock.org/">jmock</a>, <a href="http://mockrunner.sourceforge.net/">mockrunner</a>, or even <a href="http://www.dbunit.org/">DBUnit</a>. With jOOQ, you can take advantage of the built-in JDBC mock API that allows you to simulate a database on the JDBC level for precisely those SQL/JDBC use cases supported by jOOQ.
    -							</p>
    -							
    -							<h3>Mocking the JDBC API</h3>
    -							<p>
    -								JDBC is a very complex API. It takes a lot of time to write a useful and correct mock implementation, implementing at least these interfaces:
    -							</p>
    -							<ul>
    -								<li><reference class="java.sql.Connection"/></li>
    -								<li><reference class="java.sql.Statement"/></li>
    -								<li><reference class="java.sql.PreparedStatement"/></li>
    -								<li><reference class="java.sql.CallableStatement"/></li>
    -								<li><reference class="java.sql.ResultSet"/></li>
    -								<li><reference class="java.sql.ResultSetMetaData"/></li>
    -							</ul>
    -							
    -							<p>
    -								Optionally, you may even want to implement interfaces, such as <reference class="java.sql.Array"/>, <reference class="java.sql.Blob"/>, <reference class="java.sql.Clob"/>, and many others. In addition to the above, you might need to find a way to simultaneously support incompatible JDBC minor versions, such as 4.0, 4.1
    -							</p>
    -							
    -							<h3>Using jOOQ's own mock API</h3>
    -							<p>
    -								This work is greatly simplified, when using jOOQ's own mock API. The <code>org.jooq.tools.jdbc</code> package contains all the essential implementations for both JDBC 4.0 and 4.1, which are needed to mock JDBC for jOOQ. In order to write mock tests, provide the jOOQ <reference id="dsl-context" title="Configuration"/> with a <reference class="org.jooq.tools.jdbc.MockConnection" title="MockConnection"/>, and implement the <reference class="org.jooq.tools.jdbc.MockDataProvider" title="MockDataProvider"/>:
    -							</p>
    -							
    -</html><java><![CDATA[// Initialise your data provider (implementation further down):
    -MockDataProvider provider = new MyProvider();
    -MockConnection connection = new MockConnection(provider);
    -
    -// Pass the mock connection to a jOOQ DSLContext:
    -DSLContext create = DSL.using(connection, SQLDialect.ORACLE);
    -
    -// Execute queries transparently, with the above DSLContext:
    -Result<BookRecord> result = create.selectFrom(BOOK).where(BOOK.ID.equal(5)).fetch();]]></java><html>
    -
    -                            <p>
    -                                As you can see, the configuration setup is simple. Now, the <code>MockDataProvider</code> acts as your single point of contact with JDBC / jOOQ. It unifies any of these execution modes, transparently:
    -                            </p>
    -                            
    -                            <ul>
    -                                <li>Statements without results</li>
    -                                <li>Statements without results but with generated keys</li>
    -                                <li>Statements with results</li>
    -                                <li>Statements with several results</li>
    -                                <li>Batch statements with single queries and multiple bind value sets</li>
    -                                <li>Batch statements with multiple queries and no bind values</li>
    -                            </ul>
    -                            
    -                            <p>
    -                                The above are the execution modes supported by jOOQ. Whether you're using any of jOOQ's various fetching modes (e.g. <reference id="pojos" title="pojo fetching"/>, <reference id="lazy-fetching" title="lazy fetching"/>, <reference id="many-fetching" title="many fetching"/>, <reference id="later-fetching" title="later fetching"/>) is irrelevant, as those modes are all built on top of the standard JDBC API.
    -                            </p>
    -                            
    -                            <h3>Implementing MockDataProvider</h3>
    -                            <p>
    -                                 Now, here's how to implement <code>MockDataProvider</code>:
    -                            </p>
    -                            
    -</html><java><![CDATA[public class MyProvider implements MockDataProvider {
    -
    -    @Override
    -    public MockResult[] execute(MockExecuteContext ctx) throws SQLException {
    -
    -        // You might need a DSLContext to create org.jooq.Result and org.jooq.Record objects
    -        DSLContext create = DSL.using(SQLDialect.ORACLE);
    -        MockResult[] mock = new MockResult[1];
    -        
    -        // The execute context contains SQL string(s), bind values, and other meta-data
    -        String sql = ctx.sql();
    -        
    -        // Exceptions are propagated through the JDBC and jOOQ APIs
    -        if (sql.toUpperCase().startsWith("DROP")) {
    -            throw new SQLException("Statement not supported: " + sql);
    -        }
    -        
    -        // You decide, whether any given statement returns results, and how many
    -        else if (sql.toUpperCase().startsWith("SELECT")) {
    -            
    -            // Always return one author record
    -            Result<AuthorRecord> result = create.newResult(AUTHOR);
    -            result.add(create.newRecord(AUTHOR));
    -            result.get(0).setValue(AUTHOR.ID, 1);
    -            result.get(0).setValue(AUTHOR.LAST_NAME, "Orwell");
    -            mock[0] = new MockResult(1, result);
    -        }
    -        
    -        // You can detect batch statements easily
    -        else if (ctx.batch()) {
    -            // [...]
    -        }
    -        
    -        return mock;
    -    }
    -}]]></java><html>
    -
    -							<p>
    -								Essentially, the <reference class="org.jooq.tools.jdbc.MockExecuteContext" title="MockExecuteContext"/> contains all the necessary information for you to decide, what kind of data you should return. The <reference class="org.jooq.tools.jdbc.MockResult" title="MockResult"/> wraps up two pieces of information:
    -							</p>
    -							<ul>
    -							    <li> <reference class="java.sql.Statement" anchor="#getUpdateCount" title="Statement.getUpdateCount()"/>: The number of affected rows</li>
    -							    <li> <reference class="java.sql.Statement" anchor="#getResultSet()" title="Statement.getResultSet()"/>: The result set</li>
    -							</ul>
    -							
    -							<p>
    -								You should return as many <code>MockResult</code> objects as there were query executions (in <reference id="batch-execution" title="batch mode"/>) or results (in <reference id="many-fetching" title="fetch-many mode"/>). Instead of an awkward JDBC <code>ResultSet</code>, however, you can construct a "friendlier" <reference class="org.jooq.Result"/> with your own record types. The jOOQ mock API will use meta data provided with this <code>Result</code> in order to create the necessary JDBC <reference class="java.sql.ResultSetMetaData"/> 
    -							</p>
    -														
    -							<p>
    -								See the <reference class="org.jooq.tools.jdbc.MockDataProvider" title="MockDataProvider Javadoc"/> for a list of rules that you should follow.
    -							</p>
    -						</html></content>
    -					</section>
    -					
    -					<section id="jooq-console">
    -						<title>jOOQ Console</title>
    -						<content><html>
    -							<p>
    -							    The jOOQ Console is no longer supported or shipped with jOOQ 3.2+. You may still use the jOOQ 3.1 Console with new versions of jOOQ, at your own risk.
    -						    </p>
    -						</html></content>
    -					</section>
    -				</sections>
    -			</section>
    -
    -			<section id="reference">
    -				<title>Reference</title>
    -				<content><html>
    -					<p>
    -						These chapters hold some general jOOQ reference information
    -					</p>
    -				</html></content>
    -
    -				<sections>
    -					<section id="supported-rdbms">
    -						<title>Supported RDBMS</title>
    -						<content><html>
    -							<h3>A list of supported databases</h3>
    -							<p>
    -						   		Every RDMBS out there has its own little specialties. jOOQ considers those specialties as much as possible, while trying to standardise the behaviour in jOOQ. In order to increase the quality of jOOQ, some 70 unit tests are run for syntax and variable binding verification, as well as some 180 integration tests with an overall of around 1200 queries for any of these databases:
    -					   		</p>
    -							<ul>
    -							    <li>CUBRID 8.4.1 and 9.0.0</li>
    -							    <li>DB2 9.7</li>
    -							    <li>Derby 10.8</li>
    -							    <li>Firebird 2.5.1</li>
    -							    <li>H2 1.3.161</li>
    -							    <li>HSQLDB 2.2.5</li>
    -							    <li>Ingres 10.1.0</li>
    -							    <li>MySQL 5.1.41 and 5.5.8</li>
    -							    <li>Oracle XE 10.2.0.1.0 and 11g</li>
    -							    <li>PostgreSQL 9.0</li>
    -							    <li>SQLite with inofficial JDBC driver v056</li>
    -							    <li>SQL Server 2008 R8 and 2012</li>
    -							    <li>Sybase Adaptive Server Enterprise 15.5</li>
    -							    <li>Sybase SQL Anywhere 12</li>
    -							</ul>
    -							<p>
    -								These platforms have been observed to work as well, but are not integration-tested
    -							</p>
    -							<ul>
    -								<li>Google Cloud SQL (MySQL)</li>
    -							</ul>
    -								
    -							<h3>Databases planned for support</h3>
    -							<p>
    -								Any of the following databases might be available in the future
    -							</p>
    -						    <ul>
    -							    <li>Informix</li>
    -							    <li>Interbase</li>
    -							    <li>MS Access</li>
    -							    <li>MS Excel</li>
    -							    <li>SQL Azure</li>
    -							    <li>Sybase SQL Anywhere OnDemand</li>
    -							    <li>Teradata</li>
    -						    </ul>
    -						    
    -							<h3>Databases being watched</h3>
    -							<p>
    -								Any of the following databases are being observed for a potential integration
    -							</p>
    -							<ul>
    -								<li>Mondrian</li>
    -								<li>Netezza</li>
    -								<li>SQLFire</li>
    -								<li>Vectorwise</li>
    -								<li>Vertica</li>
    -								<li>VoltDB</li>
    -							</ul>
    -
    -							<h3>Feature matrix</h3>
    -							<p>
    -								This section will soon contain a feature matrix, documenting what feature is available for which database.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -					<section id="reference-data-types">
    -						<title>Data types</title>
    -						<content><html>
    -							<p>
    -								There is always a small mismatch between SQL data types and Java data types. This is for two reasons:
    -							</p>
    -							<ul>
    -								<li>SQL data types are insufficiently covered by the JDBC API.</li>
    -								<li>Java data types are often less expressive than SQL data types</li>
    -							</ul>
    -							<p>
    -								This chapter should document the most important notes about SQL, JDBC and jOOQ data types.
    -							</p>
    -						</html></content>
    -						
    -						<sections>
    -							<section id="data-types-lobs">
    -								<title>BLOBs and CLOBs</title>
    -								<content><html>
    -									<p>
    -										jOOQ currently doesn't explicitly support JDBC BLOB and CLOB data types. If you use any of these data types in your database, jOOQ will map them to byte[] and String instead. In simple cases (small data), this simplification is sufficient. In more sophisticated cases, you may have to bypass jOOQ, in order to deal with these data types and their respective resources. True support for LOBs is on the roadmap, though.
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -							<section id="data-types-unsigned">
    -								<title>Unsigned integer types</title>
    -								<content><html>
    -									<p>
    -										Some databases explicitly support unsigned integer data types. In most normal JDBC-based applications, they would just be mapped to their signed counterparts letting bit-wise shifting and tweaking to the user. jOOQ ships with a set of unsigned <reference class="java.lang.Number"/> implementations modelling the following types:
    -									</p>
    -									<ul>
    -										<li><reference class="org.jooq.types.UByte"/>: Unsigned byte, an 8-bit unsigned integer</li>
    -										<li><reference class="org.jooq.types.UShort"/>: Unsigned short, a 16-bit unsigned integer</li>
    -										<li><reference class="org.jooq.types.UInteger"/>: Unsigned int, a 32-bit unsigned integer</li>
    -										<li><reference class="org.jooq.types.ULong"/>: Unsigned long, a 64-bit unsigned integer</li>
    -									</ul>
    -									<p>
    -										Each of these wrapper types extends <reference class="java.lang.Number"/>, wrapping a higher-level integer type, internally:
    -									</p>
    -									<ul>
    -										<li>UByte wraps <reference class="java.lang.Short"/></li>
    -										<li>UShort wraps <reference class="java.lang.Integer"/></li>
    -										<li>UInteger wraps <reference class="java.lang.Long"/></li>
    -										<li>ULong wraps <reference class="java.math.BigInteger"/></li>
    -									</ul>
    -								</html></content>
    -							</section>
    -							
    -							<section id="data-types-intervals">
    -								<title>INTERVAL data types</title>
    -								<content><html>
    -									<p>
    -										jOOQ fills a gap opened by JDBC, which neglects an important SQL data type as defined by the SQL standards: INTERVAL types. SQL knows two different types of intervals:
    -									</p>
    -									<ul>
    -										<li><strong>YEAR TO MONTH</strong>: This interval type models a number of months and years</li>
    -										<li><strong>DAY TO SECOND</strong>: This interval type models a number of days, hours, minutes, seconds and milliseconds</li>
    -									</ul>
    -									
    -									<p>
    -										Both interval types ship with a variant of subtypes, such as DAY TO HOUR, HOUR TO SECOND, etc. jOOQ models these types as Java objects extending <reference class="java.lang.Number"/>: <reference class="org.jooq.types.YearToMonth"/> (where Number.intValue() corresponds to the absolute number of months) and <reference class="org.jooq.types.DayToSecond"/> (where Number.intValue() corresponds to the absolute number of milliseconds)
    -									</p>
    -									
    -									<h3>Interval arithmetic</h3>
    -									<p>
    -										In addition to the <reference id="arithmetic-expressions" title="arithmetic expressions"/> documented previously, interval arithmetic is also supported by jOOQ. Essentially, the following operations are supported:
    -									</p>
    -									<ul>
    -										<li>DATETIME - DATETIME => INTERVAL</li>
    -										<li>DATETIME + or - INTERVAL => DATETIME</li>
    -										<li>INTERVAL + DATETIME => DATETIME</li>
    -										<li>INTERVAL + - INTERVAL => INTERVAL</li>
    -										<li>INTERVAL * or / NUMERIC => INTERVAL</li>
    -										<li>NUMERIC * INTERVAL => INTERVAL</li>
    -									</ul>
    -								</html></content>
    -							</section>
    -							
    -							<section id="data-types-xml">
    -								<title>XML data types</title>
    -								<content><html>
    -									<p>
    -										XML data types are currently not supported
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -							<section id="data-types-geospacial">
    -								<title>Geospacial data types</title>
    -								<content><html>
    -									<h3>Geospacial data types</h3>
    -									<p>
    -										Geospacial data types are currently not supported
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -							<section id="data-types-cursors">
    -								<title>CURSOR data types</title>
    -								<content><html>
    -									<p>
    -										Some databases support cursors returned from stored procedures. They are mapped to the following jOOQ data type:
    -									</p>
    -
    -</html><java><![CDATA[Field<Result<Record>> cursor;]]></java><html>
    -									
    -									<p>
    -										In fact, such a cursor will be fetched immediately by jOOQ and wrapped in an <reference class="org.jooq.Result"/> object.
    -									</p>
    -								</html></content>
    -							</section>
    -							
    -							<section id="data-types-arrays">
    -								<title>ARRAY and TABLE data types</title>
    -								<content><html>
    -									<p>
    -										The SQL standard specifies ARRAY data types, that can be mapped to Java arrays as such:
    -									</p>
    -									
    -</html><java><![CDATA[Field<Integer[]> intArray;]]></java><html>
    -										
    -									<p>
    -										The above array type is supported by these SQL dialects:
    -									</p>
    -									<ul>
    -										<li>H2</li>
    -										<li>HSQLDB</li>
    -										<li>Postgres</li>
    -									</ul>
    -									
    -									<h3>Oracle typed arrays</h3>
    -									<p>
    -										Oracle has strongly-typed arrays and table types (as opposed to the previously seen anonymously typed arrays). These arrays are wrapped by <reference class="org.jooq.ArrayRecord"/> types.
    -									</p>
    -								</html></content>
    -							</section>
    -						</sections>
    -					</section>
    -
    -                    <section id="dsl-mapping-rules">
    -                        <title>SQL to DSL mapping rules</title>
    -                        <content><html>
    -                            <p>
    -                                jOOQ takes SQL as an external domain-specific language and maps it onto Java, creating an internal domain-specific language. Internal DSLs cannot 100% implement their external language counter parts, as they have to adhere to the syntax rules of their host or target language (i.e. Java). This section explains the various problems and workarounds encountered and implemented in jOOQ.
    -                            </p>
    -                            
    -                            <h3>SQL allows for "keywordless" syntax</h3>
    -                            <p>
    -                                SQL syntax does not always need keywords to form expressions. The <code><reference id="update-statement" title="UPDATE .. SET"/></code> clause takes various argument assignments:
    -                            </p>
    -     
    -</html><code-pair>
    -<sql>UPDATE t SET a = 1, b = 2</sql>
    -<java>update(t).set(a, 1).set(b, 2)</java>
    -</code-pair><html>
    -
    -                            <p>
    -                                The above example also shows missing operator overloading capabilities, where <code>"="</code> is replaced by <code>","</code> in jOOQ. Another example are <reference id="row-value-expressions" title="row value expressions"/>, which can be formed with parentheses only in SQL:
    -                            </p>
    -
    -</html><code-pair>
    -<sql>(a, b) IN ((1, 2), (3, 4))</sql>
    -<java>row(a, b).in(row(1, 2), row(3, 4))</java>
    -</code-pair><html>
    -
    -                            <p>
    -                                In this case, <code>ROW</code> is an actual (optional) SQL keyword, implemented by at least PostgreSQL.
    -                            </p>
    -                            
    -                            <h3>SQL contains "composed" keywords</h3>
    -                            <p>
    -                                As most languages, SQL does not attribute any meaning to whitespace. However, whitespace is important when forming "composed" keywords, i.e. SQL clauses composed of several keywords. jOOQ follows standard Java method naming conventions to map SQL keywords (case-insensitive) to Java methods (case-sensitive, camel-cased). Some examples:
    -                            </p>
    -                            
    -</html><code-pair>
    -<sql>GROUP BY
    -ORDER BY
    -WHEN MATCHED THEN UPDATE</sql>
    -<java>groupBy()
    -orderBy()
    -whenMatchedThenUpdate()</java>
    -</code-pair><html>
    -
    -                            <p>
    -                                Future versions of jOOQ may use all-uppercased method names in addition to the camel-cased ones (to prevent collisions with Java keywords):
    -                            </p>
    -                            
    -</html><code-pair>
    -<sql>GROUP BY
    -ORDER BY
    -WHEN MATCHED THEN UPDATE</sql>
    -<java>GROUP_BY()
    -ORDER_BY()
    -WHEN_MATCHED_THEN_UPDATE()</java>
    -</code-pair><html>
    -
    -                            <h3>SQL contains "superfluous" keywords</h3>
    -                            <p>
    -                                Some SQL keywords aren't really necessary. They are just part of a keyword-rich language, the way Java developers aren't used to anymore. These keywords date from times when languages such as ADA, BASIC, COBOL, FORTRAN, PASCAL were more verbose:
    -                            </p>
    -                            <ul>
    -                                <li><code>BEGIN .. END</code></li>
    -                                <li><code>REPEAT .. UNTIL</code></li>
    -                                <li><code>IF .. THEN .. ELSE .. END IF</code></li>
    -                            </ul>
    -                            <p>
    -                                jOOQ omits some of those keywords when it is too tedious to write them in Java.
    -                            </p>
    -
    -</html><code-pair>
    -<sql>CASE WHEN .. THEN .. END</sql>
    -<java>decode().when(.., ..)</java>
    -</code-pair><html>
    -
    -                            <p>
    -                                The above example omits <code>THEN</code> and <code>END</code> keywords in Java. Future versions of jOOQ may comprise a more complete DSL, including such keywords again though, to provide a more 1:1 match for the SQL language.
    -                            </p>
    -                            
    -                            <h3>SQL contains "superfluous" syntactic elements</h3>
    -                            <p>
    -                                Some SQL constructs are hard to map to Java, but they are also not really necessary. SQL often expects syntactic parentheses where they wouldn't really be needed, or where they feel slightly inconsistent with the rest of the SQL language. 
    -                            </p>
    -
    -</html><code-pair>
    -<sql>LISTAGG(a, b) WITHIN GROUP (ORDER BY c)
    -              OVER (PARTITION BY d)</sql>
    -<java>listagg(a, b).withinGroupOrderBy(c)
    -             .over().partitionBy(d)</java>
    -</code-pair><html>
    -
    -                            <p>
    -                                The parentheses used for the <code>WITHIN GROUP (..)</code> and <code>OVER (..)</code> clauses are required in SQL but do not seem to add any immediate value. In some cases, jOOQ omits them, although the above might be optionally re-phrased in the future to form a more SQLesque experience:  
    -                            </p>
    -
    -</html><code-pair>
    -<sql>LISTAGG(a, b) WITHIN GROUP (ORDER BY c)
    -              OVER (PARTITION BY d)</sql>
    -<java>listagg(a, b).withinGroup(orderBy(c))
    -             .over(partitionBy(d))</java>
    -</code-pair><html>
    -
    -                            <h3>SQL uses some of Java's reserved words</h3>
    -                            <p>
    -                                Some SQL keywords map onto <a href="http://download.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html">Java Language Keywords</a> if they're mapped using camel-casing. These keywords currently include: 
    -                            </p>
    -                            <ul>
    -                                <li><code>CASE</code></li>
    -                                <li><code>ELSE</code></li>
    -                                <li><code>FOR</code></li>
    -                            </ul>
    -
    -                            <p>
    -                                jOOQ replaces those keywords by "synonyms":
    -                            </p>
    -                            
    -</html><code-pair>
    -<sql>CASE .. ELSE
    -PIVOT .. FOR .. IN ..</sql>
    -<java>decode() .. otherwise()
    -pivot(..).on(..).in(..)</java>
    -</code-pair><html>           
    -
    -                            <p>
    -                                There is more future collision potential with:
    -                            </p>
    -                            <ul>
    -                                <li><code>BOOLEAN</code></li>
    -                                <li><code>CHAR</code></li>
    -                                <li><code>DEFAULT</code></li>
    -                                <li><code>DOUBLE</code></li>
    -                                <li><code>ENUM</code></li>
    -                                <li><code>FLOAT</code></li>
    -                                <li><code>IF</code></li>
    -                                <li><code>INT</code></li>
    -                                <li><code>LONG</code></li>
    -                                <li><code>PACKAGE</code></li>
    -                            </ul>
    -
    -                            <h3>SQL operators cannot be overloaded in Java</h3>
    -                            <p>
    -                                Most SQL operators have to be mapped to descriptive method names in Java, as Java does not allow operator overloading:
    -                            </p>
    -                            
    -</html><code-pair>
    -<sql><![CDATA[=
    -<>, !=
    -||
    -SET a = b]]></sql>
    -<java>equal(), eq()
    -notEqual(), ne()
    -concat()
    -set(a, b)</java>
    -</code-pair><html>
    -
    -                            <p>
    -                                For those users using <reference id="scala-sql-building" title="jOOQ with Scala or Groovy"/>, operator overloading and implicit conversion can be leveraged to enhance jOOQ:
    -                            </p>
    -
    -</html><code-pair>
    -<sql><![CDATA[=
    -<>, !=
    -||]]></sql>
    -<java><![CDATA[===
    -<>, !==
    -||]]></java>
    -</code-pair><html>
    -
    -                            <h3>SQL's reference before declaration capability</h3>
    -                            <p>
    -                                This is less of a syntactic SQL feature than a semantic one. In SQL, objects can be referenced before (i.e. "lexicographically before") they are declared. This is particularly true for <reference id="aliased-tables" title="aliasing"/>
    -                            </p>
    - 
    -</html><code-pair>
    -<sql><![CDATA[SELECT t.a
    -FROM my_table t]]></sql>
    -<java><![CDATA[MyTable t = MY_TABLE.as("t");
    -select(t.a).from(t)]]></java>
    -</code-pair><html>
    -
    -                            <p>
    -                                A more sophisticated example are common table expressions (CTE), which are currently not supported by jOOQ:
    -                            </p>
    -                            
    -</html><sql>WITH t(a, b) AS (
    -  SELECT 1, 2 FROM DUAL
    -)
    -SELECT t.a, t.b
    -FROM t</sql><html>
    -
    -                            <p>
    -                                Common table expressions define a "derived column list", just like <reference id="aliased-tables" title="table aliases"/> can do. The formal record type thus created cannot be typesafely verified by the Java compiler, i.e. it is not possible to formally dereference <code>t.a</code> from <code>t</code>.
    -                            </p>
    -                        </html></content>
    -                    </section>
    -                    
    -					<section id="reference-bnf-notation">
    -						<title>jOOQ's BNF pseudo-notation</title>
    -						<content><html>
    -							<p>
    -								This chapter will soon contain an overview over jOOQ's API using a pseudo BNF notation.
    -							</p>
    -						</html></content>
    -					</section>
    -					
    -					<section id="quality-assurance">
    -						<title>Quality Assurance</title>
    -						<content><html>
    -							<p>
    -								jOOQ is running some of your most mission-critical logic: the interface layer between your Java / Scala application and the database. You have probably chosen jOOQ for any of the following reasons:
    -							</p>
    -							<ul>
    -								<li>To evade JDBC's verbosity and error-proneness due to string concatenation and index-based variable binding</li>
    -								<li>To add lots of type-safety to your inline SQL</li>
    -								<li>To increase productivity when writing inline SQL using your favourite IDE's autocompletion capabilities</li>
    -							</ul>
    -							
    -							<p>
    -								With jOOQ being in the core of your application, you want to be sure that you can trust jOOQ. That is why jOOQ is heavily unit and integration tested with a strong focus on integration tests:
    -							</p>
    -							
    -							<h3>Unit tests</h3>
    -							<p>
    -								Unit tests are performed against dummy JDBC interfaces using <a href="http://jmock.org/" title="jmock">http://jmock.org/</a>. These tests verify that various <reference class="org.jooq.QueryPart"/> implementations render correct SQL and bind variables correctly.
    -							</p>
    -							
    -							<h3>Integration tests</h3>
    -							<p>
    -								This is the most important part of the jOOQ test suites. Some 1500 queries are currently run against a standard integration test database. Both the test database and the queries are translated into every one of the 14 supported SQL dialects to ensure that regressions are unlikely to be introduced into the code base.
    -							</p>
    -							<p>
    -								For libraries like jOOQ, integration tests are much more expressive than unit tests, as there are so many subtle differences in SQL dialects. Simple mocks just don't give as much feedback as an actual database instance.
    -							</p>
    -							<p>
    -								jOOQ integration tests run the weirdest and most unrealistic queries. As a side-effect of these extensive integration test suites, many corner-case bugs for JDBC drivers and/or open source databases have been discovered, feature requests submitted through jOOQ and reported mainly to CUBRID, Derby, H2, HSQLDB.
    -							</p>
    -							
    -							<h3>Code generation tests</h3>
    -							<p>
    -								For every one of the 14 supported integration test databases, source code is generated and the tiniest differences in generated source code can be discovered. In case of compilation errors in generated source code, new test tables/views/columns are added to avoid regressions in this field.
    -							</p>
    -							
    -							<h3>API Usability tests and proofs of concept</h3>
    -							<p>
    -								jOOQ is used in jOOQ-meta as a proof of concept. This includes complex queries such as the following Postgres query
    -							</p>
    -							
    -</html><java><![CDATA[Routines r1 = ROUTINES.as("r1");
    -Routines r2 = ROUTINES.as("r2");
    -
    -for (Record record : create().select(
    -        r1.ROUTINE_SCHEMA,
    -        r1.ROUTINE_NAME,
    -        r1.SPECIFIC_NAME,
    -
    -        // Ignore the data type when there is at least one out parameter
    -        decode()
    -            .when(exists(
    -                selectOne()
    -                .from(PARAMETERS)
    -                .where(PARAMETERS.SPECIFIC_SCHEMA.equal(r1.SPECIFIC_SCHEMA))
    -                .and(PARAMETERS.SPECIFIC_NAME.equal(r1.SPECIFIC_NAME))
    -                .and(upper(PARAMETERS.PARAMETER_MODE).notEqual("IN"))),
    -                    val("void"))
    -            .otherwise(r1.DATA_TYPE).as("data_type"),
    -        r1.CHARACTER_MAXIMUM_LENGTH,
    -        r1.NUMERIC_PRECISION,
    -        r1.NUMERIC_SCALE,
    -        r1.TYPE_UDT_NAME,
    -
    -        // Calculate overload index if applicable
    -        decode().when(
    -        exists(
    -            selectOne()
    -            .from(r2)
    -            .where(r2.ROUTINE_SCHEMA.in(getInputSchemata()))
    -            .and(r2.ROUTINE_SCHEMA.equal(r1.ROUTINE_SCHEMA))
    -            .and(r2.ROUTINE_NAME.equal(r1.ROUTINE_NAME))
    -            .and(r2.SPECIFIC_NAME.notEqual(r1.SPECIFIC_NAME))),
    -            select(count())
    -            .from(r2)
    -            .where(r2.ROUTINE_SCHEMA.in(getInputSchemata()))
    -            .and(r2.ROUTINE_SCHEMA.equal(r1.ROUTINE_SCHEMA))
    -            .and(r2.ROUTINE_NAME.equal(r1.ROUTINE_NAME))
    -            .and(r2.SPECIFIC_NAME.lessOrEqual(r1.SPECIFIC_NAME)).asField())
    -        .as("overload"))
    -    .from(r1)
    -    .where(r1.ROUTINE_SCHEMA.in(getInputSchemata()))
    -    .orderBy(
    -        r1.ROUTINE_SCHEMA.asc(),
    -        r1.ROUTINE_NAME.asc())
    -    .fetch()) {
    -
    -    result.add(new PostgresRoutineDefinition(this, record));
    -}]]></java><html>
    -							<p>
    -								These rather complex queries show that the jOOQ API is fit for advanced SQL use-cases, compared to the rather simple, often unrealistic queries in the integration test suite. 
    -							</p>
    -							
    -							<h3>Clean API and implementation. Code is kept DRY</h3>
    -							<p>
    -								As a general rule of thumb throughout the jOOQ code, everything is kept <a href="http://en.wikipedia.org/wiki/DRY">DRY</a>. Some examples:
    -							</p>
    -							<ul>
    -								<li>There is only one place in the entire code base, which consumes values from a JDBC ResultSet</li>
    -								<li>There is only one place in the entire code base, which transforms jOOQ Records into custom POJOs</li>
    -							</ul>
    -							<p>
    -								Keeping things DRY leads to longer stack traces, but in turn, also increases the relevance of highly reusable code-blocks. Chances that some parts of the jOOQ code base slips by integration test coverage decrease significantly.
    -							</p>
    -						</html></content>
    -					</section>
    -					
    -					<section id="migrating-to-3.0">
    -						<title>Migrating to jOOQ 3.0</title>
    -						<content><html>
    -							<p>
    -								This section is for all users of jOOQ 2.x who wish to upgrade to the next major release. In the next sub-sections, the most important changes are explained. Some code hints are also added to help you fix compilation errors.
    -							</p>
    -							
    -							<h3>Type-safe row value expressions</h3>
    -							<p>
    -								Support for <reference id="row-value-expressions" title="row value expressions"/> has been added in jOOQ 2.6. In jOOQ 3.0, many API parts were thoroughly (but often incompatibly) changed, in order to provide you with even more type-safety. 
    -							</p>
    -							
    -							<p>
    -								Here are some affected API parts:
    -							</p>
    -							<ul>
    -								<li>[N] in Row[N] has been raised from 8 to 22. This means that existing row value expressions with degree >= 9 are now type-safe</li>
    -								<li>Subqueries returned from <code>DSL.select(...)</code> now implement <code>Select&lt;Record[N]>, not Select&lt;Record></code></li>
    -								<li><code>IN</code> predicates and comparison predicates taking subselects changed incompatibly</li>
    -								<li><code>INSERT</code> and <code>MERGE</code> statements now take typesafe <code>VALUES()</code> clauses</li>
    -							</ul>
    -							
    -							<p>
    -								Some hints related to row value expressions:
    -							</p>
    -							
    -</html><java><![CDATA[// SELECT statements are now more typesafe:
    -Record2<String, Integer> record         = create.select(BOOK.TITLE, BOOK.ID).from(BOOK).where(ID.eq(1)).fetchOne();
    -Result<Record2<String, Integer>> result = create.select(BOOK.TITLE, BOOK.ID).from(BOOK).fetch();
    -
    -// But Record2 extends Record. You don't have to use the additional typesafety:
    -Record record    = create.select(BOOK.TITLE, BOOK.ID).from(BOOK).where(ID.eq(1)).fetchOne();
    -Result<?> result = create.select(BOOK.TITLE, BOOK.ID).from(BOOK).fetch();]]></java><html>
    -							
    -							<h3>SelectQuery and SelectXXXStep are now generic</h3>
    -							<p>
    -								In order to support type-safe row value expressions and type-safe Record[N] types, SelectQuery is now generic: SelectQuery&lt;R>
    -							</p>
    -							
    -							<h3>SimpleSelectQuery and SimpleSelectXXXStep API were removed</h3>
    -							<p>
    -							    The duplication of the SELECT API is no longer useful, now that SelectQuery and SelectXXXStep are generic.
    -							</p>
    -							
    -							<h3>Factory was split into DSL (query building) and DSLContext (query execution)</h3>
    -							<p>
    -								The pre-existing Factory class has been split into two parts:
    -							</p>
    -							
    -							<ol>
    -								<li><strong>The DSL</strong>: This class contains only static factory methods. All QueryParts constructed from this class are "unattached", i.e. queries that are constructed through DSL cannot be executed immediately. This is useful for subqueries.<br/>The DSL class corresponds to the static part of the jOOQ 2.x Factory type</li>
    -								<li><strong>The DSLContext</strong>: This type holds a reference to a Configuration and can construct executable ("attached") QueryParts.<br/>The DSLContext type corresponds to the non-static part of the jOOQ 2.x Factory / FactoryOperations type.</li>
    -							</ol>
    -							
    -							<p>
    -								The FactoryOperations interface has been renamed to DSLContext. An example:
    -							</p>
    -							
    -</html><java><![CDATA[// jOOQ 2.6, check if there are any books
    -Factory create = new Factory(connection, dialect);
    -create.selectOne()
    -      .whereExists(
    -        create.selectFrom(BOOK) // Reuse the factory to create subselects
    -      ).fetch();                // Execute the "attached" query
    -
    -// jOOQ 3.0
    -DSLContext create = DSL.using(connection, dialect);
    -create.selectOne()
    -      .whereExists(
    -        selectFrom(BOOK)        // Create a static subselect from the DSL
    -      ).fetch();                // Execute the "attached" query]]></java><html>							
    -							
    -							<h3>Quantified comparison predicates</h3>
    -							<p>
    -								Field.equalAny(...) and similar methods have been removed in favour of Field.equal(any(...)). This greatly simplified the Field API. An example:
    -							</p>
    -							
    -</html><java><![CDATA[// jOOQ 2.6
    -Condition condition = BOOK.ID.equalAny(create.select(BOOK.ID).from(BOOK));
    -
    -// jOOQ 3.0 adds some typesafety to comparison predicates involving quantified selects
    -QuantifiedSelect<Record1<Integer>> subselect = any(select(BOOK.ID).from(BOOK));
    -Condition condition = BOOK.ID.equal(subselect);]]></java><html>							
    -							
    -							<h3>FieldProvider</h3>
    -							<p>
    -								The FieldProvider marker interface was removed. Its methods still exist on FieldProvider subtypes. Note, they have changed names from <code>getField()</code> to <code>field()</code> and from <code>getIndex()</code> to <code>indexOf()</code>
    -							</p>
    -							
    -							<h3>GroupField</h3>
    -							<p>
    -								GroupField has been introduced as a DSL marker interface to denote fields that can be passed to <code>GROUP BY</code> clauses. This includes all org.jooq.Field types. However, fields obtained from <code>ROLLUP()</code>, <code>CUBE()</code>, and <code>GROUPING SETS()</code> functions no longer implement Field. Instead, they only implement GroupField. An example:
    -							</p>
    -							
    -</html><java><![CDATA[// jOOQ 2.6
    -Field<?>   field1a = Factory.rollup(...); // OK
    -Field<?>   field2a = Factory.one();       // OK
    -
    -// jOOQ 3.0
    -GroupField field1b = DSL.rollup(...); // OK
    -Field<?>   field1c = DSL.rollup(...); // Compilation error
    -GroupField field2b = DSL.one();       // OK
    -Field<?>   field2c = DSL.one();       // OK]]></java><html>
    -							
    -							<h3>NULL predicate</h3>
    -							<p>
    -							   Beware! Previously, Field.equal(null) was translated internally to an IS NULL predicate. This is no longer the case. Binding Java "null" to a comparison predicate will result in a regular comparison predicate (which never returns true). This was changed for several reasons:
    -							</p>
    -							
    -							<ul>
    -								<li>To most users, this was a surprising "feature".</li>
    -								<li>Other predicates didn't behave in such a way, e.g. the IN predicate, the BETWEEN predicate, or the LIKE predicate.</li>
    -								<li>Variable binding behaved unpredictably, as IS NULL predicates don't bind any variables.</li>
    -								<li>The generated SQL depended on the possible combinations of bind values, which creates unnecessary hard-parses every time a new unique SQL statement is rendered.</li>
    -							</ul>
    -							
    -							<p>
    -								Here is an example how to check if a field has a given value, without applying SQL's ternary NULL logic:
    -							</p>
    -
    -</html><java><![CDATA[String possiblyNull = null; // Or else...
    -
    -// jOOQ 2.6
    -Condition condition1 = BOOK.TITLE.equal(possiblyNull);
    -
    -// jOOQ 3.0
    -Condition condition2 = BOOK.TITLE.equal(possiblyNull).or(BOOK.TITLE.isNull().and(val(possiblyNull).isNull()));
    -Condition condition3 = BOOK.TITLE.isNotDistinctFrom(possiblyNull);]]></java><html>
    -							
    -							<h3>Configuration</h3>
    -							<p>
    -								<code>DSLContext</code>, <code>ExecuteContext</code>, <code>RenderContext</code>, <code>BindContext</code> no longer extend <code>Configuration</code> for "convenience". From jOOQ 3.0 onwards, composition is chosen over inheritance as these objects are not really configurations. Most importantly
    -							</p>
    -							<ul>
    -								<li><code>DSLContext</code> is only a DSL entry point for constructing "attached" QueryParts</li>
    -								<li><code>ExecuteContext</code> has a well-defined lifecycle, tied to that of a single query execution</li>
    -								<li><code>RenderContext</code> has a well-defined lifecycle, tied to that of a single rendering operation</li>
    -								<li><code>BindContext</code> has a well-defined lifecycle, tied to that of a single variable binding operation</li>
    -							</ul>
    -							<p>
    -								In order to resolve confusion that used to arise because of different lifecycle durations, these types are now no longer formally connected through inheritance.
    -							</p>
    -							
    -							<h3>ConnectionProvider</h3>
    -							<p>
    -							    In order to allow for simpler connection / data source management, jOOQ externalised connection handling in a new ConnectionProvider type. The previous two connection modes are maintained backwards-compatibly (JDBC standalone connection mode, pooled DataSource mode). Other connection modes can be injected using:
    -							</p>
    -
    -</html><java><![CDATA[public interface ConnectionProvider {
    -
    -    // Provide jOOQ with a connection
    -    Connection acquire() throws DataAccessException;
    -  
    -    // Get a connection back from jOOQ
    -    void release(Connection connection) throws DataAccessException;
    -}]]></java><html>
    -							
    -							<p>
    -							    These are some side-effects of the above change
    -							</p>
    -							
    -							<ul>
    -								<li>Connection-related JDBC wrapper utility methods (commit, rollback, etc) have been moved to the new DefaultConnectionProvider. They're no longer available from the DSLContext. This had been confusing to some users who called upon these methods while operating in pool DataSource mode.</li>
    -							</ul>
    -							
    -							<h3>ExecuteListeners</h3>
    -							<p>
    -								ExecuteListeners can no longer be configured via Settings. Instead they have to be injected into the Configuration. This resolves many class loader issues that were encountered before. It also helps listener implementations control their lifecycles themselves.
    -							</p>
    -							
    -							<h3>Data type API</h3>
    -							<p>
    -								The data type API has been changed drastically in order to enable some new DataType-related features. These changes include:
    -							</p>
    -
    -							<ul>
    -								<li>[SQLDialect]DataType and SQLDataType no longer implement DataType. They're mere constant containers</li>
    -								<li>Various minor API changes have been done.</li>
    -							</ul>
    -														
    -							<h3>Object renames</h3>
    -							<p>
    -								These objects have been moved / renamed:
    -							</p>
    -							
    -							<ul>
    -								<li>jOOU: a library used to represent unsigned integer types was moved from <code>org.jooq.util.unsigned</code> to <code>org.jooq.util.types</code> (which already contained INTERVAL data types)</li>
    -							</ul>
    -							
    -							<h3>Feature removals</h3>
    -							<p>
    -								Here are some minor features that have been removed in jOOQ 3.0
    -							</p>
    -
    -							<ul>
    -								<li>The ant task for code generation was removed, as it was not up to date at all. Code generation through ant can be performed easily by calling jOOQ's GenerationTool through a &lt;java> target.</li>
    -								<li>The navigation methods and "foreign key setters" are no longer generated in Record classes, as they are useful only to few users and the generated code is very collision-prone.</li>
    -								<li>The code generation configuration no longer accepts comma-separated regular expressions. Use the regex pipe | instead.</li>
    -								<li>The code generation configuration can no longer be loaded from .properties files. Only XML configurations are supported.</li>
    -								<li>The master data type feature is no longer supported. This feature was unlikely to behave exactly as users expected. It is better if users write their own code generators to generate master enum data types from their database tables. jOOQ's enum mapping and converter features sufficiently cover interacting with such user-defined types.</li>
    -								<li>The DSL subtypes are no longer instanciable. As DSL now only contains static methods, subclassing is no longer useful. There are still dialect-specific DSL types providing static methods for dialect-specific functions. But the code-generator no longer generates a schema-specific DSL</li>
    -								<li>The concept of a "main key" is no longer supported. The code generator produces UpdatableRecords only if the underlying table has a PRIMARY KEY. The reason for this removal is the fact that "main keys" are not reliable enough. They were chosen arbitrarily among UNIQUE KEYs.</li>
    -								<li>The UpdatableTable type has been removed. While adding significant complexity to the type hierarchy, this type adds not much value over a simple <code>Table.getPrimaryKey() != null</code> check.</li>
    -							    <li>The <code>USE</code> statement support has been removed from jOOQ. Its behaviour was ill-defined, while it didn't work the same way (or didn't work at all) in some databases.</li>
    -                            </ul>
    -						</html></content>
    -					</section>
    -
    -					<!-- 
    -					<section id="reference-glossary">
    -					  Analytical function -> window function
    -					  Arity -> Degree
    -					  AST
    -					  Batch
    -					  BNF
    -					  Catalog
    -					  Clause
    -					  Code generation
    -					  Column -> Field
    -					  Column expression
    -					  Common table expression
    -					  Condition -> Predicate
    -					  Configuration
    -					  Connection
    -					  CRUD -> OLTP
    -					  DAO
    -					  Database
    -					  DataSource
    -					  Degree
    -					  Dialect
    -					  Domain Specific language (internal / external)
    -                      DSL
    -                      DSLContext
    -					  Execute
    -					  Execute listener
    -					  Execution lifecycle
    -					  Export
    -					  Expression
    -					  Fetch
    -					  Field
    -					  Function
    -					  Generic R-type
    -					  Generic T-type
    -					  JDBC
    -					  JPQL
    -					  Hibernate
    -					  Hierarchical query
    -					  HQL
    -					  Identifier
    -					  Import
    -					  Keyword
    -					  LINQ
    -					  Literal
    -					  Locking (optimistic / pessimistic)
    -					  Name -> Identifier
    -					  OLAP
    -					  OLTP
    -					  Pivot
    -					  POJO
    -					  Predicate
    -					  PreparedStatement
    -					  Procedure
    -					  Projection
    -					  Query
    -					  Schema
    -					  Settings
    -					  SLICK
    -					  SQL
    -					  SQL building
    -					  SQL execution
    -					  SQL standard
    -					  Statement
    -					  Table
    -					  Table expression
    -					  Record
    -					  Row
    -					  Row value expression
    -					  Result
    -					  ResultQuery
    -					  UDT
    -					  View
    -					  Window function
    -					
    -					</section>
    -					  -->
    -
    -					<section id="reference-credits">
    -						<title>Credits</title>
    -						<content><html>
    -							<p>
    -								jOOQ lives in a very challenging ecosystem. The Java to SQL interface is still one of the most important system interfaces. Yet there are still a lot of open questions, best practices and no "true" standard has been established. This situation gave way to a lot of tools, APIs, utilities which essentially tackle the same problem domain as jOOQ. jOOQ has gotten great inspiration from pre-existing tools and this section should give them some credit. Here is a list of inspirational tools in alphabetical order:
    -							</p>
    -							<ul>
    -								<li><a href="http://www.hibernate.org">Hibernate</a>: The de-facto standard (JPA) with its useful table-to-POJO mapping features have influenced jOOQ's <reference class="org.jooq.ResultQuery" anchor="#fetchInto(java.lang.Class)"/> facilities</li>
    -								<li><a href="http://www.h2database.com/html/jaqu.html">JaQu</a>: H2's own fluent API for querying databases</li>
    -								<li><a href="http://www.oracle.com/technetwork/java/javaee/tech/persistence-jsp-140049.html">JPA</a>: The de-facto standard in the javax.persistence packages, supplied by Oracle. Its annotations are useful to jOOQ as well.</li>
    -								<li><a href="http://onewebsql.com">OneWebSQL</a>: A commercial SQL abstraction API with support for DAO source code generation, which was integrated also in jOOQ</li>
    -								<li><a href="http://www.querydsl.com">QueryDSL</a>: A "LINQ-port" to Java. It has a similar fluent API, a similar code-generation facility, yet quite a different purpose. While jOOQ is all about SQL, QueryDSL (like LINQ) is mostly about querying.</li>
    -								<li><a href="http://slick.typesafe.com">SLICK</a>: A "LINQ-like" database abstraction layer for Scala. Unlike LINQ, its API doesn't really remind of SQL. Instead, it makes SQL look like Scala.</li>
    -								<li><a href="http://www.springsource.org/features/data-access">Spring Data</a>: Spring's JdbcTemplate knows RowMappers, which are reflected by jOOQ's <reference id="recordhandler"/> or <reference id="recordmapper"/></li>
    -							</ul>
    -						</html></content>
    -					</section>
    -				</sections>
    -			</section>
    -		</sections>
    -	</section>
    -</manual>
    diff --git a/jOOQ-website/src/main/resources/manual.xml b/jOOQ-website/src/main/resources/manual.xml
    deleted file mode 100644
    index 8aeb18fed8..0000000000
    --- a/jOOQ-website/src/main/resources/manual.xml
    +++ /dev/null
    @@ -1,5206 +0,0 @@
    -<?xml version="1.0" encoding="UTF-8"?>
    -<!-- 
    -  - Copyright (c) 2009-2013, Lukas Eder, lukas.eder@gmail.com
    -  - All rights reserved.
    -  -
    -  - This software is licensed to you under the Apache License, Version 2.0
    -  - (the "License"); You may obtain a copy of the License at
    -  -
    -  -   http://www.apache.org/licenses/LICENSE-2.0
    -  -
    -  - Redistribution and use in source and binary forms, with or without
    -  - modification, are permitted provided that the following conditions are met:
    -  -
    -  - . Redistributions of source code must retain the above copyright notice, this
    -  -   list of conditions and the following disclaimer.
    -  -
    -  - . Redistributions in binary form must reproduce the above copyright notice,
    -  -   this list of conditions and the following disclaimer in the documentation
    -  -   and/or other materials provided with the distribution.
    -  -
    -  - . Neither the name "jOOQ" nor the names of its contributors may be
    -  -   used to endorse or promote products derived from this software without
    -  -   specific prior written permission.
    -  -
    -  - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    -  - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    -  - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    -  - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
    -  - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    -  - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    -  - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    -  - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    -  - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    -  - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    -  - POSSIBILITY OF SUCH DAMAGE.
    -  -->
    -<manual>
    -	<section id="manual">
    -		<title>The jOOQ User Manual. Multiple Pages</title>
    -		<content><html>
    -			<h2 id="Overview"><a href="#Overview" name="Overview">#</a> Overview</h2>
    -			<p>This manual is divided into four main sections:</p>
    -			<ul>
    -				<li>
    -					<reference id="JOOQ"/>
    -					<p>
    -						See these chapters for an overview of the jOOQ internal architecture
    -						and all types that are involved with jOOQ's query creation and
    -						execution. This is the important part for you, also, if you wish to
    -						extend jOOQ
    -					</p>
    -				</li>
    -				<li>
    -					<reference id="META"/>
    -					<p>
    -						See these chapters to understand how you can use jOOQ as a source code
    -						generator, and what type of artefacts are generated by jOOQ
    -					</p>
    -				</li>
    -				<li>
    -					<reference id="DSL"/>
    -					<p>
    -						See these chapters to learn about how to use jOOQ in every day's work. The
    -						jOOQ DSL is the main way to create and execute jOOQ queries almost as
    -						if SQL was embedded in Java directly
    -					</p>
    -				</li>
    -				<li>
    -					<reference id="ADVANCED"/>
    -					<p>
    -						Some advanced topics including not-everyday functionality
    -					</p>
    -				</li>
    -			</ul>
    -		</html></content>
    -
    -
    -		<sections>
    -			<section id="JOOQ">
    -				<title>jOOQ classes and their usage</title>
    -				<content><html>
    -					<h3>Overview</h3>
    -					<p>jOOQ essentially has two packages:</p>
    -					<ul>
    -						<li>org.jooq: the jOOQ API. Here you will find interfaces for all
    -							SQL concepts
    -						</li>
    -						<li>org.jooq.impl: the jOOQ implementation and factories. Most
    -							implementation classes are package private, you can only access
    -							them using the <reference id="Factory" title="org.jooq.impl.Factory"/>
    -						</li>
    -					</ul>
    -					<p>
    -						This section is about the main jOOQ classes and the global
    -						architecture. Most of the time, however, you will be using the
    -						<reference id="DSL" />
    -						in order to create queries
    -						the way you're used to in SQL
    -					</p>
    -				</html></content>
    -
    -
    -				<sections>
    -					<section id="ExampleDatabase">
    -						<title>The example database</title>
    -						<content><html>
    -							<h3>Example CREATE TABLE statements</h3>
    -							<p>
    -							For the examples in this manual, the same database will always be
    -							referred to. It essentially consists of these entities created using
    -							the Oracle dialect
    -							</p>
    -</html><sql>CREATE TABLE t_language (
    -  id NUMBER(7) NOT NULL PRIMARY KEY,
    -  cd CHAR(2) NOT NULL,
    -  description VARCHAR2(50)
    -)
    -
    -CREATE TABLE t_author (
    -  id NUMBER(7) NOT NULL PRIMARY KEY,
    -  first_name VARCHAR2(50),
    -  last_name VARCHAR2(50) NOT NULL,
    -  date_of_birth DATE,
    -  year_of_birth NUMBER(7)
    -)
    -
    -CREATE TABLE t_book (
    -  id NUMBER(7) NOT NULL PRIMARY KEY,
    -  author_id NUMBER(7) NOT NULL,
    -  title VARCHAR2(400) NOT NULL,
    -  published_in NUMBER(7) NOT NULL,
    -  language_id NUMBER(7) NOT NULL,
    -  FOREIGN KEY (AUTHOR_ID) REFERENCES T_AUTHOR(ID),
    -  FOREIGN KEY (LANGUAGE_ID) REFERENCES T_LANGUAGE(ID)
    -)
    -
    -CREATE TABLE t_book_store (
    -  name VARCHAR2(400) NOT NULL UNIQUE
    -)
    -
    -CREATE TABLE t_book_to_book_store (
    -  book_store_name VARCHAR2(400) NOT NULL,
    -  book_id INTEGER NOT NULL,
    -  stock INTEGER,
    -  PRIMARY KEY(book_store_name, book_id),
    -  CONSTRAINT b2bs_book_store_id
    -    FOREIGN KEY (book_store_name)
    -    REFERENCES t_book_store (name)
    -    ON DELETE CASCADE,
    -  CONSTRAINT b2bs_book_id
    -    FOREIGN KEY (book_id)
    -    REFERENCES t_book (id)
    -    ON DELETE CASCADE
    -)</sql><html>
    -							<p>
    -								More entities, types (e.g. UDT's, ARRAY types, ENUM types, etc),
    -								stored procedures and packages are introduced for specific examples
    -							</p>
    -						</html></content>
    -					</section>
    -
    -
    -					<section id="Factory">
    -						<title>The Factory class</title>
    -						<content><html>
    -							<h3>The Factory and the jOOQ API</h3>
    -							<p>
    -								jOOQ exposes a lot of interfaces and hides most implementation facts
    -								from client code. The reasons for this are:
    -							</p>
    -							<ul>
    -								<li>Interface-driven design. This allows for modelling queries in a fluent API most efficiently</li>
    -								<li>Reduction of complexity for client code.</li>
    -								<li>API guarantee. You only depend on the exposed interfaces, not concrete (potentially dialect-specific) implementations.</li>
    -							</ul>
    -							<p>
    -								The <reference class="org.jooq.impl.Factory"/>
    -								class is the main class from where you will create all jOOQ objects.
    -								The Factory implements <reference class="org.jooq.Configuration"/>
    -								and needs to be instanciated with the Configuration's properties:
    -							</p>
    -							<ul>
    -								<li><reference class="org.jooq.SQLDialect"/> :
    -								The dialect of your database. This may be any of the currently
    -								supported database types</li>
    -								<li><reference class="java.sql.Connection"/> :
    -								An optional JDBC Connection that will be re-used for the whole
    -    							lifecycle of your Factory</li>
    -    							<li><reference class="java.sql.DataSource"/> :
    -    							An optional JDBC DataSource that will be re-used for the whole
    -    							lifecycle of your Factory. If you prefer using DataSources over
    -    							Connections, jOOQ will internally fetch new Connections from
    -    							your DataSource, conveniently closing them again after query execution.
    -    							This is particularly useful in J2EE or Spring contexts.</li>
    -    							<li><reference class="org.jooq.conf.Settings"/> :
    -    							An optional runtime configuration.</li>
    -							</ul>
    -							<p>If you are planning on using several RDBMS (= SQLDialects) or
    -								several distinct JDBC Connections in your software, this will mean
    -								that you have to create a new Factory every time. </p>
    -
    -							<h3>Factory settings</h3>
    -							<p>
    -								The jOOQ Factory allows for some optional configuration elements to be used by advanced users.
    -								The <reference class="org.jooq.conf.Settings" title="Settings"/> class is a JAXB-annotated
    -								type, that can be provided to a Factory in several ways:
    -							</p>
    -							<ul>
    -								<li>In the constructor. This will override default settings below</li>
    -								<li>From a location specified by a JVM parameter: -Dorg.jooq.settings</li>
    -								<li>From the classpath at /jooq-settings.xml</li>
    -								<li>From the settings defaults, as specified in
    -								    <a href="http://www.jooq.org/xsd/jooq-runtime-2.1.0.xsd" title="The jOOQ Runtime configuration XSD">http://www.jooq.org/xsd/jooq-runtime-2.1.0.xsd</a>
    -								</li>
    -							</ul>
    -							<p>
    -								Subsequent sections of the manual contain some more in-depth explanations about these settings:
    -							</p>
    -							<ul>
    -								<li>
    -     								<reference id="SchemaMapping" title="Runtime schema and table mapping"/>
    -   								</li>
    -     							<li>
    -     								<reference id="ExecuteListener" title="Execute listeners and SQL tracing"/>
    -     							</li>
    -   							</ul>
    -							<p>
    -								Please refer to the jOOQ runtime configuration XSD for more details:<br/>
    -								<a href="http://www.jooq.org/xsd/jooq-runtime-2.1.0.xsd" title="The jOOQ Runtime configuration XSD">http://www.jooq.org/xsd/jooq-runtime-2.1.0.xsd</a>
    -							</p>
    -
    -							<h3>Factory subclasses</h3>
    -							<p>
    -								There are a couple of subclasses for the general Factory. Each SQL
    -								dialect has its own dialect-specific factory. For instance, if you're
    -								only using the MySQL dialect, you can choose to create a new Factory
    -								using any of the following types:
    -							</p>
    -</html><java>// A general, dialect-unspecific factory
    -Factory create = new Factory(connection, SQLDialect.MYSQL);
    -
    -// A MySQL-specific factory
    -MySQLFactory create = new MySQLFactory(connection);</java><html>
    -							<p>
    -								The advantage of using a dialect-specific Factory lies in the fact,
    -								that you have access to more proprietary RDMBS functionality. This may
    -								include:
    -							</p>
    -							<ul>
    -								<li>Oracle's <reference id="CONNECTBY" title="CONNECT BY"/>
    -								    pseudo columns and functions</li>
    -    							<li>MySQL's encryption functions</li>
    -    							<li>PL/SQL constructs, pgplsql, or any other dialect's ROUTINE-language (maybe in the future)</li>
    -							</ul>
    -							<p>
    -								Another type of Factory subclasses are each generated schema's
    -								factories. If you generate your schema TEST, then you will have access
    -								to a TestFactory. This will be useful in the future, when access to
    -								schema artefacts will be unified. Currently, this has no use.
    -							</p>
    -
    -							<h3>Static Factory methods</h3>
    -							<p>
    -								With jOOQ 2.0, static factory methods have been introduced in order to
    -								make your code look more like SQL. Ideally, when working with jOOQ, you
    -								will simply static import all methods from the Factory class:
    -							</p>
    -							</html><java>import static org.jooq.impl.Factory.*;</java><html>
    -							<p>
    -								This will allow to access functions even more fluently:
    -							</p>
    -
    -</html><java>concat(trim(FIRST_NAME), trim(LAST_NAME));
    -// ... which is in fact the same as:
    -Factory.concat(Factory.trim(FIRST_NAME), Factory.trim(LAST_NAME));</java><html>
    -							<p>
    -								Objects created statically from the Factory do not need a reference to
    -								any factory, as they can be constructed independently from your Configuration
    -								(connection, dialect, schema mapping). They will access that information at
    -								render / bind time. See
    -								<reference id="QueryPart" title="more details on the QueryParts' internals"/>
    -							</p>
    -
    -							<h3>Potential problems</h3>
    -							<p>
    -								The jOOQ Factory expects its underlying
    -								<reference class="java.sql.Connection" />
    -								to be <strong>open and ready</strong>
    -								for
    -								<reference class="java.sql.PreparedStatement" />
    -								creation. You are responsible yourself for the
    -								lifecycle dependency between Factory and Connection. This means:
    -							</p>
    -							<ul>
    -								<li>jOOQ will never close the Connection.</li>
    -								<li>jOOQ will never commit or rollback on the Connection
    -									(Except for CSV-imports, if explicitly configured in the <reference id="Import" title="Import API"/>)</li>
    -								<li>jOOQ will never start any transactions.</li>
    -								<li>
    -									jOOQ does not know the concept of a session as for instance
    -									<a href="http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/architecture.html#architecture-current-session">Hibernate</a>
    -								</li>
    -								<li>jOOQ does not know the concept of a second-level cache. SQL is
    -									executed directly on the underlying RDBMS.</li>
    -								<li>jOOQ does not make assumptions about the origin of the Connection.
    -									If it is container managed, that is fine.</li>
    -							</ul>
    -							<p>
    -								So if you want your queries to run in separate transactions, if you
    -								want to roll back a transaction, if you want to close a Connection and
    -								return it to your container, you will have to take care of that
    -								yourself. jOOQ's Factory will always expect its Connection to be in a
    -								ready state for creating new PreparedStatements. If it is not, you have
    -								to create a new Factory.
    -							</p>
    -							<p>
    -								Please keep in mind that many jOOQ objects will reference your Factory
    -								for their whole lifecycle. This is especially interesting, when dealing
    -								with <reference id="UpdatableRecord" title="Updatable Records"/>,
    -								that can perform CRUD operations on the
    -								Factory's underlying Connection.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -
    -					<section id="Table">
    -						<title>Tables and Fields</title>
    -						<content><html>
    -							<h3>The Table</h3>
    -							<p>Tables represent any entity in your underlying RDBMS, that holds
    -							  data for selection, insertion, updates, and deletion. In other
    -							  words, views are also considered tables by jOOQ. </p>
    -							<p>The formal definition of a <reference class="org.jooq.Table"/> starts with </p>
    -							</html><java>public interface Table&lt;R extends Record&gt; // [...]</java><html>
    -							<p>
    -								This means that every table is associated with a subtype of the
    -								<reference class="org.jooq.Record" />
    -								class (see also
    -								<reference id="Result" title="Results and Records" />
    -								). For anonymous or ad-hoc tables,
    -								&lt;R&gt; will always bind to Record itself.
    -							</p>
    -							<p>
    -								Unlike in the
    -								<a href="http://download.oracle.com/javaee/6/tutorial/doc/gjitv.html"
    -									title="Tutorial about JPA CriteriaQuery">JPA CriteriaQuery API</a>,
    -								this generic type
    -								&lt;R&gt;
    -								is not given so much importance as far as
    -								type-safety is concerned.
    -								SQL itself is highly typesafe. You have
    -								incredible flexibility of creating anonymous or ad-hoc
    -								types and
    -								reusing them from
    -								<reference id="NESTED" title="NESTED SELECT statements" />
    -								or from many other
    -								use-cases. There is no way that this typesafety can be
    -								mapped to the Java world in a convenient way. If
    -								&lt;R&gt; would play a role as important
    -								as in JPA, jOOQ would suffer from the same verbosity, or inflexibility
    -								that JPA CriteriaQueries may have.
    -							</p>
    -
    -							<h3>The Field</h3>
    -							<p>The formal definition of a Field starts with </p>
    -							</html><java>public interface Field&lt;T&gt; // [...]</java><html>
    -							<p>
    -								Fields are generically parameterised with a Java type
    -								&lt;T&gt;
    -								that reflects the closest match to the RDMBS's underlying datatype for that
    -								field. For instance, if you have a VARCHAR2 type Field in Oracle,
    -								&lt;T&gt;
    -								would bind to
    -								<reference class="java.lang.String" />
    -								for that Field in jOOQ. Oracle's NUMBER(7) would
    -								let
    -								&lt;T&gt;
    -								bind to
    -								<reference class="java.lang.Integer" />,
    -								etc. This generic type is useful for two purposes:
    -							</p>
    -							<ul>
    -								<li>It allows you to write type safe queries. For instance, you cannot
    -									compare Field
    -									&lt;String&gt;
    -									with Field
    -									&lt;Integer&gt;</li>
    -
    -								<li>It
    -									allows you to fetch correctly cast and converted values from
    -									your database result set. This is especially useful when &lt;T&gt; binds
    -									to
    -									advanced data types, such as
    -									<reference id="UDT" title="UDT's, ARRAY or ENUM types" />
    -									, where jOOQ
    -									does the difficult non-standardised JDBC data type conversions for you.
    -								</li>
    -							</ul>
    -
    -							<h3>Fields and tables put into action</h3>
    -							<p>The Field itself is a very broad concept. Other tools, or databases
    -								refer to it as expression or column. When you just want to </p>
    -
    -							</html><sql>SELECT 1 FROM DUAL</sql><html>
    -							<p>
    -								Then 1 is considered a Field or more explicitly, a
    -								<reference class="org.jooq.impl.Constant" />,
    -								which implements Field, and DUAL is considered a Table or more explicitly
    -								<reference class="org.jooq.impl.Dual"/>, which implements Table
    -							</p>
    -							<p>
    -								More advanced uses become clear quickly, when you do things like
    -							</p>
    -							</html><sql>SELECT 1 + 1 FROM DUAL</sql><html>
    -							<p>
    -								Where 1 + 1 itself is a Field or more explicitly, an
    -								<reference class="org.jooq.impl.Expression"/>
    -								joining two Constants together.
    -							</p>
    -							<p>
    -								See some details about how to create these queries in the
    -								<reference id="Query" title="Query section"/> of the manual
    -							</p>
    -
    -							<h3>TableFields</h3>
    -							<p>
    -								A specific type of field is the
    -								<reference class="org.jooq.TableField" />,
    -								which represents a physical
    -								Field in a physical Table. Both the
    -								TableField and its referenced Table
    -								know each other. The physical aspect
    -								of their nature is represented in
    -								jOOQ by
    -								<reference id="TABLE" title="meta model code generation" />,
    -								where every entity in your database
    -								schema will be generated into a
    -								corresponding Java class.
    -							</p>
    -							<p>
    -								TableFields join both &lt;R&gt; and &lt;T&gt; generic parameters into their specification:
    -							</p>
    -							</html><java>public interface TableField&lt;R extends Record, T&gt; // [...]</java><html>
    -							<p>
    -								This can be used for additional type safety in the future, or by client code.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -
    -					<section id="Result">
    -						<title>Results, Cursors and Records</title>
    -						<content><html>
    -							<h3>The Result</h3>
    -							<p>
    -								The
    -								<reference class="org.jooq.Result" title="Result" />&lt;R extends <reference class="org.jooq.Record" title="Record" />&gt;
    -								is essentially a wrapper for a List&lt;R extends Record&gt;
    -								providing
    -								many convenience methods for accessing single elements in
    -								the result
    -								set. Depending on the type of SELECT statement,
    -								&lt;R&gt; can be bound
    -								to a sub-type of Record, for instance to an
    -								<reference class="org.jooq.UpdatableRecord" />.
    -								See the section on
    -								<reference id="UpdatableRecord" title="Updatable Records" />
    -								for further details.
    -							</p>
    -
    -							<h3>The Cursor</h3>
    -							<p>
    -								A similar object is the
    -								<reference class="org.jooq.Cursor" title="Cursor"/>&lt;R extends Record&gt;.
    -								Unlike the Result, the cursor has not fetched all data from the database yet.
    -								This means, you save memory (and potentially speed), but you can only access
    -								data sequentially and you have to keep a JDBC ResultSet alive. Cursors behave
    -								very much like the <reference class="java.util.Iterator"/>,
    -								by providing a very simple API. Some sample methods are:
    -							</p>
    -</html><java>// Check whether there are any more records to be fetched
    -boolean hasNext() throws DataAccessException;
    -
    -// Fetch the next record from the underlying JDBC ResultSet
    -R fetchOne() throws DataAccessException;
    -
    -// Close the underlying JDBC ResultSet. Don't forget to call this, before disposing the Cursor.
    -void close() throws DataAccessException;</java><html>
    -
    -							<h3>The Record</h3>
    -							<p>
    -								The Record itself holds all the data from your selected tuple. If it is
    -								a <reference class="org.jooq.TableRecord"/>, then it corresponds exactly to the type of one of your
    -								physical tables in your database. But any anonymous or ad-hoc tuple can
    -								be represented by the plain Record. A record mainly provides access to
    -								its data and adds convenience methods for data type conversion. These
    -								are the main access ways:
    -							</p>
    -</html><java>// If you can keep a reference of the selected field, then you can get the corresponding value type-safely
    -&lt;T&gt; T getValue(Field&lt;T&gt; field);
    -
    -// If you know the name of the selected field within the tuple,
    -// then you can get its value without any type information
    -Object getValue(String fieldName);
    -
    -// If you know the index of the selected field within the tuple,
    -// then you can get its value without any type information
    -Object getValue(int index);</java><html>
    -							<p>
    -								In some cases, you will not be able to reference the selected Fields
    -								both when you create the SELECT statement and when you fetch data from
    -								Records. Then you might use field names or indexes, as with JDBC.
    -								However, of course, the type information will then be lost as well. If
    -								you know what type you want to get, you can always use the Record's
    -								convenience methods for type conversion, however. Some examples:
    -							</p>
    -</html><java>// These methods will try to convert a value to a BigDecimal.
    -// This will work for all numeric types and for CHAR/VARCHAR types, if they contain numeric values:
    -BigDecimal getValueAsBigDecimal(String fieldName);
    -BigDecimal getValueAsBigDecimal(int fieldIndex);
    -
    -// This method can perform arbitrary conversions
    -&lt;T&gt; T getValue(String fieldName, Class&lt;? extends T&gt; type);
    -&lt;T&gt; T getValue(int fieldIndex, Class&lt;? extends T&gt; type);</java><html>
    -
    -							<p>
    -								For more information about the type conversions that are supported by
    -								jOOQ, read the Javadoc on
    -								<reference class="org.jooq.tools.Convert"/>
    -							</p>
    -						</html></content>
    -					</section>
    -
    -
    -					<section id="UpdatableRecord">
    -						<title>CRUD and Updatable Records</title>
    -						<content><html>
    -							<h3>CRUD Operations with UpdatableRecords</h3>
    -							<p>
    -								UpdatableRecords are a specific subtype of TableRecord that have
    -								primary key information associated with them.
    -							</p>
    -							<p>As of jOOQ 1.5, the UpdatableRecord essentially contains three additional
    -							 methods <a href="http://de.wikipedia.org/wiki/CRUD">CRUD</a>
    -							 (Create Read Update Delete) operations: </p>
    -</html><java>// Store any changes made to this record to the database.
    -// The record executes an INSERT if the PRIMARY KEY is NULL or has been changed. Otherwise, an UPDATE is performed.
    -int store();
    -
    -// Deletes the record from the database.
    -int delete();
    -
    -// Reflects changes made in the database to this Record
    -void refresh();</java><html>
    -							<p>An example lifecycle of a book can be implemented as such:</p>
    -</html><java>// Create a new record and insert it into the database
    -TBookRecord book = create.newRecord(T_BOOK);
    -book.setTitle("My first book");
    -book.store();
    -
    -// Update it with new values
    -book.setPublishedIn(2010);
    -book.store();
    -
    -// Delete it
    -book.delete();</java><html>
    -							<p>These operations are very simple utilities. They do not
    -							reflect the functionality offered by <a href="http://www.hibernate.org/">Hibernate</a>
    -							or other persistence managers. </p>
    -
    -							<h3>Performing CRUD on non-updatable records</h3>
    -							<p>
    -								If the jOOQ code-generator cannot detect any PRIMARY KEY, or UNIQUE KEY
    -								on your tables, then the generated artefacts implement TableRecord,
    -								instead of UpdatableRecord. A TableRecord can perform the same CRUD
    -								operations as we have seen before, if you provide it with the necessary
    -								key fields. The API looks like this:
    -							</p>
    -
    -</html><java>// INSERT or UPDATE the record using the provided keys
    -int storeUsing(TableField&lt;R, ?&gt;... keys)
    -
    -// DELETE a record using the provided keys
    -int deleteUsing(TableField&lt;R, ?&gt;... keys);
    -
    -// Reflects changes made in the database to this Record
    -void refreshUsing(TableField&lt;R, ?&gt;... keys);</java><html>
    -
    -							<p>
    -								This is useful if your RDBMS does not support referential constraints (e.g. MySQL's
    -								<a href="http://en.wikipedia.org/wiki/MyISAM">MyISAM</a>), or if you want to
    -								store records to an unconstrained view. An example lifecycle of a book without
    -								any keys can then be implemented as such:
    -							</p>
    -</html><java>// Create a new record and insert it into the database
    -TBookRecord book = create.newRecord(T_BOOK);
    -book.setTitle("My first book");
    -book.storeUsing(TBook.ID);
    -
    -// Update it with new values
    -book.setPublishedIn(2010);
    -book.storeUsing(TBook.ID);
    -
    -// Delete it
    -book.deleteUsing(TBook.ID);</java></content>
    -					</section>
    -
    -
    -					<section id="Query">
    -						<title>The Query and its various subtypes</title>
    -						<content><html>
    -							<h3>SELECT statements</h3>
    -							<p>
    -								There are essentially two ways of creating SELECT statements in jOOQ.
    -								For historical reasons, you can create
    -								<reference class="org.jooq.SimpleSelectQuery"/> or
    -								<reference class="org.jooq.SelectQuery"/>
    -								objects and add additional query clauses, such as
    -								<reference class="org.jooq.Condition" title="Conditions"/> or
    -								<reference class="org.jooq.SortField" title="SortFields"/> to it.
    -								Since jOOQ 1.3, there is also the possibility to
    -								create SELECT statements using jOOQ's
    -								<reference id="DSL" title="DSL API"/> in a much more intuitive
    -								and SQL-like way.
    -							</p>
    -							<p>Use the DSL API when: </p>
    -							<ul>
    -								<li>You want your code to look like SQL</li>
    -								<li>You want your IDE to help you with auto-completion (you will not be able to write select .. order by .. where .. join or any of that stuff) </li>
    -							</ul>
    -							<p>Use the regular API when: </p>
    -							<ul>
    -								<li>You want to create your query step-by-step, creating query parts one-by-one</li>
    -							    <li>You need to assemble your query from various places, passing the query around, adding new conditions and joins on the way </li>
    -							</ul>
    -							<p>In any case, all API's will construct the same underlying
    -								implementation object, and in many cases, you can combine the two
    -								approaches. Let's check out the various SELECT statement types: </p>
    -
    -							<ul>
    -								<li><reference class="org.jooq.Select"/>:
    -								    This Query subtype stands for a general type of SELECT statement.
    -								    It is also the main Select type for the
    -								    <reference id="DSL" title="DSL API"/>. When executed, this object
    -								    will hold a <reference id="Result" title="Result containing the resulting Records"/>.
    -								    This type is further subtyped for the various uses of a SELECT statement as such:</li>
    -								<li><reference class="org.jooq.SimpleSelectQuery"/>:
    -									This Query will allow for selecting from single physical Tables only.
    -									It therefore has access to the Table's generic type parameter
    -									&lt;R extends Record&gt; and will provide a matching Result&lt;R&gt;.
    -									This is especially useful if &lt;R&gt; is a subtype of
    -									<reference id="UpdatableRecord" title="UpdatableRecord"/>.
    -									Then you will be able to perform updates on your result set immediately.</li>
    -								<li><reference class="org.jooq.SelectQuery"/>:
    -									This Query will allow for selecting a subset of Fields from several
    -									Tables. Because the results of such a query are considered of an anonymous
    -									or ad-hoc type, this Query will bind &lt;R&gt; to the general type Record
    -									itself. The purpose of this Query type is to allow for full SQL support,
    -									including SELECT, JOIN and GROUP BY clauses. </li>
    -							</ul>
    -
    -							<h3>Example: SQL query and DSL query</h3>
    -							</html><code-pair>
    -<sql>-- Select all books by authors born after 1920, named "Paulo"
    --- from a catalogue consisting of authors and books:
    -
    -
    -SELECT *
    -  FROM t_author
    -  JOIN t_book
    -    ON t_author.id = t_book.author_id
    - WHERE t_author.year_of_birth &gt; 1920
    -   AND t_author.first_name = 'Paulo'
    - ORDER BY t_book.title</sql><java>// Instanciate your factory using a JDBC connection.
    -Factory create = new Factory(connection, SQLDialect.ORACLE);
    -
    -// Execute the query "on a single line"
    -Result&lt;Record&gt; result = create.select()
    -    .from(T_AUTHOR)
    -    .join(T_BOOK)
    -    .on(T_AUTHOR.ID.equal(T_BOOK.AUTHOR_ID))
    -    .where(T_AUTHOR.YEAR_OF_BIRTH.greaterThan(1920)
    -    .and(T_AUTHOR.FIRST_NAME.equal("Paulo")))
    -    .orderBy(T_BOOK.TITLE).fetch();</java>
    -    						</code-pair><html>
    -
    -							<p>
    -								In the above example, some generated artefacts are used for querying.
    -								In this case, T_AUTHOR and T_BOOK are instances of types
    -								<reference class="org.jooq.test.oracle.generatedclasses.test.tables.TAuthor" title="TAuthor"/> and
    -								<reference class="org.jooq.test.oracle.generatedclasses.test.tables.TBook" title="TBook"/> respectively.
    -								Their full qualification would read TAuthor.T_AUTHOR and TBook.T_BOOK, but in many cases,
    -								it's useful to static import elements involved with queries, in order to decrease verbosity:
    -								</html><java>import static com.example.jooq.Tables.*;</java><html>
    -							</p>
    -
    -							<p>
    -								Apart from the singleton Table instances TAuthor.T_AUTHOR and
    -								TBook.T_BOOK, these generated classes also contain one member
    -								for every physical field, such as TAuthor.ID or TBook.TAUTHOR_ID, etc.
    -								Depending on your configuration, those members can be static members
    -								(better for static imports) or instance members (better for aliasing)
    -							</p>
    -
    -							<ul>
    -								<li>For more information about code generation, check out the manual's section about
    -									<reference id="META" title="Meta model source code generation"/>.</li>
    -    							<li>For more DSL examples, please consider the manual's section about the
    -    								<reference id="DSL" title="DSL API"/>.</li>
    -							</ul>
    -
    -							<h3>Example: Non-DSL query</h3>
    -							<p>
    -								If you choose not to use the DSL API (for instance, because you don't
    -								want to add Query parts in the order SQL expects them), you can use
    -								this syntax:
    -							</p>
    -</html><java>// Re-use the factory to create a SelectQuery. This example will not make use of static imports...
    -SelectQuery q = create.selectQuery();
    -q.addFrom(T_AUTHOR);
    -
    -// This example shows some "mixed" API usage, where the JOIN is added with the standard API, and the
    -// Condition is created using the DSL API
    -q.addJoin(T_BOOK, T_AUTHOR.ID.equal(T_BOOK.AUTHOR_ID));
    -
    -// The AND operator between Conditions is implicit here
    -q.addConditions(T_AUTHOR.YEAR_OF_BIRTH.greaterThan(1920));
    -q.addConditions(T_AUTHOR.FIRST_NAME.equal("Paulo"));
    -q.addOrderBy(T_BOOK.TITLE);</java><html>
    -
    -							<h3>Fetching data</h3>
    -							<p>
    -								The <reference class="org.jooq.Select"/> interface extends
    -								<reference class="org.jooq.ResultQuery"/>,
    -								which provides a range of methods to fetch data from the database.
    -								Once you have constructed your SELECT query (see examples above), you
    -								may choose to either simply execute() it, or use a variety of convenience
    -								fetchXXX() methods.
    -							</p>
    -							<p>
    -								See the manual's
    -								<reference id="ResultQuery" title="section on the ResultQuery"/>
    -								for more details.
    -							</p>
    -
    -
    -							<h3>INSERT Statements</h3>
    -							<p>jOOQ supports two modes for INSERT statements.
    -							The INSERT VALUES and the INSERT SELECT syntax</p>
    -
    -							<h3>Example: SQL query and DSL query</h3>
    -							</html><code-pair>
    -<sql>INSERT INTO T_AUTHOR
    -    (ID, FIRST_NAME, LAST_NAME)
    -VALUES
    -    (100, 'Hermann', 'Hesse'),
    -    (101, 'Alfred', 'Döblin');</sql><java>create.insertInto(T_AUTHOR,
    -        T_AUTHOR.ID, T_AUTHOR.FIRST_NAME, T_AUTHOR.LAST_NAME)
    -      .values(100, "Hermann", "Hesse")
    -      .values(101, "Alfred", "Döblin")
    -      .execute();</java></code-pair><html>
    -
    -							<p>The DSL syntax tries to stay close to actual SQL. In detail,
    -								however, Java is limited in its possibilities. That's why the
    -								.values() clause is repeated for every record in multi-record inserts.
    -								Some RDBMS support
    -								inserting several records at the same time. This is also supported in
    -								jOOQ, and simulated using UNION clauses for those RDBMS that don't
    -								support this syntax.
    -								</html><sql>INSERT INTO .. SELECT .. UNION ALL SELECT ..</sql><html>
    -							</p>
    -							<p>Note: Just like in SQL itself, you can have syntax errors when you
    -								don't have matching numbers of fields/values. Also, you can run into
    -								runtime problems, if your field/value types don't match. </p>
    -
    -							<h3>Example: DSL Query, alternative syntax</h3>
    -							<p>MySQL (and some other RDBMS) allow for using an UPDATE-like syntax
    -								for INSERT statements. This is also supported in jOOQ, should you
    -								prefer that syntax. The above INSERT statement can also be expressed
    -								as follows: </p>
    -</html><java>create.insertInto(T_AUTHOR)
    -      .set(T_AUTHOR.ID, 100)
    -      .set(T_AUTHOR.FIRST_NAME, "Hermann")
    -      .set(T_AUTHOR.LAST_NAME, "Hesse")
    -      .newRecord()
    -      .set(T_AUTHOR.ID, 101)
    -      .set(T_AUTHOR.FIRST_NAME, "Alfred")
    -      .set(T_AUTHOR.LAST_NAME, "Döblin")
    -      .execute();</java><html>
    -							<p>As you can see, this syntax is a bit more verbose, but also more
    -								type-safe, as every field can be matched with its value.</p>
    -
    -							<h3>Example: ON DUPLICATE KEY UPDATE clause</h3>
    -							<p>The MySQL database supports a very convenient way to INSERT or
    -								UPDATE a record. This is a non-standard extension to the SQL syntax,
    -								which is supported by jOOQ and simulated in other RDBMS, where this is
    -								possible. Here is an example how to use the ON DUPLICATE KEY UPDATE
    -								clause: </p>
    -</html><java>// Add a new author called "Koontz" with ID 3.
    -// If that ID is already present, update the author's name
    -create.insertInto(T_AUTHOR, T_AUTHOR.ID, T_AUTHOR.LAST_NAME)
    -      .values(3, "Koontz")
    -      .onDuplicateKeyUpdate()
    -      .set(T_AUTHOR.LAST_NAME, "Koontz")
    -      .execute();</java><html>
    -
    -							<h3>Example: ON DUPLICATE KEY IGNORE clause</h3>
    -							<p>The MySQL database also supports an INSERT IGNORE INTO clause.
    -							    This is supported by jOOQ using the more convenient SQL
    -							    syntax variant of ON DUPLICATE KEY IGNORE, which can be equally
    -							    simulated in other databases using a MERGE statement: </p>
    -</html><java>// Add a new author called "Koontz" with ID 3.
    -// If that ID is already present, ignore the INSERT statement
    -create.insertInto(T_AUTHOR, T_AUTHOR.ID, T_AUTHOR.LAST_NAME)
    -      .values(3, "Koontz")
    -      .onDuplicateKeyIgnore()
    -      .execute();</java><html>
    -
    -      						<h3>Example: INSERT .. RETURNING clause</h3>
    -							<p>The Postgres database has native support for an INSERT .. RETURNING
    -								clause. This is a very powerful concept that is simulated for all
    -								other dialects using JDBC's
    -								<reference class="java.sql.Statement" anchor="#getGeneratedKeys()" title="getGeneratedKeys()"/>
    -								method. Take this example:</p>
    -
    -</html><java>// Add another author, with a generated ID
    -Record&lt;?&gt; record =
    -create.insertInto(T_AUTHOR, T_AUTHOR.FIRST_NAME, T_AUTHOR.LAST_NAME)
    -      .values("Charlotte", "Roche")
    -      .returning(T_AUTHOR.ID)
    -      .fetchOne();
    -
    -System.out.println(record.getValue(T_AUTHOR.ID));
    -
    -// For some RDBMS, this also works when inserting several values
    -// The following should return a 2x2 table
    -Result&lt;?&gt; result =
    -create.insertInto(T_AUTHOR, T_AUTHOR.FIRST_NAME, T_AUTHOR.LAST_NAME)
    -      .values("Johann Wolfgang", "von Goethe")
    -      .values("Friedrich", "Schiller")
    -      // You can request any field. Also trigger-generated values
    -      .returning(T_AUTHOR.ID, T_AUTHOR.CREATION_DATE)
    -      .fetch();</java><html>
    -
    -      						<p>
    -      							Be aware though, that this can lead to race-conditions
    -      							in those databases that cannot properly return generated
    -      							ID values.
    -      						</p>
    -
    -      						<h3>Example: Non-DSL Query</h3>
    -      						<p>You can always use the more verbose regular syntax of the InsertQuery, if you need more control: </p>
    -</html><java>// Insert a new author into the T_AUTHOR table
    -InsertQuery&lt;TAuthorRecord&gt; i = create.insertQuery(T_AUTHOR);
    -i.addValue(T_AUTHOR.ID, 100);
    -i.addValue(T_AUTHOR.FIRST_NAME, "Hermann");
    -i.addValue(T_AUTHOR.LAST_NAME, "Hesse");
    -
    -i.newRecord();
    -i.addValue(T_AUTHOR.ID, 101);
    -i.addValue(T_AUTHOR.FIRST_NAME, "Alfred");
    -i.addValue(T_AUTHOR.LAST_NAME, "Döblin");
    -i.execute();</java><html>
    -
    -							<h3>Example: INSERT Query combined with SELECT statements</h3>
    -							<p>The InsertQuery.addValue() method is overloaded, such that you can
    -								also provide a Field, potentially containing an expression: </p>
    -</html><java>// Insert a new author into the T_AUTHOR table
    -InsertQuery&lt;TAuthorRecord&gt; i = create.insertQuery(T_AUTHOR);
    -i.addValue(T_AUTHOR.ID, create.select(max(T_AUTHOR.ID).add(1)).from(T_AUTHOR).asField())
    -i.addValue(T_AUTHOR.FIRST_NAME, "Hermann");
    -i.addValue(T_AUTHOR.LAST_NAME, "Hesse");
    -i.execute();</java><html>
    -							<p>Note that especially MySQL (and some other RDBMS) has some
    -								limitations regarding that syntax. You may not be able to
    -								select from the same table you're inserting into</p>
    -
    -							<h3>Example: INSERT SELECT syntax support</h3>
    -							<p>In some occasions, you may prefer the INSERT SELECT syntax, for instance, when
    -								you copy records from one table to another: </p>
    -</html><java>Insert i = create.insertInto(T_AUTHOR_ARCHIVE)
    -                 .select(create.selectFrom(T_AUTHOR).where(T_AUTHOR.DECEASED.isTrue()));
    -i.execute();</java><html>
    -
    -
    -							<h3>UPDATE Statements</h3>
    -							<p>UPDATE statements are only possible on single tables. Support for
    -							multi-table updates will be implemented in the near future. </p>
    -
    -							<h3>Example: SQL query and DSL query</h3>
    -							</html><code-pair>
    -<sql>UPDATE T_AUTHOR
    -   SET FIRST_NAME = 'Hermann',
    -       LAST_NAME = 'Hesse'
    - WHERE ID = 3;
    - </sql><java>create.update(T_AUTHOR)
    -      .set(T_AUTHOR.FIRST_NAME, "Hermann")
    -      .set(T_AUTHOR.LAST_NAME, "Hesse")
    -      .where(T_AUTHOR.ID.equal(3))
    -      .execute();</java></code-pair><html>
    -
    -							<h3>Example: Non-DSL Query</h3>
    -							<p>Using the <reference class="org.jooq.UpdateQuery"/> class,
    -							this is how you could express an UPDATE statement:</p>
    -</html><java>UpdateQuery&lt;TAuthorRecord&gt; u = create.updateQuery(T_AUTHOR);
    -u.addValue(T_AUTHOR.FIRST_NAME, "Hermann");
    -u.addValue(T_AUTHOR.FIRST_NAME, "Hesse");
    -u.addConditions(T_AUTHOR.ID.equal(3));
    -u.execute();</java><html>
    -
    -
    -							<h3>DELETE Statements</h3>
    -							<p>DELETE statements are only possible on single tables. Support for
    -							multi-table deletes will be implemented in the near future. </p>
    -
    -							<h3>Example: SQL query and DSL query</h3>
    -							</html><code-pair>
    -<sql>DELETE T_AUTHOR
    - WHERE ID = 100;
    - </sql><java>create.delete(T_AUTHOR)
    -      .where(T_AUTHOR.ID.equal(100))
    -      .execute();</java></code-pair><html>
    -
    -							<h3>Example: Non-DSL Query</h3>
    -							<p>Using the <reference class="org.jooq.DeleteQuery"/> class,
    -							this is how you could express a DELETE statement: </p>
    -</html><java>DeleteQuery&lt;TAuthorRecord&gt; d = create.deleteQuery(T_AUTHOR);
    -d.addConditions(T_AUTHOR.ID.equal(100));
    -d.execute();</java><html>
    -
    -
    -							<h3>MERGE Statement</h3>
    -							<p>
    -								The MERGE statement is one of the most advanced standardised SQL
    -								constructs, which is supported by DB2, HSQLDB, Oracle, SQL Server and
    -								Sybase (MySQL has the similar INSERT .. ON DUPLICATE KEY UPDATE
    -								construct)
    -							</p>
    -							<p>
    -								The point of the standard MERGE statement is to take a TARGET table, and
    -								merge (INSERT, UPDATE) data from a SOURCE table into it. DB2, Oracle,
    -								SQL Server and Sybase also allow for DELETING some data and for adding
    -								many additional clauses. With jOOQ 2.0.1, only Oracle's MERGE extensions are supported.
    -								Here is an example:
    -							</p>
    -
    -							</html><code-pair>
    -<sql>-- Check if there is already an author called 'Hitchcock'
    --- If there is, rename him to John. If there isn't add him.
    -
    -MERGE INTO T_AUTHOR
    -USING (SELECT 1 FROM DUAL)
    -ON (LAST_NAME = 'Hitchcock')
    -WHEN MATCHED THEN UPDATE SET FIRST_NAME = 'John'
    -WHEN NOT MATCHED THEN INSERT (LAST_NAME)
    -                      VALUES ('Hitchcock')</sql><java>create.mergeInto(T_AUTHOR)
    -      .using(create().selectOne())
    -      .on(T_AUTHOR.LAST_NAME.equal("Hitchcock"))
    -      .whenMatchedThenUpdate()
    -      .set(T_AUTHOR.FIRST_NAME, "John")
    -      .whenNotMatchedThenInsert(T_AUTHOR.LAST_NAME)
    -      .values("Hitchcock")
    -      .execute();
    -
    -</java></code-pair><html>
    -
    -                            <h3>MERGE Statement (H2-specific syntax)</h3>
    -							<p>
    -							    The H2 database ships with a somewhat less powerful
    -							    but a little more intuitive syntax for its own version of the MERGE statement.
    -							    An example more or less equivalent to the previous one
    -							    can be seen here:
    -							</p>
    -</html><code-pair>
    -<sql>-- Check if there is already an author called 'Hitchcock'
    --- If there is, rename him to John. If there isn't add him.
    -
    -MERGE INTO T_AUTHOR (FIRST_NAME, LAST_NAME)
    -KEY (LAST_NAME)
    -VALUES ('John', 'Hitchcock')</sql><java>create.mergeInto(T_AUTHOR,
    -                 T_AUTHOR.FIRST_NAME,
    -                 T_AUTHOR.LAST_NAME)
    -      .key(T_AUTHOR.LAST_NAME)
    -      .values("John", "Hitchcock")
    -      .execute();
    -</java></code-pair><html>
    -
    -                            <p>
    -                                This syntax can be fully simulated by jOOQ for all other
    -                                databases that support the SQL standard. For more information
    -                                about the H2 MERGE syntax, see the documentation here:
    -                                <br/>
    -                                <br/>
    -                                <a href="http://www.h2database.com/html/grammar.html#merge">http://www.h2database.com/html/grammar.html#merge</a>
    -                            </p>
    -
    -							<h3>TRUNCATE Statement</h3>
    -							<p>
    -								The syntax is trivial:
    -							</p>
    -
    -							</html><code-pair>
    -								<sql>TRUNCATE TABLE T_AUTHOR;</sql><java>create.truncate(T_AUTHOR).execute();</java>
    -							</code-pair><html>
    -							<p>This is not supported by Ingres and SQLite. jOOQ will execute a DELETE FROM
    -								T_AUTHOR statement instead. </p>
    -						</html></content>
    -					</section>
    -
    -
    -
    -					<section id="ResultQuery">
    -						<title>ResultQuery and fetch() methods</title>
    -						<content><html>
    -							<h3>The ResultQuery and its convenience methods</h3>
    -							<p>
    -							    Data fetching is one of the great hassles in JDBC and JPA.
    -							    With jOOQ, you will be able to specify exactly, what kind of
    -							    data you want to fetch from any given query, as well as how
    -							    you want to fetch that data. This doesn't just mean distinguishing
    -							    between fetching one record at a time, or the whole resultset,
    -							    between fetching one column at a time, or the whole resultset.
    -							    This also means transforming your result (a list) into a map,
    -							    into arrays, into custom types, into JPA-annotated types, into
    -							    a call-back, or simply fetching it asynchronously
    -							</p>
    -							<p>These methods allow for fetching a jOOQ Result or parts of it.</p>
    -
    -</html><java><![CDATA[// Fetch the whole result
    -Result<R> fetch();
    -
    -// Fetch a single field from the result
    -<T> List<T> fetch(Field<T> field);
    -    List<?> fetch(int fieldIndex);
    -<T> List<T> fetch(int fieldIndex, Class<? extends T> type);
    -    List<?> fetch(String fieldName);
    -<T> List<T> fetch(String fieldName, Class<? extends T> type);
    -
    -// Fetch the first Record
    -R fetchAny();
    -
    -// Fetch exactly one Record
    -R fetchOne();
    -
    -// Fetch a single field of exactly one Record
    -<T> T  fetchOne(Field<T> field);
    -Object fetchOne(int fieldIndex);
    -<T> T  fetchOne(int fieldIndex, Class<? extends T> type);
    -Object fetchOne(String fieldName);
    -<T> T  fetchOne(String fieldName, Class<? extends T> type);]]></java><html>
    -
    -							<p>These methods transform the result into another form, if org.jooq.Result is not optimal</p>
    -
    -</html><java><![CDATA[// Fetch the resulting records as Maps
    -List<Map<String, Object>> fetchMaps();
    -     Map<String, Object>  fetchOneMap();
    -
    -// Fetch the result as a Map
    -<K>    Map<K, R> fetchMap(Field<K> key);
    -<K, V> Map<K, V> fetchMap(Field<K> key, Field<V> value);
    -
    -// Fetch the resulting records as arrays
    -Object[][] fetchArrays();
    -Object[]   fetchOneArray();
    -
    -// Fetch a single field as an array
    -<T>  T[] fetchArray(Field<T> field);
    -Object[] fetchArray(int fieldIndex);
    -<T>  T[] fetchArray(int fieldIndex, Class<? extends T> type);
    -Object[] fetchArray(String fieldName);
    -<T>  T[] fetchArray(String fieldName, Class<? extends T> type);]]></java><html>
    -
    -							<p>These methods transform the result into a user-defined form, if org.jooq.Result is not optimal</p>
    -
    -</html><java><![CDATA[// Fetch the resulting records into a custom POJO
    -// type, which may or may not be JPA-annotated
    -// Use the generator's <pojos>true</pojos> and <jpaAnnotation>true</jpaAnnotation>
    -// configurations to generate such POJOs with jOOQ
    -<E> List<E> fetchInto(Class<? extends E> type);
    -
    -// Fetch the resulting records into a custom
    -// record handler, similar to how Spring JdbcTemplate's
    -// RowMapper or the Ollin Framework works.
    -<H extends RecordHandler<R>> H fetchInto(H handler);
    -
    -// These change the behaviour of fetching itself,
    -// especially, when not all data should be
    -// fetched at once
    -// ----------------------------------------------
    -
    -// Fetch a Cursor for lazy iteration
    -Cursor<R> fetchLazy();
    -
    -// Or a JDBC ResultSet, if you prefer that
    -ResultSet fetchResultSet();
    -
    -// Fetch data asynchronously and let client code
    -// decide, when the data must be available.
    -// This makes use of the java.util.concurrent API,
    -// Similar to how Avajé Ebean works.
    -FutureResult<R> fetchLater();
    -FutureResult<R> fetchLater(ExecutorService executor);]]></java></content>
    -					</section>
    -
    -
    -					<section id="BindValues">
    -						<title>Bind values and parameters</title>
    -						<content><html>
    -							<h3>Bind values</h3>
    -							<p>
    -								Bind values are used in SQL / JDBC for various reasons. Among the most
    -								obvious ones are:
    -							</p>
    -							<ul>
    -								<li>
    -									Protection against SQL injection. Instead of inlining values
    -									possibly originating from user input, you bind those values to
    -									your prepared statement and let the JDBC driver / database take
    -									care of handling security aspects.
    -								</li>
    -								<li>
    -									Increased speed. Advanced databases such as Oracle can keep
    -									execution plans of similar queries in a dedicated cache to prevent
    -									hard-parsing your query again and again. In many cases, the actual
    -									value of a bind variable does not influence the execution plan, hence
    -									it can be reused. Preparing a statement will thus be faster
    -								</li>
    -								<li>
    -									On a JDBC level, you can also reuse the SQL string and prepared statement
    -									object instead of constructing it again, as you can bind new values to
    -									the prepared statement. This is currently not supported by jOOQ, though
    -								</li>
    -							</ul>
    -
    -							<h3>Ways to introduce bind values with jOOQ</h3>
    -							<p>
    -								Bind values are omni-present in jOOQ. Whenever you create a condition,
    -								you're actually also adding a bind value:
    -							</p>
    -</html><java>// In jOOQ, "Poe" will be the bind value bound to the condition
    -LAST_NAME.equal("Poe");</java><html>
    -
    -
    -							<p>
    -								The above notation is actually convenient way to explicitly create
    -								a bind value for "Poe". You could also write this, instead:
    -							</p>
    -</html><java>// The Factory allows for explicitly creating bind values
    -LAST_NAME.equal(Factory.val("Poe"));
    -
    -// Or, when static importing Factory.val:
    -LAST_NAME.equal(val("Poe"))</java><html>
    -
    -							<p>
    -								Once created, bind values are part of the query's syntax tree (see
    -								<reference id="QueryPart" title="the manual's section about jOOQ's architecture"/>
    -							    for more information about jOOQ's internals),
    -								and cannot be modified directly anymore. If you wish to reuse a query and
    -								modify bind values between subsequent query executions, you can access them again
    -								through the <reference class="org.jooq.Query"/> interface:
    -							</p>
    -
    -</html><java><![CDATA[// Access the first bind value from a query. Indexes are counted from 1, just as with JDBC
    -Query query = create.select().from(T_AUTHOR).where(LAST_NAME.equal("Poe"));
    -Param<?> param = query.getParam("1");
    -
    -// You could now modify the Query's underlying bind value:
    -if ("Poe".equal(param.getValue())) {
    -    param.setConverted("Orwell");
    -}]]></java><html>
    -
    -							<p>
    -								The <reference class="org.jooq.Param"/> type can also be named explicitly
    -								using the Factory's param() methods:
    -							</p>
    -</html><java><![CDATA[// Create a query with a named parameter. You can then use that name for accessing the parameter again
    -Query query1 = create.select().from(T_AUTHOR).where(LAST_NAME.equal(param("lastName", "Poe")));
    -Param<?> param1 = query.getParam("lastName");
    -
    -// Or, keep a reference to the typed parameter in order not to lose the <T> type information:
    -Param<String> param2 = param("lastName", "Poe");
    -Query query2 = create.select().from(T_AUTHOR).where(LAST_NAME.equal(param2));
    -
    -// You can now change the bind value directly on the Param reference:
    -param2.setValue("Orwell");
    -]]></java><html>
    -
    -							<p>
    -								The <reference class="org.jooq.Query"/> interface also allows for
    -								setting new bind values directly, without accessing the Param type:
    -							</p>
    -
    -</html><java>Query query1 = create.select().from(T_AUTHOR).where(LAST_NAME.equal("Poe"));
    -query1.bind(1, "Orwell");
    -
    -// Or, with named parameters
    -Query query2 = create.select().from(T_AUTHOR).where(LAST_NAME.equal(param("lastName", "Poe")));
    -query2.bind("lastName", "Orwell");</java><html>
    -
    -							<p>
    -								NOTE: Should you wish to use jOOQ only as a query builder and execute
    -								queries with another tool, such as Spring Data instead, you can also
    -								use the Factory's renderNamedParams() method, to actually render named
    -								parameter names in generated SQL:
    -							</p>
    -
    -							</html><code-pair>
    -<java>create.renderNamedParams(
    -    create.select()
    -          .from(T_AUTHOR)
    -          .where(LAST_NAME.equal(
    -                 param("lastName", "Poe"))));</java><sql>-- The named bind variable can be rendered
    -
    -SELECT *
    -FROM T_AUTHOR
    -WHERE LAST_NAME = :lastName
    -</sql>
    -							</code-pair><html>
    -
    -							<h3>Inlining bind values</h3>
    -
    -							<p>
    -								Sometimes, you may wish to avoid rendering bind
    -								variables while still using custom values in SQL.
    -								jOOQ refers to that as "inlined" bind values.
    -								When bind values are inlined, they render the
    -								actual value in SQL rather than a JDBC question mark.
    -								Bind value inlining can be achieved in two ways:
    -							</p>
    -
    -							<ol>
    -								<li>
    -									By using the settings and setting the
    -									<reference class="org.jooq.conf.StatementType"/>
    -									to STATIC_STATEMENT. This will inline all
    -									bind values for SQL statements rendered from
    -									such a Factory.
    -								</li>
    -								<li>
    -									By using Factory.inline() methods.
    -								</li>
    -							</ol>
    -
    -							<p>
    -								In both cases, your inlined bind values will be
    -								properly escaped to avoid SQL syntax errors and
    -								SQL injection.
    -								Some examples:
    -							</p>
    -
    -</html><java><![CDATA[
    -// Use dedicated calls to inline() in order to specify
    -// single bind values to be rendered as inline values
    -// --------------------------------------------------
    -create.select()
    -      .from(T_AUTHOR)
    -      .where(LAST_NAME.equal(inline("Poe")));
    -
    -// Or render the whole query with inlined values
    -// --------------------------------------------------
    -Settings settings = new Settings()
    -    .withStatementType(StatementType.STATIC_STATEMENT);
    -
    -// Add the settings to the factory
    -Factory create = new Factory(connection, SQLDialect.ORACLE, settings);
    -
    -// Run queries that omit rendering schema names
    -create.select()
    -      .from(T_AUTHOR)
    -      .where(LAST_NAME.equal("Poe"));]]></java></content>
    -					</section>
    -
    -
    -					<section id="QueryPart">
    -						<title>QueryParts and the global architecture</title>
    -						<content><html>
    -							<h3>Everything is a QueryPart</h3>
    -							<p>
    -								A
    -								<reference class="org.jooq.Query" />
    -								and all its contained objects is a
    -								<reference class="org.jooq.QueryPart" />.
    -								QueryParts essentially provide this functionality:
    -							</p>
    -							<ul>
    -								<li>they can render SQL using the toSQL(RenderContext) method</li>
    -								<li>they can bind variables using the bind(BindContext) method</li>
    -							</ul>
    -
    -							<p>Both of these methods are contained in jOOQ's internal API's
    -							   <reference class="org.jooq.QueryPartInternal"/>, which is
    -							   internally implemented by every QueryPart. QueryPart internals are best
    -							   illustrated with an example.</p>
    -
    -						   <h3>Example: CompareCondition</h3>
    -						   <p>A simple example can be provided by checking out jOOQ's internal
    -								representation of a
    -								<reference class="org.jooq.impl.CompareCondition"/>.
    -								It is used for any condition
    -								comparing two fields as for example the T_AUTHOR.ID = T_BOOK.AUTHOR_ID
    -								condition here: </p>
    -</html><sql>-- [...]
    -FROM T_AUTHOR
    -JOIN T_BOOK ON T_AUTHOR.ID = T_BOOK.AUTHOR_ID
    --- [...]</sql><html>
    -
    -							<p>This is how jOOQ implements such a condition: </p>
    -
    -</html><java><![CDATA[@Override
    -public final void bind(BindContext context) throws DataAccessException {
    -    // The CompareCondition itself does not bind any variables.
    -    // But the two fields involved in the condition might do so...
    -    context.bind(field1).bind(field2);
    -}
    -
    -@Override
    -public final void toSQL(RenderContext context) {
    -    // The CompareCondition delegates rendering of the Fields to the Fields
    -    // themselves and connects them using the Condition's comparator operator:
    -    context.sql(field1)
    -           .sql(" ");
    -
    -    // If the second field is null, some convenience behaviour can be
    -    // implemented here
    -    if (field2.isNullLiteral()) {
    -        switch (comparator) {
    -            case EQUALS:
    -                context.sql("is null");
    -                break;
    -
    -            case NOT_EQUALS:
    -                context.sql("is not null");
    -                break;
    -
    -            default:
    -                throw new IllegalStateException("Cannot compare null with " + comparator);
    -        }
    -    }
    -
    -    // By default, also delegate the right hand side's SQL rendering to the
    -    // underlying field
    -    else {
    -        context.sql(comparator.toSQL())
    -               .sql(" ")
    -               .sql(field2);
    -    }
    -}
    -]]></java><html>
    -							<p>For more complex examples, please refer to the codebase, directly</p>
    -						</html></content>
    -					</section>
    -
    -
    -					<section id="Serializability">
    -						<title>Serializability of jOOQ objects</title>
    -						<content><html>
    -							<h3>Attaching QueryParts</h3>
    -							<p>
    -								The only transient element in any jOOQ object is the
    -								<reference id="Factory"/>'s
    -								underlying
    -								<reference class="java.sql.Connection"/>. When you want to execute queries after
    -								de-serialisation, or when you want to store/refresh/delete
    -								<reference id="UpdatableRecord" title="Updatable Records"/>,
    -								you will have to "import" or "re-attach" them to a Factory
    -							</p>
    -</html><java>// Deserialise a SELECT statement
    -ObjectInputStream in = new ObjectInputStream(...);
    -Select&lt;?&gt; select = (Select&lt;?&gt;) in.readObject();
    -
    -// This will throw a DetachedException:
    -select.execute();
    -
    -// In order to execute the above select, attach it first
    -Factory create = new Factory(connection, SQLDialect.ORACLE);
    -create.attach(select);</java><html>
    -
    -
    -							<h3>Automatically attaching QueryParts</h3>
    -							<p>
    -								Note, this functionality is deprecated with jOOQ 2.1.0.
    -								Please use the <reference id="ExecuteListener" title="ExecuteListener"/> API
    -								instead, to provide jOOQ queries with a
    -								<reference class="java.sql.Connection"/> before
    -								execution.
    -							</p>
    -							<p>In simple cases, you can register a ConfigurationProvider in jOOQ's ConfigurationRegistry</p>
    -</html><java>// Create your own custom ConfigurationProvider that will make
    -// your default Factory available to jOOQ
    -ConfigurationProvider provider = new CustomConfigurationProvider();
    -
    -// Statically register the provider to jOOQ's ConfigurationRegistry
    -ConfigurationRegistry.setProvider(provider);</java><html>
    -
    -							<p>Once you have executed these steps, all subsequent deserialisations
    -								will try to access a Configuration (containing a JDBC Connection) from
    -								your ConfigurationProvider. This may be useful when </p>
    -							<ul>
    -								<li>transporting jOOQ QueryParts or Records via TCP/IP, RMI, etc (e.g.
    -									between client and server), before immediately executing queries,
    -									storing UpdatableRecords</li>
    -								<li>
    -									Using automatic mechanisms as known in
    -									<a href="http://wicket.apache.org/">Wicket</a>
    -								</li>
    -							</ul>
    -						</html></content>
    -					</section>
    -
    -
    -					<section id="Extend">
    -						<title>Extend jOOQ with custom types</title>
    -						<content><html>
    -							<h3>Write your own QueryPart implementations</h3>
    -							<p>If a SQL clause is too complex to express with jOOQ, you can extend
    -								either one of the following types for use directly in a jOOQ query:</p>
    -</html><java>public abstract class CustomField&lt;T&gt; extends AbstractField&lt;T&gt; {
    -  // [...]
    -}
    -public abstract class CustomCondition extends AbstractCondition {
    -  // [...]
    -}</java><html>
    -
    -							<p>These two classes are declared public and covered by integration
    -								tests. When you extend these classes, you will have to provide your
    -								own implementations for the <reference id="QueryPart" title="QueryParts"/>'
    -								bind(<reference class="org.jooq.BindContext" title="BindContext"/>) and
    -								toSQL(<reference class="org.jooq.RenderContext" title="RenderContext"/>) methods:</p>
    -</html><java>// This method must produce valid SQL. If your QueryPart contains other QueryParts, you may delegate SQL code generation to them
    -// in the correct order, passing the render context.
    -//
    -// If context.inline() is true, you must inline all bind variables
    -// If context.inline() is false, you must generate ? for your bind variables
    -public void toSQL(RenderContext context);
    -
    -// This method must bind all bind variables to a PreparedStatement. If your QueryPart contains other QueryParts, you may delegate
    -// variable binding to them in the correct order, passing the bind context.
    -//
    -// Every QueryPart must ensure, that it starts binding its variables at context.nextIndex().
    -public void bind(BindContext context) throws DataAccessException;</java><html>
    -
    -							<p>The above contract may be a bit tricky to understand at first. The
    -								best thing is to check out jOOQ source code and have a look at a
    -								couple of QueryParts, to see how it's done.</p>
    -							<h3>Plain SQL as an alternative</h3>
    -							<p>If you don't need integration of rather complex QueryParts into
    -								jOOQ, then you might be safer using simple
    -								<reference id="SQL" title="Plain SQL"/> functionality,
    -								where you can provide jOOQ with a simple String representation of your
    -								embedded SQL. </p>
    -						</html></content>
    -					</section>
    -				</sections>
    -			</section>
    -
    -
    -
    -
    -			<section id="META">
    -				<title>Meta model code generation</title>
    -				<content><html>
    -					<h3>Overview</h3>
    -					<p>
    -						In the previous chapter, we have seen how to use the
    -						<reference id="Factory" title="Factory"/> in order to create
    -						<reference id="Query" title="Queries"/> and fetch data in
    -						<reference id="Result" title="Results"/>. The strength of jOOQ not
    -						only lies in its object-oriented
    -						<reference id="QueryPart" title="Query model"/>,
    -						but also in the fact
    -						that Java source code is generated from your database schema into the
    -						META data model. jOOQ follows the paradigm, that your database comes
    -						first (see also <a href="&lt;?=$root?&gt;/">home page</a>).
    -						This means that you should not modify
    -						generated source code, but only adapt entities in your database. Every
    -						change in your database is reflected in a corresponding change in your
    -						generated meta-model.
    -					</p>
    -					<p>
    -						Artefacts, such as tables, views, user defined types, sequences, stored
    -						procedures, packages have a corresponding artefact in Java.
    -					</p>
    -				</html></content>
    -
    -
    -				<sections>
    -					<section id="Configuration">
    -						<title>Configuration and setup of the generator</title>
    -						<content><html>
    -							<h3>The deliverables</h3>
    -							<p>
    -								There are three binaries available with jOOQ, to be downloaded from
    -								<a href="https://sourceforge.net/projects/jooq/">SourceForge</a>
    -								or from Maven central:
    -							</p>
    -							<ul>
    -								<li>
    -									<strong>jOOQ.jar</strong>
    -									<br />
    -									The main library that you will include in your application to run jOOQ
    -								</li>
    -								<li>
    -									<strong>jOOQ-meta.jar</strong>
    -									<br />
    -									The utility that you will include in your build to navigate your
    -									database schema for code generation. This can be used as a schema
    -									crawler as well.
    -								</li>
    -								<li>
    -									<strong>jOOQ-codegen.jar</strong>
    -									<br />
    -									The utility that you will include in your build to generate your
    -									database schema
    -								</li>
    -							</ul>
    -
    -							<h3>Dependencies</h3>
    -							<p>All of jOOQ's dependencies are "optional", i.e. you can run
    -								jOOQ without any of those libraries.
    -								For instance, jOOQ maintains an "optional" dependency on log4j and slf4j.
    -								This means, that jOOQ tries to find log4j (and /log4j.xml) or slf4j on the
    -								classpath. If they are not present, then java.util.logging.Logger is
    -								used instead.
    -							</p>
    -							<p>
    -								Other optional dependencies are the JPA API, and the Oracle JDBC driver,
    -								which is needed for Oracle's advanced data types, only
    -							</p>
    -
    -
    -							<h3>Configure jOOQ's code generator</h3>
    -							<p>You need to tell jOOQ some things about your database connection.
    -								Here's an example of how to do it for an Oracle database </p>
    -</html><xml><![CDATA[<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    -<configuration>
    -  <!-- Configure the database connection here -->
    -  <jdbc>
    -    <driver>oracle.jdbc.OracleDriver</driver>
    -    <url>jdbc:oracle:thin:@[your jdbc connection parameters]</url>
    -    <user>[your database user]</user>
    -    <password>[your database password]</password>
    -    <!-- You can also pass user/password and other JDBC properties in the optional properties tag: -->
    -    <properties>
    -      <property><key>user</key><value>[db-user]</value></property>
    -      <property><key>password</key><value>[db-password]</value></property>
    -    </properties>
    -  </jdbc>
    -
    -  <generator>
    -    <database>
    -      <!-- The database dialect from jooq-meta. Available dialects are
    -           named org.util.[database].[database]Database. Known values are:
    -
    -           org.jooq.util.ase.ASEDatabase (to be used with Sybase ASE)
    -           org.jooq.util.cubrid.CUBRIDDatabase
    -           org.jooq.util.db2.DB2Database
    -           org.jooq.util.derby.DerbyDatabase
    -           org.jooq.util.h2.H2Database
    -           org.jooq.util.hsqldb.HSQLDBDatabase
    -           org.jooq.util.ingres.IngresDatabase
    -           org.jooq.util.mysql.MySQLDatabase
    -           org.jooq.util.oracle.OracleDatabase
    -           org.jooq.util.postgres.PostgresDatabase
    -           org.jooq.util.sqlite.SQLiteDatabase
    -           org.jooq.util.sqlserver.SQLServerDatabase
    -           org.jooq.util.sybase.SybaseDatabase (to be used with Sybase SQL Anywhere)
    -
    -           You can also provide your own org.jooq.util.Database implementation
    -           here, if your database is currently not supported -->
    -      <name>org.jooq.util.oracle.OracleDatabase</name>
    -
    -      <!-- All elements that are generated from your schema (several Java
    -           regular expressions, separated by comma) Watch out for
    -           case-sensitivity. Depending on your database, this might be
    -           important! You can create case-insensitive regular expressions
    -           using this syntax: (?i:expr)A comma-separated list of regular
    -           expressions -->
    -      <includes>.*</includes>
    -
    -      <!-- All elements that are excluded from your schema (several Java
    -           regular expressions, separated by comma). Excludes match before
    -           includes -->
    -      <excludes></excludes>
    -
    -      <!-- The schema that is used locally as a source for meta information.
    -           This could be your development schema or the production schema, etc
    -           This cannot be combined with the schemata element.
    -
    -           If left empty, jOOQ will generate all available schemata. See the
    -           manual's next section to learn how to generate several schemata -->
    -      <inputSchema>[your database schema / owner / name]</inputSchema>
    -    </database>
    -
    -    <generate>
    -      <!-- See advanced configuration properties -->
    -    </generate>
    -
    -    <target>
    -      <!-- The destination package of your generated classes (within the
    -           destination directory) -->
    -      <packageName>[org.jooq.your.packagename]</packageName>
    -
    -      <!-- The destination directory of your generated classes -->
    -      <directory>[/path/to/your/dir]</directory>
    -    </target>
    -  </generator>
    -</configuration>]]></xml><html>
    -
    -							<p>
    -								There are also lots of advanced configuration parameters, which will be
    -								treated in the <reference id="AdvancedConfiguration" title="manual's next section"/>
    -								Note, you can find the official XSD file at
    -							   <a href="http://www.jooq.org/xsd/jooq-codegen-2.1.0.xsd" title="The jOOQ-codegen configuration XSD">http://www.jooq.org/xsd/jooq-codegen-2.1.0.xsd</a>
    -							   for a formal specification</p>
    -
    -							<h3>Run jOOQ code generation</h3>
    -							<p>Code generation works by calling this class with the above property file as argument.</p>
    -							</html><config>org.jooq.util.GenerationTool /jooq-config.xml</config><html>
    -							<p>Be sure that these elements are located on the classpath: </p>
    -							<ul>
    -								<li>The property file</li>
    -								<li>jooq.jar, jooq-meta.jar, jooq-codegen.jar</li>
    -								<li>The JDBC driver you configured</li>
    -							</ul>
    -
    -							<h3>A command-line example (For Windows, unix/linux/etc will be similar)</h3>
    -							<ul>
    -								<li>Put the property file, jooq*.jar and the JDBC driver into
    -									a directory, e.g. C:\temp\jooq</li>
    -							    <li>Go to C:\temp\jooq</li>
    -							    <li>Run java -cp jooq.jar;jooq-meta.jar;jooq-codegen.jar;[JDBC-driver].jar;. org.jooq.util.GenerationTool /[property file] </li>
    -							</ul>
    -							<p>Note that the property file must be passed as a classpath resource</p>
    -
    -							<h3>Run code generation from Eclipse</h3>
    -							<p>Of course, you can also run code generation from your IDE. In
    -								Eclipse, set up a project like this. Note that this example uses
    -								jOOQ's log4j support by adding log4j.xml and log4j.jar to the project
    -								classpath: </p>
    -							<div class="screenshot">
    -							<img class="screenshot" src="&lt;?=$root?&gt;/img/eclipse-example-01.png" alt="Eclipse configuration"/>
    -							</div>
    -
    -							<p>Once the project is set up correctly with all required artefacts on
    -								the classpath, you can configure an Eclipse Run Configuration for
    -								org.jooq.util.GenerationTool. </p>
    -							<div class="screenshot">
    -							<img class="screenshot" src="&lt;?=$root?&gt;/img/eclipse-example-02.png" alt="Eclipse configuration"/>
    -							</div>
    -
    -							<p>With the properties file as an argument </p>
    -							<div class="screenshot">
    -							<img class="screenshot" src="&lt;?=$root?&gt;/img/eclipse-example-03.png" alt="Eclipse configuration"/>
    -							</div>
    -
    -							<p>And the classpath set up correctly</p>
    -							<div class="screenshot">
    -							<img class="screenshot" src="&lt;?=$root?&gt;/img/eclipse-example-04.png" alt="Eclipse configuration"/>
    -							</div>
    -
    -							<p>Finally, run the code generation and see your generated artefacts</p>
    -							<div class="screenshot">
    -							<img class="screenshot" src="&lt;?=$root?&gt;/img/eclipse-example-05.png" alt="Eclipse configuration"/>
    -							</div>
    -
    -							<h3>Run generation with ant</h3>
    -							<p>
    -								You can also use an ant task to generate your classes. As a rule of thumb,
    -								remove the dots "." and dashes "-" from the .properties file's property names to get the
    -								ant task's arguments:
    -							</p>
    -</html><xml><![CDATA[<!-- Task definition -->
    -<taskdef name="generate-classes" classname="org.jooq.util.GenerationTask">
    -  <classpath>
    -    <fileset dir="${path.to.jooq.distribution}">
    -      <include name="jOOQ.jar"/>
    -      <include name="jOOQ-meta.jar"/>
    -      <include name="jOOQ-codegen.jar"/>
    -    </fileset>
    -    <fileset dir="${path.to.mysql.driver}">
    -      <include name="${mysql.driver}.jar"/>
    -    </fileset>
    -  </classpath>
    -</taskdef>
    -
    -<!-- Run the code generation task -->
    -<target name="generate-test-classes">
    -  <generate-classes
    -      jdbcurl="jdbc:mysql://localhost/test"
    -      jdbcuser="root"
    -      jdbcpassword=""
    -      generatordatabaseinputschema="test"
    -      generatortargetpackage="org.jooq.test.generatedclasses"
    -      generatortargetdirectory="${basedir}/src"/>
    -</target>]]></xml><html>
    -
    -							<p>
    -								Note that when running code generation with ant's &lt;java/&gt; task,
    -								you may have to set fork="true":
    -							</p>
    -
    -</html><xml><![CDATA[<!-- Run the code generation task -->
    -<target name="generate-test-classes">
    -  <java fork="true" classname="org.jooq.util.GenerationTool">
    -    [...]
    -  </java><html>
    -</target>
    -]]></xml><html>
    -							<h3>Integrate generation with Maven</h3>
    -							<p>Using the official jOOQ-codegen-maven plugin, you can integrate
    -								source code generation in your Maven build process: </p>
    -
    -</html><xml><![CDATA[<plugin>
    -
    -  <!-- Specify the maven code generator plugin -->
    -  <groupId>org.jooq</groupId>
    -  <artifactId>jooq-codegen-maven</artifactId>
    -  <version>2.4.2</version>
    -
    -  <!-- The plugin should hook into the generate goal -->
    -  <executions>
    -    <execution>
    -      <goals>
    -        <goal>generate</goal>
    -      </goals>
    -    </execution>
    -  </executions>
    -
    -  <!-- Manage the plugin's dependency. In this example, we'll use a PostgreSQL database -->
    -  <dependencies>
    -    <dependency>
    -      <groupId>postgresql</groupId>
    -      <artifactId>postgresql</artifactId>
    -      <version>8.4-702.jdbc4</version>
    -    </dependency>
    -  </dependencies>
    -
    -  <!-- Specify the plugin configuration.
    -       The configuration format is the same as for the standalone code generator -->
    -  <configuration>
    -
    -    <!-- JDBC connection parameters -->
    -    <jdbc>
    -      <driver>org.postgresql.Driver</driver>
    -      <url>jdbc:postgresql:postgres</url>
    -      <user>postgres</user>
    -      <password>test</password>
    -    </jdbc>
    -
    -    <!-- Generator parameters -->
    -    <generator>
    -      <name>org.jooq.util.DefaultGenerator</name>
    -      <database>
    -        <name>org.jooq.util.postgres.PostgresDatabase</name>
    -        <includes>.*</includes>
    -        <excludes></excludes>
    -        <inputSchema>public</inputSchema>
    -      </database>
    -      <generate>
    -        <relations>true</relations>
    -        <deprecated>false</deprecated>
    -      </generate>
    -      <target>
    -        <packageName>org.jooq.util.maven.example</packageName>
    -        <directory>target/generated-sources/jooq</directory>
    -      </target>
    -    </generator>
    -  </configuration>
    -</plugin>
    -]]></xml><html>
    -							<p>See the full example of a pom.xml including the jOOQ-codegen artefact here:
    -							<a href="https://github.com/jOOQ/jOOQ/blob/master/jOOQ-codegen-maven-example/pom.xml"
    -							  title="jOOQ-codegen-maven example pom.xml file">https://github.com/jOOQ/jOOQ/blob/master/jOOQ-codegen-maven-example/pom.xml</a></p>
    -
    -                            <h3>Migrate properties files from jOOQ 1.7, early versions of jOOQ 2.0.x:</h3>
    -                            <p>
    -                                Before jOOQ 2.0.4, the code generator was configured using properties files
    -                                These files are still supported for source code generation, but their syntax
    -                                won't be maintained any longer. If you wish to migrate to XML, you can
    -                                migrate the file using this command on the command line
    -                            </p>
    -							</html><config>org.jooq.util.GenerationTool /jooq-config.properties migrate</config><html>
    -							<p>
    -								Using the migrate flag, jOOQ will read the properties file and output
    -								a corresponding XML file on system out
    -							</p>
    -
    -							<h3>Use jOOQ generated classes in your application</h3>
    -							<p>Be sure, both jOOQ.jar and your generated package (see
    -								configuration) are located on your classpath. Once this is done, you
    -								can execute SQL statements with your generated classes.</p>
    -						</html></content>
    -					</section>
    -
    -
    -					<section id="AdvancedConfiguration">
    -					    <title>Advanced generator configuration</title>
    -						<content><html>
    -							<h3>Code generation</h3>
    -							<p>
    -								In the <reference id="Configuration" title="previous section"/>
    -								we have seen how jOOQ's source code generator is configured and
    -								run within a few steps. In this chapter we'll treat some advanced
    -								settings
    -							</p>
    -
    -</html><xml><![CDATA[<!-- These properties can be added directly to the generator element: -->
    -<generator>
    -  <!-- The default code generator. You can override this one, to generate your own code style
    -       Defaults to org.jooq.util.DefaultGenerator -->
    -  <name>org.jooq.util.DefaultGenerator</name>
    -
    -  <!-- The naming strategy used for class and field names.
    -       You may override this with your custom naming strategy. Some examples follow
    -       Defaults to org.jooq.util.DefaultGeneratorStrategy -->
    -  <strategy>
    -    <name>org.jooq.util.DefaultGeneratorStrategy</name>
    -  </strategy>
    -</generator>]]></xml><html>
    -
    -							<p>
    -								The following example shows how you can override the
    -								DefaultGeneratorStrategy to render table and column names the way
    -								they are defined in the database, rather than switching them to
    -								camel case:
    -							</p>
    -
    -</html><java><![CDATA[/**
    - * It is recommended that you extend the DefaultGeneratorStrategy. Most of the
    - * GeneratorStrategy API is already declared final. You only need to override any
    - * of the following methods, for whatever generation behaviour you'd like to achieve
    - *
    - * Beware that most methods also receive a "Mode" object, to tell you whether a
    - * TableDefinition is being rendered as a Table, Record, POJO, etc. Depending on
    - * that information, you can add a suffix only for TableRecords, not for Tables
    - */
    -public class AsInDatabaseStrategy extends DefaultGeneratorStrategy {
    -
    -    /**
    -     * Override this to specifiy what identifiers in Java should look like.
    -     * This will just take the identifier as defined in the database.
    -     */
    -    @Override
    -    public String getJavaIdentifier(Definition definition) {
    -        return definition.getOutputName();
    -    }
    -
    -    /**
    -     * Override these to specify what a setter in Java should look like. Setters
    -     * are used in TableRecords, UDTRecords, and POJOs. This example will name
    -     * setters "set[NAME_IN_DATABASE]"
    -     */
    -    @Override
    -    public String getJavaSetterName(Definition definition, Mode mode) {
    -        return "set" + definition.getOutputName();
    -    }
    -
    -    /**
    -     * Just like setters...
    -     */
    -    @Override
    -    public String getJavaGetterName(Definition definition, Mode mode) {
    -        return "get" + definition.getOutputName();
    -    }
    -
    -    /**
    -     * Override this method to define what a Java method generated from a database
    -     * Definition should look like. This is used mostly for convenience methods
    -     * when calling stored procedures and functions. This example shows how to
    -     * set a prefix to a CamelCase version of your procedure
    -     */
    -    @Override
    -    public String getJavaMethodName(Definition definition, Mode mode) {
    -        return "call" + org.jooq.tools.StringUtils.toCamelCase(definition.getOutputName());
    -    }
    -
    -    /**
    -     * Override this method to define how your Java classes and Java files should
    -     * be named. This example applies no custom setting and uses CamelCase versions
    -     * instead
    -     */
    -    @Override
    -    public String getJavaClassName(Definition definition, Mode mode) {
    -        return super.getJavaClassName(definition, mode);
    -    }
    -
    -    /**
    -     * Override this method to re-define the package names of your generated
    -     * artefacts.
    -     */
    -    @Override
    -    public String getJavaPackageName(Definition definition, Mode mode) {
    -        return super.getJavaPackageName(definition, mode);
    -    }
    -
    -    /**
    -     * Override this method to define how Java members should be named. This is
    -     * used for POJOs and method arguments
    -     */
    -    @Override
    -    public String getJavaMemberName(Definition definition, Mode mode) {
    -        return definition.getOutputName();
    -    }
    -
    -    /**
    -     * Override this method to define the base class for those artefacts that
    -     * allow for custom base classes
    -     */
    -    @Override
    -    public String getJavaClassExtends(Definition definition, Mode mode) {
    -        return Object.class.getName();
    -    }
    -
    -    /**
    -     * Override this method to define the interfaces to be implemented by those
    -     * artefacts that allow for custom interface implementation
    -     */
    -    @Override
    -    public List<String> getJavaClassImplements(Definition definition, Mode mode) {
    -        return Arrays.asList(Serializable.class.getName(), Cloneable.class.getName());
    -    }
    -
    -    /**
    -     * Override this method to define the suffix to apply to routines when
    -     * they are overloaded.
    -     *
    -     * Use this to resolve compile-time conflicts in generated source code, in
    -     * case you make heavy use of procedure overloading
    -     */
    -    @Override
    -    public String getOverloadSuffix(Definition definition, Mode mode, String overloadIndex) {
    -        return "_OverloadIndex_" + overloadIndex;
    -    }
    -}]]></java><html>
    -
    -                            <h3>jooq-meta configuration</h3>
    -							<p>
    -								Within the &lt;generator/&gt; element, there are other configuration elements:
    -							</p>
    -
    -</html><xml><![CDATA[<!-- These properties can be added to the database element: -->
    -<database>
    -  <!-- Generate java.sql.Timestamp fields for DATE columns. This is
    -       particularly useful for Oracle databases.
    -       Defaults to false -->
    -  <dateAsTimestamp>false</dateAsTimestamp>
    -
    -  <!-- Generate jOOU data types for your unsigned data types, which are
    -       not natively supported in Java.
    -       Defaults to true -->
    -  <unsignedTypes>true</unsignedTypes>
    -
    -  <!-- The schema that is used in generated source code. This will be the
    -       production schema. Use this to override your local development
    -       schema name for source code generation. If not specified, this
    -       will be the same as the input-schema. -->
    -  <outputSchema>[your database schema / owner / name]</outputSchema>
    -
    -  <!-- A configuration element to configure several input and/or output
    -       schemata for jooq-meta, in case you're using jooq-meta in a multi-
    -       schema environment.
    -       This cannot be combined with the above inputSchema / outputSchema -->
    -  <schemata>
    -    <schema>
    -      <inputSchema>...</inputSchema>
    -      <outputSchema>...</outputSchema>
    -    </schema>
    -    [ <schema>...</schema> ... ]
    -  </schemata>
    -
    -  <!-- A configuration element to configure master data table enum classes -->
    -  <masterDataTables>...</masterDataTables>
    -
    -  <!-- A configuration element to configure custom data types -->
    -  <customTypes>...</customTypes>
    -
    -  <!-- A configuration element to configure type overrides for generated
    -       artefacts (e.g. in combination with customTypes) -->
    -  <forcedTypes>...</forcedTypes>
    -</database>]]></xml><html>
    -
    -							<p>
    -								Check out the some of the manual's "advanced" sections
    -								to find out more about the advanced configuration parameters.
    -							</p>
    -							<ul>
    -								<li><reference id="SchemaMapping" title="Schema mapping"/></li>
    -								<li><reference id="MasterData" title="Master data types"/></li>
    -								<li><reference id="CustomTypes" title="Custom types"/></li>
    -							</ul>
    -
    -							<h3>jooq-codegen configuration</h3>
    -                            <p>Also, you can add some optional advanced configuration parameters for the generator: </p>
    -
    -</html><xml><![CDATA[<!-- These properties can be added to the generate element: -->
    -<generate>
    -  <!-- Primary key / foreign key relations should be generated and used.
    -       This is a prerequisite for various advanced features.
    -       Defaults to false -->
    -  <relations>false</relations>
    -
    -  <!-- Generate navigation methods to navigate foreign key relationships
    -       directly from Record classes. This is only relevant if relations
    -       is set to true, too.
    -       Defaults to true -->
    -  <navigationMethods>true</navigationMethods>
    -
    -  <!-- Generate deprecated code for backwards compatibility
    -       Defaults to true -->
    -  <deprecated>true</deprecated>
    -
    -  <!-- Generate instance fields in your tables, as opposed to static
    -       fields. This simplifies aliasing.
    -       Defaults to true -->
    -  <instanceFields>true</instanceFields>
    -
    -  <!-- Generate the javax.annotation.Generated annotation to indicate
    -       jOOQ version used for source code.
    -       Defaults to true -->
    -  <generatedAnnotation>true</generatedAnnotation>
    -
    -  <!-- Generate jOOQ Record classes for type-safe querying. You can
    -       turn this off, if you don't need "active records" for CRUD
    -       Defaults to true -->
    -  <records>true</records>
    -
    -  <!-- Generate POJOs in addition to Record classes for usage of the
    -       ResultQuery.fetchInto(Class) API
    -       Defaults to false -->
    -  <pojos>false</pojos>
    -
    -  <!-- Generate interfaces that will be implemented by records and/or pojos.
    -       You can also use these interfaces in Record.into(Class<?>) and similar
    -       methods, to let jOOQ return proxy objects for them.
    -       Defaults to false -->
    -  <interfaces>false</interfaces>
    -
    -  <!-- Generate DAOs in addition to POJO classes
    -       Defaults to false -->
    -  <daos>false</daos>
    -
    -  <!-- Annotate POJOs and Records with JPA annotations for increased
    -       compatibility and better integration with JPA/Hibernate, etc
    -       Defaults to false -->
    -  <jpaAnnotations>false</jpaAnnotations>
    -
    -  <!-- Annotate POJOs and Records with JSR-303 validation annotations
    -       Defaults to false -->
    -  <validationAnnotations>false</validationAnnotations>
    -</generate>]]></xml></content>
    -					</section>
    -
    -
    -					<section id="SCHEMA">
    -						<title>The schema, top-level generated artefact</title>
    -						<content><html>
    -							<h3>The Schema</h3>
    -							<p>
    -								As of jOOQ 1.5, the top-level generated object is the
    -								<reference class="org.jooq.Schema" />.
    -								The Schema itself has no relevant functionality, except for holding
    -								the schema name for all dependent generated artefacts. jOOQ queries try
    -								to always fully qualify an entity within the database using that Schema
    -							</p>
    -
    -							<p>
    -								Currently, it is not possible to link generated artefacts from various
    -								schemata. If you have a stored function from Schema A, which returns a
    -								UDT from Schema B, the types cannot be linked. This enhancement is on
    -								the roadmap, though: <reference ticket="282"/>.
    -							</p>
    -
    -							<p>
    -								When you have several schemata that are logically equivalent (i.e. they
    -								contain identical entities, but the schemata stand for different
    -								users/customers/clients, etc), there is a solution for that. Check out
    -								the manual's section on support for
    -								<reference id="SchemaMapping" title="multiple equivalent schemata"/>
    -							</p>
    -
    -							<h3>Schema contents</h3>
    -							<p>The schema can be used to dynamically discover generate database
    -								artefacts. Tables, sequences, and other items are accessible from the
    -								schema. For example:</p>
    -</html><java>public final java.util.List&lt;org.jooq.Sequence&lt;?&gt;&gt; getSequences();
    -public final java.util.List&lt;org.jooq.Table&lt;?&gt;&gt; getTables();</java></content>
    -					</section>
    -
    -
    -					<section id="TABLE">
    -						<title>Tables, views and their records</title>
    -						<content><html>
    -							<h3>Tables and TableRecords</h3>
    -							<p>
    -								The most important generated artefacts are
    -								<reference class="org.jooq.Table" title="Tables"/> and
    -								<reference class="org.jooq.TableRecord" title="TableRecords"/>. As
    -								discussed in previous chapters about
    -								<reference id="Table" title="Tables"/> and
    -								<reference id="Result" title="Results"/>, jOOQ uses the
    -								Table class to model entities (both tables and views) in your database
    -								Schema. Every Table has a Record type associated with it that models a
    -								single tuple of that entity: Table&lt;R extends Record&gt;. This
    -								couple of Table&lt;R&gt; and R are generated as such:
    -							</p>
    -							<p>
    -								Suppose we have the tables as defined in the
    -								<reference id="ExampleDatabase" title="example database"/>.
    -								Then, using a
    -								default configuration, these (simplified for the example) classes will
    -								be generated:
    -							</p>
    -
    -							<h3>The Table as an entity meta model</h3>
    -</html><java>public class TAuthor extends UpdatableTableImpl&lt;TAuthorRecord&gt; {
    -
    -    // The singleton instance of the Table
    -    public static final TAuthor T_AUTHOR = new TAuthor();
    -
    -    // The Table's fields.
    -    // Depending on your jooq-codegen configuraiton, they can also be static
    -    public final TableField&lt;TAuthorRecord, Integer&gt; ID =            // [...]
    -    public final TableField&lt;TAuthorRecord, String&gt; FIRST_NAME =     // [...]
    -    public final TableField&lt;TAuthorRecord, String&gt; LAST_NAME =      // [...]
    -    public final TableField&lt;TAuthorRecord, Date&gt; DATE_OF_BIRTH =    // [...]
    -    public final TableField&lt;TAuthorRecord, Integer&gt; YEAR_OF_BIRTH = // [...]
    -
    -    // When you don't choose the static meta model, you can typesafely alias your tables.
    -    // Aliased tables will then hold references to the above final fields, too
    -    public TAuthor as(String alias) {
    -      // [...]
    -    }
    -}</java><html>
    -
    -							<h3>The Table's associated TableRecord</h3>
    -							<p>If you use the
    -								<reference id="Query" title="SimpleSelectQuery"/>
    -								 syntax (both in standard and DSL
    -								mode), then your SELECT statement will return the single Table&lt;R
    -								extends Record&gt;'s associated Record type &lt;R&gt;. In the case of
    -								the above TAuthor Table, this will be a TAuthorRecord. </p>
    -
    -</html><java>public class TAuthorRecord extends UpdatableRecordImpl&lt;TAuthorRecord&gt; {
    -
    -    // Getters and setters for the various fields
    -    public void setId(Integer value) {       // [...]
    -    public Integer getId() {                 // [...]
    -    public void setFirstName(String value) { // [...]
    -    public String getFirstName() {           // [...]
    -    public void setLastName(String value) {  // [...]
    -    public String getLastName() {            // [...]
    -    public void setDateOfBirth(Date value) { // [...]
    -    public Date getDateOfBirth() {           // [...]
    -
    -    // Navigation methods for foreign keys
    -    public List&lt;TBookRecord&gt; fetchTBooks() { // [...]
    -}</java><html>
    -
    -
    -							<h3>Generated or custom POJO's instead of jOOQ's Records</h3>
    -							<p>
    -								If you're using jOOQ along with Hibernate / JPA, or if you
    -								want to use your own, custom domain-model instead of jOOQ's
    -								Record type-hierarchy, you can choose to select values into
    -								POJOs. Let's say you defined a POJO for authors:
    -							</p>
    -
    -</html><java><![CDATA[package com.example;
    -
    -import javax.persistence.Column;
    -import javax.persistence.Entity;
    -
    -@Entity
    -public class MyAuthor {
    -    // Some fields may be public
    -    @Column(name = "ID")
    -    public int id;
    -
    -    // Others are private and have associated getters / setters:
    -    private String firstName;
    -    private String lastName;
    -
    -    public void setFirstName(String firstName) {
    -        this.firstName = firstName;
    -    }
    -
    -    @Column(name = "FIRST_NAME")
    -    public String getFirstName() {
    -        return firstName;
    -    }
    -
    -    public void setLastName(String lastName) {
    -        this.lastName = lastName;
    -    }
    -
    -    @Column(name = "LAST_NAME")
    -    public String getLastName() {
    -        return lastName;
    -    }
    -}]]></java><html>
    -
    -                            <p>
    -                            	The above could be your custom POJO or a POJO generated
    -                            	by jooq-codegen (see
    -                            	<reference id="AdvancedConfiguration" title="the manual's section about advanced codegen configuration"/>
    -                            	for more details). Also, JPA-annotations are not necessary
    -                            	if you wish to let jOOQ map record columns onto your POJO
    -                            	attributes by convention. Instead of fetching records normally,
    -                            	you can now let jOOQ fetch records "into" your custom type:
    -                            </p>
    -
    -</html><java><![CDATA[List<MyAuthor> results = create.select().from(TAuthor.T_AUTHOR).fetchInto(MyAuthor.class);]]></java><html>
    -
    -							<p>
    -								Read the javadoc for
    -								<a href="http://www.jooq.org/javadoc/latest/org/jooq/Record.html#into%28java.lang.Class%29" title="Record.into() javadoc, explaining about how to map jOOQ Records onto custom types">Record.into()</a>
    -								for more details.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -
    -					<section id="PROCEDURE">
    -						<title>Procedures and packages</title>
    -						<content><html>
    -							<h3>Stored procedures in modern RDBMS</h3>
    -							<p>This is one of the most important reasons why you should consider
    -								jOOQ. Read also my
    -								<a href="http://java.dzone.com/articles/2011-great-year-stored" title="Article on stored procedures and how to use them with jOOQ">article on dzone</a>
    -								about why stored procedures become
    -								more and more important in future versions of RDMBS. In this section
    -								of the manual, we will learn how jOOQ handles stored procedures in
    -								code generation. Especially before
    -								<reference id="UDT" title="UDT and ARRAY support"/> was
    -								introduced to major RDBMS, these procedures tend to have dozens of
    -								parameters, with IN, OUT, IN OUT parameters mixed in all variations.
    -								JDBC only knows very basic, low-level support for those constructs.
    -								jOOQ heavily facilitates the use of stored procedures and functions
    -								via its source code generation. Essentially, it comes down to this:
    -							</p>
    -
    -							<h3>"Standalone" stored procedures and functions</h3>
    -							<p>Let's say you have these stored procedures and functions in your Oracle database </p>
    -</html><sql>-- Check whether there is an author in T_AUTHOR by that name
    -CREATE OR REPLACE FUNCTION f_author_exists (author_name VARCHAR2) RETURN NUMBER;
    -
    --- Check whether there is an author in T_AUTHOR by that name
    -CREATE OR REPLACE PROCEDURE p_author_exists (author_name VARCHAR2, result OUT NUMBER);
    -
    --- Check whether there is an author in T_AUTHOR by that name and get his ID
    -CREATE OR REPLACE PROCEDURE p_author_exists_2 (author_name VARCHAR2, result OUT NUMBER, id OUT NUMBER);</sql><html>
    -
    -							<p>jOOQ will essentially generate two artefacts for every procedure/function: </p>
    -							<ul>
    -								<li>A class holding a formal Java representation of the procedure/function</li>
    -    							<li>Some convenience methods to facilitate calling that procedure/function </li>
    -							</ul>
    -							<p>Let's see what these things look like, in Java. The classes (simplified for the example): </p>
    -
    -</html><java>// The function has a generic type parameter &lt;T&gt; bound to its return value
    -public class FAuthorExists extends org.jooq.impl.AbstractRoutine&lt;BigDecimal&gt; {
    -
    -    // Much like Tables, functions have static parameter definitions
    -    public static final Parameter&lt;String&gt; AUTHOR_NAME = // [...]
    -
    -    // And much like TableRecords, they have setters for their parameters
    -    public void setAuthorName(String value) { // [...]
    -    public void setAuthorName(Field&lt;String&gt; value) { // [...]
    -}
    -
    -public class PAuthorExists extends org.jooq.impl.AbstractRoutine&lt;java.lang.Void&gt; {
    -
    -    // In procedures, IN, OUT, IN OUT parameters are all represented
    -    // as static parameter definitions as well
    -    public static final Parameter&lt;String&gt; AUTHOR_NAME = // [...]
    -    public static final Parameter&lt;BigDecimal&gt; RESULT = // [...]
    -
    -    // IN and IN OUT parameters have generated setters
    -    public void setAuthorName(String value) { // [...]
    -
    -    // OUT and IN OUT parameters have generated getters
    -    public BigDecimal getResult() { // [...]
    -}
    -
    -public class PAuthorExists_2 extends org.jooq.impl.AbstractRoutine&lt;java.lang.Void&gt; {
    -    public static final Parameter&lt;String&gt; AUTHOR_NAME = // [...]
    -    public static final Parameter&lt;BigDecimal&gt; RESULT = // [...]
    -    public static final Parameter&lt;BigDecimal&gt; ID = // [...]
    -
    -    // the setters...
    -    public void setAuthorName(String value) { // [...]
    -
    -    // the getters...
    -    public BigDecimal getResult() { // [...]
    -    public BigDecimal getId() { // [...]
    -}</java><html>
    -
    -							<p>An example invocation of such a stored procedure might look like this: </p>
    -
    -</html><java>PAuthorExists p = new PAuthorExists();
    -p.setAuthorName("Paulo");
    -p.execute(configuration);
    -assertEquals(BigDecimal.ONE, p.getResult());</java><html>
    -
    -							<p>
    -								The above configuration is a
    -								<reference id="Factory" title="Factory"/>,
    -								holding a reference to a JDBC connection, as discussed in a previous section.
    -
    -								If you use the generated convenience methods, however, things are much simpler, still:
    -							</p>
    -</html><java>// Every schema has a single Routines class with convenience methods
    -public final class Routines {
    -
    -    // Convenience method to directly call the stored function
    -    public static BigDecimal fAuthorExists(Configuration configuration, String authorName) { // [...]
    -
    -    // Convenience methods to transform the stored function into a
    -    // Field&lt;BigDecimal&gt;, such that it can be used in SQL
    -    public static Field&lt;BigDecimal&gt; fAuthorExists(Field&lt;String&gt; authorName) { // [...]
    -    public static Field&lt;BigDecimal&gt; fAuthorExists(String authorName) { // [...]
    -
    -    // Procedures with 0 OUT parameters create void methods
    -    // Procedures with 1 OUT parameter create methods as such:
    -    public static BigDecimal pAuthorExists(Configuration configuration, String authorName) { // [...]
    -
    -    // Procedures with more than 1 OUT parameter return the procedure
    -    // object (see above example)
    -    public static PAuthorExists_2 pAuthorExists_2(Configuration configuration, String authorName) { // [...]
    -}</java><html>
    -
    -							<p>An sample invocation, equivalent to the previous example:</p>
    -</html><java>assertEquals(BigDecimal.ONE, Procedures.pAuthorExists(configuration, "Paulo"));</java><html>
    -
    -
    -							<h3>jOOQ's understanding of procedures vs functions</h3>
    -							<p>
    -								jOOQ does not formally distinguish procedures from functions.
    -								jOOQ only knows about routines, which can have return values
    -								and/or OUT parameters. This is the best option to handle the
    -								variety of stored procedure / function support across the
    -								various supported RDBMS. For more details, read on about this
    -								topic, here:
    -							</p>
    -							<p>
    -								<a href="http://blog.jooq.org/2011/10/17/what-are-procedures-and-functions-after-all/" title="Blog post about the difference between procedures and functions in various RDBMS">blog.jooq.org/2011/10/17/what-are-procedures-and-functions-after-all/</a>
    -							</p>
    -
    -							<h3>Packages in Oracle</h3>
    -							<p>
    -								Oracle uses the concept of a PACKAGE to group several
    -								procedures/functions into a sort of namespace. The
    -								<a href="http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt"
    -									title="SQL 92 standard">SQL standard</a>
    -								talks about "modules", to represent this concept, even if this is
    -								rarely implemented. This is reflected in jOOQ by the use of Java
    -								sub-packages in the source code generation destination package. Every
    -								Oracle package will be reflected by
    -							</p>
    -							<ul>
    -								<li>A Java package holding classes for formal Java representations of
    -									the procedure/function in that package
    -								</li>
    -								<li>A Java class holding convenience methods to facilitate calling
    -									those procedures/functions
    -								</li>
    -							</ul>
    -							<p>
    -								Apart from this, the generated source code looks exactly like the
    -								one for
    -								standalone procedures/functions.
    -							</p>
    -
    -							<h3>Member functions and procedures in Oracle</h3>
    -							<p>
    -								Oracle UDT's can have object-oriented structures including member functions
    -								and procedures. With Oracle, you can do things like this:
    -							</p>
    -</html><sql>CREATE OR REPLACE TYPE u_author_type AS OBJECT (
    -  id NUMBER(7),
    -  first_name VARCHAR2(50),
    -  last_name VARCHAR2(50),
    -
    -  MEMBER PROCEDURE LOAD,
    -  MEMBER FUNCTION count_books RETURN NUMBER
    -)
    -
    --- The type body is omitted for the example
    -</sql><html>
    -
    -							<p>
    -								These member functions and procedures can simply be mapped to Java
    -								methods:
    -							</p>
    -
    -</html><java>
    -// Create an empty, attached UDT record from the Factory
    -UAuthorType author = create.newRecord(U_AUTHOR_TYPE);
    -
    -// Set the author ID and load the record using the LOAD procedure
    -author.setId(1);
    -author.load();
    -
    -// The record is now updated with the LOAD implementation's content
    -assertNotNull(author.getFirstName());
    -assertNotNull(author.getLastName());</java><html>
    -
    -							<p>For more details about UDT's see the Manual's section on
    -							<reference id="UDT" title="User Defined Types"/></p>
    -
    -						</html></content>
    -					</section>
    -
    -
    -					<section id="UDT">
    -						<title>UDT's including ARRAY and ENUM types</title>
    -						<content><html>
    -							<h3>Increased RDBMS support for UDT's</h3>
    -							<p>
    -								In recent years, most RDBMS have started to implement some support for
    -								advanced data types. This support has not been adopted very well by
    -								database users in the Java world, for several reasons:
    -							</p>
    -							<ul>
    -								<li>They are usually orthogonal to relational concepts. It is not easy
    -									to modify a UDT once it is referenced by a table column.</li>
    -								<li>There is little standard support of accessing them from JDBC (and
    -									probably other database connectivity standards). </li>
    -							</ul>
    -							<p>
    -								On the other hand, especially with stored procedures, these data types
    -								are likely to become more and more useful in the future. If you have a
    -								look at Postgres' capabilities of dealing with advanced data types
    -								(<a href="http://www.postgresql.org/docs/9.0/interactive/datatype-enum.html">ENUMs</a>,
    -								<a href="http://www.postgresql.org/docs/9.0/interactive/arrays.html">ARRAYs</a>,
    -								<a href="http://www.postgresql.org/docs/9.0/interactive/rowtypes.html">UDT's</a>),
    -								 this becomes more and more obvious.
    -							</p>
    -							<p>It is a central strategy for jOOQ, to standardise access to these
    -								kinds of types (as well as to
    -								<reference id="PROCEDURE" title="stored procedures"/>, of course) across all
    -								RDBMS, where these types are supported. </p>
    -
    -							<h3>UDT types</h3>
    -							<p>User Defined Types (UDT) are helpful in major RDMBS with lots
    -							of proprietary functionality. The biggest player is clearly Oracle.
    -							Currently, jOOQ provides UDT support for only two databases: </p>
    -							<ul>
    -								<li>Oracle</li>
    -								<li>Postgres</li>
    -							</ul>
    -							<p>Apart from that, </p>
    -							<ul>
    -								<li>
    -									DB2 UDT's are not supported as they are very tough to
    -									serialise/deserialise. We don't think that this is a big enough
    -									requirement to put more effort in those, right now (see also the
    -									developers' discussion on
    -									<reference ticket="164" />)
    -								</li>
    -							</ul>
    -
    -							<p>In Oracle, you would define UDTs like this: </p>
    -</html><sql>CREATE TYPE u_street_type AS OBJECT (
    -  street VARCHAR2(100),
    -  no VARCHAR2(30)
    -)
    -
    -CREATE TYPE u_address_type AS OBJECT (
    -  street u_street_type,
    -  zip VARCHAR2(50),
    -  city VARCHAR2(50),
    -  country VARCHAR2(50),
    -  since DATE,
    -  code NUMBER(7)
    -)</sql><html>
    -
    -							<p>These types could then be used in tables and/or stored procedures like such: </p>
    -</html><sql>CREATE TABLE t_author (
    -  id NUMBER(7) NOT NULL PRIMARY KEY,
    -  -- [...]
    -  address u_address_type
    -)
    -
    -CREATE OR REPLACE PROCEDURE p_check_address (address IN OUT u_address_type);</sql><html>
    -
    -							<p>
    -								Standard JDBC UDT support encourages JDBC-driver developers to implement
    -								interfaces such as
    -								<reference class="java.sql.SQLData"/>,
    -								<reference class="java.sql.SQLInput"/> and
    -								<reference class="java.sql.SQLOutput"/>.
    -								Those interfaces are non-trivial to implement, or
    -								to hook into. Also access to
    -								<reference class="java.sql.Struct"/>
    -								is not really simple. Due
    -								to the lack of a well-defined JDBC standard, Oracle's JDBC driver
    -								rolls their own proprietary methods of dealing with these types. jOOQ
    -								goes a different way, it hides those facts from you entirely. With
    -								jOOQ, the above UDT's will be generated in simple
    -								<reference class="org.jooq.UDT" title="UDT meta-model classes"/> and
    -								<reference class="org.jooq.UDTRecord" title="UDT record classes"/> as such:
    -							</p>
    -</html><java>// There is an analogy between UDT/Table and UDTRecord/TableRecord...
    -public class UAddressType extends UDTImpl&lt;UAddressTypeRecord&gt; {
    -
    -    // The UDT meta-model singleton instance
    -    public static final UAddressType U_ADDRESS_TYPE = new UAddressType();
    -
    -    // UDT attributes are modeled as static members. Nested UDT's
    -    // behave similarly
    -    public static final UDTField&lt;UAddressTypeRecord, UStreetTypeRecord&gt; STREET = // [...]
    -    public static final UDTField&lt;UAddressTypeRecord, String&gt; ZIP =               // [...]
    -    public static final UDTField&lt;UAddressTypeRecord, String&gt; CITY =              // [...]
    -    public static final UDTField&lt;UAddressTypeRecord, String&gt; COUNTRY =           // [...]
    -    public static final UDTField&lt;UAddressTypeRecord, Date&gt; SINCE =               // [...]
    -    public static final UDTField&lt;UAddressTypeRecord, Integer&gt; CODE =             // [...]
    -}</java><html>
    -
    -							<p>Now, when you interact with entities or procedures that hold UDT's, that's very simple as well. Here is an example: </p>
    -</html><java>// Fetch any author from the T_AUTHOR table
    -TAuthorRecord author = create.selectFrom(T_AUTHOR).fetchAny();
    -
    -// Print out the author's address's house number
    -System.out.println(author.getAddress().getStreet().getNo());</java><html>
    -
    -							<p>A similar thing can be achieved when interacting with the example stored procedure: </p>
    -</html><java>// Create a new UDTRecord of type U_ADDRESS_TYPE
    -UAddressTypeRecord address = new UAddressTypeRecord();
    -address.setCountry("Switzerland");
    -
    -// Call the stored procedure with IN OUT parameter of type U_ADDRESS_TYPE
    -address = Procedures.pCheckAddress(connection, address);</java><html>
    -
    -
    -							<h3>ARRAY types</h3>
    -							<p>
    -								The notion of ARRAY types in RDBMS is not standardised at all. Very
    -								modern databases (especially the Java-based ones) have implemented
    -								ARRAY types exactly as what they are. "ARRAYs of something". In other
    -								words, an ARRAY OF VARCHAR would be something very similar to Java's
    -								notion of String[]. An ARRAY OF ARRAY OF VARCHAR would then be a
    -								String[][] in Java. Some RDMBS, however, enforce stronger typing and
    -								need the explicit creation of types for every ARRAY as well. These are
    -								example String[] ARRAY types in various SQL dialects supported by jOOQ
    -								1.5.4:
    -							</p>
    -							<ul>
    -								<li>Oracle: VARRAY OF VARCHAR2. A strongly typed object encapsulating an ARRAY of a given type. See the <a href="http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14261/collection_definition.htm">documentation.</a></li>
    -								<li>Postgres: text[]. Any data type can be turned into an array by suffixing it with []. See the <a href="http://www.postgresql.org/docs/9.0/interactive/arrays.html">documentation</a></li>
    -								<li>HSQLDB: VARCHAR ARRAY. Any data type can be turned into an array by suffixing it with ARRAY. See the <a href="http://hsqldb.org/doc/2.0/guide/sqlgeneral-chapt.html#N1070F">documentation</a></li>
    -								<li>H2: ARRAY. H2 does not know of typed arrays. All ARRAYs are mapped to Object[]. See the <a href="http://www.h2database.com/html/datatypes.html#array_type">documentation</a></li>
    -							</ul>
    -							<p>Soon to be supported: </p>
    -							<ul>
    -								<li>DB2: Knows a similar strongly-typed ARRAY type, like Oracle </li>
    -							</ul>
    -							<p>
    -								From jOOQ's perspective, the ARRAY types fit in just like any other
    -								type wherever the
    -								&lt;T&gt; generic type parameter is existent. It integrates well with tables
    -									and stored procedures.
    -							</p>
    -
    -							<h3>Example: General ARRAY types</h3>
    -							<p>An example usage of ARRAYs is given here for the Postgres dialect </p>
    -
    -</html><sql>CREATE TABLE t_arrays (
    -  id integer not null primary key,
    -  string_array VARCHAR(20)[],
    -  number_array INTEGER[]
    -)
    -
    -CREATE FUNCTION f_arrays(in_array IN text[]) RETURNS text[]</sql><html>
    -
    -							<p>When generating source code from the above entities, these artefacts will be created in Java: </p>
    -</html><java>public class TArrays extends UpdatableTableImpl&lt;TArraysRecord&gt; {
    -
    -    // The generic type parameter &lt;T&gt; is bound to an array of a matching type
    -    public static final TableField&lt;TArraysRecord, String[]&gt; STRING_ARRAY =  // [...]
    -    public static final TableField&lt;TArraysRecord, Integer[]&gt; NUMBER_ARRAY = // [...]
    -}
    -
    -// The convenience class is enhanced with these methods
    -public final class Functions {
    -    public static String[] fArrays(Connection connection, String[] inArray) { // [...]
    -    public static Field&lt;String[]&gt; fArrays(String[] inArray) {                                     // [...]
    -    public static Field&lt;String[]&gt; fArrays(Field&lt;String[]&gt; inArray) {                              // [...]
    -}</java><html>
    -
    -							<h3>Example: Oracle VARRAY types</h3>
    -							<p>In Oracle, a VARRAY type is something slightly different than in
    -								other RDMBS. It is a type that encapsules the actual ARRAY and creates
    -								a new type from it. While all text[] types are equal and thus
    -								compatible in Postgres, this does not apply for all VARRAY OF VARCHAR2
    -								types. Hence, it is important to provide access to VARRAY types and
    -								generated objects from those types as well. The example above would
    -								read like this in Oracle: </p>
    -
    -</html><sql>CREATE TYPE u_string_array AS VARRAY(4) OF VARCHAR2(20)
    -CREATE TYPE u_number_array AS VARRAY(4) OF NUMBER(7)
    -
    -CREATE TABLE t_arrays (
    -  id NUMBER(7) not null primary key,
    -  string_array u_string_array,
    -  number_array u_number_array
    -)
    -
    -CREATE OR REPLACE FUNCTION f_arrays (in_array u_string_array)
    -RETURN u_string_array</sql><html>
    -
    -							<p>Note that it becomes clear immediately, that a mapping from
    -								U_STRING_ARRAY to String[] is obvious. But a mapping from String[] to
    -								U_STRING_ARRAY is not. These are the generated
    -								<reference class="org.jooq.ArrayRecord" /> and other
    -								artefacts in Oracle: </p>
    -
    -</html><java>public class UStringArrayRecord extends ArrayRecordImpl&lt;String&gt; {  // [...]
    -public class UNumberArrayRecord extends ArrayRecordImpl&lt;Integer&gt; { // [...]
    -
    -public class TArrays extends UpdatableTableImpl&lt;TArraysRecord&gt; {
    -    public static final TableField&lt;TArraysRecord, UStringArrayRecord&gt; STRING_ARRAY = // [...]
    -    public static final TableField&lt;TArraysRecord, UNumberArrayRecord&gt; NUMBER_ARRAY = // [...]
    -}
    -
    -public final class Functions {
    -    public static UStringArrayRecord fArrays3(Connection connection, UStringArrayRecord inArray) { // [...]
    -    public static Field&lt;UStringArrayRecord&gt; fArrays3(UStringArrayRecord inArray) {                 // [...]
    -    public static Field&lt;UStringArrayRecord&gt; fArrays3(Field&lt;UStringArrayRecord&gt; inArray) {          // [...]
    -}</java><html>
    -
    -
    -							<h3>ENUM types</h3>
    -							<p>True ENUM types are a rare species in the RDBMS world. Currently,
    -								MySQL and Postgres are the only RDMBS supported by jOOQ, that provide
    -								ENUM types. </p>
    -
    -							<ul>
    -								<li>In MySQL, an ENUM type is declared directly upon a column. It cannot be reused as a type. See the <a href="http://dev.mysql.com/doc/refman/5.5/en/enum.html">documentation.</a> </li>
    -								<li>In Postgres, the ENUM type is declared independently and can be reused among tables, functions, etc. See the <a href="http://www.postgresql.org/docs/9.0/interactive/datatype-enum.html">documentation.</a> </li>
    -								<li>Other RDMBS know about "ENUM constraints", such as the Oracle CHECK constraint. These are not true ENUMS, however. jOOQ refrains from using their information for source code generation </li>
    -							</ul>
    -
    -							<p>Some examples: </p>
    -</html><sql>-- An example enum type
    -CREATE TYPE u_book_status AS ENUM ('SOLD OUT', 'ON STOCK', 'ORDERED')
    -
    --- An example useage of that enum type
    -CREATE TABLE t_book (
    -  id INTEGER NOT NULL PRIMARY KEY,
    -
    -  -- [...]
    -  status u_book_status
    -)</sql><html>
    -
    -							<p>The above Postgres ENUM type will be generated as </p>
    -</html><java>public enum UBookStatus implements EnumType {
    -    ORDERED("ORDERED"),
    -    ON_STOCK("ON STOCK"),
    -    SOLD_OUT("SOLD OUT");
    -
    -    // [...]
    -}</java><html>
    -							<p>Intuitively, the generated classes for the T_BOOK table in Postgres would look like this: </p>
    -</html><sql>// The meta-model class
    -public class TBook extends UpdatableTableImpl&lt;TBookRecord&gt; {
    -
    -    // The TableField STATUS binds &lt;T&gt; to UBookStatus
    -    public static final TableField&lt;TBookRecord, UBookStatus&gt; STATUS = // [...]
    -
    -    // [...]
    -}
    -
    -// The record class
    -public class TBookRecord extends UpdatableRecordImpl&lt;TBookRecord&gt; {
    -
    -    // Corresponding to the Table meta-model, also setters and getters
    -    // deal with the generated UBookStatus
    -    public void setStatus(UBookStatus value) { // [...]
    -    public UBookStatus getStatus() {           // [...]
    -}</sql><html>
    -
    -							<p>Note that jOOQ allows you to simulate ENUM types where this makes
    -								sense in your data model. See the section on
    -								<reference id="MasterData" title="master data"/> for more
    -								details. </p>
    -						</html></content>
    -					</section>
    -
    -
    -					<section id="SEQUENCE">
    -						<title>Sequences and Serials</title>
    -						<content><html>
    -							<h3>Sequences as a source for identity values</h3>
    -							<p> Sequences implement the
    -							<reference class="org.jooq.Sequence"/> interface, providing essentially this functionality:</p>
    -
    -</html><java>// Get a field for the CURRVAL sequence property
    -Field&lt;T&gt; currval();
    -
    -// Get a field for the NEXTVAL sequence property
    -Field&lt;T&gt; nextval();</java><html>
    -							<p>So if you have a sequence like this in Oracle: </p>
    -							</html><sql>CREATE SEQUENCE s_author_id</sql><html>
    -							<p>This is what jOOQ will generate: </p>
    -</html><java>public final class Sequences {
    -
    -    // A static sequence instance
    -    public static final Sequence&lt;BigInteger&gt; S_AUTHOR_ID = // [...]
    -}</java><html>
    -
    -							<p>Which you can use in a select statement as such: </p>
    -</html><java>Field&lt;BigInteger&gt; s = Sequences.S_AUTHOR_ID.nextval();
    -BigInteger nextID   = create.select(s).fetchOne(s);</java><html>
    -
    -							<p>Or directly fetch currval() and nextval() from the sequence using the Factory: </p>
    -</html><java>BigInteger currval = create.currval(Sequences.S_AUTHOR_ID);
    -BigInteger nextval = create.nextval(Sequences.S_AUTHOR_ID);</java></content>
    -					</section>
    -				</sections>
    -			</section>
    -
    -
    -
    -
    -			<section id="DSL">
    -				<title>DSL or fluent API. Where SQL meets Java</title>
    -				<content><html>
    -					<h3>Overview</h3>
    -					<p>jOOQ ships with its own DSL (or
    -						<a href="http://en.wikipedia.org/wiki/Domain-specific_language" title="Domain Specific Language">Domain Specific Language</a>) that
    -						simulates SQL as good as possible in Java. This means, that you can
    -						write SQL statements almost as if Java natively supported that syntax
    -						just like .NET's C# does with <a href="http://msdn.microsoft.com/en-us/library/bb425822.aspx">LINQ to SQL.</a></p>
    -
    -					<p>Here is an example to show you what that means. When you want to write a query like this in SQL: </p>
    -					</html><code-pair>
    -<sql>-- Select all books by authors born after 1920,
    --- named "Paulo" from a catalogue:
    -SELECT *
    -  FROM t_author a
    -  JOIN t_book b ON a.id = b.author_id
    - WHERE a.year_of_birth &gt; 1920
    -   AND a.first_name = 'Paulo'
    - ORDER BY b.title</sql><java>Result&lt;Record&gt; result =
    -create.select()
    -      .from(T_AUTHOR.as("a"))
    -      .join(T_BOOK.as("b")).on(a.ID.equal(b.AUTHOR_ID))
    -      .where(a.YEAR_OF_BIRTH.greaterThan(1920)
    -      .and(a.FIRST_NAME.equal("Paulo")))
    -      .orderBy(b.TITLE)
    -      .fetch();</java></code-pair><html>
    -
    -					<p>
    -						You couldn't come much closer to SQL itself in Java, without re-writing the compiler.
    -						We'll see how the aliasing works later in the section about
    -						<reference id="ALIAS" title="aliasing"/>
    -					</p>
    -				</html></content>
    -
    -
    -				<sections>
    -					<section id="SELECT">
    -						<title>Complete SELECT syntax</title>
    -						<content><html>
    -							<h3>SELECT from anonymous or ad-hoc types</h3>
    -							<p>When you don't just perform CRUD (i.e. SELECT * FROM your_table WHERE ID = ?),
    -							you're usually generating new types using custom projections. With jOOQ, this is
    -							as intuitive, as if using SQL directly. A more or less complete example of the "standard" SQL syntax, plus
    -							some extensions, is provided by a query like this:
    -							</p>
    -
    -</html><sql>-- get all authors' first and last names, and the number
    --- of books they've written in German, if they have written
    --- more than five books in German in the last three years
    --- (from 2011), and sort those authors by last names
    --- limiting results to the second and third row, locking
    --- the rows for a subsequent update... whew!
    -
    -  SELECT T_AUTHOR.FIRST_NAME, T_AUTHOR.LAST_NAME, COUNT(*)
    -    FROM T_AUTHOR
    -    JOIN T_BOOK ON T_AUTHOR.ID = T_BOOK.AUTHOR_ID
    -   WHERE T_BOOK.LANGUAGE = 'DE'
    -     AND T_BOOK.PUBLISHED > '2008-01-01'
    -GROUP BY T_AUTHOR.FIRST_NAME, T_AUTHOR.LAST_NAME
    -  HAVING COUNT(*) > 5
    -ORDER BY T_AUTHOR.LAST_NAME ASC NULLS FIRST
    -   LIMIT 2
    -  OFFSET 1
    -     FOR UPDATE</sql><html>
    -
    -     						<p>So that's daily business. How to do it with jOOQ: When you first create a SELECT statement using the Factory's select() methods </p>
    -</html><java>SelectFromStep select(Field&lt;?&gt;... fields);
    -
    -// Example:
    -create.select(T_AUTHOR.FIRST_NAME, T_AUTHOR.LAST_NAME, count());</java><html>
    -
    -							<p>
    -								jOOQ will return an "intermediary" type to you, representing the
    -								SELECT statement about to be created (by the way, check out the
    -								section on <reference id="FUNCTIONS" title="aggregate operators"/>
    -								 to learn more about the COUNT(*)
    -								function). This type is the
    -								<reference class="org.jooq.SelectFromStep"/>.
    -								When you have a reference
    -								to this type, you may add a FROM clause, although that clause is
    -								optional. This is reflected by the fact, that the SelectFromStep type
    -								extends
    -								<reference class="org.jooq.SelectJoinStep"/>,
    -								which allows for adding the subsequent
    -								clauses. Let's say you do decide to add a FROM clause, then you can
    -								use this method for instance:
    -							</p>
    -</html><java>SelectJoinStep from(TableLike&lt;?&gt;... table);
    -
    -// The example, continued:
    -create.select(T_AUTHOR.FIRST_NAME, T_AUTHOR.LAST_NAME, count())
    -      .from(T_AUTHOR);</java><html>
    -
    -							<p>After adding the table-like structures (mostly just Tables) to
    -								select from, you may optionally choose to add a JOIN clause, as the
    -								type returned by jOOQ is the step where you can add JOINs. Again,
    -								adding these clauses is optional, as the
    -								<reference class="org.jooq.SelectJoinStep"/> extends
    -								<reference class="org.jooq.SelectWhereStep"/>.
    -								But let's say we add a JOIN: </p>
    -</html><java>// These join types are supported
    -SelectOnStep                    join(Table&lt;?&gt; table);
    -SelectOnStep           leftOuterJoin(Table&lt;?&gt; table);
    -SelectOnStep          rightOuterJoin(Table&lt;?&gt; table);
    -SelectOnStep           fullOuterJoin(Table&lt;?&gt; table);
    -SelectJoinStep             crossJoin(Table&lt;?&gt; table);
    -SelectJoinStep           naturalJoin(Table&lt;?&gt; table);
    -SelectJoinStep  naturalLeftOuterJoin(Table&lt;?&gt; table);
    -SelectJoinStep naturalRightOuterJoin(Table&lt;?&gt; table);
    -
    -// The example, continued:
    -create.select(T_AUTHOR.FIRST_NAME, T_AUTHOR.LAST_NAME, count())
    -      .from(T_AUTHOR)
    -      .join(T_BOOK);</java><html>
    -
    -							<p>Now, if you do add a JOIN clause, you have to specify the JOIN .. ON
    -								condition before you can add more clauses. That's not an optional step
    -								for some JOIN types. This is reflected by the fact that
    -								<reference class="org.jooq.SelectOnStep"/>
    -								is a top-level interface. </p>
    -
    -</html><java><![CDATA[// These join conditions are supported
    -SelectJoinStep    on(Condition... conditions);
    -SelectJoinStep onKey();
    -SelectJoinStep onKey(TableField<?, ?>... keyFields);
    -SelectJoinStep onKey(ForeignKey<?, ?> key);
    -SelectJoinStep using(Field<?>... fields);
    -
    -// The example, continued:
    -create.select(T_AUTHOR.FIRST_NAME, T_AUTHOR.LAST_NAME, count())
    -      .from(T_AUTHOR)
    -      .join(T_BOOK).on(T_BOOK.AUTHOR_ID.equal(T_AUTHOR.ID));]]></java><html>
    -
    -							<p>
    -								See the section about
    -								<reference id="CONDITION" title="conditions"/>
    -								to learn more about the many ways
    -								to create Conditions in jOOQ.
    -								See also the section about
    -								<reference id="TABLESOURCE" title="table sources"/>
    -								to learn more about the various ways of creating JOIN
    -								expressions
    -							</p>
    -							<p>
    -								Now we're half way through. As you can
    -								see above, we're back to the SelectJoinStep. This means, we can
    -								re-iterate and add another JOIN clause, just like in SQL. Or we go on
    -								to the next step, adding conditions in the
    -								<reference class="org.jooq.SelectWhereStep"/>: </p>
    -</html><java>SelectConditionStep where(Condition... conditions);
    -
    -// The example, continued:
    -create.select(TAuthor.FIRST_NAME, TAuthor.LAST_NAME, count())
    -      .from(T_AUTHOR)
    -      .join(T_BOOK).on(T_BOOK.AUTHOR_ID.equal(T_AUTHOR.ID))
    -      .where(T_BOOK.LANGUAGE.equal("DE"));</java><html>
    -
    -							<p>Now the returned type
    -								<reference class="org.jooq.SelectConditionStep"/> is a special one, where
    -								you can add more conditions to the already existing WHERE clause.
    -								Every time you add a condition, you will return to that
    -								SelectConditionStep, as the number of additional conditions is
    -								unlimited. Note that of course you can also just add a single combined
    -								condition, if that is more readable or suitable for your use-case.
    -								Here's how we add another condition: </p>
    -</html><java>SelectConditionStep and(Condition condition);
    -
    -// The example, continued:
    -create.select(T_AUTHOR.FIRST_NAME, T_AUTHOR.LAST_NAME, count())
    -      .from(T_AUTHOR)
    -      .join(T_BOOK).on(T_BOOK.AUTHOR_ID.equal(T_AUTHOR.ID))
    -      .where(T_BOOK.LANGUAGE.equal("DE"))
    -      .and(T_BOOK.PUBLISHED.greaterThan(parseDate('2008-01-01')));</java><html>
    -
    -							<p>Let's assume we have that method parseDate() creating a
    -								<reference class="java.sql.Date"/> for us.
    -								Then we'll continue adding the GROUP BY clause
    -							</p>
    -</html><java>SelectHavingStep groupBy(Field&lt;?&gt;... fields);
    -
    -// The example, continued:
    -create.select(T_AUTHOR.FIRST_NAME, T_AUTHOR.LAST_NAME, count())
    -      .from(T_AUTHOR)
    -      .join(T_BOOK).on(T_BOOK.AUTHOR_ID.equal(T_AUTHOR.ID))
    -      .where(T_BOOK.LANGUAGE.equal("DE"))
    -      .and(T_BOOK.PUBLISHED.greaterThan(parseDate('2008-01-01')))
    -      .groupBy(T_AUTHOR.FIRST_NAME, T_AUTHOR.LAST_NAME);</java><html>
    -
    -      						<p>and the HAVING clause: </p>
    -</html><java>SelectOrderByStep having(Condition... conditions);
    -
    -// The example, continued:
    -create.select(T_AUTHOR.FIRST_NAME, T_AUTHOR.LAST_NAME, count())
    -      .from(T_AUTHOR)
    -      .join(T_BOOK).on(T_BOOK.AUTHOR_ID.equal(T_AUTHOR.ID))
    -      .where(T_BOOK.LANGUAGE.equal("DE"))
    -      .and(T_BOOK.PUBLISHED.greaterThan(parseDate('2008-01-01')))
    -      .groupBy(T_AUTHOR.FIRST_NAME, T_AUTHOR.LAST_NAME)
    -      .having(count().greaterThan(5));</java><html>
    -
    -							<p>and the ORDER BY clause. Some RDBMS support NULLS FIRST and NULLS
    -								LAST extensions to the ORDER BY clause. If this is not supported by
    -								the RDBMS, then the behaviour is simulated with an additional CASE
    -								WHEN ... IS NULL THEN 1 ELSE 0 END clause. </p>
    -</html><java>SelectLimitStep orderBy(Field&lt;?&gt;... fields);
    -
    -// The example, continued:
    -create.select(T_AUTHOR.FIRST_NAME, T_AUTHOR.LAST_NAME, count())
    -      .from(T_AUTHOR)
    -      .join(T_BOOK).on(T_BOOK.AUTHOR_ID.equal(T_AUTHOR.ID))
    -      .where(T_BOOK.LANGUAGE.equal("DE"))
    -      .and(T_BOOK.PUBLISHED.greaterThan(parseDate('2008-01-01')))
    -      .groupBy(T_AUTHOR.FIRST_NAME, T_AUTHOR.LAST_NAME)
    -      .having(count().greaterThan(5))
    -      .orderBy(T_AUTHOR.LAST_NAME.asc().nullsFirst());</java><html>
    -
    -							<p>and finally the LIMIT clause. Most dialects have a means of limiting
    -								the number of result records (except Oracle). Some even support having
    -								an OFFSET to the LIMIT clause. Even if your RDBMS does not support the
    -								full LIMIT ... OFFSET ... (or TOP ... START AT ..., or FETCH FIRST ... ROWS ONLY, etc)
    -								clause, jOOQ will simulate the LIMIT clause using nested selects and filtering on
    -								ROWNUM (for Oracle), or on ROW_NUMBER() (for DB2 and SQL
    -								Server): </p>
    -</html><java>SelectFinalStep limit(int offset, int numberOfRows);
    -
    -// The example, continued:
    -create.select(T_AUTHOR.FIRST_NAME, T_AUTHOR.LAST_NAME, count())
    -      .from(T_AUTHOR)
    -      .join(T_BOOK).on(T_BOOK.AUTHOR_ID.equal(T_AUTHOR.ID))
    -      .where(T_BOOK.LANGUAGE.equal("DE"))
    -      .and(T_BOOK.PUBLISHED.greaterThan(parseDate('2008-01-01')))
    -      .groupBy(T_AUTHOR.FIRST_NAME, T_AUTHOR.LAST_NAME)
    -      .having(count().greaterThan(5))
    -      .orderBy(T_AUTHOR.LAST_NAME.asc().nullsFirst())
    -      .limit(1, 2);</java><html>
    -
    -							<p>In the final step, there are some proprietary extensions available
    -								only in some RDBMS. One of those extensions are the FOR UPDATE
    -								(supported in most RDBMS) and FOR SHARE clauses (supported only in
    -								MySQL and Postgres): </p>
    -</html><java>SelectFinalStep forUpdate();
    -
    -// The example, continued:
    -create.select(T_AUTHOR.FIRST_NAME, T_AUTHOR.LAST_NAME, count())
    -      .from(T_AUTHOR)
    -      .join(T_BOOK).on(T_BOOK.AUTHOR_ID.equal(T_AUTHOR.ID))
    -      .where(T_BOOK.LANGUAGE.equal("DE"))
    -      .and(T_BOOK.PUBLISHED.greaterThan(parseDate('2008-01-01')))
    -      .groupBy(T_AUTHOR.FIRST_NAME, T_AUTHOR.LAST_NAME)
    -      .having(count().greaterThan(5))
    -      .orderBy(T_AUTHOR.LAST_NAME.asc().nullsFirst())
    -      .limit(1, 2)
    -      .forUpdate();</java><html>
    -
    -							<p>
    -								Now the most relevant super-type of the object we have just created is
    -								<reference class="org.jooq.Select"/>.
    -								This type can be reused in various expressions such as in the
    -								<reference id="UNION" title="UNION and other set operations"/>,
    -								<reference id="EXISTS" title="Nested select statements using the EXISTS operator"/>,
    -								etc. If you just want to execute this select
    -								statement, you can choose any of these methods as discussed in the
    -								section about the <reference id="ResultQuery" title="ResultQuery"/>:
    -							</p>
    -
    -</html><java>// Just execute the query.
    -int execute();
    -
    -// Execute the query and retrieve the results
    -Result&lt;Record&gt; fetch();
    -
    -// Execute the query and retrieve the first Record
    -Record fetchAny();
    -
    -// Execute the query and retrieve the single Record
    -// An Exception is thrown if more records were available
    -Record fetchOne();
    -
    -// [...]</java><html>
    -
    -
    -							<h3>SELECT from single physical tables</h3>
    -							<p>A very similar, but limited API is available, if you want to select from single
    -								physical tables in order to retrieve TableRecords or even
    -								UpdatableRecords (see also the manual's section on
    -								<reference id="Query" title="SelectQuery vs SimpleSelectQuery"/>).
    -								The decision, which type of select to create is
    -								already made at the very first step, when you create the SELECT
    -								statement with the Factory: </p>
    -
    -							</html><java>public &lt;R extends Record&gt; SimpleSelectWhereStep&lt;R&gt; selectFrom(Table&lt;R&gt; table);</java><html>
    -							<p>As you can see, there is no way to further restrict/project the selected
    -								fields. This just selects all known TableFields in the supplied Table,
    -								and it also binds &lt;R extends Record&gt; to your Table's associated
    -								Record. An example of such a Query would then be: </p>
    -</html><java>TBook book = create.selectFrom(T_BOOK)
    -                   .where(TBook.LANGUAGE.equal("DE"))
    -                   .orderBy(TBook.TITLE)
    -                   .fetchAny();</java></content>
    -					</section>
    -
    -
    -					<section id="TABLESOURCE">
    -						<title>Table sources</title>
    -						<content><html>
    -							<h3>Create complex and nested table sources</h3>
    -							<p>
    -								In the <a href="http://en.wikipedia.org/wiki/Relational_model" title="The Relational Data Model">relational data model</a>,
    -								there are many operations performed on entities, i.e. tables in order to join them together
    -								before applying predicates, renaming operations and projections. Apart from the convenience
    -								methods for joining table sources in the
    -								<reference id="SELECT" title="manual's section about the full SELECT syntax"/>,
    -								the <reference class="org.jooq.Table" title="Table"/> type itself provides a
    -								rich API for creating joined table sources. See an extract of the Table API:
    -							</p>
    -</html><java><![CDATA[// These are the various supported JOIN clauses. These JOIN types
    -// are followed by an additional ON / ON KEY / USING clause
    -TableOnStep join(TableLike<?> table);
    -TableOnStep join(String sql);
    -TableOnStep join(String sql, Object... bindings);
    -
    -// All other JOIN types are equally overloaded with "String sql" convenience methods...
    -TableOnStep  leftOuterJoin(TableLike<?> table);
    -TableOnStep rightOuterJoin(TableLike<?> table);
    -TableOnStep  fullOuterJoin(TableLike<?> table);
    -
    -// These JOIN types don't take any additional clause
    -Table<Record>             crossJoin(TableLike<?> table);
    -Table<Record>           naturalJoin(TableLike<?> table);
    -Table<Record>  naturalLeftOuterJoin(TableLike<?> table);
    -Table<Record> naturalRightOuterJoin(TableLike<?> table);
    -
    -// Oracle and SQL Server also know PIVOT / UNPIVOT clauses for transforming a
    -// table into another one using a list of PIVOT values
    -PivotForStep pivot(Field<?>... aggregateFunctions);
    -PivotForStep pivot(Collection<? extends Field<?>> aggregateFunctions);
    -
    -// Relational division can be applied to a table, transforming it into a
    -// "quotient" using an intuitive syntax
    -DivideByOnStep divideBy(Table<?> divisor);]]></java><html>
    -
    -							<p>
    -								The <reference class="org.jooq.TableOnStep" title="TableOnStep"/> type
    -								contains methods for constructing the ON / ON KEY / USING clauses
    -							</p>
    -
    -</html><java><![CDATA[// The ON clause is the most widely used JOIN condition. Provide arbitrary conditions as arguments
    -TableOnConditionStep on(Condition... conditions);
    -TableOnConditionStep on(String sql);
    -TableOnConditionStep on(String sql, Object... bindings);
    -
    -// The USING clause is also part of the SQL standard. Use this if joined tables contain identical field names.
    -// The USING clause is simulated in databases that do not support it.
    -Table<Record> using(Field<?>... fields);
    -Table<Record> using(Collection<? extends Field<?>> fields);
    -
    -// The ON KEY clause is a "synthetic" clause that does not exist in any SQL dialect. jOOQ usually has all
    -// foreign key relationship information to dynamically render "ON [ condition ... ]" clauses
    -TableOnConditionStep onKey() throws DataAccessException;
    -TableOnConditionStep onKey(TableField<?, ?>... keyFields) throws DataAccessException;
    -TableOnConditionStep onKey(ForeignKey<?, ?> key);]]></java><html>
    -
    -							<ul>
    -							<li>
    -								For more details about the PIVOT clause, see the
    -								<reference id="PIVOT" title="manual's section about the Oracle PIVOT syntax"/>
    -							</li>
    -							<li>
    -								For more details about the DIVIDE BY clause, see the
    -								<reference id="DIVISION" title="manual's section about the relational division syntax"/>
    -							</li>
    -							</ul>
    -						</html></content>
    -					</section>
    -
    -
    -					<section id="CONDITION">
    -						<title>Conditions</title>
    -						<content><html>
    -							<h3>Conditions are the SELECT's core business</h3>
    -							<p>In your average application, you will typically have 3-4 SQL queries
    -								that have quite a long list of predicates (and possibly JOINs), such
    -								that you start to lose track over the overall boolean expression that
    -								you're trying to apply.</p>
    -							<p>In jOOQ, most Conditions can be created and combined almost as
    -								easily as in SQL itself. The two main participants for creating
    -								Conditions are the <reference class="org.jooq.Field" title="Field"/>,
    -								which is typically a participant of a
    -								condition, and the <reference class="org.jooq.Condition" title="Condition"/>
    -								itself: </p>
    -</html><java>public interface Condition {
    -    Condition and(Condition other);
    -    Condition and(String sql);
    -    Condition and(String sql, Object... bindings);
    -    Condition andNot(Condition other);
    -    Condition andExists(Select&lt;?&gt; select);
    -    Condition andNotExists(Select&lt;?&gt; select);
    -    Condition or(Condition other);
    -    Condition or(String sql);
    -    Condition or(String sql, Object... bindings);
    -    Condition orNot(Condition other);
    -    Condition orExists(Select&lt;?&gt; select);
    -    Condition orNotExists(Select&lt;?&gt; select);
    -    Condition not();
    -}</java><html>
    -
    -							<p>The above example describes the essence of boolean logic in jOOQ. As
    -								soon as you have a Condition object, you can connect that to other
    -								Conditions, which will then give you a combined condition with exactly
    -								the same properties. There are also convenience methods to create an
    -								EXISTS clause and connect it to an existing condition. In order to
    -								create a new Condition you are going to depart from a Field in most
    -								cases. Here are some important API elements in the Field interface:
    -							</p>
    -
    -</html><java><![CDATA[public interface Field<T> {
    -    Condition isNull();
    -    Condition isNotNull();
    -    Condition like(T value);
    -    Condition likeIgnoreCase(T value);
    -    Condition notLike(T value);
    -    Condition notLikeIgnoreCase(T value);
    -    Condition in(T... values);
    -    Condition in(Select<?> query);
    -    Condition notIn(Collection<T> values);
    -    Condition notIn(T... values);
    -    Condition notIn(Select<?> query);
    -    Condition in(Collection<T> values);
    -    Condition between(T minValue, T maxValue);
    -    Condition contains(T value);
    -    Condition contains(Field<T> value);
    -    Condition equal(T value);
    -    Condition equal(Field<T> field);
    -    Condition equal(Select<?> query);
    -    Condition equalAny(Select<?> query);
    -    Condition equalAny(T... array);
    -    Condition equalAny(Field<T[]> array);
    -    Condition equalAll(Select<?> query);
    -    Condition equalAll(T... array);
    -    Condition equalAll(Field<T[]> array);
    -    Condition equalIgnoreCase(String value);
    -    Condition equalIgnoreCase(Field<String> value);
    -    Condition notEqual(T value);
    -    Condition notEqual(Field<T> field);
    -    Condition notEqual(Select<?> query);
    -    Condition notEqualAny(Select<?> query);
    -    Condition notEqualAny(T... array);
    -    Condition notEqualAny(Field<T[]> array);
    -    Condition notEqualAll(Select<?> query);
    -    Condition notEqualAll(T... array);
    -    Condition notEqualAll(Field<T[]> array);
    -
    -    // Subselects, ANY and ALL quantifiers are also supported for these:
    -    Condition lessThan(T value);
    -    Condition lessOrEqual(T value);
    -    Condition greaterThan(T value);
    -    Condition greaterOrEqual(T value);
    -}]]></java><html>
    -
    -							<p>As you see in the partially displayed API above, you can compare a
    -								Field either with other Fields, with constant values (which is a
    -								shortcut for calling Factory.val(T value)), or with a nested SELECT
    -								statement. See some more
    -								<reference id="NESTED" title="Examples of nested SELECTs"/>. </p>
    -							<p>Combining the API of Field and Condition you can express complex predicates like this: </p>
    -
    -</html><sql>(T_BOOK.TYPE_CODE IN (1, 2, 5, 8, 13, 21)       AND T_BOOK.LANGUAGE = 'DE') OR
    -(T_BOOK.TYPE_CODE IN (2, 3, 5, 7, 11, 13)       AND T_BOOK.LANGUAGE = 'FR') OR
    -(T_BOOK.TYPE_CODE IN (SELECT CODE FROM T_TYPES) AND T_BOOK.LANGUAGE = 'EN')</sql><html>
    -
    -							<p>Just write: </p>
    -</html><java>T_BOOK.TYPE_CODE.in(1, 2, 5, 8, 13, 21)                       .and(T_BOOK.LANGUAGE.equal("DE")).or(
    -T_BOOK.TYPE_CODE.in(2, 3, 5, 7, 11, 13)                       .and(T_BOOK.LANGUAGE.equal("FR")).or(
    -T_BOOK.TYPE_CODE.in(create.select(T_TYPES.CODE).from(T_TYPES)).and(T_BOOK.LANGUAGE.equal("EN"))));</java></content>
    -					</section>
    -
    -
    -					<section id="ALIAS">
    -						<title>Aliased tables and fields</title>
    -						<content><html>
    -							<h3>Aliasing Tables</h3>
    -							<p>A typical example of what you might want to do in SQL is this: </p>
    -</html><sql>SELECT a.ID, b.ID
    -  FROM T_AUTHOR a
    -  JOIN T_BOOK b on a.ID = b.AUTHOR_ID</sql><html>
    -
    -  							<p>
    -  								In this example, we are aliasing Tables, calling them a and b.
    -  								The way aliasing works depends on how you generate your meta model
    -  								using jooq-codegen (see the manual's section about
    -  								<reference id="TABLE" title="generating tables"/>). Things become
    -  								simpler when you choose the instance/dynamic model, instead of the
    -  								static one.
    -  								Here is how you can create Table aliases in jOOQ:
    -  							</p>
    -
    -</html><java>Table&lt;TBookRecord&gt; book = T_BOOK.as("b");
    -Table&lt;TAuthorRecord&gt; author = T_AUTHOR.as("a");
    -
    -// If you choose not to generate a static meta model, this becomes even better
    -TBook book = T_BOOK.as("b");
    -TAuthor author = T_AUTHOR.as("a");</java><html>
    -
    -							<p>Now, if you want to reference any fields from those Tables, you may
    -								not use the original T_BOOK or T_AUTHOR meta-model objects anymore.
    -								Instead, you have to get the fields from the new book and author Table
    -								aliases: </p>
    -
    -</html><java><![CDATA[Field<Integer> bookID = book.getField(TBook.ID);
    -Field<Integer> authorID = author.getField(TAuthor.ID);
    -
    -// Or with the instance field model:
    -Field<Integer> bookID = book.ID;
    -Field<Integer> authorID = author.ID;]]></java><html>
    -
    -							<p>
    -								So this is how the above SQL statement would read in jOOQ:
    -							</p>
    -</html><java>create.select(authorID, bookID)
    -      .from(author)
    -      .join(book).on(authorID.equal(book.getField(T_BOOK.AUTHOR_ID)));
    -
    -// Or with the instance field model:
    -create.select(author.ID, book.ID)
    -      .from(author)
    -      .join(book).on(author.ID.equal(book.AUTHOR_ID))</java><html>
    -
    -
    -      						<h3>Aliasing nested selects as tables</h3>
    -							<p>There is an interesting, more advanced example of how you can select
    -								from an aliased nested select in the manual's section about
    -								<reference id="NESTED" title="nested selects"/></p>
    -
    -
    -							<h3>Aliasing fields</h3>
    -							<p>Fields can also be aliased independently from Tables. Most often,
    -								this is done when using functions or aggregate operators. Here is an
    -								example: </p>
    -</html><sql>  SELECT FIRST_NAME || ' ' || LAST_NAME author, COUNT(*) books
    -    FROM T_AUTHOR
    -    JOIN T_BOOK ON T_AUTHOR.ID = AUTHOR_ID
    -GROUP BY FIRST_NAME, LAST_NAME;</sql><html>
    -							<p>Here is how it's done with jOOQ: </p>
    -</html><java>Record record = create.select(
    -         concat(T_AUTHOR.FIRST_NAME, " ", T_AUTHOR.LAST_NAME).as("author"),
    -         count().as("books"))
    -      .from(T_AUTHOR)
    -      .join(T_BOOK).on(T_AUTHOR.ID.equal(T_BOOK.AUTHOR_ID))
    -      .groupBy(T_AUTHOR.FIRST_NAME, T_AUTHOR.LAST_NAME).fetchAny();</java><html>
    -      						<p>When you alias Fields like above, you can access those Fields' values using the alias name: </p>
    -</html><java>System.out.println("Author : " + record.getValue("author"));
    -System.out.println("Books  : " + record.getValue("books"));</java></content>
    -					</section>
    -
    -
    -					<section id="IN">
    -						<title>Nested SELECT using the IN operator</title>
    -						<content><html>
    -							<h3>The IN operator for use in semi-joins or anti-joins</h3>
    -							<p>
    -								In addition to a list of constant values, the IN operator in
    -								<reference class="org.jooq.Field"/>
    -								also supports a
    -								<reference class="org.jooq.Select"/> as an argument.
    -								This can be any type of select as
    -								discussed in the manual's section about
    -								<reference id="Query" title="Query types"/>.
    -								However, you must
    -								ensure yourself, that the provided Select will only select a single
    -								Field.
    -							</p>
    -							<p>Let's say you want to select books by authors born in 1920. Of
    -								course, this is possible with a plain JOIN as well, but let's say we
    -								want to use the IN operator. Then you have two possibilities: </p>
    -
    -							</html><code-pair>
    -<sql>SELECT *
    -  FROM T_BOOK
    - WHERE T_BOOK.AUTHOR_ID IN (
    -           SELECT ID FROM T_AUTHOR
    -            WHERE T_AUTHOR.BORN = 1920)
    -
    --- OR:
    -
    -SELECT T_BOOK.*
    -  FROM T_BOOK
    -  JOIN T_AUTHOR ON (T_BOOK.AUTHOR_ID = T_AUTHOR.ID
    -                AND T_AUTHOR.BORN    = 1920)</sql><java>create.select()
    -      .from(T_BOOK)
    -      .where(T_BOOK.AUTHOR_ID.in(
    -          create.select(T_AUTHOR.ID).from(T_AUTHOR)
    -                .where(T_AUTHOR.BORN.equal(1920))));
    -
    -// OR:
    -
    -create.select(T_BOOK.getFields())
    -      .from(T_BOOK)
    -      .join(T_AUTHOR).on(T_BOOK.AUTHOR_ID.equal(TAuthor.ID)
    -                     .and(T_AUTHOR.BORN.equal(1920)));</java></code-pair><html>
    -						</html></content>
    -					</section>
    -
    -
    -					<section id="EXISTS">
    -						<title>Nested SELECT using the EXISTS operator</title>
    -						<content><html>
    -							<h3>The EXISTS operator for use in semi-joins or anti-joins</h3>
    -							<p>The EXISTS operator is rather independent and can stand any place
    -								where there may be a new condition: </p>
    -							<ul>
    -								<li>It may be placed right after a WHERE keyword </li>
    -								<li>It may be the right-hand-side of a boolean operator</li>
    -								<li>It may be placed right after a ON or HAVING keyword (although, this is less likely to be done...) </li>
    -							</ul>
    -
    -							<p>This is reflected by the fact that an EXISTS clause is usually
    -								created directly from the Factory: </p>
    -
    -</html><java>Condition exists(Select&lt;?&gt; query);
    -Condition notExists(Select&lt;?&gt; query);</java><html>
    -
    -							<p>When you create such a Condition, it can then be connected to any
    -								other condition using AND, OR operators (see also the manual's section
    -								on
    -								<reference id="CONDITION" title="Conditions"/>). There are also quite a few
    -								convenience methods, where they might be useful. For instance in the
    -								<reference class="org.jooq.Condition"/> itself: </p>
    -
    -</html><java>Condition andExists(Select&lt;?&gt; select);
    -Condition andNotExists(Select&lt;?&gt; select);
    -Condition orExists(Select&lt;?&gt; select);
    -Condition orNotExists(Select&lt;?&gt; select);</java><html>
    -
    -							<p>Or in the <reference class="org.jooq.SelectWhereStep"/>:</p>
    -
    -</html><java>SelectConditionStep whereExists(Select&lt;?&gt; select);
    -SelectConditionStep whereNotExists(Select&lt;?&gt; select);</java><html>
    -
    -							<p>Or in the <reference class="org.jooq.SelectConditionStep"/>: </p>
    -
    -</html><java>SelectConditionStep andExists(Select&lt;?&gt; select);
    -SelectConditionStep andNotExists(Select&lt;?&gt; select);
    -SelectConditionStep orExists(Select&lt;?&gt; select);
    -SelectConditionStep orNotExists(Select&lt;?&gt; select);</java><html>
    -
    -							<p>An example of how to use it is quickly given. Get all authors that haven't written any books: </p>
    -							</html><code-pair>
    -<sql>SELECT *
    -  FROM T_AUTHOR
    - WHERE NOT EXISTS (SELECT 1
    -                     FROM T_BOOK
    -                    WHERE T_BOOK.AUTHOR_ID = T_AUTHOR.ID)</sql><java>create.select()
    -      .from(T_AUTHOR)
    -      .whereNotExists(create.selectOne()
    -            .from(T_BOOK)
    -            .where(T_BOOK.AUTHOR_ID.equal(T_AUTHOR.ID)));</java>
    -							</code-pair><html>
    -						</html></content>
    -					</section>
    -
    -
    -					<section id="NESTED">
    -						<title>Other types of nested SELECT</title>
    -						<content><html>
    -							<h3>Comparison with single-field SELECT clause</h3>
    -							<p>If you can ensure that a nested SELECT will only return one Record
    -								with one Field, then you can test for equality. This is how it is done
    -								in SQL: </p>
    -
    -							</html><code-pair>
    -<sql>SELECT *
    -  FROM T_BOOK
    - WHERE T_BOOK.AUTHOR_ID = (
    - 		SELECT ID
    -          FROM T_AUTHOR
    -         WHERE LAST_NAME = 'Orwell')</sql><java>create.select()
    -      .from(T_BOOK)
    -      .where(T_BOOK.AUTHOR_ID.equal(create
    -             .select(T_AUTHOR.ID)
    -             .from(T_AUTHOR)
    -             .where(T_AUTHOR.LAST_NAME.equal("Orwell"))));</java>
    -                            </code-pair><html>
    -
    -                            <p>More examples like the above can be guessed from the
    -                            <reference class="org.jooq.Field"/> API, as documented in the manual's section about
    -                            <reference id="CONDITION" title="Conditions"/>. For the = operator, the available comparisons are these:</p>
    -
    -</html><java>Condition equal(Select&lt;?&gt; query);
    -Condition equalAny(Select&lt;?&gt; query);
    -Condition equalAll(Select&lt;?&gt; query);</java><html>
    -
    -
    -                            <h3>Selecting from a SELECT - SELECT acts as a Table</h3>
    -							<p>Often, you need to nest a SELECT statement simply because SQL is
    -								limited in power. For instance, if you want to find out which author
    -								has written the most books, then you cannot do this: </p>
    -
    -</html><sql>  SELECT AUTHOR_ID, count(*) books
    -    FROM T_BOOK
    -GROUP BY AUTHOR_ID
    -ORDER BY books DESC</sql><html>
    -
    -							<p>Instead, you have to do this (or something similar). For jOOQ, this
    -								is an excellent example, combining various SQL features into a single
    -								statement. Here's how to do it: </p>
    -
    -							</html><code-pair>
    -<sql>SELECT nested.* FROM (
    -      SELECT AUTHOR_ID, count(*) books
    -        FROM T_BOOK
    -    GROUP BY AUTHOR_ID
    -) nested
    -ORDER BY nested.books DESC
    -
    -
    -</sql><java>Table&lt;Record&gt; nested =
    -    create.select(T_BOOK.AUTHOR_ID, count().as("books"))
    -          .from(T_BOOK)
    -          .groupBy(T_BOOK.AUTHOR_ID).asTable("nested");
    -
    -create.select(nested.getFields())
    -      .from(nested)
    -      .orderBy(nested.getField("books"));</java>
    -							</code-pair><html>
    -
    -							<p>You'll notice how some verbosity seems inevitable when you combine nested SELECT statements with aliasing. </p>
    -
    -	                    	<h3>Selecting a SELECT - SELECT acts as a Field</h3>
    -							<p>Now SQL is even more powerful than that. You can also have SELECT
    -								statements, wherever you can have Fields. It get's harder and harder
    -								to find good examples, because there is always an easier way to
    -								express the same thing. But why not just count the number of books the
    -								really hard way? :-) But then again, maybe you want to take advantage
    -								of <a href="http://blog.jooq.org/2011/09/02/oracle-scalar-subquery-caching/" title="Oracle Scalar Subquery Caching with jOOQ">Oracle Scalar Subquery Caching</a></p>
    -
    -							</html><code-pair>
    -<sql>  SELECT LAST_NAME, (
    -      SELECT COUNT(*)
    -       FROM T_BOOK
    -      WHERE T_BOOK.AUTHOR_ID = T_AUTHOR.ID) books
    -    FROM T_AUTHOR
    -ORDER BY books DESC
    -
    -
    -
    -</sql><java>// The type of books cannot be inferred from the Select&lt;?&gt;
    -Field&lt;Object&gt; books =
    -    create.selectCount()
    -          .from(T_BOOK)
    -          .where(T_BOOK.AUTHOR_ID.equal(T_AUTHOR.ID))
    -          .asField("books");
    -create.select(T_AUTHOR.ID, books)
    -      .from(T_AUTHOR)
    -      .orderBy(books, T_AUTHOR.ID));</java>
    -							</code-pair><html>
    -                    	</html></content>
    -					</section>
    -
    -
    -					<section id="UNION">
    -						<title>UNION and other set operations</title>
    -						<content><html>
    -							<h3>jOOQ's set operation API</h3>
    -							<p>The
    -								<reference class="org.jooq.Select"/> API directly supports the UNION
    -								syntax for all types of Select as discussed in the manual's section about
    -								<reference id="Query" title="Queries and Query subtypes"/>.
    -								It consists of these methods: </p>
    -
    -</html><java>public interface Select&lt;R extends Record&gt; {
    -    Select&lt;R&gt; union(Select&lt;R&gt; select);
    -    Select&lt;R&gt; unionAll(Select&lt;R&gt; select);
    -    Select&lt;R&gt; except(Select&lt;R&gt; select);
    -    Select&lt;R&gt; intersect(Select&lt;R&gt; select);
    -}</java><html>
    -
    -							<p>Hence, this is how you can write a simple UNION with jOOQ:</p>
    -							</html><code-pair>
    -<sql>SELECT TITLE
    -  FROM T_BOOK
    - WHERE PUBLISHED_IN &gt; 1945
    -UNION
    -SELECT TITLE
    -  FROM T_BOOK
    - WHERE AUTHOR_ID = 1</sql><java>create.select(TBook.TITLE)
    -      .from(T_BOOK)
    -      .where(T_BOOK.PUBLISHED_IN.greaterThan(1945))
    -      .union(
    -create.select(T_BOOK.TITLE)
    -      .from(T_BOOK)
    -      .where(T_BOOK.AUTHOR_ID.equal(1)));</java>
    -							</code-pair><html>
    -
    -							<h3>Nested UNIONs</h3>
    -							<p>In some SQL dialects, you can arbitrarily nest UNIONs to several
    -								levels. Be aware, though, that SQLite, Derby and MySQL have serious
    -								syntax limitations. jOOQ tries to render correct UNION SQL statements,
    -								but unfortunately, you can create situations that will cause syntax
    -								errors in the aforementioned dialects. </p>
    -
    -							<p>An example of advanced UNION usage is the following statement in jOOQ: </p>
    -</html><java>// Create a UNION of several types of books
    -Select&lt;?&gt; union =
    -    create.select(T_BOOK.TITLE, T_BOOK.AUTHOR_ID).from(T_BOOK).where(T_BOOK.PUBLISHED_IN.greaterThan(1945)).union(
    -    create.select(T_BOOK.TITLE, T_BOOK.AUTHOR_ID).from(T_BOOK).where(T_BOOK.AUTHOR_ID.equal(1)));
    -
    -// Now, re-use the above UNION and order it by author
    -create.select(union.getField(T_BOOK.TITLE))
    -      .from(union)
    -      .orderBy(union.getField(T_BOOK.AUTHOR_ID).descending());</java><html>
    -
    -							<p>This example does not seem surprising, when you have read the
    -								previous chapters about
    -								<reference id="NESTED" title="nested SELECT statements"/>.
    -								But when you check
    -								out the rendered SQL: </p>
    -
    -</html><sql>-- alias_38173 is an example of a generated alias,
    --- generated by jOOQ for union queries
    -SELECT alias_38173.TITLE FROM (
    -  SELECT T_BOOK.TITLE, T_BOOK.AUTHOR_ID FROM T_BOOK WHERE T_BOOK.PUBLISHED_IN > 1945
    -  UNION
    -  SELECT T_BOOK.TITLE, T_BOOK.AUTHOR_ID FROM T_BOOK WHERE T_BOOK.AUTHOR_ID = 1
    -) alias_38173
    -ORDER BY alias_38173.AUTHOR_ID DESC</sql><html>
    -
    -							<p>You can see that jOOQ takes care of many syntax pitfalls, when
    -								you're not used to the various dialects' unique requirements. The
    -								above automatic aliasing was added in order to be compliant with
    -								MySQL's requirements about aliasing nested selects. </p>
    -
    -							<h3>Several UNIONs</h3>
    -							<p>It is no problem either for you to create SQL statements with several unions. Just write: </p>
    -</html><java>Select&lt;?&gt; part1;
    -Select&lt;?&gt; part2;
    -Select&lt;?&gt; part3;
    -Select&lt;?&gt; part4;
    -
    -// [...]
    -
    -part1.union(part2).union(part3).union(part4);</java><html>
    -
    -							<h3>UNION and the ORDER BY clause</h3>
    -							<p>
    -								Strictly speaking, in SQL, you cannot order a subselect that is part
    -								of a UNION operation. You can only order the whole set. In set theory,
    -								or relational algebra, it wouldn't make sense to order subselects
    -								anyway, as a set operation cannot guarantee order correctness. Often,
    -								you still want to do it, because you apply a LIMIT to every subselect.
    -								Let's say, you want to find the employees with the highest salary in
    -								every department in Postgres syntax:
    -							</p>
    -							</html><code-pair>
    -<sql>SELECT * FROM (
    -  SELECT * FROM emp WHERE dept = 'IT'
    -  ORDER BY salary LIMIT 1
    -) UNION (
    -  SELECT * FROM emp WHERE dept = 'Marketing'
    -  ORDER BY salary LIMIT 1
    -) UNION (
    -  SELECT * FROM emp WHERE dept = 'R&amp;D'
    -  ORDER BY salary LIMIT 1
    -)</sql><java>create.selectFrom(EMP).where(DEPT.equal("IT"))
    -      .orderBy(SALARY).limit(1)
    -      .union(
    -create.selectFrom(EMP).where(DEPT.equal("Marketing"))
    -      .orderBy(SALARY).limit(1))
    -      .union(
    -create.selectFrom(EMP).where(DEPT.equal("R&amp;D")
    -      .orderBy(SALARY).limit(1)))
    -
    -
    -</java>
    -							</code-pair><html>
    -
    -							<p>There is a subtle difference between the above two queries.
    -								In SQL, every UNION subselect is in fact a
    -							<reference id="NESTED" title="nested SELECT"/>, wrapped in parentheses.
    -							In this example, the notion of "nested SELECT" and "subselect" are slightly
    -							different.</p>
    -						</html></content>
    -					</section>
    -
    -
    -					<section id="FUNCTIONS">
    -						<title>Functions and aggregate operators</title>
    -						<content><html>
    -							<h3>Supporting for vendor-specific functions</h3>
    -							<p>jOOQ allows you to access native functions from your RDBMS. jOOQ
    -								follows two strategies: </p>
    -							<ul>
    -								<li>Implement all SQL-92, SQL:1999, SQL:2003, and SQL:2008 standard
    -									functions, aggregate operators, and window functions. Standard
    -									functions could be
    -									<a href="http://oreilly.com/catalog/sqlnut/chapter/ch04.html" title="O'Reilly listing of SQL-92 standard functions and deviations thereof">these functions as listed by O'Reilly</a>. </li>
    -								<li>Take the most useful of vendor-specific functions and simulate
    -									them for other RDBMS, where they may not be supported. An example for
    -									this are
    -									<a href="http://psoug.org/reference/analytic_functions.html" title="An example listing of Oracle Analytic Functions">Oracle Analytic Functions</a></li>
    -							</ul>
    -
    -							<h3>Functions </h3>
    -							<p>These are just a few functions in the Factory, so you get the idea: </p>
    -
    -</html><java><![CDATA[Field<String> rpad(Field<String> field, Field<? extends Number> length);
    -Field<String> rpad(Field<String> field, int length);
    -Field<String> rpad(Field<String> field, Field<? extends Number> length, Field<String> c);
    -Field<String> rpad(Field<String> field, int length, char c);
    -Field<String> lpad(Field<String> field, Field<? extends Number> length);
    -Field<String> lpad(Field<String> field, int length);
    -Field<String> lpad(Field<String> field, Field<? extends Number> length, Field<String> c);
    -Field<String> lpad(Field<String> field, int length, char c);
    -Field<String> replace(Field<String> field, Field<String> search);
    -Field<String> replace(Field<String> field, String search);
    -Field<String> replace(Field<String> field, Field<String> search, Field<String> replace);
    -Field<String> replace(Field<String> field, String search, String replace);
    -Field<Integer> position(Field<String> field, String search);
    -Field<Integer> position(Field<String> field, Field<String> search);]]></java><html>
    -
    -							<h3>Aggregate functions</h3>
    -							<p>Aggregate functions work just like functions, even if they have a
    -								slightly different semantics. Here are some examples from
    -								Factory: </p>
    -
    -</html><java><![CDATA[// Every-day, SQL standard aggregate functions
    -AggregateFunction<Integer> count(Field<?> field);
    -AggregateFunction<T> max(Field<T> field);
    -AggregateFunction<T> min(Field<T> field);
    -AggregateFunction<BigDecimal> sum(Field<? extends Number> field);
    -AggregateFunction<BigDecimal> avg(Field<? extends Number> field);
    -
    -
    -// DISTINCT keyword in aggregate functions
    -AggregateFunction<Integer> countDistinct(Field<?> field);
    -AggregateFunction<T> maxDistinct(Field<T> field);
    -AggregateFunction<T> minDistinct(Field<T> field);
    -AggregateFunction<BigDecimal> sumDistinct(Field<? extends Number> field);
    -AggregateFunction<BigDecimal> avgDistinct(Field<? extends Number> field);
    -
    -// String aggregate functions
    -AggregateFunction<String> groupConcat(Field<?> field);
    -AggregateFunction<String> groupConcatDistinct(Field<?> field);
    -OrderedAggregateFunction<String> listAgg(Field<?> field);
    -OrderedAggregateFunction<String> listAgg(Field<?> field, String separator);
    -
    -// Statistical functions
    -AggregateFunction<BigDecimal> median(Field<? extends Number> field);
    -AggregateFunction<BigDecimal> stddevPop(Field<? extends Number> field);
    -AggregateFunction<BigDecimal> stddevSamp(Field<? extends Number> field);
    -AggregateFunction<BigDecimal> varPop(Field<? extends Number> field);
    -AggregateFunction<BigDecimal> varSamp(Field<? extends Number> field);
    -]]></java><html>
    -
    -							<p>A typical example of how to use an aggregate operator is when
    -								generating the next key on insertion of an ID. When you want to
    -								achieve something like this </p>
    -
    -							</html><code-pair>
    -<sql>SELECT MAX(ID) + 1 AS next_id
    -  FROM T_AUTHOR</sql><java>create.select(max(ID).add(1).as("next_id"))
    -      .from(T_AUTHOR);</java>
    -							</code-pair><html>
    -
    -							<p>See also the section about
    -								<reference id="ARITHMETIC" title="Arithmetic operations"/></p>
    -
    -                            <h3>Ordered aggregate functions</h3>
    -                            <p>Oracle and some other databases support ordered
    -                               aggregate functions. This means you can provide
    -                               an ORDER BY clause to an aggregate function, which will
    -                               be taken into consideration when aggregating. The best example
    -                               for this is LISTAGG() (also known as GROUP_CONCAT in other dialects).
    -                               The following query groups by authors and concatenates
    -                               their books' titles</p>
    -							</html><code-pair>
    -<sql>SELECT   LISTAGG(TITLE, ', ')
    -         WITHIN GROUP (ORDER BY TITLE)
    -FROM     BOOK
    -GROUP BY AUTHOR_ID</sql><java>create.select(listAgg(BOOK.TITLE, ", ")
    -      .withinGroupOrderBy(BOOK.TITLE))
    -      .from(BOOK)
    -      .groupBy(BOOK.AUTHOR_ID)</java>
    -							</code-pair><html>
    -
    -
    -							<h3>Window functions</h3>
    -							<p>Most major RDBMS support the concept of window functions. jOOQ knows
    -								of implementations in DB2, Oracle, Postgres, SQL Server, and Sybase
    -								SQL Anywhere,
    -								and supports most of their specific syntaxes. Window functions can be
    -								used for things like calculating a "running total". The following example
    -								fetches transactions and the running total for every transaction going
    -								back to the beginning of the transaction table (ordered by booked_at).
    -
    -								They are accessible from the previously seen AggregateFunction type using
    -								the over() method:
    -							</p>
    -
    -							</html><code-pair>
    -<sql>SELECT booked_at, amount,
    -   SUM(amount) OVER (PARTITION BY 1
    -                     ORDER BY booked_at
    -                     ROWS BETWEEN UNBOUNDED PRECEDING
    -                     AND CURRENT ROW) AS total
    -  FROM transactions</sql><java>create.select(t.BOOKED_AT, t.AMOUNT,
    -         sum(t.AMOUNT).over().partitionByOne()
    -                      .orderBy(t.BOOKED_AT)
    -                      .rowsBetweenUnboundedPreceding()
    -                      .andCurrentRow().as("total")
    -      .from(TRANSACTIONS.as("t"));</java>
    -							</code-pair><html>
    -						</html></content>
    -					</section>
    -
    -
    -					<section id="PROCEDURES">
    -						<title>Stored procedures and functions</title>
    -						<content><html>
    -							<h3>Interaction with stored procedures</h3>
    -							<p>
    -								The full power of your database's vendor-specific extensions can hardly
    -								be obtained outside of the
    -								database itself. Most modern RDBMS support
    -								their own procedural language. With jOOQ, stored procedures are
    -								integrated easily
    -							</p>
    -
    -							<p>The main way to interact with your RDBMS's stored procedures and
    -								functions is by using the generated artefacts. See the manual's
    -								section about
    -								<reference id="PROCEDURE" title="generating procedures and packages"/>
    -							    for more details
    -								about the source code generation for stored procedures and functions.
    -							</p>
    -
    -							<h3>Stored functions</h3>
    -							<p>When it comes to DSL, stored functions can be very handy in SQL
    -								statements as well. Every stored function (this also applies to
    -								FUNCTIONS in Oracle PACKAGES) can generate a Field representing a call
    -								to that function. Typically, if you have this type of function in your
    -								database: </p>
    -
    -</html><sql>CREATE OR REPLACE FUNCTION f_author_exists (author_name VARCHAR2)
    -RETURN NUMBER;</sql><html>
    -
    -							<p>Then convenience methods like these are generated: </p>
    -</html><java>// Create a field representing a function with another field as parameter
    -public static Field&lt;BigDecimal&gt; fAuthorExists(Field&lt;String&gt; authorName) { // [...]
    -
    -// Create a field representing a function with a constant parameter
    -public static Field&lt;BigDecimal&gt; fAuthorExists(String authorName) { // [...]</java><html>
    -
    -							<p>Let's say, you have a T_PERSON table with persons' names in it, and
    -								you want to know whether there exists an author with precisely that
    -								name, you can reuse the above stored function in a SQL query: </p>
    -
    -							</html><code-pair>
    -<sql>SELECT T_PERSON.NAME, F_AUTHOR_EXISTS(T_PERSON.NAME)
    -  FROM T_PERSON
    -
    --- OR:
    -
    -SELECT T_PERSON.NAME
    -  FROM T_PERSON
    - WHERE F_AUTHOR_EXISTS(T_PERSON.NAME) = 1</sql><java>create.select(T_PERSON.NAME, Functions.fAuthorExists(T_PERSON.NAME))
    -      .from(T_PERSON);
    -
    -// OR: Note, the static import of Functions.*
    -create.select(T_PERSON.NAME)
    -      .from(T_PERSON)
    -      .where(fAuthorExists(T_PERSON.NAME));</java>
    -							</code-pair><html>
    -
    -							<h3>Stored procedures</h3>
    -							<p>The notion of a stored procedure is implemented in most RDBMS by the
    -								fact, that the procedure has no RETURN VALUE (like void in Java), but
    -								it may well have OUT parameters. Since there is not a standard way how
    -								to embed stored procedures in SQL, they cannot be integrated in jOOQ's
    -								DSL either. </p>
    -						</html></content>
    -					</section>
    -
    -
    -					<section id="ARITHMETIC">
    -						<title>Arithmetic operations and concatenation</title>
    -						<content><html>
    -							<h3>Mathematical operations</h3>
    -							<p>
    -								Your database can do the math for you. Most arithmetic operations are
    -								supported, but also string concatenation can be very efficient if done
    -								already in the database.
    -							</p>
    -							<p>Arithmetic operations are implemented just like
    -								<reference id="FUNCTIONS" title="functions"/>, with
    -								similar limitations as far as type restrictions are concerned. You can
    -								use any of these operators: </p>
    -
    -							</html><config>  +  -  *  /  %</config><html>
    -
    -							<p>In order to express a SQL query like this one: </p>
    -							</html><sql>SELECT ((1 + 2) * (5 - 3) / 2) % 10 FROM DUAL</sql><html>
    -							<p>You can write something like this in jOOQ: </p>
    -							</html><java>create.select(val(1).add(2).mul(val(5).sub(3)).div(2).mod(10));	</java><html>
    -
    -							<h3>Datetime arithmetic</h3>
    -							<p>jOOQ also supports the Oracle-style syntax for adding days to a Field&lt;? extends java.util.Date&gt; </p>
    -							</html><code-pair>
    -								<sql>SELECT SYSDATE + 3 FROM DUAL;</sql><java>create.select(currentTimestamp().add(3));</java>
    -							</code-pair><html>
    -
    -							<p>
    -								For more advanced datetime arithmetic, use the Factory's timestampDiff() and dateDiff() functions,
    -								as well as jOOQ's built-in SQL standard INTERVAL data type support:
    -							</p>
    -							<ul>
    -								<li>INTERVAL YEAR TO MONTH: <reference class="org.jooq.types.YearToMonth"/></li>
    -								<li>INTERVAL DAY TO SECOND: <reference class="org.jooq.types.DayToSecond"/></li>
    -							</ul>
    -
    -							<h3>String concatenation</h3>
    -							<p>This is not really an arithmetic expression, but it's still an
    -								expression with operators: The string concatenation. jOOQ
    -								provides you with the Field's concat() method:</p>
    -							</html><code-pair>
    -<sql>SELECT 'A' || 'B' || 'C' FROM DUAL
    -
    --- Or in MySQL:
    -SELECT concat('A', 'B', 'C')</sql><java>&#160;
    -// For all RDBMS, including MySQL:
    -create.select(concat("A", "B", "C"));
    -
    -</java>
    -							</code-pair><html>
    -						</html></content>
    -					</section>
    -
    -
    -					<section id="CASE">
    -						<title>The CASE clause</title>
    -						<content><html>
    -							<h3>The two flavours of CASE</h3>
    -							<p>The CASE clause is part of the standard SQL syntax. While some RDBMS
    -								also offer an IF clause, or a DECODE function, you can always rely on
    -								the two types of CASE syntax: </p>
    -
    -							</html><code-pair>
    -<sql>CASE WHEN T_AUTHOR.FIRST_NAME = 'Paulo'  THEN 'brazilian'
    -     WHEN T_AUTHOR.FIRST_NAME = 'George' THEN 'english'
    -                                         ELSE 'unknown'
    -END
    -
    --- OR:
    -
    -CASE T_AUTHOR.FIRST_NAME WHEN 'Paulo'  THEN 'brazilian'
    -                         WHEN 'George' THEN 'english'
    -                                       ELSE 'unknown'
    -END </sql><java>create.decode()
    -      .when(T_AUTHOR.FIRST_NAME.equal("Paulo"), "brazilian")
    -      .when(T_AUTHOR.FIRST_NAME.equal("George"), "english")
    -      .otherwise("unknown");
    -
    -// OR:
    -
    -create.decode().value(T_AUTHOR.FIRST_NAME)
    -               .when("Paulo", "brazilian")
    -               .when("George", "english")
    -               .otherwise("unknown");</java>
    -							</code-pair><html>
    -
    -							<p>
    -								In jOOQ, both syntaxes are supported (although, Derby only knows the
    -								first one, which is more general). Unfortunately, both case and else
    -								are reserved words in Java. jOOQ chose to use decode() from the Oracle
    -								DECODE function, and otherwise(), which means the same as else. Please
    -								note that in the above examples, all values were always constants. You
    -								can of course also use Field instead of the various constants.
    -							</p>
    -							<p>A CASE clause can be used anywhere where you can place a Field. For
    -								instance, you can SELECT the above expression, if you're selecting
    -								from T_AUTHOR: </p>
    -</html><sql>SELECT T_AUTHOR.FIRST_NAME, [... CASE EXPR ...] AS nationality
    -  FROM T_AUTHOR</sql><html>
    -
    -
    -  							<h3>CASE clauses in an ORDER BY clause</h3>
    -							<p>Sort indirection is often implemented with a CASE clause of a
    -								SELECT's ORDER BY clause. In SQL, this reads: </p>
    -
    -</html><sql>SELECT *
    -FROM T_AUTHOR
    -ORDER BY CASE FIRST_NAME WHEN 'Paulo'  THEN 1
    -                         WHEN 'George' THEN 2
    -                                       ELSE null
    -         END</sql><html>
    -
    -							<p>This will order your authors such that all 'Paulo' come first, then
    -								all 'George' and everyone else last (depending on your RDBMS' handling
    -								of NULL values in sorting). This is a very common task, such that jOOQ
    -								simplifies its use: </p>
    -</html><java>create.select()
    -      .from(T_AUTHOR)
    -      .orderBy(T_AUTHOR.FIRST_NAME.sortAsc("Paulo", "George"))
    -      .execute();</java></content>
    -					</section>
    -
    -
    -					<section id="CAST">
    -						<title>Type casting</title>
    -						<content><html>
    -							<h3>Enforcing a specific type when you need it</h3>
    -							<p>jOOQ's source code generator tries to find the most accurate type
    -								mapping between your vendor-specific data types and a matching Java
    -								type. For instance, most VARCHAR, CHAR, CLOB types will map to String.
    -								Most BINARY, BYTEA, BLOB types will map to byte[]. NUMERIC types will
    -								default to java.math.BigDecimal, but can also be any of
    -								java.math.BigInteger, Long, Integer, Short, Byte, Double, Float. </p>
    -							<p>Sometimes, this automatic mapping might not be what you needed, or
    -								jOOQ cannot know the type of a field (because you created it from a
    -								<reference id="NESTED" title="nested select"/>).
    -								In those cases you would write SQL type CASTs like
    -								this: </p>
    -</html><sql>-- Let's say, your Postgres column LAST_NAME was VARCHAR(30)
    --- Then you could do this:
    -SELECT CAST(T_AUTHOR.LAST_NAME AS TEXT) FROM DUAL</sql><html>
    -							<p>in jOOQ, you can write something like that: </p>
    -							</html><java>create.select(TAuthor.LAST_NAME.cast(PostgresDataType.TEXT));</java><html>
    -							<p>The same thing can be achieved by casting a Field directly to
    -								String.class, as TEXT is the default data type in Postgres to map to
    -								Java's String</p>
    -							</html><java>create.select(TAuthor.LAST_NAME.cast(String.class));</java><html>
    -							<p>The complete CAST API in Field consists of these three methods: </p>
    -</html><java>public interface Field&lt;T&gt; {
    -    &lt;Z&gt; Field&lt;Z&gt; cast(Field&lt;Z&gt; field);
    -    &lt;Z&gt; Field&lt;Z&gt; cast(DataType&lt;Z&gt; type);
    -    &lt;Z&gt; Field&lt;Z&gt; cast(Class&lt;? extends Z&gt; type);
    -}
    -
    -// And additional convenience methods in the Factory:
    -public class Factory {
    -    &lt;T&gt; Field&lt;T&gt; cast(Object object, Field&lt;T&gt; field);
    -    &lt;T&gt; Field&lt;T&gt; cast(Object object, DataType&lt;T&gt; type);
    -    &lt;T&gt; Field&lt;T&gt; cast(Object object, Class&lt;? extends T&gt; type);
    -    &lt;T&gt; Field&lt;T&gt; castNull(Field&lt;T&gt; field);
    -    &lt;T&gt; Field&lt;T&gt; castNull(DataType&lt;T&gt; type);
    -    &lt;T&gt; Field&lt;T&gt; castNull(Class&lt;? extends T&gt; type);
    -}</java></content>
    -					</section>
    -
    -
    -					<section id="SQL">
    -						<title>When it's just easier: Plain SQL</title>
    -						<content><html>
    -							<h3>Plain SQL in jOOQ</h3>
    -							<p>A DSL is a nice thing to have, it feels "fluent" and "natural",
    -								especially if it models a well-known language, such as SQL. But a DSL
    -								is always expressed in another language (Java in this case), which was
    -								not made for exactly that DSL. If it were, then jOOQ would be
    -								implemented on a compiler-level, similar to Linq in .NET. But it's
    -								not, and so, the DSL is limited. We have seen many functionalities
    -								where the DSL becomes verbose. This can be especially true for: </p>
    -							<ul>
    -								<li><reference id="ALIAS" title="aliasing"/></li>
    -								<li><reference id="NESTED" title="nested selects"/></li>
    -								<li><reference id="ARITHMETIC" title="arithmetic expressions"/></li>
    -								<li><reference id="CAST" title="casting"/></li>
    -							</ul>
    -							<p>You'll probably find other examples. If verbosity scares you off,
    -								don't worry. The verbose use-cases for jOOQ are rather rare, and when
    -								they come up, you do have an option. Just write SQL the way you're
    -								used to! </p>
    -							<p>jOOQ allows you to embed SQL as a String in these contexts: </p>
    -							<ul>
    -								<li>Plain SQL as a condition </li>
    -								<li>Plain SQL as a field </li>
    -								<li>Plain SQL as a function </li>
    -								<li>Plain SQL as a table </li>
    -								<li>Plain SQL as a query </li>
    -							</ul>
    -
    -							<p>To construct artefacts wrapping plain SQL, you should use any of
    -								these methods from the Factory class: </p>
    -
    -</html><java><![CDATA[// A condition
    -Condition condition(String sql);
    -Condition condition(String sql, Object... bindings);
    -
    -// A field with an unknown data type
    -Field<Object> field(String sql);
    -Field<Object> field(String sql, Object... bindings);
    -
    -// A field with a known data type
    -<T> Field<T> field(String sql, Class<T> type);
    -<T> Field<T> field(String sql, Class<T> type, Object... bindings);
    -<T> Field<T> field(String sql, DataType<T> type);
    -<T> Field<T> field(String sql, DataType<T> type, Object... bindings);
    -
    -// A field with a known name (properly escaped)
    -Field<Object> fieldByName(String... fieldName);
    -<T> Field<T> fieldByName(Class<T> type, String... fieldName);
    -<T> Field<T> fieldByName(DataType<T> type, String... fieldName)
    -
    -// A function
    -<T> Field<T> function(String name, Class<T> type, Field<?>... arguments);
    -<T> Field<T> function(String name, DataType<T> type, Field<?>... arguments);
    -
    -// A table
    -Table<?> table(String sql);
    -Table<?> table(String sql, Object... bindings);
    -
    -// A query without results (update, insert, etc)
    -Query query(String sql);
    -Query query(String sql, Object... bindings);
    -
    -// A query with results
    -ResultQuery<Record> resultQuery(String sql);
    -ResultQuery<Record> resultQuery(String sql, Object... bindings);
    -
    -// A query with results. This is the same as resultQuery(...).fetch();
    -Result<Record> fetch(String sql);
    -Result<Record> fetch(String sql, Object... bindings);]]></java><html>
    -
    -							<p>Apart from the general factory methods, plain SQL is useful also in
    -								various other contexts. For instance, when adding a .where("a = b")
    -								clause to a query. Hence, there exist several convenience methods
    -								where plain SQL can be inserted usefully. This is an example
    -								displaying all various use-cases in one single query: </p>
    -</html><java><![CDATA[// You can use your table aliases in plain SQL fields
    -// As long as that will produce syntactically correct SQL
    -Field<?> LAST_NAME    = create.field("a.LAST_NAME");
    -
    -// You can alias your plain SQL fields
    -Field<?> COUNT1       = create.field("count(*) x");
    -
    -// If you know a reasonable Java type for your field, you
    -// can also provide jOOQ with that type
    -Field<Integer> COUNT2 = create.field("count(*) y", Integer.class);
    -
    -       // Use plain SQL as select fields
    -create.select(LAST_NAME, COUNT1, COUNT2)
    -
    -       // Use plain SQL as aliased tables (be aware of syntax!)
    -      .from("t_author a")
    -      .join("t_book b")
    -
    -       // Use plain SQL for conditions both in JOIN and WHERE clauses
    -      .on("a.id = b.author_id")
    -
    -       // Bind a variable in plain SQL
    -      .where("b.title != ?", "Brida")
    -
    -       // Use plain SQL again as fields in GROUP BY and ORDER BY clauses
    -      .groupBy(LAST_NAME)
    -      .orderBy(LAST_NAME);]]></java><html>
    -
    -							<p>There are some important things to keep in mind when using plain
    -								SQL: </p>
    -							<ul>
    -								<li>jOOQ doesn't know what you're doing. You're on your own again!
    -								</li>
    -								<li>You have to provide something that will be syntactically correct.
    -									If it's not, then jOOQ won't know. Only your JDBC driver or your
    -									RDBMS will detect the syntax error. </li>
    -								<li>You have to provide consistency when you use variable binding. The
    -									number of ? must match the number of variables </li>
    -								<li>Your SQL is inserted into jOOQ queries without further checks.
    -									Hence, jOOQ can't prevent SQL injection. </li>
    -							</ul>
    -						</html></content>
    -					</section>
    -				</sections>
    -			</section>
    -
    -
    -
    -			<section id="ADVANCED">
    -				<title>Advanced topics</title>
    -				<content><html>
    -					<h3>Overview</h3>
    -					<p>This section covers some advanced topics and features that don't fit into any other section. </p>
    -				</html></content>
    -
    -
    -				<sections>
    -					<section id="MasterData">
    -						<title>Master data and enumeration tables</title>
    -						<content><html>
    -							<h3>Enumeration tables</h3>
    -							<p>Only MySQL and Postgres databases support true ENUM types natively.
    -								Some other RDBMS allow you to map the concept of an ENUM data type to
    -								a CHECK constraint, but those constraints can contain arbitrary SQL.
    -								 With jOOQ, you
    -								can "simulate" ENUM types by declaring a table as a "master data
    -								table" in the configuration. At code-generation time, this table will
    -								be treated specially, and a Java enum type is generated from its data.
    -							</p>
    -
    -							<h3>Configure master data tables</h3>
    -							<p>As previously discussed in the
    -							  <reference id="Configuration" title="configuration and setup"/>
    -							   section, you can configure master data tables as follows: </p>
    -</html><xml><![CDATA[<!-- These properties can be added to the database element: -->
    -<database>
    -  <masterDataTables>
    -    <masterDataTable>
    -      <!-- The name of a master data table -->
    -      <name>[a table name]</name>
    -
    -      <!-- The column used for enum literals -->
    -      <literal>[a column name]</literal>
    -
    -      <!-- The column used for documentation -->
    -      <description>[a column name]</description>
    -    </masterDataTable>
    -
    -    [ <masterDataTable>...</masterDataTable> ... ]
    -  </masterDataTables>
    - </database>]]></xml><html>
    -
    -							<p>The results of this will be a Java enum that looks similar to this: </p>
    -</html><java><![CDATA[public enum TLanguage implements MasterDataType<Integer> {
    -
    -  /**
    -   * English
    -   */
    -  en(1, "en", "English"),
    -
    -  /**
    -   * Deutsch
    -   */
    -  de(2, "de", "Deutsch"),
    -
    -  /**
    -   * Français
    -   */
    -  fr(3, "fr", "Français"),
    -
    -  /**
    -   * null
    -   */
    -  pt(4, "pt", null),
    -  ;
    -
    -  private final Integer id;
    -  private final String cd;
    -  private final String description;
    -
    -  // [ ... constructor and getters for the above properties ]
    -}]]></java><html>
    -
    -							<p>In the above example, you can see how the configured primary key is
    -								mapped to the id member, the configured literal column is mapped to
    -								the cd member and the configured description member is mapped to the
    -								description member and output as Javadoc. In other words, T_LANGUAGE
    -								is a table with 4 rows and at least three columns. </p>
    -							<p>The general contract (with jOOQ 1.6.2+) is that there must be </p>
    -							<ul>
    -								<li> A single-column primary key column of character or integer type
    -								</li>
    -								<li>An optional unique literal column of character or integer type
    -									(otherwise, the primary key is used as enum literal) </li>
    -								<li>An optional description column of any type </li>
    -							</ul>
    -
    -							<h3>Using MasterDataTypes</h3>
    -							<p>The point of MasterDataTypes in jOOQ is that they behave exactly
    -								like true ENUM types. When the above T_LANGUAGE table is referenced by
    -								T_BOOK, instead of generating foreign key navigation methods and a
    -								LANGUAGE_ID Field&lt;Integer&gt;, a Field&lt;TLanguage&gt; is
    -								generated: </p>
    -
    -</html><java><![CDATA[public class TBook extends UpdatableTableImpl<TBookRecord> {
    -
    -  // [...]
    -  public static final TableField<TBookRecord, TLanguage> LANGUAGE_ID =
    -                  new TableFieldImpl<TBookRecord, TLanguage>( /* ... */ );
    -}]]></java><html>
    -
    -							<p>Which can then be used in the TBookRecord directly: </p>
    -</html><java><![CDATA[public class TBookRecord extends UpdatableRecordImpl<TBookRecord> {
    -
    -  // [...]
    -  public TLanguage getLanguageId() { // [...]
    -  public void setLanguageId(TLanguage value) { // [...]
    -}]]></java><html>
    -
    -							<h3>When to use MasterDataTypes</h3>
    -							<p>You can use master data types when you're actually mapping master
    -								data to a Java enum. When the underlying table changes frequently,
    -								those updates will not be reflected by the statically generated code.
    -								Also, be aware that it will be difficult to perform actual JOIN
    -								operations on the underlying table with jOOQ, once the master data
    -								type is generated. </p>
    -						</html></content>
    -					</section>
    -
    -
    -					<section id="CustomTypes">
    -						<title>Custom data types and type conversion</title>
    -						<content><html>
    -							<h3>Your custom type and its associated Converter</h3>
    -							<p>
    -								When using a custom type in jOOQ, you need to let jOOQ know about
    -								its associated <reference class="org.jooq.Converter"/>.
    -								A converter essentially has two generic type parameters:
    -							</p>
    -							<ul>
    -								<li>&lt;U&gt;: The user-defined Java type. This could be <reference class="java.util.GregorianCalendar"/>, for instance.</li>
    -								<li>&lt;T&gt;: The database / SQL type. This could be <reference class="java.sql.Timestamp"/>, for instance.</li>
    -							</ul>
    -							<p>
    -								The above conversion implies that you may want to use a GregorianCalendar for
    -								SQL timestamps, rather than the timestamp type itself. You could then write
    -								a Converter like this:
    -							</p>
    -
    -</html><java><![CDATA[package com.example;
    -
    -import java.sql.Timestamp;
    -import java.util.Calendar;
    -import java.util.GregorianCalendar;
    -
    -import org.jooq.Converter;
    -
    -// Bind T to Timestamp and U to Gregorian calendar, here
    -public class CalendarConverter implements Converter<Timestamp, GregorianCalendar> {
    -
    -    // Provide jOOQ with Class<?> objects of <U> and <T>. These are used by
    -    // jOOQ to discover your converter based on your custom type
    -    // --------------------------------------------------------------------
    -    @Override
    -    public Class<Timestamp> fromType() {
    -        return Timestamp.class;
    -    }
    -
    -    @Override
    -    public Class<GregorianCalendar> toType() {
    -        return GregorianCalendar.class;
    -    }
    -
    -    // Implement the type conversion methods. Convert your user-defined type
    -    // "from" the SQL type when reading "from" the database, or "to" the SQL
    -    // type when writing "to" the database.
    -    @Override
    -    public GregorianCalendar from(Timestamp databaseObject) {
    -        GregorianCalendar calendar = (GregorianCalendar) Calendar.getInstance();
    -        calendar.setTimeInMillis(databaseObject.getTime());
    -        return calendar;
    -    }
    -
    -    @Override
    -    public Timestamp to(GregorianCalendar userObject) {
    -        return new Timestamp(userObject.getTime().getTime());
    -    }
    -}
    -]]></java><html>
    -
    -							<p>
    -								Such a Converter can now be used in various places of the jOOQ
    -								API, especially when reading data from the database:
    -							</p>
    -
    -</html><java><![CDATA[List<GregorianCalendar> result =
    -create.select(T_AUTHOR.DATE_OF_BIRTH)
    -      .from(T_AUTHOR)
    -      .fetch(0, new CalendarConverter());]]></java><html>
    -
    -      						<h3>Using Converters in generated code</h3>
    -      						<p>
    -								A more common use-case, however, is to let jOOQ know about custom
    -								types at code generation time. Use the following configuration elements
    -								to specify, that you'd like to use GregorianCalendar for all database
    -								fields that start with DATE_OF_
    -      						</p>
    -
    -</html><xml><![CDATA[<database>
    -  <!-- First, register your custom types here -->
    -  <customTypes>
    -    <customType>
    -      <!-- Specify the fully-qualified class name of your custom type -->
    -      <name>java.util.GregorianCalendar</name>
    -
    -      <!-- Associate that custom type with your converter. Note, a
    -           custom type can only have one converter in jOOQ -->
    -      <converter>com.example.CalendarConverter</converter>
    -    </customType>
    -  </customTypes>
    -
    -  <!-- Then, associate custom types with database columns -->
    -  <forcedTypes>
    -    <forcedType>
    -      <!-- Specify again he fully-qualified class name of your custom type -->
    -      <name>java.util.GregorianCalendar</name>
    -
    -      <!-- Add a list of comma-separated regular expressions matching columns -->
    -      <expressions>.*\.DATE_OF_.*</expressions>
    -    </forcedType>
    -  </forcedTypes>
    -</database>]]></xml><html>
    -
    -                            <p>
    -                            	The above configuration will lead to T_AUTHOR.DATE_OF_BIRTH
    -                            	being generated like this:
    -                            </p>
    -
    -</html><java>public class TAuthor extends UpdatableTableImpl&lt;TAuthorRecord&gt; {
    -
    -    // [...]
    -    public final TableField&lt;TAuthorRecord, GregorianCalendar&gt; DATE_OF_BIRTH =    // [...]
    -    // [...]
    -
    -}</java><html>
    -
    -                            <p>
    -                            	This means that the bound of &lt;T&gt; will be GregorianCalendar,
    -                            	wherever you reference DATE_OF_BIRTH. jOOQ will use your custom
    -                            	converter when binding variables and when fetching data from
    -                            	<reference class="java.util.ResultSet"/>:
    -                            </p>
    -
    -</html><java><![CDATA[// Get all date of births of authors born after 1980
    -List<GregorianCalendar> result =
    -create.selectFrom(T_AUTHOR)
    -      .where(T_AUTHOR.DATE_OF_BIRTH.greaterThan(new GregorianCalendar(1980, 0, 1)))
    -      .fetch(T_AUTHOR.DATE_OF_BIRTH);]]></java><html>
    -
    -      						<p>
    -      						    Read more about advanced code generation configuration in
    -      						    <reference id="AdvancedConfiguration" title="the manual's section about advanced code generation configuration"/>.
    -      						</p>
    -
    -      						<h3>Using Converters for enum types</h3>
    -      						<p>
    -      							Java's Enum types can be very useful in SQL too.
    -      							Some databases support enumeration types natively (MySQL, Postgres).
    -      							In other cases, you can use the above custom type configuration
    -      							also to provide jOOQ with Converters for your custom Enum types.
    -      							Instead of implementing <reference class="org.jooq.Converter"/>,
    -      							you may choose to extend <reference class="org.jooq.impl.EnumConverter"/>
    -      							instead, which provides some enum-specific default behaviour.
    -      						</p>
    -						</html></content>
    -					</section>
    -
    -
    -					<section id="SchemaMapping">
    -						<title>Mapping generated schemata and tables</title>
    -						<content><html>
    -							<h3>Mapping your DEV schema to a productive environment</h3>
    -							<p>You may wish to design your database in a way that you have several
    -								instances of your schema. This is useful when you want to cleanly
    -								separate data belonging to several customers / organisation units /
    -								branches / users and put each of those entities' data in a separate
    -								database or schema. </p>
    -							<p>In our T_AUTHOR example this would mean that you provide a book
    -								reference database to several companies, such as My Book World and
    -								Books R Us. In that case, you'll probably have a schema setup like
    -								this: </p>
    -							<ul>
    -								<li>DEV: Your development schema. This will be the schema that you
    -									base code generation upon, with jOOQ </li>
    -								<li>MY_BOOK_WORLD: The schema instance for My Book World </li>
    -								<li>BOOKS_R_US: The schema instance for Books R Us </li>
    -							</ul>
    -
    -
    -							<h3>Mapping DEV to MY_BOOK_WORLD with jOOQ</h3>
    -							<p>When a user from My Book World logs in, you want them to access the
    -								MY_BOOK_WORLD schema using classes generated from DEV. This can be
    -								achieved with the
    -								<reference class="org.jooq.conf.RenderMapping"/>
    -								class, that you can equip your Factory's settings
    -								with. Take the following example: </p>
    -
    -</html><java>Settings settings = new Settings()
    -    .withRenderMapping(new RenderMapping()
    -    .withSchemata(
    -        new MappedSchema().withInput("DEV")
    -                          .withOutput("MY_BOOK_WORLD")));
    -
    -// Add the settings to the factory
    -Factory create = new Factory(connection, SQLDialect.ORACLE, settings);
    -
    -// Run queries with the "mapped" factory
    -create.selectFrom(T_AUTHOR).fetch();</java><html>
    -
    -							<p>The query executed with a Factory equipped with the above mapping
    -								will in fact produce this SQL statement: </p>
    -							</html><sql>SELECT * FROM MY_BOOK_WORLD.T_AUTHOR</sql><html>
    -							<p>Even if T_AUTHOR was generated from DEV. </p>
    -
    -							<h3>Mapping several schemata</h3>
    -							<p>Your development database may not be restricted to hold only one DEV
    -								schema. You may also have a LOG schema and a MASTER schema. Let's say
    -								the MASTER schema is shared among all customers, but each customer has
    -								their own LOG schema instance. Then you can enhance your RenderMapping
    -								like this (e.g. using an XML configuration file): </p>
    -
    -</html><xml><![CDATA[<settings xmlns="http://www.jooq.org/xsd/jooq-runtime-2.1.0.xsd">
    -  <renderMapping>
    -    <schemata>
    -      <schema>
    -        <input>DEV</input>
    -        <output>MY_BOOK_WORLD</output>
    -      </schema>
    -      <schema>
    -        <input>LOG</input>
    -        <output>MY_BOOK_WORLD_LOG</output>
    -      </schema>
    -    </schemata>
    -  </renderMapping>
    -</settings>]]></xml><html>
    -
    -                            <p>Note, you can load the above XML file like this:</p>
    -
    -</html><java>Settings settings = JAXB.unmarshal(new File("jooq-runtime.xml"), Settings.class);</java><html>
    -
    -							<p>This will map generated classes from DEV to MY_BOOK_WORLD, from LOG
    -								to MY_BOOK_WORLD_LOG, but leave the MASTER schema alone. Whenever you
    -								want to change your mapping configuration, you will have to create a
    -								new Factory</p>
    -
    -
    -							<h3>Using a default schema</h3>
    -							<p>Another option to switch schema names is to use a default schema for
    -								the Factory's underlying Connection. Many RDBMS support a USE or SET
    -								SCHEMA command, which you can call like this: </p>
    -
    -</html><java>// Set the default schema
    -Schema MY_BOOK_WORLD = ...
    -create.use(MY_BOOK_WORLD);
    -
    -// Run queries with factory having a default schema
    -create.selectFrom(T_AUTHOR).fetch();</java><html>
    -							<p>Queries generated from the above Factory will produce this kind of SQL statement: </p>
    -
    -</html><sql>-- the schema name is omitted from all SQL constructs.
    -SELECT * FROM T_AUTHOR</sql><html>
    -
    -                            <p>If you wish not to render any schema name at all, use the
    -                                following Settings property for this:</p>
    -
    -
    -</html><java>Settings settings = new Settings()
    -    .withRenderSchema(false);
    -
    -// Add the settings to the factory
    -Factory create = new Factory(connection, SQLDialect.ORACLE, settings);
    -
    -// Run queries that omit rendering schema names
    -create.selectFrom(T_AUTHOR).fetch();</java><html>
    -
    -							<h3>Mapping of tables</h3>
    -							<p>Not only schemata can be mapped, but also tables. If you are not the
    -								owner of the database your application connects to, you might need to
    -								install your schema with some sort of prefix to every table. In our
    -								examples, this might mean that you will have to map DEV.T_AUTHOR to
    -								something MY_BOOK_WORLD.MY_APP__T_AUTHOR, where MY_APP__ is a prefix
    -								applied to all of your tables. This can be achieved by creating the
    -								following mapping: </p>
    -
    -</html><java>Settings settings = new Settings()
    -    .withRenderMapping(new RenderMapping()
    -    .withSchemata(
    -        new MappedSchema().withInput("DEV")
    -                          .withOutput("MY_BOOK_WORLD")
    -                          .withTables(
    -         new MappedTable().withInput("T_AUTHOR")
    -                          .withOutput("MY_APP__T_AUTHOR"))));
    -
    -// Add the settings to the factory
    -Factory create = new Factory(connection, SQLDialect.ORACLE, settings);
    -
    -// Run queries with the "mapped" factory
    -create.selectFrom(T_AUTHOR).fetch();</java><html>
    -
    -							<p>The query executed with a Factory equipped with the above mapping will in fact produce this SQL statement: </p>
    -</html><sql>SELECT * FROM MY_BOOK_WORLD.MY_APP__T_AUTHOR</sql><html>
    -
    -                            <p>
    -                            Table mapping and schema mapping can be applied independently, by specifying several MappedSchema entries
    -                            in the above configuration. jOOQ will process them in order of appearance and map at first match. Note that
    -                            you can always omit a MappedSchema's output value, in case of which, only the table mapping is applied.
    -                            If you omit a MappedSchema's input value, the table mapping is applied to all schemata!
    -                            </p>
    -
    -							<h3>Mapping at code generation time</h3>
    -							<p>
    -								Note that you can also hard-wire schema mapping in generated artefacts
    -								at code generation time, e.g. when you have 5 developers with their own
    -								dedicated developer databases, and a common integration database. In the
    -								code generation configuration, you would then write.
    -							</p>
    -</html><xml><![CDATA[<schemata>
    -  <schema>
    -    <!-- Use this as the developer's schema: -->
    -    <inputSchema>LUKAS_DEV_SCHEMA</inputSchema>
    -
    -    <!-- Use this as the integration / production database: -->
    -    <outputSchema>PROD</outputSchema>
    -  </schema>
    -</schemata>]]></xml><html>
    -							<p>
    -								See the manual's section about
    -								<reference id="META" title="jooq-codegen configuration"/>
    -								for more details
    -							</p>
    -						</html></content>
    -					</section>
    -
    -
    -					<section id="ExecuteListener">
    -						<title>Execute listeners and the jOOQ Console</title>
    -						<content><html>
    -							<h3>ExecuteListener</h3>
    -							<p>
    -								The <reference id="Factory" title="jOOQ Factory Settings"/>
    -								let you specify a list of <reference class="org.jooq.ExecuteListener"/> classes.
    -								The ExecuteListener is essentially an event listener for
    -								Query, Routine, or ResultSet render, prepare, bind, execute, fetch steps. It is a
    -								base type for loggers, debuggers, profilers, data collectors. Advanced ExecuteListeners
    -								can also provide custom implementations of Connection, PreparedStatement and ResultSet
    -								to jOOQ in apropriate methods. For convenience, consider extending
    -								<reference class="org.jooq.impl.DefaultExecuteListener"/>
    -								instead of implementing this interface.
    -							</p>
    -							<p>
    -								Here is a sample implementation of an ExecuteListener, that is simply counting
    -								the number of queries per type that are being executed using jOOQ:
    -							</p>
    -
    -</html><java><![CDATA[package com.example;
    -
    -public class StatisticsListener extends DefaultExecuteListener {
    -    public static Map<ExecuteType, Integer> STATISTICS = new HashMap<ExecuteType, Integer>();
    -
    -    // Count "start" events for every type of query executed by jOOQ
    -    @Override
    -    public void start(ExecuteContext ctx) {
    -        Integer count = STATISTICS.get(ctx.type());
    -
    -        if (count == null) {
    -            count = 0;
    -        }
    -
    -        STATISTICS.put(ctx.type(), count + 1);
    -    }
    -}]]></java><html>
    -
    -							<p>
    -								Now, configure jOOQ's runtime to load your listener
    -							</p>
    -
    -</html><xml><![CDATA[<settings>
    -  <executeListeners>
    -    <executeListener>com.example.StatisticsListener</executeListener>
    -  </executeListeners>
    -</settings>]]></xml><html>
    -
    -							<p>
    -								And log results any time with a snippet like this:
    -							</p>
    -
    -</html><java><![CDATA[log.info("STATISTICS");
    -log.info("----------");
    -
    -for (ExecuteType type : ExecuteType.values()) {
    -    log.info(type.name(), StatisticsListener.STATISTICS.get(type) + " executions");
    -}]]></java><html>
    -                            <p>
    -                            	This may result in the following log output:
    -                            </p>
    -
    -</html><config>15:16:52,982  INFO - TEST STATISTICS
    -15:16:52,982  INFO - ---------------
    -15:16:52,983  INFO - READ                     : 919 executions
    -15:16:52,983  INFO - WRITE                    : 117 executions
    -15:16:52,983  INFO - DDL                      : 2 executions
    -15:16:52,983  INFO - BATCH                    : 4 executions
    -15:16:52,983  INFO - ROUTINE                  : 21 executions
    -15:16:52,983  INFO - OTHER                    : 30 executions</config><html>
    -							<p>
    -								Please read the
    -								<a href="http://www.jooq.org/javadoc/latest/org/jooq/ExecuteListener.html" title="ExecuteListener Javadoc">ExecuteListener Javadoc</a>
    -								for more details
    -							</p>
    -
    -							<h3>jOOQ Console</h3>
    -							<p>
    -							    The ExecuteListener API was driven by a feature request by Christopher Deckers, who has
    -							    had the courtesy to contribute the jOOQ Console, a sample application interfacing
    -							    with jOOQ's ExecuteListeners. The jOOQ Console logs all queries executed by jOOQ and
    -							    displays them nicely in a Swing application. With the jOOQ Console's logger, you can:
    -						    </p>
    -						    <ul>
    -						    	<li>Activate the console's DebugListener anytime (in-process or if the remote server is active).</li>
    -						    	<li>View simple and batch queries and their parameters.</li>
    -						    	<li>Reformat queries along with syntax highlighting for better readability.</li>
    -						    	<li>View stack trace of originator of the call.</li>
    -						    	<li>Dump the stack to stdout when in an IDE, to directly navigate to relevant classes.</li>
    -						    	<li>Track execution time, binding time, parsing time, rows read, fields read.</li>
    -						    	<li>Show/hide queries depending on their type (SELECT, UPDATE, etc.).</li>
    -						    	<li>Sort any column (timing columns, queries, types, etc.)</li>
    -						    	<li>Easy copy paste of rows/columns to Spreadsheet editors.</li>
    -						    </ul>
    -
    -						    <p>
    -						    	A short overview of such a debugging session can be seen here:
    -						    </p>
    -   							<div class="screenshot">
    -								<img class="screenshot" src="&lt;?=$root?&gt;/img/jooq-console-01.png" alt="jOOQ Console example"/>
    -							</div>
    -						    <p>
    -							    Please note that the jOOQ Console is still experimental.
    -							    Any feedback is very welcome on
    -							    <a href="http://groups.google.com/group/jooq-user" title="the jooq-user group">the jooq-user group</a>
    -							</p>
    -							<h3>jOOQ Console operation modes</h3>
    -							<p>
    -								The jOOQ Console can be run in two different modes:
    -							</p>
    -							<ul>
    -								<li>In-process mode: running in the same process as the queries you're analysing</li>
    -								<li>"headless" mode: running remotely</li>
    -							</ul>
    -
    -							<p>
    -								Both modes will require that you set the
    -								<reference class="org.jooq.debug.DebugListener"/>
    -								in the Factory's settings. When using XML settings:
    -							</p>
    -
    -</html><xml><![CDATA[<settings>
    -  <executeListeners>
    -    <executeListener>org.jooq.debug.DebugListener</executeListener>
    -  </executeListeners>
    -</settings>]]></xml><html>
    -
    -							<p>
    -								Or when using programmatic settings:
    -							</p>
    -</html><java><![CDATA[Settings settings = new Settings()
    -    .getExecuteListeners().add("org.jooq.debug.DebugListener");
    -Factory factory = new Factory(connection, dialect, settings);]]></java><html>
    -
    -							<h3>In-process mode</h3>
    -							<p>
    -								The in-process mode is useful for Swing applications or other,
    -								locally run Java programs accessing the database via jOOQ.
    -								In order to launch the jOOQ Console "in-process", specify the
    -								previously documented settings and launch the Console as follows:
    -							</p>
    -
    -</html><java><![CDATA[// Define a DatabaseDescriptor for the "in-process" mode
    -// It is needed for the "Editor" tab
    -DatabaseDescriptor descriptor = new DatabaseDescriptor() {
    -
    -    // Return your generated schema. This is used by the console
    -    // to introspect your schema data
    -    @Override
    -    public Schema getSchema() {
    -        return com.example.MySchema.MY_SCHEMA;
    -    }
    -
    -    // Return the SQL dialect that you're using
    -    @Override
    -    public SQLDialect getSQLDialect() {
    -        return SQLDialect.ORACLE;
    -    }
    -
    -    // Return a connection
    -    @Override
    -    public Connection createConnection() {
    -        try {
    -            return DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "test", "test");
    -        }
    -        catch (Exception ignore) {}
    -    }
    -};
    -
    -// Now pass this database descriptor to the Console and make it visible
    -try {
    -
    -    // Use this for a nicer look-and-feel
    -    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    -
    -    // Create a new Console
    -    Console console = new Console(descriptor, true);
    -    console.setLoggingActive(true);
    -    console.setVisible(true);
    -}
    -catch (Exception ignore) {}
    -]]></java><html>
    -
    -							<p>
    -								Only in the in-process mode, you can execute ad-hoc queries directly
    -								from the console, if you provide it with proper DatabaseDescriptor.
    -								These queries are executed from the Editor pane which features:
    -							</p>
    -							<ul>
    -								<li>SQL editing within the console.</li>
    -								<li>Incremental search on tables.</li>
    -								<li>Simple code completion with tables/columns/SQL keywords.</li>
    -								<li>Syntax highlighting and formatting capabilities.</li>
    -								<li>Results shown in one or several tabs.</li>
    -								<li>Easy analysis of Logger output by copy/pasting/running queries in the Editor.</li>
    -							</ul>
    -   							<div class="screenshot">
    -								<img class="screenshot" src="&lt;?=$root?&gt;/img/jooq-console-02.png" alt="jOOQ Console example"/>
    -							</div>
    -
    -                            <h3>"Headless" mode</h3>
    -							<p>
    -								In J2EE or other server/client environments, you may not be able
    -								to run the console in the same process as your application. You
    -								can then run the jOOQ Console in "headless" mode. In addition to
    -								the previously documented settings, you'll have to start a
    -								debugger server in your application process, that the console can
    -								connect to:
    -							</p>
    -
    -</html><java>// Create a new RemoteDebuggerServer in your application that listens to
    -// incoming connections on a given port
    -SERVER = new RemoteDebuggerServer(DEBUGGER_PORT);</java><html>
    -
    -							<p>
    -								Now start your application along with the debugger server
    -								and launch the console with this command:
    -							</p>
    -
    -</html><config>java -jar jooq-console-2.1.0.jar [host] [port]</config><html>
    -
    -							<p>
    -								Depending on your distribution, you may have to manually add
    -								rsyntaxtextarea-1.5.0.jar and jOOQ artefacts on your classpath.
    -							</p>
    -						</html></content>
    -					</section>
    -
    -
    -					<section id="OracleHints">
    -						<title>Adding Oracle hints to queries</title>
    -						<content><html>
    -							<h3>How to embed Oracle hints in SELECT</h3>
    -							<p>If you are closely coupling your application to an Oracle (or CUBRID) database,
    -								you might need to be able to pass hints of the form /*+HINT*/ with
    -								your SQL statements to the Oracle database. For example: </p>
    -</html><sql>SELECT /*+ALL_ROWS*/ FIRST_NAME, LAST_NAME
    -  FROM T_AUTHOR</sql><html>
    -
    -  							<p>This can be done in jOOQ using the .hint() clause in your SELECT statement: </p>
    -</html><java>create.select(FIRST_NAME, LAST_NAME)
    -      .hint("/*+ALL_ROWS*/")
    -      .from(T_AUTHOR);</java><html>
    -
    -							<p>Note that you can pass any string in the .hint() clause. If you use
    -								that clause, the passed string will always be put in between the
    -								SELECT [DISTINCT] keywords and the actual projection list </p>
    -						</html></content>
    -					</section>
    -
    -
    -					<section id="CONNECTBY">
    -						<title>The Oracle CONNECT BY clause</title>
    -						<content><html>
    -							<h3>CONNECT BY .. STARTS WITH</h3>
    -							<p>If you are closely coupling your application to an Oracle (or CUBRID) database,
    -								you can take advantage of some Oracle-specific features, such as the
    -								CONNECT BY clause, used for hierarchical queries. The formal syntax
    -								definition is as follows: </p>
    -
    -</html><sql>--   SELECT ..
    ---     FROM ..
    ---    WHERE ..
    - CONNECT BY [NOCYCLE] condition [AND condition, ...] [START WITH condition]
    --- GROUP BY ..</sql><html>
    -							<p>This can be done in jOOQ using the .connectBy(Condition) clauses in your SELECT statement: </p>
    -</html><java>// Some Oracle-specific features are only available
    -// from the OracleFactory
    -OracleFactory create = new OracleFactory(connection);
    -
    -// Get a table with elements 1, 2, 3, 4, 5
    -create.select(create.rownum())
    -      .connectBy(create.level().lessOrEqual(5))
    -      .fetch();</java><html>
    -
    -							<p>Here's a more complex example where you can recursively fetch
    -								directories in your database, and concatenate them to a path:</p>
    -</html><java><![CDATA[ OracleFactory ora = new OracleFactory(connection);
    -
    - List<?> paths =
    - ora.select(ora.sysConnectByPath(DIRECTORY.NAME, "/").substring(2))
    -    .from(DIRECTORY)
    -    .connectBy(ora.prior(DIRECTORY.ID).equal(DIRECTORY.PARENT_ID))
    -    .startWith(DIRECTORY.PARENT_ID.isNull())
    -    .orderBy(ora.literal(1))
    -    .fetch(0);]]></java><html>
    -
    -    						<p>The output might then look like this</p>
    -</html><text>+------------------------------------------------+
    -|substring                                       |
    -+------------------------------------------------+
    -|C:                                              |
    -|C:/eclipse                                      |
    -|C:/eclipse/configuration                        |
    -|C:/eclipse/dropins                              |
    -|C:/eclipse/eclipse.exe                          |
    -+------------------------------------------------+
    -|...21 record(s) truncated...
    -</text></content>
    -					</section>
    -
    -
    -				    <section id="PIVOT">
    -				    	<title>The Oracle 11g PIVOT clause</title>
    -						<content><html>
    -							<h3>PIVOT (aggregate FOR column IN (columns))</h3>
    -							<p>If you are closely coupling your application to an Oracle database,
    -								you can take advantage of some Oracle-specific features, such as the
    -								PIVOT clause, used for statistical analyses. The formal syntax
    -								definition is as follows: </p>
    -</html><sql>-- SELECT ..
    -     FROM table PIVOT (aggregateFunction [, aggregateFunction] FOR column IN (expression [, expression]))
    ---  WHERE ..</sql><html>
    -
    -							<p>
    -								The PIVOT clause is available from the
    -								<reference class="org.jooq.Table"/>
    -								type, as pivoting is done directly on a table.
    -								Currently, only Oracle's PIVOT clause is supported. Support for SQL Server's
    -								PIVOT clause will be added later. Also, jOOQ may simulate PIVOT for other
    -								dialects in the future.
    -							</p>
    -						</html></content>
    -				    </section>
    -
    -
    -				    <section id="DIVISION">
    -				    	<title>jOOQ's relational division syntax</title>
    -						<content><html>
    -							<h3>Relational division</h3>
    -							<p>
    -							    There is one operation in relational algebra that is not given
    -							    a lot of attention, because it is rarely used in real-world
    -							    applications. It is the relational division, the opposite operation
    -							    of the cross product (or, relational multiplication).
    -								The following is an approximate definition of a relational division:
    -							</p>
    -
    -</html><config>Assume the following cross join / cartesian product
    -C = A × B
    -
    -Then it can be said that
    -A = C ÷ B
    -B = C ÷ A</config><html>
    -
    -
    -							<p>
    -							   With jOOQ, you can simplify using relational divisions
    -							   by using the following syntax:
    -							</p>
    -
    -</html><java>C.divideBy(B).on(C.ID.equal(B.C_ID)).returning(C.TEXT)</java><html>
    -
    -							<p>The above roughly translates to</p>
    -
    -</html><sql>SELECT DISTINCT C.TEXT FROM C "c1"
    -WHERE NOT EXISTS (
    -  SELECT 1 FROM B
    -  WHERE NOT EXISTS (
    -    SELECT 1 FROM C "c2"
    -    WHERE "c2".TEXT = "c1".TEXT
    -    AND "c2".ID = B.C_ID
    -  )
    -)</sql><html>
    -
    -							<p>
    -								Or in plain text: Find those TEXT values in C
    -								whose ID's correspond to all ID's in B. Note
    -								that from the above SQL statement, it is immediately
    -								clear that proper indexing is of the essence.
    -								Be sure to have indexes on all columns referenced
    -								from the on(...) and returning(...) clauses.
    -							</p>
    -
    -							<p>
    -								For more information about relational division
    -								and some nice, real-life examples, see
    -							</p>
    -
    -							<ul>
    -								<li>
    -									<a href="http://en.wikipedia.org/wiki/Relational_algebra#Division" title="Wikipedia article on relational division">http://en.wikipedia.org/wiki/Relational_algebra#Division</a>
    -								</li>
    -								<li>
    -									<a href="http://www.simple-talk.com/sql/t-sql-programming/divided-we-stand-the-sql-of-relational-division/" title="A nice summary of what relational division is and how it is best implemented in SQL">http://www.simple-talk.com/sql/t-sql-programming/divided-we-stand-the-sql-of-relational-division/</a>
    -								</li>
    -							</ul>
    -						</html></content>
    -				    </section>
    -
    -
    -					<section id="Export">
    -						<title>Exporting to XML, CSV, JSON, HTML, Text</title>
    -						<content><html>
    -							<h3>Exporting with jOOQ</h3>
    -							<p>If you are using jOOQ for scripting purposes or in a slim, unlayered
    -								application server, you might be interested in using jOOQ's exporting
    -								functionality (see also importing functionality). You can export any
    -								Result&lt;Record&gt; into any of these formats: </p>
    -
    -							<h3>XML</h3>
    -							<p>Export your results as XML: </p>
    -</html><java>// Fetch books and format them as XML
    -String xml = create.selectFrom(T_BOOK).fetch().formatXML();</java><html>
    -
    -							<p>The above query will result in an XML document looking like the following one: </p>
    -</html><xml><![CDATA[<!-- Find the XSD definition on www.jooq.org: -->
    -<jooq-export:result xmlns:jooq-export="http://www.jooq.org/xsd/jooq-export-1.6.2.xsd">
    -  <fields>
    -    <field name="ID"/>
    -    <field name="AUTHOR_ID"/>
    -    <field name="TITLE"/>
    -  </fields>
    -  <records>
    -    <record>
    -      <value field="ID">1</value>
    -      <value field="AUTHOR_ID">1</value>
    -      <value field="TITLE">1984</value>
    -    </record>
    -    <record>
    -      <value field="ID">2</value>
    -      <value field="AUTHOR_ID">1</value>
    -      <value field="TITLE">Animal Farm</value>
    -    </record>
    -  </records>
    -</jooq-export:result>]]></xml><html>
    -
    -							<h3>CSV</h3>
    -							<p>Export your results as CSV: </p>
    -</html><java>// Fetch books and format them as CSV
    -String csv = create.selectFrom(T_BOOK).fetch().formatCSV();</java><html>
    -
    -							<p>The above query will result in a CSV document looking like the following one: </p>
    -</html><text>ID;AUTHOR_ID;TITLE
    -1;1;1984
    -2;1;Animal Farm</text><html>
    -
    -
    -							<h3>JSON</h3>
    -							<p>Export your results as JSON: </p>
    -
    -</html><java>// Fetch books and format them as JSON
    -String json = create.selectFrom(T_BOOK).fetch().formatJSON();</java><html>
    -							<p>The above query will result in a JSON document looking like the following one: </p>
    -</html><text>{fields:["ID","AUTHOR_ID","TITLE"],
    - records:[[1,1,"1984"],[2,1,"Animal Farm"]]}</text><html>
    -
    - 							<h3>HTML </h3>
    - 							<p>Export your results as HTML: </p>
    -</html><java>// Fetch books and format them as HTML
    -String html = create.selectFrom(T_BOOK).fetch().formatHTML();</java><html>
    -							<p>The above query will result in an HTML document looking like the following one: </p>
    -</html><xml><![CDATA[<table>
    -  <thead>
    -    <tr>
    -      <th>ID</th>
    -      <th>AUTHOR_ID</th>
    -      <th>TITLE</th>
    -    </tr>
    -  </thead>
    -  <tbody>
    -    <tr>
    -      <td>1</td>
    -      <td>1</td>
    -      <td>1984</td>
    -    </tr>
    -    <tr>
    -      <td>2</td>
    -      <td>1</td>
    -      <td>Animal Farm</td>
    -    </tr>
    -  </tbody>
    -</table>]]></xml><html>
    -
    -							<h3>Text</h3>
    -							<p>Export your results as text: </p>
    -</html><java>// Fetch books and format them as text
    -String text = create.selectFrom(T_BOOK).fetch().format();</java><html>
    -
    -							<p>The above query will result in a text document looking like the following one: </p>
    -</html><text>+---+---------+-----------+
    -| ID|AUTHOR_ID|TITLE      |
    -+---+---------+-----------+
    -|  1|        1|1984       |
    -|  2|        1|Animal Farm|
    -+---+---------+-----------+</text></content>
    -					</section>
    -
    -
    -					<section id="Import">
    -						<title>Importing data from XML, CSV</title>
    -						<content><html>
    -							<h3>Importing with jOOQ</h3>
    -							<p>If you are using jOOQ for scripting purposes or in a slim, unlayered
    -								application server, you might be interested in using jOOQ's importing
    -								functionality (see also exporting functionality). You can import data
    -								directly into a table from any of these formats: </p>
    -
    -							<h3>CSV</h3>
    -							<p>The below CSV data represents two author records that may have been
    -								exported previously, by jOOQ's exporting functionality, and then
    -								modified in Microsoft Excel or any other spreadsheet tool: </p>
    -
    -</html><text>ID;AUTHOR_ID;TITLE
    -1;1;1984
    -2;1;Animal Farm</text><html>
    -
    -							<p>With jOOQ, you can load this data using various parameters from the
    -								loader API. A simple load may look like this: </p>
    -
    -</html><java>Factory create = new Factory(connection, SQLDialect.ORACLE);
    -
    -// Load data into the T_AUTHOR table from an input stream
    -// holding the CSV data.
    -create.loadInto(T_AUTHOR)
    -      .loadCSV(inputstream)
    -      .fields(ID, AUTHOR_ID, TITLE)
    -      .execute();</java><html>
    -
    -      						<p>Here are various other examples: </p>
    -</html><java>// Ignore the AUTHOR_ID column from the CSV file when inserting
    -create.loadInto(T_AUTHOR)
    -      .loadCSV(inputstream)
    -      .fields(ID, null, TITLE)
    -      .execute();
    -
    -// Specify behaviour for duplicate records.
    -create.loadInto(T_AUTHOR)
    -
    -      // choose any of these methods
    -      .onDuplicateKeyUpdate()
    -      .onDuplicateKeyIgnore()
    -      .onDuplicateKeyError() // the default
    -
    -      .loadCSV(inputstream)
    -      .fields(ID, null, TITLE)
    -      .execute();
    -
    -// Specify behaviour when errors occur.
    -create.loadInto(T_AUTHOR)
    -
    -      // choose any of these methods
    -      .onErrorIgnore()
    -      .onErrorAbort() // the default
    -
    -      .loadCSV(inputstream)
    -      .fields(ID, null, TITLE)
    -      .execute();
    -
    -// Specify transactional behaviour where this is possible
    -// (e.g. not in container-managed transactions)
    -create.loadInto(T_AUTHOR)
    -
    -      // choose any of these methods
    -      .commitEach()
    -      .commitAfter(10)
    -      .commitAll()
    -      .commitNone() // the default
    -
    -      .loadCSV(inputstream)
    -      .fields(ID, null, TITLE)
    -      .execute();</java><html>
    -
    -							<p>Any of the above configuration methods can be combined to achieve
    -								the type of load you need. Please refer to the API's Javadoc to learn
    -								about more details. Errors that occur during the load are reported by
    -								the execute method's result: </p>
    -
    -</html><java><![CDATA[Loader<TAuthor> loader = /* .. */ .execute();
    -
    -// The number of processed rows
    -int processed = loader.processed();
    -
    -// The number of stored rows (INSERT or UPDATE)
    -int stored = loader.stored();
    -
    -// The number of ignored rows (due to errors, or duplicate rule)
    -int ignored = loader.ignored();
    -
    -// The errors that may have occurred during loading
    -List<LoaderError> errors = loader.errors();
    -LoaderError error = errors.get(0);
    -
    -// The exception that caused the error
    -DataAccessException exception = error.exception();
    -
    -// The row that caused the error
    -int rowIndex = error.rowIndex();
    -String[] row = error.row();
    -
    -// The query that caused the error
    -Query query = error.query();]]></java><html>
    -
    -							<h3>XML </h3>
    -							<p>This will be implemented soon... </p>
    -						</html></content>
    -					</section>
    -
    -
    -					<section id="Batch">
    -						<title>Using JDBC batch operations</title>
    -						<content><html>
    -							<h3>JDBC batch operations</h3>
    -							<p>With JDBC, you can easily execute several statements at once using
    -								the addBatch() method. Essentially, there are two modes in JDBC</p>
    -
    -							<ol>
    -								<li>Execute several queries without bind values</li>
    -								<li>Execute one query several times with bind values</li>
    -							</ol>
    -
    -							<p>In code, this looks like the following snippet:</p>
    -</html><java><![CDATA[// 1. several queries
    -// ------------------
    -Statement stmt = connection.createStatement();
    -stmt.addBatch("INSERT INTO author VALUES (1, 'Erich Gamma')");
    -stmt.addBatch("INSERT INTO author VALUES (2, 'Richard Helm')");
    -stmt.addBatch("INSERT INTO author VALUES (3, 'Ralph Johnson')");
    -stmt.addBatch("INSERT INTO author VALUES (4, 'John Vlissides')");
    -int[] result = stmt.executeBatch();
    -
    -// 2. a single query
    -// -----------------
    -PreparedStatement stmt = connection.prepareStatement("INSERT INTO autho VALUES (?, ?)");
    -stmt.setInt(1, 1);
    -stmt.setString(2, "Erich Gamma");
    -stmt.addBatch();
    -
    -stmt.setInt(1, 2);
    -stmt.setString(2, "Richard Helm");
    -stmt.addBatch();
    -
    -stmt.setInt(1, 3);
    -stmt.setString(2, "Ralph Johnson");
    -stmt.addBatch();
    -
    -stmt.setInt(1, 4);
    -stmt.setString(2, "John Vlissides");
    -stmt.addBatch();
    -
    -int[] result = stmt.executeBatch();]]></java><html>
    -
    -
    -							<h3>This will also be supported by jOOQ</h3>
    -							<p>jOOQ supports executing queries in batch
    -								mode as follows:</p>
    -</html><java><![CDATA[// 1. several queries
    -// ------------------
    -create.batch(
    -	create.insertInto(AUTHOR, ID, NAME).values(1, "Erich Gamma"),
    -	create.insertInto(AUTHOR, ID, NAME).values(2, "Richard Helm"),
    -	create.insertInto(AUTHOR, ID, NAME).values(3, "Ralph Johnson"),
    -	create.insertInto(AUTHOR, ID, NAME).values(4, "John Vlissides"))
    -.execute();
    -
    -// 2. a single query
    -// -----------------
    -create.batch(create.insertInto(AUTHOR, ID, NAME).values("?", "?"))
    -	  .bind(1, "Erich Gamma")
    -	  .bind(2, "Richard Helm")
    -	  .bind(3, "Ralph Johnson")
    -	  .bind(4, "John Vlissides")
    -	  .execute();]]></java></content>
    -					</section>
    -				</sections>
    -			</section>
    -		</sections>
    -	</section>
    -</manual>
    diff --git a/jOOQ-website/src/main/resources/opensans.xml b/jOOQ-website/src/main/resources/opensans.xml
    deleted file mode 100644
    index d36f352cd8..0000000000
    --- a/jOOQ-website/src/main/resources/opensans.xml
    +++ /dev/null
    @@ -1 +0,0 @@
    -<?xml version="1.0" encoding="UTF-8"?><font-metrics metrics-version="2" type="TYPE0"><font-name>OpenSans-Light</font-name><full-name>Open Sans Light</full-name><family-name>Open Sans</family-name><embed/><cap-height>713</cap-height><x-height>530</x-height><ascender>759</ascender><descender>-240</descender><bbox><left>-520</left><bottom>-269</bottom><right>1140</right><top>1047</top></bbox><flags>33</flags><stemv>0</stemv><italicangle>0</italicangle><subtype>TYPE0</subtype><multibyte-extras><cid-type>CIDFontType2</cid-type><default-width>0</default-width><bfranges><bf gi="3" ue="72" us="32"/><bf gi="918" ue="73" us="73"/><bf gi="45" ue="126" us="74"/><bf gi="98" ue="203" us="160"/><bf gi="919" ue="207" us="204"/><bf gi="146" ue="295" us="208"/><bf gi="923" ue="296" us="296"/><bf gi="235" ue="297" us="297"/><bf gi="924" ue="298" us="298"/><bf gi="237" ue="299" us="299"/><bf gi="925" ue="300" us="300"/><bf gi="239" ue="301" us="301"/><bf gi="926" ue="302" us="302"/><bf gi="241" ue="303" us="303"/><bf gi="927" ue="304" us="304"/><bf gi="243" ue="305" us="305"/><bf gi="928" ue="306" us="306"/><bf gi="245" ue="353" us="307"/><bf gi="911" ue="355" us="354"/><bf gi="294" ue="383" us="356"/><bf gi="322" ue="402" us="402"/><bf gi="607" ue="417" us="416"/><bf gi="609" ue="432" us="431"/><bf gi="593" ue="496" us="496"/><bf gi="323" ue="511" us="506"/><bf gi="329" ue="537" us="536"/><bf gi="292" ue="539" us="538"/><bf gi="567" ue="567" us="567"/><bf gi="594" ue="700" us="700"/><bf gi="331" ue="711" us="710"/><bf gi="333" ue="713" us="713"/><bf gi="334" ue="733" us="728"/><bf gi="603" ue="755" us="755"/><bf gi="611" ue="769" us="768"/><bf gi="613" ue="771" us="771"/><bf gi="614" ue="777" us="777"/><bf gi="886" ue="783" us="783"/><bf gi="615" ue="803" us="803"/><bf gi="340" ue="905" us="900"/><bf gi="929" ue="906" us="906"/><bf gi="347" ue="908" us="908"/><bf gi="348" ue="920" us="910"/><bf gi="930" ue="921" us="921"/><bf gi="360" ue="929" us="922"/><bf gi="368" ue="937" us="931"/><bf gi="931" ue="938" us="938"/><bf gi="376" ue="974" us="939"/><bf gi="595" ue="978" us="977"/><bf gi="597" ue="982" us="982"/><bf gi="616" ue="1024" us="1024"/><bf gi="412" ue="1029" us="1025"/><bf gi="932" ue="1031" us="1030"/><bf gi="419" ue="1036" us="1032"/><bf gi="617" ue="1037" us="1037"/><bf gi="424" ue="1103" us="1038"/><bf gi="618" ue="1104" us="1104"/><bf gi="490" ue="1116" us="1105"/><bf gi="619" ue="1117" us="1117"/><bf gi="502" ue="1119" us="1118"/><bf gi="620" ue="1158" us="1120"/><bf gi="659" ue="1167" us="1160"/><bf gi="504" ue="1169" us="1168"/><bf gi="667" ue="1215" us="1170"/><bf gi="934" ue="1216" us="1216"/><bf gi="714" ue="1230" us="1217"/><bf gi="935" ue="1231" us="1231"/><bf gi="729" ue="1299" us="1232"/><bf gi="600" ue="7681" us="7680"/><bf gi="598" ue="7743" us="7742"/><bf gi="506" ue="7813" us="7808"/><bf gi="797" ue="7879" us="7840"/><bf gi="936" ue="7880" us="7880"/><bf gi="838" ue="7881" us="7881"/><bf gi="937" ue="7882" us="7882"/><bf gi="840" ue="7921" us="7883"/><bf gi="512" ue="7923" us="7922"/><bf gi="879" ue="7929" us="7924"/><bf gi="602" ue="8013" us="8013"/><bf gi="578" ue="8203" us="8192"/><bf gi="514" ue="8213" us="8211"/><bf gi="517" ue="8222" us="8215"/><bf gi="525" ue="8226" us="8224"/><bf gi="528" ue="8230" us="8230"/><bf gi="529" ue="8240" us="8240"/><bf gi="530" ue="8243" us="8242"/><bf gi="532" ue="8250" us="8249"/><bf gi="534" ue="8252" us="8252"/><bf gi="535" ue="8260" us="8260"/><bf gi="571" ue="8304" us="8304"/><bf gi="572" ue="8313" us="8308"/><bf gi="536" ue="8319" us="8319"/><bf gi="537" ue="8356" us="8355"/><bf gi="539" ue="8359" us="8359"/><bf gi="885" ue="8363" us="8363"/><bf gi="540" ue="8364" us="8364"/><bf gi="541" ue="8453" us="8453"/><bf gi="542" ue="8467" us="8467"/><bf gi="543" ue="8470" us="8470"/><bf gi="910" ue="8480" us="8480"/><bf gi="544" ue="8482" us="8482"/><bf gi="545" ue="8486" us="8486"/><bf gi="546" ue="8494" us="8494"/><bf gi="547" ue="8542" us="8539"/><bf gi="551" ue="8706" us="8706"/><bf gi="552" ue="8710" us="8710"/><bf gi="553" ue="8719" us="8719"/><bf gi="554" ue="8722" us="8721"/><bf gi="556" ue="8730" us="8730"/><bf gi="557" ue="8734" us="8734"/><bf gi="558" ue="8747" us="8747"/><bf gi="559" ue="8776" us="8776"/><bf gi="560" ue="8800" us="8800"/><bf gi="561" ue="8805" us="8804"/><bf gi="563" ue="9674" us="9674"/><bf gi="909" ue="64256" us="64256"/><bf gi="564" ue="64258" us="64257"/><bf gi="605" ue="64260" us="64259"/><bf gi="590" ue="65279" us="65279"/><bf gi="591" ue="65533" us="65532"/><bf gi="0" ue="65535" us="65535"/></bfranges><cid-widths start-index="0"><wx w="600"/><wx w="0"/><wx w="509"/><wx w="259"/><wx w="240"/><wx w="353"/><wx w="645"/><wx w="570"/><wx w="807"/><wx w="712"/><wx w="191"/><wx w="271"/><wx w="271"/><wx w="550"/><wx w="570"/><wx w="214"/><wx w="321"/><wx w="237"/><wx w="340"/><wx w="570"/><wx w="570"/><wx w="570"/><wx w="570"/><wx w="570"/><wx w="570"/><wx w="570"/><wx w="570"/><wx w="570"/><wx w="570"/><wx w="237"/><wx w="237"/><wx w="570"/><wx w="570"/><wx w="570"/><wx w="420"/><wx w="886"/><wx w="600"/><wx w="626"/><wx w="621"/><wx w="706"/><wx w="551"/><wx w="501"/><wx w="723"/><wx w="719"/><wx w="304"/><wx w="247"/><wx w="581"/><wx w="513"/><wx w="862"/><wx w="721"/><wx w="764"/><wx w="584"/><wx w="764"/><wx w="594"/><wx w="544"/><wx w="523"/><wx w="719"/><wx w="577"/><wx w="892"/><wx w="538"/><wx w="527"/><wx w="576"/><wx w="318"/><wx w="340"/><wx w="318"/><wx w="570"/><wx w="411"/><wx w="577"/><wx w="529"/><wx w="595"/><wx w="475"/><wx w="595"/><wx w="548"/><wx w="299"/><wx w="522"/><wx w="589"/><wx w="226"/><wx w="226"/><wx w="483"/><wx w="226"/><wx w="882"/><wx w="589"/><wx w="585"/><wx w="595"/><wx w="595"/><wx w="389"/><wx w="465"/><wx w="334"/><wx w="589"/><wx w="458"/><wx w="723"/><wx w="498"/><wx w="458"/><wx w="460"/><wx w="353"/><wx w="541"/><wx w="353"/><wx w="570"/><wx w="259"/><wx w="240"/><wx w="570"/><wx w="570"/><wx w="570"/><wx w="570"/><wx w="541"/><wx w="516"/><wx w="577"/><wx w="832"/><wx w="334"/><wx w="432"/><wx w="570"/><wx w="321"/><wx w="832"/><wx w="500"/><wx w="428"/><wx w="570"/><wx w="335"/><wx w="335"/><wx w="577"/><wx w="596"/><wx w="654"/><wx w="237"/><wx w="205"/><wx w="335"/><wx w="360"/><wx w="432"/><wx w="740"/><wx w="740"/><wx w="740"/><wx w="420"/><wx w="600"/><wx w="600"/><wx w="600"/><wx w="600"/><wx w="600"/><wx w="600"/><wx w="807"/><wx w="621"/><wx w="551"/><wx w="551"/><wx w="551"/><wx w="551"/><wx w="304"/><wx w="304"/><wx w="304"/><wx w="304"/><wx w="715"/><wx w="721"/><wx w="764"/><wx w="764"/><wx w="764"/><wx w="764"/><wx w="764"/><wx w="570"/><wx w="764"/><wx w="719"/><wx w="719"/><wx w="719"/><wx w="719"/><wx w="527"/><wx w="584"/><wx w="583"/><wx w="529"/><wx w="529"/><wx w="529"/><wx w="529"/><wx w="529"/><wx w="529"/><wx w="845"/><wx w="475"/><wx w="548"/><wx w="548"/><wx w="548"/><wx w="548"/><wx w="226"/><wx w="226"/><wx w="226"/><wx w="226"/><wx w="573"/><wx w="589"/><wx w="585"/><wx w="585"/><wx w="585"/><wx w="585"/><wx w="585"/><wx w="570"/><wx w="585"/><wx w="589"/><wx w="589"/><wx w="589"/><wx w="589"/><wx w="458"/><wx w="595"/><wx w="458"/><wx w="600"/><wx w="529"/><wx w="600"/><wx w="529"/><wx w="600"/><wx w="529"/><wx w="621"/><wx w="475"/><wx w="621"/><wx w="475"/><wx w="621"/><wx w="475"/><wx w="621"/><wx w="475"/><wx w="706"/><wx w="595"/><wx w="715"/><wx w="595"/><wx w="551"/><wx w="548"/><wx w="551"/><wx w="548"/><wx w="551"/><wx w="548"/><wx w="551"/><wx w="548"/><wx w="551"/><wx w="548"/><wx w="723"/><wx w="522"/><wx w="723"/><wx w="522"/><wx w="723"/><wx w="522"/><wx w="723"/><wx w="522"/><wx w="719"/><wx w="589"/><wx w="719"/><wx w="589"/><wx w="304"/><wx w="226"/><wx w="304"/><wx w="226"/><wx w="304"/><wx w="226"/><wx w="304"/><wx w="226"/><wx w="304"/><wx w="226"/><wx w="550"/><wx w="452"/><wx w="247"/><wx w="226"/><wx w="581"/><wx w="483"/><wx w="483"/><wx w="513"/><wx w="226"/><wx w="513"/><wx w="226"/><wx w="513"/><wx w="226"/><wx w="513"/><wx w="232"/><wx w="513"/><wx w="226"/><wx w="721"/><wx w="589"/><wx w="721"/><wx w="589"/><wx w="721"/><wx w="589"/><wx w="626"/><wx w="721"/><wx w="589"/><wx w="764"/><wx w="585"/><wx w="764"/><wx w="585"/><wx w="764"/><wx w="585"/><wx w="897"/><wx w="948"/><wx w="594"/><wx w="389"/><wx w="594"/><wx w="389"/><wx w="594"/><wx w="389"/><wx w="544"/><wx w="465"/><wx w="544"/><wx w="465"/><wx w="544"/><wx w="465"/><wx w="544"/><wx w="465"/><wx w="523"/><wx w="334"/><wx w="523"/><wx w="334"/><wx w="523"/><wx w="334"/><wx w="719"/><wx w="589"/><wx w="719"/><wx w="589"/><wx w="719"/><wx w="589"/><wx w="719"/><wx w="589"/><wx w="719"/><wx w="589"/><wx w="719"/><wx w="589"/><wx w="892"/><wx w="723"/><wx w="527"/><wx w="458"/><wx w="527"/><wx w="576"/><wx w="460"/><wx w="576"/><wx w="460"/><wx w="576"/><wx w="460"/><wx w="306"/><wx w="570"/><wx w="600"/><wx w="529"/><wx w="807"/><wx w="845"/><wx w="764"/><wx w="585"/><wx w="544"/><wx w="465"/><wx w="577"/><wx w="577"/><wx w="557"/><wx w="577"/><wx w="235"/><wx w="577"/><wx w="173"/><wx w="577"/><wx w="577"/><wx w="577"/><wx w="577"/><wx w="600"/><wx w="237"/><wx w="596"/><wx w="763"/><wx w="391"/><wx w="770"/><wx w="645"/><wx w="785"/><wx w="307"/><wx w="600"/><wx w="626"/><wx w="501"/><wx w="570"/><wx w="551"/><wx w="576"/><wx w="719"/><wx w="764"/><wx w="304"/><wx w="581"/><wx w="600"/><wx w="862"/><wx w="721"/><wx w="530"/><wx w="764"/><wx w="713"/><wx w="584"/><wx w="550"/><wx w="523"/><wx w="527"/><wx w="762"/><wx w="538"/><wx w="764"/><wx w="774"/><wx w="304"/><wx w="527"/><wx w="589"/><wx w="453"/><wx w="589"/><wx w="307"/><wx w="595"/><wx w="589"/><wx w="607"/><wx w="479"/><wx w="581"/><wx w="453"/><wx w="466"/><wx w="589"/><wx w="569"/><wx w="307"/><wx w="483"/><wx w="502"/><wx w="596"/><wx w="513"/><wx w="458"/><wx w="585"/><wx w="611"/><wx w="583"/><wx w="475"/><wx w="586"/><wx w="445"/><wx w="595"/><wx w="678"/><wx w="514"/><wx w="721"/><wx w="733"/><wx w="307"/><wx w="595"/><wx w="585"/><wx w="595"/><wx w="733"/><wx w="551"/><wx w="695"/><wx w="501"/><wx w="621"/><wx w="544"/><wx w="304"/><wx w="304"/><wx w="247"/><wx w="915"/><wx w="946"/><wx w="698"/><wx w="571"/><wx w="587"/><wx w="713"/><wx w="600"/><wx w="595"/><wx w="626"/><wx w="501"/><wx w="652"/><wx w="551"/><wx w="779"/><wx w="559"/><wx w="721"/><wx w="721"/><wx w="571"/><wx w="681"/><wx w="862"/><wx w="719"/><wx w="764"/><wx w="713"/><wx w="584"/><wx w="621"/><wx w="523"/><wx w="587"/><wx w="762"/><wx w="538"/><wx w="719"/><wx w="669"/><wx w="1005"/><wx w="1011"/><wx w="658"/><wx w="814"/><wx w="595"/><wx w="618"/><wx w="1027"/><wx w="586"/><wx w="529"/><wx w="574"/><wx w="565"/><wx w="420"/><wx w="545"/><wx w="548"/><wx w="665"/><wx w="452"/><wx w="600"/><wx w="600"/><wx w="458"/><wx w="544"/><wx w="674"/><wx w="610"/><wx w="585"/><wx w="601"/><wx w="595"/><wx w="475"/><wx w="445"/><wx w="458"/><wx w="669"/><wx w="498"/><wx w="597"/><wx w="580"/><wx w="852"/><wx w="857"/><wx w="645"/><wx w="723"/><wx w="568"/><wx w="491"/><wx w="797"/><wx w="528"/><wx w="548"/><wx w="589"/><wx w="420"/><wx w="484"/><wx w="465"/><wx w="226"/><wx w="226"/><wx w="226"/><wx w="808"/><wx w="858"/><wx w="589"/><wx w="458"/><wx w="458"/><wx w="601"/><wx w="501"/><wx w="420"/><wx w="892"/><wx w="723"/><wx w="892"/><wx w="723"/><wx w="892"/><wx w="723"/><wx w="527"/><wx w="458"/><wx w="500"/><wx w="1000"/><wx w="1000"/><wx w="411"/><wx w="145"/><wx w="145"/><wx w="220"/><wx w="145"/><wx w="299"/><wx w="299"/><wx w="375"/><wx w="491"/><wx w="491"/><wx w="375"/><wx w="715"/><wx w="1138"/><wx w="191"/><wx w="353"/><wx w="255"/><wx w="255"/><wx w="448"/><wx w="120"/><wx w="374"/><wx w="570"/><wx w="570"/><wx w="732"/><wx w="570"/><wx w="803"/><wx w="500"/><wx w="1012"/><wx w="725"/><wx w="774"/><wx w="619"/><wx w="740"/><wx w="740"/><wx w="740"/><wx w="740"/><wx w="570"/><wx w="570"/><wx w="732"/><wx w="621"/><wx w="570"/><wx w="548"/><wx w="700"/><wx w="363"/><wx w="570"/><wx w="570"/><wx w="570"/><wx w="570"/><wx w="580"/><wx w="525"/><wx w="525"/><wx w="577"/><wx w="226"/><wx w="500"/><wx w="500"/><wx w="500"/><wx w="335"/><wx w="335"/><wx w="335"/><wx w="335"/><wx w="335"/><wx w="335"/><wx w="335"/><wx w="500"/><wx w="1000"/><wx w="500"/><wx w="1000"/><wx w="333"/><wx w="250"/><wx w="166"/><wx w="559"/><wx w="258"/><wx w="200"/><wx w="100"/><wx w="0"/><wx w="0"/><wx w="1000"/><wx w="1000"/><wx w="226"/><wx w="145"/><wx w="589"/><wx w="539"/><wx w="774"/><wx w="862"/><wx w="882"/><wx w="600"/><wx w="529"/><wx w="796"/><wx w="333"/><wx w="399"/><wx w="826"/><wx w="826"/><wx w="764"/><wx w="585"/><wx w="730"/><wx w="616"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="551"/><wx w="721"/><wx w="548"/><wx w="600"/><wx w="970"/><wx w="755"/><wx w="672"/><wx w="605"/><wx w="911"/><wx w="726"/><wx w="627"/><wx w="499"/><wx w="860"/><wx w="681"/><wx w="692"/><wx w="605"/><wx w="941"/><wx w="798"/><wx w="559"/><wx w="452"/><wx w="764"/><wx w="721"/><wx w="764"/><wx w="585"/><wx w="590"/><wx w="475"/><wx w="590"/><wx w="475"/><wx w="1140"/><wx w="1021"/><wx w="793"/><wx w="605"/><wx w="970"/><wx w="766"/><wx w="970"/><wx w="755"/><wx w="621"/><wx w="475"/><wx w="604"/><wx w="557"/><wx w="577"/><wx w="577"/><wx w="577"/><wx w="988"/><wx w="956"/><wx w="721"/><wx w="600"/><wx w="595"/><wx w="568"/><wx w="584"/><wx w="595"/><wx w="501"/><wx w="420"/><wx w="630"/><wx w="512"/><wx w="801"/><wx w="688"/><wx w="559"/><wx w="452"/><wx w="624"/><wx w="482"/><wx w="581"/><wx w="458"/><wx w="581"/><wx w="483"/><wx w="644"/><wx w="545"/><wx w="724"/><wx w="610"/><wx w="782"/><wx w="698"/><wx w="1047"/><wx w="848"/><wx w="764"/><wx w="604"/><wx w="621"/><wx w="475"/><wx w="523"/><wx w="445"/><wx w="527"/><wx w="458"/><wx w="527"/><wx w="458"/><wx w="571"/><wx w="505"/><wx w="839"/><wx w="688"/><wx w="669"/><wx w="580"/><wx w="669"/><wx w="580"/><wx w="660"/><wx w="569"/><wx w="798"/><wx w="636"/><wx w="798"/><wx w="636"/><wx w="304"/><wx w="779"/><wx w="665"/><wx w="654"/><wx w="530"/><wx w="681"/><wx w="544"/><wx w="719"/><wx w="610"/><wx w="719"/><wx w="610"/><wx w="669"/><wx w="580"/><wx w="862"/><wx w="674"/><wx w="304"/><wx w="600"/><wx w="529"/><wx w="600"/><wx w="529"/><wx w="807"/><wx w="845"/><wx w="551"/><wx w="548"/><wx w="704"/><wx w="548"/><wx w="704"/><wx w="548"/><wx w="779"/><wx w="665"/><wx w="559"/><wx w="452"/><wx w="562"/><wx w="459"/><wx w="721"/><wx w="600"/><wx w="721"/><wx w="600"/><wx w="764"/><wx w="585"/><wx w="764"/><wx w="585"/><wx w="764"/><wx w="585"/><wx w="618"/><wx w="491"/><wx w="587"/><wx w="458"/><wx w="587"/><wx w="458"/><wx w="587"/><wx w="458"/><wx w="669"/><wx w="580"/><wx w="501"/><wx w="420"/><wx w="814"/><wx w="723"/><wx w="501"/><wx w="420"/><wx w="582"/><wx w="505"/><wx w="538"/><wx w="498"/><wx w="595"/><wx w="595"/><wx w="858"/><wx w="863"/><wx w="866"/><wx w="754"/><wx w="578"/><wx w="479"/><wx w="931"/><wx w="813"/><wx w="987"/><wx w="879"/><wx w="733"/><wx w="613"/><wx w="676"/><wx w="617"/><wx w="565"/><wx w="453"/><wx w="681"/><wx w="544"/><wx w="600"/><wx w="529"/><wx w="600"/><wx w="529"/><wx w="600"/><wx w="529"/><wx w="600"/><wx w="529"/><wx w="600"/><wx w="529"/><wx w="600"/><wx w="529"/><wx w="600"/><wx w="529"/><wx w="600"/><wx w="529"/><wx w="600"/><wx w="529"/><wx w="600"/><wx w="529"/><wx w="600"/><wx w="529"/><wx w="600"/><wx w="529"/><wx w="551"/><wx w="548"/><wx w="551"/><wx w="548"/><wx w="551"/><wx w="548"/><wx w="551"/><wx w="548"/><wx w="551"/><wx w="548"/><wx w="551"/><wx w="548"/><wx w="551"/><wx w="548"/><wx w="551"/><wx w="548"/><wx w="304"/><wx w="226"/><wx w="304"/><wx w="226"/><wx w="764"/><wx w="585"/><wx w="764"/><wx w="585"/><wx w="764"/><wx w="585"/><wx w="764"/><wx w="585"/><wx w="764"/><wx w="585"/><wx w="764"/><wx w="585"/><wx w="764"/><wx w="585"/><wx w="764"/><wx w="585"/><wx w="764"/><wx w="585"/><wx w="764"/><wx w="585"/><wx w="764"/><wx w="585"/><wx w="764"/><wx w="585"/><wx w="719"/><wx w="589"/><wx w="719"/><wx w="589"/><wx w="730"/><wx w="616"/><wx w="730"/><wx w="616"/><wx w="730"/><wx w="616"/><wx w="730"/><wx w="616"/><wx w="730"/><wx w="616"/><wx w="527"/><wx w="458"/><wx w="527"/><wx w="458"/><wx w="527"/><wx w="458"/><wx w="595"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="204"/><wx w="205"/><wx w="205"/><wx w="363"/><wx w="570"/><wx w="350"/><wx w="497"/><wx w="514"/><wx w="566"/><wx w="548"/><wx w="570"/><wx w="521"/><wx w="570"/><wx w="570"/><wx w="600"/><wx w="757"/><wx w="523"/><wx w="334"/><wx w="595"/><wx w="595"/><wx w="595"/><wx w="595"/><wx w="595"/><wx w="251"/><wx w="251"/><wx w="251"/><wx w="251"/><wx w="251"/><wx w="251"/><wx w="251"/><wx w="251"/><wx w="251"/><wx w="251"/><wx w="499"/><wx w="293"/><wx w="251"/><wx w="251"/><wx w="251"/><wx w="251"/><wx w="251"/><wx w="251"/><wx w="251"/><wx w="251"/></cid-widths></multibyte-extras><kerning kpx1="1100"><pair kern="-49" kpx2="1098"/><pair kern="-20" kpx2="1218"/><pair kern="-40" kpx2="1228"/><pair kern="-20" kpx2="1093"/><pair kern="-40" kpx2="1095"/><pair kern="-49" kpx2="1090"/><pair kern="-29" kpx2="1091"/><pair kern="-29" kpx2="1118"/><pair kern="-49" kpx2="1295"/><pair kern="-20" kpx2="1175"/><pair kern="-20" kpx2="1245"/><pair kern="-60" kpx2="8217"/><pair kern="-49" kpx2="1287"/><pair kern="-60" kpx2="8221"/><pair kern="-49" kpx2="1285"/><pair kern="-60" kpx2="34"/><pair kern="-49" kpx2="1185"/><pair kern="-60" kpx2="39"/><pair kern="-20" kpx2="1249"/><pair kern="-29" kpx2="1263"/><pair kern="-29" kpx2="1199"/><pair kern="-49" kpx2="1197"/><pair kern="-20" kpx2="1121"/><pair kern="-20" kpx2="1151"/><pair kern="-20" kpx2="1203"/><pair kern="-40" kpx2="1269"/><pair kern="-29" kpx2="1201"/><pair kern="-29" kpx2="1267"/><pair kern="-40" kpx2="1207"/><pair kern="-29" kpx2="1265"/><pair kern="-49" kpx2="1205"/><pair kern="-20" kpx2="1143"/><pair kern="-20" kpx2="1279"/><pair kern="-20" kpx2="1141"/><pair kern="-20" kpx2="1277"/><pair kern="-40" kpx2="1209"/><pair kern="-20" kpx2="1215"/><pair kern="-20" kpx2="1078"/><pair kern="-20" kpx2="1213"/></kerning><kerning kpx1="1101"><pair kern="-9" kpx2="1098"/><pair kern="-20" kpx2="1218"/><pair kern="-20" kpx2="1093"/><pair kern="-9" kpx2="1228"/><pair kern="-9" kpx2="1095"/><pair kern="-9" kpx2="1090"/><pair kern="-9" kpx2="1091"/><pair kern="-9" kpx2="1118"/><pair kern="-9" kpx2="1295"/><pair kern="-20" kpx2="1175"/><pair kern="-20" kpx2="1245"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="1287"/><pair kern="-9" kpx2="8221"/><pair kern="-9" kpx2="1285"/><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="1185"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="1263"/><pair kern="-9" kpx2="1197"/><pair kern="-20" kpx2="1203"/><pair kern="-9" kpx2="1269"/><pair kern="-9" kpx2="1207"/><pair kern="-9" kpx2="1267"/><pair kern="-9" kpx2="1205"/><pair kern="-9" kpx2="1265"/><pair kern="-20" kpx2="1279"/><pair kern="-20" kpx2="1277"/><pair kern="-9" kpx2="1209"/><pair kern="-20" kpx2="1078"/></kerning><kerning kpx1="1102"><pair kern="-9" kpx2="1098"/><pair kern="-20" kpx2="1218"/><pair kern="-20" kpx2="1093"/><pair kern="-9" kpx2="1228"/><pair kern="-9" kpx2="1095"/><pair kern="-9" kpx2="1090"/><pair kern="-9" kpx2="1091"/><pair kern="-9" kpx2="1118"/><pair kern="-9" kpx2="1295"/><pair kern="-20" kpx2="1175"/><pair kern="-20" kpx2="1245"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="1287"/><pair kern="-9" kpx2="8221"/><pair kern="-9" kpx2="1285"/><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="1185"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="1263"/><pair kern="-9" kpx2="1197"/><pair kern="-20" kpx2="1203"/><pair kern="-9" kpx2="1269"/><pair kern="-9" kpx2="1207"/><pair kern="-9" kpx2="1267"/><pair kern="-9" kpx2="1205"/><pair kern="-9" kpx2="1265"/><pair kern="-20" kpx2="1279"/><pair kern="-20" kpx2="1277"/><pair kern="-9" kpx2="1209"/><pair kern="-20" kpx2="1078"/></kerning><kerning kpx1="1097"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="1098"><pair kern="-49" kpx2="1098"/><pair kern="-20" kpx2="1218"/><pair kern="-40" kpx2="1228"/><pair kern="-20" kpx2="1093"/><pair kern="-40" kpx2="1095"/><pair kern="-49" kpx2="1090"/><pair kern="-29" kpx2="1091"/><pair kern="-29" kpx2="1118"/><pair kern="-49" kpx2="1295"/><pair kern="-20" kpx2="1175"/><pair kern="-20" kpx2="1245"/><pair kern="-60" kpx2="8217"/><pair kern="-49" kpx2="1287"/><pair kern="-60" kpx2="8221"/><pair kern="-49" kpx2="1285"/><pair kern="-60" kpx2="34"/><pair kern="-49" kpx2="1185"/><pair kern="-60" kpx2="39"/><pair kern="-20" kpx2="1249"/><pair kern="-29" kpx2="1263"/><pair kern="-29" kpx2="1199"/><pair kern="-49" kpx2="1197"/><pair kern="-20" kpx2="1121"/><pair kern="-20" kpx2="1151"/><pair kern="-20" kpx2="1203"/><pair kern="-40" kpx2="1269"/><pair kern="-29" kpx2="1201"/><pair kern="-29" kpx2="1267"/><pair kern="-40" kpx2="1207"/><pair kern="-29" kpx2="1265"/><pair kern="-49" kpx2="1205"/><pair kern="-20" kpx2="1143"/><pair kern="-20" kpx2="1279"/><pair kern="-20" kpx2="1141"/><pair kern="-20" kpx2="1277"/><pair kern="-40" kpx2="1209"/><pair kern="-20" kpx2="1215"/><pair kern="-20" kpx2="1078"/><pair kern="-20" kpx2="1213"/></kerning><kerning kpx1="1092"><pair kern="-9" kpx2="1098"/><pair kern="-20" kpx2="1218"/><pair kern="-20" kpx2="1093"/><pair kern="-9" kpx2="1228"/><pair kern="-9" kpx2="1095"/><pair kern="-9" kpx2="1090"/><pair kern="-9" kpx2="1091"/><pair kern="-9" kpx2="1118"/><pair kern="-9" kpx2="1295"/><pair kern="-20" kpx2="1175"/><pair kern="-20" kpx2="1245"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="1287"/><pair kern="-9" kpx2="8221"/><pair kern="-9" kpx2="1285"/><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="1185"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="1263"/><pair kern="-9" kpx2="1197"/><pair kern="-20" kpx2="1203"/><pair kern="-9" kpx2="1269"/><pair kern="-9" kpx2="1207"/><pair kern="-9" kpx2="1267"/><pair kern="-9" kpx2="1205"/><pair kern="-9" kpx2="1265"/><pair kern="-20" kpx2="1279"/><pair kern="-20" kpx2="1277"/><pair kern="-9" kpx2="1209"/><pair kern="-20" kpx2="1078"/></kerning><kerning kpx1="1093"><pair kern="-20" kpx2="1153"/><pair kern="-20" kpx2="1092"/><pair kern="-20" kpx2="1228"/><pair kern="-20" kpx2="1297"/><pair kern="-20" kpx2="1095"/><pair kern="-20" kpx2="1089"/><pair kern="-20" kpx2="1239"/><pair kern="-20" kpx2="1293"/><pair kern="-20" kpx2="1283"/><pair kern="-20" kpx2="1108"/><pair kern="-20" kpx2="1281"/><pair kern="-20" kpx2="1105"/><pair kern="-20" kpx2="1104"/><pair kern="-20" kpx2="1255"/><pair kern="-20" kpx2="1195"/><pair kern="-20" kpx2="1193"/><pair kern="-20" kpx2="1259"/><pair kern="-20" kpx2="1257"/><pair kern="-20" kpx2="1149"/><pair kern="-20" kpx2="1269"/><pair kern="-20" kpx2="1147"/><pair kern="-20" kpx2="1086"/><pair kern="-20" kpx2="1207"/><pair kern="-20" kpx2="1145"/><pair kern="-20" kpx2="1209"/><pair kern="-20" kpx2="1139"/><pair kern="-20" kpx2="1215"/><pair kern="-20" kpx2="1077"/><pair kern="-20" kpx2="1213"/></kerning><kerning kpx1="1094"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="1088"><pair kern="-9" kpx2="1098"/><pair kern="-20" kpx2="1218"/><pair kern="-20" kpx2="1093"/><pair kern="-9" kpx2="1228"/><pair kern="-9" kpx2="1095"/><pair kern="-9" kpx2="1090"/><pair kern="-9" kpx2="1091"/><pair kern="-9" kpx2="1118"/><pair kern="-9" kpx2="1295"/><pair kern="-20" kpx2="1175"/><pair kern="-20" kpx2="1245"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="1287"/><pair kern="-9" kpx2="8221"/><pair kern="-9" kpx2="1285"/><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="1185"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="1263"/><pair kern="-9" kpx2="1197"/><pair kern="-20" kpx2="1203"/><pair kern="-9" kpx2="1269"/><pair kern="-9" kpx2="1207"/><pair kern="-9" kpx2="1267"/><pair kern="-9" kpx2="1205"/><pair kern="-9" kpx2="1265"/><pair kern="-20" kpx2="1279"/><pair kern="-20" kpx2="1277"/><pair kern="-9" kpx2="1209"/><pair kern="-20" kpx2="1078"/></kerning><kerning kpx1="1090"><pair kern="-9" kpx2="1153"/><pair kern="-29" kpx2="1222"/><pair kern="-29" kpx2="1299"/><pair kern="-9" kpx2="1092"/><pair kern="-9" kpx2="1297"/><pair kern="-9" kpx2="1089"/><pair kern="-20" kpx2="8211"/><pair kern="-29" kpx2="1289"/><pair kern="-9" kpx2="1239"/><pair kern="-29" kpx2="1113"/><pair kern="-20" kpx2="8213"/><pair kern="-9" kpx2="1293"/><pair kern="-20" kpx2="8212"/><pair kern="-9" kpx2="1283"/><pair kern="-9" kpx2="1108"/><pair kern="-49" kpx2="8218"/><pair kern="-9" kpx2="1281"/><pair kern="-9" kpx2="1105"/><pair kern="-49" kpx2="8222"/><pair kern="-9" kpx2="1104"/><pair kern="-9" kpx2="1255"/><pair kern="-9" kpx2="1195"/><pair kern="-29" kpx2="1127"/><pair kern="-9" kpx2="1193"/><pair kern="-9" kpx2="1259"/><pair kern="-49" kpx2="46"/><pair kern="-9" kpx2="1257"/><pair kern="-49" kpx2="44"/><pair kern="-20" kpx2="45"/><pair kern="-29" kpx2="1083"/><pair kern="-9" kpx2="1149"/><pair kern="-9" kpx2="1147"/><pair kern="-9" kpx2="1086"/><pair kern="-9" kpx2="1145"/><pair kern="-9" kpx2="1139"/><pair kern="-9" kpx2="1077"/><pair kern="-29" kpx2="1076"/></kerning><kerning kpx1="1091"><pair kern="-20" kpx2="1083"/><pair kern="-20" kpx2="1289"/><pair kern="-20" kpx2="1222"/><pair kern="-20" kpx2="1113"/><pair kern="-20" kpx2="1299"/><pair kern="-20" kpx2="1127"/><pair kern="-40" kpx2="8218"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="8222"/><pair kern="-40" kpx2="44"/><pair kern="-20" kpx2="1076"/></kerning><kerning kpx1="1116"><pair kern="-20" kpx2="1153"/><pair kern="-20" kpx2="1092"/><pair kern="-20" kpx2="1228"/><pair kern="-20" kpx2="1297"/><pair kern="-20" kpx2="1095"/><pair kern="-20" kpx2="1089"/><pair kern="-20" kpx2="1239"/><pair kern="-20" kpx2="1293"/><pair kern="-20" kpx2="1283"/><pair kern="-20" kpx2="1108"/><pair kern="-20" kpx2="1281"/><pair kern="-20" kpx2="1105"/><pair kern="-20" kpx2="1104"/><pair kern="-20" kpx2="1255"/><pair kern="-20" kpx2="1195"/><pair kern="-20" kpx2="1193"/><pair kern="-20" kpx2="1259"/><pair kern="-20" kpx2="1257"/><pair kern="-20" kpx2="1149"/><pair kern="-20" kpx2="1269"/><pair kern="-20" kpx2="1147"/><pair kern="-20" kpx2="1086"/><pair kern="-20" kpx2="1207"/><pair kern="-20" kpx2="1145"/><pair kern="-20" kpx2="1209"/><pair kern="-20" kpx2="1139"/><pair kern="-20" kpx2="1215"/><pair kern="-20" kpx2="1077"/><pair kern="-20" kpx2="1213"/></kerning><kerning kpx1="1118"><pair kern="-20" kpx2="1083"/><pair kern="-20" kpx2="1289"/><pair kern="-20" kpx2="1222"/><pair kern="-20" kpx2="1113"/><pair kern="-20" kpx2="1299"/><pair kern="-20" kpx2="1127"/><pair kern="-40" kpx2="8218"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="8222"/><pair kern="-40" kpx2="44"/><pair kern="-20" kpx2="1076"/></kerning><kerning kpx1="1113"><pair kern="-49" kpx2="1098"/><pair kern="-20" kpx2="1218"/><pair kern="-40" kpx2="1228"/><pair kern="-20" kpx2="1093"/><pair kern="-40" kpx2="1095"/><pair kern="-49" kpx2="1090"/><pair kern="-29" kpx2="1091"/><pair kern="-29" kpx2="1118"/><pair kern="-49" kpx2="1295"/><pair kern="-20" kpx2="1175"/><pair kern="-20" kpx2="1245"/><pair kern="-60" kpx2="8217"/><pair kern="-49" kpx2="1287"/><pair kern="-60" kpx2="8221"/><pair kern="-49" kpx2="1285"/><pair kern="-60" kpx2="34"/><pair kern="-49" kpx2="1185"/><pair kern="-60" kpx2="39"/><pair kern="-20" kpx2="1249"/><pair kern="-29" kpx2="1263"/><pair kern="-29" kpx2="1199"/><pair kern="-49" kpx2="1197"/><pair kern="-20" kpx2="1121"/><pair kern="-20" kpx2="1151"/><pair kern="-20" kpx2="1203"/><pair kern="-40" kpx2="1269"/><pair kern="-29" kpx2="1201"/><pair kern="-29" kpx2="1267"/><pair kern="-40" kpx2="1207"/><pair kern="-29" kpx2="1265"/><pair kern="-49" kpx2="1205"/><pair kern="-20" kpx2="1143"/><pair kern="-20" kpx2="1279"/><pair kern="-20" kpx2="1141"/><pair kern="-20" kpx2="1277"/><pair kern="-40" kpx2="1209"/><pair kern="-20" kpx2="1215"/><pair kern="-20" kpx2="1078"/><pair kern="-20" kpx2="1213"/></kerning><kerning kpx1="1115"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-20" kpx2="1287"/><pair kern="-9" kpx2="8221"/><pair kern="-20" kpx2="1285"/></kerning><kerning kpx1="1114"><pair kern="-49" kpx2="1098"/><pair kern="-20" kpx2="1218"/><pair kern="-40" kpx2="1228"/><pair kern="-20" kpx2="1093"/><pair kern="-40" kpx2="1095"/><pair kern="-49" kpx2="1090"/><pair kern="-29" kpx2="1091"/><pair kern="-29" kpx2="1118"/><pair kern="-49" kpx2="1295"/><pair kern="-20" kpx2="1175"/><pair kern="-20" kpx2="1245"/><pair kern="-60" kpx2="8217"/><pair kern="-49" kpx2="1287"/><pair kern="-60" kpx2="8221"/><pair kern="-49" kpx2="1285"/><pair kern="-60" kpx2="34"/><pair kern="-49" kpx2="1185"/><pair kern="-60" kpx2="39"/><pair kern="-20" kpx2="1249"/><pair kern="-29" kpx2="1263"/><pair kern="-29" kpx2="1199"/><pair kern="-49" kpx2="1197"/><pair kern="-20" kpx2="1121"/><pair kern="-20" kpx2="1151"/><pair kern="-20" kpx2="1203"/><pair kern="-40" kpx2="1269"/><pair kern="-29" kpx2="1201"/><pair kern="-29" kpx2="1267"/><pair kern="-40" kpx2="1207"/><pair kern="-29" kpx2="1265"/><pair kern="-49" kpx2="1205"/><pair kern="-20" kpx2="1143"/><pair kern="-20" kpx2="1279"/><pair kern="-20" kpx2="1141"/><pair kern="-20" kpx2="1277"/><pair kern="-40" kpx2="1209"/><pair kern="-20" kpx2="1215"/><pair kern="-20" kpx2="1078"/><pair kern="-20" kpx2="1213"/></kerning><kerning kpx1="1105"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="1104"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="1107"><pair kern="-9" kpx2="1153"/><pair kern="-29" kpx2="1222"/><pair kern="-29" kpx2="1299"/><pair kern="-9" kpx2="1092"/><pair kern="-9" kpx2="1297"/><pair kern="-9" kpx2="1089"/><pair kern="-20" kpx2="8211"/><pair kern="-29" kpx2="1289"/><pair kern="-9" kpx2="1239"/><pair kern="-29" kpx2="1113"/><pair kern="-20" kpx2="8213"/><pair kern="-9" kpx2="1293"/><pair kern="-20" kpx2="8212"/><pair kern="-9" kpx2="1283"/><pair kern="-9" kpx2="1108"/><pair kern="-49" kpx2="8218"/><pair kern="-9" kpx2="1281"/><pair kern="-9" kpx2="1105"/><pair kern="-49" kpx2="8222"/><pair kern="-9" kpx2="1104"/><pair kern="-9" kpx2="1255"/><pair kern="-9" kpx2="1195"/><pair kern="-29" kpx2="1127"/><pair kern="-9" kpx2="1193"/><pair kern="-9" kpx2="1259"/><pair kern="-49" kpx2="46"/><pair kern="-9" kpx2="1257"/><pair kern="-49" kpx2="44"/><pair kern="-20" kpx2="45"/><pair kern="-29" kpx2="1083"/><pair kern="-9" kpx2="1149"/><pair kern="-9" kpx2="1147"/><pair kern="-9" kpx2="1086"/><pair kern="-9" kpx2="1145"/><pair kern="-9" kpx2="1139"/><pair kern="-9" kpx2="1077"/><pair kern="-29" kpx2="1076"/></kerning><kerning kpx1="1106"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-20" kpx2="1287"/><pair kern="-9" kpx2="8221"/><pair kern="-20" kpx2="1285"/></kerning><kerning kpx1="34"><pair kern="-60" kpx2="1092"/><pair kern="-60" kpx2="1089"/><pair kern="-69" kpx2="1113"/><pair kern="-29" kpx2="1109"/><pair kern="-60" kpx2="1108"/><pair kern="-60" kpx2="1105"/><pair kern="-60" kpx2="1104"/><pair kern="-69" kpx2="1126"/><pair kern="-69" kpx2="1127"/><pair kern="-60" kpx2="1149"/><pair kern="-60" kpx2="1147"/><pair kern="-60" kpx2="1145"/><pair kern="-29" kpx2="537"/><pair kern="-60" kpx2="1139"/><pair kern="-9" kpx2="1137"/><pair kern="20" kpx2="538"/><pair kern="-60" kpx2="1033"/><pair kern="-69" kpx2="65"/><pair kern="20" kpx2="84"/><pair kern="20" kpx2="87"/><pair kern="-60" kpx2="1051"/><pair kern="20" kpx2="86"/><pair kern="-69" kpx2="1040"/><pair kern="9" kpx2="89"/><pair kern="-60" kpx2="1044"/><pair kern="-29" kpx2="103"/><pair kern="-60" kpx2="100"/><pair kern="-60" kpx2="101"/><pair kern="-60" kpx2="99"/><pair kern="-40" kpx2="97"/><pair kern="-29" kpx2="110"/><pair kern="-60" kpx2="111"/><pair kern="-29" kpx2="109"/><pair kern="-69" kpx2="1083"/><pair kern="-29" kpx2="117"/><pair kern="-29" kpx2="115"/><pair kern="-29" kpx2="114"/><pair kern="-60" kpx2="1086"/><pair kern="-60" kpx2="113"/><pair kern="-29" kpx2="112"/><pair kern="-20" kpx2="1072"/><pair kern="-60" kpx2="1077"/><pair kern="-69" kpx2="1076"/><pair kern="-60" kpx2="1221"/><pair kern="-69" kpx2="1222"/><pair kern="-69" kpx2="1236"/><pair kern="-20" kpx2="1237"/><pair kern="-60" kpx2="1239"/><pair kern="-69" kpx2="1232"/><pair kern="-20" kpx2="1233"/><pair kern="-69" kpx2="1234"/><pair kern="-20" kpx2="1235"/><pair kern="-20" kpx2="1241"/><pair kern="-20" kpx2="1243"/><pair kern="-60" kpx2="1255"/><pair kern="-60" kpx2="1259"/><pair kern="-60" kpx2="1257"/><pair kern="-60" kpx2="1153"/><pair kern="-69" kpx2="197"/><pair kern="-69" kpx2="196"/><pair kern="-69" kpx2="193"/><pair kern="-69" kpx2="192"/><pair kern="-69" kpx2="195"/><pair kern="-69" kpx2="194"/><pair kern="9" kpx2="221"/><pair kern="-60" kpx2="235"/><pair kern="-60" kpx2="234"/><pair kern="-60" kpx2="233"/><pair kern="-60" kpx2="232"/><pair kern="-60" kpx2="231"/><pair kern="-60" kpx2="1195"/><pair kern="-40" kpx2="230"/><pair kern="-40" kpx2="229"/><pair kern="-60" kpx2="1193"/><pair kern="-40" kpx2="228"/><pair kern="-40" kpx2="227"/><pair kern="-40" kpx2="226"/><pair kern="-40" kpx2="225"/><pair kern="-60" kpx2="224"/><pair kern="-29" kpx2="252"/><pair kern="-29" kpx2="250"/><pair kern="-29" kpx2="251"/><pair kern="-60" kpx2="248"/><pair kern="-29" kpx2="249"/><pair kern="-60" kpx2="246"/><pair kern="-60" kpx2="244"/><pair kern="-60" kpx2="245"/><pair kern="-60" kpx2="242"/><pair kern="-60" kpx2="243"/><pair kern="-60" kpx2="7889"/><pair kern="-60" kpx2="275"/><pair kern="-60" kpx2="273"/><pair kern="-60" kpx2="7893"/><pair kern="-60" kpx2="279"/><pair kern="-60" kpx2="7895"/><pair kern="-60" kpx2="277"/><pair kern="-60" kpx2="7897"/><pair kern="-60" kpx2="283"/><pair kern="-60" kpx2="7899"/><pair kern="-60" kpx2="281"/><pair kern="-60" kpx2="7901"/><pair kern="-29" kpx2="287"/><pair kern="-60" kpx2="7903"/><pair kern="-29" kpx2="285"/><pair kern="-69" kpx2="258"/><pair kern="-40" kpx2="259"/><pair kern="-69" kpx2="256"/><pair kern="-60" kpx2="7875"/><pair kern="-40" kpx2="257"/><pair kern="-60" kpx2="7877"/><pair kern="-60" kpx2="263"/><pair kern="-69" kpx2="260"/><pair kern="-60" kpx2="7879"/><pair kern="-40" kpx2="261"/><pair kern="-60" kpx2="267"/><pair kern="-60" kpx2="265"/><pair kern="-60" kpx2="7885"/><pair kern="-60" kpx2="271"/><pair kern="-60" kpx2="7887"/><pair kern="-60" kpx2="269"/><pair kern="9" kpx2="7922"/><pair kern="-29" kpx2="7921"/><pair kern="9" kpx2="7926"/><pair kern="9" kpx2="7924"/><pair kern="-29" kpx2="312"/><pair kern="9" kpx2="7928"/><pair kern="-60" kpx2="7907"/><pair kern="-29" kpx2="289"/><pair kern="-60" kpx2="7905"/><pair kern="-29" kpx2="291"/><pair kern="-29" kpx2="7911"/><pair kern="-29" kpx2="7909"/><pair kern="-29" kpx2="7915"/><pair kern="-29" kpx2="7913"/><pair kern="-29" kpx2="7919"/><pair kern="-29" kpx2="7917"/><pair kern="-29" kpx2="343"/><pair kern="-29" kpx2="341"/><pair kern="-60" kpx2="339"/><pair kern="-60" kpx2="337"/><pair kern="-29" kpx2="351"/><pair kern="-69" kpx2="1299"/><pair kern="-60" kpx2="1298"/><pair kern="-60" kpx2="1297"/><pair kern="-29" kpx2="347"/><pair kern="-29" kpx2="326"/><pair kern="20" kpx2="7812"/><pair kern="-29" kpx2="324"/><pair kern="-60" kpx2="1288"/><pair kern="-69" kpx2="1289"/><pair kern="20" kpx2="7808"/><pair kern="20" kpx2="7810"/><pair kern="-60" kpx2="1293"/><pair kern="-69" kpx2="1282"/><pair kern="-60" kpx2="335"/><pair kern="-60" kpx2="1283"/><pair kern="-69" kpx2="1280"/><pair kern="-60" kpx2="333"/><pair kern="-60" kpx2="1281"/><pair kern="-29" kpx2="331"/><pair kern="-40" kpx2="7863"/><pair kern="-69" kpx2="7862"/><pair kern="20" kpx2="372"/><pair kern="-40" kpx2="7861"/><pair kern="-69" kpx2="7860"/><pair kern="9" kpx2="374"/><pair kern="-40" kpx2="7859"/><pair kern="-29" kpx2="369"/><pair kern="-69" kpx2="7858"/><pair kern="-29" kpx2="371"/><pair kern="-40" kpx2="7857"/><pair kern="-69" kpx2="7856"/><pair kern="-60" kpx2="7871"/><pair kern="-60" kpx2="7869"/><pair kern="-60" kpx2="7867"/><pair kern="9" kpx2="376"/><pair kern="-60" kpx2="7865"/><pair kern="20" kpx2="356"/><pair kern="-69" kpx2="7846"/><pair kern="-69" kpx2="7844"/><pair kern="-40" kpx2="7845"/><pair kern="-69" kpx2="7842"/><pair kern="-40" kpx2="7843"/><pair kern="20" kpx2="354"/><pair kern="-69" kpx2="7840"/><pair kern="-40" kpx2="7841"/><pair kern="-69" kpx2="7854"/><pair kern="-29" kpx2="365"/><pair kern="-40" kpx2="7855"/><pair kern="-69" kpx2="7852"/><pair kern="-29" kpx2="367"/><pair kern="-40" kpx2="7853"/><pair kern="-69" kpx2="7850"/><pair kern="-29" kpx2="361"/><pair kern="-40" kpx2="7851"/><pair kern="-69" kpx2="7848"/><pair kern="-29" kpx2="363"/><pair kern="-40" kpx2="7849"/><pair kern="-20" kpx2="956"/><pair kern="-40" kpx2="959"/><pair kern="-20" kpx2="954"/><pair kern="-29" kpx2="948"/><pair kern="-20" kpx2="949"/><pair kern="-20" kpx2="950"/><pair kern="-20" kpx2="951"/><pair kern="-40" kpx2="945"/><pair kern="-20" kpx2="941"/><pair kern="-40" kpx2="940"/><pair kern="-20" kpx2="942"/><pair kern="-69" kpx2="923"/><pair kern="-29" kpx2="432"/><pair kern="-69" kpx2="916"/><pair kern="-69" kpx2="913"/><pair kern="-60" kpx2="417"/><pair kern="-69" kpx2="902"/><pair kern="-40" kpx2="7681"/><pair kern="-69" kpx2="7680"/><pair kern="-40" kpx2="509"/><pair kern="-29" kpx2="7743"/><pair kern="-60" kpx2="511"/><pair kern="-69" kpx2="506"/><pair kern="-40" kpx2="507"/><pair kern="-40" kpx2="972"/><pair kern="-40" kpx2="963"/><pair kern="-40" kpx2="962"/><pair kern="-29" kpx2="961"/><pair kern="-40" kpx2="966"/></kerning><kerning kpx1="1134"><pair kern="-9" kpx2="1200"/><pair kern="-9" kpx2="1142"/><pair kern="-40" kpx2="8218"/><pair kern="-9" kpx2="1140"/><pair kern="-20" kpx2="1286"/><pair kern="-40" kpx2="46"/><pair kern="-9" kpx2="1198"/><pair kern="-40" kpx2="8222"/><pair kern="-20" kpx2="1284"/><pair kern="-40" kpx2="44"/></kerning><kerning kpx1="1132"><pair kern="-9" kpx2="1286"/><pair kern="-9" kpx2="1284"/></kerning><kerning kpx1="1130"><pair kern="-9" kpx2="1286"/><pair kern="-9" kpx2="1284"/></kerning><kerning kpx1="39"><pair kern="-60" kpx2="1092"/><pair kern="-60" kpx2="1089"/><pair kern="-69" kpx2="1113"/><pair kern="-29" kpx2="1109"/><pair kern="-60" kpx2="1108"/><pair kern="-60" kpx2="1105"/><pair kern="-60" kpx2="1104"/><pair kern="-69" kpx2="1126"/><pair kern="-69" kpx2="1127"/><pair kern="-60" kpx2="1149"/><pair kern="-60" kpx2="1147"/><pair kern="-60" kpx2="1145"/><pair kern="-29" kpx2="537"/><pair kern="-60" kpx2="1139"/><pair kern="-9" kpx2="1137"/><pair kern="20" kpx2="538"/><pair kern="-60" kpx2="1033"/><pair kern="-69" kpx2="65"/><pair kern="20" kpx2="84"/><pair kern="20" kpx2="87"/><pair kern="-60" kpx2="1051"/><pair kern="20" kpx2="86"/><pair kern="-69" kpx2="1040"/><pair kern="9" kpx2="89"/><pair kern="-60" kpx2="1044"/><pair kern="-29" kpx2="103"/><pair kern="-60" kpx2="100"/><pair kern="-60" kpx2="101"/><pair kern="-60" kpx2="99"/><pair kern="-40" kpx2="97"/><pair kern="-29" kpx2="110"/><pair kern="-60" kpx2="111"/><pair kern="-29" kpx2="109"/><pair kern="-69" kpx2="1083"/><pair kern="-29" kpx2="117"/><pair kern="-29" kpx2="115"/><pair kern="-29" kpx2="114"/><pair kern="-60" kpx2="1086"/><pair kern="-60" kpx2="113"/><pair kern="-29" kpx2="112"/><pair kern="-20" kpx2="1072"/><pair kern="-60" kpx2="1077"/><pair kern="-69" kpx2="1076"/><pair kern="-60" kpx2="1221"/><pair kern="-69" kpx2="1222"/><pair kern="-69" kpx2="1236"/><pair kern="-20" kpx2="1237"/><pair kern="-60" kpx2="1239"/><pair kern="-69" kpx2="1232"/><pair kern="-20" kpx2="1233"/><pair kern="-69" kpx2="1234"/><pair kern="-20" kpx2="1235"/><pair kern="-20" kpx2="1241"/><pair kern="-20" kpx2="1243"/><pair kern="-60" kpx2="1255"/><pair kern="-60" kpx2="1259"/><pair kern="-60" kpx2="1257"/><pair kern="-60" kpx2="1153"/><pair kern="-69" kpx2="197"/><pair kern="-69" kpx2="196"/><pair kern="-69" kpx2="193"/><pair kern="-69" kpx2="192"/><pair kern="-69" kpx2="195"/><pair kern="-69" kpx2="194"/><pair kern="9" kpx2="221"/><pair kern="-60" kpx2="235"/><pair kern="-60" kpx2="234"/><pair kern="-60" kpx2="233"/><pair kern="-60" kpx2="232"/><pair kern="-60" kpx2="231"/><pair kern="-60" kpx2="1195"/><pair kern="-40" kpx2="230"/><pair kern="-40" kpx2="229"/><pair kern="-60" kpx2="1193"/><pair kern="-40" kpx2="228"/><pair kern="-40" kpx2="227"/><pair kern="-40" kpx2="226"/><pair kern="-40" kpx2="225"/><pair kern="-60" kpx2="224"/><pair kern="-29" kpx2="252"/><pair kern="-29" kpx2="250"/><pair kern="-29" kpx2="251"/><pair kern="-60" kpx2="248"/><pair kern="-29" kpx2="249"/><pair kern="-60" kpx2="246"/><pair kern="-60" kpx2="244"/><pair kern="-60" kpx2="245"/><pair kern="-60" kpx2="242"/><pair kern="-60" kpx2="243"/><pair kern="-60" kpx2="7889"/><pair kern="-60" kpx2="275"/><pair kern="-60" kpx2="273"/><pair kern="-60" kpx2="7893"/><pair kern="-60" kpx2="279"/><pair kern="-60" kpx2="7895"/><pair kern="-60" kpx2="277"/><pair kern="-60" kpx2="7897"/><pair kern="-60" kpx2="283"/><pair kern="-60" kpx2="7899"/><pair kern="-60" kpx2="281"/><pair kern="-60" kpx2="7901"/><pair kern="-29" kpx2="287"/><pair kern="-60" kpx2="7903"/><pair kern="-29" kpx2="285"/><pair kern="-69" kpx2="258"/><pair kern="-40" kpx2="259"/><pair kern="-69" kpx2="256"/><pair kern="-60" kpx2="7875"/><pair kern="-40" kpx2="257"/><pair kern="-60" kpx2="7877"/><pair kern="-60" kpx2="263"/><pair kern="-69" kpx2="260"/><pair kern="-60" kpx2="7879"/><pair kern="-40" kpx2="261"/><pair kern="-60" kpx2="267"/><pair kern="-60" kpx2="265"/><pair kern="-60" kpx2="7885"/><pair kern="-60" kpx2="271"/><pair kern="-60" kpx2="7887"/><pair kern="-60" kpx2="269"/><pair kern="9" kpx2="7922"/><pair kern="-29" kpx2="7921"/><pair kern="9" kpx2="7926"/><pair kern="9" kpx2="7924"/><pair kern="-29" kpx2="312"/><pair kern="9" kpx2="7928"/><pair kern="-60" kpx2="7907"/><pair kern="-29" kpx2="289"/><pair kern="-60" kpx2="7905"/><pair kern="-29" kpx2="291"/><pair kern="-29" kpx2="7911"/><pair kern="-29" kpx2="7909"/><pair kern="-29" kpx2="7915"/><pair kern="-29" kpx2="7913"/><pair kern="-29" kpx2="7919"/><pair kern="-29" kpx2="7917"/><pair kern="-29" kpx2="343"/><pair kern="-29" kpx2="341"/><pair kern="-60" kpx2="339"/><pair kern="-60" kpx2="337"/><pair kern="-29" kpx2="351"/><pair kern="-69" kpx2="1299"/><pair kern="-60" kpx2="1298"/><pair kern="-60" kpx2="1297"/><pair kern="-29" kpx2="347"/><pair kern="-29" kpx2="326"/><pair kern="20" kpx2="7812"/><pair kern="-29" kpx2="324"/><pair kern="-60" kpx2="1288"/><pair kern="-69" kpx2="1289"/><pair kern="20" kpx2="7808"/><pair kern="20" kpx2="7810"/><pair kern="-60" kpx2="1293"/><pair kern="-69" kpx2="1282"/><pair kern="-60" kpx2="335"/><pair kern="-60" kpx2="1283"/><pair kern="-69" kpx2="1280"/><pair kern="-60" kpx2="333"/><pair kern="-60" kpx2="1281"/><pair kern="-29" kpx2="331"/><pair kern="-40" kpx2="7863"/><pair kern="-69" kpx2="7862"/><pair kern="20" kpx2="372"/><pair kern="-40" kpx2="7861"/><pair kern="-69" kpx2="7860"/><pair kern="9" kpx2="374"/><pair kern="-40" kpx2="7859"/><pair kern="-29" kpx2="369"/><pair kern="-69" kpx2="7858"/><pair kern="-29" kpx2="371"/><pair kern="-40" kpx2="7857"/><pair kern="-69" kpx2="7856"/><pair kern="-60" kpx2="7871"/><pair kern="-60" kpx2="7869"/><pair kern="-60" kpx2="7867"/><pair kern="9" kpx2="376"/><pair kern="-60" kpx2="7865"/><pair kern="20" kpx2="356"/><pair kern="-69" kpx2="7846"/><pair kern="-69" kpx2="7844"/><pair kern="-40" kpx2="7845"/><pair kern="-69" kpx2="7842"/><pair kern="-40" kpx2="7843"/><pair kern="20" kpx2="354"/><pair kern="-69" kpx2="7840"/><pair kern="-40" kpx2="7841"/><pair kern="-69" kpx2="7854"/><pair kern="-29" kpx2="365"/><pair kern="-40" kpx2="7855"/><pair kern="-69" kpx2="7852"/><pair kern="-29" kpx2="367"/><pair kern="-40" kpx2="7853"/><pair kern="-69" kpx2="7850"/><pair kern="-29" kpx2="361"/><pair kern="-40" kpx2="7851"/><pair kern="-69" kpx2="7848"/><pair kern="-29" kpx2="363"/><pair kern="-40" kpx2="7849"/><pair kern="-20" kpx2="956"/><pair kern="-40" kpx2="959"/><pair kern="-20" kpx2="954"/><pair kern="-29" kpx2="948"/><pair kern="-20" kpx2="949"/><pair kern="-20" kpx2="950"/><pair kern="-20" kpx2="951"/><pair kern="-40" kpx2="945"/><pair kern="-20" kpx2="941"/><pair kern="-40" kpx2="940"/><pair kern="-20" kpx2="942"/><pair kern="-69" kpx2="923"/><pair kern="-29" kpx2="432"/><pair kern="-69" kpx2="916"/><pair kern="-69" kpx2="913"/><pair kern="-60" kpx2="417"/><pair kern="-69" kpx2="902"/><pair kern="-40" kpx2="7681"/><pair kern="-69" kpx2="7680"/><pair kern="-40" kpx2="509"/><pair kern="-29" kpx2="7743"/><pair kern="-60" kpx2="511"/><pair kern="-69" kpx2="506"/><pair kern="-40" kpx2="507"/><pair kern="-40" kpx2="972"/><pair kern="-40" kpx2="963"/><pair kern="-40" kpx2="962"/><pair kern="-29" kpx2="961"/><pair kern="-40" kpx2="966"/></kerning><kerning kpx1="1128"><pair kern="-49" kpx2="1035"/><pair kern="-20" kpx2="1098"/><pair kern="-20" kpx2="1228"/><pair kern="-49" kpx2="1026"/><pair kern="-20" kpx2="1095"/><pair kern="-20" kpx2="1164"/><pair kern="-49" kpx2="1227"/><pair kern="-20" kpx2="1090"/><pair kern="-20" kpx2="1170"/><pair kern="-49" kpx2="1294"/><pair kern="-20" kpx2="1295"/><pair kern="-69" kpx2="8217"/><pair kern="-69" kpx2="1286"/><pair kern="-20" kpx2="1240"/><pair kern="-20" kpx2="1287"/><pair kern="-69" kpx2="1284"/><pair kern="-20" kpx2="1242"/><pair kern="-69" kpx2="8221"/><pair kern="-20" kpx2="1182"/><pair kern="-20" kpx2="1285"/><pair kern="-49" kpx2="1066"/><pair kern="-69" kpx2="34"/><pair kern="-20" kpx2="1185"/><pair kern="-49" kpx2="1184"/><pair kern="-69" kpx2="39"/><pair kern="-69" kpx2="1058"/><pair kern="-20" kpx2="1122"/><pair kern="-60" kpx2="1198"/><pair kern="-49" kpx2="1063"/><pair kern="-20" kpx2="1060"/><pair kern="-20" kpx2="1197"/><pair kern="-69" kpx2="1196"/><pair kern="-49" kpx2="1268"/><pair kern="-60" kpx2="1200"/><pair kern="-20" kpx2="1269"/><pair kern="-49" kpx2="1206"/><pair kern="-20" kpx2="1207"/><pair kern="-49" kpx2="1204"/><pair kern="-20" kpx2="1205"/><pair kern="-40" kpx2="1142"/><pair kern="-49" kpx2="1208"/><pair kern="-20" kpx2="1209"/><pair kern="-40" kpx2="1140"/><pair kern="-20" kpx2="1274"/><pair kern="-49" kpx2="1214"/><pair kern="-49" kpx2="1212"/><pair kern="-49" kpx2="1136"/></kerning><kerning kpx1="1129"><pair kern="-49" kpx2="1098"/><pair kern="-20" kpx2="1092"/><pair kern="-29" kpx2="1228"/><pair kern="-29" kpx2="1095"/><pair kern="-20" kpx2="1089"/><pair kern="-49" kpx2="1090"/><pair kern="-29" kpx2="1091"/><pair kern="-29" kpx2="1118"/><pair kern="-20" kpx2="1239"/><pair kern="-20" kpx2="1108"/><pair kern="-20" kpx2="1105"/><pair kern="-20" kpx2="1104"/><pair kern="-69" kpx2="34"/><pair kern="-20" kpx2="1255"/><pair kern="-69" kpx2="39"/><pair kern="-29" kpx2="1263"/><pair kern="-20" kpx2="1259"/><pair kern="-20" kpx2="1257"/><pair kern="-20" kpx2="1121"/><pair kern="-20" kpx2="1151"/><pair kern="-20" kpx2="1149"/><pair kern="-29" kpx2="1269"/><pair kern="-20" kpx2="1147"/><pair kern="-29" kpx2="1267"/><pair kern="-20" kpx2="1145"/><pair kern="-29" kpx2="1265"/><pair kern="-20" kpx2="1143"/><pair kern="-20" kpx2="1141"/><pair kern="-20" kpx2="1139"/><pair kern="-9" kpx2="1137"/><pair kern="-20" kpx2="1153"/><pair kern="-20" kpx2="1297"/><pair kern="-49" kpx2="1295"/><pair kern="-20" kpx2="1293"/><pair kern="-20" kpx2="1283"/><pair kern="-69" kpx2="8217"/><pair kern="-20" kpx2="1281"/><pair kern="-60" kpx2="1287"/><pair kern="-69" kpx2="8221"/><pair kern="-60" kpx2="1285"/><pair kern="-49" kpx2="1185"/><pair kern="-20" kpx2="1195"/><pair kern="-20" kpx2="1193"/><pair kern="-20" kpx2="1199"/><pair kern="-49" kpx2="1197"/><pair kern="-20" kpx2="1201"/><pair kern="-20" kpx2="1086"/><pair kern="-29" kpx2="1207"/><pair kern="-49" kpx2="1205"/><pair kern="-29" kpx2="1209"/><pair kern="-20" kpx2="1215"/><pair kern="-20" kpx2="1077"/><pair kern="-20" kpx2="1213"/></kerning><kerning kpx1="1126"><pair kern="-49" kpx2="1035"/><pair kern="-20" kpx2="1098"/><pair kern="-20" kpx2="1228"/><pair kern="-49" kpx2="1026"/><pair kern="-20" kpx2="1095"/><pair kern="-20" kpx2="1164"/><pair kern="-49" kpx2="1227"/><pair kern="-20" kpx2="1090"/><pair kern="-20" kpx2="1170"/><pair kern="-49" kpx2="1294"/><pair kern="-20" kpx2="1295"/><pair kern="-69" kpx2="8217"/><pair kern="-69" kpx2="1286"/><pair kern="-20" kpx2="1240"/><pair kern="-20" kpx2="1287"/><pair kern="-69" kpx2="1284"/><pair kern="-20" kpx2="1242"/><pair kern="-69" kpx2="8221"/><pair kern="-20" kpx2="1182"/><pair kern="-20" kpx2="1285"/><pair kern="-49" kpx2="1066"/><pair kern="-69" kpx2="34"/><pair kern="-20" kpx2="1185"/><pair kern="-49" kpx2="1184"/><pair kern="-69" kpx2="39"/><pair kern="-69" kpx2="1058"/><pair kern="-20" kpx2="1122"/><pair kern="-60" kpx2="1198"/><pair kern="-49" kpx2="1063"/><pair kern="-20" kpx2="1060"/><pair kern="-20" kpx2="1197"/><pair kern="-69" kpx2="1196"/><pair kern="-49" kpx2="1268"/><pair kern="-60" kpx2="1200"/><pair kern="-20" kpx2="1269"/><pair kern="-49" kpx2="1206"/><pair kern="-20" kpx2="1207"/><pair kern="-49" kpx2="1204"/><pair kern="-20" kpx2="1205"/><pair kern="-40" kpx2="1142"/><pair kern="-49" kpx2="1208"/><pair kern="-20" kpx2="1209"/><pair kern="-40" kpx2="1140"/><pair kern="-20" kpx2="1274"/><pair kern="-49" kpx2="1214"/><pair kern="-49" kpx2="1212"/><pair kern="-49" kpx2="1136"/></kerning><kerning kpx1="1127"><pair kern="-49" kpx2="1098"/><pair kern="-20" kpx2="1092"/><pair kern="-29" kpx2="1228"/><pair kern="-29" kpx2="1095"/><pair kern="-20" kpx2="1089"/><pair kern="-49" kpx2="1090"/><pair kern="-29" kpx2="1091"/><pair kern="-29" kpx2="1118"/><pair kern="-20" kpx2="1239"/><pair kern="-20" kpx2="1108"/><pair kern="-20" kpx2="1105"/><pair kern="-20" kpx2="1104"/><pair kern="-69" kpx2="34"/><pair kern="-20" kpx2="1255"/><pair kern="-69" kpx2="39"/><pair kern="-29" kpx2="1263"/><pair kern="-20" kpx2="1259"/><pair kern="-20" kpx2="1257"/><pair kern="-20" kpx2="1121"/><pair kern="-20" kpx2="1151"/><pair kern="-20" kpx2="1149"/><pair kern="-29" kpx2="1269"/><pair kern="-20" kpx2="1147"/><pair kern="-29" kpx2="1267"/><pair kern="-20" kpx2="1145"/><pair kern="-29" kpx2="1265"/><pair kern="-20" kpx2="1143"/><pair kern="-20" kpx2="1141"/><pair kern="-20" kpx2="1139"/><pair kern="-9" kpx2="1137"/><pair kern="-20" kpx2="1153"/><pair kern="-20" kpx2="1297"/><pair kern="-49" kpx2="1295"/><pair kern="-20" kpx2="1293"/><pair kern="-20" kpx2="1283"/><pair kern="-69" kpx2="8217"/><pair kern="-20" kpx2="1281"/><pair kern="-60" kpx2="1287"/><pair kern="-69" kpx2="8221"/><pair kern="-60" kpx2="1285"/><pair kern="-49" kpx2="1185"/><pair kern="-20" kpx2="1195"/><pair kern="-20" kpx2="1193"/><pair kern="-20" kpx2="1199"/><pair kern="-49" kpx2="1197"/><pair kern="-20" kpx2="1201"/><pair kern="-20" kpx2="1086"/><pair kern="-29" kpx2="1207"/><pair kern="-49" kpx2="1205"/><pair kern="-29" kpx2="1209"/><pair kern="-20" kpx2="1215"/><pair kern="-20" kpx2="1077"/><pair kern="-20" kpx2="1213"/></kerning><kerning kpx1="40"><pair kern="89" kpx2="74"/></kerning><kerning kpx1="1124"><pair kern="-20" kpx2="1152"/><pair kern="-20" kpx2="1228"/><pair kern="-20" kpx2="1095"/><pair kern="-20" kpx2="1028"/><pair kern="-20" kpx2="1292"/><pair kern="-20" kpx2="1054"/><pair kern="-20" kpx2="1282"/><pair kern="-20" kpx2="1280"/><pair kern="-20" kpx2="1287"/><pair kern="-20" kpx2="1285"/><pair kern="-20" kpx2="1254"/><pair kern="-20" kpx2="1194"/><pair kern="-20" kpx2="1057"/><pair kern="-20" kpx2="1192"/><pair kern="-20" kpx2="1258"/><pair kern="-20" kpx2="1120"/><pair kern="-20" kpx2="1060"/><pair kern="-20" kpx2="1256"/><pair kern="-20" kpx2="1150"/><pair kern="-20" kpx2="1148"/><pair kern="-20" kpx2="1269"/><pair kern="-20" kpx2="1146"/><pair kern="-20" kpx2="1207"/><pair kern="-20" kpx2="1144"/><pair kern="-20" kpx2="1209"/><pair kern="-20" kpx2="1214"/><pair kern="-20" kpx2="1138"/><pair kern="-20" kpx2="1212"/></kerning><kerning kpx1="46"><pair kern="-49" kpx2="7888"/><pair kern="-49" kpx2="7890"/><pair kern="-49" kpx2="7892"/><pair kern="-49" kpx2="1098"/><pair kern="-49" kpx2="7894"/><pair kern="-49" kpx2="7896"/><pair kern="-49" kpx2="7898"/><pair kern="-60" kpx2="1095"/><pair kern="-49" kpx2="7900"/><pair kern="-49" kpx2="286"/><pair kern="-49" kpx2="1090"/><pair kern="-49" kpx2="7902"/><pair kern="-49" kpx2="284"/><pair kern="-49" kpx2="262"/><pair kern="-49" kpx2="266"/><pair kern="-49" kpx2="264"/><pair kern="-49" kpx2="7884"/><pair kern="-49" kpx2="7886"/><pair kern="-49" kpx2="268"/><pair kern="-60" kpx2="7922"/><pair kern="-20" kpx2="7920"/><pair kern="-60" kpx2="7926"/><pair kern="-60" kpx2="7924"/><pair kern="-60" kpx2="7928"/><pair kern="-49" kpx2="1120"/><pair kern="-49" kpx2="7906"/><pair kern="-49" kpx2="288"/><pair kern="-49" kpx2="1150"/><pair kern="-49" kpx2="7904"/><pair kern="-49" kpx2="290"/><pair kern="-49" kpx2="1148"/><pair kern="-20" kpx2="7910"/><pair kern="-49" kpx2="1146"/><pair kern="-20" kpx2="7908"/><pair kern="-49" kpx2="1144"/><pair kern="-20" kpx2="7914"/><pair kern="-60" kpx2="1142"/><pair kern="-20" kpx2="7912"/><pair kern="-60" kpx2="1140"/><pair kern="-20" kpx2="7918"/><pair kern="-49" kpx2="1138"/><pair kern="-20" kpx2="7916"/><pair kern="-69" kpx2="538"/><pair kern="-80" kpx2="1136"/><pair kern="-49" kpx2="71"/><pair kern="-69" kpx2="1035"/><pair kern="-49" kpx2="338"/><pair kern="-49" kpx2="336"/><pair kern="-49" kpx2="67"/><pair kern="-69" kpx2="1026"/><pair kern="-49" kpx2="79"/><pair kern="-49" kpx2="1028"/><pair kern="-20" kpx2="85"/><pair kern="-60" kpx2="7812"/><pair kern="-69" kpx2="84"/><pair kern="-60" kpx2="87"/><pair kern="-60" kpx2="86"/><pair kern="-69" kpx2="1294"/><pair kern="-49" kpx2="81"/><pair kern="-60" kpx2="7808"/><pair kern="-49" kpx2="1295"/><pair kern="-49" kpx2="1292"/><pair kern="-60" kpx2="7810"/><pair kern="-49" kpx2="1054"/><pair kern="-49" kpx2="334"/><pair kern="-49" kpx2="332"/><pair kern="-60" kpx2="1286"/><pair kern="-60" kpx2="89"/><pair kern="-49" kpx2="1287"/><pair kern="-60" kpx2="1284"/><pair kern="-49" kpx2="1285"/><pair kern="-69" kpx2="1066"/><pair kern="-60" kpx2="372"/><pair kern="-60" kpx2="374"/><pair kern="-20" kpx2="368"/><pair kern="-20" kpx2="370"/><pair kern="-69" kpx2="1058"/><pair kern="-49" kpx2="1057"/><pair kern="-60" kpx2="376"/><pair kern="-80" kpx2="1063"/><pair kern="-40" kpx2="1060"/><pair kern="-69" kpx2="356"/><pair kern="-69" kpx2="354"/><pair kern="-20" kpx2="364"/><pair kern="-20" kpx2="366"/><pair kern="-20" kpx2="360"/><pair kern="-20" kpx2="362"/><pair kern="-20" kpx2="952"/><pair kern="-60" kpx2="1228"/><pair kern="-80" kpx2="1227"/><pair kern="-60" kpx2="936"/><pair kern="-60" kpx2="939"/><pair kern="-60" kpx2="933"/><pair kern="-69" kpx2="932"/><pair kern="-49" kpx2="934"/><pair kern="-49" kpx2="1254"/><pair kern="-40" kpx2="927"/><pair kern="-40" kpx2="920"/><pair kern="-49" kpx2="1258"/><pair kern="-49" kpx2="1256"/><pair kern="-80" kpx2="1268"/><pair kern="-60" kpx2="1269"/><pair kern="-20" kpx2="431"/><pair kern="-49" kpx2="416"/><pair kern="-49" kpx2="1152"/><pair kern="-49" kpx2="199"/><pair kern="-20" kpx2="220"/><pair kern="-60" kpx2="221"/><pair kern="-49" kpx2="216"/><pair kern="-20" kpx2="217"/><pair kern="-20" kpx2="218"/><pair kern="-20" kpx2="219"/><pair kern="-49" kpx2="212"/><pair kern="-49" kpx2="213"/><pair kern="-49" kpx2="214"/><pair kern="-49" kpx2="210"/><pair kern="-49" kpx2="211"/><pair kern="-49" kpx2="510"/><pair kern="-49" kpx2="1185"/><pair kern="-69" kpx2="1184"/><pair kern="-60" kpx2="978"/><pair kern="-49" kpx2="1194"/><pair kern="-49" kpx2="1192"/><pair kern="-60" kpx2="1198"/><pair kern="-49" kpx2="1197"/><pair kern="-69" kpx2="1196"/><pair kern="-60" kpx2="1200"/><pair kern="-80" kpx2="1206"/><pair kern="-60" kpx2="1207"/><pair kern="-69" kpx2="1204"/><pair kern="-49" kpx2="1205"/><pair kern="-80" kpx2="1208"/><pair kern="-60" kpx2="1209"/><pair kern="-60" kpx2="1214"/><pair kern="-60" kpx2="1212"/></kerning><kerning kpx1="1122"><pair kern="-20" kpx2="1035"/><pair kern="-20" kpx2="1098"/><pair kern="-20" kpx2="1026"/><pair kern="-40" kpx2="1227"/><pair kern="-20" kpx2="1090"/><pair kern="-20" kpx2="1294"/><pair kern="-20" kpx2="1295"/><pair kern="-40" kpx2="8217"/><pair kern="-49" kpx2="1286"/><pair kern="-49" kpx2="1284"/><pair kern="-40" kpx2="8221"/><pair kern="-20" kpx2="1066"/><pair kern="-40" kpx2="34"/><pair kern="-20" kpx2="1185"/><pair kern="-20" kpx2="1184"/><pair kern="-40" kpx2="39"/><pair kern="-40" kpx2="1058"/><pair kern="-40" kpx2="1063"/><pair kern="-29" kpx2="1198"/><pair kern="-20" kpx2="1197"/><pair kern="-40" kpx2="1196"/><pair kern="-40" kpx2="1268"/><pair kern="-29" kpx2="1200"/><pair kern="-40" kpx2="1206"/><pair kern="-20" kpx2="1204"/><pair kern="-20" kpx2="1205"/><pair kern="-29" kpx2="1142"/><pair kern="-40" kpx2="1208"/><pair kern="-29" kpx2="1140"/><pair kern="-40" kpx2="1136"/></kerning><kerning kpx1="1123"><pair kern="-49" kpx2="1098"/><pair kern="-20" kpx2="1218"/><pair kern="-40" kpx2="1228"/><pair kern="-20" kpx2="1093"/><pair kern="-40" kpx2="1095"/><pair kern="-49" kpx2="1090"/><pair kern="-29" kpx2="1091"/><pair kern="-29" kpx2="1118"/><pair kern="-49" kpx2="1295"/><pair kern="-20" kpx2="1175"/><pair kern="-20" kpx2="1245"/><pair kern="-60" kpx2="8217"/><pair kern="-49" kpx2="1287"/><pair kern="-60" kpx2="8221"/><pair kern="-49" kpx2="1285"/><pair kern="-60" kpx2="34"/><pair kern="-49" kpx2="1185"/><pair kern="-60" kpx2="39"/><pair kern="-20" kpx2="1249"/><pair kern="-29" kpx2="1263"/><pair kern="-29" kpx2="1199"/><pair kern="-49" kpx2="1197"/><pair kern="-20" kpx2="1121"/><pair kern="-20" kpx2="1151"/><pair kern="-20" kpx2="1203"/><pair kern="-40" kpx2="1269"/><pair kern="-29" kpx2="1201"/><pair kern="-29" kpx2="1267"/><pair kern="-40" kpx2="1207"/><pair kern="-29" kpx2="1265"/><pair kern="-49" kpx2="1205"/><pair kern="-20" kpx2="1143"/><pair kern="-20" kpx2="1279"/><pair kern="-20" kpx2="1141"/><pair kern="-20" kpx2="1277"/><pair kern="-40" kpx2="1209"/><pair kern="-20" kpx2="1215"/><pair kern="-20" kpx2="1078"/><pair kern="-20" kpx2="1213"/></kerning><kerning kpx1="44"><pair kern="-49" kpx2="7888"/><pair kern="-49" kpx2="7890"/><pair kern="-49" kpx2="7892"/><pair kern="-49" kpx2="1098"/><pair kern="-49" kpx2="7894"/><pair kern="-49" kpx2="7896"/><pair kern="-49" kpx2="7898"/><pair kern="-60" kpx2="1095"/><pair kern="-49" kpx2="7900"/><pair kern="-49" kpx2="286"/><pair kern="-49" kpx2="1090"/><pair kern="-49" kpx2="7902"/><pair kern="-49" kpx2="284"/><pair kern="-49" kpx2="262"/><pair kern="-49" kpx2="266"/><pair kern="-49" kpx2="264"/><pair kern="-49" kpx2="7884"/><pair kern="-49" kpx2="7886"/><pair kern="-49" kpx2="268"/><pair kern="-60" kpx2="7922"/><pair kern="-20" kpx2="7920"/><pair kern="-60" kpx2="7926"/><pair kern="-60" kpx2="7924"/><pair kern="-60" kpx2="7928"/><pair kern="-49" kpx2="1120"/><pair kern="-49" kpx2="7906"/><pair kern="-49" kpx2="288"/><pair kern="-49" kpx2="1150"/><pair kern="-49" kpx2="7904"/><pair kern="-49" kpx2="290"/><pair kern="-49" kpx2="1148"/><pair kern="-20" kpx2="7910"/><pair kern="-49" kpx2="1146"/><pair kern="-20" kpx2="7908"/><pair kern="-49" kpx2="1144"/><pair kern="-20" kpx2="7914"/><pair kern="-60" kpx2="1142"/><pair kern="-20" kpx2="7912"/><pair kern="-60" kpx2="1140"/><pair kern="-20" kpx2="7918"/><pair kern="-49" kpx2="1138"/><pair kern="-20" kpx2="7916"/><pair kern="-69" kpx2="538"/><pair kern="-80" kpx2="1136"/><pair kern="-49" kpx2="71"/><pair kern="-69" kpx2="1035"/><pair kern="-49" kpx2="338"/><pair kern="-49" kpx2="336"/><pair kern="-49" kpx2="67"/><pair kern="-69" kpx2="1026"/><pair kern="-49" kpx2="79"/><pair kern="-49" kpx2="1028"/><pair kern="-20" kpx2="85"/><pair kern="-60" kpx2="7812"/><pair kern="-69" kpx2="84"/><pair kern="-60" kpx2="87"/><pair kern="-60" kpx2="86"/><pair kern="-69" kpx2="1294"/><pair kern="-49" kpx2="81"/><pair kern="-60" kpx2="7808"/><pair kern="-49" kpx2="1295"/><pair kern="-49" kpx2="1292"/><pair kern="-60" kpx2="7810"/><pair kern="-49" kpx2="1054"/><pair kern="-49" kpx2="334"/><pair kern="-49" kpx2="332"/><pair kern="-60" kpx2="1286"/><pair kern="-60" kpx2="89"/><pair kern="-49" kpx2="1287"/><pair kern="-60" kpx2="1284"/><pair kern="-49" kpx2="1285"/><pair kern="-69" kpx2="1066"/><pair kern="-60" kpx2="372"/><pair kern="-60" kpx2="374"/><pair kern="-20" kpx2="368"/><pair kern="-20" kpx2="370"/><pair kern="-69" kpx2="1058"/><pair kern="-49" kpx2="1057"/><pair kern="-60" kpx2="376"/><pair kern="-80" kpx2="1063"/><pair kern="-40" kpx2="1060"/><pair kern="-69" kpx2="356"/><pair kern="-69" kpx2="354"/><pair kern="-20" kpx2="364"/><pair kern="-20" kpx2="366"/><pair kern="-20" kpx2="360"/><pair kern="-20" kpx2="362"/><pair kern="-20" kpx2="952"/><pair kern="-60" kpx2="1228"/><pair kern="-80" kpx2="1227"/><pair kern="-60" kpx2="936"/><pair kern="-60" kpx2="939"/><pair kern="-60" kpx2="933"/><pair kern="-69" kpx2="932"/><pair kern="-49" kpx2="934"/><pair kern="-49" kpx2="1254"/><pair kern="-40" kpx2="927"/><pair kern="-40" kpx2="920"/><pair kern="-49" kpx2="1258"/><pair kern="-49" kpx2="1256"/><pair kern="-80" kpx2="1268"/><pair kern="-60" kpx2="1269"/><pair kern="-20" kpx2="431"/><pair kern="-49" kpx2="416"/><pair kern="-49" kpx2="1152"/><pair kern="-49" kpx2="199"/><pair kern="-20" kpx2="220"/><pair kern="-60" kpx2="221"/><pair kern="-49" kpx2="216"/><pair kern="-20" kpx2="217"/><pair kern="-20" kpx2="218"/><pair kern="-20" kpx2="219"/><pair kern="-49" kpx2="212"/><pair kern="-49" kpx2="213"/><pair kern="-49" kpx2="214"/><pair kern="-49" kpx2="210"/><pair kern="-49" kpx2="211"/><pair kern="-49" kpx2="510"/><pair kern="-49" kpx2="1185"/><pair kern="-69" kpx2="1184"/><pair kern="-60" kpx2="978"/><pair kern="-49" kpx2="1194"/><pair kern="-49" kpx2="1192"/><pair kern="-60" kpx2="1198"/><pair kern="-49" kpx2="1197"/><pair kern="-69" kpx2="1196"/><pair kern="-60" kpx2="1200"/><pair kern="-80" kpx2="1206"/><pair kern="-60" kpx2="1207"/><pair kern="-69" kpx2="1204"/><pair kern="-49" kpx2="1205"/><pair kern="-80" kpx2="1208"/><pair kern="-60" kpx2="1209"/><pair kern="-60" kpx2="1214"/><pair kern="-60" kpx2="1212"/></kerning><kerning kpx1="1120"><pair kern="-20" kpx2="1221"/><pair kern="-9" kpx2="1222"/><pair kern="-20" kpx2="1217"/><pair kern="-20" kpx2="1227"/><pair kern="-20" kpx2="1236"/><pair kern="-9" kpx2="1113"/><pair kern="-20" kpx2="1232"/><pair kern="-20" kpx2="1234"/><pair kern="-20" kpx2="1244"/><pair kern="-9" kpx2="1246"/><pair kern="-9" kpx2="1134"/><pair kern="-20" kpx2="1126"/><pair kern="-20" kpx2="1262"/><pair kern="-9" kpx2="1127"/><pair kern="-9" kpx2="1260"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="44"/><pair kern="-20" kpx2="1268"/><pair kern="-20" kpx2="1266"/><pair kern="-20" kpx2="1264"/><pair kern="-20" kpx2="1278"/><pair kern="-9" kpx2="1142"/><pair kern="-20" kpx2="1276"/><pair kern="-9" kpx2="1140"/><pair kern="-20" kpx2="1136"/><pair kern="-20" kpx2="1033"/><pair kern="-9" kpx2="1035"/><pair kern="-20" kpx2="1038"/><pair kern="-9" kpx2="1299"/><pair kern="-20" kpx2="1298"/><pair kern="-9" kpx2="1026"/><pair kern="-20" kpx2="1288"/><pair kern="-20" kpx2="1051"/><pair kern="-9" kpx2="1289"/><pair kern="-9" kpx2="1294"/><pair kern="-20" kpx2="1174"/><pair kern="-9" kpx2="1176"/><pair kern="-40" kpx2="8218"/><pair kern="-20" kpx2="1040"/><pair kern="-20" kpx2="1286"/><pair kern="-40" kpx2="8222"/><pair kern="-20" kpx2="1044"/><pair kern="-20" kpx2="1284"/><pair kern="-9" kpx2="1047"/><pair kern="-20" kpx2="1046"/><pair kern="-9" kpx2="1066"/><pair kern="-9" kpx2="1184"/><pair kern="-9" kpx2="1069"/><pair kern="-29" kpx2="1058"/><pair kern="-20" kpx2="1059"/><pair kern="-20" kpx2="1063"/><pair kern="-9" kpx2="1198"/><pair kern="-20" kpx2="1061"/><pair kern="-29" kpx2="1196"/><pair kern="-9" kpx2="1083"/><pair kern="-20" kpx2="1202"/><pair kern="-9" kpx2="1200"/><pair kern="-20" kpx2="1206"/><pair kern="-9" kpx2="1204"/><pair kern="-20" kpx2="1208"/><pair kern="-9" kpx2="1076"/></kerning><kerning kpx1="45"><pair kern="-40" kpx2="1066"/><pair kern="-20" kpx2="1185"/><pair kern="-40" kpx2="1035"/><pair kern="-40" kpx2="1184"/><pair kern="-20" kpx2="1098"/><pair kern="-40" kpx2="1058"/><pair kern="-40" kpx2="1026"/><pair kern="-20" kpx2="1197"/><pair kern="-20" kpx2="1090"/><pair kern="-40" kpx2="1196"/><pair kern="-40" kpx2="356"/><pair kern="-40" kpx2="84"/><pair kern="-40" kpx2="1294"/><pair kern="-20" kpx2="1295"/><pair kern="-40" kpx2="354"/><pair kern="-40" kpx2="1204"/><pair kern="-20" kpx2="1205"/><pair kern="-40" kpx2="932"/><pair kern="-40" kpx2="538"/></kerning><kerning kpx1="1121"><pair kern="-20" kpx2="1083"/><pair kern="-20" kpx2="1289"/><pair kern="-20" kpx2="1222"/><pair kern="-20" kpx2="1113"/><pair kern="-20" kpx2="1299"/><pair kern="-20" kpx2="1127"/><pair kern="-40" kpx2="8218"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="8222"/><pair kern="-40" kpx2="44"/><pair kern="-20" kpx2="1076"/></kerning><kerning kpx1="1151"><pair kern="-20" kpx2="1083"/><pair kern="-20" kpx2="1289"/><pair kern="-20" kpx2="1222"/><pair kern="-20" kpx2="1113"/><pair kern="-20" kpx2="1299"/><pair kern="-20" kpx2="1127"/><pair kern="-40" kpx2="8218"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="8222"/><pair kern="-40" kpx2="44"/><pair kern="-20" kpx2="1076"/></kerning><kerning kpx1="1150"><pair kern="-20" kpx2="1221"/><pair kern="-9" kpx2="1222"/><pair kern="-20" kpx2="1217"/><pair kern="-20" kpx2="1227"/><pair kern="-20" kpx2="1236"/><pair kern="-9" kpx2="1113"/><pair kern="-20" kpx2="1232"/><pair kern="-20" kpx2="1234"/><pair kern="-20" kpx2="1244"/><pair kern="-9" kpx2="1246"/><pair kern="-9" kpx2="1134"/><pair kern="-20" kpx2="1126"/><pair kern="-20" kpx2="1262"/><pair kern="-9" kpx2="1127"/><pair kern="-9" kpx2="1260"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="44"/><pair kern="-20" kpx2="1268"/><pair kern="-20" kpx2="1266"/><pair kern="-20" kpx2="1264"/><pair kern="-20" kpx2="1278"/><pair kern="-9" kpx2="1142"/><pair kern="-20" kpx2="1276"/><pair kern="-9" kpx2="1140"/><pair kern="-20" kpx2="1136"/><pair kern="-20" kpx2="1033"/><pair kern="-9" kpx2="1035"/><pair kern="-20" kpx2="1038"/><pair kern="-9" kpx2="1299"/><pair kern="-20" kpx2="1298"/><pair kern="-9" kpx2="1026"/><pair kern="-20" kpx2="1288"/><pair kern="-20" kpx2="1051"/><pair kern="-9" kpx2="1289"/><pair kern="-9" kpx2="1294"/><pair kern="-20" kpx2="1174"/><pair kern="-9" kpx2="1176"/><pair kern="-40" kpx2="8218"/><pair kern="-20" kpx2="1040"/><pair kern="-20" kpx2="1286"/><pair kern="-40" kpx2="8222"/><pair kern="-20" kpx2="1044"/><pair kern="-20" kpx2="1284"/><pair kern="-9" kpx2="1047"/><pair kern="-20" kpx2="1046"/><pair kern="-9" kpx2="1066"/><pair kern="-9" kpx2="1184"/><pair kern="-9" kpx2="1069"/><pair kern="-29" kpx2="1058"/><pair kern="-20" kpx2="1059"/><pair kern="-20" kpx2="1063"/><pair kern="-9" kpx2="1198"/><pair kern="-20" kpx2="1061"/><pair kern="-29" kpx2="1196"/><pair kern="-9" kpx2="1083"/><pair kern="-20" kpx2="1202"/><pair kern="-9" kpx2="1200"/><pair kern="-20" kpx2="1206"/><pair kern="-9" kpx2="1204"/><pair kern="-20" kpx2="1208"/><pair kern="-9" kpx2="1076"/></kerning><kerning kpx1="1149"><pair kern="-9" kpx2="1098"/><pair kern="-20" kpx2="1218"/><pair kern="-20" kpx2="1093"/><pair kern="-9" kpx2="1228"/><pair kern="-9" kpx2="1095"/><pair kern="-9" kpx2="1090"/><pair kern="-9" kpx2="1091"/><pair kern="-9" kpx2="1118"/><pair kern="-9" kpx2="1295"/><pair kern="-20" kpx2="1175"/><pair kern="-20" kpx2="1245"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="1287"/><pair kern="-9" kpx2="8221"/><pair kern="-9" kpx2="1285"/><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="1185"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="1263"/><pair kern="-9" kpx2="1197"/><pair kern="-20" kpx2="1203"/><pair kern="-9" kpx2="1269"/><pair kern="-9" kpx2="1207"/><pair kern="-9" kpx2="1267"/><pair kern="-9" kpx2="1205"/><pair kern="-9" kpx2="1265"/><pair kern="-20" kpx2="1279"/><pair kern="-20" kpx2="1277"/><pair kern="-9" kpx2="1209"/><pair kern="-20" kpx2="1078"/></kerning><kerning kpx1="1148"><pair kern="-20" kpx2="1221"/><pair kern="-9" kpx2="1222"/><pair kern="-20" kpx2="1217"/><pair kern="-20" kpx2="1227"/><pair kern="-20" kpx2="1236"/><pair kern="-9" kpx2="1113"/><pair kern="-20" kpx2="1232"/><pair kern="-20" kpx2="1234"/><pair kern="-20" kpx2="1244"/><pair kern="-9" kpx2="1246"/><pair kern="-9" kpx2="1134"/><pair kern="-20" kpx2="1126"/><pair kern="-20" kpx2="1262"/><pair kern="-9" kpx2="1127"/><pair kern="-9" kpx2="1260"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="44"/><pair kern="-20" kpx2="1268"/><pair kern="-20" kpx2="1266"/><pair kern="-20" kpx2="1264"/><pair kern="-20" kpx2="1278"/><pair kern="-9" kpx2="1142"/><pair kern="-20" kpx2="1276"/><pair kern="-9" kpx2="1140"/><pair kern="-20" kpx2="1136"/><pair kern="-20" kpx2="1033"/><pair kern="-9" kpx2="1035"/><pair kern="-20" kpx2="1038"/><pair kern="-9" kpx2="1299"/><pair kern="-20" kpx2="1298"/><pair kern="-9" kpx2="1026"/><pair kern="-20" kpx2="1288"/><pair kern="-20" kpx2="1051"/><pair kern="-9" kpx2="1289"/><pair kern="-9" kpx2="1294"/><pair kern="-20" kpx2="1174"/><pair kern="-9" kpx2="1176"/><pair kern="-40" kpx2="8218"/><pair kern="-20" kpx2="1040"/><pair kern="-20" kpx2="1286"/><pair kern="-40" kpx2="8222"/><pair kern="-20" kpx2="1044"/><pair kern="-20" kpx2="1284"/><pair kern="-9" kpx2="1047"/><pair kern="-20" kpx2="1046"/><pair kern="-9" kpx2="1066"/><pair kern="-9" kpx2="1184"/><pair kern="-9" kpx2="1069"/><pair kern="-29" kpx2="1058"/><pair kern="-20" kpx2="1059"/><pair kern="-20" kpx2="1063"/><pair kern="-9" kpx2="1198"/><pair kern="-20" kpx2="1061"/><pair kern="-29" kpx2="1196"/><pair kern="-9" kpx2="1083"/><pair kern="-20" kpx2="1202"/><pair kern="-9" kpx2="1200"/><pair kern="-20" kpx2="1206"/><pair kern="-9" kpx2="1204"/><pair kern="-20" kpx2="1208"/><pair kern="-9" kpx2="1076"/></kerning><kerning kpx1="1147"><pair kern="-9" kpx2="1098"/><pair kern="-20" kpx2="1218"/><pair kern="-20" kpx2="1093"/><pair kern="-9" kpx2="1228"/><pair kern="-9" kpx2="1095"/><pair kern="-9" kpx2="1090"/><pair kern="-9" kpx2="1091"/><pair kern="-9" kpx2="1118"/><pair kern="-9" kpx2="1295"/><pair kern="-20" kpx2="1175"/><pair kern="-20" kpx2="1245"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="1287"/><pair kern="-9" kpx2="8221"/><pair kern="-9" kpx2="1285"/><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="1185"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="1263"/><pair kern="-9" kpx2="1197"/><pair kern="-20" kpx2="1203"/><pair kern="-9" kpx2="1269"/><pair kern="-9" kpx2="1207"/><pair kern="-9" kpx2="1267"/><pair kern="-9" kpx2="1205"/><pair kern="-9" kpx2="1265"/><pair kern="-20" kpx2="1279"/><pair kern="-20" kpx2="1277"/><pair kern="-9" kpx2="1209"/><pair kern="-20" kpx2="1078"/></kerning><kerning kpx1="1146"><pair kern="-20" kpx2="1221"/><pair kern="-9" kpx2="1222"/><pair kern="-20" kpx2="1217"/><pair kern="-20" kpx2="1227"/><pair kern="-20" kpx2="1236"/><pair kern="-9" kpx2="1113"/><pair kern="-20" kpx2="1232"/><pair kern="-20" kpx2="1234"/><pair kern="-20" kpx2="1244"/><pair kern="-9" kpx2="1246"/><pair kern="-9" kpx2="1134"/><pair kern="-20" kpx2="1126"/><pair kern="-20" kpx2="1262"/><pair kern="-9" kpx2="1127"/><pair kern="-9" kpx2="1260"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="44"/><pair kern="-20" kpx2="1268"/><pair kern="-20" kpx2="1266"/><pair kern="-20" kpx2="1264"/><pair kern="-20" kpx2="1278"/><pair kern="-9" kpx2="1142"/><pair kern="-20" kpx2="1276"/><pair kern="-9" kpx2="1140"/><pair kern="-20" kpx2="1136"/><pair kern="-20" kpx2="1033"/><pair kern="-9" kpx2="1035"/><pair kern="-20" kpx2="1038"/><pair kern="-9" kpx2="1299"/><pair kern="-20" kpx2="1298"/><pair kern="-9" kpx2="1026"/><pair kern="-20" kpx2="1288"/><pair kern="-20" kpx2="1051"/><pair kern="-9" kpx2="1289"/><pair kern="-9" kpx2="1294"/><pair kern="-20" kpx2="1174"/><pair kern="-9" kpx2="1176"/><pair kern="-40" kpx2="8218"/><pair kern="-20" kpx2="1040"/><pair kern="-20" kpx2="1286"/><pair kern="-40" kpx2="8222"/><pair kern="-20" kpx2="1044"/><pair kern="-20" kpx2="1284"/><pair kern="-9" kpx2="1047"/><pair kern="-20" kpx2="1046"/><pair kern="-9" kpx2="1066"/><pair kern="-9" kpx2="1184"/><pair kern="-9" kpx2="1069"/><pair kern="-29" kpx2="1058"/><pair kern="-20" kpx2="1059"/><pair kern="-20" kpx2="1063"/><pair kern="-9" kpx2="1198"/><pair kern="-20" kpx2="1061"/><pair kern="-29" kpx2="1196"/><pair kern="-9" kpx2="1083"/><pair kern="-20" kpx2="1202"/><pair kern="-9" kpx2="1200"/><pair kern="-20" kpx2="1206"/><pair kern="-9" kpx2="1204"/><pair kern="-20" kpx2="1208"/><pair kern="-9" kpx2="1076"/></kerning><kerning kpx1="1145"><pair kern="-20" kpx2="1083"/><pair kern="-20" kpx2="1289"/><pair kern="-20" kpx2="1222"/><pair kern="-20" kpx2="1113"/><pair kern="-20" kpx2="1299"/><pair kern="-20" kpx2="1127"/><pair kern="-40" kpx2="8218"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="8222"/><pair kern="-40" kpx2="44"/><pair kern="-20" kpx2="1076"/></kerning><kerning kpx1="1144"><pair kern="-20" kpx2="1083"/><pair kern="-20" kpx2="1289"/><pair kern="-20" kpx2="1222"/><pair kern="-20" kpx2="1113"/><pair kern="-20" kpx2="1299"/><pair kern="-20" kpx2="1127"/><pair kern="-40" kpx2="8218"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="8222"/><pair kern="-40" kpx2="44"/><pair kern="-20" kpx2="1076"/></kerning><kerning kpx1="1143"><pair kern="-20" kpx2="1083"/><pair kern="-20" kpx2="1289"/><pair kern="-20" kpx2="1222"/><pair kern="-20" kpx2="1113"/><pair kern="-20" kpx2="1299"/><pair kern="-20" kpx2="1127"/><pair kern="-40" kpx2="8218"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="8222"/><pair kern="-40" kpx2="44"/><pair kern="-20" kpx2="1076"/></kerning><kerning kpx1="1142"><pair kern="-49" kpx2="1221"/><pair kern="-40" kpx2="1222"/><pair kern="-20" kpx2="1092"/><pair kern="-20" kpx2="1228"/><pair kern="-20" kpx2="1095"/><pair kern="-20" kpx2="1089"/><pair kern="-69" kpx2="1236"/><pair kern="-20" kpx2="1239"/><pair kern="-69" kpx2="1232"/><pair kern="-40" kpx2="1113"/><pair kern="-69" kpx2="1234"/><pair kern="49" kpx2="1115"/><pair kern="-9" kpx2="1109"/><pair kern="-20" kpx2="1108"/><pair kern="-20" kpx2="1105"/><pair kern="-20" kpx2="1104"/><pair kern="49" kpx2="1106"/><pair kern="-20" kpx2="1255"/><pair kern="-9" kpx2="1254"/><pair kern="-69" kpx2="1126"/><pair kern="-40" kpx2="1127"/><pair kern="-20" kpx2="1259"/><pair kern="-60" kpx2="46"/><pair kern="-9" kpx2="1258"/><pair kern="-20" kpx2="1257"/><pair kern="-60" kpx2="44"/><pair kern="-9" kpx2="1120"/><pair kern="-9" kpx2="1256"/><pair kern="-9" kpx2="1150"/><pair kern="-20" kpx2="1149"/><pair kern="-20" kpx2="1269"/><pair kern="-9" kpx2="1148"/><pair kern="-20" kpx2="1147"/><pair kern="-9" kpx2="1146"/><pair kern="-20" kpx2="1145"/><pair kern="-9" kpx2="1144"/><pair kern="-20" kpx2="1139"/><pair kern="-9" kpx2="1138"/><pair kern="-20" kpx2="1153"/><pair kern="-49" kpx2="1033"/><pair kern="-9" kpx2="1152"/><pair kern="-40" kpx2="1299"/><pair kern="-49" kpx2="1298"/><pair kern="-20" kpx2="1297"/><pair kern="-9" kpx2="1028"/><pair kern="49" kpx2="1165"/><pair kern="-49" kpx2="1288"/><pair kern="-49" kpx2="1051"/><pair kern="-40" kpx2="1289"/><pair kern="-9" kpx2="1292"/><pair kern="-20" kpx2="1293"/><pair kern="-9" kpx2="1054"/><pair kern="-69" kpx2="1282"/><pair kern="-20" kpx2="1283"/><pair kern="-69" kpx2="1040"/><pair kern="-60" kpx2="8218"/><pair kern="-69" kpx2="1280"/><pair kern="-20" kpx2="1281"/><pair kern="-49" kpx2="1044"/><pair kern="-60" kpx2="8222"/><pair kern="49" kpx2="1183"/><pair kern="-9" kpx2="1071"/><pair kern="-20" kpx2="1195"/><pair kern="-9" kpx2="1194"/><pair kern="-20" kpx2="1193"/><pair kern="-9" kpx2="1057"/><pair kern="-9" kpx2="1192"/><pair kern="-29" kpx2="1060"/><pair kern="-40" kpx2="1083"/><pair kern="-20" kpx2="1086"/><pair kern="-20" kpx2="1207"/><pair kern="-20" kpx2="1209"/><pair kern="-20" kpx2="1214"/><pair kern="-29" kpx2="1215"/><pair kern="-20" kpx2="1212"/><pair kern="-20" kpx2="1077"/><pair kern="-29" kpx2="1213"/><pair kern="-40" kpx2="1076"/></kerning><kerning kpx1="1141"><pair kern="-20" kpx2="1083"/><pair kern="-20" kpx2="1289"/><pair kern="-20" kpx2="1222"/><pair kern="-20" kpx2="1113"/><pair kern="-20" kpx2="1299"/><pair kern="-20" kpx2="1127"/><pair kern="-40" kpx2="8218"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="8222"/><pair kern="-40" kpx2="44"/><pair kern="-20" kpx2="1076"/></kerning><kerning kpx1="1140"><pair kern="-49" kpx2="1221"/><pair kern="-40" kpx2="1222"/><pair kern="-20" kpx2="1092"/><pair kern="-20" kpx2="1228"/><pair kern="-20" kpx2="1095"/><pair kern="-20" kpx2="1089"/><pair kern="-69" kpx2="1236"/><pair kern="-20" kpx2="1239"/><pair kern="-69" kpx2="1232"/><pair kern="-40" kpx2="1113"/><pair kern="-69" kpx2="1234"/><pair kern="49" kpx2="1115"/><pair kern="-9" kpx2="1109"/><pair kern="-20" kpx2="1108"/><pair kern="-20" kpx2="1105"/><pair kern="-20" kpx2="1104"/><pair kern="49" kpx2="1106"/><pair kern="-20" kpx2="1255"/><pair kern="-9" kpx2="1254"/><pair kern="-69" kpx2="1126"/><pair kern="-40" kpx2="1127"/><pair kern="-20" kpx2="1259"/><pair kern="-60" kpx2="46"/><pair kern="-9" kpx2="1258"/><pair kern="-20" kpx2="1257"/><pair kern="-60" kpx2="44"/><pair kern="-9" kpx2="1120"/><pair kern="-9" kpx2="1256"/><pair kern="-9" kpx2="1150"/><pair kern="-20" kpx2="1149"/><pair kern="-20" kpx2="1269"/><pair kern="-9" kpx2="1148"/><pair kern="-20" kpx2="1147"/><pair kern="-9" kpx2="1146"/><pair kern="-20" kpx2="1145"/><pair kern="-9" kpx2="1144"/><pair kern="-20" kpx2="1139"/><pair kern="-9" kpx2="1138"/><pair kern="-20" kpx2="1153"/><pair kern="-49" kpx2="1033"/><pair kern="-9" kpx2="1152"/><pair kern="-40" kpx2="1299"/><pair kern="-49" kpx2="1298"/><pair kern="-20" kpx2="1297"/><pair kern="-9" kpx2="1028"/><pair kern="49" kpx2="1165"/><pair kern="-49" kpx2="1288"/><pair kern="-49" kpx2="1051"/><pair kern="-40" kpx2="1289"/><pair kern="-9" kpx2="1292"/><pair kern="-20" kpx2="1293"/><pair kern="-9" kpx2="1054"/><pair kern="-69" kpx2="1282"/><pair kern="-20" kpx2="1283"/><pair kern="-69" kpx2="1040"/><pair kern="-60" kpx2="8218"/><pair kern="-69" kpx2="1280"/><pair kern="-20" kpx2="1281"/><pair kern="-49" kpx2="1044"/><pair kern="-60" kpx2="8222"/><pair kern="49" kpx2="1183"/><pair kern="-9" kpx2="1071"/><pair kern="-20" kpx2="1195"/><pair kern="-9" kpx2="1194"/><pair kern="-20" kpx2="1193"/><pair kern="-9" kpx2="1057"/><pair kern="-9" kpx2="1192"/><pair kern="-29" kpx2="1060"/><pair kern="-40" kpx2="1083"/><pair kern="-20" kpx2="1086"/><pair kern="-20" kpx2="1207"/><pair kern="-20" kpx2="1209"/><pair kern="-20" kpx2="1214"/><pair kern="-29" kpx2="1215"/><pair kern="-20" kpx2="1212"/><pair kern="-20" kpx2="1077"/><pair kern="-29" kpx2="1213"/><pair kern="-40" kpx2="1076"/></kerning><kerning kpx1="1139"><pair kern="-9" kpx2="1098"/><pair kern="-20" kpx2="1218"/><pair kern="-20" kpx2="1093"/><pair kern="-9" kpx2="1228"/><pair kern="-9" kpx2="1095"/><pair kern="-9" kpx2="1090"/><pair kern="-9" kpx2="1091"/><pair kern="-9" kpx2="1118"/><pair kern="-9" kpx2="1295"/><pair kern="-20" kpx2="1175"/><pair kern="-20" kpx2="1245"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="1287"/><pair kern="-9" kpx2="8221"/><pair kern="-9" kpx2="1285"/><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="1185"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="1263"/><pair kern="-9" kpx2="1197"/><pair kern="-20" kpx2="1203"/><pair kern="-9" kpx2="1269"/><pair kern="-9" kpx2="1207"/><pair kern="-9" kpx2="1267"/><pair kern="-9" kpx2="1205"/><pair kern="-9" kpx2="1265"/><pair kern="-20" kpx2="1279"/><pair kern="-20" kpx2="1277"/><pair kern="-9" kpx2="1209"/><pair kern="-20" kpx2="1078"/></kerning><kerning kpx1="1138"><pair kern="-20" kpx2="1221"/><pair kern="-9" kpx2="1222"/><pair kern="-20" kpx2="1217"/><pair kern="-20" kpx2="1227"/><pair kern="-20" kpx2="1236"/><pair kern="-9" kpx2="1113"/><pair kern="-20" kpx2="1232"/><pair kern="-20" kpx2="1234"/><pair kern="-20" kpx2="1244"/><pair kern="-9" kpx2="1246"/><pair kern="-9" kpx2="1134"/><pair kern="-20" kpx2="1126"/><pair kern="-20" kpx2="1262"/><pair kern="-9" kpx2="1127"/><pair kern="-9" kpx2="1260"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="44"/><pair kern="-20" kpx2="1268"/><pair kern="-20" kpx2="1266"/><pair kern="-20" kpx2="1264"/><pair kern="-20" kpx2="1278"/><pair kern="-9" kpx2="1142"/><pair kern="-20" kpx2="1276"/><pair kern="-9" kpx2="1140"/><pair kern="-20" kpx2="1136"/><pair kern="-20" kpx2="1033"/><pair kern="-9" kpx2="1035"/><pair kern="-20" kpx2="1038"/><pair kern="-9" kpx2="1299"/><pair kern="-20" kpx2="1298"/><pair kern="-9" kpx2="1026"/><pair kern="-20" kpx2="1288"/><pair kern="-20" kpx2="1051"/><pair kern="-9" kpx2="1289"/><pair kern="-9" kpx2="1294"/><pair kern="-20" kpx2="1174"/><pair kern="-9" kpx2="1176"/><pair kern="-40" kpx2="8218"/><pair kern="-20" kpx2="1040"/><pair kern="-20" kpx2="1286"/><pair kern="-40" kpx2="8222"/><pair kern="-20" kpx2="1044"/><pair kern="-20" kpx2="1284"/><pair kern="-9" kpx2="1047"/><pair kern="-20" kpx2="1046"/><pair kern="-9" kpx2="1066"/><pair kern="-9" kpx2="1184"/><pair kern="-9" kpx2="1069"/><pair kern="-29" kpx2="1058"/><pair kern="-20" kpx2="1059"/><pair kern="-20" kpx2="1063"/><pair kern="-9" kpx2="1198"/><pair kern="-20" kpx2="1061"/><pair kern="-29" kpx2="1196"/><pair kern="-9" kpx2="1083"/><pair kern="-20" kpx2="1202"/><pair kern="-9" kpx2="1200"/><pair kern="-20" kpx2="1206"/><pair kern="-9" kpx2="1204"/><pair kern="-20" kpx2="1208"/><pair kern="-9" kpx2="1076"/></kerning><kerning kpx1="1137"><pair kern="-9" kpx2="1098"/><pair kern="-20" kpx2="1218"/><pair kern="-20" kpx2="1093"/><pair kern="-9" kpx2="1228"/><pair kern="-9" kpx2="1095"/><pair kern="-9" kpx2="1090"/><pair kern="-9" kpx2="1091"/><pair kern="-9" kpx2="1118"/><pair kern="-9" kpx2="1295"/><pair kern="-20" kpx2="1175"/><pair kern="-20" kpx2="1245"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="1287"/><pair kern="-9" kpx2="8221"/><pair kern="-9" kpx2="1285"/><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="1185"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="1263"/><pair kern="-9" kpx2="1197"/><pair kern="-20" kpx2="1203"/><pair kern="-9" kpx2="1269"/><pair kern="-9" kpx2="1207"/><pair kern="-9" kpx2="1267"/><pair kern="-9" kpx2="1205"/><pair kern="-9" kpx2="1265"/><pair kern="-20" kpx2="1279"/><pair kern="-20" kpx2="1277"/><pair kern="-9" kpx2="1209"/><pair kern="-20" kpx2="1078"/></kerning><kerning kpx1="1136"><pair kern="-29" kpx2="1221"/><pair kern="-29" kpx2="1033"/><pair kern="-20" kpx2="1222"/><pair kern="-20" kpx2="1299"/><pair kern="-40" kpx2="1126"/><pair kern="-29" kpx2="1298"/><pair kern="-20" kpx2="1127"/><pair kern="-69" kpx2="46"/><pair kern="-69" kpx2="44"/><pair kern="-40" kpx2="1236"/><pair kern="-20" kpx2="1083"/><pair kern="-29" kpx2="1288"/><pair kern="-29" kpx2="1051"/><pair kern="-20" kpx2="1289"/><pair kern="-40" kpx2="1232"/><pair kern="-20" kpx2="1113"/><pair kern="-40" kpx2="1234"/><pair kern="-40" kpx2="1282"/><pair kern="-40" kpx2="1040"/><pair kern="-69" kpx2="8218"/><pair kern="-40" kpx2="1280"/><pair kern="-29" kpx2="1044"/><pair kern="-69" kpx2="8222"/><pair kern="-20" kpx2="1076"/></kerning><kerning kpx1="68"><pair kern="-20" kpx2="258"/><pair kern="-20" kpx2="256"/><pair kern="-20" kpx2="260"/><pair kern="-9" kpx2="7922"/><pair kern="-9" kpx2="7926"/><pair kern="-9" kpx2="7924"/><pair kern="-9" kpx2="7928"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="44"/><pair kern="-29" kpx2="538"/><pair kern="-20" kpx2="65"/><pair kern="-20" kpx2="197"/><pair kern="-20" kpx2="196"/><pair kern="-20" kpx2="193"/><pair kern="-20" kpx2="192"/><pair kern="-9" kpx2="1029"/><pair kern="-20" kpx2="195"/><pair kern="-20" kpx2="194"/><pair kern="-9" kpx2="7812"/><pair kern="-9" kpx2="221"/><pair kern="-29" kpx2="84"/><pair kern="-9" kpx2="87"/><pair kern="-9" kpx2="86"/><pair kern="-9" kpx2="7808"/><pair kern="-9" kpx2="7810"/><pair kern="-40" kpx2="8218"/><pair kern="-9" kpx2="89"/><pair kern="-20" kpx2="88"/><pair kern="-40" kpx2="8222"/><pair kern="-20" kpx2="7680"/><pair kern="-9" kpx2="90"/><pair kern="-9" kpx2="372"/><pair kern="-20" kpx2="7862"/><pair kern="-9" kpx2="374"/><pair kern="-20" kpx2="7860"/><pair kern="-20" kpx2="7858"/><pair kern="-20" kpx2="506"/><pair kern="-20" kpx2="7856"/><pair kern="-9" kpx2="381"/><pair kern="-9" kpx2="377"/><pair kern="-9" kpx2="376"/><pair kern="-9" kpx2="379"/><pair kern="-29" kpx2="356"/><pair kern="-20" kpx2="7846"/><pair kern="-20" kpx2="7844"/><pair kern="-20" kpx2="7842"/><pair kern="-29" kpx2="354"/><pair kern="-20" kpx2="7840"/><pair kern="-20" kpx2="7854"/><pair kern="-20" kpx2="7852"/><pair kern="-20" kpx2="7850"/><pair kern="-20" kpx2="7848"/></kerning><kerning kpx1="69"><pair kern="60" kpx2="74"/></kerning><kerning kpx1="1033"><pair kern="-20" kpx2="1098"/><pair kern="-20" kpx2="1228"/><pair kern="-20" kpx2="1095"/><pair kern="-20" kpx2="1090"/><pair kern="-49" kpx2="1227"/><pair kern="-20" kpx2="1091"/><pair kern="-20" kpx2="1118"/><pair kern="-40" kpx2="34"/><pair kern="-40" kpx2="39"/><pair kern="-20" kpx2="1263"/><pair kern="-20" kpx2="1262"/><pair kern="-40" kpx2="1122"/><pair kern="-49" kpx2="1268"/><pair kern="-20" kpx2="1269"/><pair kern="-20" kpx2="1266"/><pair kern="-20" kpx2="1267"/><pair kern="-20" kpx2="1264"/><pair kern="-20" kpx2="1265"/><pair kern="-40" kpx2="1142"/><pair kern="-40" kpx2="1140"/><pair kern="-40" kpx2="1274"/><pair kern="-49" kpx2="1136"/><pair kern="-60" kpx2="1035"/><pair kern="-20" kpx2="1038"/><pair kern="-60" kpx2="1026"/><pair kern="-40" kpx2="1164"/><pair kern="-40" kpx2="1170"/><pair kern="-60" kpx2="1294"/><pair kern="-20" kpx2="1295"/><pair kern="-40" kpx2="8217"/><pair kern="-49" kpx2="1286"/><pair kern="-29" kpx2="1287"/><pair kern="-49" kpx2="1284"/><pair kern="-40" kpx2="1182"/><pair kern="-40" kpx2="8221"/><pair kern="-29" kpx2="1285"/><pair kern="-60" kpx2="1066"/><pair kern="-20" kpx2="1185"/><pair kern="-60" kpx2="1184"/><pair kern="-49" kpx2="1058"/><pair kern="-20" kpx2="1059"/><pair kern="-20" kpx2="1199"/><pair kern="-49" kpx2="1063"/><pair kern="-49" kpx2="1198"/><pair kern="-20" kpx2="1197"/><pair kern="-49" kpx2="1196"/><pair kern="-49" kpx2="1200"/><pair kern="-20" kpx2="1201"/><pair kern="-49" kpx2="1206"/><pair kern="-20" kpx2="1207"/><pair kern="-60" kpx2="1204"/><pair kern="-20" kpx2="1205"/><pair kern="-49" kpx2="1208"/><pair kern="-20" kpx2="1209"/></kerning><kerning kpx1="70"><pair kern="-20" kpx2="65"/><pair kern="-20" kpx2="197"/><pair kern="-20" kpx2="196"/><pair kern="-20" kpx2="193"/><pair kern="-20" kpx2="192"/><pair kern="-20" kpx2="195"/><pair kern="-20" kpx2="194"/><pair kern="-20" kpx2="258"/><pair kern="-20" kpx2="256"/><pair kern="-20" kpx2="260"/><pair kern="-60" kpx2="8218"/><pair kern="-60" kpx2="8222"/><pair kern="-20" kpx2="7680"/><pair kern="-20" kpx2="7862"/><pair kern="-20" kpx2="7860"/><pair kern="-20" kpx2="7858"/><pair kern="-20" kpx2="506"/><pair kern="-20" kpx2="7856"/><pair kern="-60" kpx2="46"/><pair kern="-60" kpx2="44"/><pair kern="-20" kpx2="7846"/><pair kern="-20" kpx2="7844"/><pair kern="-20" kpx2="7842"/><pair kern="-20" kpx2="7840"/><pair kern="-20" kpx2="7854"/><pair kern="-20" kpx2="7852"/><pair kern="20" kpx2="63"/><pair kern="-20" kpx2="7850"/><pair kern="-20" kpx2="7848"/></kerning><kerning kpx1="1034"><pair kern="-20" kpx2="1098"/><pair kern="-20" kpx2="1228"/><pair kern="-20" kpx2="1095"/><pair kern="-20" kpx2="1090"/><pair kern="-49" kpx2="1227"/><pair kern="-20" kpx2="1091"/><pair kern="-20" kpx2="1118"/><pair kern="-40" kpx2="34"/><pair kern="-40" kpx2="39"/><pair kern="-20" kpx2="1263"/><pair kern="-20" kpx2="1262"/><pair kern="-40" kpx2="1122"/><pair kern="-49" kpx2="1268"/><pair kern="-20" kpx2="1269"/><pair kern="-20" kpx2="1266"/><pair kern="-20" kpx2="1267"/><pair kern="-20" kpx2="1264"/><pair kern="-20" kpx2="1265"/><pair kern="-40" kpx2="1142"/><pair kern="-40" kpx2="1140"/><pair kern="-40" kpx2="1274"/><pair kern="-49" kpx2="1136"/><pair kern="-60" kpx2="1035"/><pair kern="-20" kpx2="1038"/><pair kern="-60" kpx2="1026"/><pair kern="-40" kpx2="1164"/><pair kern="-40" kpx2="1170"/><pair kern="-60" kpx2="1294"/><pair kern="-20" kpx2="1295"/><pair kern="-40" kpx2="8217"/><pair kern="-49" kpx2="1286"/><pair kern="-29" kpx2="1287"/><pair kern="-49" kpx2="1284"/><pair kern="-40" kpx2="1182"/><pair kern="-40" kpx2="8221"/><pair kern="-29" kpx2="1285"/><pair kern="-60" kpx2="1066"/><pair kern="-20" kpx2="1185"/><pair kern="-60" kpx2="1184"/><pair kern="-49" kpx2="1058"/><pair kern="-20" kpx2="1059"/><pair kern="-20" kpx2="1199"/><pair kern="-49" kpx2="1063"/><pair kern="-49" kpx2="1198"/><pair kern="-20" kpx2="1197"/><pair kern="-49" kpx2="1196"/><pair kern="-49" kpx2="1200"/><pair kern="-20" kpx2="1201"/><pair kern="-49" kpx2="1206"/><pair kern="-20" kpx2="1207"/><pair kern="-60" kpx2="1204"/><pair kern="-20" kpx2="1205"/><pair kern="-49" kpx2="1208"/><pair kern="-20" kpx2="1209"/></kerning><kerning kpx1="1035"><pair kern="-20" kpx2="1098"/><pair kern="-20" kpx2="1228"/><pair kern="-20" kpx2="1095"/><pair kern="-20" kpx2="1090"/><pair kern="-49" kpx2="1227"/><pair kern="-20" kpx2="1091"/><pair kern="-20" kpx2="1118"/><pair kern="-40" kpx2="34"/><pair kern="-40" kpx2="39"/><pair kern="-20" kpx2="1263"/><pair kern="-20" kpx2="1262"/><pair kern="-40" kpx2="1122"/><pair kern="-49" kpx2="1268"/><pair kern="-20" kpx2="1269"/><pair kern="-20" kpx2="1266"/><pair kern="-20" kpx2="1267"/><pair kern="-20" kpx2="1264"/><pair kern="-20" kpx2="1265"/><pair kern="-40" kpx2="1142"/><pair kern="-40" kpx2="1140"/><pair kern="-40" kpx2="1274"/><pair kern="-49" kpx2="1136"/><pair kern="-60" kpx2="1035"/><pair kern="-20" kpx2="1038"/><pair kern="-60" kpx2="1026"/><pair kern="-40" kpx2="1164"/><pair kern="-40" kpx2="1170"/><pair kern="-60" kpx2="1294"/><pair kern="-20" kpx2="1295"/><pair kern="-40" kpx2="8217"/><pair kern="-49" kpx2="1286"/><pair kern="-29" kpx2="1287"/><pair kern="-49" kpx2="1284"/><pair kern="-40" kpx2="1182"/><pair kern="-40" kpx2="8221"/><pair kern="-29" kpx2="1285"/><pair kern="-60" kpx2="1066"/><pair kern="-20" kpx2="1185"/><pair kern="-60" kpx2="1184"/><pair kern="-49" kpx2="1058"/><pair kern="-20" kpx2="1059"/><pair kern="-20" kpx2="1199"/><pair kern="-49" kpx2="1063"/><pair kern="-49" kpx2="1198"/><pair kern="-20" kpx2="1197"/><pair kern="-49" kpx2="1196"/><pair kern="-49" kpx2="1200"/><pair kern="-20" kpx2="1201"/><pair kern="-49" kpx2="1206"/><pair kern="-20" kpx2="1207"/><pair kern="-60" kpx2="1204"/><pair kern="-20" kpx2="1205"/><pair kern="-49" kpx2="1208"/><pair kern="-20" kpx2="1209"/></kerning><kerning kpx1="1036"><pair kern="-20" kpx2="1152"/><pair kern="-20" kpx2="1228"/><pair kern="-9" kpx2="1296"/><pair kern="-20" kpx2="1095"/><pair kern="-20" kpx2="1028"/><pair kern="-20" kpx2="1227"/><pair kern="-20" kpx2="1292"/><pair kern="-20" kpx2="1054"/><pair kern="-20" kpx2="1282"/><pair kern="-20" kpx2="1280"/><pair kern="-20" kpx2="1287"/><pair kern="-20" kpx2="1285"/><pair kern="-20" kpx2="1254"/><pair kern="-20" kpx2="1194"/><pair kern="-20" kpx2="1057"/><pair kern="-20" kpx2="1192"/><pair kern="-20" kpx2="1258"/><pair kern="-20" kpx2="1063"/><pair kern="-20" kpx2="1120"/><pair kern="-20" kpx2="1060"/><pair kern="-20" kpx2="1256"/><pair kern="-20" kpx2="1150"/><pair kern="-20" kpx2="1268"/><pair kern="-20" kpx2="1269"/><pair kern="-20" kpx2="1148"/><pair kern="-20" kpx2="1206"/><pair kern="-20" kpx2="1146"/><pair kern="-20" kpx2="1207"/><pair kern="-20" kpx2="1144"/><pair kern="-20" kpx2="1208"/><pair kern="-20" kpx2="1209"/><pair kern="-49" kpx2="1214"/><pair kern="-20" kpx2="1138"/><pair kern="-49" kpx2="1212"/><pair kern="-20" kpx2="1136"/></kerning><kerning kpx1="65"><pair kern="-20" kpx2="7888"/><pair kern="-20" kpx2="7890"/><pair kern="-20" kpx2="7892"/><pair kern="-20" kpx2="7894"/><pair kern="-20" kpx2="7896"/><pair kern="-20" kpx2="7898"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-20" kpx2="262"/><pair kern="-20" kpx2="266"/><pair kern="-20" kpx2="264"/><pair kern="-20" kpx2="7884"/><pair kern="-20" kpx2="268"/><pair kern="-20" kpx2="7886"/><pair kern="-69" kpx2="34"/><pair kern="-60" kpx2="7922"/><pair kern="-60" kpx2="7926"/><pair kern="-69" kpx2="39"/><pair kern="-60" kpx2="7924"/><pair kern="-60" kpx2="7928"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-20" kpx2="416"/><pair kern="-69" kpx2="538"/><pair kern="-20" kpx2="71"/><pair kern="-20" kpx2="338"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-20" kpx2="199"/><pair kern="-20" kpx2="79"/><pair kern="129" kpx2="74"/><pair kern="-40" kpx2="7812"/><pair kern="-60" kpx2="221"/><pair kern="-69" kpx2="84"/><pair kern="-40" kpx2="87"/><pair kern="-40" kpx2="86"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="81"/><pair kern="-40" kpx2="7808"/><pair kern="-40" kpx2="7810"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="334"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-20" kpx2="332"/><pair kern="-69" kpx2="8217"/><pair kern="-60" kpx2="89"/><pair kern="-20" kpx2="210"/><pair kern="-69" kpx2="8221"/><pair kern="-20" kpx2="211"/><pair kern="-40" kpx2="372"/><pair kern="-20" kpx2="510"/><pair kern="-60" kpx2="374"/><pair kern="-60" kpx2="376"/><pair kern="-69" kpx2="356"/><pair kern="-69" kpx2="354"/></kerning><kerning kpx1="66"><pair kern="-20" kpx2="258"/><pair kern="-20" kpx2="256"/><pair kern="-20" kpx2="260"/><pair kern="-9" kpx2="7922"/><pair kern="-9" kpx2="7926"/><pair kern="-9" kpx2="7924"/><pair kern="-9" kpx2="7928"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="44"/><pair kern="-29" kpx2="538"/><pair kern="-20" kpx2="65"/><pair kern="-20" kpx2="197"/><pair kern="-20" kpx2="196"/><pair kern="-20" kpx2="193"/><pair kern="-20" kpx2="192"/><pair kern="-9" kpx2="1029"/><pair kern="-20" kpx2="195"/><pair kern="-20" kpx2="194"/><pair kern="-9" kpx2="7812"/><pair kern="-9" kpx2="221"/><pair kern="-29" kpx2="84"/><pair kern="-9" kpx2="87"/><pair kern="-9" kpx2="86"/><pair kern="-9" kpx2="7808"/><pair kern="-9" kpx2="7810"/><pair kern="-40" kpx2="8218"/><pair kern="-9" kpx2="89"/><pair kern="-20" kpx2="88"/><pair kern="-40" kpx2="8222"/><pair kern="-20" kpx2="7680"/><pair kern="-9" kpx2="90"/><pair kern="-9" kpx2="372"/><pair kern="-20" kpx2="7862"/><pair kern="-9" kpx2="374"/><pair kern="-20" kpx2="7860"/><pair kern="-20" kpx2="7858"/><pair kern="-20" kpx2="506"/><pair kern="-20" kpx2="7856"/><pair kern="-9" kpx2="381"/><pair kern="-9" kpx2="377"/><pair kern="-9" kpx2="376"/><pair kern="-9" kpx2="379"/><pair kern="-29" kpx2="356"/><pair kern="-20" kpx2="7846"/><pair kern="-20" kpx2="7844"/><pair kern="-20" kpx2="7842"/><pair kern="-29" kpx2="354"/><pair kern="-20" kpx2="7840"/><pair kern="-20" kpx2="7854"/><pair kern="-20" kpx2="7852"/><pair kern="-20" kpx2="7850"/><pair kern="-20" kpx2="7848"/></kerning><kerning kpx1="1038"><pair kern="-49" kpx2="1221"/><pair kern="-40" kpx2="1222"/><pair kern="-20" kpx2="1092"/><pair kern="-20" kpx2="1228"/><pair kern="-20" kpx2="1095"/><pair kern="-20" kpx2="1089"/><pair kern="-69" kpx2="1236"/><pair kern="-20" kpx2="1239"/><pair kern="-69" kpx2="1232"/><pair kern="-40" kpx2="1113"/><pair kern="-69" kpx2="1234"/><pair kern="49" kpx2="1115"/><pair kern="-9" kpx2="1109"/><pair kern="-20" kpx2="1108"/><pair kern="-20" kpx2="1105"/><pair kern="-20" kpx2="1104"/><pair kern="49" kpx2="1106"/><pair kern="-20" kpx2="1255"/><pair kern="-9" kpx2="1254"/><pair kern="-69" kpx2="1126"/><pair kern="-40" kpx2="1127"/><pair kern="-20" kpx2="1259"/><pair kern="-60" kpx2="46"/><pair kern="-9" kpx2="1258"/><pair kern="-20" kpx2="1257"/><pair kern="-60" kpx2="44"/><pair kern="-9" kpx2="1120"/><pair kern="-9" kpx2="1256"/><pair kern="-9" kpx2="1150"/><pair kern="-20" kpx2="1149"/><pair kern="-20" kpx2="1269"/><pair kern="-9" kpx2="1148"/><pair kern="-20" kpx2="1147"/><pair kern="-9" kpx2="1146"/><pair kern="-20" kpx2="1145"/><pair kern="-9" kpx2="1144"/><pair kern="-20" kpx2="1139"/><pair kern="-9" kpx2="1138"/><pair kern="-20" kpx2="1153"/><pair kern="-49" kpx2="1033"/><pair kern="-9" kpx2="1152"/><pair kern="-40" kpx2="1299"/><pair kern="-49" kpx2="1298"/><pair kern="-20" kpx2="1297"/><pair kern="-9" kpx2="1028"/><pair kern="49" kpx2="1165"/><pair kern="-49" kpx2="1288"/><pair kern="-49" kpx2="1051"/><pair kern="-40" kpx2="1289"/><pair kern="-9" kpx2="1292"/><pair kern="-20" kpx2="1293"/><pair kern="-9" kpx2="1054"/><pair kern="-69" kpx2="1282"/><pair kern="-20" kpx2="1283"/><pair kern="-69" kpx2="1040"/><pair kern="-60" kpx2="8218"/><pair kern="-69" kpx2="1280"/><pair kern="-20" kpx2="1281"/><pair kern="-49" kpx2="1044"/><pair kern="-60" kpx2="8222"/><pair kern="49" kpx2="1183"/><pair kern="-9" kpx2="1071"/><pair kern="-20" kpx2="1195"/><pair kern="-9" kpx2="1194"/><pair kern="-20" kpx2="1193"/><pair kern="-9" kpx2="1057"/><pair kern="-9" kpx2="1192"/><pair kern="-29" kpx2="1060"/><pair kern="-40" kpx2="1083"/><pair kern="-20" kpx2="1086"/><pair kern="-20" kpx2="1207"/><pair kern="-20" kpx2="1209"/><pair kern="-20" kpx2="1214"/><pair kern="-29" kpx2="1215"/><pair kern="-20" kpx2="1212"/><pair kern="-20" kpx2="1077"/><pair kern="-29" kpx2="1213"/><pair kern="-40" kpx2="1076"/></kerning><kerning kpx1="67"><pair kern="-20" kpx2="7888"/><pair kern="-20" kpx2="7890"/><pair kern="-20" kpx2="71"/><pair kern="-20" kpx2="7892"/><pair kern="-20" kpx2="338"/><pair kern="-20" kpx2="7894"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-20" kpx2="7896"/><pair kern="-20" kpx2="199"/><pair kern="-20" kpx2="7898"/><pair kern="-20" kpx2="79"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-20" kpx2="262"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="81"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="266"/><pair kern="-20" kpx2="334"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-20" kpx2="264"/><pair kern="-20" kpx2="332"/><pair kern="-20" kpx2="7884"/><pair kern="-20" kpx2="7886"/><pair kern="-20" kpx2="210"/><pair kern="-20" kpx2="268"/><pair kern="-20" kpx2="211"/><pair kern="-20" kpx2="510"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-20" kpx2="416"/></kerning><kerning kpx1="76"><pair kern="-20" kpx2="7888"/><pair kern="-20" kpx2="7890"/><pair kern="-20" kpx2="7892"/><pair kern="-20" kpx2="7894"/><pair kern="-20" kpx2="7896"/><pair kern="-20" kpx2="7898"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-20" kpx2="262"/><pair kern="-20" kpx2="266"/><pair kern="-20" kpx2="264"/><pair kern="-20" kpx2="7884"/><pair kern="-20" kpx2="7886"/><pair kern="-20" kpx2="268"/><pair kern="-80" kpx2="34"/><pair kern="-29" kpx2="7922"/><pair kern="-9" kpx2="7920"/><pair kern="-29" kpx2="7926"/><pair kern="-80" kpx2="39"/><pair kern="-29" kpx2="7924"/><pair kern="-29" kpx2="7928"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-9" kpx2="7910"/><pair kern="-9" kpx2="7908"/><pair kern="-9" kpx2="431"/><pair kern="-9" kpx2="7914"/><pair kern="-20" kpx2="416"/><pair kern="-9" kpx2="7912"/><pair kern="-9" kpx2="7918"/><pair kern="-9" kpx2="7916"/><pair kern="-20" kpx2="538"/><pair kern="-20" kpx2="71"/><pair kern="-20" kpx2="338"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-20" kpx2="199"/><pair kern="-20" kpx2="79"/><pair kern="-20" kpx2="7812"/><pair kern="-9" kpx2="220"/><pair kern="-9" kpx2="85"/><pair kern="-29" kpx2="221"/><pair kern="-20" kpx2="84"/><pair kern="-20" kpx2="87"/><pair kern="-20" kpx2="86"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="81"/><pair kern="-20" kpx2="7808"/><pair kern="-9" kpx2="217"/><pair kern="-20" kpx2="7810"/><pair kern="-9" kpx2="218"/><pair kern="-9" kpx2="219"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="334"/><pair kern="-20" kpx2="213"/><pair kern="-80" kpx2="8217"/><pair kern="-20" kpx2="214"/><pair kern="-20" kpx2="332"/><pair kern="-29" kpx2="89"/><pair kern="-80" kpx2="8221"/><pair kern="-20" kpx2="210"/><pair kern="-20" kpx2="211"/><pair kern="-20" kpx2="372"/><pair kern="-20" kpx2="510"/><pair kern="-29" kpx2="374"/><pair kern="-9" kpx2="368"/><pair kern="-9" kpx2="370"/><pair kern="-29" kpx2="376"/><pair kern="-20" kpx2="356"/><pair kern="-20" kpx2="354"/><pair kern="-9" kpx2="364"/><pair kern="-9" kpx2="366"/><pair kern="-9" kpx2="360"/><pair kern="-9" kpx2="362"/></kerning><kerning kpx1="1026"><pair kern="-20" kpx2="1098"/><pair kern="-20" kpx2="1228"/><pair kern="-20" kpx2="1095"/><pair kern="-20" kpx2="1090"/><pair kern="-49" kpx2="1227"/><pair kern="-20" kpx2="1091"/><pair kern="-20" kpx2="1118"/><pair kern="-40" kpx2="34"/><pair kern="-40" kpx2="39"/><pair kern="-20" kpx2="1263"/><pair kern="-20" kpx2="1262"/><pair kern="-40" kpx2="1122"/><pair kern="-49" kpx2="1268"/><pair kern="-20" kpx2="1269"/><pair kern="-20" kpx2="1266"/><pair kern="-20" kpx2="1267"/><pair kern="-20" kpx2="1264"/><pair kern="-20" kpx2="1265"/><pair kern="-40" kpx2="1142"/><pair kern="-40" kpx2="1140"/><pair kern="-40" kpx2="1274"/><pair kern="-49" kpx2="1136"/><pair kern="-60" kpx2="1035"/><pair kern="-20" kpx2="1038"/><pair kern="-60" kpx2="1026"/><pair kern="-40" kpx2="1164"/><pair kern="-40" kpx2="1170"/><pair kern="-60" kpx2="1294"/><pair kern="-20" kpx2="1295"/><pair kern="-40" kpx2="8217"/><pair kern="-49" kpx2="1286"/><pair kern="-29" kpx2="1287"/><pair kern="-49" kpx2="1284"/><pair kern="-40" kpx2="1182"/><pair kern="-40" kpx2="8221"/><pair kern="-29" kpx2="1285"/><pair kern="-60" kpx2="1066"/><pair kern="-20" kpx2="1185"/><pair kern="-60" kpx2="1184"/><pair kern="-49" kpx2="1058"/><pair kern="-20" kpx2="1059"/><pair kern="-20" kpx2="1199"/><pair kern="-49" kpx2="1063"/><pair kern="-49" kpx2="1198"/><pair kern="-20" kpx2="1197"/><pair kern="-49" kpx2="1196"/><pair kern="-49" kpx2="1200"/><pair kern="-20" kpx2="1201"/><pair kern="-49" kpx2="1206"/><pair kern="-20" kpx2="1207"/><pair kern="-60" kpx2="1204"/><pair kern="-20" kpx2="1205"/><pair kern="-49" kpx2="1208"/><pair kern="-20" kpx2="1209"/></kerning><kerning kpx1="79"><pair kern="-20" kpx2="258"/><pair kern="-20" kpx2="256"/><pair kern="-20" kpx2="260"/><pair kern="-9" kpx2="7922"/><pair kern="-9" kpx2="7926"/><pair kern="-9" kpx2="7924"/><pair kern="-9" kpx2="7928"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="44"/><pair kern="-29" kpx2="538"/><pair kern="-20" kpx2="65"/><pair kern="-20" kpx2="197"/><pair kern="-20" kpx2="196"/><pair kern="-20" kpx2="193"/><pair kern="-20" kpx2="192"/><pair kern="-9" kpx2="1029"/><pair kern="-20" kpx2="195"/><pair kern="-20" kpx2="194"/><pair kern="-9" kpx2="7812"/><pair kern="-9" kpx2="221"/><pair kern="-29" kpx2="84"/><pair kern="-9" kpx2="87"/><pair kern="-9" kpx2="86"/><pair kern="-9" kpx2="7808"/><pair kern="-9" kpx2="7810"/><pair kern="-40" kpx2="8218"/><pair kern="-9" kpx2="89"/><pair kern="-20" kpx2="88"/><pair kern="-40" kpx2="8222"/><pair kern="-20" kpx2="7680"/><pair kern="-9" kpx2="90"/><pair kern="-9" kpx2="372"/><pair kern="-20" kpx2="7862"/><pair kern="-9" kpx2="374"/><pair kern="-20" kpx2="7860"/><pair kern="-20" kpx2="7858"/><pair kern="-20" kpx2="506"/><pair kern="-20" kpx2="7856"/><pair kern="-9" kpx2="381"/><pair kern="-9" kpx2="377"/><pair kern="-9" kpx2="376"/><pair kern="-9" kpx2="379"/><pair kern="-29" kpx2="356"/><pair kern="-20" kpx2="7846"/><pair kern="-20" kpx2="7844"/><pair kern="-20" kpx2="7842"/><pair kern="-29" kpx2="354"/><pair kern="-20" kpx2="7840"/><pair kern="-20" kpx2="7854"/><pair kern="-20" kpx2="7852"/><pair kern="-20" kpx2="7850"/><pair kern="-20" kpx2="7848"/></kerning><kerning kpx1="1027"><pair kern="-49" kpx2="1100"/><pair kern="-20" kpx2="1101"/><pair kern="-49" kpx2="1102"/><pair kern="-29" kpx2="1103"/><pair kern="-49" kpx2="1096"/><pair kern="-49" kpx2="1097"/><pair kern="-40" kpx2="1098"/><pair kern="-49" kpx2="1099"/><pair kern="-69" kpx2="1092"/><pair kern="-20" kpx2="1093"/><pair kern="-49" kpx2="1094"/><pair kern="-49" kpx2="1095"/><pair kern="-49" kpx2="1088"/><pair kern="-69" kpx2="1089"/><pair kern="-40" kpx2="1090"/><pair kern="-40" kpx2="1091"/><pair kern="-49" kpx2="1117"/><pair kern="-49" kpx2="1116"/><pair kern="-49" kpx2="1119"/><pair kern="-40" kpx2="1118"/><pair kern="-60" kpx2="1113"/><pair kern="-49" kpx2="1114"/><pair kern="-60" kpx2="1109"/><pair kern="-69" kpx2="1108"/><pair kern="-69" kpx2="1105"/><pair kern="-69" kpx2="1104"/><pair kern="-49" kpx2="1107"/><pair kern="-49" kpx2="1133"/><pair kern="-49" kpx2="1131"/><pair kern="-49" kpx2="1129"/><pair kern="-69" kpx2="1126"/><pair kern="-60" kpx2="1127"/><pair kern="-49" kpx2="1125"/><pair kern="-60" kpx2="46"/><pair kern="-60" kpx2="44"/><pair kern="-20" kpx2="1120"/><pair kern="-40" kpx2="45"/><pair kern="-20" kpx2="1121"/><pair kern="-20" kpx2="1151"/><pair kern="-20" kpx2="1150"/><pair kern="-69" kpx2="1149"/><pair kern="-20" kpx2="1148"/><pair kern="-69" kpx2="1147"/><pair kern="-20" kpx2="1146"/><pair kern="-69" kpx2="1145"/><pair kern="-20" kpx2="1144"/><pair kern="-20" kpx2="1143"/><pair kern="-20" kpx2="1141"/><pair kern="-69" kpx2="1139"/><pair kern="-20" kpx2="1138"/><pair kern="-49" kpx2="1137"/><pair kern="-49" kpx2="1033"/><pair kern="-60" kpx2="1299"/><pair kern="-49" kpx2="1298"/><pair kern="-69" kpx2="1297"/><pair kern="-20" kpx2="1028"/><pair kern="-40" kpx2="8211"/><pair kern="-49" kpx2="1291"/><pair kern="-49" kpx2="1288"/><pair kern="-49" kpx2="1051"/><pair kern="-60" kpx2="1289"/><pair kern="-40" kpx2="1295"/><pair kern="-20" kpx2="1292"/><pair kern="-40" kpx2="8213"/><pair kern="-69" kpx2="1293"/><pair kern="-20" kpx2="1054"/><pair kern="-40" kpx2="8212"/><pair kern="-69" kpx2="1282"/><pair kern="-69" kpx2="1283"/><pair kern="-69" kpx2="1040"/><pair kern="-60" kpx2="8218"/><pair kern="-69" kpx2="1280"/><pair kern="-69" kpx2="1281"/><pair kern="-49" kpx2="1287"/><pair kern="-49" kpx2="1044"/><pair kern="-60" kpx2="8222"/><pair kern="-49" kpx2="1285"/><pair kern="20" kpx2="1058"/><pair kern="-20" kpx2="1057"/><pair kern="-40" kpx2="1060"/><pair kern="-60" kpx2="1083"/><pair kern="-49" kpx2="1082"/><pair kern="-49" kpx2="1081"/><pair kern="-49" kpx2="1080"/><pair kern="-49" kpx2="1087"/><pair kern="-69" kpx2="1086"/><pair kern="-49" kpx2="1085"/><pair kern="-49" kpx2="1084"/><pair kern="-49" kpx2="1075"/><pair kern="-49" kpx2="1074"/><pair kern="-20" kpx2="1079"/><pair kern="-20" kpx2="1078"/><pair kern="-69" kpx2="1077"/><pair kern="-60" kpx2="1076"/><pair kern="-49" kpx2="1221"/><pair kern="-49" kpx2="1220"/><pair kern="-60" kpx2="1222"/><pair kern="-20" kpx2="1218"/><pair kern="-49" kpx2="1228"/><pair kern="-49" kpx2="1230"/><pair kern="-49" kpx2="1224"/><pair kern="-49" kpx2="1226"/><pair kern="-69" kpx2="1236"/><pair kern="-69" kpx2="1239"/><pair kern="-69" kpx2="1232"/><pair kern="-69" kpx2="1234"/><pair kern="-20" kpx2="1245"/><pair kern="-20" kpx2="1247"/><pair kern="-69" kpx2="1255"/><pair kern="-20" kpx2="1254"/><pair kern="-49" kpx2="1253"/><pair kern="-49" kpx2="1251"/><pair kern="-29" kpx2="1249"/><pair kern="-40" kpx2="1263"/><pair kern="-20" kpx2="1261"/><pair kern="-69" kpx2="1259"/><pair kern="-20" kpx2="1258"/><pair kern="-69" kpx2="1257"/><pair kern="-20" kpx2="1256"/><pair kern="-49" kpx2="1271"/><pair kern="-49" kpx2="1269"/><pair kern="-40" kpx2="1267"/><pair kern="-40" kpx2="1265"/><pair kern="-20" kpx2="1279"/><pair kern="-20" kpx2="1277"/><pair kern="-49" kpx2="1273"/><pair kern="-69" kpx2="1153"/><pair kern="-20" kpx2="1152"/><pair kern="-49" kpx2="1163"/><pair kern="-49" kpx2="1167"/><pair kern="-49" kpx2="1169"/><pair kern="-49" kpx2="1173"/><pair kern="-20" kpx2="1175"/><pair kern="-20" kpx2="1177"/><pair kern="-49" kpx2="1179"/><pair kern="-49" kpx2="1181"/><pair kern="-49" kpx2="1187"/><pair kern="-40" kpx2="1185"/><pair kern="-49" kpx2="1191"/><pair kern="-49" kpx2="1189"/><pair kern="-69" kpx2="1195"/><pair kern="-20" kpx2="1194"/><pair kern="-69" kpx2="1193"/><pair kern="-20" kpx2="1192"/><pair kern="-40" kpx2="1199"/><pair kern="-40" kpx2="1197"/><pair kern="20" kpx2="1196"/><pair kern="-20" kpx2="1203"/><pair kern="-40" kpx2="1201"/><pair kern="-49" kpx2="1207"/><pair kern="-40" kpx2="1205"/><pair kern="-49" kpx2="1211"/><pair kern="-49" kpx2="1209"/><pair kern="-49" kpx2="1214"/><pair kern="-69" kpx2="1215"/><pair kern="-49" kpx2="1212"/><pair kern="-69" kpx2="1213"/></kerning><kerning kpx1="1028"><pair kern="-20" kpx2="1152"/><pair kern="-20" kpx2="1228"/><pair kern="-20" kpx2="1095"/><pair kern="-20" kpx2="1028"/><pair kern="-20" kpx2="1292"/><pair kern="-20" kpx2="1054"/><pair kern="-20" kpx2="1282"/><pair kern="-20" kpx2="1280"/><pair kern="-20" kpx2="1287"/><pair kern="-20" kpx2="1285"/><pair kern="-20" kpx2="1254"/><pair kern="-20" kpx2="1194"/><pair kern="-20" kpx2="1057"/><pair kern="-20" kpx2="1192"/><pair kern="-20" kpx2="1258"/><pair kern="-20" kpx2="1120"/><pair kern="-20" kpx2="1060"/><pair kern="-20" kpx2="1256"/><pair kern="-20" kpx2="1150"/><pair kern="-20" kpx2="1148"/><pair kern="-20" kpx2="1269"/><pair kern="-20" kpx2="1146"/><pair kern="-20" kpx2="1207"/><pair kern="-20" kpx2="1144"/><pair kern="-20" kpx2="1209"/><pair kern="-20" kpx2="1214"/><pair kern="-20" kpx2="1138"/><pair kern="-20" kpx2="1212"/></kerning><kerning kpx1="1029"><pair kern="-20" kpx2="1287"/><pair kern="-20" kpx2="1285"/></kerning><kerning kpx1="75"><pair kern="-20" kpx2="7888"/><pair kern="-20" kpx2="7890"/><pair kern="-20" kpx2="71"/><pair kern="-20" kpx2="7892"/><pair kern="-20" kpx2="338"/><pair kern="-20" kpx2="7894"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-20" kpx2="7896"/><pair kern="-20" kpx2="199"/><pair kern="-20" kpx2="7898"/><pair kern="-20" kpx2="79"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-20" kpx2="262"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="81"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="266"/><pair kern="-20" kpx2="334"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-20" kpx2="264"/><pair kern="-20" kpx2="332"/><pair kern="-20" kpx2="7884"/><pair kern="-20" kpx2="7886"/><pair kern="-20" kpx2="210"/><pair kern="-20" kpx2="268"/><pair kern="-20" kpx2="211"/><pair kern="-20" kpx2="510"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-20" kpx2="416"/></kerning><kerning kpx1="85"><pair kern="-9" kpx2="65"/><pair kern="-9" kpx2="197"/><pair kern="-9" kpx2="196"/><pair kern="-9" kpx2="193"/><pair kern="-9" kpx2="192"/><pair kern="-9" kpx2="195"/><pair kern="-9" kpx2="194"/><pair kern="-9" kpx2="258"/><pair kern="-9" kpx2="256"/><pair kern="-9" kpx2="260"/><pair kern="-20" kpx2="8218"/><pair kern="-20" kpx2="8222"/><pair kern="-9" kpx2="7680"/><pair kern="-9" kpx2="7862"/><pair kern="-9" kpx2="7860"/><pair kern="-9" kpx2="7858"/><pair kern="-9" kpx2="506"/><pair kern="-9" kpx2="7856"/><pair kern="-20" kpx2="46"/><pair kern="-20" kpx2="44"/><pair kern="-9" kpx2="7846"/><pair kern="-9" kpx2="7844"/><pair kern="-9" kpx2="7842"/><pair kern="-9" kpx2="7840"/><pair kern="-9" kpx2="7854"/><pair kern="-9" kpx2="7852"/><pair kern="-9" kpx2="7850"/><pair kern="-9" kpx2="7848"/></kerning><kerning kpx1="84"><pair kern="-60" kpx2="46"/><pair kern="-60" kpx2="44"/><pair kern="-40" kpx2="45"/><pair kern="20" kpx2="63"/><pair kern="-60" kpx2="537"/><pair kern="20" kpx2="538"/><pair kern="-20" kpx2="71"/><pair kern="-69" kpx2="65"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="79"/><pair kern="-40" kpx2="8211"/><pair kern="20" kpx2="84"/><pair kern="-20" kpx2="81"/><pair kern="-40" kpx2="8213"/><pair kern="-40" kpx2="8212"/><pair kern="-60" kpx2="8218"/><pair kern="-60" kpx2="8222"/><pair kern="-69" kpx2="103"/><pair kern="-69" kpx2="100"/><pair kern="-69" kpx2="101"/><pair kern="-69" kpx2="99"/><pair kern="-80" kpx2="97"/><pair kern="-49" kpx2="110"/><pair kern="-69" kpx2="111"/><pair kern="-49" kpx2="109"/><pair kern="-20" kpx2="119"/><pair kern="-20" kpx2="118"/><pair kern="-49" kpx2="117"/><pair kern="-60" kpx2="115"/><pair kern="-49" kpx2="114"/><pair kern="-69" kpx2="113"/><pair kern="-49" kpx2="112"/><pair kern="-40" kpx2="122"/><pair kern="-20" kpx2="121"/><pair kern="-20" kpx2="120"/><pair kern="-69" kpx2="197"/><pair kern="-69" kpx2="196"/><pair kern="-20" kpx2="199"/><pair kern="-69" kpx2="193"/><pair kern="-69" kpx2="192"/><pair kern="-69" kpx2="195"/><pair kern="-69" kpx2="194"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-20" kpx2="210"/><pair kern="-20" kpx2="211"/><pair kern="-69" kpx2="235"/><pair kern="-69" kpx2="234"/><pair kern="-69" kpx2="233"/><pair kern="-69" kpx2="232"/><pair kern="-69" kpx2="231"/><pair kern="-80" kpx2="230"/><pair kern="-80" kpx2="229"/><pair kern="-80" kpx2="228"/><pair kern="-80" kpx2="227"/><pair kern="-80" kpx2="226"/><pair kern="-80" kpx2="225"/><pair kern="-69" kpx2="224"/><pair kern="-49" kpx2="252"/><pair kern="-20" kpx2="253"/><pair kern="-49" kpx2="250"/><pair kern="-49" kpx2="251"/><pair kern="-69" kpx2="248"/><pair kern="-49" kpx2="249"/><pair kern="-69" kpx2="246"/><pair kern="-69" kpx2="244"/><pair kern="-69" kpx2="245"/><pair kern="-69" kpx2="242"/><pair kern="-69" kpx2="243"/><pair kern="-69" kpx2="275"/><pair kern="-69" kpx2="7889"/><pair kern="-20" kpx2="7888"/><pair kern="-69" kpx2="273"/><pair kern="-20" kpx2="7890"/><pair kern="-69" kpx2="279"/><pair kern="-69" kpx2="7893"/><pair kern="-20" kpx2="7892"/><pair kern="-69" kpx2="277"/><pair kern="-69" kpx2="7895"/><pair kern="-20" kpx2="7894"/><pair kern="-69" kpx2="283"/><pair kern="-69" kpx2="7897"/><pair kern="-20" kpx2="7896"/><pair kern="-69" kpx2="281"/><pair kern="-69" kpx2="7899"/><pair kern="-20" kpx2="7898"/><pair kern="-69" kpx2="287"/><pair kern="-69" kpx2="7901"/><pair kern="-20" kpx2="286"/><pair kern="-20" kpx2="7900"/><pair kern="-69" kpx2="285"/><pair kern="-69" kpx2="7903"/><pair kern="-20" kpx2="284"/><pair kern="-20" kpx2="7902"/><pair kern="-69" kpx2="258"/><pair kern="-80" kpx2="259"/><pair kern="-69" kpx2="256"/><pair kern="-80" kpx2="257"/><pair kern="-69" kpx2="7875"/><pair kern="-20" kpx2="262"/><pair kern="-69" kpx2="263"/><pair kern="-69" kpx2="7877"/><pair kern="-69" kpx2="260"/><pair kern="-80" kpx2="261"/><pair kern="-69" kpx2="7879"/><pair kern="-20" kpx2="266"/><pair kern="-69" kpx2="267"/><pair kern="-20" kpx2="264"/><pair kern="-69" kpx2="265"/><pair kern="-20" kpx2="7884"/><pair kern="-69" kpx2="271"/><pair kern="-69" kpx2="7885"/><pair kern="-20" kpx2="268"/><pair kern="-20" kpx2="7886"/><pair kern="-69" kpx2="269"/><pair kern="-69" kpx2="7887"/><pair kern="-49" kpx2="7921"/><pair kern="-20" kpx2="7925"/><pair kern="-49" kpx2="312"/><pair kern="-20" kpx2="288"/><pair kern="-20" kpx2="7906"/><pair kern="-69" kpx2="7907"/><pair kern="-69" kpx2="289"/><pair kern="-20" kpx2="290"/><pair kern="-20" kpx2="7904"/><pair kern="-69" kpx2="291"/><pair kern="-69" kpx2="7905"/><pair kern="-49" kpx2="7911"/><pair kern="-49" kpx2="7909"/><pair kern="-49" kpx2="7915"/><pair kern="-49" kpx2="7913"/><pair kern="-49" kpx2="7919"/><pair kern="-49" kpx2="7917"/><pair kern="-49" kpx2="343"/><pair kern="-49" kpx2="341"/><pair kern="-69" kpx2="339"/><pair kern="-20" kpx2="338"/><pair kern="-69" kpx2="337"/><pair kern="-20" kpx2="336"/><pair kern="-60" kpx2="351"/><pair kern="-60" kpx2="347"/><pair kern="-49" kpx2="326"/><pair kern="-49" kpx2="324"/><pair kern="-20" kpx2="7809"/><pair kern="-20" kpx2="7811"/><pair kern="-20" kpx2="334"/><pair kern="-69" kpx2="335"/><pair kern="-20" kpx2="332"/><pair kern="-69" kpx2="333"/><pair kern="-49" kpx2="331"/><pair kern="-20" kpx2="373"/><pair kern="-80" kpx2="7863"/><pair kern="-69" kpx2="7862"/><pair kern="-80" kpx2="7861"/><pair kern="-69" kpx2="7860"/><pair kern="-49" kpx2="369"/><pair kern="-80" kpx2="7859"/><pair kern="-69" kpx2="7858"/><pair kern="-49" kpx2="371"/><pair kern="-80" kpx2="7857"/><pair kern="-69" kpx2="7856"/><pair kern="-69" kpx2="7871"/><pair kern="-40" kpx2="380"/><pair kern="-69" kpx2="7869"/><pair kern="-40" kpx2="382"/><pair kern="-69" kpx2="7867"/><pair kern="-69" kpx2="7865"/><pair kern="-40" kpx2="378"/><pair kern="20" kpx2="356"/><pair kern="-69" kpx2="7846"/><pair kern="-69" kpx2="7844"/><pair kern="-80" kpx2="7845"/><pair kern="-69" kpx2="7842"/><pair kern="-80" kpx2="7843"/><pair kern="20" kpx2="354"/><pair kern="-69" kpx2="7840"/><pair kern="-80" kpx2="7841"/><pair kern="-69" kpx2="7854"/><pair kern="-49" kpx2="365"/><pair kern="-80" kpx2="7855"/><pair kern="-69" kpx2="7852"/><pair kern="-49" kpx2="367"/><pair kern="-80" kpx2="7853"/><pair kern="-69" kpx2="7850"/><pair kern="-49" kpx2="361"/><pair kern="-80" kpx2="7851"/><pair kern="-69" kpx2="7848"/><pair kern="-49" kpx2="363"/><pair kern="-80" kpx2="7849"/><pair kern="-49" kpx2="432"/><pair kern="-69" kpx2="417"/><pair kern="-20" kpx2="416"/><pair kern="-80" kpx2="7681"/><pair kern="-69" kpx2="7680"/><pair kern="-80" kpx2="509"/><pair kern="-49" kpx2="7743"/><pair kern="-20" kpx2="510"/><pair kern="-69" kpx2="511"/><pair kern="-69" kpx2="506"/><pair kern="-80" kpx2="507"/></kerning><kerning kpx1="87"><pair kern="-20" kpx2="7889"/><pair kern="-20" kpx2="275"/><pair kern="-9" kpx2="7888"/><pair kern="-20" kpx2="273"/><pair kern="-9" kpx2="7890"/><pair kern="-20" kpx2="7893"/><pair kern="-20" kpx2="279"/><pair kern="-9" kpx2="7892"/><pair kern="-20" kpx2="7895"/><pair kern="-20" kpx2="277"/><pair kern="-9" kpx2="7894"/><pair kern="-20" kpx2="7897"/><pair kern="-20" kpx2="283"/><pair kern="-9" kpx2="7896"/><pair kern="-20" kpx2="7899"/><pair kern="-20" kpx2="281"/><pair kern="-9" kpx2="7898"/><pair kern="-20" kpx2="7901"/><pair kern="-9" kpx2="287"/><pair kern="-9" kpx2="7900"/><pair kern="-9" kpx2="286"/><pair kern="-20" kpx2="7903"/><pair kern="-9" kpx2="285"/><pair kern="-9" kpx2="7902"/><pair kern="-9" kpx2="284"/><pair kern="-40" kpx2="258"/><pair kern="-20" kpx2="259"/><pair kern="-40" kpx2="256"/><pair kern="-20" kpx2="7875"/><pair kern="-20" kpx2="257"/><pair kern="-9" kpx2="262"/><pair kern="-20" kpx2="7877"/><pair kern="-20" kpx2="263"/><pair kern="-40" kpx2="260"/><pair kern="-20" kpx2="7879"/><pair kern="-20" kpx2="261"/><pair kern="-9" kpx2="266"/><pair kern="-20" kpx2="267"/><pair kern="-9" kpx2="264"/><pair kern="-20" kpx2="265"/><pair kern="-9" kpx2="7884"/><pair kern="-20" kpx2="7885"/><pair kern="-20" kpx2="271"/><pair kern="-9" kpx2="7886"/><pair kern="-9" kpx2="268"/><pair kern="-20" kpx2="7887"/><pair kern="-20" kpx2="269"/><pair kern="-9" kpx2="7921"/><pair kern="-9" kpx2="312"/><pair kern="-49" kpx2="46"/><pair kern="-49" kpx2="44"/><pair kern="-9" kpx2="7906"/><pair kern="-9" kpx2="288"/><pair kern="-20" kpx2="7907"/><pair kern="-9" kpx2="289"/><pair kern="-9" kpx2="7904"/><pair kern="-9" kpx2="290"/><pair kern="-20" kpx2="7905"/><pair kern="-9" kpx2="291"/><pair kern="-9" kpx2="7911"/><pair kern="-9" kpx2="7909"/><pair kern="-9" kpx2="7915"/><pair kern="-9" kpx2="7913"/><pair kern="-9" kpx2="537"/><pair kern="20" kpx2="63"/><pair kern="-9" kpx2="7919"/><pair kern="-9" kpx2="7917"/><pair kern="-9" kpx2="343"/><pair kern="-9" kpx2="341"/><pair kern="-9" kpx2="71"/><pair kern="-20" kpx2="339"/><pair kern="-40" kpx2="65"/><pair kern="-9" kpx2="338"/><pair kern="-20" kpx2="337"/><pair kern="-9" kpx2="67"/><pair kern="-9" kpx2="336"/><pair kern="-9" kpx2="351"/><pair kern="-9" kpx2="79"/><pair kern="-9" kpx2="347"/><pair kern="-9" kpx2="326"/><pair kern="-9" kpx2="324"/><pair kern="-9" kpx2="81"/><pair kern="-9" kpx2="334"/><pair kern="-49" kpx2="8218"/><pair kern="-20" kpx2="335"/><pair kern="-9" kpx2="332"/><pair kern="-20" kpx2="333"/><pair kern="-49" kpx2="8222"/><pair kern="-9" kpx2="331"/><pair kern="-20" kpx2="7863"/><pair kern="-40" kpx2="7862"/><pair kern="-9" kpx2="103"/><pair kern="-20" kpx2="7861"/><pair kern="-20" kpx2="100"/><pair kern="-40" kpx2="7860"/><pair kern="-20" kpx2="101"/><pair kern="-20" kpx2="7859"/><pair kern="-9" kpx2="369"/><pair kern="-40" kpx2="7858"/><pair kern="-20" kpx2="99"/><pair kern="-20" kpx2="7857"/><pair kern="-9" kpx2="371"/><pair kern="-40" kpx2="7856"/><pair kern="-20" kpx2="97"/><pair kern="-20" kpx2="7871"/><pair kern="-9" kpx2="110"/><pair kern="-20" kpx2="111"/><pair kern="-20" kpx2="7869"/><pair kern="-9" kpx2="109"/><pair kern="-20" kpx2="7867"/><pair kern="-20" kpx2="7865"/><pair kern="-40" kpx2="7846"/><pair kern="-40" kpx2="7844"/><pair kern="-9" kpx2="117"/><pair kern="-20" kpx2="7845"/><pair kern="-40" kpx2="7842"/><pair kern="-9" kpx2="115"/><pair kern="-20" kpx2="7843"/><pair kern="-9" kpx2="114"/><pair kern="-40" kpx2="7840"/><pair kern="-20" kpx2="113"/><pair kern="-20" kpx2="7841"/><pair kern="-9" kpx2="112"/><pair kern="-40" kpx2="7854"/><pair kern="-20" kpx2="7855"/><pair kern="-9" kpx2="365"/><pair kern="-40" kpx2="7852"/><pair kern="-20" kpx2="7853"/><pair kern="-9" kpx2="367"/><pair kern="-40" kpx2="7850"/><pair kern="-20" kpx2="7851"/><pair kern="-9" kpx2="361"/><pair kern="-40" kpx2="7848"/><pair kern="-20" kpx2="7849"/><pair kern="-9" kpx2="363"/><pair kern="-9" kpx2="432"/><pair kern="-20" kpx2="417"/><pair kern="-9" kpx2="416"/><pair kern="-40" kpx2="197"/><pair kern="-40" kpx2="196"/><pair kern="-9" kpx2="199"/><pair kern="-40" kpx2="193"/><pair kern="-40" kpx2="192"/><pair kern="-40" kpx2="195"/><pair kern="-40" kpx2="194"/><pair kern="-9" kpx2="216"/><pair kern="-9" kpx2="212"/><pair kern="-9" kpx2="213"/><pair kern="-9" kpx2="214"/><pair kern="-20" kpx2="7681"/><pair kern="-40" kpx2="7680"/><pair kern="-9" kpx2="210"/><pair kern="-9" kpx2="211"/><pair kern="-9" kpx2="7743"/><pair kern="-20" kpx2="509"/><pair kern="-9" kpx2="510"/><pair kern="-20" kpx2="511"/><pair kern="-20" kpx2="235"/><pair kern="-20" kpx2="234"/><pair kern="-40" kpx2="506"/><pair kern="-20" kpx2="233"/><pair kern="-20" kpx2="507"/><pair kern="-20" kpx2="232"/><pair kern="-20" kpx2="231"/><pair kern="-20" kpx2="230"/><pair kern="-20" kpx2="229"/><pair kern="-20" kpx2="228"/><pair kern="-20" kpx2="227"/><pair kern="-20" kpx2="226"/><pair kern="-20" kpx2="225"/><pair kern="-20" kpx2="224"/><pair kern="-9" kpx2="252"/><pair kern="-9" kpx2="250"/><pair kern="-9" kpx2="251"/><pair kern="-20" kpx2="248"/><pair kern="-9" kpx2="249"/><pair kern="-20" kpx2="246"/><pair kern="-20" kpx2="244"/><pair kern="-20" kpx2="245"/><pair kern="-20" kpx2="242"/><pair kern="-20" kpx2="243"/></kerning><kerning kpx1="86"><pair kern="-20" kpx2="7889"/><pair kern="-20" kpx2="275"/><pair kern="-9" kpx2="7888"/><pair kern="-20" kpx2="273"/><pair kern="-9" kpx2="7890"/><pair kern="-20" kpx2="7893"/><pair kern="-20" kpx2="279"/><pair kern="-9" kpx2="7892"/><pair kern="-20" kpx2="7895"/><pair kern="-20" kpx2="277"/><pair kern="-9" kpx2="7894"/><pair kern="-20" kpx2="7897"/><pair kern="-20" kpx2="283"/><pair kern="-9" kpx2="7896"/><pair kern="-20" kpx2="7899"/><pair kern="-20" kpx2="281"/><pair kern="-9" kpx2="7898"/><pair kern="-20" kpx2="7901"/><pair kern="-9" kpx2="287"/><pair kern="-9" kpx2="7900"/><pair kern="-9" kpx2="286"/><pair kern="-20" kpx2="7903"/><pair kern="-9" kpx2="285"/><pair kern="-9" kpx2="7902"/><pair kern="-9" kpx2="284"/><pair kern="-40" kpx2="258"/><pair kern="-20" kpx2="259"/><pair kern="-40" kpx2="256"/><pair kern="-20" kpx2="7875"/><pair kern="-20" kpx2="257"/><pair kern="-9" kpx2="262"/><pair kern="-20" kpx2="7877"/><pair kern="-20" kpx2="263"/><pair kern="-40" kpx2="260"/><pair kern="-20" kpx2="7879"/><pair kern="-20" kpx2="261"/><pair kern="-9" kpx2="266"/><pair kern="-20" kpx2="267"/><pair kern="-9" kpx2="264"/><pair kern="-20" kpx2="265"/><pair kern="-9" kpx2="7884"/><pair kern="-20" kpx2="7885"/><pair kern="-20" kpx2="271"/><pair kern="-9" kpx2="7886"/><pair kern="-9" kpx2="268"/><pair kern="-20" kpx2="7887"/><pair kern="-20" kpx2="269"/><pair kern="-9" kpx2="7921"/><pair kern="-9" kpx2="312"/><pair kern="-49" kpx2="46"/><pair kern="-49" kpx2="44"/><pair kern="-9" kpx2="7906"/><pair kern="-9" kpx2="288"/><pair kern="-20" kpx2="7907"/><pair kern="-9" kpx2="289"/><pair kern="-9" kpx2="7904"/><pair kern="-9" kpx2="290"/><pair kern="-20" kpx2="7905"/><pair kern="-9" kpx2="291"/><pair kern="-9" kpx2="7911"/><pair kern="-9" kpx2="7909"/><pair kern="-9" kpx2="7915"/><pair kern="-9" kpx2="7913"/><pair kern="-9" kpx2="537"/><pair kern="20" kpx2="63"/><pair kern="-9" kpx2="7919"/><pair kern="-9" kpx2="7917"/><pair kern="-9" kpx2="343"/><pair kern="-9" kpx2="341"/><pair kern="-9" kpx2="71"/><pair kern="-20" kpx2="339"/><pair kern="-40" kpx2="65"/><pair kern="-9" kpx2="338"/><pair kern="-20" kpx2="337"/><pair kern="-9" kpx2="67"/><pair kern="-9" kpx2="336"/><pair kern="-9" kpx2="351"/><pair kern="-9" kpx2="79"/><pair kern="-9" kpx2="347"/><pair kern="-9" kpx2="326"/><pair kern="-9" kpx2="324"/><pair kern="-9" kpx2="81"/><pair kern="-9" kpx2="334"/><pair kern="-49" kpx2="8218"/><pair kern="-20" kpx2="335"/><pair kern="-9" kpx2="332"/><pair kern="-20" kpx2="333"/><pair kern="-49" kpx2="8222"/><pair kern="-9" kpx2="331"/><pair kern="-20" kpx2="7863"/><pair kern="-40" kpx2="7862"/><pair kern="-9" kpx2="103"/><pair kern="-20" kpx2="7861"/><pair kern="-20" kpx2="100"/><pair kern="-40" kpx2="7860"/><pair kern="-20" kpx2="101"/><pair kern="-20" kpx2="7859"/><pair kern="-9" kpx2="369"/><pair kern="-40" kpx2="7858"/><pair kern="-20" kpx2="99"/><pair kern="-20" kpx2="7857"/><pair kern="-9" kpx2="371"/><pair kern="-40" kpx2="7856"/><pair kern="-20" kpx2="97"/><pair kern="-20" kpx2="7871"/><pair kern="-9" kpx2="110"/><pair kern="-20" kpx2="111"/><pair kern="-20" kpx2="7869"/><pair kern="-9" kpx2="109"/><pair kern="-20" kpx2="7867"/><pair kern="-20" kpx2="7865"/><pair kern="-40" kpx2="7846"/><pair kern="-40" kpx2="7844"/><pair kern="-9" kpx2="117"/><pair kern="-20" kpx2="7845"/><pair kern="-40" kpx2="7842"/><pair kern="-9" kpx2="115"/><pair kern="-20" kpx2="7843"/><pair kern="-9" kpx2="114"/><pair kern="-40" kpx2="7840"/><pair kern="-20" kpx2="113"/><pair kern="-20" kpx2="7841"/><pair kern="-9" kpx2="112"/><pair kern="-40" kpx2="7854"/><pair kern="-20" kpx2="7855"/><pair kern="-9" kpx2="365"/><pair kern="-40" kpx2="7852"/><pair kern="-20" kpx2="7853"/><pair kern="-9" kpx2="367"/><pair kern="-40" kpx2="7850"/><pair kern="-20" kpx2="7851"/><pair kern="-9" kpx2="361"/><pair kern="-40" kpx2="7848"/><pair kern="-20" kpx2="7849"/><pair kern="-9" kpx2="363"/><pair kern="-9" kpx2="432"/><pair kern="-20" kpx2="417"/><pair kern="-9" kpx2="416"/><pair kern="-40" kpx2="197"/><pair kern="-40" kpx2="196"/><pair kern="-9" kpx2="199"/><pair kern="-40" kpx2="193"/><pair kern="-40" kpx2="192"/><pair kern="-40" kpx2="195"/><pair kern="-40" kpx2="194"/><pair kern="-9" kpx2="216"/><pair kern="-9" kpx2="212"/><pair kern="-9" kpx2="213"/><pair kern="-9" kpx2="214"/><pair kern="-20" kpx2="7681"/><pair kern="-40" kpx2="7680"/><pair kern="-9" kpx2="210"/><pair kern="-9" kpx2="211"/><pair kern="-9" kpx2="7743"/><pair kern="-20" kpx2="509"/><pair kern="-9" kpx2="510"/><pair kern="-20" kpx2="511"/><pair kern="-20" kpx2="235"/><pair kern="-20" kpx2="234"/><pair kern="-40" kpx2="506"/><pair kern="-20" kpx2="233"/><pair kern="-20" kpx2="507"/><pair kern="-20" kpx2="232"/><pair kern="-20" kpx2="231"/><pair kern="-20" kpx2="230"/><pair kern="-20" kpx2="229"/><pair kern="-20" kpx2="228"/><pair kern="-20" kpx2="227"/><pair kern="-20" kpx2="226"/><pair kern="-20" kpx2="225"/><pair kern="-20" kpx2="224"/><pair kern="-9" kpx2="252"/><pair kern="-9" kpx2="250"/><pair kern="-9" kpx2="251"/><pair kern="-20" kpx2="248"/><pair kern="-9" kpx2="249"/><pair kern="-20" kpx2="246"/><pair kern="-20" kpx2="244"/><pair kern="-20" kpx2="245"/><pair kern="-20" kpx2="242"/><pair kern="-20" kpx2="243"/></kerning><kerning kpx1="1050"><pair kern="-20" kpx2="1152"/><pair kern="-20" kpx2="1228"/><pair kern="-9" kpx2="1296"/><pair kern="-20" kpx2="1095"/><pair kern="-20" kpx2="1028"/><pair kern="-20" kpx2="1227"/><pair kern="-20" kpx2="1292"/><pair kern="-20" kpx2="1054"/><pair kern="-20" kpx2="1282"/><pair kern="-20" kpx2="1280"/><pair kern="-20" kpx2="1287"/><pair kern="-20" kpx2="1285"/><pair kern="-20" kpx2="1254"/><pair kern="-20" kpx2="1194"/><pair kern="-20" kpx2="1057"/><pair kern="-20" kpx2="1192"/><pair kern="-20" kpx2="1258"/><pair kern="-20" kpx2="1063"/><pair kern="-20" kpx2="1120"/><pair kern="-20" kpx2="1060"/><pair kern="-20" kpx2="1256"/><pair kern="-20" kpx2="1150"/><pair kern="-20" kpx2="1268"/><pair kern="-20" kpx2="1269"/><pair kern="-20" kpx2="1148"/><pair kern="-20" kpx2="1206"/><pair kern="-20" kpx2="1146"/><pair kern="-20" kpx2="1207"/><pair kern="-20" kpx2="1144"/><pair kern="-20" kpx2="1208"/><pair kern="-20" kpx2="1209"/><pair kern="-49" kpx2="1214"/><pair kern="-20" kpx2="1138"/><pair kern="-49" kpx2="1212"/><pair kern="-20" kpx2="1136"/></kerning><kerning kpx1="81"><pair kern="-20" kpx2="258"/><pair kern="-20" kpx2="256"/><pair kern="-20" kpx2="260"/><pair kern="-9" kpx2="7922"/><pair kern="-9" kpx2="7926"/><pair kern="-9" kpx2="7924"/><pair kern="-9" kpx2="7928"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="44"/><pair kern="-29" kpx2="538"/><pair kern="-20" kpx2="65"/><pair kern="-20" kpx2="197"/><pair kern="-20" kpx2="196"/><pair kern="-20" kpx2="193"/><pair kern="-20" kpx2="192"/><pair kern="-9" kpx2="1029"/><pair kern="-20" kpx2="195"/><pair kern="-20" kpx2="194"/><pair kern="-9" kpx2="7812"/><pair kern="-9" kpx2="221"/><pair kern="-29" kpx2="84"/><pair kern="-9" kpx2="87"/><pair kern="-9" kpx2="86"/><pair kern="-9" kpx2="7808"/><pair kern="-9" kpx2="7810"/><pair kern="-40" kpx2="8218"/><pair kern="-9" kpx2="89"/><pair kern="-20" kpx2="88"/><pair kern="-40" kpx2="8222"/><pair kern="-20" kpx2="7680"/><pair kern="-9" kpx2="90"/><pair kern="-9" kpx2="372"/><pair kern="-20" kpx2="7862"/><pair kern="-9" kpx2="374"/><pair kern="-20" kpx2="7860"/><pair kern="-20" kpx2="7858"/><pair kern="-20" kpx2="506"/><pair kern="-20" kpx2="7856"/><pair kern="-9" kpx2="381"/><pair kern="-9" kpx2="377"/><pair kern="-9" kpx2="376"/><pair kern="-9" kpx2="379"/><pair kern="-29" kpx2="356"/><pair kern="-20" kpx2="7846"/><pair kern="-20" kpx2="7844"/><pair kern="-20" kpx2="7842"/><pair kern="-29" kpx2="354"/><pair kern="-20" kpx2="7840"/><pair kern="-20" kpx2="7854"/><pair kern="-20" kpx2="7852"/><pair kern="-20" kpx2="7850"/><pair kern="-20" kpx2="7848"/></kerning><kerning kpx1="80"><pair kern="-49" kpx2="65"/><pair kern="-49" kpx2="197"/><pair kern="-49" kpx2="196"/><pair kern="-49" kpx2="193"/><pair kern="-49" kpx2="192"/><pair kern="-49" kpx2="195"/><pair kern="-49" kpx2="194"/><pair kern="-49" kpx2="258"/><pair kern="-49" kpx2="256"/><pair kern="-49" kpx2="260"/><pair kern="-129" kpx2="8218"/><pair kern="-20" kpx2="88"/><pair kern="-129" kpx2="8222"/><pair kern="-49" kpx2="7680"/><pair kern="-9" kpx2="90"/><pair kern="-49" kpx2="7862"/><pair kern="-49" kpx2="7860"/><pair kern="-49" kpx2="7858"/><pair kern="-49" kpx2="506"/><pair kern="-49" kpx2="7856"/><pair kern="-9" kpx2="381"/><pair kern="-129" kpx2="46"/><pair kern="-9" kpx2="377"/><pair kern="-129" kpx2="44"/><pair kern="-9" kpx2="379"/><pair kern="-49" kpx2="7846"/><pair kern="-49" kpx2="7844"/><pair kern="-49" kpx2="7842"/><pair kern="-49" kpx2="7840"/><pair kern="-49" kpx2="7854"/><pair kern="-49" kpx2="7852"/><pair kern="-49" kpx2="7850"/><pair kern="-49" kpx2="7848"/></kerning><kerning kpx1="1054"><pair kern="-20" kpx2="1221"/><pair kern="-9" kpx2="1222"/><pair kern="-20" kpx2="1217"/><pair kern="-20" kpx2="1227"/><pair kern="-20" kpx2="1236"/><pair kern="-9" kpx2="1113"/><pair kern="-20" kpx2="1232"/><pair kern="-20" kpx2="1234"/><pair kern="-20" kpx2="1244"/><pair kern="-9" kpx2="1246"/><pair kern="-9" kpx2="1134"/><pair kern="-20" kpx2="1126"/><pair kern="-20" kpx2="1262"/><pair kern="-9" kpx2="1127"/><pair kern="-9" kpx2="1260"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="44"/><pair kern="-20" kpx2="1268"/><pair kern="-20" kpx2="1266"/><pair kern="-20" kpx2="1264"/><pair kern="-20" kpx2="1278"/><pair kern="-9" kpx2="1142"/><pair kern="-20" kpx2="1276"/><pair kern="-9" kpx2="1140"/><pair kern="-20" kpx2="1136"/><pair kern="-20" kpx2="1033"/><pair kern="-9" kpx2="1035"/><pair kern="-20" kpx2="1038"/><pair kern="-9" kpx2="1299"/><pair kern="-20" kpx2="1298"/><pair kern="-9" kpx2="1026"/><pair kern="-20" kpx2="1288"/><pair kern="-20" kpx2="1051"/><pair kern="-9" kpx2="1289"/><pair kern="-9" kpx2="1294"/><pair kern="-20" kpx2="1174"/><pair kern="-9" kpx2="1176"/><pair kern="-40" kpx2="8218"/><pair kern="-20" kpx2="1040"/><pair kern="-20" kpx2="1286"/><pair kern="-40" kpx2="8222"/><pair kern="-20" kpx2="1044"/><pair kern="-20" kpx2="1284"/><pair kern="-9" kpx2="1047"/><pair kern="-20" kpx2="1046"/><pair kern="-9" kpx2="1066"/><pair kern="-9" kpx2="1184"/><pair kern="-9" kpx2="1069"/><pair kern="-29" kpx2="1058"/><pair kern="-20" kpx2="1059"/><pair kern="-20" kpx2="1063"/><pair kern="-9" kpx2="1198"/><pair kern="-20" kpx2="1061"/><pair kern="-29" kpx2="1196"/><pair kern="-9" kpx2="1083"/><pair kern="-20" kpx2="1202"/><pair kern="-9" kpx2="1200"/><pair kern="-20" kpx2="1206"/><pair kern="-9" kpx2="1204"/><pair kern="-20" kpx2="1208"/><pair kern="-9" kpx2="1076"/></kerning><kerning kpx1="1041"><pair kern="-20" kpx2="34"/><pair kern="-20" kpx2="39"/><pair kern="-9" kpx2="1126"/><pair kern="-20" kpx2="1063"/><pair kern="-20" kpx2="1227"/><pair kern="-9" kpx2="1236"/><pair kern="-20" kpx2="1268"/><pair kern="-9" kpx2="1232"/><pair kern="-20" kpx2="1206"/><pair kern="-9" kpx2="1234"/><pair kern="-9" kpx2="1040"/><pair kern="-20" kpx2="8217"/><pair kern="-20" kpx2="1208"/><pair kern="-20" kpx2="1214"/><pair kern="-20" kpx2="8221"/><pair kern="-20" kpx2="1212"/><pair kern="-20" kpx2="1136"/></kerning><kerning kpx1="1040"><pair kern="-49" kpx2="1035"/><pair kern="-20" kpx2="1098"/><pair kern="-20" kpx2="1228"/><pair kern="-49" kpx2="1026"/><pair kern="-20" kpx2="1095"/><pair kern="-20" kpx2="1164"/><pair kern="-49" kpx2="1227"/><pair kern="-20" kpx2="1090"/><pair kern="-20" kpx2="1170"/><pair kern="-49" kpx2="1294"/><pair kern="-20" kpx2="1295"/><pair kern="-69" kpx2="8217"/><pair kern="-69" kpx2="1286"/><pair kern="-20" kpx2="1240"/><pair kern="-20" kpx2="1287"/><pair kern="-69" kpx2="1284"/><pair kern="-20" kpx2="1242"/><pair kern="-69" kpx2="8221"/><pair kern="-20" kpx2="1182"/><pair kern="-20" kpx2="1285"/><pair kern="-49" kpx2="1066"/><pair kern="-69" kpx2="34"/><pair kern="-20" kpx2="1185"/><pair kern="-49" kpx2="1184"/><pair kern="-69" kpx2="39"/><pair kern="-69" kpx2="1058"/><pair kern="-20" kpx2="1122"/><pair kern="-60" kpx2="1198"/><pair kern="-49" kpx2="1063"/><pair kern="-20" kpx2="1060"/><pair kern="-20" kpx2="1197"/><pair kern="-69" kpx2="1196"/><pair kern="-49" kpx2="1268"/><pair kern="-60" kpx2="1200"/><pair kern="-20" kpx2="1269"/><pair kern="-49" kpx2="1206"/><pair kern="-20" kpx2="1207"/><pair kern="-49" kpx2="1204"/><pair kern="-20" kpx2="1205"/><pair kern="-40" kpx2="1142"/><pair kern="-49" kpx2="1208"/><pair kern="-20" kpx2="1209"/><pair kern="-40" kpx2="1140"/><pair kern="-20" kpx2="1274"/><pair kern="-49" kpx2="1214"/><pair kern="-49" kpx2="1212"/><pair kern="-49" kpx2="1136"/></kerning><kerning kpx1="1043"><pair kern="-49" kpx2="1100"/><pair kern="-20" kpx2="1101"/><pair kern="-49" kpx2="1102"/><pair kern="-29" kpx2="1103"/><pair kern="-49" kpx2="1096"/><pair kern="-49" kpx2="1097"/><pair kern="-40" kpx2="1098"/><pair kern="-49" kpx2="1099"/><pair kern="-69" kpx2="1092"/><pair kern="-20" kpx2="1093"/><pair kern="-49" kpx2="1094"/><pair kern="-49" kpx2="1095"/><pair kern="-49" kpx2="1088"/><pair kern="-69" kpx2="1089"/><pair kern="-40" kpx2="1090"/><pair kern="-40" kpx2="1091"/><pair kern="-49" kpx2="1117"/><pair kern="-49" kpx2="1116"/><pair kern="-49" kpx2="1119"/><pair kern="-40" kpx2="1118"/><pair kern="-60" kpx2="1113"/><pair kern="-49" kpx2="1114"/><pair kern="-60" kpx2="1109"/><pair kern="-69" kpx2="1108"/><pair kern="-69" kpx2="1105"/><pair kern="-69" kpx2="1104"/><pair kern="-49" kpx2="1107"/><pair kern="-49" kpx2="1133"/><pair kern="-49" kpx2="1131"/><pair kern="-49" kpx2="1129"/><pair kern="-69" kpx2="1126"/><pair kern="-60" kpx2="1127"/><pair kern="-49" kpx2="1125"/><pair kern="-60" kpx2="46"/><pair kern="-60" kpx2="44"/><pair kern="-20" kpx2="1120"/><pair kern="-40" kpx2="45"/><pair kern="-20" kpx2="1121"/><pair kern="-20" kpx2="1151"/><pair kern="-20" kpx2="1150"/><pair kern="-69" kpx2="1149"/><pair kern="-20" kpx2="1148"/><pair kern="-69" kpx2="1147"/><pair kern="-20" kpx2="1146"/><pair kern="-69" kpx2="1145"/><pair kern="-20" kpx2="1144"/><pair kern="-20" kpx2="1143"/><pair kern="-20" kpx2="1141"/><pair kern="-69" kpx2="1139"/><pair kern="-20" kpx2="1138"/><pair kern="-49" kpx2="1137"/><pair kern="-49" kpx2="1033"/><pair kern="-60" kpx2="1299"/><pair kern="-49" kpx2="1298"/><pair kern="-69" kpx2="1297"/><pair kern="-20" kpx2="1028"/><pair kern="-40" kpx2="8211"/><pair kern="-49" kpx2="1291"/><pair kern="-49" kpx2="1288"/><pair kern="-49" kpx2="1051"/><pair kern="-60" kpx2="1289"/><pair kern="-40" kpx2="1295"/><pair kern="-20" kpx2="1292"/><pair kern="-40" kpx2="8213"/><pair kern="-69" kpx2="1293"/><pair kern="-20" kpx2="1054"/><pair kern="-40" kpx2="8212"/><pair kern="-69" kpx2="1282"/><pair kern="-69" kpx2="1283"/><pair kern="-69" kpx2="1040"/><pair kern="-60" kpx2="8218"/><pair kern="-69" kpx2="1280"/><pair kern="-69" kpx2="1281"/><pair kern="-49" kpx2="1287"/><pair kern="-49" kpx2="1044"/><pair kern="-60" kpx2="8222"/><pair kern="-49" kpx2="1285"/><pair kern="20" kpx2="1058"/><pair kern="-20" kpx2="1057"/><pair kern="-40" kpx2="1060"/><pair kern="-60" kpx2="1083"/><pair kern="-49" kpx2="1082"/><pair kern="-49" kpx2="1081"/><pair kern="-49" kpx2="1080"/><pair kern="-49" kpx2="1087"/><pair kern="-69" kpx2="1086"/><pair kern="-49" kpx2="1085"/><pair kern="-49" kpx2="1084"/><pair kern="-49" kpx2="1075"/><pair kern="-49" kpx2="1074"/><pair kern="-20" kpx2="1079"/><pair kern="-20" kpx2="1078"/><pair kern="-69" kpx2="1077"/><pair kern="-60" kpx2="1076"/><pair kern="-49" kpx2="1221"/><pair kern="-49" kpx2="1220"/><pair kern="-60" kpx2="1222"/><pair kern="-20" kpx2="1218"/><pair kern="-49" kpx2="1228"/><pair kern="-49" kpx2="1230"/><pair kern="-49" kpx2="1224"/><pair kern="-49" kpx2="1226"/><pair kern="-69" kpx2="1236"/><pair kern="-69" kpx2="1239"/><pair kern="-69" kpx2="1232"/><pair kern="-69" kpx2="1234"/><pair kern="-20" kpx2="1245"/><pair kern="-20" kpx2="1247"/><pair kern="-69" kpx2="1255"/><pair kern="-20" kpx2="1254"/><pair kern="-49" kpx2="1253"/><pair kern="-49" kpx2="1251"/><pair kern="-29" kpx2="1249"/><pair kern="-40" kpx2="1263"/><pair kern="-20" kpx2="1261"/><pair kern="-69" kpx2="1259"/><pair kern="-20" kpx2="1258"/><pair kern="-69" kpx2="1257"/><pair kern="-20" kpx2="1256"/><pair kern="-49" kpx2="1271"/><pair kern="-49" kpx2="1269"/><pair kern="-40" kpx2="1267"/><pair kern="-40" kpx2="1265"/><pair kern="-20" kpx2="1279"/><pair kern="-20" kpx2="1277"/><pair kern="-49" kpx2="1273"/><pair kern="-69" kpx2="1153"/><pair kern="-20" kpx2="1152"/><pair kern="-49" kpx2="1163"/><pair kern="-49" kpx2="1167"/><pair kern="-49" kpx2="1169"/><pair kern="-49" kpx2="1173"/><pair kern="-20" kpx2="1175"/><pair kern="-20" kpx2="1177"/><pair kern="-49" kpx2="1179"/><pair kern="-49" kpx2="1181"/><pair kern="-49" kpx2="1187"/><pair kern="-40" kpx2="1185"/><pair kern="-49" kpx2="1191"/><pair kern="-49" kpx2="1189"/><pair kern="-69" kpx2="1195"/><pair kern="-20" kpx2="1194"/><pair kern="-69" kpx2="1193"/><pair kern="-20" kpx2="1192"/><pair kern="-40" kpx2="1199"/><pair kern="-40" kpx2="1197"/><pair kern="20" kpx2="1196"/><pair kern="-20" kpx2="1203"/><pair kern="-40" kpx2="1201"/><pair kern="-49" kpx2="1207"/><pair kern="-40" kpx2="1205"/><pair kern="-49" kpx2="1211"/><pair kern="-49" kpx2="1209"/><pair kern="-49" kpx2="1214"/><pair kern="-69" kpx2="1215"/><pair kern="-49" kpx2="1212"/><pair kern="-69" kpx2="1213"/></kerning><kerning kpx1="1042"><pair kern="-9" kpx2="1200"/><pair kern="-9" kpx2="1142"/><pair kern="-40" kpx2="8218"/><pair kern="-9" kpx2="1140"/><pair kern="-20" kpx2="1286"/><pair kern="-40" kpx2="46"/><pair kern="-9" kpx2="1198"/><pair kern="-40" kpx2="8222"/><pair kern="-20" kpx2="1284"/><pair kern="-40" kpx2="44"/></kerning><kerning kpx1="89"><pair kern="-49" kpx2="7889"/><pair kern="-49" kpx2="275"/><pair kern="-20" kpx2="7888"/><pair kern="-49" kpx2="273"/><pair kern="-20" kpx2="7890"/><pair kern="-49" kpx2="7893"/><pair kern="-49" kpx2="279"/><pair kern="-20" kpx2="7892"/><pair kern="-49" kpx2="7895"/><pair kern="-49" kpx2="277"/><pair kern="-20" kpx2="7894"/><pair kern="-49" kpx2="7897"/><pair kern="-49" kpx2="283"/><pair kern="-20" kpx2="7896"/><pair kern="-49" kpx2="7899"/><pair kern="-49" kpx2="281"/><pair kern="-20" kpx2="7898"/><pair kern="-49" kpx2="7901"/><pair kern="-20" kpx2="287"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-49" kpx2="7903"/><pair kern="-20" kpx2="285"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-60" kpx2="258"/><pair kern="-49" kpx2="259"/><pair kern="-60" kpx2="256"/><pair kern="-49" kpx2="7875"/><pair kern="-49" kpx2="257"/><pair kern="-20" kpx2="262"/><pair kern="-49" kpx2="7877"/><pair kern="-49" kpx2="263"/><pair kern="-60" kpx2="260"/><pair kern="-49" kpx2="7879"/><pair kern="-49" kpx2="261"/><pair kern="-20" kpx2="266"/><pair kern="-49" kpx2="267"/><pair kern="-20" kpx2="264"/><pair kern="-49" kpx2="265"/><pair kern="-20" kpx2="7884"/><pair kern="-49" kpx2="7885"/><pair kern="-49" kpx2="271"/><pair kern="-20" kpx2="7886"/><pair kern="-20" kpx2="268"/><pair kern="-49" kpx2="7887"/><pair kern="-49" kpx2="269"/><pair kern="-29" kpx2="7921"/><pair kern="-29" kpx2="312"/><pair kern="-60" kpx2="46"/><pair kern="-60" kpx2="44"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-49" kpx2="7907"/><pair kern="-20" kpx2="289"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-49" kpx2="7905"/><pair kern="-20" kpx2="291"/><pair kern="-29" kpx2="7911"/><pair kern="-29" kpx2="7909"/><pair kern="-29" kpx2="7915"/><pair kern="-29" kpx2="7913"/><pair kern="-40" kpx2="537"/><pair kern="20" kpx2="63"/><pair kern="-29" kpx2="7919"/><pair kern="-29" kpx2="7917"/><pair kern="-29" kpx2="343"/><pair kern="-29" kpx2="341"/><pair kern="-20" kpx2="71"/><pair kern="-49" kpx2="339"/><pair kern="-20" kpx2="338"/><pair kern="-60" kpx2="65"/><pair kern="-49" kpx2="337"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-40" kpx2="351"/><pair kern="-20" kpx2="79"/><pair kern="-40" kpx2="347"/><pair kern="-29" kpx2="326"/><pair kern="-29" kpx2="324"/><pair kern="-20" kpx2="81"/><pair kern="-20" kpx2="334"/><pair kern="-60" kpx2="8218"/><pair kern="-49" kpx2="335"/><pair kern="-20" kpx2="332"/><pair kern="-49" kpx2="333"/><pair kern="-60" kpx2="8222"/><pair kern="-29" kpx2="331"/><pair kern="-49" kpx2="7863"/><pair kern="-60" kpx2="7862"/><pair kern="-20" kpx2="103"/><pair kern="-49" kpx2="7861"/><pair kern="-49" kpx2="100"/><pair kern="-60" kpx2="7860"/><pair kern="-49" kpx2="101"/><pair kern="-49" kpx2="7859"/><pair kern="-29" kpx2="369"/><pair kern="-60" kpx2="7858"/><pair kern="-49" kpx2="99"/><pair kern="-49" kpx2="7857"/><pair kern="-29" kpx2="371"/><pair kern="-60" kpx2="7856"/><pair kern="-49" kpx2="97"/><pair kern="-49" kpx2="7871"/><pair kern="-29" kpx2="110"/><pair kern="-20" kpx2="380"/><pair kern="-49" kpx2="111"/><pair kern="-49" kpx2="7869"/><pair kern="-20" kpx2="382"/><pair kern="-29" kpx2="109"/><pair kern="-49" kpx2="7867"/><pair kern="-49" kpx2="7865"/><pair kern="-20" kpx2="378"/><pair kern="-60" kpx2="7846"/><pair kern="-60" kpx2="7844"/><pair kern="-29" kpx2="117"/><pair kern="-49" kpx2="7845"/><pair kern="-60" kpx2="7842"/><pair kern="-40" kpx2="115"/><pair kern="-49" kpx2="7843"/><pair kern="-29" kpx2="114"/><pair kern="-60" kpx2="7840"/><pair kern="-49" kpx2="113"/><pair kern="-49" kpx2="7841"/><pair kern="-29" kpx2="112"/><pair kern="-60" kpx2="7854"/><pair kern="-49" kpx2="7855"/><pair kern="-29" kpx2="365"/><pair kern="-60" kpx2="7852"/><pair kern="-49" kpx2="7853"/><pair kern="-29" kpx2="367"/><pair kern="-60" kpx2="7850"/><pair kern="-49" kpx2="7851"/><pair kern="-29" kpx2="361"/><pair kern="-20" kpx2="122"/><pair kern="-60" kpx2="7848"/><pair kern="-49" kpx2="7849"/><pair kern="-29" kpx2="363"/><pair kern="-29" kpx2="432"/><pair kern="-49" kpx2="417"/><pair kern="-20" kpx2="416"/><pair kern="-60" kpx2="197"/><pair kern="-60" kpx2="196"/><pair kern="-20" kpx2="199"/><pair kern="-60" kpx2="193"/><pair kern="-60" kpx2="192"/><pair kern="-60" kpx2="195"/><pair kern="-60" kpx2="194"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-49" kpx2="7681"/><pair kern="-60" kpx2="7680"/><pair kern="-20" kpx2="210"/><pair kern="-20" kpx2="211"/><pair kern="-29" kpx2="7743"/><pair kern="-49" kpx2="509"/><pair kern="-20" kpx2="510"/><pair kern="-49" kpx2="511"/><pair kern="-49" kpx2="235"/><pair kern="-49" kpx2="234"/><pair kern="-60" kpx2="506"/><pair kern="-49" kpx2="233"/><pair kern="-49" kpx2="507"/><pair kern="-49" kpx2="232"/><pair kern="-49" kpx2="231"/><pair kern="-49" kpx2="230"/><pair kern="-49" kpx2="229"/><pair kern="-49" kpx2="228"/><pair kern="-49" kpx2="227"/><pair kern="-49" kpx2="226"/><pair kern="-49" kpx2="225"/><pair kern="-49" kpx2="224"/><pair kern="-29" kpx2="252"/><pair kern="-29" kpx2="250"/><pair kern="-29" kpx2="251"/><pair kern="-49" kpx2="248"/><pair kern="-29" kpx2="249"/><pair kern="-49" kpx2="246"/><pair kern="-49" kpx2="244"/><pair kern="-49" kpx2="245"/><pair kern="-49" kpx2="242"/><pair kern="-49" kpx2="243"/></kerning><kerning kpx1="88"><pair kern="-20" kpx2="7888"/><pair kern="-20" kpx2="7890"/><pair kern="-20" kpx2="71"/><pair kern="-20" kpx2="7892"/><pair kern="-20" kpx2="338"/><pair kern="-20" kpx2="7894"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-20" kpx2="7896"/><pair kern="-20" kpx2="199"/><pair kern="-20" kpx2="7898"/><pair kern="-20" kpx2="79"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-20" kpx2="262"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="81"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="266"/><pair kern="-20" kpx2="334"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-20" kpx2="264"/><pair kern="-20" kpx2="332"/><pair kern="-20" kpx2="7884"/><pair kern="-20" kpx2="7886"/><pair kern="-20" kpx2="210"/><pair kern="-20" kpx2="268"/><pair kern="-20" kpx2="211"/><pair kern="-20" kpx2="510"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-20" kpx2="416"/></kerning><kerning kpx1="1044"><pair kern="109" kpx2="1032"/><pair kern="20" kpx2="1249"/><pair kern="-20" kpx2="1287"/><pair kern="-20" kpx2="1285"/></kerning><kerning kpx1="91"><pair kern="89" kpx2="74"/></kerning><kerning kpx1="1047"><pair kern="-9" kpx2="1200"/><pair kern="-9" kpx2="1142"/><pair kern="-40" kpx2="8218"/><pair kern="-9" kpx2="1140"/><pair kern="-20" kpx2="1286"/><pair kern="-40" kpx2="46"/><pair kern="-9" kpx2="1198"/><pair kern="-40" kpx2="8222"/><pair kern="-20" kpx2="1284"/><pair kern="-40" kpx2="44"/></kerning><kerning kpx1="90"><pair kern="-9" kpx2="7888"/><pair kern="-9" kpx2="7890"/><pair kern="-9" kpx2="71"/><pair kern="-9" kpx2="7892"/><pair kern="-9" kpx2="338"/><pair kern="-9" kpx2="7894"/><pair kern="-9" kpx2="67"/><pair kern="-9" kpx2="336"/><pair kern="-9" kpx2="7896"/><pair kern="-9" kpx2="199"/><pair kern="-9" kpx2="7898"/><pair kern="-9" kpx2="79"/><pair kern="-9" kpx2="7900"/><pair kern="-9" kpx2="286"/><pair kern="-9" kpx2="7902"/><pair kern="-9" kpx2="284"/><pair kern="-9" kpx2="262"/><pair kern="-9" kpx2="216"/><pair kern="-9" kpx2="81"/><pair kern="-9" kpx2="212"/><pair kern="-9" kpx2="266"/><pair kern="-9" kpx2="334"/><pair kern="-9" kpx2="213"/><pair kern="-9" kpx2="214"/><pair kern="-9" kpx2="264"/><pair kern="-9" kpx2="332"/><pair kern="-9" kpx2="7884"/><pair kern="-9" kpx2="7886"/><pair kern="-9" kpx2="210"/><pair kern="-9" kpx2="268"/><pair kern="-9" kpx2="211"/><pair kern="-9" kpx2="510"/><pair kern="-9" kpx2="7906"/><pair kern="-9" kpx2="288"/><pair kern="-9" kpx2="7904"/><pair kern="-9" kpx2="290"/><pair kern="-9" kpx2="416"/></kerning><kerning kpx1="1046"><pair kern="-20" kpx2="1152"/><pair kern="-20" kpx2="1228"/><pair kern="-9" kpx2="1296"/><pair kern="-20" kpx2="1095"/><pair kern="-20" kpx2="1028"/><pair kern="-20" kpx2="1227"/><pair kern="-20" kpx2="1292"/><pair kern="-20" kpx2="1054"/><pair kern="-20" kpx2="1282"/><pair kern="-20" kpx2="1280"/><pair kern="-20" kpx2="1287"/><pair kern="-20" kpx2="1285"/><pair kern="-20" kpx2="1254"/><pair kern="-20" kpx2="1194"/><pair kern="-20" kpx2="1057"/><pair kern="-20" kpx2="1192"/><pair kern="-20" kpx2="1258"/><pair kern="-20" kpx2="1063"/><pair kern="-20" kpx2="1120"/><pair kern="-20" kpx2="1060"/><pair kern="-20" kpx2="1256"/><pair kern="-20" kpx2="1150"/><pair kern="-20" kpx2="1268"/><pair kern="-20" kpx2="1269"/><pair kern="-20" kpx2="1148"/><pair kern="-20" kpx2="1206"/><pair kern="-20" kpx2="1146"/><pair kern="-20" kpx2="1207"/><pair kern="-20" kpx2="1144"/><pair kern="-20" kpx2="1208"/><pair kern="-20" kpx2="1209"/><pair kern="-49" kpx2="1214"/><pair kern="-20" kpx2="1138"/><pair kern="-49" kpx2="1212"/><pair kern="-20" kpx2="1136"/></kerning><kerning kpx1="102"><pair kern="60" kpx2="34"/><pair kern="60" kpx2="39"/><pair kern="60" kpx2="8217"/><pair kern="60" kpx2="8221"/></kerning><kerning kpx1="1066"><pair kern="-20" kpx2="1098"/><pair kern="-20" kpx2="1228"/><pair kern="-20" kpx2="1095"/><pair kern="-20" kpx2="1090"/><pair kern="-49" kpx2="1227"/><pair kern="-20" kpx2="1091"/><pair kern="-20" kpx2="1118"/><pair kern="-40" kpx2="34"/><pair kern="-40" kpx2="39"/><pair kern="-20" kpx2="1263"/><pair kern="-20" kpx2="1262"/><pair kern="-40" kpx2="1122"/><pair kern="-49" kpx2="1268"/><pair kern="-20" kpx2="1269"/><pair kern="-20" kpx2="1266"/><pair kern="-20" kpx2="1267"/><pair kern="-20" kpx2="1264"/><pair kern="-20" kpx2="1265"/><pair kern="-40" kpx2="1142"/><pair kern="-40" kpx2="1140"/><pair kern="-40" kpx2="1274"/><pair kern="-49" kpx2="1136"/><pair kern="-60" kpx2="1035"/><pair kern="-20" kpx2="1038"/><pair kern="-60" kpx2="1026"/><pair kern="-40" kpx2="1164"/><pair kern="-40" kpx2="1170"/><pair kern="-60" kpx2="1294"/><pair kern="-20" kpx2="1295"/><pair kern="-40" kpx2="8217"/><pair kern="-49" kpx2="1286"/><pair kern="-29" kpx2="1287"/><pair kern="-49" kpx2="1284"/><pair kern="-40" kpx2="1182"/><pair kern="-40" kpx2="8221"/><pair kern="-29" kpx2="1285"/><pair kern="-60" kpx2="1066"/><pair kern="-20" kpx2="1185"/><pair kern="-60" kpx2="1184"/><pair kern="-49" kpx2="1058"/><pair kern="-20" kpx2="1059"/><pair kern="-20" kpx2="1199"/><pair kern="-49" kpx2="1063"/><pair kern="-49" kpx2="1198"/><pair kern="-20" kpx2="1197"/><pair kern="-49" kpx2="1196"/><pair kern="-49" kpx2="1200"/><pair kern="-20" kpx2="1201"/><pair kern="-49" kpx2="1206"/><pair kern="-20" kpx2="1207"/><pair kern="-60" kpx2="1204"/><pair kern="-20" kpx2="1205"/><pair kern="-49" kpx2="1208"/><pair kern="-20" kpx2="1209"/></kerning><kerning kpx1="101"><pair kern="-9" kpx2="34"/><pair kern="-20" kpx2="373"/><pair kern="-9" kpx2="39"/><pair kern="-20" kpx2="7925"/><pair kern="-9" kpx2="380"/><pair kern="-9" kpx2="382"/><pair kern="-9" kpx2="378"/><pair kern="-20" kpx2="119"/><pair kern="-20" kpx2="118"/><pair kern="-20" kpx2="253"/><pair kern="-20" kpx2="7809"/><pair kern="-20" kpx2="7811"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="122"/><pair kern="-9" kpx2="8221"/><pair kern="-20" kpx2="121"/><pair kern="-20" kpx2="120"/></kerning><kerning kpx1="1065"><pair kern="109" kpx2="1032"/><pair kern="20" kpx2="1249"/><pair kern="-20" kpx2="1287"/><pair kern="-20" kpx2="1285"/></kerning><kerning kpx1="98"><pair kern="-9" kpx2="34"/><pair kern="-20" kpx2="373"/><pair kern="-9" kpx2="39"/><pair kern="-20" kpx2="7925"/><pair kern="-9" kpx2="380"/><pair kern="-9" kpx2="382"/><pair kern="-9" kpx2="378"/><pair kern="-20" kpx2="119"/><pair kern="-20" kpx2="118"/><pair kern="-20" kpx2="253"/><pair kern="-20" kpx2="7809"/><pair kern="-20" kpx2="7811"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="122"/><pair kern="-9" kpx2="8221"/><pair kern="-20" kpx2="121"/><pair kern="-20" kpx2="120"/></kerning><kerning kpx1="1070"><pair kern="-20" kpx2="1221"/><pair kern="-9" kpx2="1222"/><pair kern="-20" kpx2="1217"/><pair kern="-20" kpx2="1227"/><pair kern="-20" kpx2="1236"/><pair kern="-9" kpx2="1113"/><pair kern="-20" kpx2="1232"/><pair kern="-20" kpx2="1234"/><pair kern="-20" kpx2="1244"/><pair kern="-9" kpx2="1246"/><pair kern="-9" kpx2="1134"/><pair kern="-20" kpx2="1126"/><pair kern="-20" kpx2="1262"/><pair kern="-9" kpx2="1127"/><pair kern="-9" kpx2="1260"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="44"/><pair kern="-20" kpx2="1268"/><pair kern="-20" kpx2="1266"/><pair kern="-20" kpx2="1264"/><pair kern="-20" kpx2="1278"/><pair kern="-9" kpx2="1142"/><pair kern="-20" kpx2="1276"/><pair kern="-9" kpx2="1140"/><pair kern="-20" kpx2="1136"/><pair kern="-20" kpx2="1033"/><pair kern="-9" kpx2="1035"/><pair kern="-20" kpx2="1038"/><pair kern="-9" kpx2="1299"/><pair kern="-20" kpx2="1298"/><pair kern="-9" kpx2="1026"/><pair kern="-20" kpx2="1288"/><pair kern="-20" kpx2="1051"/><pair kern="-9" kpx2="1289"/><pair kern="-9" kpx2="1294"/><pair kern="-20" kpx2="1174"/><pair kern="-9" kpx2="1176"/><pair kern="-40" kpx2="8218"/><pair kern="-20" kpx2="1040"/><pair kern="-20" kpx2="1286"/><pair kern="-40" kpx2="8222"/><pair kern="-20" kpx2="1044"/><pair kern="-20" kpx2="1284"/><pair kern="-9" kpx2="1047"/><pair kern="-20" kpx2="1046"/><pair kern="-9" kpx2="1066"/><pair kern="-9" kpx2="1184"/><pair kern="-9" kpx2="1069"/><pair kern="-29" kpx2="1058"/><pair kern="-20" kpx2="1059"/><pair kern="-20" kpx2="1063"/><pair kern="-9" kpx2="1198"/><pair kern="-20" kpx2="1061"/><pair kern="-29" kpx2="1196"/><pair kern="-9" kpx2="1083"/><pair kern="-20" kpx2="1202"/><pair kern="-9" kpx2="1200"/><pair kern="-20" kpx2="1206"/><pair kern="-9" kpx2="1204"/><pair kern="-20" kpx2="1208"/><pair kern="-9" kpx2="1076"/></kerning><kerning kpx1="99"><pair kern="20" kpx2="34"/><pair kern="20" kpx2="39"/><pair kern="20" kpx2="8217"/><pair kern="20" kpx2="8221"/></kerning><kerning kpx1="1068"><pair kern="-20" kpx2="1098"/><pair kern="-20" kpx2="1228"/><pair kern="-20" kpx2="1095"/><pair kern="-20" kpx2="1090"/><pair kern="-49" kpx2="1227"/><pair kern="-20" kpx2="1091"/><pair kern="-20" kpx2="1118"/><pair kern="-40" kpx2="34"/><pair kern="-40" kpx2="39"/><pair kern="-20" kpx2="1263"/><pair kern="-20" kpx2="1262"/><pair kern="-40" kpx2="1122"/><pair kern="-49" kpx2="1268"/><pair kern="-20" kpx2="1269"/><pair kern="-20" kpx2="1266"/><pair kern="-20" kpx2="1267"/><pair kern="-20" kpx2="1264"/><pair kern="-20" kpx2="1265"/><pair kern="-40" kpx2="1142"/><pair kern="-40" kpx2="1140"/><pair kern="-40" kpx2="1274"/><pair kern="-49" kpx2="1136"/><pair kern="-60" kpx2="1035"/><pair kern="-20" kpx2="1038"/><pair kern="-60" kpx2="1026"/><pair kern="-40" kpx2="1164"/><pair kern="-40" kpx2="1170"/><pair kern="-60" kpx2="1294"/><pair kern="-20" kpx2="1295"/><pair kern="-40" kpx2="8217"/><pair kern="-49" kpx2="1286"/><pair kern="-29" kpx2="1287"/><pair kern="-49" kpx2="1284"/><pair kern="-40" kpx2="1182"/><pair kern="-40" kpx2="8221"/><pair kern="-29" kpx2="1285"/><pair kern="-60" kpx2="1066"/><pair kern="-20" kpx2="1185"/><pair kern="-60" kpx2="1184"/><pair kern="-49" kpx2="1058"/><pair kern="-20" kpx2="1059"/><pair kern="-20" kpx2="1199"/><pair kern="-49" kpx2="1063"/><pair kern="-49" kpx2="1198"/><pair kern="-20" kpx2="1197"/><pair kern="-49" kpx2="1196"/><pair kern="-49" kpx2="1200"/><pair kern="-20" kpx2="1201"/><pair kern="-49" kpx2="1206"/><pair kern="-20" kpx2="1207"/><pair kern="-60" kpx2="1204"/><pair kern="-20" kpx2="1205"/><pair kern="-49" kpx2="1208"/><pair kern="-20" kpx2="1209"/></kerning><kerning kpx1="97"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="1069"><pair kern="-20" kpx2="1221"/><pair kern="-9" kpx2="1222"/><pair kern="-20" kpx2="1217"/><pair kern="-20" kpx2="1227"/><pair kern="-20" kpx2="1236"/><pair kern="-9" kpx2="1113"/><pair kern="-20" kpx2="1232"/><pair kern="-20" kpx2="1234"/><pair kern="-20" kpx2="1244"/><pair kern="-9" kpx2="1246"/><pair kern="-9" kpx2="1134"/><pair kern="-20" kpx2="1126"/><pair kern="-20" kpx2="1262"/><pair kern="-9" kpx2="1127"/><pair kern="-9" kpx2="1260"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="44"/><pair kern="-20" kpx2="1268"/><pair kern="-20" kpx2="1266"/><pair kern="-20" kpx2="1264"/><pair kern="-20" kpx2="1278"/><pair kern="-9" kpx2="1142"/><pair kern="-20" kpx2="1276"/><pair kern="-9" kpx2="1140"/><pair kern="-20" kpx2="1136"/><pair kern="-20" kpx2="1033"/><pair kern="-9" kpx2="1035"/><pair kern="-20" kpx2="1038"/><pair kern="-9" kpx2="1299"/><pair kern="-20" kpx2="1298"/><pair kern="-9" kpx2="1026"/><pair kern="-20" kpx2="1288"/><pair kern="-20" kpx2="1051"/><pair kern="-9" kpx2="1289"/><pair kern="-9" kpx2="1294"/><pair kern="-20" kpx2="1174"/><pair kern="-9" kpx2="1176"/><pair kern="-40" kpx2="8218"/><pair kern="-20" kpx2="1040"/><pair kern="-20" kpx2="1286"/><pair kern="-40" kpx2="8222"/><pair kern="-20" kpx2="1044"/><pair kern="-20" kpx2="1284"/><pair kern="-9" kpx2="1047"/><pair kern="-20" kpx2="1046"/><pair kern="-9" kpx2="1066"/><pair kern="-9" kpx2="1184"/><pair kern="-9" kpx2="1069"/><pair kern="-29" kpx2="1058"/><pair kern="-20" kpx2="1059"/><pair kern="-20" kpx2="1063"/><pair kern="-9" kpx2="1198"/><pair kern="-20" kpx2="1061"/><pair kern="-29" kpx2="1196"/><pair kern="-9" kpx2="1083"/><pair kern="-20" kpx2="1202"/><pair kern="-9" kpx2="1200"/><pair kern="-20" kpx2="1206"/><pair kern="-9" kpx2="1204"/><pair kern="-20" kpx2="1208"/><pair kern="-9" kpx2="1076"/></kerning><kerning kpx1="110"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="1058"><pair kern="-49" kpx2="1100"/><pair kern="-20" kpx2="1101"/><pair kern="-49" kpx2="1102"/><pair kern="-29" kpx2="1103"/><pair kern="-49" kpx2="1096"/><pair kern="-49" kpx2="1097"/><pair kern="-40" kpx2="1098"/><pair kern="-49" kpx2="1099"/><pair kern="-69" kpx2="1092"/><pair kern="-20" kpx2="1093"/><pair kern="-49" kpx2="1094"/><pair kern="-49" kpx2="1095"/><pair kern="-49" kpx2="1088"/><pair kern="-69" kpx2="1089"/><pair kern="-40" kpx2="1090"/><pair kern="-40" kpx2="1091"/><pair kern="-49" kpx2="1117"/><pair kern="-49" kpx2="1116"/><pair kern="-49" kpx2="1119"/><pair kern="-40" kpx2="1118"/><pair kern="-60" kpx2="1113"/><pair kern="-49" kpx2="1114"/><pair kern="-60" kpx2="1109"/><pair kern="-69" kpx2="1108"/><pair kern="-69" kpx2="1105"/><pair kern="-69" kpx2="1104"/><pair kern="-49" kpx2="1107"/><pair kern="-49" kpx2="1133"/><pair kern="-49" kpx2="1131"/><pair kern="-49" kpx2="1129"/><pair kern="-69" kpx2="1126"/><pair kern="-60" kpx2="1127"/><pair kern="-49" kpx2="1125"/><pair kern="-60" kpx2="46"/><pair kern="-60" kpx2="44"/><pair kern="-20" kpx2="1120"/><pair kern="-40" kpx2="45"/><pair kern="-20" kpx2="1121"/><pair kern="-20" kpx2="1151"/><pair kern="-20" kpx2="1150"/><pair kern="-69" kpx2="1149"/><pair kern="-20" kpx2="1148"/><pair kern="-69" kpx2="1147"/><pair kern="-20" kpx2="1146"/><pair kern="-69" kpx2="1145"/><pair kern="-20" kpx2="1144"/><pair kern="-20" kpx2="1143"/><pair kern="-20" kpx2="1141"/><pair kern="-69" kpx2="1139"/><pair kern="-20" kpx2="1138"/><pair kern="-49" kpx2="1137"/><pair kern="-49" kpx2="1033"/><pair kern="-60" kpx2="1299"/><pair kern="-49" kpx2="1298"/><pair kern="-69" kpx2="1297"/><pair kern="-20" kpx2="1028"/><pair kern="-40" kpx2="8211"/><pair kern="-49" kpx2="1291"/><pair kern="-49" kpx2="1288"/><pair kern="-49" kpx2="1051"/><pair kern="-60" kpx2="1289"/><pair kern="-40" kpx2="1295"/><pair kern="-20" kpx2="1292"/><pair kern="-40" kpx2="8213"/><pair kern="-69" kpx2="1293"/><pair kern="-20" kpx2="1054"/><pair kern="-40" kpx2="8212"/><pair kern="-69" kpx2="1282"/><pair kern="-69" kpx2="1283"/><pair kern="-69" kpx2="1040"/><pair kern="-60" kpx2="8218"/><pair kern="-69" kpx2="1280"/><pair kern="-69" kpx2="1281"/><pair kern="-49" kpx2="1287"/><pair kern="-49" kpx2="1044"/><pair kern="-60" kpx2="8222"/><pair kern="-49" kpx2="1285"/><pair kern="20" kpx2="1058"/><pair kern="-20" kpx2="1057"/><pair kern="-40" kpx2="1060"/><pair kern="-60" kpx2="1083"/><pair kern="-49" kpx2="1082"/><pair kern="-49" kpx2="1081"/><pair kern="-49" kpx2="1080"/><pair kern="-49" kpx2="1087"/><pair kern="-69" kpx2="1086"/><pair kern="-49" kpx2="1085"/><pair kern="-49" kpx2="1084"/><pair kern="-49" kpx2="1075"/><pair kern="-49" kpx2="1074"/><pair kern="-20" kpx2="1079"/><pair kern="-20" kpx2="1078"/><pair kern="-69" kpx2="1077"/><pair kern="-60" kpx2="1076"/><pair kern="-49" kpx2="1221"/><pair kern="-49" kpx2="1220"/><pair kern="-60" kpx2="1222"/><pair kern="-20" kpx2="1218"/><pair kern="-49" kpx2="1228"/><pair kern="-49" kpx2="1230"/><pair kern="-49" kpx2="1224"/><pair kern="-49" kpx2="1226"/><pair kern="-69" kpx2="1236"/><pair kern="-69" kpx2="1239"/><pair kern="-69" kpx2="1232"/><pair kern="-69" kpx2="1234"/><pair kern="-20" kpx2="1245"/><pair kern="-20" kpx2="1247"/><pair kern="-69" kpx2="1255"/><pair kern="-20" kpx2="1254"/><pair kern="-49" kpx2="1253"/><pair kern="-49" kpx2="1251"/><pair kern="-29" kpx2="1249"/><pair kern="-40" kpx2="1263"/><pair kern="-20" kpx2="1261"/><pair kern="-69" kpx2="1259"/><pair kern="-20" kpx2="1258"/><pair kern="-69" kpx2="1257"/><pair kern="-20" kpx2="1256"/><pair kern="-49" kpx2="1271"/><pair kern="-49" kpx2="1269"/><pair kern="-40" kpx2="1267"/><pair kern="-40" kpx2="1265"/><pair kern="-20" kpx2="1279"/><pair kern="-20" kpx2="1277"/><pair kern="-49" kpx2="1273"/><pair kern="-69" kpx2="1153"/><pair kern="-20" kpx2="1152"/><pair kern="-49" kpx2="1163"/><pair kern="-49" kpx2="1167"/><pair kern="-49" kpx2="1169"/><pair kern="-49" kpx2="1173"/><pair kern="-20" kpx2="1175"/><pair kern="-20" kpx2="1177"/><pair kern="-49" kpx2="1179"/><pair kern="-49" kpx2="1181"/><pair kern="-49" kpx2="1187"/><pair kern="-40" kpx2="1185"/><pair kern="-49" kpx2="1191"/><pair kern="-49" kpx2="1189"/><pair kern="-69" kpx2="1195"/><pair kern="-20" kpx2="1194"/><pair kern="-69" kpx2="1193"/><pair kern="-20" kpx2="1192"/><pair kern="-40" kpx2="1199"/><pair kern="-40" kpx2="1197"/><pair kern="20" kpx2="1196"/><pair kern="-20" kpx2="1203"/><pair kern="-40" kpx2="1201"/><pair kern="-49" kpx2="1207"/><pair kern="-40" kpx2="1205"/><pair kern="-49" kpx2="1211"/><pair kern="-49" kpx2="1209"/><pair kern="-49" kpx2="1214"/><pair kern="-69" kpx2="1215"/><pair kern="-49" kpx2="1212"/><pair kern="-69" kpx2="1213"/></kerning><kerning kpx1="111"><pair kern="-9" kpx2="34"/><pair kern="-20" kpx2="373"/><pair kern="-9" kpx2="39"/><pair kern="-20" kpx2="7925"/><pair kern="-9" kpx2="380"/><pair kern="-9" kpx2="382"/><pair kern="-9" kpx2="378"/><pair kern="-20" kpx2="119"/><pair kern="-20" kpx2="118"/><pair kern="-20" kpx2="253"/><pair kern="-20" kpx2="7809"/><pair kern="-20" kpx2="7811"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="122"/><pair kern="-9" kpx2="8221"/><pair kern="-20" kpx2="121"/><pair kern="-20" kpx2="120"/></kerning><kerning kpx1="1059"><pair kern="-49" kpx2="1221"/><pair kern="-40" kpx2="1222"/><pair kern="-20" kpx2="1092"/><pair kern="-20" kpx2="1228"/><pair kern="-20" kpx2="1095"/><pair kern="-20" kpx2="1089"/><pair kern="-69" kpx2="1236"/><pair kern="-20" kpx2="1239"/><pair kern="-69" kpx2="1232"/><pair kern="-40" kpx2="1113"/><pair kern="-69" kpx2="1234"/><pair kern="49" kpx2="1115"/><pair kern="-9" kpx2="1109"/><pair kern="-20" kpx2="1108"/><pair kern="-20" kpx2="1105"/><pair kern="-20" kpx2="1104"/><pair kern="49" kpx2="1106"/><pair kern="-20" kpx2="1255"/><pair kern="-9" kpx2="1254"/><pair kern="-69" kpx2="1126"/><pair kern="-40" kpx2="1127"/><pair kern="-20" kpx2="1259"/><pair kern="-60" kpx2="46"/><pair kern="-9" kpx2="1258"/><pair kern="-20" kpx2="1257"/><pair kern="-60" kpx2="44"/><pair kern="-9" kpx2="1120"/><pair kern="-9" kpx2="1256"/><pair kern="-9" kpx2="1150"/><pair kern="-20" kpx2="1149"/><pair kern="-20" kpx2="1269"/><pair kern="-9" kpx2="1148"/><pair kern="-20" kpx2="1147"/><pair kern="-9" kpx2="1146"/><pair kern="-20" kpx2="1145"/><pair kern="-9" kpx2="1144"/><pair kern="-20" kpx2="1139"/><pair kern="-9" kpx2="1138"/><pair kern="-20" kpx2="1153"/><pair kern="-49" kpx2="1033"/><pair kern="-9" kpx2="1152"/><pair kern="-40" kpx2="1299"/><pair kern="-49" kpx2="1298"/><pair kern="-20" kpx2="1297"/><pair kern="-9" kpx2="1028"/><pair kern="49" kpx2="1165"/><pair kern="-49" kpx2="1288"/><pair kern="-49" kpx2="1051"/><pair kern="-40" kpx2="1289"/><pair kern="-9" kpx2="1292"/><pair kern="-20" kpx2="1293"/><pair kern="-9" kpx2="1054"/><pair kern="-69" kpx2="1282"/><pair kern="-20" kpx2="1283"/><pair kern="-69" kpx2="1040"/><pair kern="-60" kpx2="8218"/><pair kern="-69" kpx2="1280"/><pair kern="-20" kpx2="1281"/><pair kern="-49" kpx2="1044"/><pair kern="-60" kpx2="8222"/><pair kern="49" kpx2="1183"/><pair kern="-9" kpx2="1071"/><pair kern="-20" kpx2="1195"/><pair kern="-9" kpx2="1194"/><pair kern="-20" kpx2="1193"/><pair kern="-9" kpx2="1057"/><pair kern="-9" kpx2="1192"/><pair kern="-29" kpx2="1060"/><pair kern="-40" kpx2="1083"/><pair kern="-20" kpx2="1086"/><pair kern="-20" kpx2="1207"/><pair kern="-20" kpx2="1209"/><pair kern="-20" kpx2="1214"/><pair kern="-29" kpx2="1215"/><pair kern="-20" kpx2="1212"/><pair kern="-20" kpx2="1077"/><pair kern="-29" kpx2="1213"/><pair kern="-40" kpx2="1076"/></kerning><kerning kpx1="1056"><pair kern="-60" kpx2="1221"/><pair kern="-60" kpx2="1033"/><pair kern="-49" kpx2="1222"/><pair kern="-20" kpx2="1217"/><pair kern="-49" kpx2="1299"/><pair kern="-60" kpx2="1298"/><pair kern="-49" kpx2="1236"/><pair kern="-60" kpx2="1288"/><pair kern="-60" kpx2="1051"/><pair kern="-49" kpx2="1289"/><pair kern="-49" kpx2="1113"/><pair kern="-49" kpx2="1232"/><pair kern="-20" kpx2="1174"/><pair kern="-49" kpx2="1234"/><pair kern="-40" kpx2="1282"/><pair kern="-20" kpx2="1244"/><pair kern="-129" kpx2="8218"/><pair kern="-49" kpx2="1040"/><pair kern="-40" kpx2="1280"/><pair kern="-60" kpx2="1044"/><pair kern="-129" kpx2="8222"/><pair kern="-20" kpx2="1046"/><pair kern="-9" kpx2="1130"/><pair kern="-49" kpx2="1126"/><pair kern="-49" kpx2="1127"/><pair kern="-129" kpx2="46"/><pair kern="-129" kpx2="44"/><pair kern="-20" kpx2="1061"/><pair kern="-49" kpx2="1083"/><pair kern="-20" kpx2="1202"/><pair kern="-20" kpx2="1278"/><pair kern="-20" kpx2="1276"/><pair kern="-49" kpx2="1076"/></kerning><kerning kpx1="109"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="1057"><pair kern="-20" kpx2="1152"/><pair kern="-20" kpx2="1228"/><pair kern="-20" kpx2="1095"/><pair kern="-20" kpx2="1028"/><pair kern="-20" kpx2="1292"/><pair kern="-20" kpx2="1054"/><pair kern="-20" kpx2="1282"/><pair kern="-20" kpx2="1280"/><pair kern="-20" kpx2="1287"/><pair kern="-20" kpx2="1285"/><pair kern="-20" kpx2="1254"/><pair kern="-20" kpx2="1194"/><pair kern="-20" kpx2="1057"/><pair kern="-20" kpx2="1192"/><pair kern="-20" kpx2="1258"/><pair kern="-20" kpx2="1120"/><pair kern="-20" kpx2="1060"/><pair kern="-20" kpx2="1256"/><pair kern="-20" kpx2="1150"/><pair kern="-20" kpx2="1148"/><pair kern="-20" kpx2="1269"/><pair kern="-20" kpx2="1146"/><pair kern="-20" kpx2="1207"/><pair kern="-20" kpx2="1144"/><pair kern="-20" kpx2="1209"/><pair kern="-20" kpx2="1214"/><pair kern="-20" kpx2="1138"/><pair kern="-20" kpx2="1212"/></kerning><kerning kpx1="1062"><pair kern="109" kpx2="1032"/><pair kern="20" kpx2="1249"/><pair kern="-20" kpx2="1287"/><pair kern="-20" kpx2="1285"/></kerning><kerning kpx1="107"><pair kern="-20" kpx2="7889"/><pair kern="-20" kpx2="275"/><pair kern="-20" kpx2="273"/><pair kern="-20" kpx2="7893"/><pair kern="-20" kpx2="339"/><pair kern="-20" kpx2="279"/><pair kern="-20" kpx2="7895"/><pair kern="-20" kpx2="337"/><pair kern="-20" kpx2="277"/><pair kern="-20" kpx2="7897"/><pair kern="-20" kpx2="283"/><pair kern="-20" kpx2="7899"/><pair kern="-20" kpx2="281"/><pair kern="-20" kpx2="7901"/><pair kern="-20" kpx2="7903"/><pair kern="-20" kpx2="7875"/><pair kern="-20" kpx2="7877"/><pair kern="-20" kpx2="263"/><pair kern="-20" kpx2="7879"/><pair kern="-20" kpx2="335"/><pair kern="-20" kpx2="267"/><pair kern="-20" kpx2="333"/><pair kern="-20" kpx2="265"/><pair kern="-20" kpx2="7885"/><pair kern="-20" kpx2="271"/><pair kern="-20" kpx2="7887"/><pair kern="-20" kpx2="269"/><pair kern="-20" kpx2="100"/><pair kern="-20" kpx2="511"/><pair kern="-20" kpx2="101"/><pair kern="-20" kpx2="235"/><pair kern="-20" kpx2="234"/><pair kern="-20" kpx2="99"/><pair kern="-20" kpx2="233"/><pair kern="-20" kpx2="232"/><pair kern="-20" kpx2="7871"/><pair kern="-20" kpx2="231"/><pair kern="-20" kpx2="111"/><pair kern="-20" kpx2="7869"/><pair kern="-20" kpx2="7867"/><pair kern="-20" kpx2="7865"/><pair kern="-20" kpx2="224"/><pair kern="-20" kpx2="7907"/><pair kern="-20" kpx2="7905"/><pair kern="-20" kpx2="113"/><pair kern="-20" kpx2="248"/><pair kern="-20" kpx2="417"/><pair kern="-20" kpx2="246"/><pair kern="-20" kpx2="244"/><pair kern="-20" kpx2="245"/><pair kern="-20" kpx2="242"/><pair kern="-20" kpx2="243"/></kerning><kerning kpx1="104"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="1060"><pair kern="-20" kpx2="1221"/><pair kern="-9" kpx2="1222"/><pair kern="-20" kpx2="1217"/><pair kern="-20" kpx2="1236"/><pair kern="-9" kpx2="1113"/><pair kern="-20" kpx2="1232"/><pair kern="-20" kpx2="1234"/><pair kern="-20" kpx2="1244"/><pair kern="-20" kpx2="1246"/><pair kern="-20" kpx2="1134"/><pair kern="-20" kpx2="1126"/><pair kern="-9" kpx2="1127"/><pair kern="-29" kpx2="1262"/><pair kern="-20" kpx2="1260"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="44"/><pair kern="-29" kpx2="1266"/><pair kern="-29" kpx2="1264"/><pair kern="-20" kpx2="1278"/><pair kern="-9" kpx2="1142"/><pair kern="-20" kpx2="1276"/><pair kern="-9" kpx2="1140"/><pair kern="-20" kpx2="1033"/><pair kern="-20" kpx2="1035"/><pair kern="-29" kpx2="1038"/><pair kern="-9" kpx2="1299"/><pair kern="-20" kpx2="1298"/><pair kern="-20" kpx2="1026"/><pair kern="-20" kpx2="1288"/><pair kern="-20" kpx2="1051"/><pair kern="-9" kpx2="1289"/><pair kern="-20" kpx2="1294"/><pair kern="-20" kpx2="1174"/><pair kern="-20" kpx2="1176"/><pair kern="-40" kpx2="8218"/><pair kern="-20" kpx2="1040"/><pair kern="-20" kpx2="1286"/><pair kern="-40" kpx2="8222"/><pair kern="-20" kpx2="1044"/><pair kern="-20" kpx2="1284"/><pair kern="-20" kpx2="1047"/><pair kern="-20" kpx2="1046"/><pair kern="-20" kpx2="1066"/><pair kern="-20" kpx2="1184"/><pair kern="-20" kpx2="1069"/><pair kern="-29" kpx2="1058"/><pair kern="-29" kpx2="1059"/><pair kern="-29" kpx2="1198"/><pair kern="-20" kpx2="1061"/><pair kern="-29" kpx2="1196"/><pair kern="-9" kpx2="1083"/><pair kern="-20" kpx2="1202"/><pair kern="-29" kpx2="1200"/><pair kern="-20" kpx2="1204"/><pair kern="-9" kpx2="1076"/></kerning><kerning kpx1="1061"><pair kern="-20" kpx2="1152"/><pair kern="-20" kpx2="1228"/><pair kern="-9" kpx2="1296"/><pair kern="-20" kpx2="1095"/><pair kern="-20" kpx2="1028"/><pair kern="-20" kpx2="1227"/><pair kern="-20" kpx2="1292"/><pair kern="-20" kpx2="1054"/><pair kern="-20" kpx2="1282"/><pair kern="-20" kpx2="1280"/><pair kern="-20" kpx2="1287"/><pair kern="-20" kpx2="1285"/><pair kern="-20" kpx2="1254"/><pair kern="-20" kpx2="1194"/><pair kern="-20" kpx2="1057"/><pair kern="-20" kpx2="1192"/><pair kern="-20" kpx2="1258"/><pair kern="-20" kpx2="1063"/><pair kern="-20" kpx2="1120"/><pair kern="-20" kpx2="1060"/><pair kern="-20" kpx2="1256"/><pair kern="-20" kpx2="1150"/><pair kern="-20" kpx2="1268"/><pair kern="-20" kpx2="1269"/><pair kern="-20" kpx2="1148"/><pair kern="-20" kpx2="1206"/><pair kern="-20" kpx2="1146"/><pair kern="-20" kpx2="1207"/><pair kern="-20" kpx2="1144"/><pair kern="-20" kpx2="1208"/><pair kern="-20" kpx2="1209"/><pair kern="-49" kpx2="1214"/><pair kern="-20" kpx2="1138"/><pair kern="-49" kpx2="1212"/><pair kern="-20" kpx2="1136"/></kerning><kerning kpx1="119"><pair kern="40" kpx2="34"/><pair kern="40" kpx2="39"/><pair kern="-40" kpx2="8218"/><pair kern="40" kpx2="8217"/><pair kern="20" kpx2="63"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="8222"/><pair kern="40" kpx2="8221"/><pair kern="-40" kpx2="44"/></kerning><kerning kpx1="118"><pair kern="40" kpx2="34"/><pair kern="40" kpx2="39"/><pair kern="-40" kpx2="8218"/><pair kern="40" kpx2="8217"/><pair kern="20" kpx2="63"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="8222"/><pair kern="40" kpx2="8221"/><pair kern="-40" kpx2="44"/></kerning><kerning kpx1="1082"><pair kern="-20" kpx2="1153"/><pair kern="-20" kpx2="1092"/><pair kern="-20" kpx2="1228"/><pair kern="-20" kpx2="1297"/><pair kern="-20" kpx2="1095"/><pair kern="-20" kpx2="1089"/><pair kern="-20" kpx2="1239"/><pair kern="-20" kpx2="1293"/><pair kern="-20" kpx2="1283"/><pair kern="-20" kpx2="1108"/><pair kern="-20" kpx2="1281"/><pair kern="-20" kpx2="1105"/><pair kern="-20" kpx2="1104"/><pair kern="-20" kpx2="1255"/><pair kern="-20" kpx2="1195"/><pair kern="-20" kpx2="1193"/><pair kern="-20" kpx2="1259"/><pair kern="-20" kpx2="1257"/><pair kern="-20" kpx2="1149"/><pair kern="-20" kpx2="1269"/><pair kern="-20" kpx2="1147"/><pair kern="-20" kpx2="1086"/><pair kern="-20" kpx2="1207"/><pair kern="-20" kpx2="1145"/><pair kern="-20" kpx2="1209"/><pair kern="-20" kpx2="1139"/><pair kern="-20" kpx2="1215"/><pair kern="-20" kpx2="1077"/><pair kern="-20" kpx2="1213"/></kerning><kerning kpx1="116"><pair kern="20" kpx2="34"/><pair kern="20" kpx2="39"/><pair kern="20" kpx2="8217"/><pair kern="20" kpx2="8221"/></kerning><kerning kpx1="114"><pair kern="-20" kpx2="7889"/><pair kern="-20" kpx2="275"/><pair kern="-20" kpx2="273"/><pair kern="-20" kpx2="7893"/><pair kern="-20" kpx2="279"/><pair kern="-20" kpx2="7895"/><pair kern="-20" kpx2="277"/><pair kern="-20" kpx2="7897"/><pair kern="-20" kpx2="283"/><pair kern="-20" kpx2="7899"/><pair kern="-20" kpx2="281"/><pair kern="-20" kpx2="7901"/><pair kern="-9" kpx2="287"/><pair kern="-20" kpx2="7903"/><pair kern="-9" kpx2="285"/><pair kern="-20" kpx2="259"/><pair kern="-20" kpx2="7875"/><pair kern="-20" kpx2="257"/><pair kern="-20" kpx2="7877"/><pair kern="-20" kpx2="263"/><pair kern="-20" kpx2="7879"/><pair kern="-20" kpx2="261"/><pair kern="-20" kpx2="267"/><pair kern="-20" kpx2="265"/><pair kern="-20" kpx2="7885"/><pair kern="-20" kpx2="271"/><pair kern="-20" kpx2="7887"/><pair kern="-20" kpx2="269"/><pair kern="40" kpx2="34"/><pair kern="40" kpx2="39"/><pair kern="-20" kpx2="7907"/><pair kern="-9" kpx2="289"/><pair kern="-20" kpx2="7905"/><pair kern="-9" kpx2="291"/><pair kern="-20" kpx2="417"/><pair kern="-20" kpx2="339"/><pair kern="-20" kpx2="337"/><pair kern="-20" kpx2="335"/><pair kern="40" kpx2="8217"/><pair kern="-20" kpx2="333"/><pair kern="-20" kpx2="7681"/><pair kern="40" kpx2="8221"/><pair kern="-20" kpx2="7863"/><pair kern="-20" kpx2="509"/><pair kern="-9" kpx2="103"/><pair kern="-20" kpx2="7861"/><pair kern="-20" kpx2="100"/><pair kern="-20" kpx2="511"/><pair kern="-20" kpx2="101"/><pair kern="-20" kpx2="7859"/><pair kern="-20" kpx2="235"/><pair kern="-20" kpx2="234"/><pair kern="-20" kpx2="99"/><pair kern="-20" kpx2="7857"/><pair kern="-20" kpx2="233"/><pair kern="-20" kpx2="507"/><pair kern="-20" kpx2="232"/><pair kern="-20" kpx2="97"/><pair kern="-20" kpx2="7871"/><pair kern="-20" kpx2="231"/><pair kern="-20" kpx2="230"/><pair kern="-20" kpx2="111"/><pair kern="-20" kpx2="7869"/><pair kern="-20" kpx2="229"/><pair kern="-20" kpx2="228"/><pair kern="-20" kpx2="7867"/><pair kern="-20" kpx2="227"/><pair kern="-20" kpx2="226"/><pair kern="-20" kpx2="7865"/><pair kern="-20" kpx2="225"/><pair kern="-20" kpx2="224"/><pair kern="-20" kpx2="7845"/><pair kern="-20" kpx2="7843"/><pair kern="-20" kpx2="113"/><pair kern="-20" kpx2="248"/><pair kern="-20" kpx2="7841"/><pair kern="-20" kpx2="246"/><pair kern="-20" kpx2="7855"/><pair kern="-20" kpx2="244"/><pair kern="-20" kpx2="7853"/><pair kern="-20" kpx2="245"/><pair kern="-20" kpx2="242"/><pair kern="-20" kpx2="7851"/><pair kern="-20" kpx2="243"/><pair kern="-20" kpx2="7849"/></kerning><kerning kpx1="1086"><pair kern="-9" kpx2="1098"/><pair kern="-20" kpx2="1218"/><pair kern="-20" kpx2="1093"/><pair kern="-9" kpx2="1228"/><pair kern="-9" kpx2="1095"/><pair kern="-9" kpx2="1090"/><pair kern="-9" kpx2="1091"/><pair kern="-9" kpx2="1118"/><pair kern="-9" kpx2="1295"/><pair kern="-20" kpx2="1175"/><pair kern="-20" kpx2="1245"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="1287"/><pair kern="-9" kpx2="8221"/><pair kern="-9" kpx2="1285"/><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="1185"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="1263"/><pair kern="-9" kpx2="1197"/><pair kern="-20" kpx2="1203"/><pair kern="-9" kpx2="1269"/><pair kern="-9" kpx2="1207"/><pair kern="-9" kpx2="1267"/><pair kern="-9" kpx2="1205"/><pair kern="-9" kpx2="1265"/><pair kern="-20" kpx2="1279"/><pair kern="-20" kpx2="1277"/><pair kern="-9" kpx2="1209"/><pair kern="-20" kpx2="1078"/></kerning><kerning kpx1="112"><pair kern="-9" kpx2="34"/><pair kern="-20" kpx2="373"/><pair kern="-9" kpx2="39"/><pair kern="-20" kpx2="7925"/><pair kern="-9" kpx2="380"/><pair kern="-9" kpx2="382"/><pair kern="-9" kpx2="378"/><pair kern="-20" kpx2="119"/><pair kern="-20" kpx2="118"/><pair kern="-20" kpx2="253"/><pair kern="-20" kpx2="7809"/><pair kern="-20" kpx2="7811"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="122"/><pair kern="-9" kpx2="8221"/><pair kern="-20" kpx2="121"/><pair kern="-20" kpx2="120"/></kerning><kerning kpx1="1075"><pair kern="-9" kpx2="1153"/><pair kern="-29" kpx2="1222"/><pair kern="-29" kpx2="1299"/><pair kern="-9" kpx2="1092"/><pair kern="-9" kpx2="1297"/><pair kern="-9" kpx2="1089"/><pair kern="-20" kpx2="8211"/><pair kern="-29" kpx2="1289"/><pair kern="-9" kpx2="1239"/><pair kern="-29" kpx2="1113"/><pair kern="-20" kpx2="8213"/><pair kern="-9" kpx2="1293"/><pair kern="-20" kpx2="8212"/><pair kern="-9" kpx2="1283"/><pair kern="-9" kpx2="1108"/><pair kern="-49" kpx2="8218"/><pair kern="-9" kpx2="1281"/><pair kern="-9" kpx2="1105"/><pair kern="-49" kpx2="8222"/><pair kern="-9" kpx2="1104"/><pair kern="-9" kpx2="1255"/><pair kern="-9" kpx2="1195"/><pair kern="-29" kpx2="1127"/><pair kern="-9" kpx2="1193"/><pair kern="-9" kpx2="1259"/><pair kern="-49" kpx2="46"/><pair kern="-9" kpx2="1257"/><pair kern="-49" kpx2="44"/><pair kern="-20" kpx2="45"/><pair kern="-29" kpx2="1083"/><pair kern="-9" kpx2="1149"/><pair kern="-9" kpx2="1147"/><pair kern="-9" kpx2="1086"/><pair kern="-9" kpx2="1145"/><pair kern="-9" kpx2="1139"/><pair kern="-9" kpx2="1077"/><pair kern="-29" kpx2="1076"/></kerning><kerning kpx1="1074"><pair kern="20" kpx2="1103"/></kerning><kerning kpx1="1072"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="123"><pair kern="89" kpx2="74"/></kerning><kerning kpx1="1079"><pair kern="20" kpx2="1103"/></kerning><kerning kpx1="1078"><pair kern="-20" kpx2="1153"/><pair kern="-20" kpx2="1092"/><pair kern="-20" kpx2="1228"/><pair kern="-20" kpx2="1297"/><pair kern="-20" kpx2="1095"/><pair kern="-20" kpx2="1089"/><pair kern="-20" kpx2="1239"/><pair kern="-20" kpx2="1293"/><pair kern="-20" kpx2="1283"/><pair kern="-20" kpx2="1108"/><pair kern="-20" kpx2="1281"/><pair kern="-20" kpx2="1105"/><pair kern="-20" kpx2="1104"/><pair kern="-20" kpx2="1255"/><pair kern="-20" kpx2="1195"/><pair kern="-20" kpx2="1193"/><pair kern="-20" kpx2="1259"/><pair kern="-20" kpx2="1257"/><pair kern="-20" kpx2="1149"/><pair kern="-20" kpx2="1269"/><pair kern="-20" kpx2="1147"/><pair kern="-20" kpx2="1086"/><pair kern="-20" kpx2="1207"/><pair kern="-20" kpx2="1145"/><pair kern="-20" kpx2="1209"/><pair kern="-20" kpx2="1139"/><pair kern="-20" kpx2="1215"/><pair kern="-20" kpx2="1077"/><pair kern="-20" kpx2="1213"/></kerning><kerning kpx1="121"><pair kern="40" kpx2="34"/><pair kern="40" kpx2="39"/><pair kern="-40" kpx2="8218"/><pair kern="40" kpx2="8217"/><pair kern="20" kpx2="63"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="8222"/><pair kern="40" kpx2="8221"/><pair kern="-40" kpx2="44"/></kerning><kerning kpx1="1077"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="120"><pair kern="-20" kpx2="7889"/><pair kern="-20" kpx2="275"/><pair kern="-20" kpx2="273"/><pair kern="-20" kpx2="7893"/><pair kern="-20" kpx2="339"/><pair kern="-20" kpx2="279"/><pair kern="-20" kpx2="7895"/><pair kern="-20" kpx2="337"/><pair kern="-20" kpx2="277"/><pair kern="-20" kpx2="7897"/><pair kern="-20" kpx2="283"/><pair kern="-20" kpx2="7899"/><pair kern="-20" kpx2="281"/><pair kern="-20" kpx2="7901"/><pair kern="-20" kpx2="7903"/><pair kern="-20" kpx2="7875"/><pair kern="-20" kpx2="7877"/><pair kern="-20" kpx2="263"/><pair kern="-20" kpx2="7879"/><pair kern="-20" kpx2="335"/><pair kern="-20" kpx2="267"/><pair kern="-20" kpx2="333"/><pair kern="-20" kpx2="265"/><pair kern="-20" kpx2="7885"/><pair kern="-20" kpx2="271"/><pair kern="-20" kpx2="7887"/><pair kern="-20" kpx2="269"/><pair kern="-20" kpx2="100"/><pair kern="-20" kpx2="511"/><pair kern="-20" kpx2="101"/><pair kern="-20" kpx2="235"/><pair kern="-20" kpx2="234"/><pair kern="-20" kpx2="99"/><pair kern="-20" kpx2="233"/><pair kern="-20" kpx2="232"/><pair kern="-20" kpx2="7871"/><pair kern="-20" kpx2="231"/><pair kern="-20" kpx2="111"/><pair kern="-20" kpx2="7869"/><pair kern="-20" kpx2="7867"/><pair kern="-20" kpx2="7865"/><pair kern="-20" kpx2="224"/><pair kern="-20" kpx2="7907"/><pair kern="-20" kpx2="7905"/><pair kern="-20" kpx2="113"/><pair kern="-20" kpx2="248"/><pair kern="-20" kpx2="417"/><pair kern="-20" kpx2="246"/><pair kern="-20" kpx2="244"/><pair kern="-20" kpx2="245"/><pair kern="-20" kpx2="242"/><pair kern="-20" kpx2="243"/></kerning><kerning kpx1="1076"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="1221"><pair kern="109" kpx2="1032"/><pair kern="20" kpx2="1249"/><pair kern="-20" kpx2="1287"/><pair kern="-20" kpx2="1285"/></kerning><kerning kpx1="1220"><pair kern="-20" kpx2="1269"/><pair kern="-20" kpx2="1207"/><pair kern="-20" kpx2="1228"/><pair kern="-20" kpx2="1209"/><pair kern="-20" kpx2="1095"/></kerning><kerning kpx1="1222"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="1217"><pair kern="-20" kpx2="1152"/><pair kern="-20" kpx2="1228"/><pair kern="-9" kpx2="1296"/><pair kern="-20" kpx2="1095"/><pair kern="-20" kpx2="1028"/><pair kern="-20" kpx2="1227"/><pair kern="-20" kpx2="1292"/><pair kern="-20" kpx2="1054"/><pair kern="-20" kpx2="1282"/><pair kern="-20" kpx2="1280"/><pair kern="-20" kpx2="1287"/><pair kern="-20" kpx2="1285"/><pair kern="-20" kpx2="1254"/><pair kern="-20" kpx2="1194"/><pair kern="-20" kpx2="1057"/><pair kern="-20" kpx2="1192"/><pair kern="-20" kpx2="1258"/><pair kern="-20" kpx2="1063"/><pair kern="-20" kpx2="1120"/><pair kern="-20" kpx2="1060"/><pair kern="-20" kpx2="1256"/><pair kern="-20" kpx2="1150"/><pair kern="-20" kpx2="1268"/><pair kern="-20" kpx2="1269"/><pair kern="-20" kpx2="1148"/><pair kern="-20" kpx2="1206"/><pair kern="-20" kpx2="1146"/><pair kern="-20" kpx2="1207"/><pair kern="-20" kpx2="1144"/><pair kern="-20" kpx2="1208"/><pair kern="-20" kpx2="1209"/><pair kern="-49" kpx2="1214"/><pair kern="-20" kpx2="1138"/><pair kern="-49" kpx2="1212"/><pair kern="-20" kpx2="1136"/></kerning><kerning kpx1="1219"><pair kern="49" kpx2="1032"/><pair kern="-29" kpx2="1098"/><pair kern="-20" kpx2="1228"/><pair kern="-20" kpx2="1095"/><pair kern="-40" kpx2="1227"/><pair kern="-29" kpx2="1090"/><pair kern="-29" kpx2="1295"/><pair kern="-29" kpx2="8217"/><pair kern="-20" kpx2="1286"/><pair kern="-29" kpx2="1287"/><pair kern="-20" kpx2="1284"/><pair kern="-29" kpx2="8221"/><pair kern="-29" kpx2="1285"/><pair kern="-29" kpx2="34"/><pair kern="-29" kpx2="1185"/><pair kern="-29" kpx2="39"/><pair kern="-20" kpx2="1058"/><pair kern="-9" kpx2="1199"/><pair kern="-40" kpx2="1063"/><pair kern="-20" kpx2="1198"/><pair kern="-20" kpx2="1060"/><pair kern="-29" kpx2="1197"/><pair kern="-9" kpx2="1121"/><pair kern="-20" kpx2="1196"/><pair kern="-9" kpx2="1151"/><pair kern="-40" kpx2="1268"/><pair kern="-20" kpx2="1200"/><pair kern="-20" kpx2="1269"/><pair kern="-9" kpx2="1201"/><pair kern="-40" kpx2="1206"/><pair kern="-20" kpx2="1207"/><pair kern="-29" kpx2="1205"/><pair kern="-9" kpx2="1143"/><pair kern="-20" kpx2="1142"/><pair kern="-40" kpx2="1208"/><pair kern="-9" kpx2="1141"/><pair kern="-20" kpx2="1209"/><pair kern="-20" kpx2="1140"/><pair kern="-29" kpx2="1214"/><pair kern="-20" kpx2="1215"/><pair kern="-29" kpx2="1212"/><pair kern="-20" kpx2="1213"/><pair kern="-40" kpx2="1136"/></kerning><kerning kpx1="1218"><pair kern="-20" kpx2="1153"/><pair kern="-20" kpx2="1092"/><pair kern="-20" kpx2="1228"/><pair kern="-20" kpx2="1297"/><pair kern="-20" kpx2="1095"/><pair kern="-20" kpx2="1089"/><pair kern="-20" kpx2="1239"/><pair kern="-20" kpx2="1293"/><pair kern="-20" kpx2="1283"/><pair kern="-20" kpx2="1108"/><pair kern="-20" kpx2="1281"/><pair kern="-20" kpx2="1105"/><pair kern="-20" kpx2="1104"/><pair kern="-20" kpx2="1255"/><pair kern="-20" kpx2="1195"/><pair kern="-20" kpx2="1193"/><pair kern="-20" kpx2="1259"/><pair kern="-20" kpx2="1257"/><pair kern="-20" kpx2="1149"/><pair kern="-20" kpx2="1269"/><pair kern="-20" kpx2="1147"/><pair kern="-20" kpx2="1086"/><pair kern="-20" kpx2="1207"/><pair kern="-20" kpx2="1145"/><pair kern="-20" kpx2="1209"/><pair kern="-20" kpx2="1139"/><pair kern="-20" kpx2="1215"/><pair kern="-20" kpx2="1077"/><pair kern="-20" kpx2="1213"/></kerning><kerning kpx1="1229"><pair kern="109" kpx2="1032"/><pair kern="20" kpx2="1249"/><pair kern="-20" kpx2="1287"/><pair kern="-20" kpx2="1285"/></kerning><kerning kpx1="1230"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="1225"><pair kern="109" kpx2="1032"/><pair kern="20" kpx2="1249"/><pair kern="-20" kpx2="1287"/><pair kern="-20" kpx2="1285"/></kerning><kerning kpx1="1226"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="1237"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="1239"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="1232"><pair kern="-49" kpx2="1035"/><pair kern="-20" kpx2="1098"/><pair kern="-20" kpx2="1228"/><pair kern="-49" kpx2="1026"/><pair kern="-20" kpx2="1095"/><pair kern="-20" kpx2="1164"/><pair kern="-49" kpx2="1227"/><pair kern="-20" kpx2="1090"/><pair kern="-20" kpx2="1170"/><pair kern="-49" kpx2="1294"/><pair kern="-20" kpx2="1295"/><pair kern="-69" kpx2="8217"/><pair kern="-69" kpx2="1286"/><pair kern="-20" kpx2="1240"/><pair kern="-20" kpx2="1287"/><pair kern="-69" kpx2="1284"/><pair kern="-20" kpx2="1242"/><pair kern="-69" kpx2="8221"/><pair kern="-20" kpx2="1182"/><pair kern="-20" kpx2="1285"/><pair kern="-49" kpx2="1066"/><pair kern="-69" kpx2="34"/><pair kern="-20" kpx2="1185"/><pair kern="-49" kpx2="1184"/><pair kern="-69" kpx2="39"/><pair kern="-69" kpx2="1058"/><pair kern="-20" kpx2="1122"/><pair kern="-60" kpx2="1198"/><pair kern="-49" kpx2="1063"/><pair kern="-20" kpx2="1060"/><pair kern="-20" kpx2="1197"/><pair kern="-69" kpx2="1196"/><pair kern="-49" kpx2="1268"/><pair kern="-60" kpx2="1200"/><pair kern="-20" kpx2="1269"/><pair kern="-49" kpx2="1206"/><pair kern="-20" kpx2="1207"/><pair kern="-49" kpx2="1204"/><pair kern="-20" kpx2="1205"/><pair kern="-40" kpx2="1142"/><pair kern="-49" kpx2="1208"/><pair kern="-20" kpx2="1209"/><pair kern="-40" kpx2="1140"/><pair kern="-20" kpx2="1274"/><pair kern="-49" kpx2="1214"/><pair kern="-49" kpx2="1212"/><pair kern="-49" kpx2="1136"/></kerning><kerning kpx1="1233"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="1234"><pair kern="-49" kpx2="1035"/><pair kern="-20" kpx2="1098"/><pair kern="-20" kpx2="1228"/><pair kern="-49" kpx2="1026"/><pair kern="-20" kpx2="1095"/><pair kern="-20" kpx2="1164"/><pair kern="-49" kpx2="1227"/><pair kern="-20" kpx2="1090"/><pair kern="-20" kpx2="1170"/><pair kern="-49" kpx2="1294"/><pair kern="-20" kpx2="1295"/><pair kern="-69" kpx2="8217"/><pair kern="-69" kpx2="1286"/><pair kern="-20" kpx2="1240"/><pair kern="-20" kpx2="1287"/><pair kern="-69" kpx2="1284"/><pair kern="-20" kpx2="1242"/><pair kern="-69" kpx2="8221"/><pair kern="-20" kpx2="1182"/><pair kern="-20" kpx2="1285"/><pair kern="-49" kpx2="1066"/><pair kern="-69" kpx2="34"/><pair kern="-20" kpx2="1185"/><pair kern="-49" kpx2="1184"/><pair kern="-69" kpx2="39"/><pair kern="-69" kpx2="1058"/><pair kern="-20" kpx2="1122"/><pair kern="-60" kpx2="1198"/><pair kern="-49" kpx2="1063"/><pair kern="-20" kpx2="1060"/><pair kern="-20" kpx2="1197"/><pair kern="-69" kpx2="1196"/><pair kern="-49" kpx2="1268"/><pair kern="-60" kpx2="1200"/><pair kern="-20" kpx2="1269"/><pair kern="-49" kpx2="1206"/><pair kern="-20" kpx2="1207"/><pair kern="-49" kpx2="1204"/><pair kern="-20" kpx2="1205"/><pair kern="-40" kpx2="1142"/><pair kern="-49" kpx2="1208"/><pair kern="-20" kpx2="1209"/><pair kern="-40" kpx2="1140"/><pair kern="-20" kpx2="1274"/><pair kern="-49" kpx2="1214"/><pair kern="-49" kpx2="1212"/><pair kern="-49" kpx2="1136"/></kerning><kerning kpx1="1235"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="1244"><pair kern="-20" kpx2="1152"/><pair kern="-20" kpx2="1228"/><pair kern="-9" kpx2="1296"/><pair kern="-20" kpx2="1095"/><pair kern="-20" kpx2="1028"/><pair kern="-20" kpx2="1227"/><pair kern="-20" kpx2="1292"/><pair kern="-20" kpx2="1054"/><pair kern="-20" kpx2="1282"/><pair kern="-20" kpx2="1280"/><pair kern="-20" kpx2="1287"/><pair kern="-20" kpx2="1285"/><pair kern="-20" kpx2="1254"/><pair kern="-20" kpx2="1194"/><pair kern="-20" kpx2="1057"/><pair kern="-20" kpx2="1192"/><pair kern="-20" kpx2="1258"/><pair kern="-20" kpx2="1063"/><pair kern="-20" kpx2="1120"/><pair kern="-20" kpx2="1060"/><pair kern="-20" kpx2="1256"/><pair kern="-20" kpx2="1150"/><pair kern="-20" kpx2="1268"/><pair kern="-20" kpx2="1269"/><pair kern="-20" kpx2="1148"/><pair kern="-20" kpx2="1206"/><pair kern="-20" kpx2="1146"/><pair kern="-20" kpx2="1207"/><pair kern="-20" kpx2="1144"/><pair kern="-20" kpx2="1208"/><pair kern="-20" kpx2="1209"/><pair kern="-49" kpx2="1214"/><pair kern="-20" kpx2="1138"/><pair kern="-49" kpx2="1212"/><pair kern="-20" kpx2="1136"/></kerning><kerning kpx1="1245"><pair kern="-20" kpx2="1153"/><pair kern="-20" kpx2="1092"/><pair kern="-20" kpx2="1228"/><pair kern="-20" kpx2="1297"/><pair kern="-20" kpx2="1095"/><pair kern="-20" kpx2="1089"/><pair kern="-20" kpx2="1239"/><pair kern="-20" kpx2="1293"/><pair kern="-20" kpx2="1283"/><pair kern="-20" kpx2="1108"/><pair kern="-20" kpx2="1281"/><pair kern="-20" kpx2="1105"/><pair kern="-20" kpx2="1104"/><pair kern="-20" kpx2="1255"/><pair kern="-20" kpx2="1195"/><pair kern="-20" kpx2="1193"/><pair kern="-20" kpx2="1259"/><pair kern="-20" kpx2="1257"/><pair kern="-20" kpx2="1149"/><pair kern="-20" kpx2="1269"/><pair kern="-20" kpx2="1147"/><pair kern="-20" kpx2="1086"/><pair kern="-20" kpx2="1207"/><pair kern="-20" kpx2="1145"/><pair kern="-20" kpx2="1209"/><pair kern="-20" kpx2="1139"/><pair kern="-20" kpx2="1215"/><pair kern="-20" kpx2="1077"/><pair kern="-20" kpx2="1213"/></kerning><kerning kpx1="1246"><pair kern="-9" kpx2="1200"/><pair kern="-9" kpx2="1142"/><pair kern="-40" kpx2="8218"/><pair kern="-9" kpx2="1140"/><pair kern="-20" kpx2="1286"/><pair kern="-40" kpx2="46"/><pair kern="-9" kpx2="1198"/><pair kern="-40" kpx2="8222"/><pair kern="-20" kpx2="1284"/><pair kern="-40" kpx2="44"/></kerning><kerning kpx1="1247"><pair kern="20" kpx2="1103"/></kerning><kerning kpx1="1240"><pair kern="-20" kpx2="1221"/><pair kern="-9" kpx2="1222"/><pair kern="-20" kpx2="1217"/><pair kern="-20" kpx2="1227"/><pair kern="-20" kpx2="1236"/><pair kern="-9" kpx2="1113"/><pair kern="-20" kpx2="1232"/><pair kern="-20" kpx2="1234"/><pair kern="-20" kpx2="1244"/><pair kern="-9" kpx2="1246"/><pair kern="-9" kpx2="1134"/><pair kern="-20" kpx2="1126"/><pair kern="-20" kpx2="1262"/><pair kern="-9" kpx2="1127"/><pair kern="-9" kpx2="1260"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="44"/><pair kern="-20" kpx2="1268"/><pair kern="-20" kpx2="1266"/><pair kern="-20" kpx2="1264"/><pair kern="-20" kpx2="1278"/><pair kern="-9" kpx2="1142"/><pair kern="-20" kpx2="1276"/><pair kern="-9" kpx2="1140"/><pair kern="-20" kpx2="1136"/><pair kern="-20" kpx2="1033"/><pair kern="-9" kpx2="1035"/><pair kern="-20" kpx2="1038"/><pair kern="-9" kpx2="1299"/><pair kern="-20" kpx2="1298"/><pair kern="-9" kpx2="1026"/><pair kern="-20" kpx2="1288"/><pair kern="-20" kpx2="1051"/><pair kern="-9" kpx2="1289"/><pair kern="-9" kpx2="1294"/><pair kern="-20" kpx2="1174"/><pair kern="-9" kpx2="1176"/><pair kern="-40" kpx2="8218"/><pair kern="-20" kpx2="1040"/><pair kern="-20" kpx2="1286"/><pair kern="-40" kpx2="8222"/><pair kern="-20" kpx2="1044"/><pair kern="-20" kpx2="1284"/><pair kern="-9" kpx2="1047"/><pair kern="-20" kpx2="1046"/><pair kern="-9" kpx2="1066"/><pair kern="-9" kpx2="1184"/><pair kern="-9" kpx2="1069"/><pair kern="-29" kpx2="1058"/><pair kern="-20" kpx2="1059"/><pair kern="-20" kpx2="1063"/><pair kern="-9" kpx2="1198"/><pair kern="-20" kpx2="1061"/><pair kern="-29" kpx2="1196"/><pair kern="-9" kpx2="1083"/><pair kern="-20" kpx2="1202"/><pair kern="-9" kpx2="1200"/><pair kern="-20" kpx2="1206"/><pair kern="-9" kpx2="1204"/><pair kern="-20" kpx2="1208"/><pair kern="-9" kpx2="1076"/></kerning><kerning kpx1="1241"><pair kern="-9" kpx2="1098"/><pair kern="-20" kpx2="1218"/><pair kern="-20" kpx2="1093"/><pair kern="-9" kpx2="1228"/><pair kern="-9" kpx2="1095"/><pair kern="-9" kpx2="1090"/><pair kern="-9" kpx2="1091"/><pair kern="-9" kpx2="1118"/><pair kern="-9" kpx2="1295"/><pair kern="-20" kpx2="1175"/><pair kern="-20" kpx2="1245"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="1287"/><pair kern="-9" kpx2="8221"/><pair kern="-9" kpx2="1285"/><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="1185"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="1263"/><pair kern="-9" kpx2="1197"/><pair kern="-20" kpx2="1203"/><pair kern="-9" kpx2="1269"/><pair kern="-9" kpx2="1207"/><pair kern="-9" kpx2="1267"/><pair kern="-9" kpx2="1205"/><pair kern="-9" kpx2="1265"/><pair kern="-20" kpx2="1279"/><pair kern="-20" kpx2="1277"/><pair kern="-9" kpx2="1209"/><pair kern="-20" kpx2="1078"/></kerning><kerning kpx1="1242"><pair kern="-20" kpx2="1221"/><pair kern="-9" kpx2="1222"/><pair kern="-20" kpx2="1217"/><pair kern="-20" kpx2="1227"/><pair kern="-20" kpx2="1236"/><pair kern="-9" kpx2="1113"/><pair kern="-20" kpx2="1232"/><pair kern="-20" kpx2="1234"/><pair kern="-20" kpx2="1244"/><pair kern="-9" kpx2="1246"/><pair kern="-9" kpx2="1134"/><pair kern="-20" kpx2="1126"/><pair kern="-20" kpx2="1262"/><pair kern="-9" kpx2="1127"/><pair kern="-9" kpx2="1260"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="44"/><pair kern="-20" kpx2="1268"/><pair kern="-20" kpx2="1266"/><pair kern="-20" kpx2="1264"/><pair kern="-20" kpx2="1278"/><pair kern="-9" kpx2="1142"/><pair kern="-20" kpx2="1276"/><pair kern="-9" kpx2="1140"/><pair kern="-20" kpx2="1136"/><pair kern="-20" kpx2="1033"/><pair kern="-9" kpx2="1035"/><pair kern="-20" kpx2="1038"/><pair kern="-9" kpx2="1299"/><pair kern="-20" kpx2="1298"/><pair kern="-9" kpx2="1026"/><pair kern="-20" kpx2="1288"/><pair kern="-20" kpx2="1051"/><pair kern="-9" kpx2="1289"/><pair kern="-9" kpx2="1294"/><pair kern="-20" kpx2="1174"/><pair kern="-9" kpx2="1176"/><pair kern="-40" kpx2="8218"/><pair kern="-20" kpx2="1040"/><pair kern="-20" kpx2="1286"/><pair kern="-40" kpx2="8222"/><pair kern="-20" kpx2="1044"/><pair kern="-20" kpx2="1284"/><pair kern="-9" kpx2="1047"/><pair kern="-20" kpx2="1046"/><pair kern="-9" kpx2="1066"/><pair kern="-9" kpx2="1184"/><pair kern="-9" kpx2="1069"/><pair kern="-29" kpx2="1058"/><pair kern="-20" kpx2="1059"/><pair kern="-20" kpx2="1063"/><pair kern="-9" kpx2="1198"/><pair kern="-20" kpx2="1061"/><pair kern="-29" kpx2="1196"/><pair kern="-9" kpx2="1083"/><pair kern="-20" kpx2="1202"/><pair kern="-9" kpx2="1200"/><pair kern="-20" kpx2="1206"/><pair kern="-9" kpx2="1204"/><pair kern="-20" kpx2="1208"/><pair kern="-9" kpx2="1076"/></kerning><kerning kpx1="1243"><pair kern="-9" kpx2="1098"/><pair kern="-20" kpx2="1218"/><pair kern="-20" kpx2="1093"/><pair kern="-9" kpx2="1228"/><pair kern="-9" kpx2="1095"/><pair kern="-9" kpx2="1090"/><pair kern="-9" kpx2="1091"/><pair kern="-9" kpx2="1118"/><pair kern="-9" kpx2="1295"/><pair kern="-20" kpx2="1175"/><pair kern="-20" kpx2="1245"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="1287"/><pair kern="-9" kpx2="8221"/><pair kern="-9" kpx2="1285"/><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="1185"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="1263"/><pair kern="-9" kpx2="1197"/><pair kern="-20" kpx2="1203"/><pair kern="-9" kpx2="1269"/><pair kern="-9" kpx2="1207"/><pair kern="-9" kpx2="1267"/><pair kern="-9" kpx2="1205"/><pair kern="-9" kpx2="1265"/><pair kern="-20" kpx2="1279"/><pair kern="-20" kpx2="1277"/><pair kern="-9" kpx2="1209"/><pair kern="-20" kpx2="1078"/></kerning><kerning kpx1="1255"><pair kern="-9" kpx2="1098"/><pair kern="-20" kpx2="1218"/><pair kern="-20" kpx2="1093"/><pair kern="-9" kpx2="1228"/><pair kern="-9" kpx2="1095"/><pair kern="-9" kpx2="1090"/><pair kern="-9" kpx2="1091"/><pair kern="-9" kpx2="1118"/><pair kern="-9" kpx2="1295"/><pair kern="-20" kpx2="1175"/><pair kern="-20" kpx2="1245"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="1287"/><pair kern="-9" kpx2="8221"/><pair kern="-9" kpx2="1285"/><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="1185"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="1263"/><pair kern="-9" kpx2="1197"/><pair kern="-20" kpx2="1203"/><pair kern="-9" kpx2="1269"/><pair kern="-9" kpx2="1207"/><pair kern="-9" kpx2="1267"/><pair kern="-9" kpx2="1205"/><pair kern="-9" kpx2="1265"/><pair kern="-20" kpx2="1279"/><pair kern="-20" kpx2="1277"/><pair kern="-9" kpx2="1209"/><pair kern="-20" kpx2="1078"/></kerning><kerning kpx1="1254"><pair kern="-20" kpx2="1221"/><pair kern="-9" kpx2="1222"/><pair kern="-20" kpx2="1217"/><pair kern="-20" kpx2="1227"/><pair kern="-20" kpx2="1236"/><pair kern="-9" kpx2="1113"/><pair kern="-20" kpx2="1232"/><pair kern="-20" kpx2="1234"/><pair kern="-20" kpx2="1244"/><pair kern="-9" kpx2="1246"/><pair kern="-9" kpx2="1134"/><pair kern="-20" kpx2="1126"/><pair kern="-20" kpx2="1262"/><pair kern="-9" kpx2="1127"/><pair kern="-9" kpx2="1260"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="44"/><pair kern="-20" kpx2="1268"/><pair kern="-20" kpx2="1266"/><pair kern="-20" kpx2="1264"/><pair kern="-20" kpx2="1278"/><pair kern="-9" kpx2="1142"/><pair kern="-20" kpx2="1276"/><pair kern="-9" kpx2="1140"/><pair kern="-20" kpx2="1136"/><pair kern="-20" kpx2="1033"/><pair kern="-9" kpx2="1035"/><pair kern="-20" kpx2="1038"/><pair kern="-9" kpx2="1299"/><pair kern="-20" kpx2="1298"/><pair kern="-9" kpx2="1026"/><pair kern="-20" kpx2="1288"/><pair kern="-20" kpx2="1051"/><pair kern="-9" kpx2="1289"/><pair kern="-9" kpx2="1294"/><pair kern="-20" kpx2="1174"/><pair kern="-9" kpx2="1176"/><pair kern="-40" kpx2="8218"/><pair kern="-20" kpx2="1040"/><pair kern="-20" kpx2="1286"/><pair kern="-40" kpx2="8222"/><pair kern="-20" kpx2="1044"/><pair kern="-20" kpx2="1284"/><pair kern="-9" kpx2="1047"/><pair kern="-20" kpx2="1046"/><pair kern="-9" kpx2="1066"/><pair kern="-9" kpx2="1184"/><pair kern="-9" kpx2="1069"/><pair kern="-29" kpx2="1058"/><pair kern="-20" kpx2="1059"/><pair kern="-20" kpx2="1063"/><pair kern="-9" kpx2="1198"/><pair kern="-20" kpx2="1061"/><pair kern="-29" kpx2="1196"/><pair kern="-9" kpx2="1083"/><pair kern="-20" kpx2="1202"/><pair kern="-9" kpx2="1200"/><pair kern="-20" kpx2="1206"/><pair kern="-9" kpx2="1204"/><pair kern="-20" kpx2="1208"/><pair kern="-9" kpx2="1076"/></kerning><kerning kpx1="1248"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-20" kpx2="1287"/><pair kern="-9" kpx2="8221"/><pair kern="-20" kpx2="1285"/></kerning><kerning kpx1="1263"><pair kern="-20" kpx2="1083"/><pair kern="-20" kpx2="1289"/><pair kern="-20" kpx2="1222"/><pair kern="-20" kpx2="1113"/><pair kern="-20" kpx2="1299"/><pair kern="-20" kpx2="1127"/><pair kern="-40" kpx2="8218"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="8222"/><pair kern="-40" kpx2="44"/><pair kern="-20" kpx2="1076"/></kerning><kerning kpx1="1262"><pair kern="-49" kpx2="1221"/><pair kern="-40" kpx2="1222"/><pair kern="-20" kpx2="1092"/><pair kern="-20" kpx2="1228"/><pair kern="-20" kpx2="1095"/><pair kern="-20" kpx2="1089"/><pair kern="-69" kpx2="1236"/><pair kern="-20" kpx2="1239"/><pair kern="-69" kpx2="1232"/><pair kern="-40" kpx2="1113"/><pair kern="-69" kpx2="1234"/><pair kern="49" kpx2="1115"/><pair kern="-9" kpx2="1109"/><pair kern="-20" kpx2="1108"/><pair kern="-20" kpx2="1105"/><pair kern="-20" kpx2="1104"/><pair kern="49" kpx2="1106"/><pair kern="-20" kpx2="1255"/><pair kern="-9" kpx2="1254"/><pair kern="-69" kpx2="1126"/><pair kern="-40" kpx2="1127"/><pair kern="-20" kpx2="1259"/><pair kern="-60" kpx2="46"/><pair kern="-9" kpx2="1258"/><pair kern="-20" kpx2="1257"/><pair kern="-60" kpx2="44"/><pair kern="-9" kpx2="1120"/><pair kern="-9" kpx2="1256"/><pair kern="-9" kpx2="1150"/><pair kern="-20" kpx2="1149"/><pair kern="-20" kpx2="1269"/><pair kern="-9" kpx2="1148"/><pair kern="-20" kpx2="1147"/><pair kern="-9" kpx2="1146"/><pair kern="-20" kpx2="1145"/><pair kern="-9" kpx2="1144"/><pair kern="-20" kpx2="1139"/><pair kern="-9" kpx2="1138"/><pair kern="-20" kpx2="1153"/><pair kern="-49" kpx2="1033"/><pair kern="-9" kpx2="1152"/><pair kern="-40" kpx2="1299"/><pair kern="-49" kpx2="1298"/><pair kern="-20" kpx2="1297"/><pair kern="-9" kpx2="1028"/><pair kern="49" kpx2="1165"/><pair kern="-49" kpx2="1288"/><pair kern="-49" kpx2="1051"/><pair kern="-40" kpx2="1289"/><pair kern="-9" kpx2="1292"/><pair kern="-20" kpx2="1293"/><pair kern="-9" kpx2="1054"/><pair kern="-69" kpx2="1282"/><pair kern="-20" kpx2="1283"/><pair kern="-69" kpx2="1040"/><pair kern="-60" kpx2="8218"/><pair kern="-69" kpx2="1280"/><pair kern="-20" kpx2="1281"/><pair kern="-49" kpx2="1044"/><pair kern="-60" kpx2="8222"/><pair kern="49" kpx2="1183"/><pair kern="-9" kpx2="1071"/><pair kern="-20" kpx2="1195"/><pair kern="-9" kpx2="1194"/><pair kern="-20" kpx2="1193"/><pair kern="-9" kpx2="1057"/><pair kern="-9" kpx2="1192"/><pair kern="-29" kpx2="1060"/><pair kern="-40" kpx2="1083"/><pair kern="-20" kpx2="1086"/><pair kern="-20" kpx2="1207"/><pair kern="-20" kpx2="1209"/><pair kern="-20" kpx2="1214"/><pair kern="-29" kpx2="1215"/><pair kern="-20" kpx2="1212"/><pair kern="-20" kpx2="1077"/><pair kern="-29" kpx2="1213"/><pair kern="-40" kpx2="1076"/></kerning><kerning kpx1="1261"><pair kern="-9" kpx2="1098"/><pair kern="-20" kpx2="1218"/><pair kern="-20" kpx2="1093"/><pair kern="-9" kpx2="1228"/><pair kern="-9" kpx2="1095"/><pair kern="-9" kpx2="1090"/><pair kern="-9" kpx2="1091"/><pair kern="-9" kpx2="1118"/><pair kern="-9" kpx2="1295"/><pair kern="-20" kpx2="1175"/><pair kern="-20" kpx2="1245"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="1287"/><pair kern="-9" kpx2="8221"/><pair kern="-9" kpx2="1285"/><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="1185"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="1263"/><pair kern="-9" kpx2="1197"/><pair kern="-20" kpx2="1203"/><pair kern="-9" kpx2="1269"/><pair kern="-9" kpx2="1207"/><pair kern="-9" kpx2="1267"/><pair kern="-9" kpx2="1205"/><pair kern="-9" kpx2="1265"/><pair kern="-20" kpx2="1279"/><pair kern="-20" kpx2="1277"/><pair kern="-9" kpx2="1209"/><pair kern="-20" kpx2="1078"/></kerning><kerning kpx1="1260"><pair kern="-20" kpx2="1221"/><pair kern="-9" kpx2="1222"/><pair kern="-20" kpx2="1217"/><pair kern="-20" kpx2="1227"/><pair kern="-20" kpx2="1236"/><pair kern="-9" kpx2="1113"/><pair kern="-20" kpx2="1232"/><pair kern="-20" kpx2="1234"/><pair kern="-20" kpx2="1244"/><pair kern="-9" kpx2="1246"/><pair kern="-9" kpx2="1134"/><pair kern="-20" kpx2="1126"/><pair kern="-20" kpx2="1262"/><pair kern="-9" kpx2="1127"/><pair kern="-9" kpx2="1260"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="44"/><pair kern="-20" kpx2="1268"/><pair kern="-20" kpx2="1266"/><pair kern="-20" kpx2="1264"/><pair kern="-20" kpx2="1278"/><pair kern="-9" kpx2="1142"/><pair kern="-20" kpx2="1276"/><pair kern="-9" kpx2="1140"/><pair kern="-20" kpx2="1136"/><pair kern="-20" kpx2="1033"/><pair kern="-9" kpx2="1035"/><pair kern="-20" kpx2="1038"/><pair kern="-9" kpx2="1299"/><pair kern="-20" kpx2="1298"/><pair kern="-9" kpx2="1026"/><pair kern="-20" kpx2="1288"/><pair kern="-20" kpx2="1051"/><pair kern="-9" kpx2="1289"/><pair kern="-9" kpx2="1294"/><pair kern="-20" kpx2="1174"/><pair kern="-9" kpx2="1176"/><pair kern="-40" kpx2="8218"/><pair kern="-20" kpx2="1040"/><pair kern="-20" kpx2="1286"/><pair kern="-40" kpx2="8222"/><pair kern="-20" kpx2="1044"/><pair kern="-20" kpx2="1284"/><pair kern="-9" kpx2="1047"/><pair kern="-20" kpx2="1046"/><pair kern="-9" kpx2="1066"/><pair kern="-9" kpx2="1184"/><pair kern="-9" kpx2="1069"/><pair kern="-29" kpx2="1058"/><pair kern="-20" kpx2="1059"/><pair kern="-20" kpx2="1063"/><pair kern="-9" kpx2="1198"/><pair kern="-20" kpx2="1061"/><pair kern="-29" kpx2="1196"/><pair kern="-9" kpx2="1083"/><pair kern="-20" kpx2="1202"/><pair kern="-9" kpx2="1200"/><pair kern="-20" kpx2="1206"/><pair kern="-9" kpx2="1204"/><pair kern="-20" kpx2="1208"/><pair kern="-9" kpx2="1076"/></kerning><kerning kpx1="1259"><pair kern="-9" kpx2="1098"/><pair kern="-20" kpx2="1218"/><pair kern="-20" kpx2="1093"/><pair kern="-9" kpx2="1228"/><pair kern="-9" kpx2="1095"/><pair kern="-9" kpx2="1090"/><pair kern="-9" kpx2="1091"/><pair kern="-9" kpx2="1118"/><pair kern="-9" kpx2="1295"/><pair kern="-20" kpx2="1175"/><pair kern="-20" kpx2="1245"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="1287"/><pair kern="-9" kpx2="8221"/><pair kern="-9" kpx2="1285"/><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="1185"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="1263"/><pair kern="-9" kpx2="1197"/><pair kern="-20" kpx2="1203"/><pair kern="-9" kpx2="1269"/><pair kern="-9" kpx2="1207"/><pair kern="-9" kpx2="1267"/><pair kern="-9" kpx2="1205"/><pair kern="-9" kpx2="1265"/><pair kern="-20" kpx2="1279"/><pair kern="-20" kpx2="1277"/><pair kern="-9" kpx2="1209"/><pair kern="-20" kpx2="1078"/></kerning><kerning kpx1="1258"><pair kern="-20" kpx2="1221"/><pair kern="-9" kpx2="1222"/><pair kern="-20" kpx2="1217"/><pair kern="-20" kpx2="1227"/><pair kern="-20" kpx2="1236"/><pair kern="-9" kpx2="1113"/><pair kern="-20" kpx2="1232"/><pair kern="-20" kpx2="1234"/><pair kern="-20" kpx2="1244"/><pair kern="-9" kpx2="1246"/><pair kern="-9" kpx2="1134"/><pair kern="-20" kpx2="1126"/><pair kern="-20" kpx2="1262"/><pair kern="-9" kpx2="1127"/><pair kern="-9" kpx2="1260"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="44"/><pair kern="-20" kpx2="1268"/><pair kern="-20" kpx2="1266"/><pair kern="-20" kpx2="1264"/><pair kern="-20" kpx2="1278"/><pair kern="-9" kpx2="1142"/><pair kern="-20" kpx2="1276"/><pair kern="-9" kpx2="1140"/><pair kern="-20" kpx2="1136"/><pair kern="-20" kpx2="1033"/><pair kern="-9" kpx2="1035"/><pair kern="-20" kpx2="1038"/><pair kern="-9" kpx2="1299"/><pair kern="-20" kpx2="1298"/><pair kern="-9" kpx2="1026"/><pair kern="-20" kpx2="1288"/><pair kern="-20" kpx2="1051"/><pair kern="-9" kpx2="1289"/><pair kern="-9" kpx2="1294"/><pair kern="-20" kpx2="1174"/><pair kern="-9" kpx2="1176"/><pair kern="-40" kpx2="8218"/><pair kern="-20" kpx2="1040"/><pair kern="-20" kpx2="1286"/><pair kern="-40" kpx2="8222"/><pair kern="-20" kpx2="1044"/><pair kern="-20" kpx2="1284"/><pair kern="-9" kpx2="1047"/><pair kern="-20" kpx2="1046"/><pair kern="-9" kpx2="1066"/><pair kern="-9" kpx2="1184"/><pair kern="-9" kpx2="1069"/><pair kern="-29" kpx2="1058"/><pair kern="-20" kpx2="1059"/><pair kern="-20" kpx2="1063"/><pair kern="-9" kpx2="1198"/><pair kern="-20" kpx2="1061"/><pair kern="-29" kpx2="1196"/><pair kern="-9" kpx2="1083"/><pair kern="-20" kpx2="1202"/><pair kern="-9" kpx2="1200"/><pair kern="-20" kpx2="1206"/><pair kern="-9" kpx2="1204"/><pair kern="-20" kpx2="1208"/><pair kern="-9" kpx2="1076"/></kerning><kerning kpx1="1257"><pair kern="-9" kpx2="1098"/><pair kern="-20" kpx2="1218"/><pair kern="-20" kpx2="1093"/><pair kern="-9" kpx2="1228"/><pair kern="-9" kpx2="1095"/><pair kern="-9" kpx2="1090"/><pair kern="-9" kpx2="1091"/><pair kern="-9" kpx2="1118"/><pair kern="-9" kpx2="1295"/><pair kern="-20" kpx2="1175"/><pair kern="-20" kpx2="1245"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="1287"/><pair kern="-9" kpx2="8221"/><pair kern="-9" kpx2="1285"/><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="1185"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="1263"/><pair kern="-9" kpx2="1197"/><pair kern="-20" kpx2="1203"/><pair kern="-9" kpx2="1269"/><pair kern="-9" kpx2="1207"/><pair kern="-9" kpx2="1267"/><pair kern="-9" kpx2="1205"/><pair kern="-9" kpx2="1265"/><pair kern="-20" kpx2="1279"/><pair kern="-20" kpx2="1277"/><pair kern="-9" kpx2="1209"/><pair kern="-20" kpx2="1078"/></kerning><kerning kpx1="1256"><pair kern="-20" kpx2="1221"/><pair kern="-9" kpx2="1222"/><pair kern="-20" kpx2="1217"/><pair kern="-20" kpx2="1227"/><pair kern="-20" kpx2="1236"/><pair kern="-9" kpx2="1113"/><pair kern="-20" kpx2="1232"/><pair kern="-20" kpx2="1234"/><pair kern="-20" kpx2="1244"/><pair kern="-9" kpx2="1246"/><pair kern="-9" kpx2="1134"/><pair kern="-20" kpx2="1126"/><pair kern="-20" kpx2="1262"/><pair kern="-9" kpx2="1127"/><pair kern="-9" kpx2="1260"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="44"/><pair kern="-20" kpx2="1268"/><pair kern="-20" kpx2="1266"/><pair kern="-20" kpx2="1264"/><pair kern="-20" kpx2="1278"/><pair kern="-9" kpx2="1142"/><pair kern="-20" kpx2="1276"/><pair kern="-9" kpx2="1140"/><pair kern="-20" kpx2="1136"/><pair kern="-20" kpx2="1033"/><pair kern="-9" kpx2="1035"/><pair kern="-20" kpx2="1038"/><pair kern="-9" kpx2="1299"/><pair kern="-20" kpx2="1298"/><pair kern="-9" kpx2="1026"/><pair kern="-20" kpx2="1288"/><pair kern="-20" kpx2="1051"/><pair kern="-9" kpx2="1289"/><pair kern="-9" kpx2="1294"/><pair kern="-20" kpx2="1174"/><pair kern="-9" kpx2="1176"/><pair kern="-40" kpx2="8218"/><pair kern="-20" kpx2="1040"/><pair kern="-20" kpx2="1286"/><pair kern="-40" kpx2="8222"/><pair kern="-20" kpx2="1044"/><pair kern="-20" kpx2="1284"/><pair kern="-9" kpx2="1047"/><pair kern="-20" kpx2="1046"/><pair kern="-9" kpx2="1066"/><pair kern="-9" kpx2="1184"/><pair kern="-9" kpx2="1069"/><pair kern="-29" kpx2="1058"/><pair kern="-20" kpx2="1059"/><pair kern="-20" kpx2="1063"/><pair kern="-9" kpx2="1198"/><pair kern="-20" kpx2="1061"/><pair kern="-29" kpx2="1196"/><pair kern="-9" kpx2="1083"/><pair kern="-20" kpx2="1202"/><pair kern="-9" kpx2="1200"/><pair kern="-20" kpx2="1206"/><pair kern="-9" kpx2="1204"/><pair kern="-20" kpx2="1208"/><pair kern="-9" kpx2="1076"/></kerning><kerning kpx1="1270"><pair kern="-49" kpx2="1100"/><pair kern="-20" kpx2="1101"/><pair kern="-49" kpx2="1102"/><pair kern="-29" kpx2="1103"/><pair kern="-49" kpx2="1096"/><pair kern="-49" kpx2="1097"/><pair kern="-40" kpx2="1098"/><pair kern="-49" kpx2="1099"/><pair kern="-69" kpx2="1092"/><pair kern="-20" kpx2="1093"/><pair kern="-49" kpx2="1094"/><pair kern="-49" kpx2="1095"/><pair kern="-49" kpx2="1088"/><pair kern="-69" kpx2="1089"/><pair kern="-40" kpx2="1090"/><pair kern="-40" kpx2="1091"/><pair kern="-49" kpx2="1117"/><pair kern="-49" kpx2="1116"/><pair kern="-49" kpx2="1119"/><pair kern="-40" kpx2="1118"/><pair kern="-60" kpx2="1113"/><pair kern="-49" kpx2="1114"/><pair kern="-60" kpx2="1109"/><pair kern="-69" kpx2="1108"/><pair kern="-69" kpx2="1105"/><pair kern="-69" kpx2="1104"/><pair kern="-49" kpx2="1107"/><pair kern="-49" kpx2="1133"/><pair kern="-49" kpx2="1131"/><pair kern="-49" kpx2="1129"/><pair kern="-69" kpx2="1126"/><pair kern="-60" kpx2="1127"/><pair kern="-49" kpx2="1125"/><pair kern="-60" kpx2="46"/><pair kern="-60" kpx2="44"/><pair kern="-20" kpx2="1120"/><pair kern="-40" kpx2="45"/><pair kern="-20" kpx2="1121"/><pair kern="-20" kpx2="1151"/><pair kern="-20" kpx2="1150"/><pair kern="-69" kpx2="1149"/><pair kern="-20" kpx2="1148"/><pair kern="-69" kpx2="1147"/><pair kern="-20" kpx2="1146"/><pair kern="-69" kpx2="1145"/><pair kern="-20" kpx2="1144"/><pair kern="-20" kpx2="1143"/><pair kern="-20" kpx2="1141"/><pair kern="-69" kpx2="1139"/><pair kern="-20" kpx2="1138"/><pair kern="-49" kpx2="1137"/><pair kern="-49" kpx2="1033"/><pair kern="-60" kpx2="1299"/><pair kern="-49" kpx2="1298"/><pair kern="-69" kpx2="1297"/><pair kern="-20" kpx2="1028"/><pair kern="-40" kpx2="8211"/><pair kern="-49" kpx2="1291"/><pair kern="-49" kpx2="1288"/><pair kern="-49" kpx2="1051"/><pair kern="-60" kpx2="1289"/><pair kern="-40" kpx2="1295"/><pair kern="-20" kpx2="1292"/><pair kern="-40" kpx2="8213"/><pair kern="-69" kpx2="1293"/><pair kern="-20" kpx2="1054"/><pair kern="-40" kpx2="8212"/><pair kern="-69" kpx2="1282"/><pair kern="-69" kpx2="1283"/><pair kern="-69" kpx2="1040"/><pair kern="-60" kpx2="8218"/><pair kern="-69" kpx2="1280"/><pair kern="-69" kpx2="1281"/><pair kern="-49" kpx2="1287"/><pair kern="-49" kpx2="1044"/><pair kern="-60" kpx2="8222"/><pair kern="-49" kpx2="1285"/><pair kern="20" kpx2="1058"/><pair kern="-20" kpx2="1057"/><pair kern="-40" kpx2="1060"/><pair kern="-60" kpx2="1083"/><pair kern="-49" kpx2="1082"/><pair kern="-49" kpx2="1081"/><pair kern="-49" kpx2="1080"/><pair kern="-49" kpx2="1087"/><pair kern="-69" kpx2="1086"/><pair kern="-49" kpx2="1085"/><pair kern="-49" kpx2="1084"/><pair kern="-49" kpx2="1075"/><pair kern="-49" kpx2="1074"/><pair kern="-20" kpx2="1079"/><pair kern="-20" kpx2="1078"/><pair kern="-69" kpx2="1077"/><pair kern="-60" kpx2="1076"/><pair kern="-49" kpx2="1221"/><pair kern="-49" kpx2="1220"/><pair kern="-60" kpx2="1222"/><pair kern="-20" kpx2="1218"/><pair kern="-49" kpx2="1228"/><pair kern="-49" kpx2="1230"/><pair kern="-49" kpx2="1224"/><pair kern="-49" kpx2="1226"/><pair kern="-69" kpx2="1236"/><pair kern="-69" kpx2="1239"/><pair kern="-69" kpx2="1232"/><pair kern="-69" kpx2="1234"/><pair kern="-20" kpx2="1245"/><pair kern="-20" kpx2="1247"/><pair kern="-69" kpx2="1255"/><pair kern="-20" kpx2="1254"/><pair kern="-49" kpx2="1253"/><pair kern="-49" kpx2="1251"/><pair kern="-29" kpx2="1249"/><pair kern="-40" kpx2="1263"/><pair kern="-20" kpx2="1261"/><pair kern="-69" kpx2="1259"/><pair kern="-20" kpx2="1258"/><pair kern="-69" kpx2="1257"/><pair kern="-20" kpx2="1256"/><pair kern="-49" kpx2="1271"/><pair kern="-49" kpx2="1269"/><pair kern="-40" kpx2="1267"/><pair kern="-40" kpx2="1265"/><pair kern="-20" kpx2="1279"/><pair kern="-20" kpx2="1277"/><pair kern="-49" kpx2="1273"/><pair kern="-69" kpx2="1153"/><pair kern="-20" kpx2="1152"/><pair kern="-49" kpx2="1163"/><pair kern="-49" kpx2="1167"/><pair kern="-49" kpx2="1169"/><pair kern="-49" kpx2="1173"/><pair kern="-20" kpx2="1175"/><pair kern="-20" kpx2="1177"/><pair kern="-49" kpx2="1179"/><pair kern="-49" kpx2="1181"/><pair kern="-49" kpx2="1187"/><pair kern="-40" kpx2="1185"/><pair kern="-49" kpx2="1191"/><pair kern="-49" kpx2="1189"/><pair kern="-69" kpx2="1195"/><pair kern="-20" kpx2="1194"/><pair kern="-69" kpx2="1193"/><pair kern="-20" kpx2="1192"/><pair kern="-40" kpx2="1199"/><pair kern="-40" kpx2="1197"/><pair kern="20" kpx2="1196"/><pair kern="-20" kpx2="1203"/><pair kern="-40" kpx2="1201"/><pair kern="-49" kpx2="1207"/><pair kern="-40" kpx2="1205"/><pair kern="-49" kpx2="1211"/><pair kern="-49" kpx2="1209"/><pair kern="-49" kpx2="1214"/><pair kern="-69" kpx2="1215"/><pair kern="-49" kpx2="1212"/><pair kern="-69" kpx2="1213"/></kerning><kerning kpx1="1271"><pair kern="-9" kpx2="1153"/><pair kern="-29" kpx2="1222"/><pair kern="-29" kpx2="1299"/><pair kern="-9" kpx2="1092"/><pair kern="-9" kpx2="1297"/><pair kern="-9" kpx2="1089"/><pair kern="-20" kpx2="8211"/><pair kern="-29" kpx2="1289"/><pair kern="-9" kpx2="1239"/><pair kern="-29" kpx2="1113"/><pair kern="-20" kpx2="8213"/><pair kern="-9" kpx2="1293"/><pair kern="-20" kpx2="8212"/><pair kern="-9" kpx2="1283"/><pair kern="-9" kpx2="1108"/><pair kern="-49" kpx2="8218"/><pair kern="-9" kpx2="1281"/><pair kern="-9" kpx2="1105"/><pair kern="-49" kpx2="8222"/><pair kern="-9" kpx2="1104"/><pair kern="-9" kpx2="1255"/><pair kern="-9" kpx2="1195"/><pair kern="-29" kpx2="1127"/><pair kern="-9" kpx2="1193"/><pair kern="-9" kpx2="1259"/><pair kern="-49" kpx2="46"/><pair kern="-9" kpx2="1257"/><pair kern="-49" kpx2="44"/><pair kern="-20" kpx2="45"/><pair kern="-29" kpx2="1083"/><pair kern="-9" kpx2="1149"/><pair kern="-9" kpx2="1147"/><pair kern="-9" kpx2="1086"/><pair kern="-9" kpx2="1145"/><pair kern="-9" kpx2="1139"/><pair kern="-9" kpx2="1077"/><pair kern="-29" kpx2="1076"/></kerning><kerning kpx1="1266"><pair kern="-49" kpx2="1221"/><pair kern="-40" kpx2="1222"/><pair kern="-20" kpx2="1092"/><pair kern="-20" kpx2="1228"/><pair kern="-20" kpx2="1095"/><pair kern="-20" kpx2="1089"/><pair kern="-69" kpx2="1236"/><pair kern="-20" kpx2="1239"/><pair kern="-69" kpx2="1232"/><pair kern="-40" kpx2="1113"/><pair kern="-69" kpx2="1234"/><pair kern="49" kpx2="1115"/><pair kern="-9" kpx2="1109"/><pair kern="-20" kpx2="1108"/><pair kern="-20" kpx2="1105"/><pair kern="-20" kpx2="1104"/><pair kern="49" kpx2="1106"/><pair kern="-20" kpx2="1255"/><pair kern="-9" kpx2="1254"/><pair kern="-69" kpx2="1126"/><pair kern="-40" kpx2="1127"/><pair kern="-20" kpx2="1259"/><pair kern="-60" kpx2="46"/><pair kern="-9" kpx2="1258"/><pair kern="-20" kpx2="1257"/><pair kern="-60" kpx2="44"/><pair kern="-9" kpx2="1120"/><pair kern="-9" kpx2="1256"/><pair kern="-9" kpx2="1150"/><pair kern="-20" kpx2="1149"/><pair kern="-20" kpx2="1269"/><pair kern="-9" kpx2="1148"/><pair kern="-20" kpx2="1147"/><pair kern="-9" kpx2="1146"/><pair kern="-20" kpx2="1145"/><pair kern="-9" kpx2="1144"/><pair kern="-20" kpx2="1139"/><pair kern="-9" kpx2="1138"/><pair kern="-20" kpx2="1153"/><pair kern="-49" kpx2="1033"/><pair kern="-9" kpx2="1152"/><pair kern="-40" kpx2="1299"/><pair kern="-49" kpx2="1298"/><pair kern="-20" kpx2="1297"/><pair kern="-9" kpx2="1028"/><pair kern="49" kpx2="1165"/><pair kern="-49" kpx2="1288"/><pair kern="-49" kpx2="1051"/><pair kern="-40" kpx2="1289"/><pair kern="-9" kpx2="1292"/><pair kern="-20" kpx2="1293"/><pair kern="-9" kpx2="1054"/><pair kern="-69" kpx2="1282"/><pair kern="-20" kpx2="1283"/><pair kern="-69" kpx2="1040"/><pair kern="-60" kpx2="8218"/><pair kern="-69" kpx2="1280"/><pair kern="-20" kpx2="1281"/><pair kern="-49" kpx2="1044"/><pair kern="-60" kpx2="8222"/><pair kern="49" kpx2="1183"/><pair kern="-9" kpx2="1071"/><pair kern="-20" kpx2="1195"/><pair kern="-9" kpx2="1194"/><pair kern="-20" kpx2="1193"/><pair kern="-9" kpx2="1057"/><pair kern="-9" kpx2="1192"/><pair kern="-29" kpx2="1060"/><pair kern="-40" kpx2="1083"/><pair kern="-20" kpx2="1086"/><pair kern="-20" kpx2="1207"/><pair kern="-20" kpx2="1209"/><pair kern="-20" kpx2="1214"/><pair kern="-29" kpx2="1215"/><pair kern="-20" kpx2="1212"/><pair kern="-20" kpx2="1077"/><pair kern="-29" kpx2="1213"/><pair kern="-40" kpx2="1076"/></kerning><kerning kpx1="1267"><pair kern="-20" kpx2="1083"/><pair kern="-20" kpx2="1289"/><pair kern="-20" kpx2="1222"/><pair kern="-20" kpx2="1113"/><pair kern="-20" kpx2="1299"/><pair kern="-20" kpx2="1127"/><pair kern="-40" kpx2="8218"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="8222"/><pair kern="-40" kpx2="44"/><pair kern="-20" kpx2="1076"/></kerning><kerning kpx1="1264"><pair kern="-49" kpx2="1221"/><pair kern="-40" kpx2="1222"/><pair kern="-20" kpx2="1092"/><pair kern="-20" kpx2="1228"/><pair kern="-20" kpx2="1095"/><pair kern="-20" kpx2="1089"/><pair kern="-69" kpx2="1236"/><pair kern="-20" kpx2="1239"/><pair kern="-69" kpx2="1232"/><pair kern="-40" kpx2="1113"/><pair kern="-69" kpx2="1234"/><pair kern="49" kpx2="1115"/><pair kern="-9" kpx2="1109"/><pair kern="-20" kpx2="1108"/><pair kern="-20" kpx2="1105"/><pair kern="-20" kpx2="1104"/><pair kern="49" kpx2="1106"/><pair kern="-20" kpx2="1255"/><pair kern="-9" kpx2="1254"/><pair kern="-69" kpx2="1126"/><pair kern="-40" kpx2="1127"/><pair kern="-20" kpx2="1259"/><pair kern="-60" kpx2="46"/><pair kern="-9" kpx2="1258"/><pair kern="-20" kpx2="1257"/><pair kern="-60" kpx2="44"/><pair kern="-9" kpx2="1120"/><pair kern="-9" kpx2="1256"/><pair kern="-9" kpx2="1150"/><pair kern="-20" kpx2="1149"/><pair kern="-20" kpx2="1269"/><pair kern="-9" kpx2="1148"/><pair kern="-20" kpx2="1147"/><pair kern="-9" kpx2="1146"/><pair kern="-20" kpx2="1145"/><pair kern="-9" kpx2="1144"/><pair kern="-20" kpx2="1139"/><pair kern="-9" kpx2="1138"/><pair kern="-20" kpx2="1153"/><pair kern="-49" kpx2="1033"/><pair kern="-9" kpx2="1152"/><pair kern="-40" kpx2="1299"/><pair kern="-49" kpx2="1298"/><pair kern="-20" kpx2="1297"/><pair kern="-9" kpx2="1028"/><pair kern="49" kpx2="1165"/><pair kern="-49" kpx2="1288"/><pair kern="-49" kpx2="1051"/><pair kern="-40" kpx2="1289"/><pair kern="-9" kpx2="1292"/><pair kern="-20" kpx2="1293"/><pair kern="-9" kpx2="1054"/><pair kern="-69" kpx2="1282"/><pair kern="-20" kpx2="1283"/><pair kern="-69" kpx2="1040"/><pair kern="-60" kpx2="8218"/><pair kern="-69" kpx2="1280"/><pair kern="-20" kpx2="1281"/><pair kern="-49" kpx2="1044"/><pair kern="-60" kpx2="8222"/><pair kern="49" kpx2="1183"/><pair kern="-9" kpx2="1071"/><pair kern="-20" kpx2="1195"/><pair kern="-9" kpx2="1194"/><pair kern="-20" kpx2="1193"/><pair kern="-9" kpx2="1057"/><pair kern="-9" kpx2="1192"/><pair kern="-29" kpx2="1060"/><pair kern="-40" kpx2="1083"/><pair kern="-20" kpx2="1086"/><pair kern="-20" kpx2="1207"/><pair kern="-20" kpx2="1209"/><pair kern="-20" kpx2="1214"/><pair kern="-29" kpx2="1215"/><pair kern="-20" kpx2="1212"/><pair kern="-20" kpx2="1077"/><pair kern="-29" kpx2="1213"/><pair kern="-40" kpx2="1076"/></kerning><kerning kpx1="1265"><pair kern="-20" kpx2="1083"/><pair kern="-20" kpx2="1289"/><pair kern="-20" kpx2="1222"/><pair kern="-20" kpx2="1113"/><pair kern="-20" kpx2="1299"/><pair kern="-20" kpx2="1127"/><pair kern="-40" kpx2="8218"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="8222"/><pair kern="-40" kpx2="44"/><pair kern="-20" kpx2="1076"/></kerning><kerning kpx1="1278"><pair kern="-20" kpx2="1152"/><pair kern="-20" kpx2="1228"/><pair kern="-9" kpx2="1296"/><pair kern="-20" kpx2="1095"/><pair kern="-20" kpx2="1028"/><pair kern="-20" kpx2="1227"/><pair kern="-20" kpx2="1292"/><pair kern="-20" kpx2="1054"/><pair kern="-20" kpx2="1282"/><pair kern="-20" kpx2="1280"/><pair kern="-20" kpx2="1287"/><pair kern="-20" kpx2="1285"/><pair kern="-20" kpx2="1254"/><pair kern="-20" kpx2="1194"/><pair kern="-20" kpx2="1057"/><pair kern="-20" kpx2="1192"/><pair kern="-20" kpx2="1258"/><pair kern="-20" kpx2="1063"/><pair kern="-20" kpx2="1120"/><pair kern="-20" kpx2="1060"/><pair kern="-20" kpx2="1256"/><pair kern="-20" kpx2="1150"/><pair kern="-20" kpx2="1268"/><pair kern="-20" kpx2="1269"/><pair kern="-20" kpx2="1148"/><pair kern="-20" kpx2="1206"/><pair kern="-20" kpx2="1146"/><pair kern="-20" kpx2="1207"/><pair kern="-20" kpx2="1144"/><pair kern="-20" kpx2="1208"/><pair kern="-20" kpx2="1209"/><pair kern="-49" kpx2="1214"/><pair kern="-20" kpx2="1138"/><pair kern="-49" kpx2="1212"/><pair kern="-20" kpx2="1136"/></kerning><kerning kpx1="1279"><pair kern="-9" kpx2="1153"/><pair kern="-9" kpx2="1092"/><pair kern="-9" kpx2="1228"/><pair kern="-9" kpx2="1297"/><pair kern="-9" kpx2="1095"/><pair kern="-9" kpx2="1089"/><pair kern="-9" kpx2="1239"/><pair kern="-9" kpx2="1293"/><pair kern="-9" kpx2="1283"/><pair kern="-9" kpx2="1108"/><pair kern="-9" kpx2="1281"/><pair kern="-9" kpx2="1105"/><pair kern="-20" kpx2="1287"/><pair kern="-9" kpx2="1104"/><pair kern="-20" kpx2="1285"/><pair kern="-9" kpx2="1255"/><pair kern="-9" kpx2="1195"/><pair kern="-9" kpx2="1193"/><pair kern="-9" kpx2="1259"/><pair kern="-9" kpx2="1257"/><pair kern="-9" kpx2="1149"/><pair kern="-9" kpx2="1269"/><pair kern="-9" kpx2="1147"/><pair kern="-9" kpx2="1086"/><pair kern="-9" kpx2="1207"/><pair kern="-9" kpx2="1145"/><pair kern="-9" kpx2="1209"/><pair kern="-9" kpx2="1139"/><pair kern="-9" kpx2="1077"/></kerning><kerning kpx1="1276"><pair kern="109" kpx2="1032"/><pair kern="-20" kpx2="1152"/><pair kern="-20" kpx2="1098"/><pair kern="-40" kpx2="1228"/><pair kern="-40" kpx2="1095"/><pair kern="-20" kpx2="1028"/><pair kern="-20" kpx2="1090"/><pair kern="-20" kpx2="1295"/><pair kern="-20" kpx2="1292"/><pair kern="-20" kpx2="1054"/><pair kern="-20" kpx2="1287"/><pair kern="-20" kpx2="1285"/><pair kern="-20" kpx2="1254"/><pair kern="29" kpx2="1135"/><pair kern="-20" kpx2="1185"/><pair kern="-20" kpx2="1194"/><pair kern="-20" kpx2="1057"/><pair kern="-20" kpx2="1192"/><pair kern="-20" kpx2="1258"/><pair kern="-20" kpx2="1120"/><pair kern="-29" kpx2="1060"/><pair kern="-20" kpx2="1197"/><pair kern="-20" kpx2="1256"/><pair kern="-20" kpx2="1150"/><pair kern="-40" kpx2="1269"/><pair kern="-20" kpx2="1148"/><pair kern="-20" kpx2="1146"/><pair kern="-40" kpx2="1207"/><pair kern="-20" kpx2="1144"/><pair kern="-20" kpx2="1205"/><pair kern="-40" kpx2="1209"/><pair kern="-29" kpx2="1214"/><pair kern="-20" kpx2="1215"/><pair kern="-20" kpx2="1138"/><pair kern="-29" kpx2="1212"/><pair kern="-9" kpx2="1137"/><pair kern="-20" kpx2="1213"/></kerning><kerning kpx1="1277"><pair kern="-9" kpx2="1153"/><pair kern="-9" kpx2="1092"/><pair kern="-9" kpx2="1228"/><pair kern="-9" kpx2="1297"/><pair kern="-9" kpx2="1095"/><pair kern="-9" kpx2="1089"/><pair kern="-9" kpx2="1239"/><pair kern="-9" kpx2="1293"/><pair kern="-9" kpx2="1283"/><pair kern="-9" kpx2="1108"/><pair kern="-9" kpx2="1281"/><pair kern="-9" kpx2="1105"/><pair kern="-20" kpx2="1287"/><pair kern="-9" kpx2="1104"/><pair kern="-20" kpx2="1285"/><pair kern="-9" kpx2="1255"/><pair kern="-9" kpx2="1195"/><pair kern="-9" kpx2="1193"/><pair kern="-9" kpx2="1259"/><pair kern="-9" kpx2="1257"/><pair kern="-9" kpx2="1149"/><pair kern="-9" kpx2="1269"/><pair kern="-9" kpx2="1147"/><pair kern="-9" kpx2="1086"/><pair kern="-9" kpx2="1207"/><pair kern="-9" kpx2="1145"/><pair kern="-9" kpx2="1209"/><pair kern="-9" kpx2="1139"/><pair kern="-9" kpx2="1077"/></kerning><kerning kpx1="1274"><pair kern="-29" kpx2="1100"/><pair kern="-20" kpx2="1101"/><pair kern="-29" kpx2="1102"/><pair kern="-29" kpx2="1096"/><pair kern="-29" kpx2="1097"/><pair kern="-29" kpx2="1099"/><pair kern="-40" kpx2="1092"/><pair kern="-20" kpx2="1093"/><pair kern="-29" kpx2="1094"/><pair kern="-49" kpx2="1095"/><pair kern="-29" kpx2="1088"/><pair kern="-40" kpx2="1089"/><pair kern="-29" kpx2="1117"/><pair kern="-29" kpx2="1116"/><pair kern="-29" kpx2="1119"/><pair kern="-49" kpx2="1113"/><pair kern="20" kpx2="1115"/><pair kern="-29" kpx2="1114"/><pair kern="-29" kpx2="1109"/><pair kern="-40" kpx2="1108"/><pair kern="-40" kpx2="1105"/><pair kern="-40" kpx2="1104"/><pair kern="-29" kpx2="1107"/><pair kern="20" kpx2="1106"/><pair kern="-29" kpx2="1133"/><pair kern="-20" kpx2="1131"/><pair kern="-29" kpx2="1129"/><pair kern="-60" kpx2="1126"/><pair kern="-49" kpx2="1127"/><pair kern="-29" kpx2="1125"/><pair kern="-49" kpx2="46"/><pair kern="-49" kpx2="44"/><pair kern="-20" kpx2="1120"/><pair kern="-20" kpx2="45"/><pair kern="-20" kpx2="1150"/><pair kern="-40" kpx2="1149"/><pair kern="-20" kpx2="1148"/><pair kern="-40" kpx2="1147"/><pair kern="-20" kpx2="1146"/><pair kern="-40" kpx2="1145"/><pair kern="-20" kpx2="1144"/><pair kern="-40" kpx2="1139"/><pair kern="-20" kpx2="1138"/><pair kern="-29" kpx2="1137"/><pair kern="-40" kpx2="1033"/><pair kern="20" kpx2="1035"/><pair kern="-49" kpx2="1299"/><pair kern="-40" kpx2="1298"/><pair kern="-40" kpx2="1297"/><pair kern="20" kpx2="1026"/><pair kern="-20" kpx2="1028"/><pair kern="-20" kpx2="8211"/><pair kern="-29" kpx2="1291"/><pair kern="-40" kpx2="1288"/><pair kern="-40" kpx2="1051"/><pair kern="-49" kpx2="1289"/><pair kern="20" kpx2="1294"/><pair kern="-20" kpx2="1292"/><pair kern="-20" kpx2="8213"/><pair kern="-40" kpx2="1293"/><pair kern="-20" kpx2="1054"/><pair kern="-20" kpx2="8212"/><pair kern="-49" kpx2="1282"/><pair kern="-40" kpx2="1283"/><pair kern="-60" kpx2="1040"/><pair kern="-49" kpx2="8218"/><pair kern="-49" kpx2="1280"/><pair kern="-40" kpx2="1281"/><pair kern="-20" kpx2="1287"/><pair kern="-40" kpx2="1044"/><pair kern="-49" kpx2="8222"/><pair kern="-20" kpx2="1285"/><pair kern="20" kpx2="1066"/><pair kern="20" kpx2="1058"/><pair kern="-20" kpx2="1057"/><pair kern="-29" kpx2="1060"/><pair kern="-49" kpx2="1083"/><pair kern="-29" kpx2="1082"/><pair kern="-29" kpx2="1081"/><pair kern="-29" kpx2="1080"/><pair kern="-29" kpx2="1087"/><pair kern="-40" kpx2="1086"/><pair kern="-29" kpx2="1085"/><pair kern="-29" kpx2="1084"/><pair kern="-29" kpx2="1075"/><pair kern="-29" kpx2="1074"/><pair kern="-20" kpx2="1079"/><pair kern="-20" kpx2="1078"/><pair kern="-40" kpx2="1077"/><pair kern="-49" kpx2="1076"/><pair kern="-40" kpx2="1221"/><pair kern="-29" kpx2="1220"/><pair kern="-49" kpx2="1222"/><pair kern="-20" kpx2="1218"/><pair kern="-49" kpx2="1228"/><pair kern="-29" kpx2="1230"/><pair kern="-29" kpx2="1224"/><pair kern="-29" kpx2="1226"/><pair kern="-60" kpx2="1236"/><pair kern="-40" kpx2="1239"/><pair kern="-60" kpx2="1232"/><pair kern="-60" kpx2="1234"/><pair kern="-20" kpx2="1245"/><pair kern="-20" kpx2="1247"/><pair kern="-40" kpx2="1255"/><pair kern="-20" kpx2="1254"/><pair kern="-29" kpx2="1253"/><pair kern="-29" kpx2="1251"/><pair kern="-20" kpx2="1261"/><pair kern="-40" kpx2="1259"/><pair kern="-20" kpx2="1258"/><pair kern="-40" kpx2="1257"/><pair kern="-20" kpx2="1256"/><pair kern="-29" kpx2="1271"/><pair kern="-49" kpx2="1269"/><pair kern="-20" kpx2="1279"/><pair kern="-20" kpx2="1277"/><pair kern="-29" kpx2="1273"/><pair kern="-40" kpx2="1153"/><pair kern="-20" kpx2="1152"/><pair kern="-29" kpx2="1163"/><pair kern="20" kpx2="1165"/><pair kern="-29" kpx2="1167"/><pair kern="-29" kpx2="1169"/><pair kern="-29" kpx2="1173"/><pair kern="-20" kpx2="1175"/><pair kern="-20" kpx2="1177"/><pair kern="-29" kpx2="1179"/><pair kern="-29" kpx2="1181"/><pair kern="20" kpx2="1183"/><pair kern="-29" kpx2="1187"/><pair kern="20" kpx2="1184"/><pair kern="-29" kpx2="1191"/><pair kern="-29" kpx2="1189"/><pair kern="-40" kpx2="1195"/><pair kern="-20" kpx2="1194"/><pair kern="-40" kpx2="1193"/><pair kern="-20" kpx2="1192"/><pair kern="20" kpx2="1196"/><pair kern="-20" kpx2="1203"/><pair kern="-49" kpx2="1207"/><pair kern="20" kpx2="1204"/><pair kern="-29" kpx2="1211"/><pair kern="-49" kpx2="1209"/><pair kern="-20" kpx2="1214"/><pair kern="-29" kpx2="1215"/><pair kern="-20" kpx2="1212"/><pair kern="-29" kpx2="1213"/></kerning><kerning kpx1="1275"><pair kern="-20" kpx2="1153"/><pair kern="-29" kpx2="1222"/><pair kern="-29" kpx2="1299"/><pair kern="-20" kpx2="1092"/><pair kern="-20" kpx2="1297"/><pair kern="-20" kpx2="1089"/><pair kern="-29" kpx2="1289"/><pair kern="-20" kpx2="1239"/><pair kern="-29" kpx2="1113"/><pair kern="-20" kpx2="1293"/><pair kern="-20" kpx2="1283"/><pair kern="-29" kpx2="8218"/><pair kern="-20" kpx2="1108"/><pair kern="-20" kpx2="1281"/><pair kern="-20" kpx2="1105"/><pair kern="-29" kpx2="8222"/><pair kern="-20" kpx2="1104"/><pair kern="-20" kpx2="1255"/><pair kern="-20" kpx2="1195"/><pair kern="-29" kpx2="1127"/><pair kern="-20" kpx2="1193"/><pair kern="-20" kpx2="1259"/><pair kern="-29" kpx2="46"/><pair kern="-20" kpx2="1257"/><pair kern="-29" kpx2="44"/><pair kern="-29" kpx2="1083"/><pair kern="-20" kpx2="1149"/><pair kern="-20" kpx2="1147"/><pair kern="-20" kpx2="1086"/><pair kern="-20" kpx2="1145"/><pair kern="-20" kpx2="1139"/><pair kern="-20" kpx2="1077"/><pair kern="-29" kpx2="1076"/></kerning><kerning kpx1="1152"><pair kern="-20" kpx2="1152"/><pair kern="-20" kpx2="1228"/><pair kern="-20" kpx2="1095"/><pair kern="-20" kpx2="1028"/><pair kern="-20" kpx2="1292"/><pair kern="-20" kpx2="1054"/><pair kern="-20" kpx2="1282"/><pair kern="-20" kpx2="1280"/><pair kern="-20" kpx2="1287"/><pair kern="-20" kpx2="1285"/><pair kern="-20" kpx2="1254"/><pair kern="-20" kpx2="1194"/><pair kern="-20" kpx2="1057"/><pair kern="-20" kpx2="1192"/><pair kern="-20" kpx2="1258"/><pair kern="-20" kpx2="1120"/><pair kern="-20" kpx2="1060"/><pair kern="-20" kpx2="1256"/><pair kern="-20" kpx2="1150"/><pair kern="-20" kpx2="1148"/><pair kern="-20" kpx2="1269"/><pair kern="-20" kpx2="1146"/><pair kern="-20" kpx2="1207"/><pair kern="-20" kpx2="1144"/><pair kern="-20" kpx2="1209"/><pair kern="-20" kpx2="1214"/><pair kern="-20" kpx2="1138"/><pair kern="-20" kpx2="1212"/></kerning><kerning kpx1="201"><pair kern="60" kpx2="74"/></kerning><kerning kpx1="200"><pair kern="60" kpx2="74"/></kerning><kerning kpx1="203"><pair kern="60" kpx2="74"/></kerning><kerning kpx1="202"><pair kern="60" kpx2="74"/></kerning><kerning kpx1="197"><pair kern="-20" kpx2="7888"/><pair kern="-20" kpx2="7890"/><pair kern="-20" kpx2="7892"/><pair kern="-20" kpx2="7894"/><pair kern="-20" kpx2="7896"/><pair kern="-20" kpx2="7898"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-20" kpx2="262"/><pair kern="-20" kpx2="266"/><pair kern="-20" kpx2="264"/><pair kern="-20" kpx2="7884"/><pair kern="-20" kpx2="268"/><pair kern="-20" kpx2="7886"/><pair kern="-69" kpx2="34"/><pair kern="-60" kpx2="7922"/><pair kern="-60" kpx2="7926"/><pair kern="-69" kpx2="39"/><pair kern="-60" kpx2="7924"/><pair kern="-60" kpx2="7928"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-20" kpx2="416"/><pair kern="-69" kpx2="538"/><pair kern="-20" kpx2="71"/><pair kern="-20" kpx2="338"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-20" kpx2="199"/><pair kern="-20" kpx2="79"/><pair kern="129" kpx2="74"/><pair kern="-40" kpx2="7812"/><pair kern="-60" kpx2="221"/><pair kern="-69" kpx2="84"/><pair kern="-40" kpx2="87"/><pair kern="-40" kpx2="86"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="81"/><pair kern="-40" kpx2="7808"/><pair kern="-40" kpx2="7810"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="334"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-20" kpx2="332"/><pair kern="-69" kpx2="8217"/><pair kern="-60" kpx2="89"/><pair kern="-20" kpx2="210"/><pair kern="-69" kpx2="8221"/><pair kern="-20" kpx2="211"/><pair kern="-40" kpx2="372"/><pair kern="-20" kpx2="510"/><pair kern="-60" kpx2="374"/><pair kern="-60" kpx2="376"/><pair kern="-69" kpx2="356"/><pair kern="-69" kpx2="354"/></kerning><kerning kpx1="196"><pair kern="-20" kpx2="7888"/><pair kern="-20" kpx2="7890"/><pair kern="-20" kpx2="7892"/><pair kern="-20" kpx2="7894"/><pair kern="-20" kpx2="7896"/><pair kern="-20" kpx2="7898"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-20" kpx2="262"/><pair kern="-20" kpx2="266"/><pair kern="-20" kpx2="264"/><pair kern="-20" kpx2="7884"/><pair kern="-20" kpx2="268"/><pair kern="-20" kpx2="7886"/><pair kern="-69" kpx2="34"/><pair kern="-60" kpx2="7922"/><pair kern="-60" kpx2="7926"/><pair kern="-69" kpx2="39"/><pair kern="-60" kpx2="7924"/><pair kern="-60" kpx2="7928"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-20" kpx2="416"/><pair kern="-69" kpx2="538"/><pair kern="-20" kpx2="71"/><pair kern="-20" kpx2="338"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-20" kpx2="199"/><pair kern="-20" kpx2="79"/><pair kern="129" kpx2="74"/><pair kern="-40" kpx2="7812"/><pair kern="-60" kpx2="221"/><pair kern="-69" kpx2="84"/><pair kern="-40" kpx2="87"/><pair kern="-40" kpx2="86"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="81"/><pair kern="-40" kpx2="7808"/><pair kern="-40" kpx2="7810"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="334"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-20" kpx2="332"/><pair kern="-69" kpx2="8217"/><pair kern="-60" kpx2="89"/><pair kern="-20" kpx2="210"/><pair kern="-69" kpx2="8221"/><pair kern="-20" kpx2="211"/><pair kern="-40" kpx2="372"/><pair kern="-20" kpx2="510"/><pair kern="-60" kpx2="374"/><pair kern="-60" kpx2="376"/><pair kern="-69" kpx2="356"/><pair kern="-69" kpx2="354"/></kerning><kerning kpx1="199"><pair kern="-20" kpx2="7888"/><pair kern="-20" kpx2="7890"/><pair kern="-20" kpx2="71"/><pair kern="-20" kpx2="7892"/><pair kern="-20" kpx2="338"/><pair kern="-20" kpx2="7894"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-20" kpx2="7896"/><pair kern="-20" kpx2="199"/><pair kern="-20" kpx2="7898"/><pair kern="-20" kpx2="79"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-20" kpx2="262"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="81"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="266"/><pair kern="-20" kpx2="334"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-20" kpx2="264"/><pair kern="-20" kpx2="332"/><pair kern="-20" kpx2="7884"/><pair kern="-20" kpx2="7886"/><pair kern="-20" kpx2="210"/><pair kern="-20" kpx2="268"/><pair kern="-20" kpx2="211"/><pair kern="-20" kpx2="510"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-20" kpx2="416"/></kerning><kerning kpx1="1163"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="198"><pair kern="60" kpx2="74"/></kerning><kerning kpx1="1162"><pair kern="109" kpx2="1032"/><pair kern="20" kpx2="1249"/><pair kern="-20" kpx2="1287"/><pair kern="-20" kpx2="1285"/></kerning><kerning kpx1="193"><pair kern="-20" kpx2="7888"/><pair kern="-20" kpx2="7890"/><pair kern="-20" kpx2="7892"/><pair kern="-20" kpx2="7894"/><pair kern="-20" kpx2="7896"/><pair kern="-20" kpx2="7898"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-20" kpx2="262"/><pair kern="-20" kpx2="266"/><pair kern="-20" kpx2="264"/><pair kern="-20" kpx2="7884"/><pair kern="-20" kpx2="268"/><pair kern="-20" kpx2="7886"/><pair kern="-69" kpx2="34"/><pair kern="-60" kpx2="7922"/><pair kern="-60" kpx2="7926"/><pair kern="-69" kpx2="39"/><pair kern="-60" kpx2="7924"/><pair kern="-60" kpx2="7928"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-20" kpx2="416"/><pair kern="-69" kpx2="538"/><pair kern="-20" kpx2="71"/><pair kern="-20" kpx2="338"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-20" kpx2="199"/><pair kern="-20" kpx2="79"/><pair kern="129" kpx2="74"/><pair kern="-40" kpx2="7812"/><pair kern="-60" kpx2="221"/><pair kern="-69" kpx2="84"/><pair kern="-40" kpx2="87"/><pair kern="-40" kpx2="86"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="81"/><pair kern="-40" kpx2="7808"/><pair kern="-40" kpx2="7810"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="334"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-20" kpx2="332"/><pair kern="-69" kpx2="8217"/><pair kern="-60" kpx2="89"/><pair kern="-20" kpx2="210"/><pair kern="-69" kpx2="8221"/><pair kern="-20" kpx2="211"/><pair kern="-40" kpx2="372"/><pair kern="-20" kpx2="510"/><pair kern="-60" kpx2="374"/><pair kern="-60" kpx2="376"/><pair kern="-69" kpx2="356"/><pair kern="-69" kpx2="354"/></kerning><kerning kpx1="1165"><pair kern="-49" kpx2="1098"/><pair kern="-20" kpx2="1218"/><pair kern="-40" kpx2="1228"/><pair kern="-20" kpx2="1093"/><pair kern="-40" kpx2="1095"/><pair kern="-49" kpx2="1090"/><pair kern="-29" kpx2="1091"/><pair kern="-29" kpx2="1118"/><pair kern="-49" kpx2="1295"/><pair kern="-20" kpx2="1175"/><pair kern="-20" kpx2="1245"/><pair kern="-60" kpx2="8217"/><pair kern="-49" kpx2="1287"/><pair kern="-60" kpx2="8221"/><pair kern="-49" kpx2="1285"/><pair kern="-60" kpx2="34"/><pair kern="-49" kpx2="1185"/><pair kern="-60" kpx2="39"/><pair kern="-20" kpx2="1249"/><pair kern="-29" kpx2="1263"/><pair kern="-29" kpx2="1199"/><pair kern="-49" kpx2="1197"/><pair kern="-20" kpx2="1121"/><pair kern="-20" kpx2="1151"/><pair kern="-20" kpx2="1203"/><pair kern="-40" kpx2="1269"/><pair kern="-29" kpx2="1201"/><pair kern="-29" kpx2="1267"/><pair kern="-40" kpx2="1207"/><pair kern="-29" kpx2="1265"/><pair kern="-49" kpx2="1205"/><pair kern="-20" kpx2="1143"/><pair kern="-20" kpx2="1279"/><pair kern="-20" kpx2="1141"/><pair kern="-20" kpx2="1277"/><pair kern="-40" kpx2="1209"/><pair kern="-20" kpx2="1215"/><pair kern="-20" kpx2="1078"/><pair kern="-20" kpx2="1213"/></kerning><kerning kpx1="192"><pair kern="-20" kpx2="7888"/><pair kern="-20" kpx2="7890"/><pair kern="-20" kpx2="7892"/><pair kern="-20" kpx2="7894"/><pair kern="-20" kpx2="7896"/><pair kern="-20" kpx2="7898"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-20" kpx2="262"/><pair kern="-20" kpx2="266"/><pair kern="-20" kpx2="264"/><pair kern="-20" kpx2="7884"/><pair kern="-20" kpx2="268"/><pair kern="-20" kpx2="7886"/><pair kern="-69" kpx2="34"/><pair kern="-60" kpx2="7922"/><pair kern="-60" kpx2="7926"/><pair kern="-69" kpx2="39"/><pair kern="-60" kpx2="7924"/><pair kern="-60" kpx2="7928"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-20" kpx2="416"/><pair kern="-69" kpx2="538"/><pair kern="-20" kpx2="71"/><pair kern="-20" kpx2="338"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-20" kpx2="199"/><pair kern="-20" kpx2="79"/><pair kern="129" kpx2="74"/><pair kern="-40" kpx2="7812"/><pair kern="-60" kpx2="221"/><pair kern="-69" kpx2="84"/><pair kern="-40" kpx2="87"/><pair kern="-40" kpx2="86"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="81"/><pair kern="-40" kpx2="7808"/><pair kern="-40" kpx2="7810"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="334"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-20" kpx2="332"/><pair kern="-69" kpx2="8217"/><pair kern="-60" kpx2="89"/><pair kern="-20" kpx2="210"/><pair kern="-69" kpx2="8221"/><pair kern="-20" kpx2="211"/><pair kern="-40" kpx2="372"/><pair kern="-20" kpx2="510"/><pair kern="-60" kpx2="374"/><pair kern="-60" kpx2="376"/><pair kern="-69" kpx2="356"/><pair kern="-69" kpx2="354"/></kerning><kerning kpx1="1164"><pair kern="-20" kpx2="1035"/><pair kern="-20" kpx2="1098"/><pair kern="-20" kpx2="1026"/><pair kern="-40" kpx2="1227"/><pair kern="-20" kpx2="1090"/><pair kern="-20" kpx2="1294"/><pair kern="-20" kpx2="1295"/><pair kern="-40" kpx2="8217"/><pair kern="-49" kpx2="1286"/><pair kern="-49" kpx2="1284"/><pair kern="-40" kpx2="8221"/><pair kern="-20" kpx2="1066"/><pair kern="-40" kpx2="34"/><pair kern="-20" kpx2="1185"/><pair kern="-20" kpx2="1184"/><pair kern="-40" kpx2="39"/><pair kern="-40" kpx2="1058"/><pair kern="-40" kpx2="1063"/><pair kern="-29" kpx2="1198"/><pair kern="-20" kpx2="1197"/><pair kern="-40" kpx2="1196"/><pair kern="-40" kpx2="1268"/><pair kern="-29" kpx2="1200"/><pair kern="-40" kpx2="1206"/><pair kern="-20" kpx2="1204"/><pair kern="-20" kpx2="1205"/><pair kern="-29" kpx2="1142"/><pair kern="-40" kpx2="1208"/><pair kern="-29" kpx2="1140"/><pair kern="-40" kpx2="1136"/></kerning><kerning kpx1="195"><pair kern="-20" kpx2="7888"/><pair kern="-20" kpx2="7890"/><pair kern="-20" kpx2="7892"/><pair kern="-20" kpx2="7894"/><pair kern="-20" kpx2="7896"/><pair kern="-20" kpx2="7898"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-20" kpx2="262"/><pair kern="-20" kpx2="266"/><pair kern="-20" kpx2="264"/><pair kern="-20" kpx2="7884"/><pair kern="-20" kpx2="268"/><pair kern="-20" kpx2="7886"/><pair kern="-69" kpx2="34"/><pair kern="-60" kpx2="7922"/><pair kern="-60" kpx2="7926"/><pair kern="-69" kpx2="39"/><pair kern="-60" kpx2="7924"/><pair kern="-60" kpx2="7928"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-20" kpx2="416"/><pair kern="-69" kpx2="538"/><pair kern="-20" kpx2="71"/><pair kern="-20" kpx2="338"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-20" kpx2="199"/><pair kern="-20" kpx2="79"/><pair kern="129" kpx2="74"/><pair kern="-40" kpx2="7812"/><pair kern="-60" kpx2="221"/><pair kern="-69" kpx2="84"/><pair kern="-40" kpx2="87"/><pair kern="-40" kpx2="86"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="81"/><pair kern="-40" kpx2="7808"/><pair kern="-40" kpx2="7810"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="334"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-20" kpx2="332"/><pair kern="-69" kpx2="8217"/><pair kern="-60" kpx2="89"/><pair kern="-20" kpx2="210"/><pair kern="-69" kpx2="8221"/><pair kern="-20" kpx2="211"/><pair kern="-40" kpx2="372"/><pair kern="-20" kpx2="510"/><pair kern="-60" kpx2="374"/><pair kern="-60" kpx2="376"/><pair kern="-69" kpx2="356"/><pair kern="-69" kpx2="354"/></kerning><kerning kpx1="1167"><pair kern="-9" kpx2="1098"/><pair kern="-20" kpx2="1218"/><pair kern="-20" kpx2="1093"/><pair kern="-9" kpx2="1228"/><pair kern="-9" kpx2="1095"/><pair kern="-9" kpx2="1090"/><pair kern="-9" kpx2="1091"/><pair kern="-9" kpx2="1118"/><pair kern="-9" kpx2="1295"/><pair kern="-20" kpx2="1175"/><pair kern="-20" kpx2="1245"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="1287"/><pair kern="-9" kpx2="8221"/><pair kern="-9" kpx2="1285"/><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="1185"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="1263"/><pair kern="-9" kpx2="1197"/><pair kern="-20" kpx2="1203"/><pair kern="-9" kpx2="1269"/><pair kern="-9" kpx2="1207"/><pair kern="-9" kpx2="1267"/><pair kern="-9" kpx2="1205"/><pair kern="-9" kpx2="1265"/><pair kern="-20" kpx2="1279"/><pair kern="-20" kpx2="1277"/><pair kern="-9" kpx2="1209"/><pair kern="-20" kpx2="1078"/></kerning><kerning kpx1="194"><pair kern="-20" kpx2="7888"/><pair kern="-20" kpx2="7890"/><pair kern="-20" kpx2="7892"/><pair kern="-20" kpx2="7894"/><pair kern="-20" kpx2="7896"/><pair kern="-20" kpx2="7898"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-20" kpx2="262"/><pair kern="-20" kpx2="266"/><pair kern="-20" kpx2="264"/><pair kern="-20" kpx2="7884"/><pair kern="-20" kpx2="268"/><pair kern="-20" kpx2="7886"/><pair kern="-69" kpx2="34"/><pair kern="-60" kpx2="7922"/><pair kern="-60" kpx2="7926"/><pair kern="-69" kpx2="39"/><pair kern="-60" kpx2="7924"/><pair kern="-60" kpx2="7928"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-20" kpx2="416"/><pair kern="-69" kpx2="538"/><pair kern="-20" kpx2="71"/><pair kern="-20" kpx2="338"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-20" kpx2="199"/><pair kern="-20" kpx2="79"/><pair kern="129" kpx2="74"/><pair kern="-40" kpx2="7812"/><pair kern="-60" kpx2="221"/><pair kern="-69" kpx2="84"/><pair kern="-40" kpx2="87"/><pair kern="-40" kpx2="86"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="81"/><pair kern="-40" kpx2="7808"/><pair kern="-40" kpx2="7810"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="334"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-20" kpx2="332"/><pair kern="-69" kpx2="8217"/><pair kern="-60" kpx2="89"/><pair kern="-20" kpx2="210"/><pair kern="-69" kpx2="8221"/><pair kern="-20" kpx2="211"/><pair kern="-40" kpx2="372"/><pair kern="-20" kpx2="510"/><pair kern="-60" kpx2="374"/><pair kern="-60" kpx2="376"/><pair kern="-69" kpx2="356"/><pair kern="-69" kpx2="354"/></kerning><kerning kpx1="1166"><pair kern="-60" kpx2="1221"/><pair kern="-60" kpx2="1033"/><pair kern="-49" kpx2="1222"/><pair kern="-20" kpx2="1217"/><pair kern="-49" kpx2="1299"/><pair kern="-60" kpx2="1298"/><pair kern="-49" kpx2="1236"/><pair kern="-60" kpx2="1288"/><pair kern="-60" kpx2="1051"/><pair kern="-49" kpx2="1289"/><pair kern="-49" kpx2="1113"/><pair kern="-49" kpx2="1232"/><pair kern="-20" kpx2="1174"/><pair kern="-49" kpx2="1234"/><pair kern="-40" kpx2="1282"/><pair kern="-20" kpx2="1244"/><pair kern="-129" kpx2="8218"/><pair kern="-49" kpx2="1040"/><pair kern="-40" kpx2="1280"/><pair kern="-60" kpx2="1044"/><pair kern="-129" kpx2="8222"/><pair kern="-20" kpx2="1046"/><pair kern="-9" kpx2="1130"/><pair kern="-49" kpx2="1126"/><pair kern="-49" kpx2="1127"/><pair kern="-129" kpx2="46"/><pair kern="-129" kpx2="44"/><pair kern="-20" kpx2="1061"/><pair kern="-49" kpx2="1083"/><pair kern="-20" kpx2="1202"/><pair kern="-20" kpx2="1278"/><pair kern="-20" kpx2="1276"/><pair kern="-49" kpx2="1076"/></kerning><kerning kpx1="220"><pair kern="-9" kpx2="65"/><pair kern="-9" kpx2="197"/><pair kern="-9" kpx2="196"/><pair kern="-9" kpx2="193"/><pair kern="-9" kpx2="192"/><pair kern="-9" kpx2="195"/><pair kern="-9" kpx2="194"/><pair kern="-9" kpx2="258"/><pair kern="-9" kpx2="256"/><pair kern="-9" kpx2="260"/><pair kern="-20" kpx2="8218"/><pair kern="-20" kpx2="8222"/><pair kern="-9" kpx2="7680"/><pair kern="-9" kpx2="7862"/><pair kern="-9" kpx2="7860"/><pair kern="-9" kpx2="7858"/><pair kern="-9" kpx2="506"/><pair kern="-9" kpx2="7856"/><pair kern="-20" kpx2="46"/><pair kern="-20" kpx2="44"/><pair kern="-9" kpx2="7846"/><pair kern="-9" kpx2="7844"/><pair kern="-9" kpx2="7842"/><pair kern="-9" kpx2="7840"/><pair kern="-9" kpx2="7854"/><pair kern="-9" kpx2="7852"/><pair kern="-9" kpx2="7850"/><pair kern="-9" kpx2="7848"/></kerning><kerning kpx1="1168"><pair kern="-49" kpx2="1100"/><pair kern="-20" kpx2="1101"/><pair kern="-49" kpx2="1102"/><pair kern="-29" kpx2="1103"/><pair kern="-49" kpx2="1096"/><pair kern="-49" kpx2="1097"/><pair kern="-40" kpx2="1098"/><pair kern="-49" kpx2="1099"/><pair kern="-69" kpx2="1092"/><pair kern="-20" kpx2="1093"/><pair kern="-49" kpx2="1094"/><pair kern="-49" kpx2="1095"/><pair kern="-49" kpx2="1088"/><pair kern="-69" kpx2="1089"/><pair kern="-40" kpx2="1090"/><pair kern="-40" kpx2="1091"/><pair kern="-49" kpx2="1117"/><pair kern="-49" kpx2="1116"/><pair kern="-49" kpx2="1119"/><pair kern="-40" kpx2="1118"/><pair kern="-60" kpx2="1113"/><pair kern="-49" kpx2="1114"/><pair kern="-60" kpx2="1109"/><pair kern="-69" kpx2="1108"/><pair kern="-69" kpx2="1105"/><pair kern="-69" kpx2="1104"/><pair kern="-49" kpx2="1107"/><pair kern="-49" kpx2="1133"/><pair kern="-49" kpx2="1131"/><pair kern="-49" kpx2="1129"/><pair kern="-69" kpx2="1126"/><pair kern="-60" kpx2="1127"/><pair kern="-49" kpx2="1125"/><pair kern="-60" kpx2="46"/><pair kern="-60" kpx2="44"/><pair kern="-20" kpx2="1120"/><pair kern="-40" kpx2="45"/><pair kern="-20" kpx2="1121"/><pair kern="-20" kpx2="1151"/><pair kern="-20" kpx2="1150"/><pair kern="-69" kpx2="1149"/><pair kern="-20" kpx2="1148"/><pair kern="-69" kpx2="1147"/><pair kern="-20" kpx2="1146"/><pair kern="-69" kpx2="1145"/><pair kern="-20" kpx2="1144"/><pair kern="-20" kpx2="1143"/><pair kern="-20" kpx2="1141"/><pair kern="-69" kpx2="1139"/><pair kern="-20" kpx2="1138"/><pair kern="-49" kpx2="1137"/><pair kern="-49" kpx2="1033"/><pair kern="-60" kpx2="1299"/><pair kern="-49" kpx2="1298"/><pair kern="-69" kpx2="1297"/><pair kern="-20" kpx2="1028"/><pair kern="-40" kpx2="8211"/><pair kern="-49" kpx2="1291"/><pair kern="-49" kpx2="1288"/><pair kern="-49" kpx2="1051"/><pair kern="-60" kpx2="1289"/><pair kern="-40" kpx2="1295"/><pair kern="-20" kpx2="1292"/><pair kern="-40" kpx2="8213"/><pair kern="-69" kpx2="1293"/><pair kern="-20" kpx2="1054"/><pair kern="-40" kpx2="8212"/><pair kern="-69" kpx2="1282"/><pair kern="-69" kpx2="1283"/><pair kern="-69" kpx2="1040"/><pair kern="-60" kpx2="8218"/><pair kern="-69" kpx2="1280"/><pair kern="-69" kpx2="1281"/><pair kern="-49" kpx2="1287"/><pair kern="-49" kpx2="1044"/><pair kern="-60" kpx2="8222"/><pair kern="-49" kpx2="1285"/><pair kern="20" kpx2="1058"/><pair kern="-20" kpx2="1057"/><pair kern="-40" kpx2="1060"/><pair kern="-60" kpx2="1083"/><pair kern="-49" kpx2="1082"/><pair kern="-49" kpx2="1081"/><pair kern="-49" kpx2="1080"/><pair kern="-49" kpx2="1087"/><pair kern="-69" kpx2="1086"/><pair kern="-49" kpx2="1085"/><pair kern="-49" kpx2="1084"/><pair kern="-49" kpx2="1075"/><pair kern="-49" kpx2="1074"/><pair kern="-20" kpx2="1079"/><pair kern="-20" kpx2="1078"/><pair kern="-69" kpx2="1077"/><pair kern="-60" kpx2="1076"/><pair kern="-49" kpx2="1221"/><pair kern="-49" kpx2="1220"/><pair kern="-60" kpx2="1222"/><pair kern="-20" kpx2="1218"/><pair kern="-49" kpx2="1228"/><pair kern="-49" kpx2="1230"/><pair kern="-49" kpx2="1224"/><pair kern="-49" kpx2="1226"/><pair kern="-69" kpx2="1236"/><pair kern="-69" kpx2="1239"/><pair kern="-69" kpx2="1232"/><pair kern="-69" kpx2="1234"/><pair kern="-20" kpx2="1245"/><pair kern="-20" kpx2="1247"/><pair kern="-69" kpx2="1255"/><pair kern="-20" kpx2="1254"/><pair kern="-49" kpx2="1253"/><pair kern="-49" kpx2="1251"/><pair kern="-29" kpx2="1249"/><pair kern="-40" kpx2="1263"/><pair kern="-20" kpx2="1261"/><pair kern="-69" kpx2="1259"/><pair kern="-20" kpx2="1258"/><pair kern="-69" kpx2="1257"/><pair kern="-20" kpx2="1256"/><pair kern="-49" kpx2="1271"/><pair kern="-49" kpx2="1269"/><pair kern="-40" kpx2="1267"/><pair kern="-40" kpx2="1265"/><pair kern="-20" kpx2="1279"/><pair kern="-20" kpx2="1277"/><pair kern="-49" kpx2="1273"/><pair kern="-69" kpx2="1153"/><pair kern="-20" kpx2="1152"/><pair kern="-49" kpx2="1163"/><pair kern="-49" kpx2="1167"/><pair kern="-49" kpx2="1169"/><pair kern="-49" kpx2="1173"/><pair kern="-20" kpx2="1175"/><pair kern="-20" kpx2="1177"/><pair kern="-49" kpx2="1179"/><pair kern="-49" kpx2="1181"/><pair kern="-49" kpx2="1187"/><pair kern="-40" kpx2="1185"/><pair kern="-49" kpx2="1191"/><pair kern="-49" kpx2="1189"/><pair kern="-69" kpx2="1195"/><pair kern="-20" kpx2="1194"/><pair kern="-69" kpx2="1193"/><pair kern="-20" kpx2="1192"/><pair kern="-40" kpx2="1199"/><pair kern="-40" kpx2="1197"/><pair kern="20" kpx2="1196"/><pair kern="-20" kpx2="1203"/><pair kern="-40" kpx2="1201"/><pair kern="-49" kpx2="1207"/><pair kern="-40" kpx2="1205"/><pair kern="-49" kpx2="1211"/><pair kern="-49" kpx2="1209"/><pair kern="-49" kpx2="1214"/><pair kern="-69" kpx2="1215"/><pair kern="-49" kpx2="1212"/><pair kern="-69" kpx2="1213"/></kerning><kerning kpx1="221"><pair kern="-49" kpx2="7889"/><pair kern="-49" kpx2="275"/><pair kern="-20" kpx2="7888"/><pair kern="-49" kpx2="273"/><pair kern="-20" kpx2="7890"/><pair kern="-49" kpx2="7893"/><pair kern="-49" kpx2="279"/><pair kern="-20" kpx2="7892"/><pair kern="-49" kpx2="7895"/><pair kern="-49" kpx2="277"/><pair kern="-20" kpx2="7894"/><pair kern="-49" kpx2="7897"/><pair kern="-49" kpx2="283"/><pair kern="-20" kpx2="7896"/><pair kern="-49" kpx2="7899"/><pair kern="-49" kpx2="281"/><pair kern="-20" kpx2="7898"/><pair kern="-49" kpx2="7901"/><pair kern="-20" kpx2="287"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-49" kpx2="7903"/><pair kern="-20" kpx2="285"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-60" kpx2="258"/><pair kern="-49" kpx2="259"/><pair kern="-60" kpx2="256"/><pair kern="-49" kpx2="7875"/><pair kern="-49" kpx2="257"/><pair kern="-20" kpx2="262"/><pair kern="-49" kpx2="7877"/><pair kern="-49" kpx2="263"/><pair kern="-60" kpx2="260"/><pair kern="-49" kpx2="7879"/><pair kern="-49" kpx2="261"/><pair kern="-20" kpx2="266"/><pair kern="-49" kpx2="267"/><pair kern="-20" kpx2="264"/><pair kern="-49" kpx2="265"/><pair kern="-20" kpx2="7884"/><pair kern="-49" kpx2="7885"/><pair kern="-49" kpx2="271"/><pair kern="-20" kpx2="7886"/><pair kern="-20" kpx2="268"/><pair kern="-49" kpx2="7887"/><pair kern="-49" kpx2="269"/><pair kern="-29" kpx2="7921"/><pair kern="-29" kpx2="312"/><pair kern="-60" kpx2="46"/><pair kern="-60" kpx2="44"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-49" kpx2="7907"/><pair kern="-20" kpx2="289"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-49" kpx2="7905"/><pair kern="-20" kpx2="291"/><pair kern="-29" kpx2="7911"/><pair kern="-29" kpx2="7909"/><pair kern="-29" kpx2="7915"/><pair kern="-29" kpx2="7913"/><pair kern="-40" kpx2="537"/><pair kern="20" kpx2="63"/><pair kern="-29" kpx2="7919"/><pair kern="-29" kpx2="7917"/><pair kern="-29" kpx2="343"/><pair kern="-29" kpx2="341"/><pair kern="-20" kpx2="71"/><pair kern="-49" kpx2="339"/><pair kern="-20" kpx2="338"/><pair kern="-60" kpx2="65"/><pair kern="-49" kpx2="337"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-40" kpx2="351"/><pair kern="-20" kpx2="79"/><pair kern="-40" kpx2="347"/><pair kern="-29" kpx2="326"/><pair kern="-29" kpx2="324"/><pair kern="-20" kpx2="81"/><pair kern="-20" kpx2="334"/><pair kern="-60" kpx2="8218"/><pair kern="-49" kpx2="335"/><pair kern="-20" kpx2="332"/><pair kern="-49" kpx2="333"/><pair kern="-60" kpx2="8222"/><pair kern="-29" kpx2="331"/><pair kern="-49" kpx2="7863"/><pair kern="-60" kpx2="7862"/><pair kern="-20" kpx2="103"/><pair kern="-49" kpx2="7861"/><pair kern="-49" kpx2="100"/><pair kern="-60" kpx2="7860"/><pair kern="-49" kpx2="101"/><pair kern="-49" kpx2="7859"/><pair kern="-29" kpx2="369"/><pair kern="-60" kpx2="7858"/><pair kern="-49" kpx2="99"/><pair kern="-49" kpx2="7857"/><pair kern="-29" kpx2="371"/><pair kern="-60" kpx2="7856"/><pair kern="-49" kpx2="97"/><pair kern="-49" kpx2="7871"/><pair kern="-29" kpx2="110"/><pair kern="-20" kpx2="380"/><pair kern="-49" kpx2="111"/><pair kern="-49" kpx2="7869"/><pair kern="-20" kpx2="382"/><pair kern="-29" kpx2="109"/><pair kern="-49" kpx2="7867"/><pair kern="-49" kpx2="7865"/><pair kern="-20" kpx2="378"/><pair kern="-60" kpx2="7846"/><pair kern="-60" kpx2="7844"/><pair kern="-29" kpx2="117"/><pair kern="-49" kpx2="7845"/><pair kern="-60" kpx2="7842"/><pair kern="-40" kpx2="115"/><pair kern="-49" kpx2="7843"/><pair kern="-29" kpx2="114"/><pair kern="-60" kpx2="7840"/><pair kern="-49" kpx2="113"/><pair kern="-49" kpx2="7841"/><pair kern="-29" kpx2="112"/><pair kern="-60" kpx2="7854"/><pair kern="-49" kpx2="7855"/><pair kern="-29" kpx2="365"/><pair kern="-60" kpx2="7852"/><pair kern="-49" kpx2="7853"/><pair kern="-29" kpx2="367"/><pair kern="-60" kpx2="7850"/><pair kern="-49" kpx2="7851"/><pair kern="-29" kpx2="361"/><pair kern="-20" kpx2="122"/><pair kern="-60" kpx2="7848"/><pair kern="-49" kpx2="7849"/><pair kern="-29" kpx2="363"/><pair kern="-29" kpx2="432"/><pair kern="-49" kpx2="417"/><pair kern="-20" kpx2="416"/><pair kern="-60" kpx2="197"/><pair kern="-60" kpx2="196"/><pair kern="-20" kpx2="199"/><pair kern="-60" kpx2="193"/><pair kern="-60" kpx2="192"/><pair kern="-60" kpx2="195"/><pair kern="-60" kpx2="194"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-49" kpx2="7681"/><pair kern="-60" kpx2="7680"/><pair kern="-20" kpx2="210"/><pair kern="-20" kpx2="211"/><pair kern="-29" kpx2="7743"/><pair kern="-49" kpx2="509"/><pair kern="-20" kpx2="510"/><pair kern="-49" kpx2="511"/><pair kern="-49" kpx2="235"/><pair kern="-49" kpx2="234"/><pair kern="-60" kpx2="506"/><pair kern="-49" kpx2="233"/><pair kern="-49" kpx2="507"/><pair kern="-49" kpx2="232"/><pair kern="-49" kpx2="231"/><pair kern="-49" kpx2="230"/><pair kern="-49" kpx2="229"/><pair kern="-49" kpx2="228"/><pair kern="-49" kpx2="227"/><pair kern="-49" kpx2="226"/><pair kern="-49" kpx2="225"/><pair kern="-49" kpx2="224"/><pair kern="-29" kpx2="252"/><pair kern="-29" kpx2="250"/><pair kern="-29" kpx2="251"/><pair kern="-49" kpx2="248"/><pair kern="-29" kpx2="249"/><pair kern="-49" kpx2="246"/><pair kern="-49" kpx2="244"/><pair kern="-49" kpx2="245"/><pair kern="-49" kpx2="242"/><pair kern="-49" kpx2="243"/></kerning><kerning kpx1="1169"><pair kern="-9" kpx2="1153"/><pair kern="-29" kpx2="1222"/><pair kern="-29" kpx2="1299"/><pair kern="-9" kpx2="1092"/><pair kern="-9" kpx2="1297"/><pair kern="-9" kpx2="1089"/><pair kern="-20" kpx2="8211"/><pair kern="-29" kpx2="1289"/><pair kern="-9" kpx2="1239"/><pair kern="-29" kpx2="1113"/><pair kern="-20" kpx2="8213"/><pair kern="-9" kpx2="1293"/><pair kern="-20" kpx2="8212"/><pair kern="-9" kpx2="1283"/><pair kern="-9" kpx2="1108"/><pair kern="-49" kpx2="8218"/><pair kern="-9" kpx2="1281"/><pair kern="-9" kpx2="1105"/><pair kern="-49" kpx2="8222"/><pair kern="-9" kpx2="1104"/><pair kern="-9" kpx2="1255"/><pair kern="-9" kpx2="1195"/><pair kern="-29" kpx2="1127"/><pair kern="-9" kpx2="1193"/><pair kern="-9" kpx2="1259"/><pair kern="-49" kpx2="46"/><pair kern="-9" kpx2="1257"/><pair kern="-49" kpx2="44"/><pair kern="-20" kpx2="45"/><pair kern="-29" kpx2="1083"/><pair kern="-9" kpx2="1149"/><pair kern="-9" kpx2="1147"/><pair kern="-9" kpx2="1086"/><pair kern="-9" kpx2="1145"/><pair kern="-9" kpx2="1139"/><pair kern="-9" kpx2="1077"/><pair kern="-29" kpx2="1076"/></kerning><kerning kpx1="222"><pair kern="-49" kpx2="65"/><pair kern="-49" kpx2="197"/><pair kern="-49" kpx2="196"/><pair kern="-49" kpx2="193"/><pair kern="-49" kpx2="192"/><pair kern="-49" kpx2="195"/><pair kern="-49" kpx2="194"/><pair kern="-49" kpx2="258"/><pair kern="-49" kpx2="256"/><pair kern="-49" kpx2="260"/><pair kern="-129" kpx2="8218"/><pair kern="-20" kpx2="88"/><pair kern="-129" kpx2="8222"/><pair kern="-49" kpx2="7680"/><pair kern="-9" kpx2="90"/><pair kern="-49" kpx2="7862"/><pair kern="-49" kpx2="7860"/><pair kern="-49" kpx2="7858"/><pair kern="-49" kpx2="506"/><pair kern="-49" kpx2="7856"/><pair kern="-9" kpx2="381"/><pair kern="-129" kpx2="46"/><pair kern="-9" kpx2="377"/><pair kern="-129" kpx2="44"/><pair kern="-9" kpx2="379"/><pair kern="-49" kpx2="7846"/><pair kern="-49" kpx2="7844"/><pair kern="-49" kpx2="7842"/><pair kern="-49" kpx2="7840"/><pair kern="-49" kpx2="7854"/><pair kern="-49" kpx2="7852"/><pair kern="-49" kpx2="7850"/><pair kern="-49" kpx2="7848"/></kerning><kerning kpx1="1170"><pair kern="-29" kpx2="1100"/><pair kern="-20" kpx2="1101"/><pair kern="-29" kpx2="1102"/><pair kern="-29" kpx2="1096"/><pair kern="-29" kpx2="1097"/><pair kern="-29" kpx2="1099"/><pair kern="-40" kpx2="1092"/><pair kern="-20" kpx2="1093"/><pair kern="-29" kpx2="1094"/><pair kern="-49" kpx2="1095"/><pair kern="-29" kpx2="1088"/><pair kern="-40" kpx2="1089"/><pair kern="-29" kpx2="1117"/><pair kern="-29" kpx2="1116"/><pair kern="-29" kpx2="1119"/><pair kern="-49" kpx2="1113"/><pair kern="20" kpx2="1115"/><pair kern="-29" kpx2="1114"/><pair kern="-29" kpx2="1109"/><pair kern="-40" kpx2="1108"/><pair kern="-40" kpx2="1105"/><pair kern="-40" kpx2="1104"/><pair kern="-29" kpx2="1107"/><pair kern="20" kpx2="1106"/><pair kern="-29" kpx2="1133"/><pair kern="-20" kpx2="1131"/><pair kern="-29" kpx2="1129"/><pair kern="-60" kpx2="1126"/><pair kern="-49" kpx2="1127"/><pair kern="-29" kpx2="1125"/><pair kern="-49" kpx2="46"/><pair kern="-49" kpx2="44"/><pair kern="-20" kpx2="1120"/><pair kern="-20" kpx2="45"/><pair kern="-20" kpx2="1150"/><pair kern="-40" kpx2="1149"/><pair kern="-20" kpx2="1148"/><pair kern="-40" kpx2="1147"/><pair kern="-20" kpx2="1146"/><pair kern="-40" kpx2="1145"/><pair kern="-20" kpx2="1144"/><pair kern="-40" kpx2="1139"/><pair kern="-20" kpx2="1138"/><pair kern="-29" kpx2="1137"/><pair kern="-40" kpx2="1033"/><pair kern="20" kpx2="1035"/><pair kern="-49" kpx2="1299"/><pair kern="-40" kpx2="1298"/><pair kern="-40" kpx2="1297"/><pair kern="20" kpx2="1026"/><pair kern="-20" kpx2="1028"/><pair kern="-20" kpx2="8211"/><pair kern="-29" kpx2="1291"/><pair kern="-40" kpx2="1288"/><pair kern="-40" kpx2="1051"/><pair kern="-49" kpx2="1289"/><pair kern="20" kpx2="1294"/><pair kern="-20" kpx2="1292"/><pair kern="-20" kpx2="8213"/><pair kern="-40" kpx2="1293"/><pair kern="-20" kpx2="1054"/><pair kern="-20" kpx2="8212"/><pair kern="-49" kpx2="1282"/><pair kern="-40" kpx2="1283"/><pair kern="-60" kpx2="1040"/><pair kern="-49" kpx2="8218"/><pair kern="-49" kpx2="1280"/><pair kern="-40" kpx2="1281"/><pair kern="-20" kpx2="1287"/><pair kern="-40" kpx2="1044"/><pair kern="-49" kpx2="8222"/><pair kern="-20" kpx2="1285"/><pair kern="20" kpx2="1066"/><pair kern="20" kpx2="1058"/><pair kern="-20" kpx2="1057"/><pair kern="-29" kpx2="1060"/><pair kern="-49" kpx2="1083"/><pair kern="-29" kpx2="1082"/><pair kern="-29" kpx2="1081"/><pair kern="-29" kpx2="1080"/><pair kern="-29" kpx2="1087"/><pair kern="-40" kpx2="1086"/><pair kern="-29" kpx2="1085"/><pair kern="-29" kpx2="1084"/><pair kern="-29" kpx2="1075"/><pair kern="-29" kpx2="1074"/><pair kern="-20" kpx2="1079"/><pair kern="-20" kpx2="1078"/><pair kern="-40" kpx2="1077"/><pair kern="-49" kpx2="1076"/><pair kern="-40" kpx2="1221"/><pair kern="-29" kpx2="1220"/><pair kern="-49" kpx2="1222"/><pair kern="-20" kpx2="1218"/><pair kern="-49" kpx2="1228"/><pair kern="-29" kpx2="1230"/><pair kern="-29" kpx2="1224"/><pair kern="-29" kpx2="1226"/><pair kern="-60" kpx2="1236"/><pair kern="-40" kpx2="1239"/><pair kern="-60" kpx2="1232"/><pair kern="-60" kpx2="1234"/><pair kern="-20" kpx2="1245"/><pair kern="-20" kpx2="1247"/><pair kern="-40" kpx2="1255"/><pair kern="-20" kpx2="1254"/><pair kern="-29" kpx2="1253"/><pair kern="-29" kpx2="1251"/><pair kern="-20" kpx2="1261"/><pair kern="-40" kpx2="1259"/><pair kern="-20" kpx2="1258"/><pair kern="-40" kpx2="1257"/><pair kern="-20" kpx2="1256"/><pair kern="-29" kpx2="1271"/><pair kern="-49" kpx2="1269"/><pair kern="-20" kpx2="1279"/><pair kern="-20" kpx2="1277"/><pair kern="-29" kpx2="1273"/><pair kern="-40" kpx2="1153"/><pair kern="-20" kpx2="1152"/><pair kern="-29" kpx2="1163"/><pair kern="20" kpx2="1165"/><pair kern="-29" kpx2="1167"/><pair kern="-29" kpx2="1169"/><pair kern="-29" kpx2="1173"/><pair kern="-20" kpx2="1175"/><pair kern="-20" kpx2="1177"/><pair kern="-29" kpx2="1179"/><pair kern="-29" kpx2="1181"/><pair kern="20" kpx2="1183"/><pair kern="-29" kpx2="1187"/><pair kern="20" kpx2="1184"/><pair kern="-29" kpx2="1191"/><pair kern="-29" kpx2="1189"/><pair kern="-40" kpx2="1195"/><pair kern="-20" kpx2="1194"/><pair kern="-40" kpx2="1193"/><pair kern="-20" kpx2="1192"/><pair kern="20" kpx2="1196"/><pair kern="-20" kpx2="1203"/><pair kern="-49" kpx2="1207"/><pair kern="20" kpx2="1204"/><pair kern="-29" kpx2="1211"/><pair kern="-49" kpx2="1209"/><pair kern="-20" kpx2="1214"/><pair kern="-29" kpx2="1215"/><pair kern="-20" kpx2="1212"/><pair kern="-29" kpx2="1213"/></kerning><kerning kpx1="1171"><pair kern="-20" kpx2="1153"/><pair kern="-29" kpx2="1222"/><pair kern="-29" kpx2="1299"/><pair kern="-20" kpx2="1092"/><pair kern="-20" kpx2="1297"/><pair kern="-20" kpx2="1089"/><pair kern="-29" kpx2="1289"/><pair kern="-20" kpx2="1239"/><pair kern="-29" kpx2="1113"/><pair kern="-20" kpx2="1293"/><pair kern="-20" kpx2="1283"/><pair kern="-29" kpx2="8218"/><pair kern="-20" kpx2="1108"/><pair kern="-20" kpx2="1281"/><pair kern="-20" kpx2="1105"/><pair kern="-29" kpx2="8222"/><pair kern="-20" kpx2="1104"/><pair kern="-20" kpx2="1255"/><pair kern="-20" kpx2="1195"/><pair kern="-29" kpx2="1127"/><pair kern="-20" kpx2="1193"/><pair kern="-20" kpx2="1259"/><pair kern="-29" kpx2="46"/><pair kern="-20" kpx2="1257"/><pair kern="-29" kpx2="44"/><pair kern="-29" kpx2="1083"/><pair kern="-20" kpx2="1149"/><pair kern="-20" kpx2="1147"/><pair kern="-20" kpx2="1086"/><pair kern="-20" kpx2="1145"/><pair kern="-20" kpx2="1139"/><pair kern="-20" kpx2="1077"/><pair kern="-29" kpx2="1076"/></kerning><kerning kpx1="216"><pair kern="-20" kpx2="258"/><pair kern="-20" kpx2="256"/><pair kern="-20" kpx2="260"/><pair kern="-9" kpx2="7922"/><pair kern="-9" kpx2="7926"/><pair kern="-9" kpx2="7924"/><pair kern="-9" kpx2="7928"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="44"/><pair kern="-29" kpx2="538"/><pair kern="-20" kpx2="65"/><pair kern="-20" kpx2="197"/><pair kern="-20" kpx2="196"/><pair kern="-20" kpx2="193"/><pair kern="-20" kpx2="192"/><pair kern="-9" kpx2="1029"/><pair kern="-20" kpx2="195"/><pair kern="-20" kpx2="194"/><pair kern="-9" kpx2="7812"/><pair kern="-9" kpx2="221"/><pair kern="-29" kpx2="84"/><pair kern="-9" kpx2="87"/><pair kern="-9" kpx2="86"/><pair kern="-9" kpx2="7808"/><pair kern="-9" kpx2="7810"/><pair kern="-40" kpx2="8218"/><pair kern="-9" kpx2="89"/><pair kern="-20" kpx2="88"/><pair kern="-40" kpx2="8222"/><pair kern="-20" kpx2="7680"/><pair kern="-9" kpx2="90"/><pair kern="-9" kpx2="372"/><pair kern="-20" kpx2="7862"/><pair kern="-9" kpx2="374"/><pair kern="-20" kpx2="7860"/><pair kern="-20" kpx2="7858"/><pair kern="-20" kpx2="506"/><pair kern="-20" kpx2="7856"/><pair kern="-9" kpx2="381"/><pair kern="-9" kpx2="377"/><pair kern="-9" kpx2="376"/><pair kern="-9" kpx2="379"/><pair kern="-29" kpx2="356"/><pair kern="-20" kpx2="7846"/><pair kern="-20" kpx2="7844"/><pair kern="-20" kpx2="7842"/><pair kern="-29" kpx2="354"/><pair kern="-20" kpx2="7840"/><pair kern="-20" kpx2="7854"/><pair kern="-20" kpx2="7852"/><pair kern="-20" kpx2="7850"/><pair kern="-20" kpx2="7848"/></kerning><kerning kpx1="1172"><pair kern="49" kpx2="1032"/><pair kern="-29" kpx2="1035"/><pair kern="-20" kpx2="1098"/><pair kern="-20" kpx2="1228"/><pair kern="-29" kpx2="1026"/><pair kern="-20" kpx2="1095"/><pair kern="-40" kpx2="1227"/><pair kern="-20" kpx2="1090"/><pair kern="-29" kpx2="1294"/><pair kern="-20" kpx2="1295"/><pair kern="-29" kpx2="8217"/><pair kern="-20" kpx2="1286"/><pair kern="-29" kpx2="1287"/><pair kern="-20" kpx2="1284"/><pair kern="-29" kpx2="8221"/><pair kern="-29" kpx2="1285"/><pair kern="-29" kpx2="1066"/><pair kern="-29" kpx2="34"/><pair kern="-20" kpx2="1185"/><pair kern="-29" kpx2="1184"/><pair kern="-29" kpx2="39"/><pair kern="-29" kpx2="1058"/><pair kern="-40" kpx2="1063"/><pair kern="-20" kpx2="1198"/><pair kern="-20" kpx2="1197"/><pair kern="-29" kpx2="1196"/><pair kern="-40" kpx2="1268"/><pair kern="-20" kpx2="1200"/><pair kern="-20" kpx2="1269"/><pair kern="-40" kpx2="1206"/><pair kern="-20" kpx2="1207"/><pair kern="-29" kpx2="1204"/><pair kern="-20" kpx2="1205"/><pair kern="-29" kpx2="1142"/><pair kern="-40" kpx2="1208"/><pair kern="-20" kpx2="1209"/><pair kern="-29" kpx2="1140"/><pair kern="-40" kpx2="1136"/></kerning><kerning kpx1="217"><pair kern="-9" kpx2="65"/><pair kern="-9" kpx2="197"/><pair kern="-9" kpx2="196"/><pair kern="-9" kpx2="193"/><pair kern="-9" kpx2="192"/><pair kern="-9" kpx2="195"/><pair kern="-9" kpx2="194"/><pair kern="-9" kpx2="258"/><pair kern="-9" kpx2="256"/><pair kern="-9" kpx2="260"/><pair kern="-20" kpx2="8218"/><pair kern="-20" kpx2="8222"/><pair kern="-9" kpx2="7680"/><pair kern="-9" kpx2="7862"/><pair kern="-9" kpx2="7860"/><pair kern="-9" kpx2="7858"/><pair kern="-9" kpx2="506"/><pair kern="-9" kpx2="7856"/><pair kern="-20" kpx2="46"/><pair kern="-20" kpx2="44"/><pair kern="-9" kpx2="7846"/><pair kern="-9" kpx2="7844"/><pair kern="-9" kpx2="7842"/><pair kern="-9" kpx2="7840"/><pair kern="-9" kpx2="7854"/><pair kern="-9" kpx2="7852"/><pair kern="-9" kpx2="7850"/><pair kern="-9" kpx2="7848"/></kerning><kerning kpx1="1173"><pair kern="-29" kpx2="34"/><pair kern="-29" kpx2="39"/><pair kern="-29" kpx2="8217"/><pair kern="-20" kpx2="1287"/><pair kern="-29" kpx2="8221"/><pair kern="-20" kpx2="1285"/></kerning><kerning kpx1="218"><pair kern="-9" kpx2="65"/><pair kern="-9" kpx2="197"/><pair kern="-9" kpx2="196"/><pair kern="-9" kpx2="193"/><pair kern="-9" kpx2="192"/><pair kern="-9" kpx2="195"/><pair kern="-9" kpx2="194"/><pair kern="-9" kpx2="258"/><pair kern="-9" kpx2="256"/><pair kern="-9" kpx2="260"/><pair kern="-20" kpx2="8218"/><pair kern="-20" kpx2="8222"/><pair kern="-9" kpx2="7680"/><pair kern="-9" kpx2="7862"/><pair kern="-9" kpx2="7860"/><pair kern="-9" kpx2="7858"/><pair kern="-9" kpx2="506"/><pair kern="-9" kpx2="7856"/><pair kern="-20" kpx2="46"/><pair kern="-20" kpx2="44"/><pair kern="-9" kpx2="7846"/><pair kern="-9" kpx2="7844"/><pair kern="-9" kpx2="7842"/><pair kern="-9" kpx2="7840"/><pair kern="-9" kpx2="7854"/><pair kern="-9" kpx2="7852"/><pair kern="-9" kpx2="7850"/><pair kern="-9" kpx2="7848"/></kerning><kerning kpx1="1174"><pair kern="109" kpx2="1032"/><pair kern="-20" kpx2="1152"/><pair kern="-20" kpx2="1098"/><pair kern="-40" kpx2="1228"/><pair kern="-40" kpx2="1095"/><pair kern="-20" kpx2="1028"/><pair kern="-20" kpx2="1090"/><pair kern="-20" kpx2="1295"/><pair kern="-20" kpx2="1292"/><pair kern="-20" kpx2="1054"/><pair kern="-20" kpx2="1287"/><pair kern="-20" kpx2="1285"/><pair kern="-20" kpx2="1254"/><pair kern="29" kpx2="1135"/><pair kern="-20" kpx2="1185"/><pair kern="-20" kpx2="1194"/><pair kern="-20" kpx2="1057"/><pair kern="-20" kpx2="1192"/><pair kern="-20" kpx2="1258"/><pair kern="-20" kpx2="1120"/><pair kern="-29" kpx2="1060"/><pair kern="-20" kpx2="1197"/><pair kern="-20" kpx2="1256"/><pair kern="-20" kpx2="1150"/><pair kern="-40" kpx2="1269"/><pair kern="-20" kpx2="1148"/><pair kern="-20" kpx2="1146"/><pair kern="-40" kpx2="1207"/><pair kern="-20" kpx2="1144"/><pair kern="-20" kpx2="1205"/><pair kern="-40" kpx2="1209"/><pair kern="-29" kpx2="1214"/><pair kern="-20" kpx2="1215"/><pair kern="-20" kpx2="1138"/><pair kern="-29" kpx2="1212"/><pair kern="-9" kpx2="1137"/><pair kern="-20" kpx2="1213"/></kerning><kerning kpx1="219"><pair kern="-9" kpx2="65"/><pair kern="-9" kpx2="197"/><pair kern="-9" kpx2="196"/><pair kern="-9" kpx2="193"/><pair kern="-9" kpx2="192"/><pair kern="-9" kpx2="195"/><pair kern="-9" kpx2="194"/><pair kern="-9" kpx2="258"/><pair kern="-9" kpx2="256"/><pair kern="-9" kpx2="260"/><pair kern="-20" kpx2="8218"/><pair kern="-20" kpx2="8222"/><pair kern="-9" kpx2="7680"/><pair kern="-9" kpx2="7862"/><pair kern="-9" kpx2="7860"/><pair kern="-9" kpx2="7858"/><pair kern="-9" kpx2="506"/><pair kern="-9" kpx2="7856"/><pair kern="-20" kpx2="46"/><pair kern="-20" kpx2="44"/><pair kern="-9" kpx2="7846"/><pair kern="-9" kpx2="7844"/><pair kern="-9" kpx2="7842"/><pair kern="-9" kpx2="7840"/><pair kern="-9" kpx2="7854"/><pair kern="-9" kpx2="7852"/><pair kern="-9" kpx2="7850"/><pair kern="-9" kpx2="7848"/></kerning><kerning kpx1="1175"><pair kern="-9" kpx2="1153"/><pair kern="-9" kpx2="1092"/><pair kern="-9" kpx2="1228"/><pair kern="-9" kpx2="1297"/><pair kern="-9" kpx2="1095"/><pair kern="-9" kpx2="1089"/><pair kern="-9" kpx2="1239"/><pair kern="-9" kpx2="1293"/><pair kern="-9" kpx2="1283"/><pair kern="-9" kpx2="1108"/><pair kern="-9" kpx2="1281"/><pair kern="-9" kpx2="1105"/><pair kern="-20" kpx2="1287"/><pair kern="-9" kpx2="1104"/><pair kern="-20" kpx2="1285"/><pair kern="-9" kpx2="1255"/><pair kern="-9" kpx2="1195"/><pair kern="-9" kpx2="1193"/><pair kern="-9" kpx2="1259"/><pair kern="-9" kpx2="1257"/><pair kern="-9" kpx2="1149"/><pair kern="-9" kpx2="1269"/><pair kern="-9" kpx2="1147"/><pair kern="-9" kpx2="1086"/><pair kern="-9" kpx2="1207"/><pair kern="-9" kpx2="1145"/><pair kern="-9" kpx2="1209"/><pair kern="-9" kpx2="1139"/><pair kern="-9" kpx2="1077"/></kerning><kerning kpx1="212"><pair kern="-20" kpx2="258"/><pair kern="-20" kpx2="256"/><pair kern="-20" kpx2="260"/><pair kern="-9" kpx2="7922"/><pair kern="-9" kpx2="7926"/><pair kern="-9" kpx2="7924"/><pair kern="-9" kpx2="7928"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="44"/><pair kern="-29" kpx2="538"/><pair kern="-20" kpx2="65"/><pair kern="-20" kpx2="197"/><pair kern="-20" kpx2="196"/><pair kern="-20" kpx2="193"/><pair kern="-20" kpx2="192"/><pair kern="-9" kpx2="1029"/><pair kern="-20" kpx2="195"/><pair kern="-20" kpx2="194"/><pair kern="-9" kpx2="7812"/><pair kern="-9" kpx2="221"/><pair kern="-29" kpx2="84"/><pair kern="-9" kpx2="87"/><pair kern="-9" kpx2="86"/><pair kern="-9" kpx2="7808"/><pair kern="-9" kpx2="7810"/><pair kern="-40" kpx2="8218"/><pair kern="-9" kpx2="89"/><pair kern="-20" kpx2="88"/><pair kern="-40" kpx2="8222"/><pair kern="-20" kpx2="7680"/><pair kern="-9" kpx2="90"/><pair kern="-9" kpx2="372"/><pair kern="-20" kpx2="7862"/><pair kern="-9" kpx2="374"/><pair kern="-20" kpx2="7860"/><pair kern="-20" kpx2="7858"/><pair kern="-20" kpx2="506"/><pair kern="-20" kpx2="7856"/><pair kern="-9" kpx2="381"/><pair kern="-9" kpx2="377"/><pair kern="-9" kpx2="376"/><pair kern="-9" kpx2="379"/><pair kern="-29" kpx2="356"/><pair kern="-20" kpx2="7846"/><pair kern="-20" kpx2="7844"/><pair kern="-20" kpx2="7842"/><pair kern="-29" kpx2="354"/><pair kern="-20" kpx2="7840"/><pair kern="-20" kpx2="7854"/><pair kern="-20" kpx2="7852"/><pair kern="-20" kpx2="7850"/><pair kern="-20" kpx2="7848"/></kerning><kerning kpx1="1176"><pair kern="-9" kpx2="1200"/><pair kern="-9" kpx2="1142"/><pair kern="-40" kpx2="8218"/><pair kern="-9" kpx2="1140"/><pair kern="-20" kpx2="1286"/><pair kern="-40" kpx2="46"/><pair kern="-9" kpx2="1198"/><pair kern="-40" kpx2="8222"/><pair kern="-20" kpx2="1284"/><pair kern="-40" kpx2="44"/></kerning><kerning kpx1="213"><pair kern="-20" kpx2="258"/><pair kern="-20" kpx2="256"/><pair kern="-20" kpx2="260"/><pair kern="-9" kpx2="7922"/><pair kern="-9" kpx2="7926"/><pair kern="-9" kpx2="7924"/><pair kern="-9" kpx2="7928"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="44"/><pair kern="-29" kpx2="538"/><pair kern="-20" kpx2="65"/><pair kern="-20" kpx2="197"/><pair kern="-20" kpx2="196"/><pair kern="-20" kpx2="193"/><pair kern="-20" kpx2="192"/><pair kern="-9" kpx2="1029"/><pair kern="-20" kpx2="195"/><pair kern="-20" kpx2="194"/><pair kern="-9" kpx2="7812"/><pair kern="-9" kpx2="221"/><pair kern="-29" kpx2="84"/><pair kern="-9" kpx2="87"/><pair kern="-9" kpx2="86"/><pair kern="-9" kpx2="7808"/><pair kern="-9" kpx2="7810"/><pair kern="-40" kpx2="8218"/><pair kern="-9" kpx2="89"/><pair kern="-20" kpx2="88"/><pair kern="-40" kpx2="8222"/><pair kern="-20" kpx2="7680"/><pair kern="-9" kpx2="90"/><pair kern="-9" kpx2="372"/><pair kern="-20" kpx2="7862"/><pair kern="-9" kpx2="374"/><pair kern="-20" kpx2="7860"/><pair kern="-20" kpx2="7858"/><pair kern="-20" kpx2="506"/><pair kern="-20" kpx2="7856"/><pair kern="-9" kpx2="381"/><pair kern="-9" kpx2="377"/><pair kern="-9" kpx2="376"/><pair kern="-9" kpx2="379"/><pair kern="-29" kpx2="356"/><pair kern="-20" kpx2="7846"/><pair kern="-20" kpx2="7844"/><pair kern="-20" kpx2="7842"/><pair kern="-29" kpx2="354"/><pair kern="-20" kpx2="7840"/><pair kern="-20" kpx2="7854"/><pair kern="-20" kpx2="7852"/><pair kern="-20" kpx2="7850"/><pair kern="-20" kpx2="7848"/></kerning><kerning kpx1="1177"><pair kern="20" kpx2="1103"/></kerning><kerning kpx1="214"><pair kern="-20" kpx2="258"/><pair kern="-20" kpx2="256"/><pair kern="-20" kpx2="260"/><pair kern="-9" kpx2="7922"/><pair kern="-9" kpx2="7926"/><pair kern="-9" kpx2="7924"/><pair kern="-9" kpx2="7928"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="44"/><pair kern="-29" kpx2="538"/><pair kern="-20" kpx2="65"/><pair kern="-20" kpx2="197"/><pair kern="-20" kpx2="196"/><pair kern="-20" kpx2="193"/><pair kern="-20" kpx2="192"/><pair kern="-9" kpx2="1029"/><pair kern="-20" kpx2="195"/><pair kern="-20" kpx2="194"/><pair kern="-9" kpx2="7812"/><pair kern="-9" kpx2="221"/><pair kern="-29" kpx2="84"/><pair kern="-9" kpx2="87"/><pair kern="-9" kpx2="86"/><pair kern="-9" kpx2="7808"/><pair kern="-9" kpx2="7810"/><pair kern="-40" kpx2="8218"/><pair kern="-9" kpx2="89"/><pair kern="-20" kpx2="88"/><pair kern="-40" kpx2="8222"/><pair kern="-20" kpx2="7680"/><pair kern="-9" kpx2="90"/><pair kern="-9" kpx2="372"/><pair kern="-20" kpx2="7862"/><pair kern="-9" kpx2="374"/><pair kern="-20" kpx2="7860"/><pair kern="-20" kpx2="7858"/><pair kern="-20" kpx2="506"/><pair kern="-20" kpx2="7856"/><pair kern="-9" kpx2="381"/><pair kern="-9" kpx2="377"/><pair kern="-9" kpx2="376"/><pair kern="-9" kpx2="379"/><pair kern="-29" kpx2="356"/><pair kern="-20" kpx2="7846"/><pair kern="-20" kpx2="7844"/><pair kern="-20" kpx2="7842"/><pair kern="-29" kpx2="354"/><pair kern="-20" kpx2="7840"/><pair kern="-20" kpx2="7854"/><pair kern="-20" kpx2="7852"/><pair kern="-20" kpx2="7850"/><pair kern="-20" kpx2="7848"/></kerning><kerning kpx1="1178"><pair kern="109" kpx2="1032"/><pair kern="-20" kpx2="1152"/><pair kern="-20" kpx2="1098"/><pair kern="-40" kpx2="1228"/><pair kern="-40" kpx2="1095"/><pair kern="-20" kpx2="1028"/><pair kern="-20" kpx2="1090"/><pair kern="-20" kpx2="1295"/><pair kern="-20" kpx2="1292"/><pair kern="-20" kpx2="1054"/><pair kern="-20" kpx2="1287"/><pair kern="-20" kpx2="1285"/><pair kern="-20" kpx2="1254"/><pair kern="29" kpx2="1135"/><pair kern="-20" kpx2="1185"/><pair kern="-20" kpx2="1194"/><pair kern="-20" kpx2="1057"/><pair kern="-20" kpx2="1192"/><pair kern="-20" kpx2="1258"/><pair kern="-20" kpx2="1120"/><pair kern="-29" kpx2="1060"/><pair kern="-20" kpx2="1197"/><pair kern="-20" kpx2="1256"/><pair kern="-20" kpx2="1150"/><pair kern="-40" kpx2="1269"/><pair kern="-20" kpx2="1148"/><pair kern="-20" kpx2="1146"/><pair kern="-40" kpx2="1207"/><pair kern="-20" kpx2="1144"/><pair kern="-20" kpx2="1205"/><pair kern="-40" kpx2="1209"/><pair kern="-29" kpx2="1214"/><pair kern="-20" kpx2="1215"/><pair kern="-20" kpx2="1138"/><pair kern="-29" kpx2="1212"/><pair kern="-9" kpx2="1137"/><pair kern="-20" kpx2="1213"/></kerning><kerning kpx1="1179"><pair kern="-9" kpx2="1153"/><pair kern="-9" kpx2="1092"/><pair kern="-9" kpx2="1228"/><pair kern="-9" kpx2="1297"/><pair kern="-9" kpx2="1095"/><pair kern="-9" kpx2="1089"/><pair kern="-9" kpx2="1239"/><pair kern="-9" kpx2="1293"/><pair kern="-9" kpx2="1283"/><pair kern="-9" kpx2="1108"/><pair kern="-9" kpx2="1281"/><pair kern="-9" kpx2="1105"/><pair kern="-20" kpx2="1287"/><pair kern="-9" kpx2="1104"/><pair kern="-20" kpx2="1285"/><pair kern="-9" kpx2="1255"/><pair kern="-9" kpx2="1195"/><pair kern="-9" kpx2="1193"/><pair kern="-9" kpx2="1259"/><pair kern="-9" kpx2="1257"/><pair kern="-9" kpx2="1149"/><pair kern="-9" kpx2="1269"/><pair kern="-9" kpx2="1147"/><pair kern="-9" kpx2="1086"/><pair kern="-9" kpx2="1207"/><pair kern="-9" kpx2="1145"/><pair kern="-9" kpx2="1209"/><pair kern="-9" kpx2="1139"/><pair kern="-9" kpx2="1077"/></kerning><kerning kpx1="208"><pair kern="-20" kpx2="258"/><pair kern="-20" kpx2="256"/><pair kern="-20" kpx2="260"/><pair kern="-9" kpx2="7922"/><pair kern="-9" kpx2="7926"/><pair kern="-9" kpx2="7924"/><pair kern="-9" kpx2="7928"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="44"/><pair kern="-29" kpx2="538"/><pair kern="-20" kpx2="65"/><pair kern="-20" kpx2="197"/><pair kern="-20" kpx2="196"/><pair kern="-20" kpx2="193"/><pair kern="-20" kpx2="192"/><pair kern="-9" kpx2="1029"/><pair kern="-20" kpx2="195"/><pair kern="-20" kpx2="194"/><pair kern="-9" kpx2="7812"/><pair kern="-9" kpx2="221"/><pair kern="-29" kpx2="84"/><pair kern="-9" kpx2="87"/><pair kern="-9" kpx2="86"/><pair kern="-9" kpx2="7808"/><pair kern="-9" kpx2="7810"/><pair kern="-40" kpx2="8218"/><pair kern="-9" kpx2="89"/><pair kern="-20" kpx2="88"/><pair kern="-40" kpx2="8222"/><pair kern="-20" kpx2="7680"/><pair kern="-9" kpx2="90"/><pair kern="-9" kpx2="372"/><pair kern="-20" kpx2="7862"/><pair kern="-9" kpx2="374"/><pair kern="-20" kpx2="7860"/><pair kern="-20" kpx2="7858"/><pair kern="-20" kpx2="506"/><pair kern="-20" kpx2="7856"/><pair kern="-9" kpx2="381"/><pair kern="-9" kpx2="377"/><pair kern="-9" kpx2="376"/><pair kern="-9" kpx2="379"/><pair kern="-29" kpx2="356"/><pair kern="-20" kpx2="7846"/><pair kern="-20" kpx2="7844"/><pair kern="-20" kpx2="7842"/><pair kern="-29" kpx2="354"/><pair kern="-20" kpx2="7840"/><pair kern="-20" kpx2="7854"/><pair kern="-20" kpx2="7852"/><pair kern="-20" kpx2="7850"/><pair kern="-20" kpx2="7848"/></kerning><kerning kpx1="1180"><pair kern="-20" kpx2="1152"/><pair kern="-20" kpx2="1228"/><pair kern="-9" kpx2="1296"/><pair kern="-20" kpx2="1095"/><pair kern="-20" kpx2="1028"/><pair kern="-20" kpx2="1227"/><pair kern="-20" kpx2="1292"/><pair kern="-20" kpx2="1054"/><pair kern="-20" kpx2="1282"/><pair kern="-20" kpx2="1280"/><pair kern="-20" kpx2="1287"/><pair kern="-20" kpx2="1285"/><pair kern="-20" kpx2="1254"/><pair kern="-20" kpx2="1194"/><pair kern="-20" kpx2="1057"/><pair kern="-20" kpx2="1192"/><pair kern="-20" kpx2="1258"/><pair kern="-20" kpx2="1063"/><pair kern="-20" kpx2="1120"/><pair kern="-20" kpx2="1060"/><pair kern="-20" kpx2="1256"/><pair kern="-20" kpx2="1150"/><pair kern="-20" kpx2="1268"/><pair kern="-20" kpx2="1269"/><pair kern="-20" kpx2="1148"/><pair kern="-20" kpx2="1206"/><pair kern="-20" kpx2="1146"/><pair kern="-20" kpx2="1207"/><pair kern="-20" kpx2="1144"/><pair kern="-20" kpx2="1208"/><pair kern="-20" kpx2="1209"/><pair kern="-49" kpx2="1214"/><pair kern="-20" kpx2="1138"/><pair kern="-49" kpx2="1212"/><pair kern="-20" kpx2="1136"/></kerning><kerning kpx1="1181"><pair kern="-20" kpx2="1153"/><pair kern="-20" kpx2="1092"/><pair kern="-20" kpx2="1228"/><pair kern="-20" kpx2="1297"/><pair kern="-20" kpx2="1095"/><pair kern="-20" kpx2="1089"/><pair kern="-20" kpx2="1239"/><pair kern="-20" kpx2="1293"/><pair kern="-20" kpx2="1283"/><pair kern="-20" kpx2="1108"/><pair kern="-20" kpx2="1281"/><pair kern="-20" kpx2="1105"/><pair kern="-20" kpx2="1104"/><pair kern="-20" kpx2="1255"/><pair kern="-20" kpx2="1195"/><pair kern="-20" kpx2="1193"/><pair kern="-20" kpx2="1259"/><pair kern="-20" kpx2="1257"/><pair kern="-20" kpx2="1149"/><pair kern="-20" kpx2="1269"/><pair kern="-20" kpx2="1147"/><pair kern="-20" kpx2="1086"/><pair kern="-20" kpx2="1207"/><pair kern="-20" kpx2="1145"/><pair kern="-20" kpx2="1209"/><pair kern="-20" kpx2="1139"/><pair kern="-20" kpx2="1215"/><pair kern="-20" kpx2="1077"/><pair kern="-20" kpx2="1213"/></kerning><kerning kpx1="210"><pair kern="-20" kpx2="258"/><pair kern="-20" kpx2="256"/><pair kern="-20" kpx2="260"/><pair kern="-9" kpx2="7922"/><pair kern="-9" kpx2="7926"/><pair kern="-9" kpx2="7924"/><pair kern="-9" kpx2="7928"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="44"/><pair kern="-29" kpx2="538"/><pair kern="-20" kpx2="65"/><pair kern="-20" kpx2="197"/><pair kern="-20" kpx2="196"/><pair kern="-20" kpx2="193"/><pair kern="-20" kpx2="192"/><pair kern="-9" kpx2="1029"/><pair kern="-20" kpx2="195"/><pair kern="-20" kpx2="194"/><pair kern="-9" kpx2="7812"/><pair kern="-9" kpx2="221"/><pair kern="-29" kpx2="84"/><pair kern="-9" kpx2="87"/><pair kern="-9" kpx2="86"/><pair kern="-9" kpx2="7808"/><pair kern="-9" kpx2="7810"/><pair kern="-40" kpx2="8218"/><pair kern="-9" kpx2="89"/><pair kern="-20" kpx2="88"/><pair kern="-40" kpx2="8222"/><pair kern="-20" kpx2="7680"/><pair kern="-9" kpx2="90"/><pair kern="-9" kpx2="372"/><pair kern="-20" kpx2="7862"/><pair kern="-9" kpx2="374"/><pair kern="-20" kpx2="7860"/><pair kern="-20" kpx2="7858"/><pair kern="-20" kpx2="506"/><pair kern="-20" kpx2="7856"/><pair kern="-9" kpx2="381"/><pair kern="-9" kpx2="377"/><pair kern="-9" kpx2="376"/><pair kern="-9" kpx2="379"/><pair kern="-29" kpx2="356"/><pair kern="-20" kpx2="7846"/><pair kern="-20" kpx2="7844"/><pair kern="-20" kpx2="7842"/><pair kern="-29" kpx2="354"/><pair kern="-20" kpx2="7840"/><pair kern="-20" kpx2="7854"/><pair kern="-20" kpx2="7852"/><pair kern="-20" kpx2="7850"/><pair kern="-20" kpx2="7848"/></kerning><kerning kpx1="1182"><pair kern="-20" kpx2="1152"/><pair kern="-20" kpx2="1228"/><pair kern="-9" kpx2="1296"/><pair kern="-20" kpx2="1095"/><pair kern="-20" kpx2="1028"/><pair kern="-20" kpx2="1227"/><pair kern="-20" kpx2="1292"/><pair kern="-20" kpx2="1054"/><pair kern="-20" kpx2="1282"/><pair kern="-20" kpx2="1280"/><pair kern="-20" kpx2="1287"/><pair kern="-20" kpx2="1285"/><pair kern="-20" kpx2="1254"/><pair kern="-20" kpx2="1194"/><pair kern="-20" kpx2="1057"/><pair kern="-20" kpx2="1192"/><pair kern="-20" kpx2="1258"/><pair kern="-20" kpx2="1063"/><pair kern="-20" kpx2="1120"/><pair kern="-20" kpx2="1060"/><pair kern="-20" kpx2="1256"/><pair kern="-20" kpx2="1150"/><pair kern="-20" kpx2="1268"/><pair kern="-20" kpx2="1269"/><pair kern="-20" kpx2="1148"/><pair kern="-20" kpx2="1206"/><pair kern="-20" kpx2="1146"/><pair kern="-20" kpx2="1207"/><pair kern="-20" kpx2="1144"/><pair kern="-20" kpx2="1208"/><pair kern="-20" kpx2="1209"/><pair kern="-49" kpx2="1214"/><pair kern="-20" kpx2="1138"/><pair kern="-49" kpx2="1212"/><pair kern="-20" kpx2="1136"/></kerning><kerning kpx1="211"><pair kern="-20" kpx2="258"/><pair kern="-20" kpx2="256"/><pair kern="-20" kpx2="260"/><pair kern="-9" kpx2="7922"/><pair kern="-9" kpx2="7926"/><pair kern="-9" kpx2="7924"/><pair kern="-9" kpx2="7928"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="44"/><pair kern="-29" kpx2="538"/><pair kern="-20" kpx2="65"/><pair kern="-20" kpx2="197"/><pair kern="-20" kpx2="196"/><pair kern="-20" kpx2="193"/><pair kern="-20" kpx2="192"/><pair kern="-9" kpx2="1029"/><pair kern="-20" kpx2="195"/><pair kern="-20" kpx2="194"/><pair kern="-9" kpx2="7812"/><pair kern="-9" kpx2="221"/><pair kern="-29" kpx2="84"/><pair kern="-9" kpx2="87"/><pair kern="-9" kpx2="86"/><pair kern="-9" kpx2="7808"/><pair kern="-9" kpx2="7810"/><pair kern="-40" kpx2="8218"/><pair kern="-9" kpx2="89"/><pair kern="-20" kpx2="88"/><pair kern="-40" kpx2="8222"/><pair kern="-20" kpx2="7680"/><pair kern="-9" kpx2="90"/><pair kern="-9" kpx2="372"/><pair kern="-20" kpx2="7862"/><pair kern="-9" kpx2="374"/><pair kern="-20" kpx2="7860"/><pair kern="-20" kpx2="7858"/><pair kern="-20" kpx2="506"/><pair kern="-20" kpx2="7856"/><pair kern="-9" kpx2="381"/><pair kern="-9" kpx2="377"/><pair kern="-9" kpx2="376"/><pair kern="-9" kpx2="379"/><pair kern="-29" kpx2="356"/><pair kern="-20" kpx2="7846"/><pair kern="-20" kpx2="7844"/><pair kern="-20" kpx2="7842"/><pair kern="-29" kpx2="354"/><pair kern="-20" kpx2="7840"/><pair kern="-20" kpx2="7854"/><pair kern="-20" kpx2="7852"/><pair kern="-20" kpx2="7850"/><pair kern="-20" kpx2="7848"/></kerning><kerning kpx1="1183"><pair kern="-20" kpx2="1153"/><pair kern="-20" kpx2="1092"/><pair kern="-20" kpx2="1228"/><pair kern="-20" kpx2="1297"/><pair kern="-20" kpx2="1095"/><pair kern="-20" kpx2="1089"/><pair kern="-20" kpx2="1239"/><pair kern="-20" kpx2="1293"/><pair kern="-20" kpx2="1283"/><pair kern="-20" kpx2="1108"/><pair kern="-20" kpx2="1281"/><pair kern="-20" kpx2="1105"/><pair kern="-20" kpx2="1104"/><pair kern="-20" kpx2="1255"/><pair kern="-20" kpx2="1195"/><pair kern="-20" kpx2="1193"/><pair kern="-20" kpx2="1259"/><pair kern="-20" kpx2="1257"/><pair kern="-20" kpx2="1149"/><pair kern="-20" kpx2="1269"/><pair kern="-20" kpx2="1147"/><pair kern="-20" kpx2="1086"/><pair kern="-20" kpx2="1207"/><pair kern="-20" kpx2="1145"/><pair kern="-20" kpx2="1209"/><pair kern="-20" kpx2="1139"/><pair kern="-20" kpx2="1215"/><pair kern="-20" kpx2="1077"/><pair kern="-20" kpx2="1213"/></kerning><kerning kpx1="1187"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="1186"><pair kern="109" kpx2="1032"/><pair kern="20" kpx2="1249"/><pair kern="-20" kpx2="1287"/><pair kern="-20" kpx2="1285"/></kerning><kerning kpx1="1185"><pair kern="-20" kpx2="1153"/><pair kern="-20" kpx2="1092"/><pair kern="-20" kpx2="1228"/><pair kern="-20" kpx2="1297"/><pair kern="-20" kpx2="1095"/><pair kern="-20" kpx2="1089"/><pair kern="-20" kpx2="1239"/><pair kern="-20" kpx2="1293"/><pair kern="-20" kpx2="1283"/><pair kern="-20" kpx2="1108"/><pair kern="-20" kpx2="1281"/><pair kern="-20" kpx2="1105"/><pair kern="-20" kpx2="1104"/><pair kern="-20" kpx2="1255"/><pair kern="-20" kpx2="1195"/><pair kern="-20" kpx2="1193"/><pair kern="-20" kpx2="1259"/><pair kern="-20" kpx2="1257"/><pair kern="-20" kpx2="1149"/><pair kern="-20" kpx2="1269"/><pair kern="-20" kpx2="1147"/><pair kern="-20" kpx2="1086"/><pair kern="-20" kpx2="1207"/><pair kern="-20" kpx2="1145"/><pair kern="-20" kpx2="1209"/><pair kern="-20" kpx2="1139"/><pair kern="-20" kpx2="1215"/><pair kern="-20" kpx2="1077"/><pair kern="-20" kpx2="1213"/></kerning><kerning kpx1="1184"><pair kern="-20" kpx2="1152"/><pair kern="-20" kpx2="1228"/><pair kern="-9" kpx2="1296"/><pair kern="-20" kpx2="1095"/><pair kern="-20" kpx2="1028"/><pair kern="-20" kpx2="1227"/><pair kern="-20" kpx2="1292"/><pair kern="-20" kpx2="1054"/><pair kern="-20" kpx2="1282"/><pair kern="-20" kpx2="1280"/><pair kern="-20" kpx2="1287"/><pair kern="-20" kpx2="1285"/><pair kern="-20" kpx2="1254"/><pair kern="-20" kpx2="1194"/><pair kern="-20" kpx2="1057"/><pair kern="-20" kpx2="1192"/><pair kern="-20" kpx2="1258"/><pair kern="-20" kpx2="1063"/><pair kern="-20" kpx2="1120"/><pair kern="-20" kpx2="1060"/><pair kern="-20" kpx2="1256"/><pair kern="-20" kpx2="1150"/><pair kern="-20" kpx2="1268"/><pair kern="-20" kpx2="1269"/><pair kern="-20" kpx2="1148"/><pair kern="-20" kpx2="1206"/><pair kern="-20" kpx2="1146"/><pair kern="-20" kpx2="1207"/><pair kern="-20" kpx2="1144"/><pair kern="-20" kpx2="1208"/><pair kern="-20" kpx2="1209"/><pair kern="-49" kpx2="1214"/><pair kern="-20" kpx2="1138"/><pair kern="-49" kpx2="1212"/><pair kern="-20" kpx2="1136"/></kerning><kerning kpx1="235"><pair kern="-9" kpx2="34"/><pair kern="-20" kpx2="373"/><pair kern="-9" kpx2="39"/><pair kern="-20" kpx2="7925"/><pair kern="-9" kpx2="380"/><pair kern="-9" kpx2="382"/><pair kern="-9" kpx2="378"/><pair kern="-20" kpx2="119"/><pair kern="-20" kpx2="118"/><pair kern="-20" kpx2="253"/><pair kern="-20" kpx2="7809"/><pair kern="-20" kpx2="7811"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="122"/><pair kern="-9" kpx2="8221"/><pair kern="-20" kpx2="121"/><pair kern="-20" kpx2="120"/></kerning><kerning kpx1="1191"><pair kern="-49" kpx2="1098"/><pair kern="-20" kpx2="1228"/><pair kern="-20" kpx2="1095"/><pair kern="-49" kpx2="1090"/><pair kern="-49" kpx2="1295"/><pair kern="-69" kpx2="8217"/><pair kern="-69" kpx2="1287"/><pair kern="-69" kpx2="8221"/><pair kern="-69" kpx2="1285"/><pair kern="-69" kpx2="34"/><pair kern="-49" kpx2="1185"/><pair kern="-69" kpx2="39"/><pair kern="-20" kpx2="1199"/><pair kern="-49" kpx2="1197"/><pair kern="-20" kpx2="1121"/><pair kern="-20" kpx2="1151"/><pair kern="-20" kpx2="1201"/><pair kern="-20" kpx2="1269"/><pair kern="-20" kpx2="1207"/><pair kern="-49" kpx2="1205"/><pair kern="-20" kpx2="1143"/><pair kern="-20" kpx2="1141"/><pair kern="-20" kpx2="1209"/><pair kern="-20" kpx2="1215"/><pair kern="-20" kpx2="1213"/></kerning><kerning kpx1="234"><pair kern="-9" kpx2="34"/><pair kern="-20" kpx2="373"/><pair kern="-9" kpx2="39"/><pair kern="-20" kpx2="7925"/><pair kern="-9" kpx2="380"/><pair kern="-9" kpx2="382"/><pair kern="-9" kpx2="378"/><pair kern="-20" kpx2="119"/><pair kern="-20" kpx2="118"/><pair kern="-20" kpx2="253"/><pair kern="-20" kpx2="7809"/><pair kern="-20" kpx2="7811"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="122"/><pair kern="-9" kpx2="8221"/><pair kern="-20" kpx2="121"/><pair kern="-20" kpx2="120"/></kerning><kerning kpx1="1190"><pair kern="49" kpx2="1032"/><pair kern="-49" kpx2="1035"/><pair kern="-40" kpx2="1098"/><pair kern="-20" kpx2="1228"/><pair kern="-49" kpx2="1026"/><pair kern="-20" kpx2="1095"/><pair kern="-60" kpx2="1227"/><pair kern="-40" kpx2="1090"/><pair kern="-49" kpx2="1294"/><pair kern="-40" kpx2="1295"/><pair kern="-80" kpx2="8217"/><pair kern="-89" kpx2="1286"/><pair kern="-40" kpx2="1287"/><pair kern="-89" kpx2="1284"/><pair kern="-80" kpx2="8221"/><pair kern="-40" kpx2="1285"/><pair kern="-49" kpx2="1066"/><pair kern="-80" kpx2="34"/><pair kern="-40" kpx2="1185"/><pair kern="-49" kpx2="1184"/><pair kern="-80" kpx2="39"/><pair kern="-89" kpx2="1058"/><pair kern="-60" kpx2="1063"/><pair kern="-49" kpx2="1198"/><pair kern="-40" kpx2="1197"/><pair kern="-89" kpx2="1196"/><pair kern="-60" kpx2="1268"/><pair kern="-49" kpx2="1200"/><pair kern="-20" kpx2="1269"/><pair kern="-60" kpx2="1206"/><pair kern="-20" kpx2="1207"/><pair kern="-49" kpx2="1204"/><pair kern="-40" kpx2="1205"/><pair kern="-69" kpx2="1142"/><pair kern="-60" kpx2="1208"/><pair kern="-20" kpx2="1209"/><pair kern="-69" kpx2="1140"/><pair kern="-29" kpx2="1214"/><pair kern="-20" kpx2="1215"/><pair kern="-29" kpx2="1212"/><pair kern="-20" kpx2="1213"/><pair kern="-60" kpx2="1136"/></kerning><kerning kpx1="233"><pair kern="-9" kpx2="34"/><pair kern="-20" kpx2="373"/><pair kern="-9" kpx2="39"/><pair kern="-20" kpx2="7925"/><pair kern="-9" kpx2="380"/><pair kern="-9" kpx2="382"/><pair kern="-9" kpx2="378"/><pair kern="-20" kpx2="119"/><pair kern="-20" kpx2="118"/><pair kern="-20" kpx2="253"/><pair kern="-20" kpx2="7809"/><pair kern="-20" kpx2="7811"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="122"/><pair kern="-9" kpx2="8221"/><pair kern="-20" kpx2="121"/><pair kern="-20" kpx2="120"/></kerning><kerning kpx1="1189"><pair kern="-9" kpx2="1153"/><pair kern="-29" kpx2="1222"/><pair kern="-29" kpx2="1299"/><pair kern="-9" kpx2="1092"/><pair kern="-9" kpx2="1297"/><pair kern="-9" kpx2="1089"/><pair kern="-20" kpx2="8211"/><pair kern="-29" kpx2="1289"/><pair kern="-9" kpx2="1239"/><pair kern="-29" kpx2="1113"/><pair kern="-20" kpx2="8213"/><pair kern="-9" kpx2="1293"/><pair kern="-20" kpx2="8212"/><pair kern="-9" kpx2="1283"/><pair kern="-9" kpx2="1108"/><pair kern="-49" kpx2="8218"/><pair kern="-9" kpx2="1281"/><pair kern="-9" kpx2="1105"/><pair kern="-49" kpx2="8222"/><pair kern="-9" kpx2="1104"/><pair kern="-9" kpx2="1255"/><pair kern="-9" kpx2="1195"/><pair kern="-29" kpx2="1127"/><pair kern="-9" kpx2="1193"/><pair kern="-9" kpx2="1259"/><pair kern="-49" kpx2="46"/><pair kern="-9" kpx2="1257"/><pair kern="-49" kpx2="44"/><pair kern="-20" kpx2="45"/><pair kern="-29" kpx2="1083"/><pair kern="-9" kpx2="1149"/><pair kern="-9" kpx2="1147"/><pair kern="-9" kpx2="1086"/><pair kern="-9" kpx2="1145"/><pair kern="-9" kpx2="1139"/><pair kern="-9" kpx2="1077"/><pair kern="-29" kpx2="1076"/></kerning><kerning kpx1="232"><pair kern="-9" kpx2="34"/><pair kern="-20" kpx2="373"/><pair kern="-9" kpx2="39"/><pair kern="-20" kpx2="7925"/><pair kern="-9" kpx2="380"/><pair kern="-9" kpx2="382"/><pair kern="-9" kpx2="378"/><pair kern="-20" kpx2="119"/><pair kern="-20" kpx2="118"/><pair kern="-20" kpx2="253"/><pair kern="-20" kpx2="7809"/><pair kern="-20" kpx2="7811"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="122"/><pair kern="-9" kpx2="8221"/><pair kern="-20" kpx2="121"/><pair kern="-20" kpx2="120"/></kerning><kerning kpx1="1188"><pair kern="-29" kpx2="1100"/><pair kern="-20" kpx2="1101"/><pair kern="-29" kpx2="1102"/><pair kern="-29" kpx2="1096"/><pair kern="-29" kpx2="1097"/><pair kern="-29" kpx2="1099"/><pair kern="-40" kpx2="1092"/><pair kern="-20" kpx2="1093"/><pair kern="-29" kpx2="1094"/><pair kern="-49" kpx2="1095"/><pair kern="-29" kpx2="1088"/><pair kern="-40" kpx2="1089"/><pair kern="-29" kpx2="1117"/><pair kern="-29" kpx2="1116"/><pair kern="-29" kpx2="1119"/><pair kern="-49" kpx2="1113"/><pair kern="20" kpx2="1115"/><pair kern="-29" kpx2="1114"/><pair kern="-29" kpx2="1109"/><pair kern="-40" kpx2="1108"/><pair kern="-40" kpx2="1105"/><pair kern="-40" kpx2="1104"/><pair kern="-29" kpx2="1107"/><pair kern="20" kpx2="1106"/><pair kern="-29" kpx2="1133"/><pair kern="-20" kpx2="1131"/><pair kern="-29" kpx2="1129"/><pair kern="-60" kpx2="1126"/><pair kern="-49" kpx2="1127"/><pair kern="-29" kpx2="1125"/><pair kern="-49" kpx2="46"/><pair kern="-49" kpx2="44"/><pair kern="-20" kpx2="1120"/><pair kern="-20" kpx2="45"/><pair kern="-20" kpx2="1150"/><pair kern="-40" kpx2="1149"/><pair kern="-20" kpx2="1148"/><pair kern="-40" kpx2="1147"/><pair kern="-20" kpx2="1146"/><pair kern="-40" kpx2="1145"/><pair kern="-20" kpx2="1144"/><pair kern="-40" kpx2="1139"/><pair kern="-20" kpx2="1138"/><pair kern="-29" kpx2="1137"/><pair kern="-40" kpx2="1033"/><pair kern="20" kpx2="1035"/><pair kern="-49" kpx2="1299"/><pair kern="-40" kpx2="1298"/><pair kern="-40" kpx2="1297"/><pair kern="20" kpx2="1026"/><pair kern="-20" kpx2="1028"/><pair kern="-20" kpx2="8211"/><pair kern="-29" kpx2="1291"/><pair kern="-40" kpx2="1288"/><pair kern="-40" kpx2="1051"/><pair kern="-49" kpx2="1289"/><pair kern="20" kpx2="1294"/><pair kern="-20" kpx2="1292"/><pair kern="-20" kpx2="8213"/><pair kern="-40" kpx2="1293"/><pair kern="-20" kpx2="1054"/><pair kern="-20" kpx2="8212"/><pair kern="-49" kpx2="1282"/><pair kern="-40" kpx2="1283"/><pair kern="-60" kpx2="1040"/><pair kern="-49" kpx2="8218"/><pair kern="-49" kpx2="1280"/><pair kern="-40" kpx2="1281"/><pair kern="-20" kpx2="1287"/><pair kern="-40" kpx2="1044"/><pair kern="-49" kpx2="8222"/><pair kern="-20" kpx2="1285"/><pair kern="20" kpx2="1066"/><pair kern="20" kpx2="1058"/><pair kern="-20" kpx2="1057"/><pair kern="-29" kpx2="1060"/><pair kern="-49" kpx2="1083"/><pair kern="-29" kpx2="1082"/><pair kern="-29" kpx2="1081"/><pair kern="-29" kpx2="1080"/><pair kern="-29" kpx2="1087"/><pair kern="-40" kpx2="1086"/><pair kern="-29" kpx2="1085"/><pair kern="-29" kpx2="1084"/><pair kern="-29" kpx2="1075"/><pair kern="-29" kpx2="1074"/><pair kern="-20" kpx2="1079"/><pair kern="-20" kpx2="1078"/><pair kern="-40" kpx2="1077"/><pair kern="-49" kpx2="1076"/><pair kern="-40" kpx2="1221"/><pair kern="-29" kpx2="1220"/><pair kern="-49" kpx2="1222"/><pair kern="-20" kpx2="1218"/><pair kern="-49" kpx2="1228"/><pair kern="-29" kpx2="1230"/><pair kern="-29" kpx2="1224"/><pair kern="-29" kpx2="1226"/><pair kern="-60" kpx2="1236"/><pair kern="-40" kpx2="1239"/><pair kern="-60" kpx2="1232"/><pair kern="-60" kpx2="1234"/><pair kern="-20" kpx2="1245"/><pair kern="-20" kpx2="1247"/><pair kern="-40" kpx2="1255"/><pair kern="-20" kpx2="1254"/><pair kern="-29" kpx2="1253"/><pair kern="-29" kpx2="1251"/><pair kern="-20" kpx2="1261"/><pair kern="-40" kpx2="1259"/><pair kern="-20" kpx2="1258"/><pair kern="-40" kpx2="1257"/><pair kern="-20" kpx2="1256"/><pair kern="-29" kpx2="1271"/><pair kern="-49" kpx2="1269"/><pair kern="-20" kpx2="1279"/><pair kern="-20" kpx2="1277"/><pair kern="-29" kpx2="1273"/><pair kern="-40" kpx2="1153"/><pair kern="-20" kpx2="1152"/><pair kern="-29" kpx2="1163"/><pair kern="20" kpx2="1165"/><pair kern="-29" kpx2="1167"/><pair kern="-29" kpx2="1169"/><pair kern="-29" kpx2="1173"/><pair kern="-20" kpx2="1175"/><pair kern="-20" kpx2="1177"/><pair kern="-29" kpx2="1179"/><pair kern="-29" kpx2="1181"/><pair kern="20" kpx2="1183"/><pair kern="-29" kpx2="1187"/><pair kern="20" kpx2="1184"/><pair kern="-29" kpx2="1191"/><pair kern="-29" kpx2="1189"/><pair kern="-40" kpx2="1195"/><pair kern="-20" kpx2="1194"/><pair kern="-40" kpx2="1193"/><pair kern="-20" kpx2="1192"/><pair kern="20" kpx2="1196"/><pair kern="-20" kpx2="1203"/><pair kern="-49" kpx2="1207"/><pair kern="20" kpx2="1204"/><pair kern="-29" kpx2="1211"/><pair kern="-49" kpx2="1209"/><pair kern="-20" kpx2="1214"/><pair kern="-29" kpx2="1215"/><pair kern="-20" kpx2="1212"/><pair kern="-29" kpx2="1213"/></kerning><kerning kpx1="1194"><pair kern="-20" kpx2="1152"/><pair kern="-20" kpx2="1228"/><pair kern="-20" kpx2="1095"/><pair kern="-20" kpx2="1028"/><pair kern="-20" kpx2="1292"/><pair kern="-20" kpx2="1054"/><pair kern="-20" kpx2="1282"/><pair kern="-20" kpx2="1280"/><pair kern="-20" kpx2="1287"/><pair kern="-20" kpx2="1285"/><pair kern="-20" kpx2="1254"/><pair kern="-20" kpx2="1194"/><pair kern="-20" kpx2="1057"/><pair kern="-20" kpx2="1192"/><pair kern="-20" kpx2="1258"/><pair kern="-20" kpx2="1120"/><pair kern="-20" kpx2="1060"/><pair kern="-20" kpx2="1256"/><pair kern="-20" kpx2="1150"/><pair kern="-20" kpx2="1148"/><pair kern="-20" kpx2="1269"/><pair kern="-20" kpx2="1146"/><pair kern="-20" kpx2="1207"/><pair kern="-20" kpx2="1144"/><pair kern="-20" kpx2="1209"/><pair kern="-20" kpx2="1214"/><pair kern="-20" kpx2="1138"/><pair kern="-20" kpx2="1212"/></kerning><kerning kpx1="229"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="1193"><pair kern="-9" kpx2="1098"/><pair kern="-20" kpx2="1218"/><pair kern="-20" kpx2="1093"/><pair kern="-9" kpx2="1228"/><pair kern="-9" kpx2="1095"/><pair kern="-9" kpx2="1090"/><pair kern="-9" kpx2="1091"/><pair kern="-9" kpx2="1118"/><pair kern="-9" kpx2="1295"/><pair kern="-20" kpx2="1175"/><pair kern="-20" kpx2="1245"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="1287"/><pair kern="-9" kpx2="8221"/><pair kern="-9" kpx2="1285"/><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="1185"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="1263"/><pair kern="-9" kpx2="1197"/><pair kern="-20" kpx2="1203"/><pair kern="-9" kpx2="1269"/><pair kern="-9" kpx2="1207"/><pair kern="-9" kpx2="1267"/><pair kern="-9" kpx2="1205"/><pair kern="-9" kpx2="1265"/><pair kern="-20" kpx2="1279"/><pair kern="-20" kpx2="1277"/><pair kern="-9" kpx2="1209"/><pair kern="-20" kpx2="1078"/></kerning><kerning kpx1="228"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="1192"><pair kern="-20" kpx2="1066"/><pair kern="-9" kpx2="1200"/><pair kern="-20" kpx2="1184"/><pair kern="-20" kpx2="1035"/><pair kern="-20" kpx2="1294"/><pair kern="-20" kpx2="1204"/><pair kern="-29" kpx2="1058"/><pair kern="-9" kpx2="1142"/><pair kern="-20" kpx2="1026"/><pair kern="-9" kpx2="1140"/><pair kern="-20" kpx2="1286"/><pair kern="-9" kpx2="1198"/><pair kern="-20" kpx2="1284"/><pair kern="-29" kpx2="1196"/></kerning><kerning kpx1="227"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="1199"><pair kern="-9" kpx2="1083"/><pair kern="-9" kpx2="1289"/><pair kern="-9" kpx2="1222"/><pair kern="-9" kpx2="1113"/><pair kern="-9" kpx2="1299"/><pair kern="-9" kpx2="1127"/><pair kern="-40" kpx2="8218"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="8222"/><pair kern="-40" kpx2="44"/><pair kern="-9" kpx2="1076"/></kerning><kerning kpx1="226"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="1198"><pair kern="-29" kpx2="1100"/><pair kern="-29" kpx2="1102"/><pair kern="-20" kpx2="1103"/><pair kern="-29" kpx2="1096"/><pair kern="-29" kpx2="1097"/><pair kern="-29" kpx2="1099"/><pair kern="-49" kpx2="1092"/><pair kern="-29" kpx2="1094"/><pair kern="-40" kpx2="1095"/><pair kern="-29" kpx2="1088"/><pair kern="-49" kpx2="1089"/><pair kern="-29" kpx2="1117"/><pair kern="-29" kpx2="1116"/><pair kern="-29" kpx2="1119"/><pair kern="-49" kpx2="1113"/><pair kern="20" kpx2="1115"/><pair kern="-29" kpx2="1114"/><pair kern="-40" kpx2="1109"/><pair kern="-49" kpx2="1108"/><pair kern="-49" kpx2="1105"/><pair kern="-49" kpx2="1104"/><pair kern="-29" kpx2="1107"/><pair kern="20" kpx2="1106"/><pair kern="-29" kpx2="1133"/><pair kern="-20" kpx2="1131"/><pair kern="-29" kpx2="1129"/><pair kern="-60" kpx2="1126"/><pair kern="-49" kpx2="1127"/><pair kern="-29" kpx2="1125"/><pair kern="-60" kpx2="46"/><pair kern="-60" kpx2="44"/><pair kern="-20" kpx2="1120"/><pair kern="-20" kpx2="1150"/><pair kern="-49" kpx2="1149"/><pair kern="-20" kpx2="1148"/><pair kern="-49" kpx2="1147"/><pair kern="-20" kpx2="1146"/><pair kern="-49" kpx2="1145"/><pair kern="-20" kpx2="1144"/><pair kern="-49" kpx2="1139"/><pair kern="-20" kpx2="1138"/><pair kern="-20" kpx2="1137"/><pair kern="-40" kpx2="1033"/><pair kern="-49" kpx2="1299"/><pair kern="-40" kpx2="1298"/><pair kern="-49" kpx2="1297"/><pair kern="-9" kpx2="1296"/><pair kern="-20" kpx2="1028"/><pair kern="-29" kpx2="1291"/><pair kern="-40" kpx2="1288"/><pair kern="-40" kpx2="1051"/><pair kern="-49" kpx2="1289"/><pair kern="-20" kpx2="1292"/><pair kern="-49" kpx2="1293"/><pair kern="-20" kpx2="1054"/><pair kern="-40" kpx2="1282"/><pair kern="-49" kpx2="1283"/><pair kern="-60" kpx2="8218"/><pair kern="-60" kpx2="1040"/><pair kern="-40" kpx2="1280"/><pair kern="-49" kpx2="1281"/><pair kern="-20" kpx2="1287"/><pair kern="-60" kpx2="8222"/><pair kern="-40" kpx2="1044"/><pair kern="-20" kpx2="1285"/><pair kern="-20" kpx2="1057"/><pair kern="-29" kpx2="1060"/><pair kern="-49" kpx2="1083"/><pair kern="-29" kpx2="1082"/><pair kern="-29" kpx2="1081"/><pair kern="-29" kpx2="1080"/><pair kern="-29" kpx2="1087"/><pair kern="-49" kpx2="1086"/><pair kern="-29" kpx2="1085"/><pair kern="-29" kpx2="1084"/><pair kern="-29" kpx2="1075"/><pair kern="-29" kpx2="1074"/><pair kern="-40" kpx2="1072"/><pair kern="-49" kpx2="1077"/><pair kern="-49" kpx2="1076"/><pair kern="-40" kpx2="1221"/><pair kern="-29" kpx2="1220"/><pair kern="-49" kpx2="1222"/><pair kern="-40" kpx2="1228"/><pair kern="-29" kpx2="1230"/><pair kern="-29" kpx2="1224"/><pair kern="-29" kpx2="1226"/><pair kern="-60" kpx2="1236"/><pair kern="-40" kpx2="1237"/><pair kern="-49" kpx2="1239"/><pair kern="-60" kpx2="1232"/><pair kern="-40" kpx2="1233"/><pair kern="-60" kpx2="1234"/><pair kern="-40" kpx2="1235"/><pair kern="-9" kpx2="1240"/><pair kern="-40" kpx2="1241"/><pair kern="-9" kpx2="1242"/><pair kern="-40" kpx2="1243"/><pair kern="-49" kpx2="1255"/><pair kern="-20" kpx2="1254"/><pair kern="-29" kpx2="1253"/><pair kern="-29" kpx2="1251"/><pair kern="-49" kpx2="1259"/><pair kern="-20" kpx2="1258"/><pair kern="-49" kpx2="1257"/><pair kern="-20" kpx2="1256"/><pair kern="-29" kpx2="1271"/><pair kern="-40" kpx2="1269"/><pair kern="-29" kpx2="1273"/><pair kern="-49" kpx2="1153"/><pair kern="-20" kpx2="1152"/><pair kern="-29" kpx2="1163"/><pair kern="20" kpx2="1165"/><pair kern="-29" kpx2="1167"/><pair kern="-29" kpx2="1169"/><pair kern="-29" kpx2="1173"/><pair kern="-29" kpx2="1179"/><pair kern="-29" kpx2="1181"/><pair kern="20" kpx2="1183"/><pair kern="-29" kpx2="1187"/><pair kern="-29" kpx2="1191"/><pair kern="-29" kpx2="1189"/><pair kern="-49" kpx2="1195"/><pair kern="-20" kpx2="1194"/><pair kern="-49" kpx2="1193"/><pair kern="-20" kpx2="1192"/><pair kern="-40" kpx2="1207"/><pair kern="-29" kpx2="1211"/><pair kern="-40" kpx2="1209"/><pair kern="-40" kpx2="1215"/><pair kern="-40" kpx2="1213"/></kerning><kerning kpx1="225"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="1197"><pair kern="-9" kpx2="1153"/><pair kern="-29" kpx2="1222"/><pair kern="-29" kpx2="1299"/><pair kern="-9" kpx2="1092"/><pair kern="-9" kpx2="1297"/><pair kern="-9" kpx2="1089"/><pair kern="-20" kpx2="8211"/><pair kern="-29" kpx2="1289"/><pair kern="-9" kpx2="1239"/><pair kern="-29" kpx2="1113"/><pair kern="-20" kpx2="8213"/><pair kern="-9" kpx2="1293"/><pair kern="-20" kpx2="8212"/><pair kern="-9" kpx2="1283"/><pair kern="-9" kpx2="1108"/><pair kern="-49" kpx2="8218"/><pair kern="-9" kpx2="1281"/><pair kern="-9" kpx2="1105"/><pair kern="-49" kpx2="8222"/><pair kern="-9" kpx2="1104"/><pair kern="-9" kpx2="1255"/><pair kern="-9" kpx2="1195"/><pair kern="-29" kpx2="1127"/><pair kern="-9" kpx2="1193"/><pair kern="-9" kpx2="1259"/><pair kern="-49" kpx2="46"/><pair kern="-9" kpx2="1257"/><pair kern="-49" kpx2="44"/><pair kern="-20" kpx2="45"/><pair kern="-29" kpx2="1083"/><pair kern="-9" kpx2="1149"/><pair kern="-9" kpx2="1147"/><pair kern="-9" kpx2="1086"/><pair kern="-9" kpx2="1145"/><pair kern="-9" kpx2="1139"/><pair kern="-9" kpx2="1077"/><pair kern="-29" kpx2="1076"/></kerning><kerning kpx1="224"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="1196"><pair kern="-49" kpx2="1100"/><pair kern="-20" kpx2="1101"/><pair kern="-49" kpx2="1102"/><pair kern="-29" kpx2="1103"/><pair kern="-49" kpx2="1096"/><pair kern="-49" kpx2="1097"/><pair kern="-40" kpx2="1098"/><pair kern="-49" kpx2="1099"/><pair kern="-69" kpx2="1092"/><pair kern="-20" kpx2="1093"/><pair kern="-49" kpx2="1094"/><pair kern="-49" kpx2="1095"/><pair kern="-49" kpx2="1088"/><pair kern="-69" kpx2="1089"/><pair kern="-40" kpx2="1090"/><pair kern="-40" kpx2="1091"/><pair kern="-49" kpx2="1117"/><pair kern="-49" kpx2="1116"/><pair kern="-49" kpx2="1119"/><pair kern="-40" kpx2="1118"/><pair kern="-60" kpx2="1113"/><pair kern="-49" kpx2="1114"/><pair kern="-60" kpx2="1109"/><pair kern="-69" kpx2="1108"/><pair kern="-69" kpx2="1105"/><pair kern="-69" kpx2="1104"/><pair kern="-49" kpx2="1107"/><pair kern="-49" kpx2="1133"/><pair kern="-49" kpx2="1131"/><pair kern="-49" kpx2="1129"/><pair kern="-69" kpx2="1126"/><pair kern="-60" kpx2="1127"/><pair kern="-49" kpx2="1125"/><pair kern="-60" kpx2="46"/><pair kern="-60" kpx2="44"/><pair kern="-20" kpx2="1120"/><pair kern="-40" kpx2="45"/><pair kern="-20" kpx2="1121"/><pair kern="-20" kpx2="1151"/><pair kern="-20" kpx2="1150"/><pair kern="-69" kpx2="1149"/><pair kern="-20" kpx2="1148"/><pair kern="-69" kpx2="1147"/><pair kern="-20" kpx2="1146"/><pair kern="-69" kpx2="1145"/><pair kern="-20" kpx2="1144"/><pair kern="-20" kpx2="1143"/><pair kern="-20" kpx2="1141"/><pair kern="-69" kpx2="1139"/><pair kern="-20" kpx2="1138"/><pair kern="-49" kpx2="1137"/><pair kern="-49" kpx2="1033"/><pair kern="-60" kpx2="1299"/><pair kern="-49" kpx2="1298"/><pair kern="-69" kpx2="1297"/><pair kern="-20" kpx2="1028"/><pair kern="-40" kpx2="8211"/><pair kern="-49" kpx2="1291"/><pair kern="-49" kpx2="1288"/><pair kern="-49" kpx2="1051"/><pair kern="-60" kpx2="1289"/><pair kern="-40" kpx2="1295"/><pair kern="-20" kpx2="1292"/><pair kern="-40" kpx2="8213"/><pair kern="-69" kpx2="1293"/><pair kern="-20" kpx2="1054"/><pair kern="-40" kpx2="8212"/><pair kern="-69" kpx2="1282"/><pair kern="-69" kpx2="1283"/><pair kern="-69" kpx2="1040"/><pair kern="-60" kpx2="8218"/><pair kern="-69" kpx2="1280"/><pair kern="-69" kpx2="1281"/><pair kern="-49" kpx2="1287"/><pair kern="-49" kpx2="1044"/><pair kern="-60" kpx2="8222"/><pair kern="-49" kpx2="1285"/><pair kern="20" kpx2="1058"/><pair kern="-20" kpx2="1057"/><pair kern="-40" kpx2="1060"/><pair kern="-60" kpx2="1083"/><pair kern="-49" kpx2="1082"/><pair kern="-49" kpx2="1081"/><pair kern="-49" kpx2="1080"/><pair kern="-49" kpx2="1087"/><pair kern="-69" kpx2="1086"/><pair kern="-49" kpx2="1085"/><pair kern="-49" kpx2="1084"/><pair kern="-49" kpx2="1075"/><pair kern="-49" kpx2="1074"/><pair kern="-20" kpx2="1079"/><pair kern="-20" kpx2="1078"/><pair kern="-69" kpx2="1077"/><pair kern="-60" kpx2="1076"/><pair kern="-49" kpx2="1221"/><pair kern="-49" kpx2="1220"/><pair kern="-60" kpx2="1222"/><pair kern="-20" kpx2="1218"/><pair kern="-49" kpx2="1228"/><pair kern="-49" kpx2="1230"/><pair kern="-49" kpx2="1224"/><pair kern="-49" kpx2="1226"/><pair kern="-69" kpx2="1236"/><pair kern="-69" kpx2="1239"/><pair kern="-69" kpx2="1232"/><pair kern="-69" kpx2="1234"/><pair kern="-20" kpx2="1245"/><pair kern="-20" kpx2="1247"/><pair kern="-69" kpx2="1255"/><pair kern="-20" kpx2="1254"/><pair kern="-49" kpx2="1253"/><pair kern="-49" kpx2="1251"/><pair kern="-29" kpx2="1249"/><pair kern="-40" kpx2="1263"/><pair kern="-20" kpx2="1261"/><pair kern="-69" kpx2="1259"/><pair kern="-20" kpx2="1258"/><pair kern="-69" kpx2="1257"/><pair kern="-20" kpx2="1256"/><pair kern="-49" kpx2="1271"/><pair kern="-49" kpx2="1269"/><pair kern="-40" kpx2="1267"/><pair kern="-40" kpx2="1265"/><pair kern="-20" kpx2="1279"/><pair kern="-20" kpx2="1277"/><pair kern="-49" kpx2="1273"/><pair kern="-69" kpx2="1153"/><pair kern="-20" kpx2="1152"/><pair kern="-49" kpx2="1163"/><pair kern="-49" kpx2="1167"/><pair kern="-49" kpx2="1169"/><pair kern="-49" kpx2="1173"/><pair kern="-20" kpx2="1175"/><pair kern="-20" kpx2="1177"/><pair kern="-49" kpx2="1179"/><pair kern="-49" kpx2="1181"/><pair kern="-49" kpx2="1187"/><pair kern="-40" kpx2="1185"/><pair kern="-49" kpx2="1191"/><pair kern="-49" kpx2="1189"/><pair kern="-69" kpx2="1195"/><pair kern="-20" kpx2="1194"/><pair kern="-69" kpx2="1193"/><pair kern="-20" kpx2="1192"/><pair kern="-40" kpx2="1199"/><pair kern="-40" kpx2="1197"/><pair kern="20" kpx2="1196"/><pair kern="-20" kpx2="1203"/><pair kern="-40" kpx2="1201"/><pair kern="-49" kpx2="1207"/><pair kern="-40" kpx2="1205"/><pair kern="-49" kpx2="1211"/><pair kern="-49" kpx2="1209"/><pair kern="-49" kpx2="1214"/><pair kern="-69" kpx2="1215"/><pair kern="-49" kpx2="1212"/><pair kern="-69" kpx2="1213"/></kerning><kerning kpx1="254"><pair kern="-9" kpx2="34"/><pair kern="-20" kpx2="373"/><pair kern="-9" kpx2="39"/><pair kern="-20" kpx2="7925"/><pair kern="-9" kpx2="380"/><pair kern="-9" kpx2="382"/><pair kern="-9" kpx2="378"/><pair kern="-20" kpx2="119"/><pair kern="-20" kpx2="118"/><pair kern="-20" kpx2="253"/><pair kern="-20" kpx2="7809"/><pair kern="-20" kpx2="7811"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="122"/><pair kern="-9" kpx2="8221"/><pair kern="-20" kpx2="121"/><pair kern="-20" kpx2="120"/></kerning><kerning kpx1="1202"><pair kern="109" kpx2="1032"/><pair kern="-20" kpx2="1152"/><pair kern="-20" kpx2="1098"/><pair kern="-40" kpx2="1228"/><pair kern="-40" kpx2="1095"/><pair kern="-20" kpx2="1028"/><pair kern="-20" kpx2="1090"/><pair kern="-20" kpx2="1295"/><pair kern="-20" kpx2="1292"/><pair kern="-20" kpx2="1054"/><pair kern="-20" kpx2="1287"/><pair kern="-20" kpx2="1285"/><pair kern="-20" kpx2="1254"/><pair kern="29" kpx2="1135"/><pair kern="-20" kpx2="1185"/><pair kern="-20" kpx2="1194"/><pair kern="-20" kpx2="1057"/><pair kern="-20" kpx2="1192"/><pair kern="-20" kpx2="1258"/><pair kern="-20" kpx2="1120"/><pair kern="-29" kpx2="1060"/><pair kern="-20" kpx2="1197"/><pair kern="-20" kpx2="1256"/><pair kern="-20" kpx2="1150"/><pair kern="-40" kpx2="1269"/><pair kern="-20" kpx2="1148"/><pair kern="-20" kpx2="1146"/><pair kern="-40" kpx2="1207"/><pair kern="-20" kpx2="1144"/><pair kern="-20" kpx2="1205"/><pair kern="-40" kpx2="1209"/><pair kern="-29" kpx2="1214"/><pair kern="-20" kpx2="1215"/><pair kern="-20" kpx2="1138"/><pair kern="-29" kpx2="1212"/><pair kern="-9" kpx2="1137"/><pair kern="-20" kpx2="1213"/></kerning><kerning kpx1="255"><pair kern="40" kpx2="34"/><pair kern="40" kpx2="39"/><pair kern="-40" kpx2="8218"/><pair kern="40" kpx2="8217"/><pair kern="20" kpx2="63"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="8222"/><pair kern="40" kpx2="8221"/><pair kern="-40" kpx2="44"/></kerning><kerning kpx1="1203"><pair kern="-9" kpx2="1153"/><pair kern="-9" kpx2="1092"/><pair kern="-9" kpx2="1228"/><pair kern="-9" kpx2="1297"/><pair kern="-9" kpx2="1095"/><pair kern="-9" kpx2="1089"/><pair kern="-9" kpx2="1239"/><pair kern="-9" kpx2="1293"/><pair kern="-9" kpx2="1283"/><pair kern="-9" kpx2="1108"/><pair kern="-9" kpx2="1281"/><pair kern="-9" kpx2="1105"/><pair kern="-20" kpx2="1287"/><pair kern="-9" kpx2="1104"/><pair kern="-20" kpx2="1285"/><pair kern="-9" kpx2="1255"/><pair kern="-9" kpx2="1195"/><pair kern="-9" kpx2="1193"/><pair kern="-9" kpx2="1259"/><pair kern="-9" kpx2="1257"/><pair kern="-9" kpx2="1149"/><pair kern="-9" kpx2="1269"/><pair kern="-9" kpx2="1147"/><pair kern="-9" kpx2="1086"/><pair kern="-9" kpx2="1207"/><pair kern="-9" kpx2="1145"/><pair kern="-9" kpx2="1209"/><pair kern="-9" kpx2="1139"/><pair kern="-9" kpx2="1077"/></kerning><kerning kpx1="1200"><pair kern="-29" kpx2="1100"/><pair kern="-29" kpx2="1102"/><pair kern="-20" kpx2="1103"/><pair kern="-29" kpx2="1096"/><pair kern="-29" kpx2="1097"/><pair kern="-29" kpx2="1099"/><pair kern="-49" kpx2="1092"/><pair kern="-29" kpx2="1094"/><pair kern="-40" kpx2="1095"/><pair kern="-29" kpx2="1088"/><pair kern="-49" kpx2="1089"/><pair kern="-29" kpx2="1117"/><pair kern="-29" kpx2="1116"/><pair kern="-29" kpx2="1119"/><pair kern="-49" kpx2="1113"/><pair kern="20" kpx2="1115"/><pair kern="-29" kpx2="1114"/><pair kern="-40" kpx2="1109"/><pair kern="-49" kpx2="1108"/><pair kern="-49" kpx2="1105"/><pair kern="-49" kpx2="1104"/><pair kern="-29" kpx2="1107"/><pair kern="20" kpx2="1106"/><pair kern="-29" kpx2="1133"/><pair kern="-20" kpx2="1131"/><pair kern="-29" kpx2="1129"/><pair kern="-60" kpx2="1126"/><pair kern="-49" kpx2="1127"/><pair kern="-29" kpx2="1125"/><pair kern="-60" kpx2="46"/><pair kern="-60" kpx2="44"/><pair kern="-20" kpx2="1120"/><pair kern="-20" kpx2="1150"/><pair kern="-49" kpx2="1149"/><pair kern="-20" kpx2="1148"/><pair kern="-49" kpx2="1147"/><pair kern="-20" kpx2="1146"/><pair kern="-49" kpx2="1145"/><pair kern="-20" kpx2="1144"/><pair kern="-49" kpx2="1139"/><pair kern="-20" kpx2="1138"/><pair kern="-20" kpx2="1137"/><pair kern="-40" kpx2="1033"/><pair kern="-49" kpx2="1299"/><pair kern="-40" kpx2="1298"/><pair kern="-49" kpx2="1297"/><pair kern="-9" kpx2="1296"/><pair kern="-20" kpx2="1028"/><pair kern="-29" kpx2="1291"/><pair kern="-40" kpx2="1288"/><pair kern="-40" kpx2="1051"/><pair kern="-49" kpx2="1289"/><pair kern="-20" kpx2="1292"/><pair kern="-49" kpx2="1293"/><pair kern="-20" kpx2="1054"/><pair kern="-40" kpx2="1282"/><pair kern="-49" kpx2="1283"/><pair kern="-60" kpx2="8218"/><pair kern="-60" kpx2="1040"/><pair kern="-40" kpx2="1280"/><pair kern="-49" kpx2="1281"/><pair kern="-20" kpx2="1287"/><pair kern="-60" kpx2="8222"/><pair kern="-40" kpx2="1044"/><pair kern="-20" kpx2="1285"/><pair kern="-20" kpx2="1057"/><pair kern="-29" kpx2="1060"/><pair kern="-49" kpx2="1083"/><pair kern="-29" kpx2="1082"/><pair kern="-29" kpx2="1081"/><pair kern="-29" kpx2="1080"/><pair kern="-29" kpx2="1087"/><pair kern="-49" kpx2="1086"/><pair kern="-29" kpx2="1085"/><pair kern="-29" kpx2="1084"/><pair kern="-29" kpx2="1075"/><pair kern="-29" kpx2="1074"/><pair kern="-40" kpx2="1072"/><pair kern="-49" kpx2="1077"/><pair kern="-49" kpx2="1076"/><pair kern="-40" kpx2="1221"/><pair kern="-29" kpx2="1220"/><pair kern="-49" kpx2="1222"/><pair kern="-40" kpx2="1228"/><pair kern="-29" kpx2="1230"/><pair kern="-29" kpx2="1224"/><pair kern="-29" kpx2="1226"/><pair kern="-60" kpx2="1236"/><pair kern="-40" kpx2="1237"/><pair kern="-49" kpx2="1239"/><pair kern="-60" kpx2="1232"/><pair kern="-40" kpx2="1233"/><pair kern="-60" kpx2="1234"/><pair kern="-40" kpx2="1235"/><pair kern="-9" kpx2="1240"/><pair kern="-40" kpx2="1241"/><pair kern="-9" kpx2="1242"/><pair kern="-40" kpx2="1243"/><pair kern="-49" kpx2="1255"/><pair kern="-20" kpx2="1254"/><pair kern="-29" kpx2="1253"/><pair kern="-29" kpx2="1251"/><pair kern="-49" kpx2="1259"/><pair kern="-20" kpx2="1258"/><pair kern="-49" kpx2="1257"/><pair kern="-20" kpx2="1256"/><pair kern="-29" kpx2="1271"/><pair kern="-40" kpx2="1269"/><pair kern="-29" kpx2="1273"/><pair kern="-49" kpx2="1153"/><pair kern="-20" kpx2="1152"/><pair kern="-29" kpx2="1163"/><pair kern="20" kpx2="1165"/><pair kern="-29" kpx2="1167"/><pair kern="-29" kpx2="1169"/><pair kern="-29" kpx2="1173"/><pair kern="-29" kpx2="1179"/><pair kern="-29" kpx2="1181"/><pair kern="20" kpx2="1183"/><pair kern="-29" kpx2="1187"/><pair kern="-29" kpx2="1191"/><pair kern="-29" kpx2="1189"/><pair kern="-49" kpx2="1195"/><pair kern="-20" kpx2="1194"/><pair kern="-49" kpx2="1193"/><pair kern="-20" kpx2="1192"/><pair kern="-40" kpx2="1207"/><pair kern="-29" kpx2="1211"/><pair kern="-40" kpx2="1209"/><pair kern="-40" kpx2="1215"/><pair kern="-40" kpx2="1213"/></kerning><kerning kpx1="253"><pair kern="40" kpx2="34"/><pair kern="40" kpx2="39"/><pair kern="-40" kpx2="8218"/><pair kern="40" kpx2="8217"/><pair kern="20" kpx2="63"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="8222"/><pair kern="40" kpx2="8221"/><pair kern="-40" kpx2="44"/></kerning><kerning kpx1="1201"><pair kern="-9" kpx2="1083"/><pair kern="-9" kpx2="1289"/><pair kern="-9" kpx2="1222"/><pair kern="-9" kpx2="1113"/><pair kern="-9" kpx2="1299"/><pair kern="-9" kpx2="1127"/><pair kern="-40" kpx2="8218"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="8222"/><pair kern="-40" kpx2="44"/><pair kern="-9" kpx2="1076"/></kerning><kerning kpx1="1206"><pair kern="109" kpx2="1032"/><pair kern="20" kpx2="1249"/><pair kern="-20" kpx2="1287"/><pair kern="-20" kpx2="1285"/></kerning><kerning kpx1="1207"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="248"><pair kern="-9" kpx2="34"/><pair kern="-20" kpx2="373"/><pair kern="-9" kpx2="39"/><pair kern="-20" kpx2="7925"/><pair kern="-9" kpx2="380"/><pair kern="-9" kpx2="382"/><pair kern="-9" kpx2="378"/><pair kern="-20" kpx2="119"/><pair kern="-20" kpx2="118"/><pair kern="-20" kpx2="253"/><pair kern="-20" kpx2="7809"/><pair kern="-20" kpx2="7811"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="122"/><pair kern="-9" kpx2="8221"/><pair kern="-20" kpx2="121"/><pair kern="-20" kpx2="120"/></kerning><kerning kpx1="1204"><pair kern="109" kpx2="1032"/><pair kern="20" kpx2="1249"/><pair kern="-20" kpx2="1287"/><pair kern="-20" kpx2="1285"/></kerning><kerning kpx1="1205"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="246"><pair kern="-20" kpx2="34"/><pair kern="-20" kpx2="39"/><pair kern="-20" kpx2="8217"/><pair kern="-20" kpx2="8221"/></kerning><kerning kpx1="1210"><pair kern="-20" kpx2="1035"/><pair kern="-20" kpx2="1098"/><pair kern="-9" kpx2="1228"/><pair kern="-20" kpx2="1026"/><pair kern="-9" kpx2="1095"/><pair kern="-40" kpx2="1227"/><pair kern="-20" kpx2="1090"/><pair kern="-9" kpx2="1091"/><pair kern="-9" kpx2="1118"/><pair kern="-20" kpx2="1294"/><pair kern="-20" kpx2="1295"/><pair kern="-29" kpx2="8217"/><pair kern="-40" kpx2="1286"/><pair kern="-20" kpx2="1287"/><pair kern="-40" kpx2="1284"/><pair kern="-29" kpx2="8221"/><pair kern="-20" kpx2="1285"/><pair kern="-20" kpx2="1066"/><pair kern="-29" kpx2="34"/><pair kern="-20" kpx2="1185"/><pair kern="-20" kpx2="1184"/><pair kern="-29" kpx2="39"/><pair kern="-9" kpx2="1263"/><pair kern="-60" kpx2="1058"/><pair kern="-40" kpx2="1063"/><pair kern="-49" kpx2="1198"/><pair kern="-20" kpx2="1197"/><pair kern="-60" kpx2="1196"/><pair kern="-40" kpx2="1268"/><pair kern="-49" kpx2="1200"/><pair kern="-9" kpx2="1269"/><pair kern="-40" kpx2="1206"/><pair kern="-9" kpx2="1267"/><pair kern="-9" kpx2="1207"/><pair kern="-20" kpx2="1204"/><pair kern="-9" kpx2="1265"/><pair kern="-20" kpx2="1205"/><pair kern="-29" kpx2="1142"/><pair kern="-40" kpx2="1208"/><pair kern="-9" kpx2="1209"/><pair kern="-29" kpx2="1140"/><pair kern="-40" kpx2="1136"/></kerning><kerning kpx1="1211"><pair kern="-49" kpx2="34"/><pair kern="-20" kpx2="1185"/><pair kern="-49" kpx2="39"/><pair kern="-20" kpx2="1098"/><pair kern="-20" kpx2="1263"/><pair kern="-20" kpx2="1199"/><pair kern="-20" kpx2="1090"/><pair kern="-20" kpx2="1197"/><pair kern="-20" kpx2="1091"/><pair kern="-20" kpx2="1118"/><pair kern="-20" kpx2="1201"/><pair kern="-20" kpx2="1295"/><pair kern="-20" kpx2="1267"/><pair kern="-20" kpx2="1265"/><pair kern="-20" kpx2="1205"/><pair kern="-49" kpx2="8217"/><pair kern="-40" kpx2="1287"/><pair kern="-49" kpx2="8221"/><pair kern="-40" kpx2="1285"/></kerning><kerning kpx1="244"><pair kern="-9" kpx2="34"/><pair kern="-20" kpx2="373"/><pair kern="-9" kpx2="39"/><pair kern="-20" kpx2="7925"/><pair kern="-9" kpx2="380"/><pair kern="-9" kpx2="382"/><pair kern="-9" kpx2="378"/><pair kern="-20" kpx2="119"/><pair kern="-20" kpx2="118"/><pair kern="-20" kpx2="253"/><pair kern="-20" kpx2="7809"/><pair kern="-20" kpx2="7811"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="122"/><pair kern="-9" kpx2="8221"/><pair kern="-20" kpx2="121"/><pair kern="-20" kpx2="120"/></kerning><kerning kpx1="242"><pair kern="-9" kpx2="34"/><pair kern="-20" kpx2="373"/><pair kern="-9" kpx2="39"/><pair kern="-20" kpx2="7925"/><pair kern="-9" kpx2="380"/><pair kern="-9" kpx2="382"/><pair kern="-9" kpx2="378"/><pair kern="-20" kpx2="119"/><pair kern="-20" kpx2="118"/><pair kern="-20" kpx2="253"/><pair kern="-20" kpx2="7809"/><pair kern="-20" kpx2="7811"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="122"/><pair kern="-9" kpx2="8221"/><pair kern="-20" kpx2="121"/><pair kern="-20" kpx2="120"/></kerning><kerning kpx1="1214"><pair kern="-9" kpx2="1200"/><pair kern="-20" kpx2="1058"/><pair kern="-9" kpx2="1142"/><pair kern="-9" kpx2="1140"/><pair kern="-9" kpx2="1286"/><pair kern="-9" kpx2="1198"/><pair kern="-9" kpx2="1284"/><pair kern="-20" kpx2="1196"/></kerning><kerning kpx1="243"><pair kern="-9" kpx2="34"/><pair kern="-20" kpx2="373"/><pair kern="-9" kpx2="39"/><pair kern="-20" kpx2="7925"/><pair kern="-9" kpx2="380"/><pair kern="-9" kpx2="382"/><pair kern="-9" kpx2="378"/><pair kern="-20" kpx2="119"/><pair kern="-20" kpx2="118"/><pair kern="-20" kpx2="253"/><pair kern="-20" kpx2="7809"/><pair kern="-20" kpx2="7811"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="122"/><pair kern="-9" kpx2="8221"/><pair kern="-20" kpx2="121"/><pair kern="-20" kpx2="120"/></kerning><kerning kpx1="1215"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="240"><pair kern="-9" kpx2="34"/><pair kern="-20" kpx2="373"/><pair kern="-9" kpx2="39"/><pair kern="-20" kpx2="7925"/><pair kern="-9" kpx2="380"/><pair kern="-9" kpx2="382"/><pair kern="-9" kpx2="378"/><pair kern="-20" kpx2="119"/><pair kern="-20" kpx2="118"/><pair kern="-20" kpx2="253"/><pair kern="-20" kpx2="7809"/><pair kern="-20" kpx2="7811"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="122"/><pair kern="-9" kpx2="8221"/><pair kern="-20" kpx2="121"/><pair kern="-20" kpx2="120"/></kerning><kerning kpx1="1212"><pair kern="-9" kpx2="1200"/><pair kern="-20" kpx2="1058"/><pair kern="-9" kpx2="1142"/><pair kern="-9" kpx2="1140"/><pair kern="-9" kpx2="1286"/><pair kern="-9" kpx2="1198"/><pair kern="-9" kpx2="1284"/><pair kern="-20" kpx2="1196"/></kerning><kerning kpx1="1213"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="275"><pair kern="-9" kpx2="34"/><pair kern="-20" kpx2="373"/><pair kern="-9" kpx2="39"/><pair kern="-20" kpx2="7925"/><pair kern="-9" kpx2="380"/><pair kern="-9" kpx2="382"/><pair kern="-9" kpx2="378"/><pair kern="-20" kpx2="119"/><pair kern="-20" kpx2="118"/><pair kern="-20" kpx2="253"/><pair kern="-20" kpx2="7809"/><pair kern="-20" kpx2="7811"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="122"/><pair kern="-9" kpx2="8221"/><pair kern="-20" kpx2="121"/><pair kern="-20" kpx2="120"/></kerning><kerning kpx1="274"><pair kern="60" kpx2="74"/></kerning><kerning kpx1="272"><pair kern="-20" kpx2="258"/><pair kern="-20" kpx2="256"/><pair kern="-20" kpx2="260"/><pair kern="-9" kpx2="7922"/><pair kern="-9" kpx2="7926"/><pair kern="-9" kpx2="7924"/><pair kern="-9" kpx2="7928"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="44"/><pair kern="-29" kpx2="538"/><pair kern="-20" kpx2="65"/><pair kern="-20" kpx2="197"/><pair kern="-20" kpx2="196"/><pair kern="-20" kpx2="193"/><pair kern="-20" kpx2="192"/><pair kern="-9" kpx2="1029"/><pair kern="-20" kpx2="195"/><pair kern="-20" kpx2="194"/><pair kern="-9" kpx2="7812"/><pair kern="-9" kpx2="221"/><pair kern="-29" kpx2="84"/><pair kern="-9" kpx2="87"/><pair kern="-9" kpx2="86"/><pair kern="-9" kpx2="7808"/><pair kern="-9" kpx2="7810"/><pair kern="-40" kpx2="8218"/><pair kern="-9" kpx2="89"/><pair kern="-20" kpx2="88"/><pair kern="-40" kpx2="8222"/><pair kern="-20" kpx2="7680"/><pair kern="-9" kpx2="90"/><pair kern="-9" kpx2="372"/><pair kern="-20" kpx2="7862"/><pair kern="-9" kpx2="374"/><pair kern="-20" kpx2="7860"/><pair kern="-20" kpx2="7858"/><pair kern="-20" kpx2="506"/><pair kern="-20" kpx2="7856"/><pair kern="-9" kpx2="381"/><pair kern="-9" kpx2="377"/><pair kern="-9" kpx2="376"/><pair kern="-9" kpx2="379"/><pair kern="-29" kpx2="356"/><pair kern="-20" kpx2="7846"/><pair kern="-20" kpx2="7844"/><pair kern="-20" kpx2="7842"/><pair kern="-29" kpx2="354"/><pair kern="-20" kpx2="7840"/><pair kern="-20" kpx2="7854"/><pair kern="-20" kpx2="7852"/><pair kern="-20" kpx2="7850"/><pair kern="-20" kpx2="7848"/></kerning><kerning kpx1="279"><pair kern="-9" kpx2="34"/><pair kern="-20" kpx2="373"/><pair kern="-9" kpx2="39"/><pair kern="-20" kpx2="7925"/><pair kern="-9" kpx2="380"/><pair kern="-9" kpx2="382"/><pair kern="-9" kpx2="378"/><pair kern="-20" kpx2="119"/><pair kern="-20" kpx2="118"/><pair kern="-20" kpx2="253"/><pair kern="-20" kpx2="7809"/><pair kern="-20" kpx2="7811"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="122"/><pair kern="-9" kpx2="8221"/><pair kern="-20" kpx2="121"/><pair kern="-20" kpx2="120"/></kerning><kerning kpx1="278"><pair kern="60" kpx2="74"/></kerning><kerning kpx1="277"><pair kern="-9" kpx2="34"/><pair kern="-20" kpx2="373"/><pair kern="-9" kpx2="39"/><pair kern="-20" kpx2="7925"/><pair kern="-9" kpx2="380"/><pair kern="-9" kpx2="382"/><pair kern="-9" kpx2="378"/><pair kern="-20" kpx2="119"/><pair kern="-20" kpx2="118"/><pair kern="-20" kpx2="253"/><pair kern="-20" kpx2="7809"/><pair kern="-20" kpx2="7811"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="122"/><pair kern="-9" kpx2="8221"/><pair kern="-20" kpx2="121"/><pair kern="-20" kpx2="120"/></kerning><kerning kpx1="276"><pair kern="60" kpx2="74"/></kerning><kerning kpx1="283"><pair kern="-9" kpx2="34"/><pair kern="-20" kpx2="373"/><pair kern="-9" kpx2="39"/><pair kern="-20" kpx2="7925"/><pair kern="-9" kpx2="380"/><pair kern="-9" kpx2="382"/><pair kern="-9" kpx2="378"/><pair kern="-20" kpx2="119"/><pair kern="-20" kpx2="118"/><pair kern="-20" kpx2="253"/><pair kern="-20" kpx2="7809"/><pair kern="-20" kpx2="7811"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="122"/><pair kern="-9" kpx2="8221"/><pair kern="-20" kpx2="121"/><pair kern="-20" kpx2="120"/></kerning><kerning kpx1="282"><pair kern="60" kpx2="74"/></kerning><kerning kpx1="281"><pair kern="-9" kpx2="34"/><pair kern="-20" kpx2="373"/><pair kern="-9" kpx2="39"/><pair kern="-20" kpx2="7925"/><pair kern="-9" kpx2="380"/><pair kern="-9" kpx2="382"/><pair kern="-9" kpx2="378"/><pair kern="-20" kpx2="119"/><pair kern="-20" kpx2="118"/><pair kern="-20" kpx2="253"/><pair kern="-20" kpx2="7809"/><pair kern="-20" kpx2="7811"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="122"/><pair kern="-9" kpx2="8221"/><pair kern="-20" kpx2="121"/><pair kern="-20" kpx2="120"/></kerning><kerning kpx1="280"><pair kern="60" kpx2="74"/></kerning><kerning kpx1="258"><pair kern="-20" kpx2="7888"/><pair kern="-20" kpx2="7890"/><pair kern="-20" kpx2="7892"/><pair kern="-20" kpx2="7894"/><pair kern="-20" kpx2="7896"/><pair kern="-20" kpx2="7898"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-20" kpx2="262"/><pair kern="-20" kpx2="266"/><pair kern="-20" kpx2="264"/><pair kern="-20" kpx2="7884"/><pair kern="-20" kpx2="268"/><pair kern="-20" kpx2="7886"/><pair kern="-69" kpx2="34"/><pair kern="-60" kpx2="7922"/><pair kern="-60" kpx2="7926"/><pair kern="-69" kpx2="39"/><pair kern="-60" kpx2="7924"/><pair kern="-60" kpx2="7928"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-20" kpx2="416"/><pair kern="-69" kpx2="538"/><pair kern="-20" kpx2="71"/><pair kern="-20" kpx2="338"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-20" kpx2="199"/><pair kern="-20" kpx2="79"/><pair kern="129" kpx2="74"/><pair kern="-40" kpx2="7812"/><pair kern="-60" kpx2="221"/><pair kern="-69" kpx2="84"/><pair kern="-40" kpx2="87"/><pair kern="-40" kpx2="86"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="81"/><pair kern="-40" kpx2="7808"/><pair kern="-40" kpx2="7810"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="334"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-20" kpx2="332"/><pair kern="-69" kpx2="8217"/><pair kern="-60" kpx2="89"/><pair kern="-20" kpx2="210"/><pair kern="-69" kpx2="8221"/><pair kern="-20" kpx2="211"/><pair kern="-40" kpx2="372"/><pair kern="-20" kpx2="510"/><pair kern="-60" kpx2="374"/><pair kern="-60" kpx2="376"/><pair kern="-69" kpx2="356"/><pair kern="-69" kpx2="354"/></kerning><kerning kpx1="259"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="256"><pair kern="-20" kpx2="7888"/><pair kern="-20" kpx2="7890"/><pair kern="-20" kpx2="7892"/><pair kern="-20" kpx2="7894"/><pair kern="-20" kpx2="7896"/><pair kern="-20" kpx2="7898"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-20" kpx2="262"/><pair kern="-20" kpx2="266"/><pair kern="-20" kpx2="264"/><pair kern="-20" kpx2="7884"/><pair kern="-20" kpx2="268"/><pair kern="-20" kpx2="7886"/><pair kern="-69" kpx2="34"/><pair kern="-60" kpx2="7922"/><pair kern="-60" kpx2="7926"/><pair kern="-69" kpx2="39"/><pair kern="-60" kpx2="7924"/><pair kern="-60" kpx2="7928"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-20" kpx2="416"/><pair kern="-69" kpx2="538"/><pair kern="-20" kpx2="71"/><pair kern="-20" kpx2="338"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-20" kpx2="199"/><pair kern="-20" kpx2="79"/><pair kern="129" kpx2="74"/><pair kern="-40" kpx2="7812"/><pair kern="-60" kpx2="221"/><pair kern="-69" kpx2="84"/><pair kern="-40" kpx2="87"/><pair kern="-40" kpx2="86"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="81"/><pair kern="-40" kpx2="7808"/><pair kern="-40" kpx2="7810"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="334"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-20" kpx2="332"/><pair kern="-69" kpx2="8217"/><pair kern="-60" kpx2="89"/><pair kern="-20" kpx2="210"/><pair kern="-69" kpx2="8221"/><pair kern="-20" kpx2="211"/><pair kern="-40" kpx2="372"/><pair kern="-20" kpx2="510"/><pair kern="-60" kpx2="374"/><pair kern="-60" kpx2="376"/><pair kern="-69" kpx2="356"/><pair kern="-69" kpx2="354"/></kerning><kerning kpx1="257"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="262"><pair kern="-20" kpx2="7888"/><pair kern="-20" kpx2="7890"/><pair kern="-20" kpx2="71"/><pair kern="-20" kpx2="7892"/><pair kern="-20" kpx2="338"/><pair kern="-20" kpx2="7894"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-20" kpx2="7896"/><pair kern="-20" kpx2="199"/><pair kern="-20" kpx2="7898"/><pair kern="-20" kpx2="79"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-20" kpx2="262"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="81"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="266"/><pair kern="-20" kpx2="334"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-20" kpx2="264"/><pair kern="-20" kpx2="332"/><pair kern="-20" kpx2="7884"/><pair kern="-20" kpx2="7886"/><pair kern="-20" kpx2="210"/><pair kern="-20" kpx2="268"/><pair kern="-20" kpx2="211"/><pair kern="-20" kpx2="510"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-20" kpx2="416"/></kerning><kerning kpx1="260"><pair kern="-20" kpx2="7888"/><pair kern="-20" kpx2="7890"/><pair kern="-20" kpx2="7892"/><pair kern="-20" kpx2="7894"/><pair kern="-20" kpx2="7896"/><pair kern="-20" kpx2="7898"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-20" kpx2="262"/><pair kern="-20" kpx2="266"/><pair kern="-20" kpx2="264"/><pair kern="-20" kpx2="7884"/><pair kern="-20" kpx2="268"/><pair kern="-20" kpx2="7886"/><pair kern="-69" kpx2="34"/><pair kern="-60" kpx2="7922"/><pair kern="-60" kpx2="7926"/><pair kern="-69" kpx2="39"/><pair kern="-60" kpx2="7924"/><pair kern="-60" kpx2="7928"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-20" kpx2="416"/><pair kern="-69" kpx2="538"/><pair kern="-20" kpx2="71"/><pair kern="-20" kpx2="338"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-20" kpx2="199"/><pair kern="-20" kpx2="79"/><pair kern="129" kpx2="74"/><pair kern="-40" kpx2="7812"/><pair kern="-60" kpx2="221"/><pair kern="-69" kpx2="84"/><pair kern="-40" kpx2="87"/><pair kern="-40" kpx2="86"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="81"/><pair kern="-40" kpx2="7808"/><pair kern="-40" kpx2="7810"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="334"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-20" kpx2="332"/><pair kern="-69" kpx2="8217"/><pair kern="-60" kpx2="89"/><pair kern="-20" kpx2="210"/><pair kern="-69" kpx2="8221"/><pair kern="-20" kpx2="211"/><pair kern="-40" kpx2="372"/><pair kern="-20" kpx2="510"/><pair kern="-60" kpx2="374"/><pair kern="-60" kpx2="376"/><pair kern="-69" kpx2="356"/><pair kern="-69" kpx2="354"/></kerning><kerning kpx1="261"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="266"><pair kern="-20" kpx2="7888"/><pair kern="-20" kpx2="7890"/><pair kern="-20" kpx2="71"/><pair kern="-20" kpx2="7892"/><pair kern="-20" kpx2="338"/><pair kern="-20" kpx2="7894"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-20" kpx2="7896"/><pair kern="-20" kpx2="199"/><pair kern="-20" kpx2="7898"/><pair kern="-20" kpx2="79"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-20" kpx2="262"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="81"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="266"/><pair kern="-20" kpx2="334"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-20" kpx2="264"/><pair kern="-20" kpx2="332"/><pair kern="-20" kpx2="7884"/><pair kern="-20" kpx2="7886"/><pair kern="-20" kpx2="210"/><pair kern="-20" kpx2="268"/><pair kern="-20" kpx2="211"/><pair kern="-20" kpx2="510"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-20" kpx2="416"/></kerning><kerning kpx1="264"><pair kern="-20" kpx2="7888"/><pair kern="-20" kpx2="7890"/><pair kern="-20" kpx2="71"/><pair kern="-20" kpx2="7892"/><pair kern="-20" kpx2="338"/><pair kern="-20" kpx2="7894"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-20" kpx2="7896"/><pair kern="-20" kpx2="199"/><pair kern="-20" kpx2="7898"/><pair kern="-20" kpx2="79"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-20" kpx2="262"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="81"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="266"/><pair kern="-20" kpx2="334"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-20" kpx2="264"/><pair kern="-20" kpx2="332"/><pair kern="-20" kpx2="7884"/><pair kern="-20" kpx2="7886"/><pair kern="-20" kpx2="210"/><pair kern="-20" kpx2="268"/><pair kern="-20" kpx2="211"/><pair kern="-20" kpx2="510"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-20" kpx2="416"/></kerning><kerning kpx1="270"><pair kern="-20" kpx2="258"/><pair kern="-20" kpx2="256"/><pair kern="-20" kpx2="260"/><pair kern="-9" kpx2="7922"/><pair kern="-9" kpx2="7926"/><pair kern="-9" kpx2="7924"/><pair kern="-9" kpx2="7928"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="44"/><pair kern="-29" kpx2="538"/><pair kern="-20" kpx2="65"/><pair kern="-20" kpx2="197"/><pair kern="-20" kpx2="196"/><pair kern="-20" kpx2="193"/><pair kern="-20" kpx2="192"/><pair kern="-9" kpx2="1029"/><pair kern="-20" kpx2="195"/><pair kern="-20" kpx2="194"/><pair kern="-9" kpx2="7812"/><pair kern="-9" kpx2="221"/><pair kern="-29" kpx2="84"/><pair kern="-9" kpx2="87"/><pair kern="-9" kpx2="86"/><pair kern="-9" kpx2="7808"/><pair kern="-9" kpx2="7810"/><pair kern="-40" kpx2="8218"/><pair kern="-9" kpx2="89"/><pair kern="-20" kpx2="88"/><pair kern="-40" kpx2="8222"/><pair kern="-20" kpx2="7680"/><pair kern="-9" kpx2="90"/><pair kern="-9" kpx2="372"/><pair kern="-20" kpx2="7862"/><pair kern="-9" kpx2="374"/><pair kern="-20" kpx2="7860"/><pair kern="-20" kpx2="7858"/><pair kern="-20" kpx2="506"/><pair kern="-20" kpx2="7856"/><pair kern="-9" kpx2="381"/><pair kern="-9" kpx2="377"/><pair kern="-9" kpx2="376"/><pair kern="-9" kpx2="379"/><pair kern="-29" kpx2="356"/><pair kern="-20" kpx2="7846"/><pair kern="-20" kpx2="7844"/><pair kern="-20" kpx2="7842"/><pair kern="-29" kpx2="354"/><pair kern="-20" kpx2="7840"/><pair kern="-20" kpx2="7854"/><pair kern="-20" kpx2="7852"/><pair kern="-20" kpx2="7850"/><pair kern="-20" kpx2="7848"/></kerning><kerning kpx1="271"><pair kern="40" kpx2="34"/><pair kern="29" kpx2="98"/><pair kern="40" kpx2="39"/><pair kern="29" kpx2="108"/><pair kern="69" kpx2="41"/><pair kern="29" kpx2="107"/><pair kern="29" kpx2="104"/><pair kern="29" kpx2="293"/><pair kern="60" kpx2="295"/><pair kern="69" kpx2="93"/><pair kern="40" kpx2="8217"/><pair kern="69" kpx2="125"/><pair kern="80" kpx2="63"/><pair kern="40" kpx2="8221"/></kerning><kerning kpx1="268"><pair kern="-20" kpx2="7888"/><pair kern="-20" kpx2="7890"/><pair kern="-20" kpx2="71"/><pair kern="-20" kpx2="7892"/><pair kern="-20" kpx2="338"/><pair kern="-20" kpx2="7894"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-20" kpx2="7896"/><pair kern="-20" kpx2="199"/><pair kern="-20" kpx2="7898"/><pair kern="-20" kpx2="79"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-20" kpx2="262"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="81"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="266"/><pair kern="-20" kpx2="334"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-20" kpx2="264"/><pair kern="-20" kpx2="332"/><pair kern="-20" kpx2="7884"/><pair kern="-20" kpx2="7886"/><pair kern="-20" kpx2="210"/><pair kern="-20" kpx2="268"/><pair kern="-20" kpx2="211"/><pair kern="-20" kpx2="510"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-20" kpx2="416"/></kerning><kerning kpx1="311"><pair kern="-20" kpx2="7889"/><pair kern="-20" kpx2="275"/><pair kern="-20" kpx2="273"/><pair kern="-20" kpx2="7893"/><pair kern="-20" kpx2="339"/><pair kern="-20" kpx2="279"/><pair kern="-20" kpx2="7895"/><pair kern="-20" kpx2="337"/><pair kern="-20" kpx2="277"/><pair kern="-20" kpx2="7897"/><pair kern="-20" kpx2="283"/><pair kern="-20" kpx2="7899"/><pair kern="-20" kpx2="281"/><pair kern="-20" kpx2="7901"/><pair kern="-20" kpx2="7903"/><pair kern="-20" kpx2="7875"/><pair kern="-20" kpx2="7877"/><pair kern="-20" kpx2="263"/><pair kern="-20" kpx2="7879"/><pair kern="-20" kpx2="335"/><pair kern="-20" kpx2="267"/><pair kern="-20" kpx2="333"/><pair kern="-20" kpx2="265"/><pair kern="-20" kpx2="7885"/><pair kern="-20" kpx2="271"/><pair kern="-20" kpx2="7887"/><pair kern="-20" kpx2="269"/><pair kern="-20" kpx2="100"/><pair kern="-20" kpx2="511"/><pair kern="-20" kpx2="101"/><pair kern="-20" kpx2="235"/><pair kern="-20" kpx2="234"/><pair kern="-20" kpx2="99"/><pair kern="-20" kpx2="233"/><pair kern="-20" kpx2="232"/><pair kern="-20" kpx2="7871"/><pair kern="-20" kpx2="231"/><pair kern="-20" kpx2="111"/><pair kern="-20" kpx2="7869"/><pair kern="-20" kpx2="7867"/><pair kern="-20" kpx2="7865"/><pair kern="-20" kpx2="224"/><pair kern="-20" kpx2="7907"/><pair kern="-20" kpx2="7905"/><pair kern="-20" kpx2="113"/><pair kern="-20" kpx2="248"/><pair kern="-20" kpx2="417"/><pair kern="-20" kpx2="246"/><pair kern="-20" kpx2="244"/><pair kern="-20" kpx2="245"/><pair kern="-20" kpx2="242"/><pair kern="-20" kpx2="243"/></kerning><kerning kpx1="310"><pair kern="-20" kpx2="7888"/><pair kern="-20" kpx2="7890"/><pair kern="-20" kpx2="71"/><pair kern="-20" kpx2="7892"/><pair kern="-20" kpx2="338"/><pair kern="-20" kpx2="7894"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-20" kpx2="7896"/><pair kern="-20" kpx2="199"/><pair kern="-20" kpx2="7898"/><pair kern="-20" kpx2="79"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-20" kpx2="262"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="81"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="266"/><pair kern="-20" kpx2="334"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-20" kpx2="264"/><pair kern="-20" kpx2="332"/><pair kern="-20" kpx2="7884"/><pair kern="-20" kpx2="7886"/><pair kern="-20" kpx2="210"/><pair kern="-20" kpx2="268"/><pair kern="-20" kpx2="211"/><pair kern="-20" kpx2="510"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-20" kpx2="416"/></kerning><kerning kpx1="313"><pair kern="-20" kpx2="7888"/><pair kern="-20" kpx2="7890"/><pair kern="-20" kpx2="7892"/><pair kern="-20" kpx2="7894"/><pair kern="-20" kpx2="7896"/><pair kern="-20" kpx2="7898"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-20" kpx2="262"/><pair kern="-20" kpx2="266"/><pair kern="-20" kpx2="264"/><pair kern="-20" kpx2="7884"/><pair kern="-20" kpx2="7886"/><pair kern="-20" kpx2="268"/><pair kern="-80" kpx2="34"/><pair kern="-29" kpx2="7922"/><pair kern="-9" kpx2="7920"/><pair kern="-29" kpx2="7926"/><pair kern="-80" kpx2="39"/><pair kern="-29" kpx2="7924"/><pair kern="-29" kpx2="7928"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-9" kpx2="7910"/><pair kern="-9" kpx2="7908"/><pair kern="-9" kpx2="431"/><pair kern="-9" kpx2="7914"/><pair kern="-20" kpx2="416"/><pair kern="-9" kpx2="7912"/><pair kern="-9" kpx2="7918"/><pair kern="-9" kpx2="7916"/><pair kern="-20" kpx2="538"/><pair kern="-20" kpx2="71"/><pair kern="-20" kpx2="338"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-20" kpx2="199"/><pair kern="-20" kpx2="79"/><pair kern="-20" kpx2="7812"/><pair kern="-9" kpx2="220"/><pair kern="-9" kpx2="85"/><pair kern="-29" kpx2="221"/><pair kern="-20" kpx2="84"/><pair kern="-20" kpx2="87"/><pair kern="-20" kpx2="86"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="81"/><pair kern="-20" kpx2="7808"/><pair kern="-9" kpx2="217"/><pair kern="-20" kpx2="7810"/><pair kern="-9" kpx2="218"/><pair kern="-9" kpx2="219"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="334"/><pair kern="-20" kpx2="213"/><pair kern="-80" kpx2="8217"/><pair kern="-20" kpx2="214"/><pair kern="-20" kpx2="332"/><pair kern="-29" kpx2="89"/><pair kern="-80" kpx2="8221"/><pair kern="-20" kpx2="210"/><pair kern="-20" kpx2="211"/><pair kern="-20" kpx2="372"/><pair kern="-20" kpx2="510"/><pair kern="-29" kpx2="374"/><pair kern="-9" kpx2="368"/><pair kern="-9" kpx2="370"/><pair kern="-29" kpx2="376"/><pair kern="-20" kpx2="356"/><pair kern="-20" kpx2="354"/><pair kern="-9" kpx2="364"/><pair kern="-9" kpx2="366"/><pair kern="-9" kpx2="360"/><pair kern="-9" kpx2="362"/></kerning><kerning kpx1="312"><pair kern="-20" kpx2="7889"/><pair kern="-20" kpx2="275"/><pair kern="-20" kpx2="273"/><pair kern="-20" kpx2="7893"/><pair kern="-20" kpx2="339"/><pair kern="-20" kpx2="279"/><pair kern="-20" kpx2="7895"/><pair kern="-20" kpx2="337"/><pair kern="-20" kpx2="277"/><pair kern="-20" kpx2="7897"/><pair kern="-20" kpx2="283"/><pair kern="-20" kpx2="7899"/><pair kern="-20" kpx2="281"/><pair kern="-20" kpx2="7901"/><pair kern="-20" kpx2="7903"/><pair kern="-20" kpx2="7875"/><pair kern="-20" kpx2="7877"/><pair kern="-20" kpx2="263"/><pair kern="-20" kpx2="7879"/><pair kern="-20" kpx2="335"/><pair kern="-20" kpx2="267"/><pair kern="-20" kpx2="333"/><pair kern="-20" kpx2="265"/><pair kern="-20" kpx2="7885"/><pair kern="-20" kpx2="271"/><pair kern="-20" kpx2="7887"/><pair kern="-20" kpx2="269"/><pair kern="-20" kpx2="100"/><pair kern="-20" kpx2="511"/><pair kern="-20" kpx2="101"/><pair kern="-20" kpx2="235"/><pair kern="-20" kpx2="234"/><pair kern="-20" kpx2="99"/><pair kern="-20" kpx2="233"/><pair kern="-20" kpx2="232"/><pair kern="-20" kpx2="7871"/><pair kern="-20" kpx2="231"/><pair kern="-20" kpx2="111"/><pair kern="-20" kpx2="7869"/><pair kern="-20" kpx2="7867"/><pair kern="-20" kpx2="7865"/><pair kern="-20" kpx2="224"/><pair kern="-20" kpx2="7907"/><pair kern="-20" kpx2="7905"/><pair kern="-20" kpx2="113"/><pair kern="-20" kpx2="248"/><pair kern="-20" kpx2="417"/><pair kern="-20" kpx2="246"/><pair kern="-20" kpx2="244"/><pair kern="-20" kpx2="245"/><pair kern="-20" kpx2="242"/><pair kern="-20" kpx2="243"/></kerning><kerning kpx1="315"><pair kern="-20" kpx2="7888"/><pair kern="-20" kpx2="7890"/><pair kern="-20" kpx2="7892"/><pair kern="-20" kpx2="7894"/><pair kern="-20" kpx2="7896"/><pair kern="-20" kpx2="7898"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-20" kpx2="262"/><pair kern="-20" kpx2="266"/><pair kern="-20" kpx2="264"/><pair kern="-20" kpx2="7884"/><pair kern="-20" kpx2="7886"/><pair kern="-20" kpx2="268"/><pair kern="-80" kpx2="34"/><pair kern="-29" kpx2="7922"/><pair kern="-9" kpx2="7920"/><pair kern="-29" kpx2="7926"/><pair kern="-80" kpx2="39"/><pair kern="-29" kpx2="7924"/><pair kern="-29" kpx2="7928"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-9" kpx2="7910"/><pair kern="-9" kpx2="7908"/><pair kern="-9" kpx2="431"/><pair kern="-9" kpx2="7914"/><pair kern="-20" kpx2="416"/><pair kern="-9" kpx2="7912"/><pair kern="-9" kpx2="7918"/><pair kern="-9" kpx2="7916"/><pair kern="-20" kpx2="538"/><pair kern="-20" kpx2="71"/><pair kern="-20" kpx2="338"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-20" kpx2="199"/><pair kern="-20" kpx2="79"/><pair kern="-20" kpx2="7812"/><pair kern="-9" kpx2="220"/><pair kern="-9" kpx2="85"/><pair kern="-29" kpx2="221"/><pair kern="-20" kpx2="84"/><pair kern="-20" kpx2="87"/><pair kern="-20" kpx2="86"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="81"/><pair kern="-20" kpx2="7808"/><pair kern="-9" kpx2="217"/><pair kern="-20" kpx2="7810"/><pair kern="-9" kpx2="218"/><pair kern="-9" kpx2="219"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="334"/><pair kern="-20" kpx2="213"/><pair kern="-80" kpx2="8217"/><pair kern="-20" kpx2="214"/><pair kern="-20" kpx2="332"/><pair kern="-29" kpx2="89"/><pair kern="-80" kpx2="8221"/><pair kern="-20" kpx2="210"/><pair kern="-20" kpx2="211"/><pair kern="-20" kpx2="372"/><pair kern="-20" kpx2="510"/><pair kern="-29" kpx2="374"/><pair kern="-9" kpx2="368"/><pair kern="-9" kpx2="370"/><pair kern="-29" kpx2="376"/><pair kern="-20" kpx2="356"/><pair kern="-20" kpx2="354"/><pair kern="-9" kpx2="364"/><pair kern="-9" kpx2="366"/><pair kern="-9" kpx2="360"/><pair kern="-9" kpx2="362"/></kerning><kerning kpx1="317"><pair kern="-20" kpx2="7888"/><pair kern="-20" kpx2="7890"/><pair kern="-20" kpx2="7892"/><pair kern="-20" kpx2="7894"/><pair kern="-20" kpx2="7896"/><pair kern="-20" kpx2="7898"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-20" kpx2="262"/><pair kern="-20" kpx2="266"/><pair kern="-20" kpx2="264"/><pair kern="-20" kpx2="7884"/><pair kern="-20" kpx2="7886"/><pair kern="-20" kpx2="268"/><pair kern="-80" kpx2="34"/><pair kern="-29" kpx2="7922"/><pair kern="-9" kpx2="7920"/><pair kern="-29" kpx2="7926"/><pair kern="-80" kpx2="39"/><pair kern="-29" kpx2="7924"/><pair kern="-29" kpx2="7928"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-9" kpx2="7910"/><pair kern="-9" kpx2="7908"/><pair kern="-9" kpx2="431"/><pair kern="-9" kpx2="7914"/><pair kern="-20" kpx2="416"/><pair kern="-9" kpx2="7912"/><pair kern="-9" kpx2="7918"/><pair kern="-9" kpx2="7916"/><pair kern="-20" kpx2="538"/><pair kern="-20" kpx2="71"/><pair kern="-20" kpx2="338"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-20" kpx2="199"/><pair kern="-20" kpx2="79"/><pair kern="-20" kpx2="7812"/><pair kern="-9" kpx2="220"/><pair kern="-9" kpx2="85"/><pair kern="-29" kpx2="221"/><pair kern="-20" kpx2="84"/><pair kern="-20" kpx2="87"/><pair kern="-20" kpx2="86"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="81"/><pair kern="-20" kpx2="7808"/><pair kern="-9" kpx2="217"/><pair kern="-20" kpx2="7810"/><pair kern="-9" kpx2="218"/><pair kern="-9" kpx2="219"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="334"/><pair kern="-20" kpx2="213"/><pair kern="-80" kpx2="8217"/><pair kern="-20" kpx2="214"/><pair kern="-20" kpx2="332"/><pair kern="-29" kpx2="89"/><pair kern="-80" kpx2="8221"/><pair kern="-20" kpx2="210"/><pair kern="-20" kpx2="211"/><pair kern="-20" kpx2="372"/><pair kern="-20" kpx2="510"/><pair kern="-29" kpx2="374"/><pair kern="-9" kpx2="368"/><pair kern="-9" kpx2="370"/><pair kern="-29" kpx2="376"/><pair kern="-20" kpx2="356"/><pair kern="-20" kpx2="354"/><pair kern="-9" kpx2="364"/><pair kern="-9" kpx2="366"/><pair kern="-9" kpx2="360"/><pair kern="-9" kpx2="362"/></kerning><kerning kpx1="319"><pair kern="-20" kpx2="7888"/><pair kern="-20" kpx2="7890"/><pair kern="-20" kpx2="7892"/><pair kern="-20" kpx2="7894"/><pair kern="-20" kpx2="7896"/><pair kern="-20" kpx2="7898"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-20" kpx2="262"/><pair kern="-20" kpx2="266"/><pair kern="-20" kpx2="264"/><pair kern="-20" kpx2="7884"/><pair kern="-20" kpx2="7886"/><pair kern="-20" kpx2="268"/><pair kern="-80" kpx2="34"/><pair kern="-29" kpx2="7922"/><pair kern="-9" kpx2="7920"/><pair kern="-29" kpx2="7926"/><pair kern="-80" kpx2="39"/><pair kern="-29" kpx2="7924"/><pair kern="-29" kpx2="7928"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-9" kpx2="7910"/><pair kern="-9" kpx2="7908"/><pair kern="-9" kpx2="431"/><pair kern="-9" kpx2="7914"/><pair kern="-20" kpx2="416"/><pair kern="-9" kpx2="7912"/><pair kern="-9" kpx2="7918"/><pair kern="-9" kpx2="7916"/><pair kern="-20" kpx2="538"/><pair kern="-20" kpx2="71"/><pair kern="-20" kpx2="338"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-20" kpx2="199"/><pair kern="-20" kpx2="79"/><pair kern="-20" kpx2="7812"/><pair kern="-9" kpx2="220"/><pair kern="-9" kpx2="85"/><pair kern="-29" kpx2="221"/><pair kern="-20" kpx2="84"/><pair kern="-20" kpx2="87"/><pair kern="-20" kpx2="86"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="81"/><pair kern="-20" kpx2="7808"/><pair kern="-9" kpx2="217"/><pair kern="-20" kpx2="7810"/><pair kern="-9" kpx2="218"/><pair kern="-9" kpx2="219"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="334"/><pair kern="-20" kpx2="213"/><pair kern="-80" kpx2="8217"/><pair kern="-20" kpx2="214"/><pair kern="-20" kpx2="332"/><pair kern="-29" kpx2="89"/><pair kern="-80" kpx2="8221"/><pair kern="-20" kpx2="210"/><pair kern="-20" kpx2="211"/><pair kern="-20" kpx2="372"/><pair kern="-20" kpx2="510"/><pair kern="-29" kpx2="374"/><pair kern="-9" kpx2="368"/><pair kern="-9" kpx2="370"/><pair kern="-29" kpx2="376"/><pair kern="-20" kpx2="356"/><pair kern="-20" kpx2="354"/><pair kern="-9" kpx2="364"/><pair kern="-9" kpx2="366"/><pair kern="-9" kpx2="360"/><pair kern="-9" kpx2="362"/></kerning><kerning kpx1="318"><pair kern="40" kpx2="34"/><pair kern="29" kpx2="98"/><pair kern="40" kpx2="39"/><pair kern="29" kpx2="108"/><pair kern="69" kpx2="41"/><pair kern="29" kpx2="107"/><pair kern="29" kpx2="104"/><pair kern="29" kpx2="293"/><pair kern="69" kpx2="295"/><pair kern="69" kpx2="93"/><pair kern="40" kpx2="8217"/><pair kern="69" kpx2="125"/><pair kern="69" kpx2="63"/><pair kern="40" kpx2="8221"/></kerning><kerning kpx1="293"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="343"><pair kern="-20" kpx2="7889"/><pair kern="-20" kpx2="275"/><pair kern="-20" kpx2="273"/><pair kern="-20" kpx2="7893"/><pair kern="-20" kpx2="279"/><pair kern="-20" kpx2="7895"/><pair kern="-20" kpx2="277"/><pair kern="-20" kpx2="7897"/><pair kern="-20" kpx2="283"/><pair kern="-20" kpx2="7899"/><pair kern="-20" kpx2="281"/><pair kern="-20" kpx2="7901"/><pair kern="-9" kpx2="287"/><pair kern="-20" kpx2="7903"/><pair kern="-9" kpx2="285"/><pair kern="-20" kpx2="259"/><pair kern="-20" kpx2="7875"/><pair kern="-20" kpx2="257"/><pair kern="-20" kpx2="7877"/><pair kern="-20" kpx2="263"/><pair kern="-20" kpx2="7879"/><pair kern="-20" kpx2="261"/><pair kern="-20" kpx2="267"/><pair kern="-20" kpx2="265"/><pair kern="-20" kpx2="7885"/><pair kern="-20" kpx2="271"/><pair kern="-20" kpx2="7887"/><pair kern="-20" kpx2="269"/><pair kern="40" kpx2="34"/><pair kern="40" kpx2="39"/><pair kern="-20" kpx2="7907"/><pair kern="-9" kpx2="289"/><pair kern="-20" kpx2="7905"/><pair kern="-9" kpx2="291"/><pair kern="-20" kpx2="417"/><pair kern="-20" kpx2="339"/><pair kern="-20" kpx2="337"/><pair kern="-20" kpx2="335"/><pair kern="40" kpx2="8217"/><pair kern="-20" kpx2="333"/><pair kern="-20" kpx2="7681"/><pair kern="40" kpx2="8221"/><pair kern="-20" kpx2="7863"/><pair kern="-20" kpx2="509"/><pair kern="-9" kpx2="103"/><pair kern="-20" kpx2="7861"/><pair kern="-20" kpx2="100"/><pair kern="-20" kpx2="511"/><pair kern="-20" kpx2="101"/><pair kern="-20" kpx2="7859"/><pair kern="-20" kpx2="235"/><pair kern="-20" kpx2="234"/><pair kern="-20" kpx2="99"/><pair kern="-20" kpx2="7857"/><pair kern="-20" kpx2="233"/><pair kern="-20" kpx2="507"/><pair kern="-20" kpx2="232"/><pair kern="-20" kpx2="97"/><pair kern="-20" kpx2="7871"/><pair kern="-20" kpx2="231"/><pair kern="-20" kpx2="230"/><pair kern="-20" kpx2="111"/><pair kern="-20" kpx2="7869"/><pair kern="-20" kpx2="229"/><pair kern="-20" kpx2="228"/><pair kern="-20" kpx2="7867"/><pair kern="-20" kpx2="227"/><pair kern="-20" kpx2="226"/><pair kern="-20" kpx2="7865"/><pair kern="-20" kpx2="225"/><pair kern="-20" kpx2="224"/><pair kern="-20" kpx2="7845"/><pair kern="-20" kpx2="7843"/><pair kern="-20" kpx2="113"/><pair kern="-20" kpx2="248"/><pair kern="-20" kpx2="7841"/><pair kern="-20" kpx2="246"/><pair kern="-20" kpx2="7855"/><pair kern="-20" kpx2="244"/><pair kern="-20" kpx2="7853"/><pair kern="-20" kpx2="245"/><pair kern="-20" kpx2="242"/><pair kern="-20" kpx2="7851"/><pair kern="-20" kpx2="243"/><pair kern="-20" kpx2="7849"/></kerning><kerning kpx1="341"><pair kern="-20" kpx2="7889"/><pair kern="-20" kpx2="275"/><pair kern="-20" kpx2="273"/><pair kern="-20" kpx2="7893"/><pair kern="-20" kpx2="279"/><pair kern="-20" kpx2="7895"/><pair kern="-20" kpx2="277"/><pair kern="-20" kpx2="7897"/><pair kern="-20" kpx2="283"/><pair kern="-20" kpx2="7899"/><pair kern="-20" kpx2="281"/><pair kern="-20" kpx2="7901"/><pair kern="-9" kpx2="287"/><pair kern="-20" kpx2="7903"/><pair kern="-9" kpx2="285"/><pair kern="-20" kpx2="259"/><pair kern="-20" kpx2="7875"/><pair kern="-20" kpx2="257"/><pair kern="-20" kpx2="7877"/><pair kern="-20" kpx2="263"/><pair kern="-20" kpx2="7879"/><pair kern="-20" kpx2="261"/><pair kern="-20" kpx2="267"/><pair kern="-20" kpx2="265"/><pair kern="-20" kpx2="7885"/><pair kern="-20" kpx2="271"/><pair kern="-20" kpx2="7887"/><pair kern="-20" kpx2="269"/><pair kern="40" kpx2="34"/><pair kern="40" kpx2="39"/><pair kern="-20" kpx2="7907"/><pair kern="-9" kpx2="289"/><pair kern="-20" kpx2="7905"/><pair kern="-9" kpx2="291"/><pair kern="-20" kpx2="417"/><pair kern="-20" kpx2="339"/><pair kern="-20" kpx2="337"/><pair kern="-20" kpx2="335"/><pair kern="40" kpx2="8217"/><pair kern="-20" kpx2="333"/><pair kern="-20" kpx2="7681"/><pair kern="40" kpx2="8221"/><pair kern="-20" kpx2="7863"/><pair kern="-20" kpx2="509"/><pair kern="-9" kpx2="103"/><pair kern="-20" kpx2="7861"/><pair kern="-20" kpx2="100"/><pair kern="-20" kpx2="511"/><pair kern="-20" kpx2="101"/><pair kern="-20" kpx2="7859"/><pair kern="-20" kpx2="235"/><pair kern="-20" kpx2="234"/><pair kern="-20" kpx2="99"/><pair kern="-20" kpx2="7857"/><pair kern="-20" kpx2="233"/><pair kern="-20" kpx2="507"/><pair kern="-20" kpx2="232"/><pair kern="-20" kpx2="97"/><pair kern="-20" kpx2="7871"/><pair kern="-20" kpx2="231"/><pair kern="-20" kpx2="230"/><pair kern="-20" kpx2="111"/><pair kern="-20" kpx2="7869"/><pair kern="-20" kpx2="229"/><pair kern="-20" kpx2="228"/><pair kern="-20" kpx2="7867"/><pair kern="-20" kpx2="227"/><pair kern="-20" kpx2="226"/><pair kern="-20" kpx2="7865"/><pair kern="-20" kpx2="225"/><pair kern="-20" kpx2="224"/><pair kern="-20" kpx2="7845"/><pair kern="-20" kpx2="7843"/><pair kern="-20" kpx2="113"/><pair kern="-20" kpx2="248"/><pair kern="-20" kpx2="7841"/><pair kern="-20" kpx2="246"/><pair kern="-20" kpx2="7855"/><pair kern="-20" kpx2="244"/><pair kern="-20" kpx2="7853"/><pair kern="-20" kpx2="245"/><pair kern="-20" kpx2="242"/><pair kern="-20" kpx2="7851"/><pair kern="-20" kpx2="243"/><pair kern="-20" kpx2="7849"/></kerning><kerning kpx1="338"><pair kern="60" kpx2="74"/></kerning><kerning kpx1="336"><pair kern="-20" kpx2="258"/><pair kern="-20" kpx2="256"/><pair kern="-20" kpx2="260"/><pair kern="-9" kpx2="7922"/><pair kern="-9" kpx2="7926"/><pair kern="-9" kpx2="7924"/><pair kern="-9" kpx2="7928"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="44"/><pair kern="-29" kpx2="538"/><pair kern="-20" kpx2="65"/><pair kern="-20" kpx2="197"/><pair kern="-20" kpx2="196"/><pair kern="-20" kpx2="193"/><pair kern="-20" kpx2="192"/><pair kern="-9" kpx2="1029"/><pair kern="-20" kpx2="195"/><pair kern="-20" kpx2="194"/><pair kern="-9" kpx2="7812"/><pair kern="-9" kpx2="221"/><pair kern="-29" kpx2="84"/><pair kern="-9" kpx2="87"/><pair kern="-9" kpx2="86"/><pair kern="-9" kpx2="7808"/><pair kern="-9" kpx2="7810"/><pair kern="-40" kpx2="8218"/><pair kern="-9" kpx2="89"/><pair kern="-20" kpx2="88"/><pair kern="-40" kpx2="8222"/><pair kern="-20" kpx2="7680"/><pair kern="-9" kpx2="90"/><pair kern="-9" kpx2="372"/><pair kern="-20" kpx2="7862"/><pair kern="-9" kpx2="374"/><pair kern="-20" kpx2="7860"/><pair kern="-20" kpx2="7858"/><pair kern="-20" kpx2="506"/><pair kern="-20" kpx2="7856"/><pair kern="-9" kpx2="381"/><pair kern="-9" kpx2="377"/><pair kern="-9" kpx2="376"/><pair kern="-9" kpx2="379"/><pair kern="-29" kpx2="356"/><pair kern="-20" kpx2="7846"/><pair kern="-20" kpx2="7844"/><pair kern="-20" kpx2="7842"/><pair kern="-29" kpx2="354"/><pair kern="-20" kpx2="7840"/><pair kern="-20" kpx2="7854"/><pair kern="-20" kpx2="7852"/><pair kern="-20" kpx2="7850"/><pair kern="-20" kpx2="7848"/></kerning><kerning kpx1="1299"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="64256"><pair kern="60" kpx2="34"/><pair kern="60" kpx2="39"/><pair kern="60" kpx2="8217"/><pair kern="60" kpx2="8221"/></kerning><kerning kpx1="1298"><pair kern="109" kpx2="1032"/><pair kern="20" kpx2="1249"/><pair kern="-20" kpx2="1287"/><pair kern="-20" kpx2="1285"/></kerning><kerning kpx1="1296"><pair kern="-20" kpx2="1269"/><pair kern="-20" kpx2="1207"/><pair kern="-20" kpx2="1228"/><pair kern="-20" kpx2="1209"/><pair kern="-20" kpx2="1095"/></kerning><kerning kpx1="345"><pair kern="-20" kpx2="7889"/><pair kern="-20" kpx2="275"/><pair kern="-20" kpx2="273"/><pair kern="-20" kpx2="7893"/><pair kern="-20" kpx2="279"/><pair kern="-20" kpx2="7895"/><pair kern="-20" kpx2="277"/><pair kern="-20" kpx2="7897"/><pair kern="-20" kpx2="283"/><pair kern="-20" kpx2="7899"/><pair kern="-20" kpx2="281"/><pair kern="-20" kpx2="7901"/><pair kern="-9" kpx2="287"/><pair kern="-20" kpx2="7903"/><pair kern="-9" kpx2="285"/><pair kern="-20" kpx2="259"/><pair kern="-20" kpx2="7875"/><pair kern="-20" kpx2="257"/><pair kern="-20" kpx2="7877"/><pair kern="-20" kpx2="263"/><pair kern="-20" kpx2="7879"/><pair kern="-20" kpx2="261"/><pair kern="-20" kpx2="267"/><pair kern="-20" kpx2="265"/><pair kern="-20" kpx2="7885"/><pair kern="-20" kpx2="271"/><pair kern="-20" kpx2="7887"/><pair kern="-20" kpx2="269"/><pair kern="40" kpx2="34"/><pair kern="40" kpx2="39"/><pair kern="-20" kpx2="7907"/><pair kern="-9" kpx2="289"/><pair kern="-20" kpx2="7905"/><pair kern="-9" kpx2="291"/><pair kern="-20" kpx2="417"/><pair kern="-20" kpx2="339"/><pair kern="-20" kpx2="337"/><pair kern="-20" kpx2="335"/><pair kern="40" kpx2="8217"/><pair kern="-20" kpx2="333"/><pair kern="-20" kpx2="7681"/><pair kern="40" kpx2="8221"/><pair kern="-20" kpx2="7863"/><pair kern="-20" kpx2="509"/><pair kern="-9" kpx2="103"/><pair kern="-20" kpx2="7861"/><pair kern="-20" kpx2="100"/><pair kern="-20" kpx2="511"/><pair kern="-20" kpx2="101"/><pair kern="-20" kpx2="7859"/><pair kern="-20" kpx2="235"/><pair kern="-20" kpx2="234"/><pair kern="-20" kpx2="99"/><pair kern="-20" kpx2="7857"/><pair kern="-20" kpx2="233"/><pair kern="-20" kpx2="507"/><pair kern="-20" kpx2="232"/><pair kern="-20" kpx2="97"/><pair kern="-20" kpx2="7871"/><pair kern="-20" kpx2="231"/><pair kern="-20" kpx2="230"/><pair kern="-20" kpx2="111"/><pair kern="-20" kpx2="7869"/><pair kern="-20" kpx2="229"/><pair kern="-20" kpx2="228"/><pair kern="-20" kpx2="7867"/><pair kern="-20" kpx2="227"/><pair kern="-20" kpx2="226"/><pair kern="-20" kpx2="7865"/><pair kern="-20" kpx2="225"/><pair kern="-20" kpx2="224"/><pair kern="-20" kpx2="7845"/><pair kern="-20" kpx2="7843"/><pair kern="-20" kpx2="113"/><pair kern="-20" kpx2="248"/><pair kern="-20" kpx2="7841"/><pair kern="-20" kpx2="246"/><pair kern="-20" kpx2="7855"/><pair kern="-20" kpx2="244"/><pair kern="-20" kpx2="7853"/><pair kern="-20" kpx2="245"/><pair kern="-20" kpx2="242"/><pair kern="-20" kpx2="7851"/><pair kern="-20" kpx2="243"/><pair kern="-20" kpx2="7849"/></kerning><kerning kpx1="1290"><pair kern="-29" kpx2="1217"/><pair kern="-29" kpx2="1098"/><pair kern="-20" kpx2="1218"/><pair kern="-20" kpx2="1093"/><pair kern="-20" kpx2="1228"/><pair kern="-20" kpx2="1095"/><pair kern="-29" kpx2="1090"/><pair kern="-29" kpx2="1227"/><pair kern="-29" kpx2="1236"/><pair kern="-29" kpx2="1232"/><pair kern="-29" kpx2="1234"/><pair kern="-29" kpx2="1244"/><pair kern="-20" kpx2="1245"/><pair kern="-49" kpx2="34"/><pair kern="-20" kpx2="1130"/><pair kern="-49" kpx2="39"/><pair kern="-29" kpx2="1126"/><pair kern="-29" kpx2="1262"/><pair kern="-29" kpx2="1268"/><pair kern="-20" kpx2="1269"/><pair kern="-29" kpx2="1266"/><pair kern="-29" kpx2="1264"/><pair kern="-29" kpx2="1278"/><pair kern="-20" kpx2="1279"/><pair kern="-29" kpx2="1142"/><pair kern="-29" kpx2="1276"/><pair kern="-20" kpx2="1277"/><pair kern="-29" kpx2="1140"/><pair kern="-29" kpx2="1136"/><pair kern="-40" kpx2="1035"/><pair kern="-29" kpx2="1038"/><pair kern="-40" kpx2="1026"/><pair kern="-40" kpx2="1294"/><pair kern="-29" kpx2="1295"/><pair kern="-29" kpx2="1174"/><pair kern="-20" kpx2="1175"/><pair kern="-29" kpx2="1040"/><pair kern="-49" kpx2="8217"/><pair kern="-20" kpx2="1286"/><pair kern="-20" kpx2="1287"/><pair kern="-20" kpx2="1284"/><pair kern="-49" kpx2="8221"/><pair kern="-20" kpx2="1285"/><pair kern="-29" kpx2="1046"/><pair kern="-40" kpx2="1066"/><pair kern="-29" kpx2="1185"/><pair kern="-40" kpx2="1184"/><pair kern="-69" kpx2="1058"/><pair kern="-29" kpx2="1059"/><pair kern="-29" kpx2="1063"/><pair kern="-29" kpx2="1198"/><pair kern="-29" kpx2="1197"/><pair kern="-29" kpx2="1061"/><pair kern="-69" kpx2="1196"/><pair kern="-29" kpx2="1202"/><pair kern="-20" kpx2="1203"/><pair kern="-29" kpx2="1200"/><pair kern="-29" kpx2="1206"/><pair kern="-20" kpx2="1207"/><pair kern="-40" kpx2="1204"/><pair kern="-29" kpx2="1205"/><pair kern="-29" kpx2="1208"/><pair kern="-20" kpx2="1209"/><pair kern="-20" kpx2="1078"/></kerning><kerning kpx1="326"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="1291"><pair kern="-29" kpx2="1098"/><pair kern="-20" kpx2="1218"/><pair kern="-20" kpx2="1093"/><pair kern="-20" kpx2="1228"/><pair kern="-20" kpx2="1095"/><pair kern="-29" kpx2="1090"/><pair kern="-20" kpx2="1091"/><pair kern="-20" kpx2="1118"/><pair kern="-29" kpx2="1295"/><pair kern="-20" kpx2="1175"/><pair kern="-20" kpx2="1245"/><pair kern="-49" kpx2="8217"/><pair kern="-49" kpx2="1287"/><pair kern="-49" kpx2="8221"/><pair kern="-49" kpx2="1285"/><pair kern="-49" kpx2="34"/><pair kern="-29" kpx2="1185"/><pair kern="-49" kpx2="39"/><pair kern="-20" kpx2="1263"/><pair kern="-29" kpx2="1197"/><pair kern="-20" kpx2="1203"/><pair kern="-20" kpx2="1269"/><pair kern="-20" kpx2="1207"/><pair kern="-20" kpx2="1267"/><pair kern="-29" kpx2="1205"/><pair kern="-20" kpx2="1265"/><pair kern="-20" kpx2="1279"/><pair kern="-20" kpx2="1277"/><pair kern="-20" kpx2="1209"/><pair kern="-20" kpx2="1078"/></kerning><kerning kpx1="1288"><pair kern="-29" kpx2="1217"/><pair kern="-29" kpx2="1098"/><pair kern="-20" kpx2="1218"/><pair kern="-20" kpx2="1093"/><pair kern="-20" kpx2="1228"/><pair kern="-20" kpx2="1095"/><pair kern="-29" kpx2="1090"/><pair kern="-29" kpx2="1227"/><pair kern="-29" kpx2="1236"/><pair kern="-29" kpx2="1232"/><pair kern="-29" kpx2="1234"/><pair kern="-29" kpx2="1244"/><pair kern="-20" kpx2="1245"/><pair kern="-49" kpx2="34"/><pair kern="-20" kpx2="1130"/><pair kern="-49" kpx2="39"/><pair kern="-29" kpx2="1126"/><pair kern="-29" kpx2="1262"/><pair kern="-29" kpx2="1268"/><pair kern="-20" kpx2="1269"/><pair kern="-29" kpx2="1266"/><pair kern="-29" kpx2="1264"/><pair kern="-29" kpx2="1278"/><pair kern="-20" kpx2="1279"/><pair kern="-29" kpx2="1142"/><pair kern="-29" kpx2="1276"/><pair kern="-20" kpx2="1277"/><pair kern="-29" kpx2="1140"/><pair kern="-29" kpx2="1136"/><pair kern="-40" kpx2="1035"/><pair kern="-29" kpx2="1038"/><pair kern="-40" kpx2="1026"/><pair kern="-40" kpx2="1294"/><pair kern="-29" kpx2="1295"/><pair kern="-29" kpx2="1174"/><pair kern="-20" kpx2="1175"/><pair kern="-29" kpx2="1040"/><pair kern="-49" kpx2="8217"/><pair kern="-20" kpx2="1286"/><pair kern="-20" kpx2="1287"/><pair kern="-20" kpx2="1284"/><pair kern="-49" kpx2="8221"/><pair kern="-20" kpx2="1285"/><pair kern="-29" kpx2="1046"/><pair kern="-40" kpx2="1066"/><pair kern="-29" kpx2="1185"/><pair kern="-40" kpx2="1184"/><pair kern="-69" kpx2="1058"/><pair kern="-29" kpx2="1059"/><pair kern="-29" kpx2="1063"/><pair kern="-29" kpx2="1198"/><pair kern="-29" kpx2="1197"/><pair kern="-29" kpx2="1061"/><pair kern="-69" kpx2="1196"/><pair kern="-29" kpx2="1202"/><pair kern="-20" kpx2="1203"/><pair kern="-29" kpx2="1200"/><pair kern="-29" kpx2="1206"/><pair kern="-20" kpx2="1207"/><pair kern="-40" kpx2="1204"/><pair kern="-29" kpx2="1205"/><pair kern="-29" kpx2="1208"/><pair kern="-20" kpx2="1209"/><pair kern="-20" kpx2="1078"/></kerning><kerning kpx1="1289"><pair kern="-29" kpx2="1098"/><pair kern="-20" kpx2="1218"/><pair kern="-20" kpx2="1093"/><pair kern="-20" kpx2="1228"/><pair kern="-20" kpx2="1095"/><pair kern="-29" kpx2="1090"/><pair kern="-20" kpx2="1091"/><pair kern="-20" kpx2="1118"/><pair kern="-29" kpx2="1295"/><pair kern="-20" kpx2="1175"/><pair kern="-20" kpx2="1245"/><pair kern="-49" kpx2="8217"/><pair kern="-49" kpx2="1287"/><pair kern="-49" kpx2="8221"/><pair kern="-49" kpx2="1285"/><pair kern="-49" kpx2="34"/><pair kern="-29" kpx2="1185"/><pair kern="-49" kpx2="39"/><pair kern="-20" kpx2="1263"/><pair kern="-29" kpx2="1197"/><pair kern="-20" kpx2="1203"/><pair kern="-20" kpx2="1269"/><pair kern="-20" kpx2="1207"/><pair kern="-20" kpx2="1267"/><pair kern="-29" kpx2="1205"/><pair kern="-20" kpx2="1265"/><pair kern="-20" kpx2="1279"/><pair kern="-20" kpx2="1277"/><pair kern="-20" kpx2="1209"/><pair kern="-20" kpx2="1078"/></kerning><kerning kpx1="1294"><pair kern="-29" kpx2="1035"/><pair kern="-20" kpx2="1217"/><pair kern="-20" kpx2="1098"/><pair kern="-29" kpx2="1026"/><pair kern="-20" kpx2="1227"/><pair kern="-20" kpx2="1090"/><pair kern="-20" kpx2="1236"/><pair kern="-29" kpx2="1294"/><pair kern="-20" kpx2="1232"/><pair kern="-20" kpx2="1295"/><pair kern="-20" kpx2="1234"/><pair kern="-20" kpx2="1174"/><pair kern="-20" kpx2="1244"/><pair kern="-20" kpx2="1040"/><pair kern="-40" kpx2="8217"/><pair kern="-20" kpx2="1286"/><pair kern="-20" kpx2="1284"/><pair kern="-40" kpx2="8221"/><pair kern="-20" kpx2="1046"/><pair kern="-29" kpx2="1066"/><pair kern="-40" kpx2="34"/><pair kern="-20" kpx2="1185"/><pair kern="-29" kpx2="1184"/><pair kern="-40" kpx2="39"/><pair kern="-29" kpx2="1058"/><pair kern="-20" kpx2="1126"/><pair kern="-20" kpx2="1063"/><pair kern="-20" kpx2="1198"/><pair kern="-20" kpx2="1197"/><pair kern="-20" kpx2="1061"/><pair kern="-29" kpx2="1196"/><pair kern="-20" kpx2="1202"/><pair kern="-20" kpx2="1268"/><pair kern="-20" kpx2="1200"/><pair kern="-20" kpx2="1206"/><pair kern="-29" kpx2="1204"/><pair kern="-20" kpx2="1205"/><pair kern="-20" kpx2="1278"/><pair kern="-20" kpx2="1142"/><pair kern="-20" kpx2="1276"/><pair kern="-20" kpx2="1208"/><pair kern="-20" kpx2="1140"/><pair kern="-20" kpx2="1136"/></kerning><kerning kpx1="1295"><pair kern="-29" kpx2="1098"/><pair kern="-20" kpx2="1218"/><pair kern="-20" kpx2="1093"/><pair kern="-20" kpx2="1228"/><pair kern="-20" kpx2="1095"/><pair kern="-29" kpx2="1090"/><pair kern="-20" kpx2="1091"/><pair kern="-20" kpx2="1118"/><pair kern="-29" kpx2="1295"/><pair kern="-20" kpx2="1175"/><pair kern="-20" kpx2="1245"/><pair kern="-49" kpx2="8217"/><pair kern="-49" kpx2="1287"/><pair kern="-49" kpx2="8221"/><pair kern="-49" kpx2="1285"/><pair kern="-49" kpx2="34"/><pair kern="-29" kpx2="1185"/><pair kern="-49" kpx2="39"/><pair kern="-20" kpx2="1263"/><pair kern="-29" kpx2="1197"/><pair kern="-20" kpx2="1203"/><pair kern="-20" kpx2="1269"/><pair kern="-20" kpx2="1207"/><pair kern="-20" kpx2="1267"/><pair kern="-29" kpx2="1205"/><pair kern="-20" kpx2="1265"/><pair kern="-20" kpx2="1279"/><pair kern="-20" kpx2="1277"/><pair kern="-20" kpx2="1209"/><pair kern="-20" kpx2="1078"/></kerning><kerning kpx1="1292"><pair kern="-20" kpx2="1217"/><pair kern="-20" kpx2="1058"/><pair kern="-9" kpx2="1126"/><pair kern="-40" kpx2="46"/><pair kern="-9" kpx2="1198"/><pair kern="-40" kpx2="44"/><pair kern="-20" kpx2="1196"/><pair kern="-20" kpx2="1061"/><pair kern="-9" kpx2="1236"/><pair kern="-20" kpx2="1202"/><pair kern="-9" kpx2="1200"/><pair kern="-9" kpx2="1232"/><pair kern="-9" kpx2="1234"/><pair kern="-20" kpx2="1174"/><pair kern="-20" kpx2="1278"/><pair kern="-20" kpx2="1244"/><pair kern="-9" kpx2="1040"/><pair kern="-40" kpx2="8218"/><pair kern="-9" kpx2="1142"/><pair kern="-20" kpx2="1276"/><pair kern="-9" kpx2="1140"/><pair kern="-40" kpx2="8222"/><pair kern="-20" kpx2="1046"/></kerning><kerning kpx1="1293"><pair kern="-20" kpx2="34"/><pair kern="-20" kpx2="39"/><pair kern="-9" kpx2="1218"/><pair kern="-9" kpx2="1263"/><pair kern="-9" kpx2="1093"/><pair kern="-9" kpx2="1091"/><pair kern="-9" kpx2="1203"/><pair kern="-9" kpx2="1118"/><pair kern="-9" kpx2="1267"/><pair kern="-9" kpx2="1265"/><pair kern="-9" kpx2="1175"/><pair kern="-9" kpx2="1279"/><pair kern="-9" kpx2="1245"/><pair kern="-20" kpx2="8217"/><pair kern="-9" kpx2="1277"/><pair kern="-20" kpx2="1287"/><pair kern="-9" kpx2="1078"/><pair kern="-20" kpx2="8221"/><pair kern="-20" kpx2="1285"/></kerning><kerning kpx1="321"><pair kern="-20" kpx2="7888"/><pair kern="-20" kpx2="7890"/><pair kern="-20" kpx2="7892"/><pair kern="-20" kpx2="7894"/><pair kern="-20" kpx2="7896"/><pair kern="-20" kpx2="7898"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-20" kpx2="262"/><pair kern="-20" kpx2="266"/><pair kern="-20" kpx2="264"/><pair kern="-20" kpx2="7884"/><pair kern="-20" kpx2="7886"/><pair kern="-20" kpx2="268"/><pair kern="-80" kpx2="34"/><pair kern="-29" kpx2="7922"/><pair kern="-9" kpx2="7920"/><pair kern="-29" kpx2="7926"/><pair kern="-80" kpx2="39"/><pair kern="-29" kpx2="7924"/><pair kern="-29" kpx2="7928"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-9" kpx2="7910"/><pair kern="-9" kpx2="7908"/><pair kern="-9" kpx2="431"/><pair kern="-9" kpx2="7914"/><pair kern="-20" kpx2="416"/><pair kern="-9" kpx2="7912"/><pair kern="-9" kpx2="7918"/><pair kern="-9" kpx2="7916"/><pair kern="-20" kpx2="538"/><pair kern="-20" kpx2="71"/><pair kern="-20" kpx2="338"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-20" kpx2="199"/><pair kern="-20" kpx2="79"/><pair kern="-20" kpx2="7812"/><pair kern="-9" kpx2="220"/><pair kern="-9" kpx2="85"/><pair kern="-29" kpx2="221"/><pair kern="-20" kpx2="84"/><pair kern="-20" kpx2="87"/><pair kern="-20" kpx2="86"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="81"/><pair kern="-20" kpx2="7808"/><pair kern="-9" kpx2="217"/><pair kern="-20" kpx2="7810"/><pair kern="-9" kpx2="218"/><pair kern="-9" kpx2="219"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="334"/><pair kern="-20" kpx2="213"/><pair kern="-80" kpx2="8217"/><pair kern="-20" kpx2="214"/><pair kern="-20" kpx2="332"/><pair kern="-29" kpx2="89"/><pair kern="-80" kpx2="8221"/><pair kern="-20" kpx2="210"/><pair kern="-20" kpx2="211"/><pair kern="-20" kpx2="372"/><pair kern="-20" kpx2="510"/><pair kern="-29" kpx2="374"/><pair kern="-9" kpx2="368"/><pair kern="-9" kpx2="370"/><pair kern="-29" kpx2="376"/><pair kern="-20" kpx2="356"/><pair kern="-20" kpx2="354"/><pair kern="-9" kpx2="364"/><pair kern="-9" kpx2="366"/><pair kern="-9" kpx2="360"/><pair kern="-9" kpx2="362"/></kerning><kerning kpx1="1282"><pair kern="-29" kpx2="1217"/><pair kern="-29" kpx2="1098"/><pair kern="-20" kpx2="1218"/><pair kern="-20" kpx2="1093"/><pair kern="-20" kpx2="1228"/><pair kern="-20" kpx2="1095"/><pair kern="-29" kpx2="1090"/><pair kern="-29" kpx2="1227"/><pair kern="-29" kpx2="1236"/><pair kern="-29" kpx2="1232"/><pair kern="-29" kpx2="1234"/><pair kern="-29" kpx2="1244"/><pair kern="-20" kpx2="1245"/><pair kern="-49" kpx2="34"/><pair kern="-20" kpx2="1130"/><pair kern="-49" kpx2="39"/><pair kern="-29" kpx2="1126"/><pair kern="-29" kpx2="1262"/><pair kern="-29" kpx2="1268"/><pair kern="-20" kpx2="1269"/><pair kern="-29" kpx2="1266"/><pair kern="-29" kpx2="1264"/><pair kern="-29" kpx2="1278"/><pair kern="-20" kpx2="1279"/><pair kern="-29" kpx2="1142"/><pair kern="-29" kpx2="1276"/><pair kern="-20" kpx2="1277"/><pair kern="-29" kpx2="1140"/><pair kern="-29" kpx2="1136"/><pair kern="-40" kpx2="1035"/><pair kern="-29" kpx2="1038"/><pair kern="-40" kpx2="1026"/><pair kern="-40" kpx2="1294"/><pair kern="-29" kpx2="1295"/><pair kern="-29" kpx2="1174"/><pair kern="-20" kpx2="1175"/><pair kern="-29" kpx2="1040"/><pair kern="-49" kpx2="8217"/><pair kern="-20" kpx2="1286"/><pair kern="-20" kpx2="1287"/><pair kern="-20" kpx2="1284"/><pair kern="-49" kpx2="8221"/><pair kern="-20" kpx2="1285"/><pair kern="-29" kpx2="1046"/><pair kern="-40" kpx2="1066"/><pair kern="-29" kpx2="1185"/><pair kern="-40" kpx2="1184"/><pair kern="-69" kpx2="1058"/><pair kern="-29" kpx2="1059"/><pair kern="-29" kpx2="1063"/><pair kern="-29" kpx2="1198"/><pair kern="-29" kpx2="1197"/><pair kern="-29" kpx2="1061"/><pair kern="-69" kpx2="1196"/><pair kern="-29" kpx2="1202"/><pair kern="-20" kpx2="1203"/><pair kern="-29" kpx2="1200"/><pair kern="-29" kpx2="1206"/><pair kern="-20" kpx2="1207"/><pair kern="-40" kpx2="1204"/><pair kern="-29" kpx2="1205"/><pair kern="-29" kpx2="1208"/><pair kern="-20" kpx2="1209"/><pair kern="-20" kpx2="1078"/></kerning><kerning kpx1="334"><pair kern="-20" kpx2="258"/><pair kern="-20" kpx2="256"/><pair kern="-20" kpx2="260"/><pair kern="-9" kpx2="7922"/><pair kern="-9" kpx2="7926"/><pair kern="-9" kpx2="7924"/><pair kern="-9" kpx2="7928"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="44"/><pair kern="-29" kpx2="538"/><pair kern="-20" kpx2="65"/><pair kern="-20" kpx2="197"/><pair kern="-20" kpx2="196"/><pair kern="-20" kpx2="193"/><pair kern="-20" kpx2="192"/><pair kern="-9" kpx2="1029"/><pair kern="-20" kpx2="195"/><pair kern="-20" kpx2="194"/><pair kern="-9" kpx2="7812"/><pair kern="-9" kpx2="221"/><pair kern="-29" kpx2="84"/><pair kern="-9" kpx2="87"/><pair kern="-9" kpx2="86"/><pair kern="-9" kpx2="7808"/><pair kern="-9" kpx2="7810"/><pair kern="-40" kpx2="8218"/><pair kern="-9" kpx2="89"/><pair kern="-20" kpx2="88"/><pair kern="-40" kpx2="8222"/><pair kern="-20" kpx2="7680"/><pair kern="-9" kpx2="90"/><pair kern="-9" kpx2="372"/><pair kern="-20" kpx2="7862"/><pair kern="-9" kpx2="374"/><pair kern="-20" kpx2="7860"/><pair kern="-20" kpx2="7858"/><pair kern="-20" kpx2="506"/><pair kern="-20" kpx2="7856"/><pair kern="-9" kpx2="381"/><pair kern="-9" kpx2="377"/><pair kern="-9" kpx2="376"/><pair kern="-9" kpx2="379"/><pair kern="-29" kpx2="356"/><pair kern="-20" kpx2="7846"/><pair kern="-20" kpx2="7844"/><pair kern="-20" kpx2="7842"/><pair kern="-29" kpx2="354"/><pair kern="-20" kpx2="7840"/><pair kern="-20" kpx2="7854"/><pair kern="-20" kpx2="7852"/><pair kern="-20" kpx2="7850"/><pair kern="-20" kpx2="7848"/></kerning><kerning kpx1="1283"><pair kern="-29" kpx2="1098"/><pair kern="-20" kpx2="1218"/><pair kern="-20" kpx2="1093"/><pair kern="-20" kpx2="1228"/><pair kern="-20" kpx2="1095"/><pair kern="-29" kpx2="1090"/><pair kern="-20" kpx2="1091"/><pair kern="-20" kpx2="1118"/><pair kern="-29" kpx2="1295"/><pair kern="-20" kpx2="1175"/><pair kern="-20" kpx2="1245"/><pair kern="-49" kpx2="8217"/><pair kern="-49" kpx2="1287"/><pair kern="-49" kpx2="8221"/><pair kern="-49" kpx2="1285"/><pair kern="-49" kpx2="34"/><pair kern="-29" kpx2="1185"/><pair kern="-49" kpx2="39"/><pair kern="-20" kpx2="1263"/><pair kern="-29" kpx2="1197"/><pair kern="-20" kpx2="1203"/><pair kern="-20" kpx2="1269"/><pair kern="-20" kpx2="1207"/><pair kern="-20" kpx2="1267"/><pair kern="-29" kpx2="1205"/><pair kern="-20" kpx2="1265"/><pair kern="-20" kpx2="1279"/><pair kern="-20" kpx2="1277"/><pair kern="-20" kpx2="1209"/><pair kern="-20" kpx2="1078"/></kerning><kerning kpx1="332"><pair kern="-20" kpx2="258"/><pair kern="-20" kpx2="256"/><pair kern="-20" kpx2="260"/><pair kern="-9" kpx2="7922"/><pair kern="-9" kpx2="7926"/><pair kern="-9" kpx2="7924"/><pair kern="-9" kpx2="7928"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="44"/><pair kern="-29" kpx2="538"/><pair kern="-20" kpx2="65"/><pair kern="-20" kpx2="197"/><pair kern="-20" kpx2="196"/><pair kern="-20" kpx2="193"/><pair kern="-20" kpx2="192"/><pair kern="-9" kpx2="1029"/><pair kern="-20" kpx2="195"/><pair kern="-20" kpx2="194"/><pair kern="-9" kpx2="7812"/><pair kern="-9" kpx2="221"/><pair kern="-29" kpx2="84"/><pair kern="-9" kpx2="87"/><pair kern="-9" kpx2="86"/><pair kern="-9" kpx2="7808"/><pair kern="-9" kpx2="7810"/><pair kern="-40" kpx2="8218"/><pair kern="-9" kpx2="89"/><pair kern="-20" kpx2="88"/><pair kern="-40" kpx2="8222"/><pair kern="-20" kpx2="7680"/><pair kern="-9" kpx2="90"/><pair kern="-9" kpx2="372"/><pair kern="-20" kpx2="7862"/><pair kern="-9" kpx2="374"/><pair kern="-20" kpx2="7860"/><pair kern="-20" kpx2="7858"/><pair kern="-20" kpx2="506"/><pair kern="-20" kpx2="7856"/><pair kern="-9" kpx2="381"/><pair kern="-9" kpx2="377"/><pair kern="-9" kpx2="376"/><pair kern="-9" kpx2="379"/><pair kern="-29" kpx2="356"/><pair kern="-20" kpx2="7846"/><pair kern="-20" kpx2="7844"/><pair kern="-20" kpx2="7842"/><pair kern="-29" kpx2="354"/><pair kern="-20" kpx2="7840"/><pair kern="-20" kpx2="7854"/><pair kern="-20" kpx2="7852"/><pair kern="-20" kpx2="7850"/><pair kern="-20" kpx2="7848"/></kerning><kerning kpx1="1286"><pair kern="109" kpx2="1032"/><pair kern="20" kpx2="1249"/><pair kern="-20" kpx2="1287"/><pair kern="-20" kpx2="1285"/></kerning><kerning kpx1="1287"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="1284"><pair kern="-29" kpx2="1217"/><pair kern="-29" kpx2="1098"/><pair kern="-20" kpx2="1218"/><pair kern="-20" kpx2="1093"/><pair kern="-20" kpx2="1228"/><pair kern="-20" kpx2="1095"/><pair kern="-29" kpx2="1090"/><pair kern="-29" kpx2="1227"/><pair kern="-29" kpx2="1236"/><pair kern="-29" kpx2="1232"/><pair kern="-29" kpx2="1234"/><pair kern="-29" kpx2="1244"/><pair kern="-20" kpx2="1245"/><pair kern="-49" kpx2="34"/><pair kern="-20" kpx2="1130"/><pair kern="-49" kpx2="39"/><pair kern="-29" kpx2="1126"/><pair kern="-29" kpx2="1262"/><pair kern="-29" kpx2="1268"/><pair kern="-20" kpx2="1269"/><pair kern="-29" kpx2="1266"/><pair kern="-29" kpx2="1264"/><pair kern="-29" kpx2="1278"/><pair kern="-20" kpx2="1279"/><pair kern="-29" kpx2="1142"/><pair kern="-29" kpx2="1276"/><pair kern="-20" kpx2="1277"/><pair kern="-29" kpx2="1140"/><pair kern="-29" kpx2="1136"/><pair kern="-40" kpx2="1035"/><pair kern="-29" kpx2="1038"/><pair kern="-40" kpx2="1026"/><pair kern="-40" kpx2="1294"/><pair kern="-29" kpx2="1295"/><pair kern="-29" kpx2="1174"/><pair kern="-20" kpx2="1175"/><pair kern="-29" kpx2="1040"/><pair kern="-49" kpx2="8217"/><pair kern="-20" kpx2="1286"/><pair kern="-20" kpx2="1287"/><pair kern="-20" kpx2="1284"/><pair kern="-49" kpx2="8221"/><pair kern="-20" kpx2="1285"/><pair kern="-29" kpx2="1046"/><pair kern="-40" kpx2="1066"/><pair kern="-29" kpx2="1185"/><pair kern="-40" kpx2="1184"/><pair kern="-69" kpx2="1058"/><pair kern="-29" kpx2="1059"/><pair kern="-29" kpx2="1063"/><pair kern="-29" kpx2="1198"/><pair kern="-29" kpx2="1197"/><pair kern="-29" kpx2="1061"/><pair kern="-69" kpx2="1196"/><pair kern="-29" kpx2="1202"/><pair kern="-20" kpx2="1203"/><pair kern="-29" kpx2="1200"/><pair kern="-29" kpx2="1206"/><pair kern="-20" kpx2="1207"/><pair kern="-40" kpx2="1204"/><pair kern="-29" kpx2="1205"/><pair kern="-29" kpx2="1208"/><pair kern="-20" kpx2="1209"/><pair kern="-20" kpx2="1078"/></kerning><kerning kpx1="1285"><pair kern="-29" kpx2="1098"/><pair kern="-20" kpx2="1218"/><pair kern="-20" kpx2="1093"/><pair kern="-20" kpx2="1228"/><pair kern="-20" kpx2="1095"/><pair kern="-29" kpx2="1090"/><pair kern="-20" kpx2="1091"/><pair kern="-20" kpx2="1118"/><pair kern="-29" kpx2="1295"/><pair kern="-20" kpx2="1175"/><pair kern="-20" kpx2="1245"/><pair kern="-49" kpx2="8217"/><pair kern="-49" kpx2="1287"/><pair kern="-49" kpx2="8221"/><pair kern="-49" kpx2="1285"/><pair kern="-49" kpx2="34"/><pair kern="-29" kpx2="1185"/><pair kern="-49" kpx2="39"/><pair kern="-20" kpx2="1263"/><pair kern="-29" kpx2="1197"/><pair kern="-20" kpx2="1203"/><pair kern="-20" kpx2="1269"/><pair kern="-20" kpx2="1207"/><pair kern="-20" kpx2="1267"/><pair kern="-29" kpx2="1205"/><pair kern="-20" kpx2="1265"/><pair kern="-20" kpx2="1279"/><pair kern="-20" kpx2="1277"/><pair kern="-20" kpx2="1209"/><pair kern="-20" kpx2="1078"/></kerning><kerning kpx1="373"><pair kern="40" kpx2="34"/><pair kern="40" kpx2="39"/><pair kern="-40" kpx2="8218"/><pair kern="40" kpx2="8217"/><pair kern="20" kpx2="63"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="8222"/><pair kern="40" kpx2="8221"/><pair kern="-40" kpx2="44"/></kerning><kerning kpx1="372"><pair kern="-20" kpx2="7889"/><pair kern="-20" kpx2="275"/><pair kern="-9" kpx2="7888"/><pair kern="-20" kpx2="273"/><pair kern="-9" kpx2="7890"/><pair kern="-20" kpx2="7893"/><pair kern="-20" kpx2="279"/><pair kern="-9" kpx2="7892"/><pair kern="-20" kpx2="7895"/><pair kern="-20" kpx2="277"/><pair kern="-9" kpx2="7894"/><pair kern="-20" kpx2="7897"/><pair kern="-20" kpx2="283"/><pair kern="-9" kpx2="7896"/><pair kern="-20" kpx2="7899"/><pair kern="-20" kpx2="281"/><pair kern="-9" kpx2="7898"/><pair kern="-20" kpx2="7901"/><pair kern="-9" kpx2="287"/><pair kern="-9" kpx2="7900"/><pair kern="-9" kpx2="286"/><pair kern="-20" kpx2="7903"/><pair kern="-9" kpx2="285"/><pair kern="-9" kpx2="7902"/><pair kern="-9" kpx2="284"/><pair kern="-40" kpx2="258"/><pair kern="-20" kpx2="259"/><pair kern="-40" kpx2="256"/><pair kern="-20" kpx2="7875"/><pair kern="-20" kpx2="257"/><pair kern="-9" kpx2="262"/><pair kern="-20" kpx2="7877"/><pair kern="-20" kpx2="263"/><pair kern="-40" kpx2="260"/><pair kern="-20" kpx2="7879"/><pair kern="-20" kpx2="261"/><pair kern="-9" kpx2="266"/><pair kern="-20" kpx2="267"/><pair kern="-9" kpx2="264"/><pair kern="-20" kpx2="265"/><pair kern="-9" kpx2="7884"/><pair kern="-20" kpx2="7885"/><pair kern="-20" kpx2="271"/><pair kern="-9" kpx2="7886"/><pair kern="-9" kpx2="268"/><pair kern="-20" kpx2="7887"/><pair kern="-20" kpx2="269"/><pair kern="-9" kpx2="7921"/><pair kern="-9" kpx2="312"/><pair kern="-49" kpx2="46"/><pair kern="-49" kpx2="44"/><pair kern="-9" kpx2="7906"/><pair kern="-9" kpx2="288"/><pair kern="-20" kpx2="7907"/><pair kern="-9" kpx2="289"/><pair kern="-9" kpx2="7904"/><pair kern="-9" kpx2="290"/><pair kern="-20" kpx2="7905"/><pair kern="-9" kpx2="291"/><pair kern="-9" kpx2="7911"/><pair kern="-9" kpx2="7909"/><pair kern="-9" kpx2="7915"/><pair kern="-9" kpx2="7913"/><pair kern="-9" kpx2="537"/><pair kern="20" kpx2="63"/><pair kern="-9" kpx2="7919"/><pair kern="-9" kpx2="7917"/><pair kern="-9" kpx2="343"/><pair kern="-9" kpx2="341"/><pair kern="-9" kpx2="71"/><pair kern="-20" kpx2="339"/><pair kern="-40" kpx2="65"/><pair kern="-9" kpx2="338"/><pair kern="-20" kpx2="337"/><pair kern="-9" kpx2="67"/><pair kern="-9" kpx2="336"/><pair kern="-9" kpx2="351"/><pair kern="-9" kpx2="79"/><pair kern="-9" kpx2="347"/><pair kern="-9" kpx2="326"/><pair kern="-9" kpx2="324"/><pair kern="-9" kpx2="81"/><pair kern="-9" kpx2="334"/><pair kern="-49" kpx2="8218"/><pair kern="-20" kpx2="335"/><pair kern="-9" kpx2="332"/><pair kern="-20" kpx2="333"/><pair kern="-49" kpx2="8222"/><pair kern="-9" kpx2="331"/><pair kern="-20" kpx2="7863"/><pair kern="-40" kpx2="7862"/><pair kern="-9" kpx2="103"/><pair kern="-20" kpx2="7861"/><pair kern="-20" kpx2="100"/><pair kern="-40" kpx2="7860"/><pair kern="-20" kpx2="101"/><pair kern="-20" kpx2="7859"/><pair kern="-9" kpx2="369"/><pair kern="-40" kpx2="7858"/><pair kern="-20" kpx2="99"/><pair kern="-20" kpx2="7857"/><pair kern="-9" kpx2="371"/><pair kern="-40" kpx2="7856"/><pair kern="-20" kpx2="97"/><pair kern="-20" kpx2="7871"/><pair kern="-9" kpx2="110"/><pair kern="-20" kpx2="111"/><pair kern="-20" kpx2="7869"/><pair kern="-9" kpx2="109"/><pair kern="-20" kpx2="7867"/><pair kern="-20" kpx2="7865"/><pair kern="-40" kpx2="7846"/><pair kern="-40" kpx2="7844"/><pair kern="-9" kpx2="117"/><pair kern="-20" kpx2="7845"/><pair kern="-40" kpx2="7842"/><pair kern="-9" kpx2="115"/><pair kern="-20" kpx2="7843"/><pair kern="-9" kpx2="114"/><pair kern="-40" kpx2="7840"/><pair kern="-20" kpx2="113"/><pair kern="-20" kpx2="7841"/><pair kern="-9" kpx2="112"/><pair kern="-40" kpx2="7854"/><pair kern="-20" kpx2="7855"/><pair kern="-9" kpx2="365"/><pair kern="-40" kpx2="7852"/><pair kern="-20" kpx2="7853"/><pair kern="-9" kpx2="367"/><pair kern="-40" kpx2="7850"/><pair kern="-20" kpx2="7851"/><pair kern="-9" kpx2="361"/><pair kern="-40" kpx2="7848"/><pair kern="-20" kpx2="7849"/><pair kern="-9" kpx2="363"/><pair kern="-9" kpx2="432"/><pair kern="-20" kpx2="417"/><pair kern="-9" kpx2="416"/><pair kern="-40" kpx2="197"/><pair kern="-40" kpx2="196"/><pair kern="-9" kpx2="199"/><pair kern="-40" kpx2="193"/><pair kern="-40" kpx2="192"/><pair kern="-40" kpx2="195"/><pair kern="-40" kpx2="194"/><pair kern="-9" kpx2="216"/><pair kern="-9" kpx2="212"/><pair kern="-9" kpx2="213"/><pair kern="-9" kpx2="214"/><pair kern="-20" kpx2="7681"/><pair kern="-40" kpx2="7680"/><pair kern="-9" kpx2="210"/><pair kern="-9" kpx2="211"/><pair kern="-9" kpx2="7743"/><pair kern="-20" kpx2="509"/><pair kern="-9" kpx2="510"/><pair kern="-20" kpx2="511"/><pair kern="-20" kpx2="235"/><pair kern="-20" kpx2="234"/><pair kern="-40" kpx2="506"/><pair kern="-20" kpx2="233"/><pair kern="-20" kpx2="507"/><pair kern="-20" kpx2="232"/><pair kern="-20" kpx2="231"/><pair kern="-20" kpx2="230"/><pair kern="-20" kpx2="229"/><pair kern="-20" kpx2="228"/><pair kern="-20" kpx2="227"/><pair kern="-20" kpx2="226"/><pair kern="-20" kpx2="225"/><pair kern="-20" kpx2="224"/><pair kern="-9" kpx2="252"/><pair kern="-9" kpx2="250"/><pair kern="-9" kpx2="251"/><pair kern="-20" kpx2="248"/><pair kern="-9" kpx2="249"/><pair kern="-20" kpx2="246"/><pair kern="-20" kpx2="244"/><pair kern="-20" kpx2="245"/><pair kern="-20" kpx2="242"/><pair kern="-20" kpx2="243"/></kerning><kerning kpx1="375"><pair kern="40" kpx2="34"/><pair kern="40" kpx2="39"/><pair kern="-40" kpx2="8218"/><pair kern="40" kpx2="8217"/><pair kern="20" kpx2="63"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="8222"/><pair kern="40" kpx2="8221"/><pair kern="-40" kpx2="44"/></kerning><kerning kpx1="374"><pair kern="-49" kpx2="7889"/><pair kern="-49" kpx2="275"/><pair kern="-20" kpx2="7888"/><pair kern="-49" kpx2="273"/><pair kern="-20" kpx2="7890"/><pair kern="-49" kpx2="7893"/><pair kern="-49" kpx2="279"/><pair kern="-20" kpx2="7892"/><pair kern="-49" kpx2="7895"/><pair kern="-49" kpx2="277"/><pair kern="-20" kpx2="7894"/><pair kern="-49" kpx2="7897"/><pair kern="-49" kpx2="283"/><pair kern="-20" kpx2="7896"/><pair kern="-49" kpx2="7899"/><pair kern="-49" kpx2="281"/><pair kern="-20" kpx2="7898"/><pair kern="-49" kpx2="7901"/><pair kern="-20" kpx2="287"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-49" kpx2="7903"/><pair kern="-20" kpx2="285"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-60" kpx2="258"/><pair kern="-49" kpx2="259"/><pair kern="-60" kpx2="256"/><pair kern="-49" kpx2="7875"/><pair kern="-49" kpx2="257"/><pair kern="-20" kpx2="262"/><pair kern="-49" kpx2="7877"/><pair kern="-49" kpx2="263"/><pair kern="-60" kpx2="260"/><pair kern="-49" kpx2="7879"/><pair kern="-49" kpx2="261"/><pair kern="-20" kpx2="266"/><pair kern="-49" kpx2="267"/><pair kern="-20" kpx2="264"/><pair kern="-49" kpx2="265"/><pair kern="-20" kpx2="7884"/><pair kern="-49" kpx2="7885"/><pair kern="-49" kpx2="271"/><pair kern="-20" kpx2="7886"/><pair kern="-20" kpx2="268"/><pair kern="-49" kpx2="7887"/><pair kern="-49" kpx2="269"/><pair kern="-29" kpx2="7921"/><pair kern="-29" kpx2="312"/><pair kern="-60" kpx2="46"/><pair kern="-60" kpx2="44"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-49" kpx2="7907"/><pair kern="-20" kpx2="289"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-49" kpx2="7905"/><pair kern="-20" kpx2="291"/><pair kern="-29" kpx2="7911"/><pair kern="-29" kpx2="7909"/><pair kern="-29" kpx2="7915"/><pair kern="-29" kpx2="7913"/><pair kern="-40" kpx2="537"/><pair kern="20" kpx2="63"/><pair kern="-29" kpx2="7919"/><pair kern="-29" kpx2="7917"/><pair kern="-29" kpx2="343"/><pair kern="-29" kpx2="341"/><pair kern="-20" kpx2="71"/><pair kern="-49" kpx2="339"/><pair kern="-20" kpx2="338"/><pair kern="-60" kpx2="65"/><pair kern="-49" kpx2="337"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-40" kpx2="351"/><pair kern="-20" kpx2="79"/><pair kern="-40" kpx2="347"/><pair kern="-29" kpx2="326"/><pair kern="-29" kpx2="324"/><pair kern="-20" kpx2="81"/><pair kern="-20" kpx2="334"/><pair kern="-60" kpx2="8218"/><pair kern="-49" kpx2="335"/><pair kern="-20" kpx2="332"/><pair kern="-49" kpx2="333"/><pair kern="-60" kpx2="8222"/><pair kern="-29" kpx2="331"/><pair kern="-49" kpx2="7863"/><pair kern="-60" kpx2="7862"/><pair kern="-20" kpx2="103"/><pair kern="-49" kpx2="7861"/><pair kern="-49" kpx2="100"/><pair kern="-60" kpx2="7860"/><pair kern="-49" kpx2="101"/><pair kern="-49" kpx2="7859"/><pair kern="-29" kpx2="369"/><pair kern="-60" kpx2="7858"/><pair kern="-49" kpx2="99"/><pair kern="-49" kpx2="7857"/><pair kern="-29" kpx2="371"/><pair kern="-60" kpx2="7856"/><pair kern="-49" kpx2="97"/><pair kern="-49" kpx2="7871"/><pair kern="-29" kpx2="110"/><pair kern="-20" kpx2="380"/><pair kern="-49" kpx2="111"/><pair kern="-49" kpx2="7869"/><pair kern="-20" kpx2="382"/><pair kern="-29" kpx2="109"/><pair kern="-49" kpx2="7867"/><pair kern="-49" kpx2="7865"/><pair kern="-20" kpx2="378"/><pair kern="-60" kpx2="7846"/><pair kern="-60" kpx2="7844"/><pair kern="-29" kpx2="117"/><pair kern="-49" kpx2="7845"/><pair kern="-60" kpx2="7842"/><pair kern="-40" kpx2="115"/><pair kern="-49" kpx2="7843"/><pair kern="-29" kpx2="114"/><pair kern="-60" kpx2="7840"/><pair kern="-49" kpx2="113"/><pair kern="-49" kpx2="7841"/><pair kern="-29" kpx2="112"/><pair kern="-60" kpx2="7854"/><pair kern="-49" kpx2="7855"/><pair kern="-29" kpx2="365"/><pair kern="-60" kpx2="7852"/><pair kern="-49" kpx2="7853"/><pair kern="-29" kpx2="367"/><pair kern="-60" kpx2="7850"/><pair kern="-49" kpx2="7851"/><pair kern="-29" kpx2="361"/><pair kern="-20" kpx2="122"/><pair kern="-60" kpx2="7848"/><pair kern="-49" kpx2="7849"/><pair kern="-29" kpx2="363"/><pair kern="-29" kpx2="432"/><pair kern="-49" kpx2="417"/><pair kern="-20" kpx2="416"/><pair kern="-60" kpx2="197"/><pair kern="-60" kpx2="196"/><pair kern="-20" kpx2="199"/><pair kern="-60" kpx2="193"/><pair kern="-60" kpx2="192"/><pair kern="-60" kpx2="195"/><pair kern="-60" kpx2="194"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-49" kpx2="7681"/><pair kern="-60" kpx2="7680"/><pair kern="-20" kpx2="210"/><pair kern="-20" kpx2="211"/><pair kern="-29" kpx2="7743"/><pair kern="-49" kpx2="509"/><pair kern="-20" kpx2="510"/><pair kern="-49" kpx2="511"/><pair kern="-49" kpx2="235"/><pair kern="-49" kpx2="234"/><pair kern="-60" kpx2="506"/><pair kern="-49" kpx2="233"/><pair kern="-49" kpx2="507"/><pair kern="-49" kpx2="232"/><pair kern="-49" kpx2="231"/><pair kern="-49" kpx2="230"/><pair kern="-49" kpx2="229"/><pair kern="-49" kpx2="228"/><pair kern="-49" kpx2="227"/><pair kern="-49" kpx2="226"/><pair kern="-49" kpx2="225"/><pair kern="-49" kpx2="224"/><pair kern="-29" kpx2="252"/><pair kern="-29" kpx2="250"/><pair kern="-29" kpx2="251"/><pair kern="-49" kpx2="248"/><pair kern="-29" kpx2="249"/><pair kern="-49" kpx2="246"/><pair kern="-49" kpx2="244"/><pair kern="-49" kpx2="245"/><pair kern="-49" kpx2="242"/><pair kern="-49" kpx2="243"/></kerning><kerning kpx1="368"><pair kern="-9" kpx2="65"/><pair kern="-9" kpx2="197"/><pair kern="-9" kpx2="196"/><pair kern="-9" kpx2="193"/><pair kern="-9" kpx2="192"/><pair kern="-9" kpx2="195"/><pair kern="-9" kpx2="194"/><pair kern="-9" kpx2="258"/><pair kern="-9" kpx2="256"/><pair kern="-9" kpx2="260"/><pair kern="-20" kpx2="8218"/><pair kern="-20" kpx2="8222"/><pair kern="-9" kpx2="7680"/><pair kern="-9" kpx2="7862"/><pair kern="-9" kpx2="7860"/><pair kern="-9" kpx2="7858"/><pair kern="-9" kpx2="506"/><pair kern="-9" kpx2="7856"/><pair kern="-20" kpx2="46"/><pair kern="-20" kpx2="44"/><pair kern="-9" kpx2="7846"/><pair kern="-9" kpx2="7844"/><pair kern="-9" kpx2="7842"/><pair kern="-9" kpx2="7840"/><pair kern="-9" kpx2="7854"/><pair kern="-9" kpx2="7852"/><pair kern="-9" kpx2="7850"/><pair kern="-9" kpx2="7848"/></kerning><kerning kpx1="370"><pair kern="-9" kpx2="65"/><pair kern="-9" kpx2="197"/><pair kern="-9" kpx2="196"/><pair kern="-9" kpx2="193"/><pair kern="-9" kpx2="192"/><pair kern="-9" kpx2="195"/><pair kern="-9" kpx2="194"/><pair kern="-9" kpx2="258"/><pair kern="-9" kpx2="256"/><pair kern="-9" kpx2="260"/><pair kern="-20" kpx2="8218"/><pair kern="-20" kpx2="8222"/><pair kern="-9" kpx2="7680"/><pair kern="-9" kpx2="7862"/><pair kern="-9" kpx2="7860"/><pair kern="-9" kpx2="7858"/><pair kern="-9" kpx2="506"/><pair kern="-9" kpx2="7856"/><pair kern="-20" kpx2="46"/><pair kern="-20" kpx2="44"/><pair kern="-9" kpx2="7846"/><pair kern="-9" kpx2="7844"/><pair kern="-9" kpx2="7842"/><pair kern="-9" kpx2="7840"/><pair kern="-9" kpx2="7854"/><pair kern="-9" kpx2="7852"/><pair kern="-9" kpx2="7850"/><pair kern="-9" kpx2="7848"/></kerning><kerning kpx1="381"><pair kern="-9" kpx2="7888"/><pair kern="-9" kpx2="7890"/><pair kern="-9" kpx2="71"/><pair kern="-9" kpx2="7892"/><pair kern="-9" kpx2="338"/><pair kern="-9" kpx2="7894"/><pair kern="-9" kpx2="67"/><pair kern="-9" kpx2="336"/><pair kern="-9" kpx2="7896"/><pair kern="-9" kpx2="199"/><pair kern="-9" kpx2="7898"/><pair kern="-9" kpx2="79"/><pair kern="-9" kpx2="7900"/><pair kern="-9" kpx2="286"/><pair kern="-9" kpx2="7902"/><pair kern="-9" kpx2="284"/><pair kern="-9" kpx2="262"/><pair kern="-9" kpx2="216"/><pair kern="-9" kpx2="81"/><pair kern="-9" kpx2="212"/><pair kern="-9" kpx2="266"/><pair kern="-9" kpx2="334"/><pair kern="-9" kpx2="213"/><pair kern="-9" kpx2="214"/><pair kern="-9" kpx2="264"/><pair kern="-9" kpx2="332"/><pair kern="-9" kpx2="7884"/><pair kern="-9" kpx2="7886"/><pair kern="-9" kpx2="210"/><pair kern="-9" kpx2="268"/><pair kern="-9" kpx2="211"/><pair kern="-9" kpx2="510"/><pair kern="-9" kpx2="7906"/><pair kern="-9" kpx2="288"/><pair kern="-9" kpx2="7904"/><pair kern="-9" kpx2="290"/><pair kern="-9" kpx2="416"/></kerning><kerning kpx1="377"><pair kern="-9" kpx2="7888"/><pair kern="-9" kpx2="7890"/><pair kern="-9" kpx2="71"/><pair kern="-9" kpx2="7892"/><pair kern="-9" kpx2="338"/><pair kern="-9" kpx2="7894"/><pair kern="-9" kpx2="67"/><pair kern="-9" kpx2="336"/><pair kern="-9" kpx2="7896"/><pair kern="-9" kpx2="199"/><pair kern="-9" kpx2="7898"/><pair kern="-9" kpx2="79"/><pair kern="-9" kpx2="7900"/><pair kern="-9" kpx2="286"/><pair kern="-9" kpx2="7902"/><pair kern="-9" kpx2="284"/><pair kern="-9" kpx2="262"/><pair kern="-9" kpx2="216"/><pair kern="-9" kpx2="81"/><pair kern="-9" kpx2="212"/><pair kern="-9" kpx2="266"/><pair kern="-9" kpx2="334"/><pair kern="-9" kpx2="213"/><pair kern="-9" kpx2="214"/><pair kern="-9" kpx2="264"/><pair kern="-9" kpx2="332"/><pair kern="-9" kpx2="7884"/><pair kern="-9" kpx2="7886"/><pair kern="-9" kpx2="210"/><pair kern="-9" kpx2="268"/><pair kern="-9" kpx2="211"/><pair kern="-9" kpx2="510"/><pair kern="-9" kpx2="7906"/><pair kern="-9" kpx2="288"/><pair kern="-9" kpx2="7904"/><pair kern="-9" kpx2="290"/><pair kern="-9" kpx2="416"/></kerning><kerning kpx1="376"><pair kern="-49" kpx2="7889"/><pair kern="-49" kpx2="275"/><pair kern="-20" kpx2="7888"/><pair kern="-49" kpx2="273"/><pair kern="-20" kpx2="7890"/><pair kern="-49" kpx2="7893"/><pair kern="-49" kpx2="279"/><pair kern="-20" kpx2="7892"/><pair kern="-49" kpx2="7895"/><pair kern="-49" kpx2="277"/><pair kern="-20" kpx2="7894"/><pair kern="-49" kpx2="7897"/><pair kern="-49" kpx2="283"/><pair kern="-20" kpx2="7896"/><pair kern="-49" kpx2="7899"/><pair kern="-49" kpx2="281"/><pair kern="-20" kpx2="7898"/><pair kern="-49" kpx2="7901"/><pair kern="-20" kpx2="287"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-49" kpx2="7903"/><pair kern="-20" kpx2="285"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-60" kpx2="258"/><pair kern="-49" kpx2="259"/><pair kern="-60" kpx2="256"/><pair kern="-49" kpx2="7875"/><pair kern="-49" kpx2="257"/><pair kern="-20" kpx2="262"/><pair kern="-49" kpx2="7877"/><pair kern="-49" kpx2="263"/><pair kern="-60" kpx2="260"/><pair kern="-49" kpx2="7879"/><pair kern="-49" kpx2="261"/><pair kern="-20" kpx2="266"/><pair kern="-49" kpx2="267"/><pair kern="-20" kpx2="264"/><pair kern="-49" kpx2="265"/><pair kern="-20" kpx2="7884"/><pair kern="-49" kpx2="7885"/><pair kern="-49" kpx2="271"/><pair kern="-20" kpx2="7886"/><pair kern="-20" kpx2="268"/><pair kern="-49" kpx2="7887"/><pair kern="-49" kpx2="269"/><pair kern="-29" kpx2="7921"/><pair kern="-29" kpx2="312"/><pair kern="-60" kpx2="46"/><pair kern="-60" kpx2="44"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-49" kpx2="7907"/><pair kern="-20" kpx2="289"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-49" kpx2="7905"/><pair kern="-20" kpx2="291"/><pair kern="-29" kpx2="7911"/><pair kern="-29" kpx2="7909"/><pair kern="-29" kpx2="7915"/><pair kern="-29" kpx2="7913"/><pair kern="-40" kpx2="537"/><pair kern="20" kpx2="63"/><pair kern="-29" kpx2="7919"/><pair kern="-29" kpx2="7917"/><pair kern="-29" kpx2="343"/><pair kern="-29" kpx2="341"/><pair kern="-20" kpx2="71"/><pair kern="-49" kpx2="339"/><pair kern="-20" kpx2="338"/><pair kern="-60" kpx2="65"/><pair kern="-49" kpx2="337"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-40" kpx2="351"/><pair kern="-20" kpx2="79"/><pair kern="-40" kpx2="347"/><pair kern="-29" kpx2="326"/><pair kern="-29" kpx2="324"/><pair kern="-20" kpx2="81"/><pair kern="-20" kpx2="334"/><pair kern="-60" kpx2="8218"/><pair kern="-49" kpx2="335"/><pair kern="-20" kpx2="332"/><pair kern="-49" kpx2="333"/><pair kern="-60" kpx2="8222"/><pair kern="-29" kpx2="331"/><pair kern="-49" kpx2="7863"/><pair kern="-60" kpx2="7862"/><pair kern="-20" kpx2="103"/><pair kern="-49" kpx2="7861"/><pair kern="-49" kpx2="100"/><pair kern="-60" kpx2="7860"/><pair kern="-49" kpx2="101"/><pair kern="-49" kpx2="7859"/><pair kern="-29" kpx2="369"/><pair kern="-60" kpx2="7858"/><pair kern="-49" kpx2="99"/><pair kern="-49" kpx2="7857"/><pair kern="-29" kpx2="371"/><pair kern="-60" kpx2="7856"/><pair kern="-49" kpx2="97"/><pair kern="-49" kpx2="7871"/><pair kern="-29" kpx2="110"/><pair kern="-20" kpx2="380"/><pair kern="-49" kpx2="111"/><pair kern="-49" kpx2="7869"/><pair kern="-20" kpx2="382"/><pair kern="-29" kpx2="109"/><pair kern="-49" kpx2="7867"/><pair kern="-49" kpx2="7865"/><pair kern="-20" kpx2="378"/><pair kern="-60" kpx2="7846"/><pair kern="-60" kpx2="7844"/><pair kern="-29" kpx2="117"/><pair kern="-49" kpx2="7845"/><pair kern="-60" kpx2="7842"/><pair kern="-40" kpx2="115"/><pair kern="-49" kpx2="7843"/><pair kern="-29" kpx2="114"/><pair kern="-60" kpx2="7840"/><pair kern="-49" kpx2="113"/><pair kern="-49" kpx2="7841"/><pair kern="-29" kpx2="112"/><pair kern="-60" kpx2="7854"/><pair kern="-49" kpx2="7855"/><pair kern="-29" kpx2="365"/><pair kern="-60" kpx2="7852"/><pair kern="-49" kpx2="7853"/><pair kern="-29" kpx2="367"/><pair kern="-60" kpx2="7850"/><pair kern="-49" kpx2="7851"/><pair kern="-29" kpx2="361"/><pair kern="-20" kpx2="122"/><pair kern="-60" kpx2="7848"/><pair kern="-49" kpx2="7849"/><pair kern="-29" kpx2="363"/><pair kern="-29" kpx2="432"/><pair kern="-49" kpx2="417"/><pair kern="-20" kpx2="416"/><pair kern="-60" kpx2="197"/><pair kern="-60" kpx2="196"/><pair kern="-20" kpx2="199"/><pair kern="-60" kpx2="193"/><pair kern="-60" kpx2="192"/><pair kern="-60" kpx2="195"/><pair kern="-60" kpx2="194"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-49" kpx2="7681"/><pair kern="-60" kpx2="7680"/><pair kern="-20" kpx2="210"/><pair kern="-20" kpx2="211"/><pair kern="-29" kpx2="7743"/><pair kern="-49" kpx2="509"/><pair kern="-20" kpx2="510"/><pair kern="-49" kpx2="511"/><pair kern="-49" kpx2="235"/><pair kern="-49" kpx2="234"/><pair kern="-60" kpx2="506"/><pair kern="-49" kpx2="233"/><pair kern="-49" kpx2="507"/><pair kern="-49" kpx2="232"/><pair kern="-49" kpx2="231"/><pair kern="-49" kpx2="230"/><pair kern="-49" kpx2="229"/><pair kern="-49" kpx2="228"/><pair kern="-49" kpx2="227"/><pair kern="-49" kpx2="226"/><pair kern="-49" kpx2="225"/><pair kern="-49" kpx2="224"/><pair kern="-29" kpx2="252"/><pair kern="-29" kpx2="250"/><pair kern="-29" kpx2="251"/><pair kern="-49" kpx2="248"/><pair kern="-29" kpx2="249"/><pair kern="-49" kpx2="246"/><pair kern="-49" kpx2="244"/><pair kern="-49" kpx2="245"/><pair kern="-49" kpx2="242"/><pair kern="-49" kpx2="243"/></kerning><kerning kpx1="379"><pair kern="-9" kpx2="7888"/><pair kern="-9" kpx2="7890"/><pair kern="-9" kpx2="71"/><pair kern="-9" kpx2="7892"/><pair kern="-9" kpx2="338"/><pair kern="-9" kpx2="7894"/><pair kern="-9" kpx2="67"/><pair kern="-9" kpx2="336"/><pair kern="-9" kpx2="7896"/><pair kern="-9" kpx2="199"/><pair kern="-9" kpx2="7898"/><pair kern="-9" kpx2="79"/><pair kern="-9" kpx2="7900"/><pair kern="-9" kpx2="286"/><pair kern="-9" kpx2="7902"/><pair kern="-9" kpx2="284"/><pair kern="-9" kpx2="262"/><pair kern="-9" kpx2="216"/><pair kern="-9" kpx2="81"/><pair kern="-9" kpx2="212"/><pair kern="-9" kpx2="266"/><pair kern="-9" kpx2="334"/><pair kern="-9" kpx2="213"/><pair kern="-9" kpx2="214"/><pair kern="-9" kpx2="264"/><pair kern="-9" kpx2="332"/><pair kern="-9" kpx2="7884"/><pair kern="-9" kpx2="7886"/><pair kern="-9" kpx2="210"/><pair kern="-9" kpx2="268"/><pair kern="-9" kpx2="211"/><pair kern="-9" kpx2="510"/><pair kern="-9" kpx2="7906"/><pair kern="-9" kpx2="288"/><pair kern="-9" kpx2="7904"/><pair kern="-9" kpx2="290"/><pair kern="-9" kpx2="416"/></kerning><kerning kpx1="356"><pair kern="-60" kpx2="46"/><pair kern="-60" kpx2="44"/><pair kern="-40" kpx2="45"/><pair kern="20" kpx2="63"/><pair kern="-60" kpx2="537"/><pair kern="20" kpx2="538"/><pair kern="-20" kpx2="71"/><pair kern="-69" kpx2="65"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="79"/><pair kern="-40" kpx2="8211"/><pair kern="20" kpx2="84"/><pair kern="-20" kpx2="81"/><pair kern="-40" kpx2="8213"/><pair kern="-40" kpx2="8212"/><pair kern="-60" kpx2="8218"/><pair kern="-60" kpx2="8222"/><pair kern="-69" kpx2="103"/><pair kern="-69" kpx2="100"/><pair kern="-69" kpx2="101"/><pair kern="-69" kpx2="99"/><pair kern="-80" kpx2="97"/><pair kern="-49" kpx2="110"/><pair kern="-69" kpx2="111"/><pair kern="-49" kpx2="109"/><pair kern="-20" kpx2="119"/><pair kern="-20" kpx2="118"/><pair kern="-49" kpx2="117"/><pair kern="-60" kpx2="115"/><pair kern="-49" kpx2="114"/><pair kern="-69" kpx2="113"/><pair kern="-49" kpx2="112"/><pair kern="-40" kpx2="122"/><pair kern="-20" kpx2="121"/><pair kern="-20" kpx2="120"/><pair kern="-69" kpx2="197"/><pair kern="-69" kpx2="196"/><pair kern="-20" kpx2="199"/><pair kern="-69" kpx2="193"/><pair kern="-69" kpx2="192"/><pair kern="-69" kpx2="195"/><pair kern="-69" kpx2="194"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-20" kpx2="210"/><pair kern="-20" kpx2="211"/><pair kern="-69" kpx2="235"/><pair kern="-69" kpx2="234"/><pair kern="-69" kpx2="233"/><pair kern="-69" kpx2="232"/><pair kern="-69" kpx2="231"/><pair kern="-80" kpx2="230"/><pair kern="-80" kpx2="229"/><pair kern="-80" kpx2="228"/><pair kern="-80" kpx2="227"/><pair kern="-80" kpx2="226"/><pair kern="-80" kpx2="225"/><pair kern="-69" kpx2="224"/><pair kern="-49" kpx2="252"/><pair kern="-20" kpx2="253"/><pair kern="-49" kpx2="250"/><pair kern="-49" kpx2="251"/><pair kern="-69" kpx2="248"/><pair kern="-49" kpx2="249"/><pair kern="-69" kpx2="246"/><pair kern="-69" kpx2="244"/><pair kern="-69" kpx2="245"/><pair kern="-69" kpx2="242"/><pair kern="-69" kpx2="243"/><pair kern="-69" kpx2="275"/><pair kern="-69" kpx2="7889"/><pair kern="-20" kpx2="7888"/><pair kern="-69" kpx2="273"/><pair kern="-20" kpx2="7890"/><pair kern="-69" kpx2="279"/><pair kern="-69" kpx2="7893"/><pair kern="-20" kpx2="7892"/><pair kern="-69" kpx2="277"/><pair kern="-69" kpx2="7895"/><pair kern="-20" kpx2="7894"/><pair kern="-69" kpx2="283"/><pair kern="-69" kpx2="7897"/><pair kern="-20" kpx2="7896"/><pair kern="-69" kpx2="281"/><pair kern="-69" kpx2="7899"/><pair kern="-20" kpx2="7898"/><pair kern="-69" kpx2="287"/><pair kern="-69" kpx2="7901"/><pair kern="-20" kpx2="286"/><pair kern="-20" kpx2="7900"/><pair kern="-69" kpx2="285"/><pair kern="-69" kpx2="7903"/><pair kern="-20" kpx2="284"/><pair kern="-20" kpx2="7902"/><pair kern="-69" kpx2="258"/><pair kern="-80" kpx2="259"/><pair kern="-69" kpx2="256"/><pair kern="-80" kpx2="257"/><pair kern="-69" kpx2="7875"/><pair kern="-20" kpx2="262"/><pair kern="-69" kpx2="263"/><pair kern="-69" kpx2="7877"/><pair kern="-69" kpx2="260"/><pair kern="-80" kpx2="261"/><pair kern="-69" kpx2="7879"/><pair kern="-20" kpx2="266"/><pair kern="-69" kpx2="267"/><pair kern="-20" kpx2="264"/><pair kern="-69" kpx2="265"/><pair kern="-20" kpx2="7884"/><pair kern="-69" kpx2="271"/><pair kern="-69" kpx2="7885"/><pair kern="-20" kpx2="268"/><pair kern="-20" kpx2="7886"/><pair kern="-69" kpx2="269"/><pair kern="-69" kpx2="7887"/><pair kern="-49" kpx2="7921"/><pair kern="-20" kpx2="7925"/><pair kern="-49" kpx2="312"/><pair kern="-20" kpx2="288"/><pair kern="-20" kpx2="7906"/><pair kern="-69" kpx2="7907"/><pair kern="-69" kpx2="289"/><pair kern="-20" kpx2="290"/><pair kern="-20" kpx2="7904"/><pair kern="-69" kpx2="291"/><pair kern="-69" kpx2="7905"/><pair kern="-49" kpx2="7911"/><pair kern="-49" kpx2="7909"/><pair kern="-49" kpx2="7915"/><pair kern="-49" kpx2="7913"/><pair kern="-49" kpx2="7919"/><pair kern="-49" kpx2="7917"/><pair kern="-49" kpx2="343"/><pair kern="-49" kpx2="341"/><pair kern="-69" kpx2="339"/><pair kern="-20" kpx2="338"/><pair kern="-69" kpx2="337"/><pair kern="-20" kpx2="336"/><pair kern="-60" kpx2="351"/><pair kern="-60" kpx2="347"/><pair kern="-49" kpx2="326"/><pair kern="-49" kpx2="324"/><pair kern="-20" kpx2="7809"/><pair kern="-20" kpx2="7811"/><pair kern="-20" kpx2="334"/><pair kern="-69" kpx2="335"/><pair kern="-20" kpx2="332"/><pair kern="-69" kpx2="333"/><pair kern="-49" kpx2="331"/><pair kern="-20" kpx2="373"/><pair kern="-80" kpx2="7863"/><pair kern="-69" kpx2="7862"/><pair kern="-80" kpx2="7861"/><pair kern="-69" kpx2="7860"/><pair kern="-49" kpx2="369"/><pair kern="-80" kpx2="7859"/><pair kern="-69" kpx2="7858"/><pair kern="-49" kpx2="371"/><pair kern="-80" kpx2="7857"/><pair kern="-69" kpx2="7856"/><pair kern="-69" kpx2="7871"/><pair kern="-40" kpx2="380"/><pair kern="-69" kpx2="7869"/><pair kern="-40" kpx2="382"/><pair kern="-69" kpx2="7867"/><pair kern="-69" kpx2="7865"/><pair kern="-40" kpx2="378"/><pair kern="20" kpx2="356"/><pair kern="-69" kpx2="7846"/><pair kern="-69" kpx2="7844"/><pair kern="-80" kpx2="7845"/><pair kern="-69" kpx2="7842"/><pair kern="-80" kpx2="7843"/><pair kern="20" kpx2="354"/><pair kern="-69" kpx2="7840"/><pair kern="-80" kpx2="7841"/><pair kern="-69" kpx2="7854"/><pair kern="-49" kpx2="365"/><pair kern="-80" kpx2="7855"/><pair kern="-69" kpx2="7852"/><pair kern="-49" kpx2="367"/><pair kern="-80" kpx2="7853"/><pair kern="-69" kpx2="7850"/><pair kern="-49" kpx2="361"/><pair kern="-80" kpx2="7851"/><pair kern="-69" kpx2="7848"/><pair kern="-49" kpx2="363"/><pair kern="-80" kpx2="7849"/><pair kern="-49" kpx2="432"/><pair kern="-69" kpx2="417"/><pair kern="-20" kpx2="416"/><pair kern="-80" kpx2="7681"/><pair kern="-69" kpx2="7680"/><pair kern="-80" kpx2="509"/><pair kern="-49" kpx2="7743"/><pair kern="-20" kpx2="510"/><pair kern="-69" kpx2="511"/><pair kern="-69" kpx2="506"/><pair kern="-80" kpx2="507"/></kerning><kerning kpx1="357"><pair kern="20" kpx2="34"/><pair kern="20" kpx2="39"/><pair kern="20" kpx2="8217"/><pair kern="20" kpx2="8221"/></kerning><kerning kpx1="358"><pair kern="-60" kpx2="46"/><pair kern="-60" kpx2="44"/><pair kern="-40" kpx2="45"/><pair kern="20" kpx2="63"/><pair kern="-60" kpx2="537"/><pair kern="20" kpx2="538"/><pair kern="-20" kpx2="71"/><pair kern="-69" kpx2="65"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="79"/><pair kern="-40" kpx2="8211"/><pair kern="20" kpx2="84"/><pair kern="-20" kpx2="81"/><pair kern="-40" kpx2="8213"/><pair kern="-40" kpx2="8212"/><pair kern="-60" kpx2="8218"/><pair kern="-60" kpx2="8222"/><pair kern="-69" kpx2="103"/><pair kern="-69" kpx2="100"/><pair kern="-69" kpx2="101"/><pair kern="-69" kpx2="99"/><pair kern="-80" kpx2="97"/><pair kern="-49" kpx2="110"/><pair kern="-69" kpx2="111"/><pair kern="-49" kpx2="109"/><pair kern="-20" kpx2="119"/><pair kern="-20" kpx2="118"/><pair kern="-49" kpx2="117"/><pair kern="-60" kpx2="115"/><pair kern="-49" kpx2="114"/><pair kern="-69" kpx2="113"/><pair kern="-49" kpx2="112"/><pair kern="-40" kpx2="122"/><pair kern="-20" kpx2="121"/><pair kern="-20" kpx2="120"/><pair kern="-69" kpx2="197"/><pair kern="-69" kpx2="196"/><pair kern="-20" kpx2="199"/><pair kern="-69" kpx2="193"/><pair kern="-69" kpx2="192"/><pair kern="-69" kpx2="195"/><pair kern="-69" kpx2="194"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-20" kpx2="210"/><pair kern="-20" kpx2="211"/><pair kern="-69" kpx2="235"/><pair kern="-69" kpx2="234"/><pair kern="-69" kpx2="233"/><pair kern="-69" kpx2="232"/><pair kern="-69" kpx2="231"/><pair kern="-80" kpx2="230"/><pair kern="-80" kpx2="229"/><pair kern="-80" kpx2="228"/><pair kern="-80" kpx2="227"/><pair kern="-80" kpx2="226"/><pair kern="-80" kpx2="225"/><pair kern="-69" kpx2="224"/><pair kern="-49" kpx2="252"/><pair kern="-20" kpx2="253"/><pair kern="-49" kpx2="250"/><pair kern="-49" kpx2="251"/><pair kern="-69" kpx2="248"/><pair kern="-49" kpx2="249"/><pair kern="-69" kpx2="246"/><pair kern="-69" kpx2="244"/><pair kern="-69" kpx2="245"/><pair kern="-69" kpx2="242"/><pair kern="-69" kpx2="243"/><pair kern="-69" kpx2="275"/><pair kern="-69" kpx2="7889"/><pair kern="-20" kpx2="7888"/><pair kern="-69" kpx2="273"/><pair kern="-20" kpx2="7890"/><pair kern="-69" kpx2="279"/><pair kern="-69" kpx2="7893"/><pair kern="-20" kpx2="7892"/><pair kern="-69" kpx2="277"/><pair kern="-69" kpx2="7895"/><pair kern="-20" kpx2="7894"/><pair kern="-69" kpx2="283"/><pair kern="-69" kpx2="7897"/><pair kern="-20" kpx2="7896"/><pair kern="-69" kpx2="281"/><pair kern="-69" kpx2="7899"/><pair kern="-20" kpx2="7898"/><pair kern="-69" kpx2="287"/><pair kern="-69" kpx2="7901"/><pair kern="-20" kpx2="286"/><pair kern="-20" kpx2="7900"/><pair kern="-69" kpx2="285"/><pair kern="-69" kpx2="7903"/><pair kern="-20" kpx2="284"/><pair kern="-20" kpx2="7902"/><pair kern="-69" kpx2="258"/><pair kern="-80" kpx2="259"/><pair kern="-69" kpx2="256"/><pair kern="-80" kpx2="257"/><pair kern="-69" kpx2="7875"/><pair kern="-20" kpx2="262"/><pair kern="-69" kpx2="263"/><pair kern="-69" kpx2="7877"/><pair kern="-69" kpx2="260"/><pair kern="-80" kpx2="261"/><pair kern="-69" kpx2="7879"/><pair kern="-20" kpx2="266"/><pair kern="-69" kpx2="267"/><pair kern="-20" kpx2="264"/><pair kern="-69" kpx2="265"/><pair kern="-20" kpx2="7884"/><pair kern="-69" kpx2="271"/><pair kern="-69" kpx2="7885"/><pair kern="-20" kpx2="268"/><pair kern="-20" kpx2="7886"/><pair kern="-69" kpx2="269"/><pair kern="-69" kpx2="7887"/><pair kern="-49" kpx2="7921"/><pair kern="-20" kpx2="7925"/><pair kern="-49" kpx2="312"/><pair kern="-20" kpx2="288"/><pair kern="-20" kpx2="7906"/><pair kern="-69" kpx2="7907"/><pair kern="-69" kpx2="289"/><pair kern="-20" kpx2="290"/><pair kern="-20" kpx2="7904"/><pair kern="-69" kpx2="291"/><pair kern="-69" kpx2="7905"/><pair kern="-49" kpx2="7911"/><pair kern="-49" kpx2="7909"/><pair kern="-49" kpx2="7915"/><pair kern="-49" kpx2="7913"/><pair kern="-49" kpx2="7919"/><pair kern="-49" kpx2="7917"/><pair kern="-49" kpx2="343"/><pair kern="-49" kpx2="341"/><pair kern="-69" kpx2="339"/><pair kern="-20" kpx2="338"/><pair kern="-69" kpx2="337"/><pair kern="-20" kpx2="336"/><pair kern="-60" kpx2="351"/><pair kern="-60" kpx2="347"/><pair kern="-49" kpx2="326"/><pair kern="-49" kpx2="324"/><pair kern="-20" kpx2="7809"/><pair kern="-20" kpx2="7811"/><pair kern="-20" kpx2="334"/><pair kern="-69" kpx2="335"/><pair kern="-20" kpx2="332"/><pair kern="-69" kpx2="333"/><pair kern="-49" kpx2="331"/><pair kern="-20" kpx2="373"/><pair kern="-80" kpx2="7863"/><pair kern="-69" kpx2="7862"/><pair kern="-80" kpx2="7861"/><pair kern="-69" kpx2="7860"/><pair kern="-49" kpx2="369"/><pair kern="-80" kpx2="7859"/><pair kern="-69" kpx2="7858"/><pair kern="-49" kpx2="371"/><pair kern="-80" kpx2="7857"/><pair kern="-69" kpx2="7856"/><pair kern="-69" kpx2="7871"/><pair kern="-40" kpx2="380"/><pair kern="-69" kpx2="7869"/><pair kern="-40" kpx2="382"/><pair kern="-69" kpx2="7867"/><pair kern="-69" kpx2="7865"/><pair kern="-40" kpx2="378"/><pair kern="20" kpx2="356"/><pair kern="-69" kpx2="7846"/><pair kern="-69" kpx2="7844"/><pair kern="-80" kpx2="7845"/><pair kern="-69" kpx2="7842"/><pair kern="-80" kpx2="7843"/><pair kern="20" kpx2="354"/><pair kern="-69" kpx2="7840"/><pair kern="-80" kpx2="7841"/><pair kern="-69" kpx2="7854"/><pair kern="-49" kpx2="365"/><pair kern="-80" kpx2="7855"/><pair kern="-69" kpx2="7852"/><pair kern="-49" kpx2="367"/><pair kern="-80" kpx2="7853"/><pair kern="-69" kpx2="7850"/><pair kern="-49" kpx2="361"/><pair kern="-80" kpx2="7851"/><pair kern="-69" kpx2="7848"/><pair kern="-49" kpx2="363"/><pair kern="-80" kpx2="7849"/><pair kern="-49" kpx2="432"/><pair kern="-69" kpx2="417"/><pair kern="-20" kpx2="416"/><pair kern="-80" kpx2="7681"/><pair kern="-69" kpx2="7680"/><pair kern="-80" kpx2="509"/><pair kern="-49" kpx2="7743"/><pair kern="-20" kpx2="510"/><pair kern="-69" kpx2="511"/><pair kern="-69" kpx2="506"/><pair kern="-80" kpx2="507"/></kerning><kerning kpx1="354"><pair kern="-60" kpx2="46"/><pair kern="-60" kpx2="44"/><pair kern="-40" kpx2="45"/><pair kern="20" kpx2="63"/><pair kern="-60" kpx2="537"/><pair kern="20" kpx2="538"/><pair kern="-20" kpx2="71"/><pair kern="-69" kpx2="65"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="79"/><pair kern="-40" kpx2="8211"/><pair kern="20" kpx2="84"/><pair kern="-20" kpx2="81"/><pair kern="-40" kpx2="8213"/><pair kern="-40" kpx2="8212"/><pair kern="-60" kpx2="8218"/><pair kern="-60" kpx2="8222"/><pair kern="-69" kpx2="103"/><pair kern="-69" kpx2="100"/><pair kern="-69" kpx2="101"/><pair kern="-69" kpx2="99"/><pair kern="-80" kpx2="97"/><pair kern="-49" kpx2="110"/><pair kern="-69" kpx2="111"/><pair kern="-49" kpx2="109"/><pair kern="-20" kpx2="119"/><pair kern="-20" kpx2="118"/><pair kern="-49" kpx2="117"/><pair kern="-60" kpx2="115"/><pair kern="-49" kpx2="114"/><pair kern="-69" kpx2="113"/><pair kern="-49" kpx2="112"/><pair kern="-40" kpx2="122"/><pair kern="-20" kpx2="121"/><pair kern="-20" kpx2="120"/><pair kern="-69" kpx2="197"/><pair kern="-69" kpx2="196"/><pair kern="-20" kpx2="199"/><pair kern="-69" kpx2="193"/><pair kern="-69" kpx2="192"/><pair kern="-69" kpx2="195"/><pair kern="-69" kpx2="194"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-20" kpx2="210"/><pair kern="-20" kpx2="211"/><pair kern="-69" kpx2="235"/><pair kern="-69" kpx2="234"/><pair kern="-69" kpx2="233"/><pair kern="-69" kpx2="232"/><pair kern="-69" kpx2="231"/><pair kern="-80" kpx2="230"/><pair kern="-80" kpx2="229"/><pair kern="-80" kpx2="228"/><pair kern="-80" kpx2="227"/><pair kern="-80" kpx2="226"/><pair kern="-80" kpx2="225"/><pair kern="-69" kpx2="224"/><pair kern="-49" kpx2="252"/><pair kern="-20" kpx2="253"/><pair kern="-49" kpx2="250"/><pair kern="-49" kpx2="251"/><pair kern="-69" kpx2="248"/><pair kern="-49" kpx2="249"/><pair kern="-69" kpx2="246"/><pair kern="-69" kpx2="244"/><pair kern="-69" kpx2="245"/><pair kern="-69" kpx2="242"/><pair kern="-69" kpx2="243"/><pair kern="-69" kpx2="275"/><pair kern="-69" kpx2="7889"/><pair kern="-20" kpx2="7888"/><pair kern="-69" kpx2="273"/><pair kern="-20" kpx2="7890"/><pair kern="-69" kpx2="279"/><pair kern="-69" kpx2="7893"/><pair kern="-20" kpx2="7892"/><pair kern="-69" kpx2="277"/><pair kern="-69" kpx2="7895"/><pair kern="-20" kpx2="7894"/><pair kern="-69" kpx2="283"/><pair kern="-69" kpx2="7897"/><pair kern="-20" kpx2="7896"/><pair kern="-69" kpx2="281"/><pair kern="-69" kpx2="7899"/><pair kern="-20" kpx2="7898"/><pair kern="-69" kpx2="287"/><pair kern="-69" kpx2="7901"/><pair kern="-20" kpx2="286"/><pair kern="-20" kpx2="7900"/><pair kern="-69" kpx2="285"/><pair kern="-69" kpx2="7903"/><pair kern="-20" kpx2="284"/><pair kern="-20" kpx2="7902"/><pair kern="-69" kpx2="258"/><pair kern="-80" kpx2="259"/><pair kern="-69" kpx2="256"/><pair kern="-80" kpx2="257"/><pair kern="-69" kpx2="7875"/><pair kern="-20" kpx2="262"/><pair kern="-69" kpx2="263"/><pair kern="-69" kpx2="7877"/><pair kern="-69" kpx2="260"/><pair kern="-80" kpx2="261"/><pair kern="-69" kpx2="7879"/><pair kern="-20" kpx2="266"/><pair kern="-69" kpx2="267"/><pair kern="-20" kpx2="264"/><pair kern="-69" kpx2="265"/><pair kern="-20" kpx2="7884"/><pair kern="-69" kpx2="271"/><pair kern="-69" kpx2="7885"/><pair kern="-20" kpx2="268"/><pair kern="-20" kpx2="7886"/><pair kern="-69" kpx2="269"/><pair kern="-69" kpx2="7887"/><pair kern="-49" kpx2="7921"/><pair kern="-20" kpx2="7925"/><pair kern="-49" kpx2="312"/><pair kern="-20" kpx2="288"/><pair kern="-20" kpx2="7906"/><pair kern="-69" kpx2="7907"/><pair kern="-69" kpx2="289"/><pair kern="-20" kpx2="290"/><pair kern="-20" kpx2="7904"/><pair kern="-69" kpx2="291"/><pair kern="-69" kpx2="7905"/><pair kern="-49" kpx2="7911"/><pair kern="-49" kpx2="7909"/><pair kern="-49" kpx2="7915"/><pair kern="-49" kpx2="7913"/><pair kern="-49" kpx2="7919"/><pair kern="-49" kpx2="7917"/><pair kern="-49" kpx2="343"/><pair kern="-49" kpx2="341"/><pair kern="-69" kpx2="339"/><pair kern="-20" kpx2="338"/><pair kern="-69" kpx2="337"/><pair kern="-20" kpx2="336"/><pair kern="-60" kpx2="351"/><pair kern="-60" kpx2="347"/><pair kern="-49" kpx2="326"/><pair kern="-49" kpx2="324"/><pair kern="-20" kpx2="7809"/><pair kern="-20" kpx2="7811"/><pair kern="-20" kpx2="334"/><pair kern="-69" kpx2="335"/><pair kern="-20" kpx2="332"/><pair kern="-69" kpx2="333"/><pair kern="-49" kpx2="331"/><pair kern="-20" kpx2="373"/><pair kern="-80" kpx2="7863"/><pair kern="-69" kpx2="7862"/><pair kern="-80" kpx2="7861"/><pair kern="-69" kpx2="7860"/><pair kern="-49" kpx2="369"/><pair kern="-80" kpx2="7859"/><pair kern="-69" kpx2="7858"/><pair kern="-49" kpx2="371"/><pair kern="-80" kpx2="7857"/><pair kern="-69" kpx2="7856"/><pair kern="-69" kpx2="7871"/><pair kern="-40" kpx2="380"/><pair kern="-69" kpx2="7869"/><pair kern="-40" kpx2="382"/><pair kern="-69" kpx2="7867"/><pair kern="-69" kpx2="7865"/><pair kern="-40" kpx2="378"/><pair kern="20" kpx2="356"/><pair kern="-69" kpx2="7846"/><pair kern="-69" kpx2="7844"/><pair kern="-80" kpx2="7845"/><pair kern="-69" kpx2="7842"/><pair kern="-80" kpx2="7843"/><pair kern="20" kpx2="354"/><pair kern="-69" kpx2="7840"/><pair kern="-80" kpx2="7841"/><pair kern="-69" kpx2="7854"/><pair kern="-49" kpx2="365"/><pair kern="-80" kpx2="7855"/><pair kern="-69" kpx2="7852"/><pair kern="-49" kpx2="367"/><pair kern="-80" kpx2="7853"/><pair kern="-69" kpx2="7850"/><pair kern="-49" kpx2="361"/><pair kern="-80" kpx2="7851"/><pair kern="-69" kpx2="7848"/><pair kern="-49" kpx2="363"/><pair kern="-80" kpx2="7849"/><pair kern="-49" kpx2="432"/><pair kern="-69" kpx2="417"/><pair kern="-20" kpx2="416"/><pair kern="-80" kpx2="7681"/><pair kern="-69" kpx2="7680"/><pair kern="-80" kpx2="509"/><pair kern="-49" kpx2="7743"/><pair kern="-20" kpx2="510"/><pair kern="-69" kpx2="511"/><pair kern="-69" kpx2="506"/><pair kern="-80" kpx2="507"/></kerning><kerning kpx1="355"><pair kern="20" kpx2="34"/><pair kern="20" kpx2="39"/><pair kern="20" kpx2="8217"/><pair kern="20" kpx2="8221"/></kerning><kerning kpx1="364"><pair kern="-9" kpx2="65"/><pair kern="-9" kpx2="197"/><pair kern="-9" kpx2="196"/><pair kern="-9" kpx2="193"/><pair kern="-9" kpx2="192"/><pair kern="-9" kpx2="195"/><pair kern="-9" kpx2="194"/><pair kern="-9" kpx2="258"/><pair kern="-9" kpx2="256"/><pair kern="-9" kpx2="260"/><pair kern="-20" kpx2="8218"/><pair kern="-20" kpx2="8222"/><pair kern="-9" kpx2="7680"/><pair kern="-9" kpx2="7862"/><pair kern="-9" kpx2="7860"/><pair kern="-9" kpx2="7858"/><pair kern="-9" kpx2="506"/><pair kern="-9" kpx2="7856"/><pair kern="-20" kpx2="46"/><pair kern="-20" kpx2="44"/><pair kern="-9" kpx2="7846"/><pair kern="-9" kpx2="7844"/><pair kern="-9" kpx2="7842"/><pair kern="-9" kpx2="7840"/><pair kern="-9" kpx2="7854"/><pair kern="-9" kpx2="7852"/><pair kern="-9" kpx2="7850"/><pair kern="-9" kpx2="7848"/></kerning><kerning kpx1="366"><pair kern="-9" kpx2="65"/><pair kern="-9" kpx2="197"/><pair kern="-9" kpx2="196"/><pair kern="-9" kpx2="193"/><pair kern="-9" kpx2="192"/><pair kern="-9" kpx2="195"/><pair kern="-9" kpx2="194"/><pair kern="-9" kpx2="258"/><pair kern="-9" kpx2="256"/><pair kern="-9" kpx2="260"/><pair kern="-20" kpx2="8218"/><pair kern="-20" kpx2="8222"/><pair kern="-9" kpx2="7680"/><pair kern="-9" kpx2="7862"/><pair kern="-9" kpx2="7860"/><pair kern="-9" kpx2="7858"/><pair kern="-9" kpx2="506"/><pair kern="-9" kpx2="7856"/><pair kern="-20" kpx2="46"/><pair kern="-20" kpx2="44"/><pair kern="-9" kpx2="7846"/><pair kern="-9" kpx2="7844"/><pair kern="-9" kpx2="7842"/><pair kern="-9" kpx2="7840"/><pair kern="-9" kpx2="7854"/><pair kern="-9" kpx2="7852"/><pair kern="-9" kpx2="7850"/><pair kern="-9" kpx2="7848"/></kerning><kerning kpx1="360"><pair kern="-9" kpx2="65"/><pair kern="-9" kpx2="197"/><pair kern="-9" kpx2="196"/><pair kern="-9" kpx2="193"/><pair kern="-9" kpx2="192"/><pair kern="-9" kpx2="195"/><pair kern="-9" kpx2="194"/><pair kern="-9" kpx2="258"/><pair kern="-9" kpx2="256"/><pair kern="-9" kpx2="260"/><pair kern="-20" kpx2="8218"/><pair kern="-20" kpx2="8222"/><pair kern="-9" kpx2="7680"/><pair kern="-9" kpx2="7862"/><pair kern="-9" kpx2="7860"/><pair kern="-9" kpx2="7858"/><pair kern="-9" kpx2="506"/><pair kern="-9" kpx2="7856"/><pair kern="-20" kpx2="46"/><pair kern="-20" kpx2="44"/><pair kern="-9" kpx2="7846"/><pair kern="-9" kpx2="7844"/><pair kern="-9" kpx2="7842"/><pair kern="-9" kpx2="7840"/><pair kern="-9" kpx2="7854"/><pair kern="-9" kpx2="7852"/><pair kern="-9" kpx2="7850"/><pair kern="-9" kpx2="7848"/></kerning><kerning kpx1="362"><pair kern="-9" kpx2="65"/><pair kern="-9" kpx2="197"/><pair kern="-9" kpx2="196"/><pair kern="-9" kpx2="193"/><pair kern="-9" kpx2="192"/><pair kern="-9" kpx2="195"/><pair kern="-9" kpx2="194"/><pair kern="-9" kpx2="258"/><pair kern="-9" kpx2="256"/><pair kern="-9" kpx2="260"/><pair kern="-20" kpx2="8218"/><pair kern="-20" kpx2="8222"/><pair kern="-9" kpx2="7680"/><pair kern="-9" kpx2="7862"/><pair kern="-9" kpx2="7860"/><pair kern="-9" kpx2="7858"/><pair kern="-9" kpx2="506"/><pair kern="-9" kpx2="7856"/><pair kern="-20" kpx2="46"/><pair kern="-20" kpx2="44"/><pair kern="-9" kpx2="7846"/><pair kern="-9" kpx2="7844"/><pair kern="-9" kpx2="7842"/><pair kern="-9" kpx2="7840"/><pair kern="-9" kpx2="7854"/><pair kern="-9" kpx2="7852"/><pair kern="-9" kpx2="7850"/><pair kern="-9" kpx2="7848"/></kerning><kerning kpx1="432"><pair kern="49" kpx2="102"/><pair kern="49" kpx2="373"/><pair kern="49" kpx2="7925"/><pair kern="49" kpx2="64257"/><pair kern="49" kpx2="64256"/><pair kern="49" kpx2="64259"/><pair kern="49" kpx2="64258"/><pair kern="49" kpx2="64260"/><pair kern="49" kpx2="119"/><pair kern="49" kpx2="118"/><pair kern="49" kpx2="357"/><pair kern="49" kpx2="116"/><pair kern="49" kpx2="253"/><pair kern="49" kpx2="7809"/><pair kern="49" kpx2="355"/><pair kern="49" kpx2="7811"/><pair kern="49" kpx2="121"/><pair kern="49" kpx2="539"/><pair kern="49" kpx2="120"/></kerning><kerning kpx1="417"><pair kern="40" kpx2="102"/><pair kern="49" kpx2="373"/><pair kern="49" kpx2="7925"/><pair kern="40" kpx2="64257"/><pair kern="40" kpx2="64256"/><pair kern="40" kpx2="64259"/><pair kern="40" kpx2="64258"/><pair kern="40" kpx2="64260"/><pair kern="49" kpx2="119"/><pair kern="49" kpx2="118"/><pair kern="40" kpx2="357"/><pair kern="40" kpx2="116"/><pair kern="49" kpx2="253"/><pair kern="49" kpx2="7809"/><pair kern="40" kpx2="355"/><pair kern="49" kpx2="7811"/><pair kern="49" kpx2="121"/><pair kern="40" kpx2="539"/><pair kern="49" kpx2="120"/></kerning><kerning kpx1="508"><pair kern="60" kpx2="74"/></kerning><kerning kpx1="510"><pair kern="-20" kpx2="258"/><pair kern="-20" kpx2="256"/><pair kern="-20" kpx2="260"/><pair kern="-9" kpx2="7922"/><pair kern="-9" kpx2="7926"/><pair kern="-9" kpx2="7924"/><pair kern="-9" kpx2="7928"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="44"/><pair kern="-29" kpx2="538"/><pair kern="-20" kpx2="65"/><pair kern="-20" kpx2="197"/><pair kern="-20" kpx2="196"/><pair kern="-20" kpx2="193"/><pair kern="-20" kpx2="192"/><pair kern="-9" kpx2="1029"/><pair kern="-20" kpx2="195"/><pair kern="-20" kpx2="194"/><pair kern="-9" kpx2="7812"/><pair kern="-9" kpx2="221"/><pair kern="-29" kpx2="84"/><pair kern="-9" kpx2="87"/><pair kern="-9" kpx2="86"/><pair kern="-9" kpx2="7808"/><pair kern="-9" kpx2="7810"/><pair kern="-40" kpx2="8218"/><pair kern="-9" kpx2="89"/><pair kern="-20" kpx2="88"/><pair kern="-40" kpx2="8222"/><pair kern="-20" kpx2="7680"/><pair kern="-9" kpx2="90"/><pair kern="-9" kpx2="372"/><pair kern="-20" kpx2="7862"/><pair kern="-9" kpx2="374"/><pair kern="-20" kpx2="7860"/><pair kern="-20" kpx2="7858"/><pair kern="-20" kpx2="506"/><pair kern="-20" kpx2="7856"/><pair kern="-9" kpx2="381"/><pair kern="-9" kpx2="377"/><pair kern="-9" kpx2="376"/><pair kern="-9" kpx2="379"/><pair kern="-29" kpx2="356"/><pair kern="-20" kpx2="7846"/><pair kern="-20" kpx2="7844"/><pair kern="-20" kpx2="7842"/><pair kern="-29" kpx2="354"/><pair kern="-20" kpx2="7840"/><pair kern="-20" kpx2="7854"/><pair kern="-20" kpx2="7852"/><pair kern="-20" kpx2="7850"/><pair kern="-20" kpx2="7848"/></kerning><kerning kpx1="506"><pair kern="-20" kpx2="7888"/><pair kern="-20" kpx2="7890"/><pair kern="-20" kpx2="7892"/><pair kern="-20" kpx2="7894"/><pair kern="-20" kpx2="7896"/><pair kern="-20" kpx2="7898"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-20" kpx2="262"/><pair kern="-20" kpx2="266"/><pair kern="-20" kpx2="264"/><pair kern="-20" kpx2="7884"/><pair kern="-20" kpx2="268"/><pair kern="-20" kpx2="7886"/><pair kern="-69" kpx2="34"/><pair kern="-60" kpx2="7922"/><pair kern="-60" kpx2="7926"/><pair kern="-69" kpx2="39"/><pair kern="-60" kpx2="7924"/><pair kern="-60" kpx2="7928"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-20" kpx2="416"/><pair kern="-69" kpx2="538"/><pair kern="-20" kpx2="71"/><pair kern="-20" kpx2="338"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-20" kpx2="199"/><pair kern="-20" kpx2="79"/><pair kern="129" kpx2="74"/><pair kern="-40" kpx2="7812"/><pair kern="-60" kpx2="221"/><pair kern="-69" kpx2="84"/><pair kern="-40" kpx2="87"/><pair kern="-40" kpx2="86"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="81"/><pair kern="-40" kpx2="7808"/><pair kern="-40" kpx2="7810"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="334"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-20" kpx2="332"/><pair kern="-69" kpx2="8217"/><pair kern="-60" kpx2="89"/><pair kern="-20" kpx2="210"/><pair kern="-69" kpx2="8221"/><pair kern="-20" kpx2="211"/><pair kern="-40" kpx2="372"/><pair kern="-20" kpx2="510"/><pair kern="-60" kpx2="374"/><pair kern="-60" kpx2="376"/><pair kern="-69" kpx2="356"/><pair kern="-69" kpx2="354"/></kerning><kerning kpx1="507"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="539"><pair kern="20" kpx2="34"/><pair kern="20" kpx2="39"/><pair kern="20" kpx2="8217"/><pair kern="20" kpx2="8221"/></kerning><kerning kpx1="538"><pair kern="-60" kpx2="46"/><pair kern="-60" kpx2="44"/><pair kern="-40" kpx2="45"/><pair kern="20" kpx2="63"/><pair kern="-60" kpx2="537"/><pair kern="20" kpx2="538"/><pair kern="-20" kpx2="71"/><pair kern="-69" kpx2="65"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="79"/><pair kern="-40" kpx2="8211"/><pair kern="20" kpx2="84"/><pair kern="-20" kpx2="81"/><pair kern="-40" kpx2="8213"/><pair kern="-40" kpx2="8212"/><pair kern="-60" kpx2="8218"/><pair kern="-60" kpx2="8222"/><pair kern="-69" kpx2="103"/><pair kern="-69" kpx2="100"/><pair kern="-69" kpx2="101"/><pair kern="-69" kpx2="99"/><pair kern="-80" kpx2="97"/><pair kern="-49" kpx2="110"/><pair kern="-69" kpx2="111"/><pair kern="-49" kpx2="109"/><pair kern="-20" kpx2="119"/><pair kern="-20" kpx2="118"/><pair kern="-49" kpx2="117"/><pair kern="-60" kpx2="115"/><pair kern="-49" kpx2="114"/><pair kern="-69" kpx2="113"/><pair kern="-49" kpx2="112"/><pair kern="-40" kpx2="122"/><pair kern="-20" kpx2="121"/><pair kern="-20" kpx2="120"/><pair kern="-69" kpx2="197"/><pair kern="-69" kpx2="196"/><pair kern="-20" kpx2="199"/><pair kern="-69" kpx2="193"/><pair kern="-69" kpx2="192"/><pair kern="-69" kpx2="195"/><pair kern="-69" kpx2="194"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-20" kpx2="210"/><pair kern="-20" kpx2="211"/><pair kern="-69" kpx2="235"/><pair kern="-69" kpx2="234"/><pair kern="-69" kpx2="233"/><pair kern="-69" kpx2="232"/><pair kern="-69" kpx2="231"/><pair kern="-80" kpx2="230"/><pair kern="-80" kpx2="229"/><pair kern="-80" kpx2="228"/><pair kern="-80" kpx2="227"/><pair kern="-80" kpx2="226"/><pair kern="-80" kpx2="225"/><pair kern="-69" kpx2="224"/><pair kern="-49" kpx2="252"/><pair kern="-20" kpx2="253"/><pair kern="-49" kpx2="250"/><pair kern="-49" kpx2="251"/><pair kern="-69" kpx2="248"/><pair kern="-49" kpx2="249"/><pair kern="-69" kpx2="246"/><pair kern="-69" kpx2="244"/><pair kern="-69" kpx2="245"/><pair kern="-69" kpx2="242"/><pair kern="-69" kpx2="243"/><pair kern="-69" kpx2="275"/><pair kern="-69" kpx2="7889"/><pair kern="-20" kpx2="7888"/><pair kern="-69" kpx2="273"/><pair kern="-20" kpx2="7890"/><pair kern="-69" kpx2="279"/><pair kern="-69" kpx2="7893"/><pair kern="-20" kpx2="7892"/><pair kern="-69" kpx2="277"/><pair kern="-69" kpx2="7895"/><pair kern="-20" kpx2="7894"/><pair kern="-69" kpx2="283"/><pair kern="-69" kpx2="7897"/><pair kern="-20" kpx2="7896"/><pair kern="-69" kpx2="281"/><pair kern="-69" kpx2="7899"/><pair kern="-20" kpx2="7898"/><pair kern="-69" kpx2="287"/><pair kern="-69" kpx2="7901"/><pair kern="-20" kpx2="286"/><pair kern="-20" kpx2="7900"/><pair kern="-69" kpx2="285"/><pair kern="-69" kpx2="7903"/><pair kern="-20" kpx2="284"/><pair kern="-20" kpx2="7902"/><pair kern="-69" kpx2="258"/><pair kern="-80" kpx2="259"/><pair kern="-69" kpx2="256"/><pair kern="-80" kpx2="257"/><pair kern="-69" kpx2="7875"/><pair kern="-20" kpx2="262"/><pair kern="-69" kpx2="263"/><pair kern="-69" kpx2="7877"/><pair kern="-69" kpx2="260"/><pair kern="-80" kpx2="261"/><pair kern="-69" kpx2="7879"/><pair kern="-20" kpx2="266"/><pair kern="-69" kpx2="267"/><pair kern="-20" kpx2="264"/><pair kern="-69" kpx2="265"/><pair kern="-20" kpx2="7884"/><pair kern="-69" kpx2="271"/><pair kern="-69" kpx2="7885"/><pair kern="-20" kpx2="268"/><pair kern="-20" kpx2="7886"/><pair kern="-69" kpx2="269"/><pair kern="-69" kpx2="7887"/><pair kern="-49" kpx2="7921"/><pair kern="-20" kpx2="7925"/><pair kern="-49" kpx2="312"/><pair kern="-20" kpx2="288"/><pair kern="-20" kpx2="7906"/><pair kern="-69" kpx2="7907"/><pair kern="-69" kpx2="289"/><pair kern="-20" kpx2="290"/><pair kern="-20" kpx2="7904"/><pair kern="-69" kpx2="291"/><pair kern="-69" kpx2="7905"/><pair kern="-49" kpx2="7911"/><pair kern="-49" kpx2="7909"/><pair kern="-49" kpx2="7915"/><pair kern="-49" kpx2="7913"/><pair kern="-49" kpx2="7919"/><pair kern="-49" kpx2="7917"/><pair kern="-49" kpx2="343"/><pair kern="-49" kpx2="341"/><pair kern="-69" kpx2="339"/><pair kern="-20" kpx2="338"/><pair kern="-69" kpx2="337"/><pair kern="-20" kpx2="336"/><pair kern="-60" kpx2="351"/><pair kern="-60" kpx2="347"/><pair kern="-49" kpx2="326"/><pair kern="-49" kpx2="324"/><pair kern="-20" kpx2="7809"/><pair kern="-20" kpx2="7811"/><pair kern="-20" kpx2="334"/><pair kern="-69" kpx2="335"/><pair kern="-20" kpx2="332"/><pair kern="-69" kpx2="333"/><pair kern="-49" kpx2="331"/><pair kern="-20" kpx2="373"/><pair kern="-80" kpx2="7863"/><pair kern="-69" kpx2="7862"/><pair kern="-80" kpx2="7861"/><pair kern="-69" kpx2="7860"/><pair kern="-49" kpx2="369"/><pair kern="-80" kpx2="7859"/><pair kern="-69" kpx2="7858"/><pair kern="-49" kpx2="371"/><pair kern="-80" kpx2="7857"/><pair kern="-69" kpx2="7856"/><pair kern="-69" kpx2="7871"/><pair kern="-40" kpx2="380"/><pair kern="-69" kpx2="7869"/><pair kern="-40" kpx2="382"/><pair kern="-69" kpx2="7867"/><pair kern="-69" kpx2="7865"/><pair kern="-40" kpx2="378"/><pair kern="20" kpx2="356"/><pair kern="-69" kpx2="7846"/><pair kern="-69" kpx2="7844"/><pair kern="-80" kpx2="7845"/><pair kern="-69" kpx2="7842"/><pair kern="-80" kpx2="7843"/><pair kern="20" kpx2="354"/><pair kern="-69" kpx2="7840"/><pair kern="-80" kpx2="7841"/><pair kern="-69" kpx2="7854"/><pair kern="-49" kpx2="365"/><pair kern="-80" kpx2="7855"/><pair kern="-69" kpx2="7852"/><pair kern="-49" kpx2="367"/><pair kern="-80" kpx2="7853"/><pair kern="-69" kpx2="7850"/><pair kern="-49" kpx2="361"/><pair kern="-80" kpx2="7851"/><pair kern="-69" kpx2="7848"/><pair kern="-49" kpx2="363"/><pair kern="-80" kpx2="7849"/><pair kern="-49" kpx2="432"/><pair kern="-69" kpx2="417"/><pair kern="-20" kpx2="416"/><pair kern="-80" kpx2="7681"/><pair kern="-69" kpx2="7680"/><pair kern="-80" kpx2="509"/><pair kern="-49" kpx2="7743"/><pair kern="-20" kpx2="510"/><pair kern="-69" kpx2="511"/><pair kern="-69" kpx2="506"/><pair kern="-80" kpx2="507"/></kerning><kerning kpx1="8211"><pair kern="-40" kpx2="1066"/><pair kern="-20" kpx2="1185"/><pair kern="-40" kpx2="1035"/><pair kern="-40" kpx2="1184"/><pair kern="-20" kpx2="1098"/><pair kern="-40" kpx2="1058"/><pair kern="-40" kpx2="1026"/><pair kern="-20" kpx2="1197"/><pair kern="-20" kpx2="1090"/><pair kern="-40" kpx2="1196"/><pair kern="-40" kpx2="356"/><pair kern="-40" kpx2="84"/><pair kern="-40" kpx2="1294"/><pair kern="-20" kpx2="1295"/><pair kern="-40" kpx2="354"/><pair kern="-40" kpx2="1204"/><pair kern="-20" kpx2="1205"/><pair kern="-40" kpx2="932"/><pair kern="-40" kpx2="538"/></kerning><kerning kpx1="8213"><pair kern="-40" kpx2="1066"/><pair kern="-20" kpx2="1185"/><pair kern="-40" kpx2="1035"/><pair kern="-40" kpx2="1184"/><pair kern="-20" kpx2="1098"/><pair kern="-40" kpx2="1058"/><pair kern="-40" kpx2="1026"/><pair kern="-20" kpx2="1197"/><pair kern="-20" kpx2="1090"/><pair kern="-40" kpx2="1196"/><pair kern="-40" kpx2="356"/><pair kern="-40" kpx2="84"/><pair kern="-40" kpx2="1294"/><pair kern="-20" kpx2="1295"/><pair kern="-40" kpx2="354"/><pair kern="-40" kpx2="1204"/><pair kern="-20" kpx2="1205"/><pair kern="-40" kpx2="932"/><pair kern="-40" kpx2="538"/></kerning><kerning kpx1="8212"><pair kern="-40" kpx2="1066"/><pair kern="-20" kpx2="1185"/><pair kern="-40" kpx2="1035"/><pair kern="-40" kpx2="1184"/><pair kern="-20" kpx2="1098"/><pair kern="-40" kpx2="1058"/><pair kern="-40" kpx2="1026"/><pair kern="-20" kpx2="1197"/><pair kern="-20" kpx2="1090"/><pair kern="-40" kpx2="1196"/><pair kern="-40" kpx2="356"/><pair kern="-40" kpx2="84"/><pair kern="-40" kpx2="1294"/><pair kern="-20" kpx2="1295"/><pair kern="-40" kpx2="354"/><pair kern="-40" kpx2="1204"/><pair kern="-20" kpx2="1205"/><pair kern="-40" kpx2="932"/><pair kern="-40" kpx2="538"/></kerning><kerning kpx1="8218"><pair kern="-49" kpx2="7888"/><pair kern="-49" kpx2="7890"/><pair kern="-49" kpx2="7892"/><pair kern="-49" kpx2="1098"/><pair kern="-49" kpx2="7894"/><pair kern="-49" kpx2="7896"/><pair kern="-49" kpx2="7898"/><pair kern="-60" kpx2="1095"/><pair kern="-49" kpx2="7900"/><pair kern="-49" kpx2="286"/><pair kern="-49" kpx2="1090"/><pair kern="-49" kpx2="7902"/><pair kern="-49" kpx2="284"/><pair kern="-49" kpx2="262"/><pair kern="-49" kpx2="266"/><pair kern="-49" kpx2="264"/><pair kern="-49" kpx2="7884"/><pair kern="-49" kpx2="7886"/><pair kern="-49" kpx2="268"/><pair kern="-60" kpx2="7922"/><pair kern="-20" kpx2="7920"/><pair kern="-60" kpx2="7926"/><pair kern="-60" kpx2="7924"/><pair kern="-60" kpx2="7928"/><pair kern="-49" kpx2="1120"/><pair kern="-49" kpx2="7906"/><pair kern="-49" kpx2="288"/><pair kern="-49" kpx2="1150"/><pair kern="-49" kpx2="7904"/><pair kern="-49" kpx2="290"/><pair kern="-49" kpx2="1148"/><pair kern="-20" kpx2="7910"/><pair kern="-49" kpx2="1146"/><pair kern="-20" kpx2="7908"/><pair kern="-49" kpx2="1144"/><pair kern="-20" kpx2="7914"/><pair kern="-60" kpx2="1142"/><pair kern="-20" kpx2="7912"/><pair kern="-60" kpx2="1140"/><pair kern="-20" kpx2="7918"/><pair kern="-49" kpx2="1138"/><pair kern="-20" kpx2="7916"/><pair kern="-69" kpx2="538"/><pair kern="-80" kpx2="1136"/><pair kern="-49" kpx2="71"/><pair kern="-69" kpx2="1035"/><pair kern="-49" kpx2="338"/><pair kern="-49" kpx2="336"/><pair kern="-49" kpx2="67"/><pair kern="-69" kpx2="1026"/><pair kern="-49" kpx2="79"/><pair kern="-49" kpx2="1028"/><pair kern="-20" kpx2="85"/><pair kern="-60" kpx2="7812"/><pair kern="-69" kpx2="84"/><pair kern="-60" kpx2="87"/><pair kern="-60" kpx2="86"/><pair kern="-69" kpx2="1294"/><pair kern="-49" kpx2="81"/><pair kern="-60" kpx2="7808"/><pair kern="-49" kpx2="1295"/><pair kern="-49" kpx2="1292"/><pair kern="-60" kpx2="7810"/><pair kern="-49" kpx2="1054"/><pair kern="-49" kpx2="334"/><pair kern="-49" kpx2="332"/><pair kern="-60" kpx2="1286"/><pair kern="-60" kpx2="89"/><pair kern="-49" kpx2="1287"/><pair kern="-60" kpx2="1284"/><pair kern="-49" kpx2="1285"/><pair kern="-69" kpx2="1066"/><pair kern="-60" kpx2="372"/><pair kern="-60" kpx2="374"/><pair kern="-20" kpx2="368"/><pair kern="-20" kpx2="370"/><pair kern="-69" kpx2="1058"/><pair kern="-49" kpx2="1057"/><pair kern="-60" kpx2="376"/><pair kern="-80" kpx2="1063"/><pair kern="-40" kpx2="1060"/><pair kern="-69" kpx2="356"/><pair kern="-69" kpx2="354"/><pair kern="-20" kpx2="364"/><pair kern="-20" kpx2="366"/><pair kern="-20" kpx2="360"/><pair kern="-20" kpx2="362"/><pair kern="-20" kpx2="952"/><pair kern="-60" kpx2="1228"/><pair kern="-80" kpx2="1227"/><pair kern="-60" kpx2="936"/><pair kern="-60" kpx2="939"/><pair kern="-60" kpx2="933"/><pair kern="-69" kpx2="932"/><pair kern="-49" kpx2="934"/><pair kern="-49" kpx2="1254"/><pair kern="-40" kpx2="927"/><pair kern="-40" kpx2="920"/><pair kern="-49" kpx2="1258"/><pair kern="-49" kpx2="1256"/><pair kern="-80" kpx2="1268"/><pair kern="-60" kpx2="1269"/><pair kern="-20" kpx2="431"/><pair kern="-49" kpx2="416"/><pair kern="-49" kpx2="1152"/><pair kern="-49" kpx2="199"/><pair kern="-20" kpx2="220"/><pair kern="-60" kpx2="221"/><pair kern="-49" kpx2="216"/><pair kern="-20" kpx2="217"/><pair kern="-20" kpx2="218"/><pair kern="-20" kpx2="219"/><pair kern="-49" kpx2="212"/><pair kern="-49" kpx2="213"/><pair kern="-49" kpx2="214"/><pair kern="-49" kpx2="210"/><pair kern="-49" kpx2="211"/><pair kern="-49" kpx2="510"/><pair kern="-49" kpx2="1185"/><pair kern="-69" kpx2="1184"/><pair kern="-60" kpx2="978"/><pair kern="-49" kpx2="1194"/><pair kern="-49" kpx2="1192"/><pair kern="-60" kpx2="1198"/><pair kern="-49" kpx2="1197"/><pair kern="-69" kpx2="1196"/><pair kern="-60" kpx2="1200"/><pair kern="-80" kpx2="1206"/><pair kern="-60" kpx2="1207"/><pair kern="-69" kpx2="1204"/><pair kern="-49" kpx2="1205"/><pair kern="-80" kpx2="1208"/><pair kern="-60" kpx2="1209"/><pair kern="-60" kpx2="1214"/><pair kern="-60" kpx2="1212"/></kerning><kerning kpx1="8217"><pair kern="-60" kpx2="1092"/><pair kern="-60" kpx2="1089"/><pair kern="-69" kpx2="1113"/><pair kern="-29" kpx2="1109"/><pair kern="-60" kpx2="1108"/><pair kern="-60" kpx2="1105"/><pair kern="-60" kpx2="1104"/><pair kern="-69" kpx2="1126"/><pair kern="-69" kpx2="1127"/><pair kern="-60" kpx2="1149"/><pair kern="-60" kpx2="1147"/><pair kern="-60" kpx2="1145"/><pair kern="-29" kpx2="537"/><pair kern="-60" kpx2="1139"/><pair kern="-9" kpx2="1137"/><pair kern="20" kpx2="538"/><pair kern="-60" kpx2="1033"/><pair kern="-69" kpx2="65"/><pair kern="20" kpx2="84"/><pair kern="20" kpx2="87"/><pair kern="-60" kpx2="1051"/><pair kern="20" kpx2="86"/><pair kern="-69" kpx2="1040"/><pair kern="9" kpx2="89"/><pair kern="-60" kpx2="1044"/><pair kern="-29" kpx2="103"/><pair kern="-60" kpx2="100"/><pair kern="-60" kpx2="101"/><pair kern="-60" kpx2="99"/><pair kern="-40" kpx2="97"/><pair kern="-29" kpx2="110"/><pair kern="-60" kpx2="111"/><pair kern="-29" kpx2="109"/><pair kern="-69" kpx2="1083"/><pair kern="-29" kpx2="117"/><pair kern="-29" kpx2="115"/><pair kern="-29" kpx2="114"/><pair kern="-60" kpx2="1086"/><pair kern="-60" kpx2="113"/><pair kern="-29" kpx2="112"/><pair kern="-20" kpx2="1072"/><pair kern="-60" kpx2="1077"/><pair kern="-69" kpx2="1076"/><pair kern="-60" kpx2="1221"/><pair kern="-69" kpx2="1222"/><pair kern="-69" kpx2="1236"/><pair kern="-20" kpx2="1237"/><pair kern="-60" kpx2="1239"/><pair kern="-69" kpx2="1232"/><pair kern="-20" kpx2="1233"/><pair kern="-69" kpx2="1234"/><pair kern="-20" kpx2="1235"/><pair kern="-20" kpx2="1241"/><pair kern="-20" kpx2="1243"/><pair kern="-60" kpx2="1255"/><pair kern="-60" kpx2="1259"/><pair kern="-60" kpx2="1257"/><pair kern="-60" kpx2="1153"/><pair kern="-69" kpx2="197"/><pair kern="-69" kpx2="196"/><pair kern="-69" kpx2="193"/><pair kern="-69" kpx2="192"/><pair kern="-69" kpx2="195"/><pair kern="-69" kpx2="194"/><pair kern="9" kpx2="221"/><pair kern="-60" kpx2="235"/><pair kern="-60" kpx2="234"/><pair kern="-60" kpx2="233"/><pair kern="-60" kpx2="232"/><pair kern="-60" kpx2="231"/><pair kern="-60" kpx2="1195"/><pair kern="-40" kpx2="230"/><pair kern="-40" kpx2="229"/><pair kern="-60" kpx2="1193"/><pair kern="-40" kpx2="228"/><pair kern="-40" kpx2="227"/><pair kern="-40" kpx2="226"/><pair kern="-40" kpx2="225"/><pair kern="-60" kpx2="224"/><pair kern="-29" kpx2="252"/><pair kern="-29" kpx2="250"/><pair kern="-29" kpx2="251"/><pair kern="-60" kpx2="248"/><pair kern="-29" kpx2="249"/><pair kern="-60" kpx2="246"/><pair kern="-60" kpx2="244"/><pair kern="-60" kpx2="245"/><pair kern="-60" kpx2="242"/><pair kern="-60" kpx2="243"/><pair kern="-60" kpx2="7889"/><pair kern="-60" kpx2="275"/><pair kern="-60" kpx2="273"/><pair kern="-60" kpx2="7893"/><pair kern="-60" kpx2="279"/><pair kern="-60" kpx2="7895"/><pair kern="-60" kpx2="277"/><pair kern="-60" kpx2="7897"/><pair kern="-60" kpx2="283"/><pair kern="-60" kpx2="7899"/><pair kern="-60" kpx2="281"/><pair kern="-60" kpx2="7901"/><pair kern="-29" kpx2="287"/><pair kern="-60" kpx2="7903"/><pair kern="-29" kpx2="285"/><pair kern="-69" kpx2="258"/><pair kern="-40" kpx2="259"/><pair kern="-69" kpx2="256"/><pair kern="-60" kpx2="7875"/><pair kern="-40" kpx2="257"/><pair kern="-60" kpx2="7877"/><pair kern="-60" kpx2="263"/><pair kern="-69" kpx2="260"/><pair kern="-60" kpx2="7879"/><pair kern="-40" kpx2="261"/><pair kern="-60" kpx2="267"/><pair kern="-60" kpx2="265"/><pair kern="-60" kpx2="7885"/><pair kern="-60" kpx2="271"/><pair kern="-60" kpx2="7887"/><pair kern="-60" kpx2="269"/><pair kern="9" kpx2="7922"/><pair kern="-29" kpx2="7921"/><pair kern="9" kpx2="7926"/><pair kern="9" kpx2="7924"/><pair kern="-29" kpx2="312"/><pair kern="9" kpx2="7928"/><pair kern="-60" kpx2="7907"/><pair kern="-29" kpx2="289"/><pair kern="-60" kpx2="7905"/><pair kern="-29" kpx2="291"/><pair kern="-29" kpx2="7911"/><pair kern="-29" kpx2="7909"/><pair kern="-29" kpx2="7915"/><pair kern="-29" kpx2="7913"/><pair kern="-29" kpx2="7919"/><pair kern="-29" kpx2="7917"/><pair kern="-29" kpx2="343"/><pair kern="-29" kpx2="341"/><pair kern="-60" kpx2="339"/><pair kern="-60" kpx2="337"/><pair kern="-29" kpx2="351"/><pair kern="-69" kpx2="1299"/><pair kern="-60" kpx2="1298"/><pair kern="-60" kpx2="1297"/><pair kern="-29" kpx2="347"/><pair kern="-29" kpx2="326"/><pair kern="20" kpx2="7812"/><pair kern="-29" kpx2="324"/><pair kern="-60" kpx2="1288"/><pair kern="-69" kpx2="1289"/><pair kern="20" kpx2="7808"/><pair kern="20" kpx2="7810"/><pair kern="-60" kpx2="1293"/><pair kern="-69" kpx2="1282"/><pair kern="-60" kpx2="335"/><pair kern="-60" kpx2="1283"/><pair kern="-69" kpx2="1280"/><pair kern="-60" kpx2="333"/><pair kern="-60" kpx2="1281"/><pair kern="-29" kpx2="331"/><pair kern="-40" kpx2="7863"/><pair kern="-69" kpx2="7862"/><pair kern="20" kpx2="372"/><pair kern="-40" kpx2="7861"/><pair kern="-69" kpx2="7860"/><pair kern="9" kpx2="374"/><pair kern="-40" kpx2="7859"/><pair kern="-29" kpx2="369"/><pair kern="-69" kpx2="7858"/><pair kern="-29" kpx2="371"/><pair kern="-40" kpx2="7857"/><pair kern="-69" kpx2="7856"/><pair kern="-60" kpx2="7871"/><pair kern="-60" kpx2="7869"/><pair kern="-60" kpx2="7867"/><pair kern="9" kpx2="376"/><pair kern="-60" kpx2="7865"/><pair kern="20" kpx2="356"/><pair kern="-69" kpx2="7846"/><pair kern="-69" kpx2="7844"/><pair kern="-40" kpx2="7845"/><pair kern="-69" kpx2="7842"/><pair kern="-40" kpx2="7843"/><pair kern="20" kpx2="354"/><pair kern="-69" kpx2="7840"/><pair kern="-40" kpx2="7841"/><pair kern="-69" kpx2="7854"/><pair kern="-29" kpx2="365"/><pair kern="-40" kpx2="7855"/><pair kern="-69" kpx2="7852"/><pair kern="-29" kpx2="367"/><pair kern="-40" kpx2="7853"/><pair kern="-69" kpx2="7850"/><pair kern="-29" kpx2="361"/><pair kern="-40" kpx2="7851"/><pair kern="-69" kpx2="7848"/><pair kern="-29" kpx2="363"/><pair kern="-40" kpx2="7849"/><pair kern="-20" kpx2="956"/><pair kern="-40" kpx2="959"/><pair kern="-20" kpx2="954"/><pair kern="-29" kpx2="948"/><pair kern="-20" kpx2="949"/><pair kern="-20" kpx2="950"/><pair kern="-20" kpx2="951"/><pair kern="-40" kpx2="945"/><pair kern="-20" kpx2="941"/><pair kern="-40" kpx2="940"/><pair kern="-20" kpx2="942"/><pair kern="-69" kpx2="923"/><pair kern="-29" kpx2="432"/><pair kern="-69" kpx2="916"/><pair kern="-69" kpx2="913"/><pair kern="-60" kpx2="417"/><pair kern="-69" kpx2="902"/><pair kern="-40" kpx2="7681"/><pair kern="-69" kpx2="7680"/><pair kern="-40" kpx2="509"/><pair kern="-29" kpx2="7743"/><pair kern="-60" kpx2="511"/><pair kern="-69" kpx2="506"/><pair kern="-40" kpx2="507"/><pair kern="-40" kpx2="972"/><pair kern="-40" kpx2="963"/><pair kern="-40" kpx2="962"/><pair kern="-29" kpx2="961"/><pair kern="-40" kpx2="966"/></kerning><kerning kpx1="8216"><pair kern="-60" kpx2="1092"/><pair kern="-60" kpx2="1089"/><pair kern="-69" kpx2="1113"/><pair kern="-29" kpx2="1109"/><pair kern="-60" kpx2="1108"/><pair kern="-60" kpx2="1105"/><pair kern="-60" kpx2="1104"/><pair kern="-69" kpx2="1126"/><pair kern="-69" kpx2="1127"/><pair kern="-60" kpx2="1149"/><pair kern="-60" kpx2="1147"/><pair kern="-60" kpx2="1145"/><pair kern="-29" kpx2="537"/><pair kern="-60" kpx2="1139"/><pair kern="-9" kpx2="1137"/><pair kern="20" kpx2="538"/><pair kern="-60" kpx2="1033"/><pair kern="-69" kpx2="65"/><pair kern="20" kpx2="84"/><pair kern="20" kpx2="87"/><pair kern="-60" kpx2="1051"/><pair kern="20" kpx2="86"/><pair kern="-69" kpx2="1040"/><pair kern="9" kpx2="89"/><pair kern="-60" kpx2="1044"/><pair kern="-29" kpx2="103"/><pair kern="-60" kpx2="100"/><pair kern="-60" kpx2="101"/><pair kern="-60" kpx2="99"/><pair kern="-40" kpx2="97"/><pair kern="-29" kpx2="110"/><pair kern="-60" kpx2="111"/><pair kern="-29" kpx2="109"/><pair kern="-69" kpx2="1083"/><pair kern="-29" kpx2="117"/><pair kern="-29" kpx2="115"/><pair kern="-29" kpx2="114"/><pair kern="-60" kpx2="1086"/><pair kern="-60" kpx2="113"/><pair kern="-29" kpx2="112"/><pair kern="-20" kpx2="1072"/><pair kern="-60" kpx2="1077"/><pair kern="-69" kpx2="1076"/><pair kern="-60" kpx2="1221"/><pair kern="-69" kpx2="1222"/><pair kern="-69" kpx2="1236"/><pair kern="-20" kpx2="1237"/><pair kern="-60" kpx2="1239"/><pair kern="-69" kpx2="1232"/><pair kern="-20" kpx2="1233"/><pair kern="-69" kpx2="1234"/><pair kern="-20" kpx2="1235"/><pair kern="-20" kpx2="1241"/><pair kern="-20" kpx2="1243"/><pair kern="-60" kpx2="1255"/><pair kern="-60" kpx2="1259"/><pair kern="-60" kpx2="1257"/><pair kern="-60" kpx2="1153"/><pair kern="-69" kpx2="197"/><pair kern="-69" kpx2="196"/><pair kern="-69" kpx2="193"/><pair kern="-69" kpx2="192"/><pair kern="-69" kpx2="195"/><pair kern="-69" kpx2="194"/><pair kern="9" kpx2="221"/><pair kern="-60" kpx2="235"/><pair kern="-60" kpx2="234"/><pair kern="-60" kpx2="233"/><pair kern="-60" kpx2="232"/><pair kern="-60" kpx2="231"/><pair kern="-60" kpx2="1195"/><pair kern="-40" kpx2="230"/><pair kern="-40" kpx2="229"/><pair kern="-60" kpx2="1193"/><pair kern="-40" kpx2="228"/><pair kern="-40" kpx2="227"/><pair kern="-40" kpx2="226"/><pair kern="-40" kpx2="225"/><pair kern="-60" kpx2="224"/><pair kern="-29" kpx2="252"/><pair kern="-29" kpx2="250"/><pair kern="-29" kpx2="251"/><pair kern="-60" kpx2="248"/><pair kern="-29" kpx2="249"/><pair kern="-60" kpx2="246"/><pair kern="-60" kpx2="244"/><pair kern="-60" kpx2="245"/><pair kern="-60" kpx2="242"/><pair kern="-60" kpx2="243"/><pair kern="-60" kpx2="7889"/><pair kern="-60" kpx2="275"/><pair kern="-60" kpx2="273"/><pair kern="-60" kpx2="7893"/><pair kern="-60" kpx2="279"/><pair kern="-60" kpx2="7895"/><pair kern="-60" kpx2="277"/><pair kern="-60" kpx2="7897"/><pair kern="-60" kpx2="283"/><pair kern="-60" kpx2="7899"/><pair kern="-60" kpx2="281"/><pair kern="-60" kpx2="7901"/><pair kern="-29" kpx2="287"/><pair kern="-60" kpx2="7903"/><pair kern="-29" kpx2="285"/><pair kern="-69" kpx2="258"/><pair kern="-40" kpx2="259"/><pair kern="-69" kpx2="256"/><pair kern="-60" kpx2="7875"/><pair kern="-40" kpx2="257"/><pair kern="-60" kpx2="7877"/><pair kern="-60" kpx2="263"/><pair kern="-69" kpx2="260"/><pair kern="-60" kpx2="7879"/><pair kern="-40" kpx2="261"/><pair kern="-60" kpx2="267"/><pair kern="-60" kpx2="265"/><pair kern="-60" kpx2="7885"/><pair kern="-60" kpx2="271"/><pair kern="-60" kpx2="7887"/><pair kern="-60" kpx2="269"/><pair kern="9" kpx2="7922"/><pair kern="-29" kpx2="7921"/><pair kern="9" kpx2="7926"/><pair kern="9" kpx2="7924"/><pair kern="-29" kpx2="312"/><pair kern="9" kpx2="7928"/><pair kern="-60" kpx2="7907"/><pair kern="-29" kpx2="289"/><pair kern="-60" kpx2="7905"/><pair kern="-29" kpx2="291"/><pair kern="-29" kpx2="7911"/><pair kern="-29" kpx2="7909"/><pair kern="-29" kpx2="7915"/><pair kern="-29" kpx2="7913"/><pair kern="-29" kpx2="7919"/><pair kern="-29" kpx2="7917"/><pair kern="-29" kpx2="343"/><pair kern="-29" kpx2="341"/><pair kern="-60" kpx2="339"/><pair kern="-60" kpx2="337"/><pair kern="-29" kpx2="351"/><pair kern="-69" kpx2="1299"/><pair kern="-60" kpx2="1298"/><pair kern="-60" kpx2="1297"/><pair kern="-29" kpx2="347"/><pair kern="-29" kpx2="326"/><pair kern="20" kpx2="7812"/><pair kern="-29" kpx2="324"/><pair kern="-60" kpx2="1288"/><pair kern="-69" kpx2="1289"/><pair kern="20" kpx2="7808"/><pair kern="20" kpx2="7810"/><pair kern="-60" kpx2="1293"/><pair kern="-69" kpx2="1282"/><pair kern="-60" kpx2="335"/><pair kern="-60" kpx2="1283"/><pair kern="-69" kpx2="1280"/><pair kern="-60" kpx2="333"/><pair kern="-60" kpx2="1281"/><pair kern="-29" kpx2="331"/><pair kern="-40" kpx2="7863"/><pair kern="-69" kpx2="7862"/><pair kern="20" kpx2="372"/><pair kern="-40" kpx2="7861"/><pair kern="-69" kpx2="7860"/><pair kern="9" kpx2="374"/><pair kern="-40" kpx2="7859"/><pair kern="-29" kpx2="369"/><pair kern="-69" kpx2="7858"/><pair kern="-29" kpx2="371"/><pair kern="-40" kpx2="7857"/><pair kern="-69" kpx2="7856"/><pair kern="-60" kpx2="7871"/><pair kern="-60" kpx2="7869"/><pair kern="-60" kpx2="7867"/><pair kern="9" kpx2="376"/><pair kern="-60" kpx2="7865"/><pair kern="20" kpx2="356"/><pair kern="-69" kpx2="7846"/><pair kern="-69" kpx2="7844"/><pair kern="-40" kpx2="7845"/><pair kern="-69" kpx2="7842"/><pair kern="-40" kpx2="7843"/><pair kern="20" kpx2="354"/><pair kern="-69" kpx2="7840"/><pair kern="-40" kpx2="7841"/><pair kern="-69" kpx2="7854"/><pair kern="-29" kpx2="365"/><pair kern="-40" kpx2="7855"/><pair kern="-69" kpx2="7852"/><pair kern="-29" kpx2="367"/><pair kern="-40" kpx2="7853"/><pair kern="-69" kpx2="7850"/><pair kern="-29" kpx2="361"/><pair kern="-40" kpx2="7851"/><pair kern="-69" kpx2="7848"/><pair kern="-29" kpx2="363"/><pair kern="-40" kpx2="7849"/><pair kern="-20" kpx2="956"/><pair kern="-40" kpx2="959"/><pair kern="-20" kpx2="954"/><pair kern="-29" kpx2="948"/><pair kern="-20" kpx2="949"/><pair kern="-20" kpx2="950"/><pair kern="-20" kpx2="951"/><pair kern="-40" kpx2="945"/><pair kern="-20" kpx2="941"/><pair kern="-40" kpx2="940"/><pair kern="-20" kpx2="942"/><pair kern="-69" kpx2="923"/><pair kern="-29" kpx2="432"/><pair kern="-69" kpx2="916"/><pair kern="-69" kpx2="913"/><pair kern="-60" kpx2="417"/><pair kern="-69" kpx2="902"/><pair kern="-40" kpx2="7681"/><pair kern="-69" kpx2="7680"/><pair kern="-40" kpx2="509"/><pair kern="-29" kpx2="7743"/><pair kern="-60" kpx2="511"/><pair kern="-69" kpx2="506"/><pair kern="-40" kpx2="507"/><pair kern="-40" kpx2="972"/><pair kern="-40" kpx2="963"/><pair kern="-40" kpx2="962"/><pair kern="-29" kpx2="961"/><pair kern="-40" kpx2="966"/></kerning><kerning kpx1="8222"><pair kern="-49" kpx2="7888"/><pair kern="-49" kpx2="7890"/><pair kern="-49" kpx2="7892"/><pair kern="-49" kpx2="1098"/><pair kern="-49" kpx2="7894"/><pair kern="-49" kpx2="7896"/><pair kern="-49" kpx2="7898"/><pair kern="-60" kpx2="1095"/><pair kern="-49" kpx2="7900"/><pair kern="-49" kpx2="286"/><pair kern="-49" kpx2="1090"/><pair kern="-49" kpx2="7902"/><pair kern="-49" kpx2="284"/><pair kern="-49" kpx2="262"/><pair kern="-49" kpx2="266"/><pair kern="-49" kpx2="264"/><pair kern="-49" kpx2="7884"/><pair kern="-49" kpx2="7886"/><pair kern="-49" kpx2="268"/><pair kern="-60" kpx2="7922"/><pair kern="-20" kpx2="7920"/><pair kern="-60" kpx2="7926"/><pair kern="-60" kpx2="7924"/><pair kern="-60" kpx2="7928"/><pair kern="-49" kpx2="1120"/><pair kern="-49" kpx2="7906"/><pair kern="-49" kpx2="288"/><pair kern="-49" kpx2="1150"/><pair kern="-49" kpx2="7904"/><pair kern="-49" kpx2="290"/><pair kern="-49" kpx2="1148"/><pair kern="-20" kpx2="7910"/><pair kern="-49" kpx2="1146"/><pair kern="-20" kpx2="7908"/><pair kern="-49" kpx2="1144"/><pair kern="-20" kpx2="7914"/><pair kern="-60" kpx2="1142"/><pair kern="-20" kpx2="7912"/><pair kern="-60" kpx2="1140"/><pair kern="-20" kpx2="7918"/><pair kern="-49" kpx2="1138"/><pair kern="-20" kpx2="7916"/><pair kern="-69" kpx2="538"/><pair kern="-80" kpx2="1136"/><pair kern="-49" kpx2="71"/><pair kern="-69" kpx2="1035"/><pair kern="-49" kpx2="338"/><pair kern="-49" kpx2="336"/><pair kern="-49" kpx2="67"/><pair kern="-69" kpx2="1026"/><pair kern="-49" kpx2="79"/><pair kern="-49" kpx2="1028"/><pair kern="-20" kpx2="85"/><pair kern="-60" kpx2="7812"/><pair kern="-69" kpx2="84"/><pair kern="-60" kpx2="87"/><pair kern="-60" kpx2="86"/><pair kern="-69" kpx2="1294"/><pair kern="-49" kpx2="81"/><pair kern="-60" kpx2="7808"/><pair kern="-49" kpx2="1295"/><pair kern="-49" kpx2="1292"/><pair kern="-60" kpx2="7810"/><pair kern="-49" kpx2="1054"/><pair kern="-49" kpx2="334"/><pair kern="-49" kpx2="332"/><pair kern="-60" kpx2="1286"/><pair kern="-60" kpx2="89"/><pair kern="-49" kpx2="1287"/><pair kern="-60" kpx2="1284"/><pair kern="-49" kpx2="1285"/><pair kern="-69" kpx2="1066"/><pair kern="-60" kpx2="372"/><pair kern="-60" kpx2="374"/><pair kern="-20" kpx2="368"/><pair kern="-20" kpx2="370"/><pair kern="-69" kpx2="1058"/><pair kern="-49" kpx2="1057"/><pair kern="-60" kpx2="376"/><pair kern="-80" kpx2="1063"/><pair kern="-40" kpx2="1060"/><pair kern="-69" kpx2="356"/><pair kern="-69" kpx2="354"/><pair kern="-20" kpx2="364"/><pair kern="-20" kpx2="366"/><pair kern="-20" kpx2="360"/><pair kern="-20" kpx2="362"/><pair kern="-20" kpx2="952"/><pair kern="-60" kpx2="1228"/><pair kern="-80" kpx2="1227"/><pair kern="-60" kpx2="936"/><pair kern="-60" kpx2="939"/><pair kern="-60" kpx2="933"/><pair kern="-69" kpx2="932"/><pair kern="-49" kpx2="934"/><pair kern="-49" kpx2="1254"/><pair kern="-40" kpx2="927"/><pair kern="-40" kpx2="920"/><pair kern="-49" kpx2="1258"/><pair kern="-49" kpx2="1256"/><pair kern="-80" kpx2="1268"/><pair kern="-60" kpx2="1269"/><pair kern="-20" kpx2="431"/><pair kern="-49" kpx2="416"/><pair kern="-49" kpx2="1152"/><pair kern="-49" kpx2="199"/><pair kern="-20" kpx2="220"/><pair kern="-60" kpx2="221"/><pair kern="-49" kpx2="216"/><pair kern="-20" kpx2="217"/><pair kern="-20" kpx2="218"/><pair kern="-20" kpx2="219"/><pair kern="-49" kpx2="212"/><pair kern="-49" kpx2="213"/><pair kern="-49" kpx2="214"/><pair kern="-49" kpx2="210"/><pair kern="-49" kpx2="211"/><pair kern="-49" kpx2="510"/><pair kern="-49" kpx2="1185"/><pair kern="-69" kpx2="1184"/><pair kern="-60" kpx2="978"/><pair kern="-49" kpx2="1194"/><pair kern="-49" kpx2="1192"/><pair kern="-60" kpx2="1198"/><pair kern="-49" kpx2="1197"/><pair kern="-69" kpx2="1196"/><pair kern="-60" kpx2="1200"/><pair kern="-80" kpx2="1206"/><pair kern="-60" kpx2="1207"/><pair kern="-69" kpx2="1204"/><pair kern="-49" kpx2="1205"/><pair kern="-80" kpx2="1208"/><pair kern="-60" kpx2="1209"/><pair kern="-60" kpx2="1214"/><pair kern="-60" kpx2="1212"/></kerning><kerning kpx1="8220"><pair kern="-60" kpx2="1092"/><pair kern="-60" kpx2="1089"/><pair kern="-69" kpx2="1113"/><pair kern="-29" kpx2="1109"/><pair kern="-60" kpx2="1108"/><pair kern="-60" kpx2="1105"/><pair kern="-60" kpx2="1104"/><pair kern="-69" kpx2="1126"/><pair kern="-69" kpx2="1127"/><pair kern="-60" kpx2="1149"/><pair kern="-60" kpx2="1147"/><pair kern="-60" kpx2="1145"/><pair kern="-29" kpx2="537"/><pair kern="-60" kpx2="1139"/><pair kern="-9" kpx2="1137"/><pair kern="20" kpx2="538"/><pair kern="-60" kpx2="1033"/><pair kern="-69" kpx2="65"/><pair kern="20" kpx2="84"/><pair kern="20" kpx2="87"/><pair kern="-60" kpx2="1051"/><pair kern="20" kpx2="86"/><pair kern="-69" kpx2="1040"/><pair kern="9" kpx2="89"/><pair kern="-60" kpx2="1044"/><pair kern="-29" kpx2="103"/><pair kern="-60" kpx2="100"/><pair kern="-60" kpx2="101"/><pair kern="-60" kpx2="99"/><pair kern="-40" kpx2="97"/><pair kern="-29" kpx2="110"/><pair kern="-60" kpx2="111"/><pair kern="-29" kpx2="109"/><pair kern="-69" kpx2="1083"/><pair kern="-29" kpx2="117"/><pair kern="-29" kpx2="115"/><pair kern="-29" kpx2="114"/><pair kern="-60" kpx2="1086"/><pair kern="-60" kpx2="113"/><pair kern="-29" kpx2="112"/><pair kern="-20" kpx2="1072"/><pair kern="-60" kpx2="1077"/><pair kern="-69" kpx2="1076"/><pair kern="-60" kpx2="1221"/><pair kern="-69" kpx2="1222"/><pair kern="-69" kpx2="1236"/><pair kern="-20" kpx2="1237"/><pair kern="-60" kpx2="1239"/><pair kern="-69" kpx2="1232"/><pair kern="-20" kpx2="1233"/><pair kern="-69" kpx2="1234"/><pair kern="-20" kpx2="1235"/><pair kern="-20" kpx2="1241"/><pair kern="-20" kpx2="1243"/><pair kern="-60" kpx2="1255"/><pair kern="-60" kpx2="1259"/><pair kern="-60" kpx2="1257"/><pair kern="-60" kpx2="1153"/><pair kern="-69" kpx2="197"/><pair kern="-69" kpx2="196"/><pair kern="-69" kpx2="193"/><pair kern="-69" kpx2="192"/><pair kern="-69" kpx2="195"/><pair kern="-69" kpx2="194"/><pair kern="9" kpx2="221"/><pair kern="-60" kpx2="235"/><pair kern="-60" kpx2="234"/><pair kern="-60" kpx2="233"/><pair kern="-60" kpx2="232"/><pair kern="-60" kpx2="231"/><pair kern="-60" kpx2="1195"/><pair kern="-40" kpx2="230"/><pair kern="-40" kpx2="229"/><pair kern="-60" kpx2="1193"/><pair kern="-40" kpx2="228"/><pair kern="-40" kpx2="227"/><pair kern="-40" kpx2="226"/><pair kern="-40" kpx2="225"/><pair kern="-60" kpx2="224"/><pair kern="-29" kpx2="252"/><pair kern="-29" kpx2="250"/><pair kern="-29" kpx2="251"/><pair kern="-60" kpx2="248"/><pair kern="-29" kpx2="249"/><pair kern="-60" kpx2="246"/><pair kern="-60" kpx2="244"/><pair kern="-60" kpx2="245"/><pair kern="-60" kpx2="242"/><pair kern="-60" kpx2="243"/><pair kern="-60" kpx2="7889"/><pair kern="-60" kpx2="275"/><pair kern="-60" kpx2="273"/><pair kern="-60" kpx2="7893"/><pair kern="-60" kpx2="279"/><pair kern="-60" kpx2="7895"/><pair kern="-60" kpx2="277"/><pair kern="-60" kpx2="7897"/><pair kern="-60" kpx2="283"/><pair kern="-60" kpx2="7899"/><pair kern="-60" kpx2="281"/><pair kern="-60" kpx2="7901"/><pair kern="-29" kpx2="287"/><pair kern="-60" kpx2="7903"/><pair kern="-29" kpx2="285"/><pair kern="-69" kpx2="258"/><pair kern="-40" kpx2="259"/><pair kern="-69" kpx2="256"/><pair kern="-60" kpx2="7875"/><pair kern="-40" kpx2="257"/><pair kern="-60" kpx2="7877"/><pair kern="-60" kpx2="263"/><pair kern="-69" kpx2="260"/><pair kern="-60" kpx2="7879"/><pair kern="-40" kpx2="261"/><pair kern="-60" kpx2="267"/><pair kern="-60" kpx2="265"/><pair kern="-60" kpx2="7885"/><pair kern="-60" kpx2="271"/><pair kern="-60" kpx2="7887"/><pair kern="-60" kpx2="269"/><pair kern="9" kpx2="7922"/><pair kern="-29" kpx2="7921"/><pair kern="9" kpx2="7926"/><pair kern="9" kpx2="7924"/><pair kern="-29" kpx2="312"/><pair kern="9" kpx2="7928"/><pair kern="-60" kpx2="7907"/><pair kern="-29" kpx2="289"/><pair kern="-60" kpx2="7905"/><pair kern="-29" kpx2="291"/><pair kern="-29" kpx2="7911"/><pair kern="-29" kpx2="7909"/><pair kern="-29" kpx2="7915"/><pair kern="-29" kpx2="7913"/><pair kern="-29" kpx2="7919"/><pair kern="-29" kpx2="7917"/><pair kern="-29" kpx2="343"/><pair kern="-29" kpx2="341"/><pair kern="-60" kpx2="339"/><pair kern="-60" kpx2="337"/><pair kern="-29" kpx2="351"/><pair kern="-69" kpx2="1299"/><pair kern="-60" kpx2="1298"/><pair kern="-60" kpx2="1297"/><pair kern="-29" kpx2="347"/><pair kern="-29" kpx2="326"/><pair kern="20" kpx2="7812"/><pair kern="-29" kpx2="324"/><pair kern="-60" kpx2="1288"/><pair kern="-69" kpx2="1289"/><pair kern="20" kpx2="7808"/><pair kern="20" kpx2="7810"/><pair kern="-60" kpx2="1293"/><pair kern="-69" kpx2="1282"/><pair kern="-60" kpx2="335"/><pair kern="-60" kpx2="1283"/><pair kern="-69" kpx2="1280"/><pair kern="-60" kpx2="333"/><pair kern="-60" kpx2="1281"/><pair kern="-29" kpx2="331"/><pair kern="-40" kpx2="7863"/><pair kern="-69" kpx2="7862"/><pair kern="20" kpx2="372"/><pair kern="-40" kpx2="7861"/><pair kern="-69" kpx2="7860"/><pair kern="9" kpx2="374"/><pair kern="-40" kpx2="7859"/><pair kern="-29" kpx2="369"/><pair kern="-69" kpx2="7858"/><pair kern="-29" kpx2="371"/><pair kern="-40" kpx2="7857"/><pair kern="-69" kpx2="7856"/><pair kern="-60" kpx2="7871"/><pair kern="-60" kpx2="7869"/><pair kern="-60" kpx2="7867"/><pair kern="9" kpx2="376"/><pair kern="-60" kpx2="7865"/><pair kern="20" kpx2="356"/><pair kern="-69" kpx2="7846"/><pair kern="-69" kpx2="7844"/><pair kern="-40" kpx2="7845"/><pair kern="-69" kpx2="7842"/><pair kern="-40" kpx2="7843"/><pair kern="20" kpx2="354"/><pair kern="-69" kpx2="7840"/><pair kern="-40" kpx2="7841"/><pair kern="-69" kpx2="7854"/><pair kern="-29" kpx2="365"/><pair kern="-40" kpx2="7855"/><pair kern="-69" kpx2="7852"/><pair kern="-29" kpx2="367"/><pair kern="-40" kpx2="7853"/><pair kern="-69" kpx2="7850"/><pair kern="-29" kpx2="361"/><pair kern="-40" kpx2="7851"/><pair kern="-69" kpx2="7848"/><pair kern="-29" kpx2="363"/><pair kern="-40" kpx2="7849"/><pair kern="-20" kpx2="956"/><pair kern="-40" kpx2="959"/><pair kern="-20" kpx2="954"/><pair kern="-29" kpx2="948"/><pair kern="-20" kpx2="949"/><pair kern="-20" kpx2="950"/><pair kern="-20" kpx2="951"/><pair kern="-40" kpx2="945"/><pair kern="-20" kpx2="941"/><pair kern="-40" kpx2="940"/><pair kern="-20" kpx2="942"/><pair kern="-69" kpx2="923"/><pair kern="-29" kpx2="432"/><pair kern="-69" kpx2="916"/><pair kern="-69" kpx2="913"/><pair kern="-60" kpx2="417"/><pair kern="-69" kpx2="902"/><pair kern="-40" kpx2="7681"/><pair kern="-69" kpx2="7680"/><pair kern="-40" kpx2="509"/><pair kern="-29" kpx2="7743"/><pair kern="-60" kpx2="511"/><pair kern="-69" kpx2="506"/><pair kern="-40" kpx2="507"/><pair kern="-40" kpx2="972"/><pair kern="-40" kpx2="963"/><pair kern="-40" kpx2="962"/><pair kern="-29" kpx2="961"/><pair kern="-40" kpx2="966"/></kerning><kerning kpx1="8013"><pair kern="-20" kpx2="923"/><pair kern="-9" kpx2="955"/><pair kern="-9" kpx2="978"/><pair kern="-9" kpx2="918"/><pair kern="-20" kpx2="916"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="44"/><pair kern="-20" kpx2="913"/><pair kern="-9" kpx2="936"/><pair kern="-9" kpx2="939"/><pair kern="-9" kpx2="933"/><pair kern="-40" kpx2="8218"/><pair kern="-20" kpx2="902"/><pair kern="-29" kpx2="932"/><pair kern="-20" kpx2="935"/><pair kern="-40" kpx2="8222"/><pair kern="-9" kpx2="931"/></kerning><kerning kpx1="7888"><pair kern="-20" kpx2="258"/><pair kern="-20" kpx2="256"/><pair kern="-20" kpx2="260"/><pair kern="-9" kpx2="7922"/><pair kern="-9" kpx2="7926"/><pair kern="-9" kpx2="7924"/><pair kern="-9" kpx2="7928"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="44"/><pair kern="-29" kpx2="538"/><pair kern="-20" kpx2="65"/><pair kern="-20" kpx2="197"/><pair kern="-20" kpx2="196"/><pair kern="-20" kpx2="193"/><pair kern="-20" kpx2="192"/><pair kern="-9" kpx2="1029"/><pair kern="-20" kpx2="195"/><pair kern="-20" kpx2="194"/><pair kern="-9" kpx2="7812"/><pair kern="-9" kpx2="221"/><pair kern="-29" kpx2="84"/><pair kern="-9" kpx2="87"/><pair kern="-9" kpx2="86"/><pair kern="-9" kpx2="7808"/><pair kern="-9" kpx2="7810"/><pair kern="-40" kpx2="8218"/><pair kern="-9" kpx2="89"/><pair kern="-20" kpx2="88"/><pair kern="-40" kpx2="8222"/><pair kern="-20" kpx2="7680"/><pair kern="-9" kpx2="90"/><pair kern="-9" kpx2="372"/><pair kern="-20" kpx2="7862"/><pair kern="-9" kpx2="374"/><pair kern="-20" kpx2="7860"/><pair kern="-20" kpx2="7858"/><pair kern="-20" kpx2="506"/><pair kern="-20" kpx2="7856"/><pair kern="-9" kpx2="381"/><pair kern="-9" kpx2="377"/><pair kern="-9" kpx2="376"/><pair kern="-9" kpx2="379"/><pair kern="-29" kpx2="356"/><pair kern="-20" kpx2="7846"/><pair kern="-20" kpx2="7844"/><pair kern="-20" kpx2="7842"/><pair kern="-29" kpx2="354"/><pair kern="-20" kpx2="7840"/><pair kern="-20" kpx2="7854"/><pair kern="-20" kpx2="7852"/><pair kern="-20" kpx2="7850"/><pair kern="-20" kpx2="7848"/></kerning><kerning kpx1="7890"><pair kern="-20" kpx2="258"/><pair kern="-20" kpx2="256"/><pair kern="-20" kpx2="260"/><pair kern="-9" kpx2="7922"/><pair kern="-9" kpx2="7926"/><pair kern="-9" kpx2="7924"/><pair kern="-9" kpx2="7928"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="44"/><pair kern="-29" kpx2="538"/><pair kern="-20" kpx2="65"/><pair kern="-20" kpx2="197"/><pair kern="-20" kpx2="196"/><pair kern="-20" kpx2="193"/><pair kern="-20" kpx2="192"/><pair kern="-9" kpx2="1029"/><pair kern="-20" kpx2="195"/><pair kern="-20" kpx2="194"/><pair kern="-9" kpx2="7812"/><pair kern="-9" kpx2="221"/><pair kern="-29" kpx2="84"/><pair kern="-9" kpx2="87"/><pair kern="-9" kpx2="86"/><pair kern="-9" kpx2="7808"/><pair kern="-9" kpx2="7810"/><pair kern="-40" kpx2="8218"/><pair kern="-9" kpx2="89"/><pair kern="-20" kpx2="88"/><pair kern="-40" kpx2="8222"/><pair kern="-20" kpx2="7680"/><pair kern="-9" kpx2="90"/><pair kern="-9" kpx2="372"/><pair kern="-20" kpx2="7862"/><pair kern="-9" kpx2="374"/><pair kern="-20" kpx2="7860"/><pair kern="-20" kpx2="7858"/><pair kern="-20" kpx2="506"/><pair kern="-20" kpx2="7856"/><pair kern="-9" kpx2="381"/><pair kern="-9" kpx2="377"/><pair kern="-9" kpx2="376"/><pair kern="-9" kpx2="379"/><pair kern="-29" kpx2="356"/><pair kern="-20" kpx2="7846"/><pair kern="-20" kpx2="7844"/><pair kern="-20" kpx2="7842"/><pair kern="-29" kpx2="354"/><pair kern="-20" kpx2="7840"/><pair kern="-20" kpx2="7854"/><pair kern="-20" kpx2="7852"/><pair kern="-20" kpx2="7850"/><pair kern="-20" kpx2="7848"/></kerning><kerning kpx1="7892"><pair kern="-20" kpx2="258"/><pair kern="-20" kpx2="256"/><pair kern="-20" kpx2="260"/><pair kern="-9" kpx2="7922"/><pair kern="-9" kpx2="7926"/><pair kern="-9" kpx2="7924"/><pair kern="-9" kpx2="7928"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="44"/><pair kern="-29" kpx2="538"/><pair kern="-20" kpx2="65"/><pair kern="-20" kpx2="197"/><pair kern="-20" kpx2="196"/><pair kern="-20" kpx2="193"/><pair kern="-20" kpx2="192"/><pair kern="-9" kpx2="1029"/><pair kern="-20" kpx2="195"/><pair kern="-20" kpx2="194"/><pair kern="-9" kpx2="7812"/><pair kern="-9" kpx2="221"/><pair kern="-29" kpx2="84"/><pair kern="-9" kpx2="87"/><pair kern="-9" kpx2="86"/><pair kern="-9" kpx2="7808"/><pair kern="-9" kpx2="7810"/><pair kern="-40" kpx2="8218"/><pair kern="-9" kpx2="89"/><pair kern="-20" kpx2="88"/><pair kern="-40" kpx2="8222"/><pair kern="-20" kpx2="7680"/><pair kern="-9" kpx2="90"/><pair kern="-9" kpx2="372"/><pair kern="-20" kpx2="7862"/><pair kern="-9" kpx2="374"/><pair kern="-20" kpx2="7860"/><pair kern="-20" kpx2="7858"/><pair kern="-20" kpx2="506"/><pair kern="-20" kpx2="7856"/><pair kern="-9" kpx2="381"/><pair kern="-9" kpx2="377"/><pair kern="-9" kpx2="376"/><pair kern="-9" kpx2="379"/><pair kern="-29" kpx2="356"/><pair kern="-20" kpx2="7846"/><pair kern="-20" kpx2="7844"/><pair kern="-20" kpx2="7842"/><pair kern="-29" kpx2="354"/><pair kern="-20" kpx2="7840"/><pair kern="-20" kpx2="7854"/><pair kern="-20" kpx2="7852"/><pair kern="-20" kpx2="7850"/><pair kern="-20" kpx2="7848"/></kerning><kerning kpx1="7894"><pair kern="-20" kpx2="258"/><pair kern="-20" kpx2="256"/><pair kern="-20" kpx2="260"/><pair kern="-9" kpx2="7922"/><pair kern="-9" kpx2="7926"/><pair kern="-9" kpx2="7924"/><pair kern="-9" kpx2="7928"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="44"/><pair kern="-29" kpx2="538"/><pair kern="-20" kpx2="65"/><pair kern="-20" kpx2="197"/><pair kern="-20" kpx2="196"/><pair kern="-20" kpx2="193"/><pair kern="-20" kpx2="192"/><pair kern="-9" kpx2="1029"/><pair kern="-20" kpx2="195"/><pair kern="-20" kpx2="194"/><pair kern="-9" kpx2="7812"/><pair kern="-9" kpx2="221"/><pair kern="-29" kpx2="84"/><pair kern="-9" kpx2="87"/><pair kern="-9" kpx2="86"/><pair kern="-9" kpx2="7808"/><pair kern="-9" kpx2="7810"/><pair kern="-40" kpx2="8218"/><pair kern="-9" kpx2="89"/><pair kern="-20" kpx2="88"/><pair kern="-40" kpx2="8222"/><pair kern="-20" kpx2="7680"/><pair kern="-9" kpx2="90"/><pair kern="-9" kpx2="372"/><pair kern="-20" kpx2="7862"/><pair kern="-9" kpx2="374"/><pair kern="-20" kpx2="7860"/><pair kern="-20" kpx2="7858"/><pair kern="-20" kpx2="506"/><pair kern="-20" kpx2="7856"/><pair kern="-9" kpx2="381"/><pair kern="-9" kpx2="377"/><pair kern="-9" kpx2="376"/><pair kern="-9" kpx2="379"/><pair kern="-29" kpx2="356"/><pair kern="-20" kpx2="7846"/><pair kern="-20" kpx2="7844"/><pair kern="-20" kpx2="7842"/><pair kern="-29" kpx2="354"/><pair kern="-20" kpx2="7840"/><pair kern="-20" kpx2="7854"/><pair kern="-20" kpx2="7852"/><pair kern="-20" kpx2="7850"/><pair kern="-20" kpx2="7848"/></kerning><kerning kpx1="7896"><pair kern="-20" kpx2="258"/><pair kern="-20" kpx2="256"/><pair kern="-20" kpx2="260"/><pair kern="-9" kpx2="7922"/><pair kern="-9" kpx2="7926"/><pair kern="-9" kpx2="7924"/><pair kern="-9" kpx2="7928"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="44"/><pair kern="-29" kpx2="538"/><pair kern="-20" kpx2="65"/><pair kern="-20" kpx2="197"/><pair kern="-20" kpx2="196"/><pair kern="-20" kpx2="193"/><pair kern="-20" kpx2="192"/><pair kern="-9" kpx2="1029"/><pair kern="-20" kpx2="195"/><pair kern="-20" kpx2="194"/><pair kern="-9" kpx2="7812"/><pair kern="-9" kpx2="221"/><pair kern="-29" kpx2="84"/><pair kern="-9" kpx2="87"/><pair kern="-9" kpx2="86"/><pair kern="-9" kpx2="7808"/><pair kern="-9" kpx2="7810"/><pair kern="-40" kpx2="8218"/><pair kern="-9" kpx2="89"/><pair kern="-20" kpx2="88"/><pair kern="-40" kpx2="8222"/><pair kern="-20" kpx2="7680"/><pair kern="-9" kpx2="90"/><pair kern="-9" kpx2="372"/><pair kern="-20" kpx2="7862"/><pair kern="-9" kpx2="374"/><pair kern="-20" kpx2="7860"/><pair kern="-20" kpx2="7858"/><pair kern="-20" kpx2="506"/><pair kern="-20" kpx2="7856"/><pair kern="-9" kpx2="381"/><pair kern="-9" kpx2="377"/><pair kern="-9" kpx2="376"/><pair kern="-9" kpx2="379"/><pair kern="-29" kpx2="356"/><pair kern="-20" kpx2="7846"/><pair kern="-20" kpx2="7844"/><pair kern="-20" kpx2="7842"/><pair kern="-29" kpx2="354"/><pair kern="-20" kpx2="7840"/><pair kern="-20" kpx2="7854"/><pair kern="-20" kpx2="7852"/><pair kern="-20" kpx2="7850"/><pair kern="-20" kpx2="7848"/></kerning><kerning kpx1="7899"><pair kern="40" kpx2="102"/><pair kern="49" kpx2="373"/><pair kern="49" kpx2="7925"/><pair kern="40" kpx2="64257"/><pair kern="40" kpx2="64256"/><pair kern="40" kpx2="64259"/><pair kern="40" kpx2="64258"/><pair kern="40" kpx2="64260"/><pair kern="49" kpx2="119"/><pair kern="49" kpx2="118"/><pair kern="40" kpx2="357"/><pair kern="40" kpx2="116"/><pair kern="49" kpx2="253"/><pair kern="49" kpx2="7809"/><pair kern="40" kpx2="355"/><pair kern="49" kpx2="7811"/><pair kern="49" kpx2="121"/><pair kern="40" kpx2="539"/><pair kern="49" kpx2="120"/></kerning><kerning kpx1="7901"><pair kern="40" kpx2="102"/><pair kern="49" kpx2="373"/><pair kern="49" kpx2="7925"/><pair kern="40" kpx2="64257"/><pair kern="40" kpx2="64256"/><pair kern="40" kpx2="64259"/><pair kern="40" kpx2="64258"/><pair kern="40" kpx2="64260"/><pair kern="49" kpx2="119"/><pair kern="49" kpx2="118"/><pair kern="40" kpx2="357"/><pair kern="40" kpx2="116"/><pair kern="49" kpx2="253"/><pair kern="49" kpx2="7809"/><pair kern="40" kpx2="355"/><pair kern="49" kpx2="7811"/><pair kern="49" kpx2="121"/><pair kern="40" kpx2="539"/><pair kern="49" kpx2="120"/></kerning><kerning kpx1="7903"><pair kern="40" kpx2="102"/><pair kern="49" kpx2="373"/><pair kern="49" kpx2="7925"/><pair kern="40" kpx2="64257"/><pair kern="40" kpx2="64256"/><pair kern="40" kpx2="64259"/><pair kern="40" kpx2="64258"/><pair kern="40" kpx2="64260"/><pair kern="49" kpx2="119"/><pair kern="49" kpx2="118"/><pair kern="40" kpx2="357"/><pair kern="40" kpx2="116"/><pair kern="49" kpx2="253"/><pair kern="49" kpx2="7809"/><pair kern="40" kpx2="355"/><pair kern="49" kpx2="7811"/><pair kern="49" kpx2="121"/><pair kern="40" kpx2="539"/><pair kern="49" kpx2="120"/></kerning><kerning kpx1="7872"><pair kern="60" kpx2="74"/></kerning><kerning kpx1="7873"><pair kern="-9" kpx2="34"/><pair kern="-20" kpx2="373"/><pair kern="-9" kpx2="39"/><pair kern="-20" kpx2="7925"/><pair kern="-9" kpx2="380"/><pair kern="-9" kpx2="382"/><pair kern="-9" kpx2="378"/><pair kern="-20" kpx2="119"/><pair kern="-20" kpx2="118"/><pair kern="-20" kpx2="253"/><pair kern="-20" kpx2="7809"/><pair kern="-20" kpx2="7811"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="122"/><pair kern="-9" kpx2="8221"/><pair kern="-20" kpx2="121"/><pair kern="-20" kpx2="120"/></kerning><kerning kpx1="7874"><pair kern="60" kpx2="74"/></kerning><kerning kpx1="7875"><pair kern="-9" kpx2="34"/><pair kern="-20" kpx2="373"/><pair kern="-9" kpx2="39"/><pair kern="-20" kpx2="7925"/><pair kern="-9" kpx2="380"/><pair kern="-9" kpx2="382"/><pair kern="-9" kpx2="378"/><pair kern="-20" kpx2="119"/><pair kern="-20" kpx2="118"/><pair kern="-20" kpx2="253"/><pair kern="-20" kpx2="7809"/><pair kern="-20" kpx2="7811"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="122"/><pair kern="-9" kpx2="8221"/><pair kern="-20" kpx2="121"/><pair kern="-20" kpx2="120"/></kerning><kerning kpx1="7876"><pair kern="60" kpx2="74"/></kerning><kerning kpx1="7877"><pair kern="-9" kpx2="34"/><pair kern="-20" kpx2="373"/><pair kern="-9" kpx2="39"/><pair kern="-20" kpx2="7925"/><pair kern="-9" kpx2="380"/><pair kern="-9" kpx2="382"/><pair kern="-9" kpx2="378"/><pair kern="-20" kpx2="119"/><pair kern="-20" kpx2="118"/><pair kern="-20" kpx2="253"/><pair kern="-20" kpx2="7809"/><pair kern="-20" kpx2="7811"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="122"/><pair kern="-9" kpx2="8221"/><pair kern="-20" kpx2="121"/><pair kern="-20" kpx2="120"/></kerning><kerning kpx1="7878"><pair kern="60" kpx2="74"/></kerning><kerning kpx1="7879"><pair kern="-9" kpx2="34"/><pair kern="-20" kpx2="373"/><pair kern="-9" kpx2="39"/><pair kern="-20" kpx2="7925"/><pair kern="-9" kpx2="380"/><pair kern="-9" kpx2="382"/><pair kern="-9" kpx2="378"/><pair kern="-20" kpx2="119"/><pair kern="-20" kpx2="118"/><pair kern="-20" kpx2="253"/><pair kern="-20" kpx2="7809"/><pair kern="-20" kpx2="7811"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="122"/><pair kern="-9" kpx2="8221"/><pair kern="-20" kpx2="121"/><pair kern="-20" kpx2="120"/></kerning><kerning kpx1="7884"><pair kern="-20" kpx2="258"/><pair kern="-20" kpx2="256"/><pair kern="-20" kpx2="260"/><pair kern="-9" kpx2="7922"/><pair kern="-9" kpx2="7926"/><pair kern="-9" kpx2="7924"/><pair kern="-9" kpx2="7928"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="44"/><pair kern="-29" kpx2="538"/><pair kern="-20" kpx2="65"/><pair kern="-20" kpx2="197"/><pair kern="-20" kpx2="196"/><pair kern="-20" kpx2="193"/><pair kern="-20" kpx2="192"/><pair kern="-9" kpx2="1029"/><pair kern="-20" kpx2="195"/><pair kern="-20" kpx2="194"/><pair kern="-9" kpx2="7812"/><pair kern="-9" kpx2="221"/><pair kern="-29" kpx2="84"/><pair kern="-9" kpx2="87"/><pair kern="-9" kpx2="86"/><pair kern="-9" kpx2="7808"/><pair kern="-9" kpx2="7810"/><pair kern="-40" kpx2="8218"/><pair kern="-9" kpx2="89"/><pair kern="-20" kpx2="88"/><pair kern="-40" kpx2="8222"/><pair kern="-20" kpx2="7680"/><pair kern="-9" kpx2="90"/><pair kern="-9" kpx2="372"/><pair kern="-20" kpx2="7862"/><pair kern="-9" kpx2="374"/><pair kern="-20" kpx2="7860"/><pair kern="-20" kpx2="7858"/><pair kern="-20" kpx2="506"/><pair kern="-20" kpx2="7856"/><pair kern="-9" kpx2="381"/><pair kern="-9" kpx2="377"/><pair kern="-9" kpx2="376"/><pair kern="-9" kpx2="379"/><pair kern="-29" kpx2="356"/><pair kern="-20" kpx2="7846"/><pair kern="-20" kpx2="7844"/><pair kern="-20" kpx2="7842"/><pair kern="-29" kpx2="354"/><pair kern="-20" kpx2="7840"/><pair kern="-20" kpx2="7854"/><pair kern="-20" kpx2="7852"/><pair kern="-20" kpx2="7850"/><pair kern="-20" kpx2="7848"/></kerning><kerning kpx1="7885"><pair kern="-9" kpx2="34"/><pair kern="-20" kpx2="373"/><pair kern="-9" kpx2="39"/><pair kern="-20" kpx2="7925"/><pair kern="-9" kpx2="380"/><pair kern="-9" kpx2="382"/><pair kern="-9" kpx2="378"/><pair kern="-20" kpx2="119"/><pair kern="-20" kpx2="118"/><pair kern="-20" kpx2="253"/><pair kern="-20" kpx2="7809"/><pair kern="-20" kpx2="7811"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="122"/><pair kern="-9" kpx2="8221"/><pair kern="-20" kpx2="121"/><pair kern="-20" kpx2="120"/></kerning><kerning kpx1="7886"><pair kern="-20" kpx2="258"/><pair kern="-20" kpx2="256"/><pair kern="-20" kpx2="260"/><pair kern="-9" kpx2="7922"/><pair kern="-9" kpx2="7926"/><pair kern="-9" kpx2="7924"/><pair kern="-9" kpx2="7928"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="44"/><pair kern="-29" kpx2="538"/><pair kern="-20" kpx2="65"/><pair kern="-20" kpx2="197"/><pair kern="-20" kpx2="196"/><pair kern="-20" kpx2="193"/><pair kern="-20" kpx2="192"/><pair kern="-9" kpx2="1029"/><pair kern="-20" kpx2="195"/><pair kern="-20" kpx2="194"/><pair kern="-9" kpx2="7812"/><pair kern="-9" kpx2="221"/><pair kern="-29" kpx2="84"/><pair kern="-9" kpx2="87"/><pair kern="-9" kpx2="86"/><pair kern="-9" kpx2="7808"/><pair kern="-9" kpx2="7810"/><pair kern="-40" kpx2="8218"/><pair kern="-9" kpx2="89"/><pair kern="-20" kpx2="88"/><pair kern="-40" kpx2="8222"/><pair kern="-20" kpx2="7680"/><pair kern="-9" kpx2="90"/><pair kern="-9" kpx2="372"/><pair kern="-20" kpx2="7862"/><pair kern="-9" kpx2="374"/><pair kern="-20" kpx2="7860"/><pair kern="-20" kpx2="7858"/><pair kern="-20" kpx2="506"/><pair kern="-20" kpx2="7856"/><pair kern="-9" kpx2="381"/><pair kern="-9" kpx2="377"/><pair kern="-9" kpx2="376"/><pair kern="-9" kpx2="379"/><pair kern="-29" kpx2="356"/><pair kern="-20" kpx2="7846"/><pair kern="-20" kpx2="7844"/><pair kern="-20" kpx2="7842"/><pair kern="-29" kpx2="354"/><pair kern="-20" kpx2="7840"/><pair kern="-20" kpx2="7854"/><pair kern="-20" kpx2="7852"/><pair kern="-20" kpx2="7850"/><pair kern="-20" kpx2="7848"/></kerning><kerning kpx1="7887"><pair kern="-9" kpx2="34"/><pair kern="-20" kpx2="373"/><pair kern="-9" kpx2="39"/><pair kern="-20" kpx2="7925"/><pair kern="-9" kpx2="380"/><pair kern="-9" kpx2="382"/><pair kern="-9" kpx2="378"/><pair kern="-20" kpx2="119"/><pair kern="-20" kpx2="118"/><pair kern="-20" kpx2="253"/><pair kern="-20" kpx2="7809"/><pair kern="-20" kpx2="7811"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="122"/><pair kern="-9" kpx2="8221"/><pair kern="-20" kpx2="121"/><pair kern="-20" kpx2="120"/></kerning><kerning kpx1="7923"><pair kern="40" kpx2="34"/><pair kern="40" kpx2="39"/><pair kern="-40" kpx2="8218"/><pair kern="40" kpx2="8217"/><pair kern="20" kpx2="63"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="8222"/><pair kern="40" kpx2="8221"/><pair kern="-40" kpx2="44"/></kerning><kerning kpx1="7922"><pair kern="-49" kpx2="7889"/><pair kern="-49" kpx2="275"/><pair kern="-20" kpx2="7888"/><pair kern="-49" kpx2="273"/><pair kern="-20" kpx2="7890"/><pair kern="-49" kpx2="7893"/><pair kern="-49" kpx2="279"/><pair kern="-20" kpx2="7892"/><pair kern="-49" kpx2="7895"/><pair kern="-49" kpx2="277"/><pair kern="-20" kpx2="7894"/><pair kern="-49" kpx2="7897"/><pair kern="-49" kpx2="283"/><pair kern="-20" kpx2="7896"/><pair kern="-49" kpx2="7899"/><pair kern="-49" kpx2="281"/><pair kern="-20" kpx2="7898"/><pair kern="-49" kpx2="7901"/><pair kern="-20" kpx2="287"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-49" kpx2="7903"/><pair kern="-20" kpx2="285"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-60" kpx2="258"/><pair kern="-49" kpx2="259"/><pair kern="-60" kpx2="256"/><pair kern="-49" kpx2="7875"/><pair kern="-49" kpx2="257"/><pair kern="-20" kpx2="262"/><pair kern="-49" kpx2="7877"/><pair kern="-49" kpx2="263"/><pair kern="-60" kpx2="260"/><pair kern="-49" kpx2="7879"/><pair kern="-49" kpx2="261"/><pair kern="-20" kpx2="266"/><pair kern="-49" kpx2="267"/><pair kern="-20" kpx2="264"/><pair kern="-49" kpx2="265"/><pair kern="-20" kpx2="7884"/><pair kern="-49" kpx2="7885"/><pair kern="-49" kpx2="271"/><pair kern="-20" kpx2="7886"/><pair kern="-20" kpx2="268"/><pair kern="-49" kpx2="7887"/><pair kern="-49" kpx2="269"/><pair kern="-29" kpx2="7921"/><pair kern="-29" kpx2="312"/><pair kern="-60" kpx2="46"/><pair kern="-60" kpx2="44"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-49" kpx2="7907"/><pair kern="-20" kpx2="289"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-49" kpx2="7905"/><pair kern="-20" kpx2="291"/><pair kern="-29" kpx2="7911"/><pair kern="-29" kpx2="7909"/><pair kern="-29" kpx2="7915"/><pair kern="-29" kpx2="7913"/><pair kern="-40" kpx2="537"/><pair kern="20" kpx2="63"/><pair kern="-29" kpx2="7919"/><pair kern="-29" kpx2="7917"/><pair kern="-29" kpx2="343"/><pair kern="-29" kpx2="341"/><pair kern="-20" kpx2="71"/><pair kern="-49" kpx2="339"/><pair kern="-20" kpx2="338"/><pair kern="-60" kpx2="65"/><pair kern="-49" kpx2="337"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-40" kpx2="351"/><pair kern="-20" kpx2="79"/><pair kern="-40" kpx2="347"/><pair kern="-29" kpx2="326"/><pair kern="-29" kpx2="324"/><pair kern="-20" kpx2="81"/><pair kern="-20" kpx2="334"/><pair kern="-60" kpx2="8218"/><pair kern="-49" kpx2="335"/><pair kern="-20" kpx2="332"/><pair kern="-49" kpx2="333"/><pair kern="-60" kpx2="8222"/><pair kern="-29" kpx2="331"/><pair kern="-49" kpx2="7863"/><pair kern="-60" kpx2="7862"/><pair kern="-20" kpx2="103"/><pair kern="-49" kpx2="7861"/><pair kern="-49" kpx2="100"/><pair kern="-60" kpx2="7860"/><pair kern="-49" kpx2="101"/><pair kern="-49" kpx2="7859"/><pair kern="-29" kpx2="369"/><pair kern="-60" kpx2="7858"/><pair kern="-49" kpx2="99"/><pair kern="-49" kpx2="7857"/><pair kern="-29" kpx2="371"/><pair kern="-60" kpx2="7856"/><pair kern="-49" kpx2="97"/><pair kern="-49" kpx2="7871"/><pair kern="-29" kpx2="110"/><pair kern="-20" kpx2="380"/><pair kern="-49" kpx2="111"/><pair kern="-49" kpx2="7869"/><pair kern="-20" kpx2="382"/><pair kern="-29" kpx2="109"/><pair kern="-49" kpx2="7867"/><pair kern="-49" kpx2="7865"/><pair kern="-20" kpx2="378"/><pair kern="-60" kpx2="7846"/><pair kern="-60" kpx2="7844"/><pair kern="-29" kpx2="117"/><pair kern="-49" kpx2="7845"/><pair kern="-60" kpx2="7842"/><pair kern="-40" kpx2="115"/><pair kern="-49" kpx2="7843"/><pair kern="-29" kpx2="114"/><pair kern="-60" kpx2="7840"/><pair kern="-49" kpx2="113"/><pair kern="-49" kpx2="7841"/><pair kern="-29" kpx2="112"/><pair kern="-60" kpx2="7854"/><pair kern="-49" kpx2="7855"/><pair kern="-29" kpx2="365"/><pair kern="-60" kpx2="7852"/><pair kern="-49" kpx2="7853"/><pair kern="-29" kpx2="367"/><pair kern="-60" kpx2="7850"/><pair kern="-49" kpx2="7851"/><pair kern="-29" kpx2="361"/><pair kern="-20" kpx2="122"/><pair kern="-60" kpx2="7848"/><pair kern="-49" kpx2="7849"/><pair kern="-29" kpx2="363"/><pair kern="-29" kpx2="432"/><pair kern="-49" kpx2="417"/><pair kern="-20" kpx2="416"/><pair kern="-60" kpx2="197"/><pair kern="-60" kpx2="196"/><pair kern="-20" kpx2="199"/><pair kern="-60" kpx2="193"/><pair kern="-60" kpx2="192"/><pair kern="-60" kpx2="195"/><pair kern="-60" kpx2="194"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-49" kpx2="7681"/><pair kern="-60" kpx2="7680"/><pair kern="-20" kpx2="210"/><pair kern="-20" kpx2="211"/><pair kern="-29" kpx2="7743"/><pair kern="-49" kpx2="509"/><pair kern="-20" kpx2="510"/><pair kern="-49" kpx2="511"/><pair kern="-49" kpx2="235"/><pair kern="-49" kpx2="234"/><pair kern="-60" kpx2="506"/><pair kern="-49" kpx2="233"/><pair kern="-49" kpx2="507"/><pair kern="-49" kpx2="232"/><pair kern="-49" kpx2="231"/><pair kern="-49" kpx2="230"/><pair kern="-49" kpx2="229"/><pair kern="-49" kpx2="228"/><pair kern="-49" kpx2="227"/><pair kern="-49" kpx2="226"/><pair kern="-49" kpx2="225"/><pair kern="-49" kpx2="224"/><pair kern="-29" kpx2="252"/><pair kern="-29" kpx2="250"/><pair kern="-29" kpx2="251"/><pair kern="-49" kpx2="248"/><pair kern="-29" kpx2="249"/><pair kern="-49" kpx2="246"/><pair kern="-49" kpx2="244"/><pair kern="-49" kpx2="245"/><pair kern="-49" kpx2="242"/><pair kern="-49" kpx2="243"/></kerning><kerning kpx1="7921"><pair kern="49" kpx2="102"/><pair kern="49" kpx2="373"/><pair kern="49" kpx2="7925"/><pair kern="49" kpx2="64257"/><pair kern="49" kpx2="64256"/><pair kern="49" kpx2="64259"/><pair kern="49" kpx2="64258"/><pair kern="49" kpx2="64260"/><pair kern="49" kpx2="119"/><pair kern="49" kpx2="118"/><pair kern="49" kpx2="357"/><pair kern="49" kpx2="116"/><pair kern="49" kpx2="253"/><pair kern="49" kpx2="7809"/><pair kern="49" kpx2="355"/><pair kern="49" kpx2="7811"/><pair kern="49" kpx2="121"/><pair kern="49" kpx2="539"/><pair kern="49" kpx2="120"/></kerning><kerning kpx1="7927"><pair kern="40" kpx2="34"/><pair kern="40" kpx2="39"/><pair kern="-40" kpx2="8218"/><pair kern="40" kpx2="8217"/><pair kern="20" kpx2="63"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="8222"/><pair kern="40" kpx2="8221"/><pair kern="-40" kpx2="44"/></kerning><kerning kpx1="7926"><pair kern="-49" kpx2="7889"/><pair kern="-49" kpx2="275"/><pair kern="-20" kpx2="7888"/><pair kern="-49" kpx2="273"/><pair kern="-20" kpx2="7890"/><pair kern="-49" kpx2="7893"/><pair kern="-49" kpx2="279"/><pair kern="-20" kpx2="7892"/><pair kern="-49" kpx2="7895"/><pair kern="-49" kpx2="277"/><pair kern="-20" kpx2="7894"/><pair kern="-49" kpx2="7897"/><pair kern="-49" kpx2="283"/><pair kern="-20" kpx2="7896"/><pair kern="-49" kpx2="7899"/><pair kern="-49" kpx2="281"/><pair kern="-20" kpx2="7898"/><pair kern="-49" kpx2="7901"/><pair kern="-20" kpx2="287"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-49" kpx2="7903"/><pair kern="-20" kpx2="285"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-60" kpx2="258"/><pair kern="-49" kpx2="259"/><pair kern="-60" kpx2="256"/><pair kern="-49" kpx2="7875"/><pair kern="-49" kpx2="257"/><pair kern="-20" kpx2="262"/><pair kern="-49" kpx2="7877"/><pair kern="-49" kpx2="263"/><pair kern="-60" kpx2="260"/><pair kern="-49" kpx2="7879"/><pair kern="-49" kpx2="261"/><pair kern="-20" kpx2="266"/><pair kern="-49" kpx2="267"/><pair kern="-20" kpx2="264"/><pair kern="-49" kpx2="265"/><pair kern="-20" kpx2="7884"/><pair kern="-49" kpx2="7885"/><pair kern="-49" kpx2="271"/><pair kern="-20" kpx2="7886"/><pair kern="-20" kpx2="268"/><pair kern="-49" kpx2="7887"/><pair kern="-49" kpx2="269"/><pair kern="-29" kpx2="7921"/><pair kern="-29" kpx2="312"/><pair kern="-60" kpx2="46"/><pair kern="-60" kpx2="44"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-49" kpx2="7907"/><pair kern="-20" kpx2="289"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-49" kpx2="7905"/><pair kern="-20" kpx2="291"/><pair kern="-29" kpx2="7911"/><pair kern="-29" kpx2="7909"/><pair kern="-29" kpx2="7915"/><pair kern="-29" kpx2="7913"/><pair kern="-40" kpx2="537"/><pair kern="20" kpx2="63"/><pair kern="-29" kpx2="7919"/><pair kern="-29" kpx2="7917"/><pair kern="-29" kpx2="343"/><pair kern="-29" kpx2="341"/><pair kern="-20" kpx2="71"/><pair kern="-49" kpx2="339"/><pair kern="-20" kpx2="338"/><pair kern="-60" kpx2="65"/><pair kern="-49" kpx2="337"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-40" kpx2="351"/><pair kern="-20" kpx2="79"/><pair kern="-40" kpx2="347"/><pair kern="-29" kpx2="326"/><pair kern="-29" kpx2="324"/><pair kern="-20" kpx2="81"/><pair kern="-20" kpx2="334"/><pair kern="-60" kpx2="8218"/><pair kern="-49" kpx2="335"/><pair kern="-20" kpx2="332"/><pair kern="-49" kpx2="333"/><pair kern="-60" kpx2="8222"/><pair kern="-29" kpx2="331"/><pair kern="-49" kpx2="7863"/><pair kern="-60" kpx2="7862"/><pair kern="-20" kpx2="103"/><pair kern="-49" kpx2="7861"/><pair kern="-49" kpx2="100"/><pair kern="-60" kpx2="7860"/><pair kern="-49" kpx2="101"/><pair kern="-49" kpx2="7859"/><pair kern="-29" kpx2="369"/><pair kern="-60" kpx2="7858"/><pair kern="-49" kpx2="99"/><pair kern="-49" kpx2="7857"/><pair kern="-29" kpx2="371"/><pair kern="-60" kpx2="7856"/><pair kern="-49" kpx2="97"/><pair kern="-49" kpx2="7871"/><pair kern="-29" kpx2="110"/><pair kern="-20" kpx2="380"/><pair kern="-49" kpx2="111"/><pair kern="-49" kpx2="7869"/><pair kern="-20" kpx2="382"/><pair kern="-29" kpx2="109"/><pair kern="-49" kpx2="7867"/><pair kern="-49" kpx2="7865"/><pair kern="-20" kpx2="378"/><pair kern="-60" kpx2="7846"/><pair kern="-60" kpx2="7844"/><pair kern="-29" kpx2="117"/><pair kern="-49" kpx2="7845"/><pair kern="-60" kpx2="7842"/><pair kern="-40" kpx2="115"/><pair kern="-49" kpx2="7843"/><pair kern="-29" kpx2="114"/><pair kern="-60" kpx2="7840"/><pair kern="-49" kpx2="113"/><pair kern="-49" kpx2="7841"/><pair kern="-29" kpx2="112"/><pair kern="-60" kpx2="7854"/><pair kern="-49" kpx2="7855"/><pair kern="-29" kpx2="365"/><pair kern="-60" kpx2="7852"/><pair kern="-49" kpx2="7853"/><pair kern="-29" kpx2="367"/><pair kern="-60" kpx2="7850"/><pair kern="-49" kpx2="7851"/><pair kern="-29" kpx2="361"/><pair kern="-20" kpx2="122"/><pair kern="-60" kpx2="7848"/><pair kern="-49" kpx2="7849"/><pair kern="-29" kpx2="363"/><pair kern="-29" kpx2="432"/><pair kern="-49" kpx2="417"/><pair kern="-20" kpx2="416"/><pair kern="-60" kpx2="197"/><pair kern="-60" kpx2="196"/><pair kern="-20" kpx2="199"/><pair kern="-60" kpx2="193"/><pair kern="-60" kpx2="192"/><pair kern="-60" kpx2="195"/><pair kern="-60" kpx2="194"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-49" kpx2="7681"/><pair kern="-60" kpx2="7680"/><pair kern="-20" kpx2="210"/><pair kern="-20" kpx2="211"/><pair kern="-29" kpx2="7743"/><pair kern="-49" kpx2="509"/><pair kern="-20" kpx2="510"/><pair kern="-49" kpx2="511"/><pair kern="-49" kpx2="235"/><pair kern="-49" kpx2="234"/><pair kern="-60" kpx2="506"/><pair kern="-49" kpx2="233"/><pair kern="-49" kpx2="507"/><pair kern="-49" kpx2="232"/><pair kern="-49" kpx2="231"/><pair kern="-49" kpx2="230"/><pair kern="-49" kpx2="229"/><pair kern="-49" kpx2="228"/><pair kern="-49" kpx2="227"/><pair kern="-49" kpx2="226"/><pair kern="-49" kpx2="225"/><pair kern="-49" kpx2="224"/><pair kern="-29" kpx2="252"/><pair kern="-29" kpx2="250"/><pair kern="-29" kpx2="251"/><pair kern="-49" kpx2="248"/><pair kern="-29" kpx2="249"/><pair kern="-49" kpx2="246"/><pair kern="-49" kpx2="244"/><pair kern="-49" kpx2="245"/><pair kern="-49" kpx2="242"/><pair kern="-49" kpx2="243"/></kerning><kerning kpx1="7925"><pair kern="40" kpx2="34"/><pair kern="40" kpx2="39"/><pair kern="-40" kpx2="8218"/><pair kern="40" kpx2="8217"/><pair kern="20" kpx2="63"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="8222"/><pair kern="40" kpx2="8221"/><pair kern="-40" kpx2="44"/></kerning><kerning kpx1="7924"><pair kern="-49" kpx2="7889"/><pair kern="-49" kpx2="275"/><pair kern="-20" kpx2="7888"/><pair kern="-49" kpx2="273"/><pair kern="-20" kpx2="7890"/><pair kern="-49" kpx2="7893"/><pair kern="-49" kpx2="279"/><pair kern="-20" kpx2="7892"/><pair kern="-49" kpx2="7895"/><pair kern="-49" kpx2="277"/><pair kern="-20" kpx2="7894"/><pair kern="-49" kpx2="7897"/><pair kern="-49" kpx2="283"/><pair kern="-20" kpx2="7896"/><pair kern="-49" kpx2="7899"/><pair kern="-49" kpx2="281"/><pair kern="-20" kpx2="7898"/><pair kern="-49" kpx2="7901"/><pair kern="-20" kpx2="287"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-49" kpx2="7903"/><pair kern="-20" kpx2="285"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-60" kpx2="258"/><pair kern="-49" kpx2="259"/><pair kern="-60" kpx2="256"/><pair kern="-49" kpx2="7875"/><pair kern="-49" kpx2="257"/><pair kern="-20" kpx2="262"/><pair kern="-49" kpx2="7877"/><pair kern="-49" kpx2="263"/><pair kern="-60" kpx2="260"/><pair kern="-49" kpx2="7879"/><pair kern="-49" kpx2="261"/><pair kern="-20" kpx2="266"/><pair kern="-49" kpx2="267"/><pair kern="-20" kpx2="264"/><pair kern="-49" kpx2="265"/><pair kern="-20" kpx2="7884"/><pair kern="-49" kpx2="7885"/><pair kern="-49" kpx2="271"/><pair kern="-20" kpx2="7886"/><pair kern="-20" kpx2="268"/><pair kern="-49" kpx2="7887"/><pair kern="-49" kpx2="269"/><pair kern="-29" kpx2="7921"/><pair kern="-29" kpx2="312"/><pair kern="-60" kpx2="46"/><pair kern="-60" kpx2="44"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-49" kpx2="7907"/><pair kern="-20" kpx2="289"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-49" kpx2="7905"/><pair kern="-20" kpx2="291"/><pair kern="-29" kpx2="7911"/><pair kern="-29" kpx2="7909"/><pair kern="-29" kpx2="7915"/><pair kern="-29" kpx2="7913"/><pair kern="-40" kpx2="537"/><pair kern="20" kpx2="63"/><pair kern="-29" kpx2="7919"/><pair kern="-29" kpx2="7917"/><pair kern="-29" kpx2="343"/><pair kern="-29" kpx2="341"/><pair kern="-20" kpx2="71"/><pair kern="-49" kpx2="339"/><pair kern="-20" kpx2="338"/><pair kern="-60" kpx2="65"/><pair kern="-49" kpx2="337"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-40" kpx2="351"/><pair kern="-20" kpx2="79"/><pair kern="-40" kpx2="347"/><pair kern="-29" kpx2="326"/><pair kern="-29" kpx2="324"/><pair kern="-20" kpx2="81"/><pair kern="-20" kpx2="334"/><pair kern="-60" kpx2="8218"/><pair kern="-49" kpx2="335"/><pair kern="-20" kpx2="332"/><pair kern="-49" kpx2="333"/><pair kern="-60" kpx2="8222"/><pair kern="-29" kpx2="331"/><pair kern="-49" kpx2="7863"/><pair kern="-60" kpx2="7862"/><pair kern="-20" kpx2="103"/><pair kern="-49" kpx2="7861"/><pair kern="-49" kpx2="100"/><pair kern="-60" kpx2="7860"/><pair kern="-49" kpx2="101"/><pair kern="-49" kpx2="7859"/><pair kern="-29" kpx2="369"/><pair kern="-60" kpx2="7858"/><pair kern="-49" kpx2="99"/><pair kern="-49" kpx2="7857"/><pair kern="-29" kpx2="371"/><pair kern="-60" kpx2="7856"/><pair kern="-49" kpx2="97"/><pair kern="-49" kpx2="7871"/><pair kern="-29" kpx2="110"/><pair kern="-20" kpx2="380"/><pair kern="-49" kpx2="111"/><pair kern="-49" kpx2="7869"/><pair kern="-20" kpx2="382"/><pair kern="-29" kpx2="109"/><pair kern="-49" kpx2="7867"/><pair kern="-49" kpx2="7865"/><pair kern="-20" kpx2="378"/><pair kern="-60" kpx2="7846"/><pair kern="-60" kpx2="7844"/><pair kern="-29" kpx2="117"/><pair kern="-49" kpx2="7845"/><pair kern="-60" kpx2="7842"/><pair kern="-40" kpx2="115"/><pair kern="-49" kpx2="7843"/><pair kern="-29" kpx2="114"/><pair kern="-60" kpx2="7840"/><pair kern="-49" kpx2="113"/><pair kern="-49" kpx2="7841"/><pair kern="-29" kpx2="112"/><pair kern="-60" kpx2="7854"/><pair kern="-49" kpx2="7855"/><pair kern="-29" kpx2="365"/><pair kern="-60" kpx2="7852"/><pair kern="-49" kpx2="7853"/><pair kern="-29" kpx2="367"/><pair kern="-60" kpx2="7850"/><pair kern="-49" kpx2="7851"/><pair kern="-29" kpx2="361"/><pair kern="-20" kpx2="122"/><pair kern="-60" kpx2="7848"/><pair kern="-49" kpx2="7849"/><pair kern="-29" kpx2="363"/><pair kern="-29" kpx2="432"/><pair kern="-49" kpx2="417"/><pair kern="-20" kpx2="416"/><pair kern="-60" kpx2="197"/><pair kern="-60" kpx2="196"/><pair kern="-20" kpx2="199"/><pair kern="-60" kpx2="193"/><pair kern="-60" kpx2="192"/><pair kern="-60" kpx2="195"/><pair kern="-60" kpx2="194"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-49" kpx2="7681"/><pair kern="-60" kpx2="7680"/><pair kern="-20" kpx2="210"/><pair kern="-20" kpx2="211"/><pair kern="-29" kpx2="7743"/><pair kern="-49" kpx2="509"/><pair kern="-20" kpx2="510"/><pair kern="-49" kpx2="511"/><pair kern="-49" kpx2="235"/><pair kern="-49" kpx2="234"/><pair kern="-60" kpx2="506"/><pair kern="-49" kpx2="233"/><pair kern="-49" kpx2="507"/><pair kern="-49" kpx2="232"/><pair kern="-49" kpx2="231"/><pair kern="-49" kpx2="230"/><pair kern="-49" kpx2="229"/><pair kern="-49" kpx2="228"/><pair kern="-49" kpx2="227"/><pair kern="-49" kpx2="226"/><pair kern="-49" kpx2="225"/><pair kern="-49" kpx2="224"/><pair kern="-29" kpx2="252"/><pair kern="-29" kpx2="250"/><pair kern="-29" kpx2="251"/><pair kern="-49" kpx2="248"/><pair kern="-29" kpx2="249"/><pair kern="-49" kpx2="246"/><pair kern="-49" kpx2="244"/><pair kern="-49" kpx2="245"/><pair kern="-49" kpx2="242"/><pair kern="-49" kpx2="243"/></kerning><kerning kpx1="7929"><pair kern="40" kpx2="34"/><pair kern="40" kpx2="39"/><pair kern="-40" kpx2="8218"/><pair kern="40" kpx2="8217"/><pair kern="20" kpx2="63"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="8222"/><pair kern="40" kpx2="8221"/><pair kern="-40" kpx2="44"/></kerning><kerning kpx1="7928"><pair kern="-49" kpx2="7889"/><pair kern="-49" kpx2="275"/><pair kern="-20" kpx2="7888"/><pair kern="-49" kpx2="273"/><pair kern="-20" kpx2="7890"/><pair kern="-49" kpx2="7893"/><pair kern="-49" kpx2="279"/><pair kern="-20" kpx2="7892"/><pair kern="-49" kpx2="7895"/><pair kern="-49" kpx2="277"/><pair kern="-20" kpx2="7894"/><pair kern="-49" kpx2="7897"/><pair kern="-49" kpx2="283"/><pair kern="-20" kpx2="7896"/><pair kern="-49" kpx2="7899"/><pair kern="-49" kpx2="281"/><pair kern="-20" kpx2="7898"/><pair kern="-49" kpx2="7901"/><pair kern="-20" kpx2="287"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-49" kpx2="7903"/><pair kern="-20" kpx2="285"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-60" kpx2="258"/><pair kern="-49" kpx2="259"/><pair kern="-60" kpx2="256"/><pair kern="-49" kpx2="7875"/><pair kern="-49" kpx2="257"/><pair kern="-20" kpx2="262"/><pair kern="-49" kpx2="7877"/><pair kern="-49" kpx2="263"/><pair kern="-60" kpx2="260"/><pair kern="-49" kpx2="7879"/><pair kern="-49" kpx2="261"/><pair kern="-20" kpx2="266"/><pair kern="-49" kpx2="267"/><pair kern="-20" kpx2="264"/><pair kern="-49" kpx2="265"/><pair kern="-20" kpx2="7884"/><pair kern="-49" kpx2="7885"/><pair kern="-49" kpx2="271"/><pair kern="-20" kpx2="7886"/><pair kern="-20" kpx2="268"/><pair kern="-49" kpx2="7887"/><pair kern="-49" kpx2="269"/><pair kern="-29" kpx2="7921"/><pair kern="-29" kpx2="312"/><pair kern="-60" kpx2="46"/><pair kern="-60" kpx2="44"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-49" kpx2="7907"/><pair kern="-20" kpx2="289"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-49" kpx2="7905"/><pair kern="-20" kpx2="291"/><pair kern="-29" kpx2="7911"/><pair kern="-29" kpx2="7909"/><pair kern="-29" kpx2="7915"/><pair kern="-29" kpx2="7913"/><pair kern="-40" kpx2="537"/><pair kern="20" kpx2="63"/><pair kern="-29" kpx2="7919"/><pair kern="-29" kpx2="7917"/><pair kern="-29" kpx2="343"/><pair kern="-29" kpx2="341"/><pair kern="-20" kpx2="71"/><pair kern="-49" kpx2="339"/><pair kern="-20" kpx2="338"/><pair kern="-60" kpx2="65"/><pair kern="-49" kpx2="337"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-40" kpx2="351"/><pair kern="-20" kpx2="79"/><pair kern="-40" kpx2="347"/><pair kern="-29" kpx2="326"/><pair kern="-29" kpx2="324"/><pair kern="-20" kpx2="81"/><pair kern="-20" kpx2="334"/><pair kern="-60" kpx2="8218"/><pair kern="-49" kpx2="335"/><pair kern="-20" kpx2="332"/><pair kern="-49" kpx2="333"/><pair kern="-60" kpx2="8222"/><pair kern="-29" kpx2="331"/><pair kern="-49" kpx2="7863"/><pair kern="-60" kpx2="7862"/><pair kern="-20" kpx2="103"/><pair kern="-49" kpx2="7861"/><pair kern="-49" kpx2="100"/><pair kern="-60" kpx2="7860"/><pair kern="-49" kpx2="101"/><pair kern="-49" kpx2="7859"/><pair kern="-29" kpx2="369"/><pair kern="-60" kpx2="7858"/><pair kern="-49" kpx2="99"/><pair kern="-49" kpx2="7857"/><pair kern="-29" kpx2="371"/><pair kern="-60" kpx2="7856"/><pair kern="-49" kpx2="97"/><pair kern="-49" kpx2="7871"/><pair kern="-29" kpx2="110"/><pair kern="-20" kpx2="380"/><pair kern="-49" kpx2="111"/><pair kern="-49" kpx2="7869"/><pair kern="-20" kpx2="382"/><pair kern="-29" kpx2="109"/><pair kern="-49" kpx2="7867"/><pair kern="-49" kpx2="7865"/><pair kern="-20" kpx2="378"/><pair kern="-60" kpx2="7846"/><pair kern="-60" kpx2="7844"/><pair kern="-29" kpx2="117"/><pair kern="-49" kpx2="7845"/><pair kern="-60" kpx2="7842"/><pair kern="-40" kpx2="115"/><pair kern="-49" kpx2="7843"/><pair kern="-29" kpx2="114"/><pair kern="-60" kpx2="7840"/><pair kern="-49" kpx2="113"/><pair kern="-49" kpx2="7841"/><pair kern="-29" kpx2="112"/><pair kern="-60" kpx2="7854"/><pair kern="-49" kpx2="7855"/><pair kern="-29" kpx2="365"/><pair kern="-60" kpx2="7852"/><pair kern="-49" kpx2="7853"/><pair kern="-29" kpx2="367"/><pair kern="-60" kpx2="7850"/><pair kern="-49" kpx2="7851"/><pair kern="-29" kpx2="361"/><pair kern="-20" kpx2="122"/><pair kern="-60" kpx2="7848"/><pair kern="-49" kpx2="7849"/><pair kern="-29" kpx2="363"/><pair kern="-29" kpx2="432"/><pair kern="-49" kpx2="417"/><pair kern="-20" kpx2="416"/><pair kern="-60" kpx2="197"/><pair kern="-60" kpx2="196"/><pair kern="-20" kpx2="199"/><pair kern="-60" kpx2="193"/><pair kern="-60" kpx2="192"/><pair kern="-60" kpx2="195"/><pair kern="-60" kpx2="194"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-49" kpx2="7681"/><pair kern="-60" kpx2="7680"/><pair kern="-20" kpx2="210"/><pair kern="-20" kpx2="211"/><pair kern="-29" kpx2="7743"/><pair kern="-49" kpx2="509"/><pair kern="-20" kpx2="510"/><pair kern="-49" kpx2="511"/><pair kern="-49" kpx2="235"/><pair kern="-49" kpx2="234"/><pair kern="-60" kpx2="506"/><pair kern="-49" kpx2="233"/><pair kern="-49" kpx2="507"/><pair kern="-49" kpx2="232"/><pair kern="-49" kpx2="231"/><pair kern="-49" kpx2="230"/><pair kern="-49" kpx2="229"/><pair kern="-49" kpx2="228"/><pair kern="-49" kpx2="227"/><pair kern="-49" kpx2="226"/><pair kern="-49" kpx2="225"/><pair kern="-49" kpx2="224"/><pair kern="-29" kpx2="252"/><pair kern="-29" kpx2="250"/><pair kern="-29" kpx2="251"/><pair kern="-49" kpx2="248"/><pair kern="-29" kpx2="249"/><pair kern="-49" kpx2="246"/><pair kern="-49" kpx2="244"/><pair kern="-49" kpx2="245"/><pair kern="-49" kpx2="242"/><pair kern="-49" kpx2="243"/></kerning><kerning kpx1="7907"><pair kern="40" kpx2="102"/><pair kern="49" kpx2="373"/><pair kern="49" kpx2="7925"/><pair kern="40" kpx2="64257"/><pair kern="40" kpx2="64256"/><pair kern="40" kpx2="64259"/><pair kern="40" kpx2="64258"/><pair kern="40" kpx2="64260"/><pair kern="49" kpx2="119"/><pair kern="49" kpx2="118"/><pair kern="40" kpx2="357"/><pair kern="40" kpx2="116"/><pair kern="49" kpx2="253"/><pair kern="49" kpx2="7809"/><pair kern="40" kpx2="355"/><pair kern="49" kpx2="7811"/><pair kern="49" kpx2="121"/><pair kern="40" kpx2="539"/><pair kern="49" kpx2="120"/></kerning><kerning kpx1="7905"><pair kern="40" kpx2="102"/><pair kern="49" kpx2="373"/><pair kern="49" kpx2="7925"/><pair kern="40" kpx2="64257"/><pair kern="40" kpx2="64256"/><pair kern="40" kpx2="64259"/><pair kern="40" kpx2="64258"/><pair kern="40" kpx2="64260"/><pair kern="49" kpx2="119"/><pair kern="49" kpx2="118"/><pair kern="40" kpx2="357"/><pair kern="40" kpx2="116"/><pair kern="49" kpx2="253"/><pair kern="49" kpx2="7809"/><pair kern="40" kpx2="355"/><pair kern="49" kpx2="7811"/><pair kern="49" kpx2="121"/><pair kern="40" kpx2="539"/><pair kern="49" kpx2="120"/></kerning><kerning kpx1="7908"><pair kern="-9" kpx2="65"/><pair kern="-9" kpx2="197"/><pair kern="-9" kpx2="196"/><pair kern="-9" kpx2="193"/><pair kern="-9" kpx2="192"/><pair kern="-9" kpx2="195"/><pair kern="-9" kpx2="194"/><pair kern="-9" kpx2="258"/><pair kern="-9" kpx2="256"/><pair kern="-9" kpx2="260"/><pair kern="-20" kpx2="8218"/><pair kern="-20" kpx2="8222"/><pair kern="-9" kpx2="7680"/><pair kern="-9" kpx2="7862"/><pair kern="-9" kpx2="7860"/><pair kern="-9" kpx2="7858"/><pair kern="-9" kpx2="506"/><pair kern="-9" kpx2="7856"/><pair kern="-20" kpx2="46"/><pair kern="-20" kpx2="44"/><pair kern="-9" kpx2="7846"/><pair kern="-9" kpx2="7844"/><pair kern="-9" kpx2="7842"/><pair kern="-9" kpx2="7840"/><pair kern="-9" kpx2="7854"/><pair kern="-9" kpx2="7852"/><pair kern="-9" kpx2="7850"/><pair kern="-9" kpx2="7848"/></kerning><kerning kpx1="7915"><pair kern="49" kpx2="102"/><pair kern="49" kpx2="373"/><pair kern="49" kpx2="7925"/><pair kern="49" kpx2="64257"/><pair kern="49" kpx2="64256"/><pair kern="49" kpx2="64259"/><pair kern="49" kpx2="64258"/><pair kern="49" kpx2="64260"/><pair kern="49" kpx2="119"/><pair kern="49" kpx2="118"/><pair kern="49" kpx2="357"/><pair kern="49" kpx2="116"/><pair kern="49" kpx2="253"/><pair kern="49" kpx2="7809"/><pair kern="49" kpx2="355"/><pair kern="49" kpx2="7811"/><pair kern="49" kpx2="121"/><pair kern="49" kpx2="539"/><pair kern="49" kpx2="120"/></kerning><kerning kpx1="7913"><pair kern="49" kpx2="102"/><pair kern="49" kpx2="373"/><pair kern="49" kpx2="7925"/><pair kern="49" kpx2="64257"/><pair kern="49" kpx2="64256"/><pair kern="49" kpx2="64259"/><pair kern="49" kpx2="64258"/><pair kern="49" kpx2="64260"/><pair kern="49" kpx2="119"/><pair kern="49" kpx2="118"/><pair kern="49" kpx2="357"/><pair kern="49" kpx2="116"/><pair kern="49" kpx2="253"/><pair kern="49" kpx2="7809"/><pair kern="49" kpx2="355"/><pair kern="49" kpx2="7811"/><pair kern="49" kpx2="121"/><pair kern="49" kpx2="539"/><pair kern="49" kpx2="120"/></kerning><kerning kpx1="7919"><pair kern="49" kpx2="102"/><pair kern="49" kpx2="373"/><pair kern="49" kpx2="7925"/><pair kern="49" kpx2="64257"/><pair kern="49" kpx2="64256"/><pair kern="49" kpx2="64259"/><pair kern="49" kpx2="64258"/><pair kern="49" kpx2="64260"/><pair kern="49" kpx2="119"/><pair kern="49" kpx2="118"/><pair kern="49" kpx2="357"/><pair kern="49" kpx2="116"/><pair kern="49" kpx2="253"/><pair kern="49" kpx2="7809"/><pair kern="49" kpx2="355"/><pair kern="49" kpx2="7811"/><pair kern="49" kpx2="121"/><pair kern="49" kpx2="539"/><pair kern="49" kpx2="120"/></kerning><kerning kpx1="7917"><pair kern="49" kpx2="102"/><pair kern="49" kpx2="373"/><pair kern="49" kpx2="7925"/><pair kern="49" kpx2="64257"/><pair kern="49" kpx2="64256"/><pair kern="49" kpx2="64259"/><pair kern="49" kpx2="64258"/><pair kern="49" kpx2="64260"/><pair kern="49" kpx2="119"/><pair kern="49" kpx2="118"/><pair kern="49" kpx2="357"/><pair kern="49" kpx2="116"/><pair kern="49" kpx2="253"/><pair kern="49" kpx2="7809"/><pair kern="49" kpx2="355"/><pair kern="49" kpx2="7811"/><pair kern="49" kpx2="121"/><pair kern="49" kpx2="539"/><pair kern="49" kpx2="120"/></kerning><kerning kpx1="7812"><pair kern="-20" kpx2="7889"/><pair kern="-20" kpx2="275"/><pair kern="-9" kpx2="7888"/><pair kern="-20" kpx2="273"/><pair kern="-9" kpx2="7890"/><pair kern="-20" kpx2="7893"/><pair kern="-20" kpx2="279"/><pair kern="-9" kpx2="7892"/><pair kern="-20" kpx2="7895"/><pair kern="-20" kpx2="277"/><pair kern="-9" kpx2="7894"/><pair kern="-20" kpx2="7897"/><pair kern="-20" kpx2="283"/><pair kern="-9" kpx2="7896"/><pair kern="-20" kpx2="7899"/><pair kern="-20" kpx2="281"/><pair kern="-9" kpx2="7898"/><pair kern="-20" kpx2="7901"/><pair kern="-9" kpx2="287"/><pair kern="-9" kpx2="7900"/><pair kern="-9" kpx2="286"/><pair kern="-20" kpx2="7903"/><pair kern="-9" kpx2="285"/><pair kern="-9" kpx2="7902"/><pair kern="-9" kpx2="284"/><pair kern="-40" kpx2="258"/><pair kern="-20" kpx2="259"/><pair kern="-40" kpx2="256"/><pair kern="-20" kpx2="7875"/><pair kern="-20" kpx2="257"/><pair kern="-9" kpx2="262"/><pair kern="-20" kpx2="7877"/><pair kern="-20" kpx2="263"/><pair kern="-40" kpx2="260"/><pair kern="-20" kpx2="7879"/><pair kern="-20" kpx2="261"/><pair kern="-9" kpx2="266"/><pair kern="-20" kpx2="267"/><pair kern="-9" kpx2="264"/><pair kern="-20" kpx2="265"/><pair kern="-9" kpx2="7884"/><pair kern="-20" kpx2="7885"/><pair kern="-20" kpx2="271"/><pair kern="-9" kpx2="7886"/><pair kern="-9" kpx2="268"/><pair kern="-20" kpx2="7887"/><pair kern="-20" kpx2="269"/><pair kern="-9" kpx2="7921"/><pair kern="-9" kpx2="312"/><pair kern="-49" kpx2="46"/><pair kern="-49" kpx2="44"/><pair kern="-9" kpx2="7906"/><pair kern="-9" kpx2="288"/><pair kern="-20" kpx2="7907"/><pair kern="-9" kpx2="289"/><pair kern="-9" kpx2="7904"/><pair kern="-9" kpx2="290"/><pair kern="-20" kpx2="7905"/><pair kern="-9" kpx2="291"/><pair kern="-9" kpx2="7911"/><pair kern="-9" kpx2="7909"/><pair kern="-9" kpx2="7915"/><pair kern="-9" kpx2="7913"/><pair kern="-9" kpx2="537"/><pair kern="20" kpx2="63"/><pair kern="-9" kpx2="7919"/><pair kern="-9" kpx2="7917"/><pair kern="-9" kpx2="343"/><pair kern="-9" kpx2="341"/><pair kern="-9" kpx2="71"/><pair kern="-20" kpx2="339"/><pair kern="-40" kpx2="65"/><pair kern="-9" kpx2="338"/><pair kern="-20" kpx2="337"/><pair kern="-9" kpx2="67"/><pair kern="-9" kpx2="336"/><pair kern="-9" kpx2="351"/><pair kern="-9" kpx2="79"/><pair kern="-9" kpx2="347"/><pair kern="-9" kpx2="326"/><pair kern="-9" kpx2="324"/><pair kern="-9" kpx2="81"/><pair kern="-9" kpx2="334"/><pair kern="-49" kpx2="8218"/><pair kern="-20" kpx2="335"/><pair kern="-9" kpx2="332"/><pair kern="-20" kpx2="333"/><pair kern="-49" kpx2="8222"/><pair kern="-9" kpx2="331"/><pair kern="-20" kpx2="7863"/><pair kern="-40" kpx2="7862"/><pair kern="-9" kpx2="103"/><pair kern="-20" kpx2="7861"/><pair kern="-20" kpx2="100"/><pair kern="-40" kpx2="7860"/><pair kern="-20" kpx2="101"/><pair kern="-20" kpx2="7859"/><pair kern="-9" kpx2="369"/><pair kern="-40" kpx2="7858"/><pair kern="-20" kpx2="99"/><pair kern="-20" kpx2="7857"/><pair kern="-9" kpx2="371"/><pair kern="-40" kpx2="7856"/><pair kern="-20" kpx2="97"/><pair kern="-20" kpx2="7871"/><pair kern="-9" kpx2="110"/><pair kern="-20" kpx2="111"/><pair kern="-20" kpx2="7869"/><pair kern="-9" kpx2="109"/><pair kern="-20" kpx2="7867"/><pair kern="-20" kpx2="7865"/><pair kern="-40" kpx2="7846"/><pair kern="-40" kpx2="7844"/><pair kern="-9" kpx2="117"/><pair kern="-20" kpx2="7845"/><pair kern="-40" kpx2="7842"/><pair kern="-9" kpx2="115"/><pair kern="-20" kpx2="7843"/><pair kern="-9" kpx2="114"/><pair kern="-40" kpx2="7840"/><pair kern="-20" kpx2="113"/><pair kern="-20" kpx2="7841"/><pair kern="-9" kpx2="112"/><pair kern="-40" kpx2="7854"/><pair kern="-20" kpx2="7855"/><pair kern="-9" kpx2="365"/><pair kern="-40" kpx2="7852"/><pair kern="-20" kpx2="7853"/><pair kern="-9" kpx2="367"/><pair kern="-40" kpx2="7850"/><pair kern="-20" kpx2="7851"/><pair kern="-9" kpx2="361"/><pair kern="-40" kpx2="7848"/><pair kern="-20" kpx2="7849"/><pair kern="-9" kpx2="363"/><pair kern="-9" kpx2="432"/><pair kern="-20" kpx2="417"/><pair kern="-9" kpx2="416"/><pair kern="-40" kpx2="197"/><pair kern="-40" kpx2="196"/><pair kern="-9" kpx2="199"/><pair kern="-40" kpx2="193"/><pair kern="-40" kpx2="192"/><pair kern="-40" kpx2="195"/><pair kern="-40" kpx2="194"/><pair kern="-9" kpx2="216"/><pair kern="-9" kpx2="212"/><pair kern="-9" kpx2="213"/><pair kern="-9" kpx2="214"/><pair kern="-20" kpx2="7681"/><pair kern="-40" kpx2="7680"/><pair kern="-9" kpx2="210"/><pair kern="-9" kpx2="211"/><pair kern="-9" kpx2="7743"/><pair kern="-20" kpx2="509"/><pair kern="-9" kpx2="510"/><pair kern="-20" kpx2="511"/><pair kern="-20" kpx2="235"/><pair kern="-20" kpx2="234"/><pair kern="-40" kpx2="506"/><pair kern="-20" kpx2="233"/><pair kern="-20" kpx2="507"/><pair kern="-20" kpx2="232"/><pair kern="-20" kpx2="231"/><pair kern="-20" kpx2="230"/><pair kern="-20" kpx2="229"/><pair kern="-20" kpx2="228"/><pair kern="-20" kpx2="227"/><pair kern="-20" kpx2="226"/><pair kern="-20" kpx2="225"/><pair kern="-20" kpx2="224"/><pair kern="-9" kpx2="252"/><pair kern="-9" kpx2="250"/><pair kern="-9" kpx2="251"/><pair kern="-20" kpx2="248"/><pair kern="-9" kpx2="249"/><pair kern="-20" kpx2="246"/><pair kern="-20" kpx2="244"/><pair kern="-20" kpx2="245"/><pair kern="-20" kpx2="242"/><pair kern="-20" kpx2="243"/></kerning><kerning kpx1="7813"><pair kern="40" kpx2="34"/><pair kern="40" kpx2="39"/><pair kern="-40" kpx2="8218"/><pair kern="40" kpx2="8217"/><pair kern="20" kpx2="63"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="8222"/><pair kern="40" kpx2="8221"/><pair kern="-40" kpx2="44"/></kerning><kerning kpx1="7808"><pair kern="-20" kpx2="7889"/><pair kern="-20" kpx2="275"/><pair kern="-9" kpx2="7888"/><pair kern="-20" kpx2="273"/><pair kern="-9" kpx2="7890"/><pair kern="-20" kpx2="7893"/><pair kern="-20" kpx2="279"/><pair kern="-9" kpx2="7892"/><pair kern="-20" kpx2="7895"/><pair kern="-20" kpx2="277"/><pair kern="-9" kpx2="7894"/><pair kern="-20" kpx2="7897"/><pair kern="-20" kpx2="283"/><pair kern="-9" kpx2="7896"/><pair kern="-20" kpx2="7899"/><pair kern="-20" kpx2="281"/><pair kern="-9" kpx2="7898"/><pair kern="-20" kpx2="7901"/><pair kern="-9" kpx2="287"/><pair kern="-9" kpx2="7900"/><pair kern="-9" kpx2="286"/><pair kern="-20" kpx2="7903"/><pair kern="-9" kpx2="285"/><pair kern="-9" kpx2="7902"/><pair kern="-9" kpx2="284"/><pair kern="-40" kpx2="258"/><pair kern="-20" kpx2="259"/><pair kern="-40" kpx2="256"/><pair kern="-20" kpx2="7875"/><pair kern="-20" kpx2="257"/><pair kern="-9" kpx2="262"/><pair kern="-20" kpx2="7877"/><pair kern="-20" kpx2="263"/><pair kern="-40" kpx2="260"/><pair kern="-20" kpx2="7879"/><pair kern="-20" kpx2="261"/><pair kern="-9" kpx2="266"/><pair kern="-20" kpx2="267"/><pair kern="-9" kpx2="264"/><pair kern="-20" kpx2="265"/><pair kern="-9" kpx2="7884"/><pair kern="-20" kpx2="7885"/><pair kern="-20" kpx2="271"/><pair kern="-9" kpx2="7886"/><pair kern="-9" kpx2="268"/><pair kern="-20" kpx2="7887"/><pair kern="-20" kpx2="269"/><pair kern="-9" kpx2="7921"/><pair kern="-9" kpx2="312"/><pair kern="-49" kpx2="46"/><pair kern="-49" kpx2="44"/><pair kern="-9" kpx2="7906"/><pair kern="-9" kpx2="288"/><pair kern="-20" kpx2="7907"/><pair kern="-9" kpx2="289"/><pair kern="-9" kpx2="7904"/><pair kern="-9" kpx2="290"/><pair kern="-20" kpx2="7905"/><pair kern="-9" kpx2="291"/><pair kern="-9" kpx2="7911"/><pair kern="-9" kpx2="7909"/><pair kern="-9" kpx2="7915"/><pair kern="-9" kpx2="7913"/><pair kern="-9" kpx2="537"/><pair kern="20" kpx2="63"/><pair kern="-9" kpx2="7919"/><pair kern="-9" kpx2="7917"/><pair kern="-9" kpx2="343"/><pair kern="-9" kpx2="341"/><pair kern="-9" kpx2="71"/><pair kern="-20" kpx2="339"/><pair kern="-40" kpx2="65"/><pair kern="-9" kpx2="338"/><pair kern="-20" kpx2="337"/><pair kern="-9" kpx2="67"/><pair kern="-9" kpx2="336"/><pair kern="-9" kpx2="351"/><pair kern="-9" kpx2="79"/><pair kern="-9" kpx2="347"/><pair kern="-9" kpx2="326"/><pair kern="-9" kpx2="324"/><pair kern="-9" kpx2="81"/><pair kern="-9" kpx2="334"/><pair kern="-49" kpx2="8218"/><pair kern="-20" kpx2="335"/><pair kern="-9" kpx2="332"/><pair kern="-20" kpx2="333"/><pair kern="-49" kpx2="8222"/><pair kern="-9" kpx2="331"/><pair kern="-20" kpx2="7863"/><pair kern="-40" kpx2="7862"/><pair kern="-9" kpx2="103"/><pair kern="-20" kpx2="7861"/><pair kern="-20" kpx2="100"/><pair kern="-40" kpx2="7860"/><pair kern="-20" kpx2="101"/><pair kern="-20" kpx2="7859"/><pair kern="-9" kpx2="369"/><pair kern="-40" kpx2="7858"/><pair kern="-20" kpx2="99"/><pair kern="-20" kpx2="7857"/><pair kern="-9" kpx2="371"/><pair kern="-40" kpx2="7856"/><pair kern="-20" kpx2="97"/><pair kern="-20" kpx2="7871"/><pair kern="-9" kpx2="110"/><pair kern="-20" kpx2="111"/><pair kern="-20" kpx2="7869"/><pair kern="-9" kpx2="109"/><pair kern="-20" kpx2="7867"/><pair kern="-20" kpx2="7865"/><pair kern="-40" kpx2="7846"/><pair kern="-40" kpx2="7844"/><pair kern="-9" kpx2="117"/><pair kern="-20" kpx2="7845"/><pair kern="-40" kpx2="7842"/><pair kern="-9" kpx2="115"/><pair kern="-20" kpx2="7843"/><pair kern="-9" kpx2="114"/><pair kern="-40" kpx2="7840"/><pair kern="-20" kpx2="113"/><pair kern="-20" kpx2="7841"/><pair kern="-9" kpx2="112"/><pair kern="-40" kpx2="7854"/><pair kern="-20" kpx2="7855"/><pair kern="-9" kpx2="365"/><pair kern="-40" kpx2="7852"/><pair kern="-20" kpx2="7853"/><pair kern="-9" kpx2="367"/><pair kern="-40" kpx2="7850"/><pair kern="-20" kpx2="7851"/><pair kern="-9" kpx2="361"/><pair kern="-40" kpx2="7848"/><pair kern="-20" kpx2="7849"/><pair kern="-9" kpx2="363"/><pair kern="-9" kpx2="432"/><pair kern="-20" kpx2="417"/><pair kern="-9" kpx2="416"/><pair kern="-40" kpx2="197"/><pair kern="-40" kpx2="196"/><pair kern="-9" kpx2="199"/><pair kern="-40" kpx2="193"/><pair kern="-40" kpx2="192"/><pair kern="-40" kpx2="195"/><pair kern="-40" kpx2="194"/><pair kern="-9" kpx2="216"/><pair kern="-9" kpx2="212"/><pair kern="-9" kpx2="213"/><pair kern="-9" kpx2="214"/><pair kern="-20" kpx2="7681"/><pair kern="-40" kpx2="7680"/><pair kern="-9" kpx2="210"/><pair kern="-9" kpx2="211"/><pair kern="-9" kpx2="7743"/><pair kern="-20" kpx2="509"/><pair kern="-9" kpx2="510"/><pair kern="-20" kpx2="511"/><pair kern="-20" kpx2="235"/><pair kern="-20" kpx2="234"/><pair kern="-40" kpx2="506"/><pair kern="-20" kpx2="233"/><pair kern="-20" kpx2="507"/><pair kern="-20" kpx2="232"/><pair kern="-20" kpx2="231"/><pair kern="-20" kpx2="230"/><pair kern="-20" kpx2="229"/><pair kern="-20" kpx2="228"/><pair kern="-20" kpx2="227"/><pair kern="-20" kpx2="226"/><pair kern="-20" kpx2="225"/><pair kern="-20" kpx2="224"/><pair kern="-9" kpx2="252"/><pair kern="-9" kpx2="250"/><pair kern="-9" kpx2="251"/><pair kern="-20" kpx2="248"/><pair kern="-9" kpx2="249"/><pair kern="-20" kpx2="246"/><pair kern="-20" kpx2="244"/><pair kern="-20" kpx2="245"/><pair kern="-20" kpx2="242"/><pair kern="-20" kpx2="243"/></kerning><kerning kpx1="7809"><pair kern="40" kpx2="34"/><pair kern="40" kpx2="39"/><pair kern="-40" kpx2="8218"/><pair kern="40" kpx2="8217"/><pair kern="20" kpx2="63"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="8222"/><pair kern="40" kpx2="8221"/><pair kern="-40" kpx2="44"/></kerning><kerning kpx1="7810"><pair kern="-20" kpx2="7889"/><pair kern="-20" kpx2="275"/><pair kern="-9" kpx2="7888"/><pair kern="-20" kpx2="273"/><pair kern="-9" kpx2="7890"/><pair kern="-20" kpx2="7893"/><pair kern="-20" kpx2="279"/><pair kern="-9" kpx2="7892"/><pair kern="-20" kpx2="7895"/><pair kern="-20" kpx2="277"/><pair kern="-9" kpx2="7894"/><pair kern="-20" kpx2="7897"/><pair kern="-20" kpx2="283"/><pair kern="-9" kpx2="7896"/><pair kern="-20" kpx2="7899"/><pair kern="-20" kpx2="281"/><pair kern="-9" kpx2="7898"/><pair kern="-20" kpx2="7901"/><pair kern="-9" kpx2="287"/><pair kern="-9" kpx2="7900"/><pair kern="-9" kpx2="286"/><pair kern="-20" kpx2="7903"/><pair kern="-9" kpx2="285"/><pair kern="-9" kpx2="7902"/><pair kern="-9" kpx2="284"/><pair kern="-40" kpx2="258"/><pair kern="-20" kpx2="259"/><pair kern="-40" kpx2="256"/><pair kern="-20" kpx2="7875"/><pair kern="-20" kpx2="257"/><pair kern="-9" kpx2="262"/><pair kern="-20" kpx2="7877"/><pair kern="-20" kpx2="263"/><pair kern="-40" kpx2="260"/><pair kern="-20" kpx2="7879"/><pair kern="-20" kpx2="261"/><pair kern="-9" kpx2="266"/><pair kern="-20" kpx2="267"/><pair kern="-9" kpx2="264"/><pair kern="-20" kpx2="265"/><pair kern="-9" kpx2="7884"/><pair kern="-20" kpx2="7885"/><pair kern="-20" kpx2="271"/><pair kern="-9" kpx2="7886"/><pair kern="-9" kpx2="268"/><pair kern="-20" kpx2="7887"/><pair kern="-20" kpx2="269"/><pair kern="-9" kpx2="7921"/><pair kern="-9" kpx2="312"/><pair kern="-49" kpx2="46"/><pair kern="-49" kpx2="44"/><pair kern="-9" kpx2="7906"/><pair kern="-9" kpx2="288"/><pair kern="-20" kpx2="7907"/><pair kern="-9" kpx2="289"/><pair kern="-9" kpx2="7904"/><pair kern="-9" kpx2="290"/><pair kern="-20" kpx2="7905"/><pair kern="-9" kpx2="291"/><pair kern="-9" kpx2="7911"/><pair kern="-9" kpx2="7909"/><pair kern="-9" kpx2="7915"/><pair kern="-9" kpx2="7913"/><pair kern="-9" kpx2="537"/><pair kern="20" kpx2="63"/><pair kern="-9" kpx2="7919"/><pair kern="-9" kpx2="7917"/><pair kern="-9" kpx2="343"/><pair kern="-9" kpx2="341"/><pair kern="-9" kpx2="71"/><pair kern="-20" kpx2="339"/><pair kern="-40" kpx2="65"/><pair kern="-9" kpx2="338"/><pair kern="-20" kpx2="337"/><pair kern="-9" kpx2="67"/><pair kern="-9" kpx2="336"/><pair kern="-9" kpx2="351"/><pair kern="-9" kpx2="79"/><pair kern="-9" kpx2="347"/><pair kern="-9" kpx2="326"/><pair kern="-9" kpx2="324"/><pair kern="-9" kpx2="81"/><pair kern="-9" kpx2="334"/><pair kern="-49" kpx2="8218"/><pair kern="-20" kpx2="335"/><pair kern="-9" kpx2="332"/><pair kern="-20" kpx2="333"/><pair kern="-49" kpx2="8222"/><pair kern="-9" kpx2="331"/><pair kern="-20" kpx2="7863"/><pair kern="-40" kpx2="7862"/><pair kern="-9" kpx2="103"/><pair kern="-20" kpx2="7861"/><pair kern="-20" kpx2="100"/><pair kern="-40" kpx2="7860"/><pair kern="-20" kpx2="101"/><pair kern="-20" kpx2="7859"/><pair kern="-9" kpx2="369"/><pair kern="-40" kpx2="7858"/><pair kern="-20" kpx2="99"/><pair kern="-20" kpx2="7857"/><pair kern="-9" kpx2="371"/><pair kern="-40" kpx2="7856"/><pair kern="-20" kpx2="97"/><pair kern="-20" kpx2="7871"/><pair kern="-9" kpx2="110"/><pair kern="-20" kpx2="111"/><pair kern="-20" kpx2="7869"/><pair kern="-9" kpx2="109"/><pair kern="-20" kpx2="7867"/><pair kern="-20" kpx2="7865"/><pair kern="-40" kpx2="7846"/><pair kern="-40" kpx2="7844"/><pair kern="-9" kpx2="117"/><pair kern="-20" kpx2="7845"/><pair kern="-40" kpx2="7842"/><pair kern="-9" kpx2="115"/><pair kern="-20" kpx2="7843"/><pair kern="-9" kpx2="114"/><pair kern="-40" kpx2="7840"/><pair kern="-20" kpx2="113"/><pair kern="-20" kpx2="7841"/><pair kern="-9" kpx2="112"/><pair kern="-40" kpx2="7854"/><pair kern="-20" kpx2="7855"/><pair kern="-9" kpx2="365"/><pair kern="-40" kpx2="7852"/><pair kern="-20" kpx2="7853"/><pair kern="-9" kpx2="367"/><pair kern="-40" kpx2="7850"/><pair kern="-20" kpx2="7851"/><pair kern="-9" kpx2="361"/><pair kern="-40" kpx2="7848"/><pair kern="-20" kpx2="7849"/><pair kern="-9" kpx2="363"/><pair kern="-9" kpx2="432"/><pair kern="-20" kpx2="417"/><pair kern="-9" kpx2="416"/><pair kern="-40" kpx2="197"/><pair kern="-40" kpx2="196"/><pair kern="-9" kpx2="199"/><pair kern="-40" kpx2="193"/><pair kern="-40" kpx2="192"/><pair kern="-40" kpx2="195"/><pair kern="-40" kpx2="194"/><pair kern="-9" kpx2="216"/><pair kern="-9" kpx2="212"/><pair kern="-9" kpx2="213"/><pair kern="-9" kpx2="214"/><pair kern="-20" kpx2="7681"/><pair kern="-40" kpx2="7680"/><pair kern="-9" kpx2="210"/><pair kern="-9" kpx2="211"/><pair kern="-9" kpx2="7743"/><pair kern="-20" kpx2="509"/><pair kern="-9" kpx2="510"/><pair kern="-20" kpx2="511"/><pair kern="-20" kpx2="235"/><pair kern="-20" kpx2="234"/><pair kern="-40" kpx2="506"/><pair kern="-20" kpx2="233"/><pair kern="-20" kpx2="507"/><pair kern="-20" kpx2="232"/><pair kern="-20" kpx2="231"/><pair kern="-20" kpx2="230"/><pair kern="-20" kpx2="229"/><pair kern="-20" kpx2="228"/><pair kern="-20" kpx2="227"/><pair kern="-20" kpx2="226"/><pair kern="-20" kpx2="225"/><pair kern="-20" kpx2="224"/><pair kern="-9" kpx2="252"/><pair kern="-9" kpx2="250"/><pair kern="-9" kpx2="251"/><pair kern="-20" kpx2="248"/><pair kern="-9" kpx2="249"/><pair kern="-20" kpx2="246"/><pair kern="-20" kpx2="244"/><pair kern="-20" kpx2="245"/><pair kern="-20" kpx2="242"/><pair kern="-20" kpx2="243"/></kerning><kerning kpx1="7811"><pair kern="40" kpx2="34"/><pair kern="40" kpx2="39"/><pair kern="-40" kpx2="8218"/><pair kern="40" kpx2="8217"/><pair kern="20" kpx2="63"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="8222"/><pair kern="40" kpx2="8221"/><pair kern="-40" kpx2="44"/></kerning><kerning kpx1="7863"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="7862"><pair kern="-20" kpx2="7888"/><pair kern="-20" kpx2="7890"/><pair kern="-20" kpx2="7892"/><pair kern="-20" kpx2="7894"/><pair kern="-20" kpx2="7896"/><pair kern="-20" kpx2="7898"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-20" kpx2="262"/><pair kern="-20" kpx2="266"/><pair kern="-20" kpx2="264"/><pair kern="-20" kpx2="7884"/><pair kern="-20" kpx2="268"/><pair kern="-20" kpx2="7886"/><pair kern="-69" kpx2="34"/><pair kern="-60" kpx2="7922"/><pair kern="-60" kpx2="7926"/><pair kern="-69" kpx2="39"/><pair kern="-60" kpx2="7924"/><pair kern="-60" kpx2="7928"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-20" kpx2="416"/><pair kern="-69" kpx2="538"/><pair kern="-20" kpx2="71"/><pair kern="-20" kpx2="338"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-20" kpx2="199"/><pair kern="-20" kpx2="79"/><pair kern="129" kpx2="74"/><pair kern="-40" kpx2="7812"/><pair kern="-60" kpx2="221"/><pair kern="-69" kpx2="84"/><pair kern="-40" kpx2="87"/><pair kern="-40" kpx2="86"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="81"/><pair kern="-40" kpx2="7808"/><pair kern="-40" kpx2="7810"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="334"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-20" kpx2="332"/><pair kern="-69" kpx2="8217"/><pair kern="-60" kpx2="89"/><pair kern="-20" kpx2="210"/><pair kern="-69" kpx2="8221"/><pair kern="-20" kpx2="211"/><pair kern="-40" kpx2="372"/><pair kern="-20" kpx2="510"/><pair kern="-60" kpx2="374"/><pair kern="-60" kpx2="376"/><pair kern="-69" kpx2="356"/><pair kern="-69" kpx2="354"/></kerning><kerning kpx1="7861"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="7860"><pair kern="-20" kpx2="7888"/><pair kern="-20" kpx2="7890"/><pair kern="-20" kpx2="7892"/><pair kern="-20" kpx2="7894"/><pair kern="-20" kpx2="7896"/><pair kern="-20" kpx2="7898"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-20" kpx2="262"/><pair kern="-20" kpx2="266"/><pair kern="-20" kpx2="264"/><pair kern="-20" kpx2="7884"/><pair kern="-20" kpx2="268"/><pair kern="-20" kpx2="7886"/><pair kern="-69" kpx2="34"/><pair kern="-60" kpx2="7922"/><pair kern="-60" kpx2="7926"/><pair kern="-69" kpx2="39"/><pair kern="-60" kpx2="7924"/><pair kern="-60" kpx2="7928"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-20" kpx2="416"/><pair kern="-69" kpx2="538"/><pair kern="-20" kpx2="71"/><pair kern="-20" kpx2="338"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-20" kpx2="199"/><pair kern="-20" kpx2="79"/><pair kern="129" kpx2="74"/><pair kern="-40" kpx2="7812"/><pair kern="-60" kpx2="221"/><pair kern="-69" kpx2="84"/><pair kern="-40" kpx2="87"/><pair kern="-40" kpx2="86"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="81"/><pair kern="-40" kpx2="7808"/><pair kern="-40" kpx2="7810"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="334"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-20" kpx2="332"/><pair kern="-69" kpx2="8217"/><pair kern="-60" kpx2="89"/><pair kern="-20" kpx2="210"/><pair kern="-69" kpx2="8221"/><pair kern="-20" kpx2="211"/><pair kern="-40" kpx2="372"/><pair kern="-20" kpx2="510"/><pair kern="-60" kpx2="374"/><pair kern="-60" kpx2="376"/><pair kern="-69" kpx2="356"/><pair kern="-69" kpx2="354"/></kerning><kerning kpx1="7859"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="7858"><pair kern="-20" kpx2="7888"/><pair kern="-20" kpx2="7890"/><pair kern="-20" kpx2="7892"/><pair kern="-20" kpx2="7894"/><pair kern="-20" kpx2="7896"/><pair kern="-20" kpx2="7898"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-20" kpx2="262"/><pair kern="-20" kpx2="266"/><pair kern="-20" kpx2="264"/><pair kern="-20" kpx2="7884"/><pair kern="-20" kpx2="268"/><pair kern="-20" kpx2="7886"/><pair kern="-69" kpx2="34"/><pair kern="-60" kpx2="7922"/><pair kern="-60" kpx2="7926"/><pair kern="-69" kpx2="39"/><pair kern="-60" kpx2="7924"/><pair kern="-60" kpx2="7928"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-20" kpx2="416"/><pair kern="-69" kpx2="538"/><pair kern="-20" kpx2="71"/><pair kern="-20" kpx2="338"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-20" kpx2="199"/><pair kern="-20" kpx2="79"/><pair kern="129" kpx2="74"/><pair kern="-40" kpx2="7812"/><pair kern="-60" kpx2="221"/><pair kern="-69" kpx2="84"/><pair kern="-40" kpx2="87"/><pair kern="-40" kpx2="86"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="81"/><pair kern="-40" kpx2="7808"/><pair kern="-40" kpx2="7810"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="334"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-20" kpx2="332"/><pair kern="-69" kpx2="8217"/><pair kern="-60" kpx2="89"/><pair kern="-20" kpx2="210"/><pair kern="-69" kpx2="8221"/><pair kern="-20" kpx2="211"/><pair kern="-40" kpx2="372"/><pair kern="-20" kpx2="510"/><pair kern="-60" kpx2="374"/><pair kern="-60" kpx2="376"/><pair kern="-69" kpx2="356"/><pair kern="-69" kpx2="354"/></kerning><kerning kpx1="7857"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="7856"><pair kern="-20" kpx2="7888"/><pair kern="-20" kpx2="7890"/><pair kern="-20" kpx2="7892"/><pair kern="-20" kpx2="7894"/><pair kern="-20" kpx2="7896"/><pair kern="-20" kpx2="7898"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-20" kpx2="262"/><pair kern="-20" kpx2="266"/><pair kern="-20" kpx2="264"/><pair kern="-20" kpx2="7884"/><pair kern="-20" kpx2="268"/><pair kern="-20" kpx2="7886"/><pair kern="-69" kpx2="34"/><pair kern="-60" kpx2="7922"/><pair kern="-60" kpx2="7926"/><pair kern="-69" kpx2="39"/><pair kern="-60" kpx2="7924"/><pair kern="-60" kpx2="7928"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-20" kpx2="416"/><pair kern="-69" kpx2="538"/><pair kern="-20" kpx2="71"/><pair kern="-20" kpx2="338"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-20" kpx2="199"/><pair kern="-20" kpx2="79"/><pair kern="129" kpx2="74"/><pair kern="-40" kpx2="7812"/><pair kern="-60" kpx2="221"/><pair kern="-69" kpx2="84"/><pair kern="-40" kpx2="87"/><pair kern="-40" kpx2="86"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="81"/><pair kern="-40" kpx2="7808"/><pair kern="-40" kpx2="7810"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="334"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-20" kpx2="332"/><pair kern="-69" kpx2="8217"/><pair kern="-60" kpx2="89"/><pair kern="-20" kpx2="210"/><pair kern="-69" kpx2="8221"/><pair kern="-20" kpx2="211"/><pair kern="-40" kpx2="372"/><pair kern="-20" kpx2="510"/><pair kern="-60" kpx2="374"/><pair kern="-60" kpx2="376"/><pair kern="-69" kpx2="356"/><pair kern="-69" kpx2="354"/></kerning><kerning kpx1="7871"><pair kern="-9" kpx2="34"/><pair kern="-20" kpx2="373"/><pair kern="-9" kpx2="39"/><pair kern="-20" kpx2="7925"/><pair kern="-9" kpx2="380"/><pair kern="-9" kpx2="382"/><pair kern="-9" kpx2="378"/><pair kern="-20" kpx2="119"/><pair kern="-20" kpx2="118"/><pair kern="-20" kpx2="253"/><pair kern="-20" kpx2="7809"/><pair kern="-20" kpx2="7811"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="122"/><pair kern="-9" kpx2="8221"/><pair kern="-20" kpx2="121"/><pair kern="-20" kpx2="120"/></kerning><kerning kpx1="7870"><pair kern="60" kpx2="74"/></kerning><kerning kpx1="7869"><pair kern="-9" kpx2="34"/><pair kern="-20" kpx2="373"/><pair kern="-9" kpx2="39"/><pair kern="-20" kpx2="7925"/><pair kern="-9" kpx2="380"/><pair kern="-9" kpx2="382"/><pair kern="-9" kpx2="378"/><pair kern="-20" kpx2="119"/><pair kern="-20" kpx2="118"/><pair kern="-20" kpx2="253"/><pair kern="-20" kpx2="7809"/><pair kern="-20" kpx2="7811"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="122"/><pair kern="-9" kpx2="8221"/><pair kern="-20" kpx2="121"/><pair kern="-20" kpx2="120"/></kerning><kerning kpx1="7868"><pair kern="60" kpx2="74"/></kerning><kerning kpx1="7867"><pair kern="-9" kpx2="34"/><pair kern="-20" kpx2="373"/><pair kern="-9" kpx2="39"/><pair kern="-20" kpx2="7925"/><pair kern="-9" kpx2="380"/><pair kern="-9" kpx2="382"/><pair kern="-9" kpx2="378"/><pair kern="-20" kpx2="119"/><pair kern="-20" kpx2="118"/><pair kern="-20" kpx2="253"/><pair kern="-20" kpx2="7809"/><pair kern="-20" kpx2="7811"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="122"/><pair kern="-9" kpx2="8221"/><pair kern="-20" kpx2="121"/><pair kern="-20" kpx2="120"/></kerning><kerning kpx1="7866"><pair kern="60" kpx2="74"/></kerning><kerning kpx1="7865"><pair kern="-9" kpx2="34"/><pair kern="-20" kpx2="373"/><pair kern="-9" kpx2="39"/><pair kern="-20" kpx2="7925"/><pair kern="-9" kpx2="380"/><pair kern="-9" kpx2="382"/><pair kern="-9" kpx2="378"/><pair kern="-20" kpx2="119"/><pair kern="-20" kpx2="118"/><pair kern="-20" kpx2="253"/><pair kern="-20" kpx2="7809"/><pair kern="-20" kpx2="7811"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="122"/><pair kern="-9" kpx2="8221"/><pair kern="-20" kpx2="121"/><pair kern="-20" kpx2="120"/></kerning><kerning kpx1="7864"><pair kern="60" kpx2="74"/></kerning><kerning kpx1="7846"><pair kern="-20" kpx2="7888"/><pair kern="-20" kpx2="7890"/><pair kern="-20" kpx2="7892"/><pair kern="-20" kpx2="7894"/><pair kern="-20" kpx2="7896"/><pair kern="-20" kpx2="7898"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-20" kpx2="262"/><pair kern="-20" kpx2="266"/><pair kern="-20" kpx2="264"/><pair kern="-20" kpx2="7884"/><pair kern="-20" kpx2="268"/><pair kern="-20" kpx2="7886"/><pair kern="-69" kpx2="34"/><pair kern="-60" kpx2="7922"/><pair kern="-60" kpx2="7926"/><pair kern="-69" kpx2="39"/><pair kern="-60" kpx2="7924"/><pair kern="-60" kpx2="7928"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-20" kpx2="416"/><pair kern="-69" kpx2="538"/><pair kern="-20" kpx2="71"/><pair kern="-20" kpx2="338"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-20" kpx2="199"/><pair kern="-20" kpx2="79"/><pair kern="129" kpx2="74"/><pair kern="-40" kpx2="7812"/><pair kern="-60" kpx2="221"/><pair kern="-69" kpx2="84"/><pair kern="-40" kpx2="87"/><pair kern="-40" kpx2="86"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="81"/><pair kern="-40" kpx2="7808"/><pair kern="-40" kpx2="7810"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="334"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-20" kpx2="332"/><pair kern="-69" kpx2="8217"/><pair kern="-60" kpx2="89"/><pair kern="-20" kpx2="210"/><pair kern="-69" kpx2="8221"/><pair kern="-20" kpx2="211"/><pair kern="-40" kpx2="372"/><pair kern="-20" kpx2="510"/><pair kern="-60" kpx2="374"/><pair kern="-60" kpx2="376"/><pair kern="-69" kpx2="356"/><pair kern="-69" kpx2="354"/></kerning><kerning kpx1="7847"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="7844"><pair kern="-20" kpx2="7888"/><pair kern="-20" kpx2="7890"/><pair kern="-20" kpx2="7892"/><pair kern="-20" kpx2="7894"/><pair kern="-20" kpx2="7896"/><pair kern="-20" kpx2="7898"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-20" kpx2="262"/><pair kern="-20" kpx2="266"/><pair kern="-20" kpx2="264"/><pair kern="-20" kpx2="7884"/><pair kern="-20" kpx2="268"/><pair kern="-20" kpx2="7886"/><pair kern="-69" kpx2="34"/><pair kern="-60" kpx2="7922"/><pair kern="-60" kpx2="7926"/><pair kern="-69" kpx2="39"/><pair kern="-60" kpx2="7924"/><pair kern="-60" kpx2="7928"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-20" kpx2="416"/><pair kern="-69" kpx2="538"/><pair kern="-20" kpx2="71"/><pair kern="-20" kpx2="338"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-20" kpx2="199"/><pair kern="-20" kpx2="79"/><pair kern="129" kpx2="74"/><pair kern="-40" kpx2="7812"/><pair kern="-60" kpx2="221"/><pair kern="-69" kpx2="84"/><pair kern="-40" kpx2="87"/><pair kern="-40" kpx2="86"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="81"/><pair kern="-40" kpx2="7808"/><pair kern="-40" kpx2="7810"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="334"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-20" kpx2="332"/><pair kern="-69" kpx2="8217"/><pair kern="-60" kpx2="89"/><pair kern="-20" kpx2="210"/><pair kern="-69" kpx2="8221"/><pair kern="-20" kpx2="211"/><pair kern="-40" kpx2="372"/><pair kern="-20" kpx2="510"/><pair kern="-60" kpx2="374"/><pair kern="-60" kpx2="376"/><pair kern="-69" kpx2="356"/><pair kern="-69" kpx2="354"/></kerning><kerning kpx1="7845"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="7842"><pair kern="-20" kpx2="7888"/><pair kern="-20" kpx2="7890"/><pair kern="-20" kpx2="7892"/><pair kern="-20" kpx2="7894"/><pair kern="-20" kpx2="7896"/><pair kern="-20" kpx2="7898"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-20" kpx2="262"/><pair kern="-20" kpx2="266"/><pair kern="-20" kpx2="264"/><pair kern="-20" kpx2="7884"/><pair kern="-20" kpx2="268"/><pair kern="-20" kpx2="7886"/><pair kern="-69" kpx2="34"/><pair kern="-60" kpx2="7922"/><pair kern="-60" kpx2="7926"/><pair kern="-69" kpx2="39"/><pair kern="-60" kpx2="7924"/><pair kern="-60" kpx2="7928"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-20" kpx2="416"/><pair kern="-69" kpx2="538"/><pair kern="-20" kpx2="71"/><pair kern="-20" kpx2="338"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-20" kpx2="199"/><pair kern="-20" kpx2="79"/><pair kern="129" kpx2="74"/><pair kern="-40" kpx2="7812"/><pair kern="-60" kpx2="221"/><pair kern="-69" kpx2="84"/><pair kern="-40" kpx2="87"/><pair kern="-40" kpx2="86"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="81"/><pair kern="-40" kpx2="7808"/><pair kern="-40" kpx2="7810"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="334"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-20" kpx2="332"/><pair kern="-69" kpx2="8217"/><pair kern="-60" kpx2="89"/><pair kern="-20" kpx2="210"/><pair kern="-69" kpx2="8221"/><pair kern="-20" kpx2="211"/><pair kern="-40" kpx2="372"/><pair kern="-20" kpx2="510"/><pair kern="-60" kpx2="374"/><pair kern="-60" kpx2="376"/><pair kern="-69" kpx2="356"/><pair kern="-69" kpx2="354"/></kerning><kerning kpx1="8486"><pair kern="-9" kpx2="939"/><pair kern="-9" kpx2="978"/><pair kern="-9" kpx2="933"/><pair kern="-20" kpx2="932"/></kerning><kerning kpx1="7843"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="7840"><pair kern="-20" kpx2="7888"/><pair kern="-20" kpx2="7890"/><pair kern="-20" kpx2="7892"/><pair kern="-20" kpx2="7894"/><pair kern="-20" kpx2="7896"/><pair kern="-20" kpx2="7898"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-20" kpx2="262"/><pair kern="-20" kpx2="266"/><pair kern="-20" kpx2="264"/><pair kern="-20" kpx2="7884"/><pair kern="-20" kpx2="268"/><pair kern="-20" kpx2="7886"/><pair kern="-69" kpx2="34"/><pair kern="-60" kpx2="7922"/><pair kern="-60" kpx2="7926"/><pair kern="-69" kpx2="39"/><pair kern="-60" kpx2="7924"/><pair kern="-60" kpx2="7928"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-20" kpx2="416"/><pair kern="-69" kpx2="538"/><pair kern="-20" kpx2="71"/><pair kern="-20" kpx2="338"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-20" kpx2="199"/><pair kern="-20" kpx2="79"/><pair kern="129" kpx2="74"/><pair kern="-40" kpx2="7812"/><pair kern="-60" kpx2="221"/><pair kern="-69" kpx2="84"/><pair kern="-40" kpx2="87"/><pair kern="-40" kpx2="86"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="81"/><pair kern="-40" kpx2="7808"/><pair kern="-40" kpx2="7810"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="334"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-20" kpx2="332"/><pair kern="-69" kpx2="8217"/><pair kern="-60" kpx2="89"/><pair kern="-20" kpx2="210"/><pair kern="-69" kpx2="8221"/><pair kern="-20" kpx2="211"/><pair kern="-40" kpx2="372"/><pair kern="-20" kpx2="510"/><pair kern="-60" kpx2="374"/><pair kern="-60" kpx2="376"/><pair kern="-69" kpx2="356"/><pair kern="-69" kpx2="354"/></kerning><kerning kpx1="7841"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="7854"><pair kern="-20" kpx2="7888"/><pair kern="-20" kpx2="7890"/><pair kern="-20" kpx2="7892"/><pair kern="-20" kpx2="7894"/><pair kern="-20" kpx2="7896"/><pair kern="-20" kpx2="7898"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-20" kpx2="262"/><pair kern="-20" kpx2="266"/><pair kern="-20" kpx2="264"/><pair kern="-20" kpx2="7884"/><pair kern="-20" kpx2="268"/><pair kern="-20" kpx2="7886"/><pair kern="-69" kpx2="34"/><pair kern="-60" kpx2="7922"/><pair kern="-60" kpx2="7926"/><pair kern="-69" kpx2="39"/><pair kern="-60" kpx2="7924"/><pair kern="-60" kpx2="7928"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-20" kpx2="416"/><pair kern="-69" kpx2="538"/><pair kern="-20" kpx2="71"/><pair kern="-20" kpx2="338"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-20" kpx2="199"/><pair kern="-20" kpx2="79"/><pair kern="129" kpx2="74"/><pair kern="-40" kpx2="7812"/><pair kern="-60" kpx2="221"/><pair kern="-69" kpx2="84"/><pair kern="-40" kpx2="87"/><pair kern="-40" kpx2="86"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="81"/><pair kern="-40" kpx2="7808"/><pair kern="-40" kpx2="7810"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="334"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-20" kpx2="332"/><pair kern="-69" kpx2="8217"/><pair kern="-60" kpx2="89"/><pair kern="-20" kpx2="210"/><pair kern="-69" kpx2="8221"/><pair kern="-20" kpx2="211"/><pair kern="-40" kpx2="372"/><pair kern="-20" kpx2="510"/><pair kern="-60" kpx2="374"/><pair kern="-60" kpx2="376"/><pair kern="-69" kpx2="356"/><pair kern="-69" kpx2="354"/></kerning><kerning kpx1="7855"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="7852"><pair kern="-20" kpx2="7888"/><pair kern="-20" kpx2="7890"/><pair kern="-20" kpx2="7892"/><pair kern="-20" kpx2="7894"/><pair kern="-20" kpx2="7896"/><pair kern="-20" kpx2="7898"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-20" kpx2="262"/><pair kern="-20" kpx2="266"/><pair kern="-20" kpx2="264"/><pair kern="-20" kpx2="7884"/><pair kern="-20" kpx2="268"/><pair kern="-20" kpx2="7886"/><pair kern="-69" kpx2="34"/><pair kern="-60" kpx2="7922"/><pair kern="-60" kpx2="7926"/><pair kern="-69" kpx2="39"/><pair kern="-60" kpx2="7924"/><pair kern="-60" kpx2="7928"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-20" kpx2="416"/><pair kern="-69" kpx2="538"/><pair kern="-20" kpx2="71"/><pair kern="-20" kpx2="338"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-20" kpx2="199"/><pair kern="-20" kpx2="79"/><pair kern="129" kpx2="74"/><pair kern="-40" kpx2="7812"/><pair kern="-60" kpx2="221"/><pair kern="-69" kpx2="84"/><pair kern="-40" kpx2="87"/><pair kern="-40" kpx2="86"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="81"/><pair kern="-40" kpx2="7808"/><pair kern="-40" kpx2="7810"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="334"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-20" kpx2="332"/><pair kern="-69" kpx2="8217"/><pair kern="-60" kpx2="89"/><pair kern="-20" kpx2="210"/><pair kern="-69" kpx2="8221"/><pair kern="-20" kpx2="211"/><pair kern="-40" kpx2="372"/><pair kern="-20" kpx2="510"/><pair kern="-60" kpx2="374"/><pair kern="-60" kpx2="376"/><pair kern="-69" kpx2="356"/><pair kern="-69" kpx2="354"/></kerning><kerning kpx1="7853"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="7850"><pair kern="-20" kpx2="7888"/><pair kern="-20" kpx2="7890"/><pair kern="-20" kpx2="7892"/><pair kern="-20" kpx2="7894"/><pair kern="-20" kpx2="7896"/><pair kern="-20" kpx2="7898"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-20" kpx2="262"/><pair kern="-20" kpx2="266"/><pair kern="-20" kpx2="264"/><pair kern="-20" kpx2="7884"/><pair kern="-20" kpx2="268"/><pair kern="-20" kpx2="7886"/><pair kern="-69" kpx2="34"/><pair kern="-60" kpx2="7922"/><pair kern="-60" kpx2="7926"/><pair kern="-69" kpx2="39"/><pair kern="-60" kpx2="7924"/><pair kern="-60" kpx2="7928"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-20" kpx2="416"/><pair kern="-69" kpx2="538"/><pair kern="-20" kpx2="71"/><pair kern="-20" kpx2="338"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-20" kpx2="199"/><pair kern="-20" kpx2="79"/><pair kern="129" kpx2="74"/><pair kern="-40" kpx2="7812"/><pair kern="-60" kpx2="221"/><pair kern="-69" kpx2="84"/><pair kern="-40" kpx2="87"/><pair kern="-40" kpx2="86"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="81"/><pair kern="-40" kpx2="7808"/><pair kern="-40" kpx2="7810"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="334"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-20" kpx2="332"/><pair kern="-69" kpx2="8217"/><pair kern="-60" kpx2="89"/><pair kern="-20" kpx2="210"/><pair kern="-69" kpx2="8221"/><pair kern="-20" kpx2="211"/><pair kern="-40" kpx2="372"/><pair kern="-20" kpx2="510"/><pair kern="-60" kpx2="374"/><pair kern="-60" kpx2="376"/><pair kern="-69" kpx2="356"/><pair kern="-69" kpx2="354"/></kerning><kerning kpx1="7851"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="7848"><pair kern="-20" kpx2="7888"/><pair kern="-20" kpx2="7890"/><pair kern="-20" kpx2="7892"/><pair kern="-20" kpx2="7894"/><pair kern="-20" kpx2="7896"/><pair kern="-20" kpx2="7898"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-20" kpx2="262"/><pair kern="-20" kpx2="266"/><pair kern="-20" kpx2="264"/><pair kern="-20" kpx2="7884"/><pair kern="-20" kpx2="268"/><pair kern="-20" kpx2="7886"/><pair kern="-69" kpx2="34"/><pair kern="-60" kpx2="7922"/><pair kern="-60" kpx2="7926"/><pair kern="-69" kpx2="39"/><pair kern="-60" kpx2="7924"/><pair kern="-60" kpx2="7928"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-20" kpx2="416"/><pair kern="-69" kpx2="538"/><pair kern="-20" kpx2="71"/><pair kern="-20" kpx2="338"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-20" kpx2="199"/><pair kern="-20" kpx2="79"/><pair kern="129" kpx2="74"/><pair kern="-40" kpx2="7812"/><pair kern="-60" kpx2="221"/><pair kern="-69" kpx2="84"/><pair kern="-40" kpx2="87"/><pair kern="-40" kpx2="86"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="81"/><pair kern="-40" kpx2="7808"/><pair kern="-40" kpx2="7810"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="334"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-20" kpx2="332"/><pair kern="-69" kpx2="8217"/><pair kern="-60" kpx2="89"/><pair kern="-20" kpx2="210"/><pair kern="-69" kpx2="8221"/><pair kern="-20" kpx2="211"/><pair kern="-40" kpx2="372"/><pair kern="-20" kpx2="510"/><pair kern="-60" kpx2="374"/><pair kern="-60" kpx2="376"/><pair kern="-69" kpx2="356"/><pair kern="-69" kpx2="354"/></kerning><kerning kpx1="7849"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="957"><pair kern="-9" kpx2="955"/><pair kern="-40" kpx2="8218"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="8222"/><pair kern="-40" kpx2="44"/></kerning><kerning kpx1="959"><pair kern="-9" kpx2="34"/><pair kern="-20" kpx2="957"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/><pair kern="-20" kpx2="947"/></kerning><kerning kpx1="952"><pair kern="-20" kpx2="8218"/><pair kern="-20" kpx2="46"/><pair kern="-20" kpx2="8222"/><pair kern="-20" kpx2="44"/></kerning><kerning kpx1="953"><pair kern="-40" kpx2="34"/><pair kern="-40" kpx2="39"/><pair kern="-40" kpx2="8217"/><pair kern="-9" kpx2="960"/><pair kern="-40" kpx2="8221"/><pair kern="-9" kpx2="964"/></kerning><kerning kpx1="954"><pair kern="-20" kpx2="940"/><pair kern="-20" kpx2="959"/><pair kern="-20" kpx2="972"/><pair kern="-20" kpx2="963"/><pair kern="-20" kpx2="962"/><pair kern="-20" kpx2="966"/><pair kern="-20" kpx2="945"/></kerning><kerning kpx1="955"><pair kern="-60" kpx2="34"/><pair kern="-20" kpx2="957"/><pair kern="-9" kpx2="940"/><pair kern="-9" kpx2="959"/><pair kern="-60" kpx2="39"/><pair kern="-9" kpx2="972"/><pair kern="-9" kpx2="963"/><pair kern="-9" kpx2="962"/><pair kern="-60" kpx2="8217"/><pair kern="-20" kpx2="960"/><pair kern="-9" kpx2="966"/><pair kern="-9" kpx2="945"/><pair kern="-60" kpx2="8221"/><pair kern="-20" kpx2="964"/><pair kern="-20" kpx2="947"/></kerning><kerning kpx1="950"><pair kern="-20" kpx2="959"/><pair kern="-20" kpx2="948"/><pair kern="-20" kpx2="945"/><pair kern="-49" kpx2="45"/><pair kern="-49" kpx2="8211"/><pair kern="-20" kpx2="940"/><pair kern="-49" kpx2="8213"/><pair kern="-49" kpx2="8212"/><pair kern="-20" kpx2="972"/><pair kern="-20" kpx2="963"/><pair kern="-20" kpx2="962"/><pair kern="-20" kpx2="960"/><pair kern="-20" kpx2="966"/><pair kern="-20" kpx2="964"/></kerning><kerning kpx1="951"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="945"><pair kern="20" kpx2="955"/></kerning><kerning kpx1="947"><pair kern="-9" kpx2="955"/><pair kern="-40" kpx2="8218"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="8222"/><pair kern="-40" kpx2="44"/></kerning><kerning kpx1="940"><pair kern="20" kpx2="955"/></kerning><kerning kpx1="943"><pair kern="-40" kpx2="34"/><pair kern="-40" kpx2="39"/><pair kern="-40" kpx2="8217"/><pair kern="-9" kpx2="960"/><pair kern="-40" kpx2="8221"/><pair kern="-9" kpx2="964"/></kerning><kerning kpx1="942"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="937"><pair kern="-9" kpx2="939"/><pair kern="-9" kpx2="978"/><pair kern="-9" kpx2="933"/><pair kern="-20" kpx2="932"/></kerning><kerning kpx1="936"><pair kern="-9" kpx2="927"/><pair kern="-40" kpx2="923"/><pair kern="-9" kpx2="920"/><pair kern="-60" kpx2="8218"/><pair kern="-40" kpx2="902"/><pair kern="-40" kpx2="916"/><pair kern="-60" kpx2="46"/><pair kern="-60" kpx2="8222"/><pair kern="-60" kpx2="44"/><pair kern="-40" kpx2="913"/></kerning><kerning kpx1="939"><pair kern="-29" kpx2="956"/><pair kern="-49" kpx2="959"/><pair kern="-29" kpx2="953"/><pair kern="-29" kpx2="954"/><pair kern="-29" kpx2="948"/><pair kern="-40" kpx2="949"/><pair kern="-29" kpx2="951"/><pair kern="-29" kpx2="944"/><pair kern="-49" kpx2="945"/><pair kern="-40" kpx2="941"/><pair kern="-49" kpx2="940"/><pair kern="-29" kpx2="943"/><pair kern="-29" kpx2="942"/><pair kern="-9" kpx2="937"/><pair kern="-60" kpx2="8218"/><pair kern="-29" kpx2="934"/><pair kern="-60" kpx2="8222"/><pair kern="-20" kpx2="927"/><pair kern="-60" kpx2="923"/><pair kern="-20" kpx2="920"/><pair kern="-60" kpx2="916"/><pair kern="-60" kpx2="46"/><pair kern="-60" kpx2="44"/><pair kern="-60" kpx2="913"/><pair kern="-29" kpx2="971"/><pair kern="-29" kpx2="969"/><pair kern="-29" kpx2="968"/><pair kern="-9" kpx2="8486"/><pair kern="-29" kpx2="974"/><pair kern="-29" kpx2="973"/><pair kern="-49" kpx2="972"/><pair kern="-49" kpx2="963"/><pair kern="-49" kpx2="962"/><pair kern="-60" kpx2="902"/><pair kern="-49" kpx2="961"/><pair kern="-49" kpx2="966"/><pair kern="-29" kpx2="965"/></kerning><kerning kpx1="933"><pair kern="-29" kpx2="956"/><pair kern="-49" kpx2="959"/><pair kern="-29" kpx2="953"/><pair kern="-29" kpx2="954"/><pair kern="-29" kpx2="948"/><pair kern="-40" kpx2="949"/><pair kern="-29" kpx2="951"/><pair kern="-29" kpx2="944"/><pair kern="-49" kpx2="945"/><pair kern="-40" kpx2="941"/><pair kern="-49" kpx2="940"/><pair kern="-29" kpx2="943"/><pair kern="-29" kpx2="942"/><pair kern="-9" kpx2="937"/><pair kern="-60" kpx2="8218"/><pair kern="-29" kpx2="934"/><pair kern="-60" kpx2="8222"/><pair kern="-20" kpx2="927"/><pair kern="-60" kpx2="923"/><pair kern="-20" kpx2="920"/><pair kern="-60" kpx2="916"/><pair kern="-60" kpx2="46"/><pair kern="-60" kpx2="44"/><pair kern="-60" kpx2="913"/><pair kern="-29" kpx2="971"/><pair kern="-29" kpx2="969"/><pair kern="-29" kpx2="968"/><pair kern="-9" kpx2="8486"/><pair kern="-29" kpx2="974"/><pair kern="-29" kpx2="973"/><pair kern="-49" kpx2="972"/><pair kern="-49" kpx2="963"/><pair kern="-49" kpx2="962"/><pair kern="-60" kpx2="902"/><pair kern="-49" kpx2="961"/><pair kern="-49" kpx2="966"/><pair kern="-29" kpx2="965"/></kerning><kerning kpx1="932"><pair kern="-49" kpx2="956"/><pair kern="-20" kpx2="957"/><pair kern="-69" kpx2="959"/><pair kern="-40" kpx2="953"/><pair kern="-49" kpx2="954"/><pair kern="-29" kpx2="948"/><pair kern="-49" kpx2="949"/><pair kern="-49" kpx2="951"/><pair kern="-49" kpx2="944"/><pair kern="-69" kpx2="945"/><pair kern="-20" kpx2="947"/><pair kern="-40" kpx2="8211"/><pair kern="-49" kpx2="941"/><pair kern="-69" kpx2="940"/><pair kern="-40" kpx2="943"/><pair kern="-49" kpx2="942"/><pair kern="-29" kpx2="937"/><pair kern="-40" kpx2="8213"/><pair kern="-40" kpx2="8212"/><pair kern="-60" kpx2="8218"/><pair kern="-49" kpx2="934"/><pair kern="-60" kpx2="8222"/><pair kern="-29" kpx2="927"/><pair kern="-80" kpx2="923"/><pair kern="-29" kpx2="920"/><pair kern="-80" kpx2="916"/><pair kern="-20" kpx2="977"/><pair kern="-60" kpx2="46"/><pair kern="-60" kpx2="44"/><pair kern="-80" kpx2="913"/><pair kern="-40" kpx2="45"/><pair kern="-49" kpx2="971"/><pair kern="-49" kpx2="969"/><pair kern="-49" kpx2="968"/><pair kern="-29" kpx2="8486"/><pair kern="-49" kpx2="974"/><pair kern="-49" kpx2="973"/><pair kern="-69" kpx2="972"/><pair kern="-69" kpx2="963"/><pair kern="-69" kpx2="962"/><pair kern="-80" kpx2="902"/><pair kern="-49" kpx2="961"/><pair kern="-20" kpx2="967"/><pair kern="-69" kpx2="966"/><pair kern="-49" kpx2="965"/></kerning><kerning kpx1="935"><pair kern="-20" kpx2="927"/><pair kern="-20" kpx2="920"/><pair kern="-9" kpx2="960"/><pair kern="-29" kpx2="934"/><pair kern="-9" kpx2="964"/></kerning><kerning kpx1="934"><pair kern="-20" kpx2="923"/><pair kern="-9" kpx2="955"/><pair kern="-29" kpx2="978"/><pair kern="-29" kpx2="918"/><pair kern="-20" kpx2="916"/><pair kern="-49" kpx2="46"/><pair kern="-49" kpx2="44"/><pair kern="-20" kpx2="913"/><pair kern="-29" kpx2="939"/><pair kern="-29" kpx2="933"/><pair kern="-49" kpx2="8218"/><pair kern="-20" kpx2="902"/><pair kern="-40" kpx2="932"/><pair kern="-9" kpx2="935"/><pair kern="-49" kpx2="8222"/><pair kern="-9" kpx2="931"/></kerning><kerning kpx1="929"><pair kern="-49" kpx2="923"/><pair kern="-20" kpx2="955"/><pair kern="-9" kpx2="918"/><pair kern="-129" kpx2="8218"/><pair kern="-49" kpx2="902"/><pair kern="-20" kpx2="935"/><pair kern="-49" kpx2="916"/><pair kern="-129" kpx2="46"/><pair kern="-129" kpx2="8222"/><pair kern="-129" kpx2="44"/><pair kern="-49" kpx2="913"/></kerning><kerning kpx1="927"><pair kern="-20" kpx2="923"/><pair kern="-9" kpx2="955"/><pair kern="-9" kpx2="978"/><pair kern="-9" kpx2="918"/><pair kern="-20" kpx2="916"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="44"/><pair kern="-20" kpx2="913"/><pair kern="-9" kpx2="936"/><pair kern="-9" kpx2="939"/><pair kern="-9" kpx2="933"/><pair kern="-40" kpx2="8218"/><pair kern="-20" kpx2="902"/><pair kern="-29" kpx2="932"/><pair kern="-20" kpx2="935"/><pair kern="-40" kpx2="8222"/><pair kern="-9" kpx2="931"/></kerning><kerning kpx1="922"><pair kern="-20" kpx2="927"/><pair kern="-20" kpx2="920"/><pair kern="-9" kpx2="960"/><pair kern="-29" kpx2="934"/><pair kern="-9" kpx2="964"/></kerning><kerning kpx1="923"><pair kern="-69" kpx2="34"/><pair kern="-20" kpx2="927"/><pair kern="-40" kpx2="936"/><pair kern="-69" kpx2="39"/><pair kern="-60" kpx2="939"/><pair kern="-20" kpx2="920"/><pair kern="-60" kpx2="978"/><pair kern="-60" kpx2="933"/><pair kern="-69" kpx2="932"/><pair kern="-69" kpx2="8217"/><pair kern="-20" kpx2="934"/><pair kern="-69" kpx2="8221"/></kerning><kerning kpx1="920"><pair kern="-20" kpx2="923"/><pair kern="-9" kpx2="955"/><pair kern="-9" kpx2="978"/><pair kern="-9" kpx2="918"/><pair kern="-20" kpx2="916"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="44"/><pair kern="-20" kpx2="913"/><pair kern="-9" kpx2="936"/><pair kern="-9" kpx2="939"/><pair kern="-9" kpx2="933"/><pair kern="-40" kpx2="8218"/><pair kern="-20" kpx2="902"/><pair kern="-29" kpx2="932"/><pair kern="-20" kpx2="935"/><pair kern="-40" kpx2="8222"/><pair kern="-9" kpx2="931"/></kerning><kerning kpx1="918"><pair kern="-9" kpx2="927"/><pair kern="-9" kpx2="920"/><pair kern="-29" kpx2="934"/></kerning><kerning kpx1="916"><pair kern="-69" kpx2="34"/><pair kern="-20" kpx2="927"/><pair kern="-40" kpx2="936"/><pair kern="-69" kpx2="39"/><pair kern="-60" kpx2="939"/><pair kern="-20" kpx2="920"/><pair kern="-60" kpx2="978"/><pair kern="-60" kpx2="933"/><pair kern="-69" kpx2="932"/><pair kern="-69" kpx2="8217"/><pair kern="-20" kpx2="934"/><pair kern="-69" kpx2="8221"/></kerning><kerning kpx1="914"><pair kern="-20" kpx2="923"/><pair kern="-40" kpx2="8218"/><pair kern="-20" kpx2="902"/><pair kern="-20" kpx2="935"/><pair kern="-20" kpx2="916"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="8222"/><pair kern="-40" kpx2="44"/><pair kern="-20" kpx2="913"/></kerning><kerning kpx1="915"><pair kern="-49" kpx2="956"/><pair kern="-20" kpx2="957"/><pair kern="-69" kpx2="959"/><pair kern="-40" kpx2="953"/><pair kern="-49" kpx2="954"/><pair kern="-29" kpx2="948"/><pair kern="-49" kpx2="949"/><pair kern="-49" kpx2="951"/><pair kern="-49" kpx2="944"/><pair kern="-69" kpx2="945"/><pair kern="-20" kpx2="947"/><pair kern="-40" kpx2="8211"/><pair kern="-49" kpx2="941"/><pair kern="-69" kpx2="940"/><pair kern="-40" kpx2="943"/><pair kern="-49" kpx2="942"/><pair kern="-29" kpx2="937"/><pair kern="-40" kpx2="8213"/><pair kern="-40" kpx2="8212"/><pair kern="-60" kpx2="8218"/><pair kern="-49" kpx2="934"/><pair kern="-60" kpx2="8222"/><pair kern="-29" kpx2="927"/><pair kern="-80" kpx2="923"/><pair kern="-29" kpx2="920"/><pair kern="-80" kpx2="916"/><pair kern="-20" kpx2="977"/><pair kern="-60" kpx2="46"/><pair kern="-60" kpx2="44"/><pair kern="-80" kpx2="913"/><pair kern="-40" kpx2="45"/><pair kern="-49" kpx2="971"/><pair kern="-49" kpx2="969"/><pair kern="-49" kpx2="968"/><pair kern="-29" kpx2="8486"/><pair kern="-49" kpx2="974"/><pair kern="-49" kpx2="973"/><pair kern="-69" kpx2="972"/><pair kern="-69" kpx2="963"/><pair kern="-69" kpx2="962"/><pair kern="-80" kpx2="902"/><pair kern="-49" kpx2="961"/><pair kern="-20" kpx2="967"/><pair kern="-69" kpx2="966"/><pair kern="-49" kpx2="965"/></kerning><kerning kpx1="912"><pair kern="-20" kpx2="34"/><pair kern="-20" kpx2="39"/><pair kern="-20" kpx2="8217"/><pair kern="-20" kpx2="8221"/></kerning><kerning kpx1="913"><pair kern="-69" kpx2="34"/><pair kern="-20" kpx2="927"/><pair kern="-40" kpx2="936"/><pair kern="-69" kpx2="39"/><pair kern="-60" kpx2="939"/><pair kern="-20" kpx2="920"/><pair kern="-60" kpx2="978"/><pair kern="-60" kpx2="933"/><pair kern="-69" kpx2="932"/><pair kern="-69" kpx2="8217"/><pair kern="-20" kpx2="934"/><pair kern="-69" kpx2="8221"/></kerning><kerning kpx1="911"><pair kern="-9" kpx2="939"/><pair kern="-9" kpx2="978"/><pair kern="-9" kpx2="933"/><pair kern="-20" kpx2="932"/></kerning><kerning kpx1="910"><pair kern="-29" kpx2="956"/><pair kern="-49" kpx2="959"/><pair kern="-29" kpx2="953"/><pair kern="-29" kpx2="954"/><pair kern="-29" kpx2="948"/><pair kern="-40" kpx2="949"/><pair kern="-29" kpx2="951"/><pair kern="-29" kpx2="944"/><pair kern="-49" kpx2="945"/><pair kern="-40" kpx2="941"/><pair kern="-49" kpx2="940"/><pair kern="-29" kpx2="943"/><pair kern="-29" kpx2="942"/><pair kern="-9" kpx2="937"/><pair kern="-60" kpx2="8218"/><pair kern="-29" kpx2="934"/><pair kern="-60" kpx2="8222"/><pair kern="-20" kpx2="927"/><pair kern="-60" kpx2="923"/><pair kern="-20" kpx2="920"/><pair kern="-60" kpx2="916"/><pair kern="-60" kpx2="46"/><pair kern="-60" kpx2="44"/><pair kern="-60" kpx2="913"/><pair kern="-29" kpx2="971"/><pair kern="-29" kpx2="969"/><pair kern="-29" kpx2="968"/><pair kern="-9" kpx2="8486"/><pair kern="-29" kpx2="974"/><pair kern="-29" kpx2="973"/><pair kern="-49" kpx2="972"/><pair kern="-49" kpx2="963"/><pair kern="-49" kpx2="962"/><pair kern="-60" kpx2="902"/><pair kern="-49" kpx2="961"/><pair kern="-49" kpx2="966"/><pair kern="-29" kpx2="965"/></kerning><kerning kpx1="908"><pair kern="-20" kpx2="923"/><pair kern="-9" kpx2="955"/><pair kern="-9" kpx2="978"/><pair kern="-9" kpx2="918"/><pair kern="-20" kpx2="916"/><pair kern="-40" kpx2="46"/><pair kern="-40" kpx2="44"/><pair kern="-20" kpx2="913"/><pair kern="-9" kpx2="936"/><pair kern="-9" kpx2="939"/><pair kern="-9" kpx2="933"/><pair kern="-40" kpx2="8218"/><pair kern="-20" kpx2="902"/><pair kern="-29" kpx2="932"/><pair kern="-20" kpx2="935"/><pair kern="-40" kpx2="8222"/><pair kern="-9" kpx2="931"/></kerning><kerning kpx1="902"><pair kern="-69" kpx2="34"/><pair kern="-20" kpx2="927"/><pair kern="-40" kpx2="936"/><pair kern="-69" kpx2="39"/><pair kern="-60" kpx2="939"/><pair kern="-20" kpx2="920"/><pair kern="-60" kpx2="978"/><pair kern="-60" kpx2="933"/><pair kern="-69" kpx2="932"/><pair kern="-69" kpx2="8217"/><pair kern="-20" kpx2="934"/><pair kern="-69" kpx2="8221"/></kerning><kerning kpx1="7681"><pair kern="-9" kpx2="34"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/></kerning><kerning kpx1="7680"><pair kern="-20" kpx2="7888"/><pair kern="-20" kpx2="7890"/><pair kern="-20" kpx2="7892"/><pair kern="-20" kpx2="7894"/><pair kern="-20" kpx2="7896"/><pair kern="-20" kpx2="7898"/><pair kern="-20" kpx2="7900"/><pair kern="-20" kpx2="286"/><pair kern="-20" kpx2="7902"/><pair kern="-20" kpx2="284"/><pair kern="-20" kpx2="262"/><pair kern="-20" kpx2="266"/><pair kern="-20" kpx2="264"/><pair kern="-20" kpx2="7884"/><pair kern="-20" kpx2="268"/><pair kern="-20" kpx2="7886"/><pair kern="-69" kpx2="34"/><pair kern="-60" kpx2="7922"/><pair kern="-60" kpx2="7926"/><pair kern="-69" kpx2="39"/><pair kern="-60" kpx2="7924"/><pair kern="-60" kpx2="7928"/><pair kern="-20" kpx2="7906"/><pair kern="-20" kpx2="288"/><pair kern="-20" kpx2="7904"/><pair kern="-20" kpx2="290"/><pair kern="-20" kpx2="416"/><pair kern="-69" kpx2="538"/><pair kern="-20" kpx2="71"/><pair kern="-20" kpx2="338"/><pair kern="-20" kpx2="67"/><pair kern="-20" kpx2="336"/><pair kern="-20" kpx2="199"/><pair kern="-20" kpx2="79"/><pair kern="129" kpx2="74"/><pair kern="-40" kpx2="7812"/><pair kern="-60" kpx2="221"/><pair kern="-69" kpx2="84"/><pair kern="-40" kpx2="87"/><pair kern="-40" kpx2="86"/><pair kern="-20" kpx2="216"/><pair kern="-20" kpx2="81"/><pair kern="-40" kpx2="7808"/><pair kern="-40" kpx2="7810"/><pair kern="-20" kpx2="212"/><pair kern="-20" kpx2="334"/><pair kern="-20" kpx2="213"/><pair kern="-20" kpx2="214"/><pair kern="-20" kpx2="332"/><pair kern="-69" kpx2="8217"/><pair kern="-60" kpx2="89"/><pair kern="-20" kpx2="210"/><pair kern="-69" kpx2="8221"/><pair kern="-20" kpx2="211"/><pair kern="-40" kpx2="372"/><pair kern="-20" kpx2="510"/><pair kern="-60" kpx2="374"/><pair kern="-60" kpx2="376"/><pair kern="-69" kpx2="356"/><pair kern="-69" kpx2="354"/></kerning><kerning kpx1="978"><pair kern="-29" kpx2="956"/><pair kern="-49" kpx2="959"/><pair kern="-29" kpx2="953"/><pair kern="-29" kpx2="954"/><pair kern="-29" kpx2="948"/><pair kern="-40" kpx2="949"/><pair kern="-29" kpx2="951"/><pair kern="-29" kpx2="944"/><pair kern="-49" kpx2="945"/><pair kern="-40" kpx2="941"/><pair kern="-49" kpx2="940"/><pair kern="-29" kpx2="943"/><pair kern="-29" kpx2="942"/><pair kern="-9" kpx2="937"/><pair kern="-60" kpx2="8218"/><pair kern="-29" kpx2="934"/><pair kern="-60" kpx2="8222"/><pair kern="-20" kpx2="927"/><pair kern="-60" kpx2="923"/><pair kern="-20" kpx2="920"/><pair kern="-60" kpx2="916"/><pair kern="-60" kpx2="46"/><pair kern="-60" kpx2="44"/><pair kern="-60" kpx2="913"/><pair kern="-29" kpx2="971"/><pair kern="-29" kpx2="969"/><pair kern="-29" kpx2="968"/><pair kern="-9" kpx2="8486"/><pair kern="-29" kpx2="974"/><pair kern="-29" kpx2="973"/><pair kern="-49" kpx2="972"/><pair kern="-49" kpx2="963"/><pair kern="-49" kpx2="962"/><pair kern="-60" kpx2="902"/><pair kern="-49" kpx2="961"/><pair kern="-49" kpx2="966"/><pair kern="-29" kpx2="965"/></kerning><kerning kpx1="977"><pair kern="-29" kpx2="8218"/><pair kern="-29" kpx2="46"/><pair kern="-29" kpx2="8222"/><pair kern="-29" kpx2="44"/></kerning><kerning kpx1="970"><pair kern="-20" kpx2="34"/><pair kern="-20" kpx2="39"/><pair kern="-20" kpx2="8217"/><pair kern="-20" kpx2="8221"/></kerning><kerning kpx1="972"><pair kern="-9" kpx2="34"/><pair kern="-20" kpx2="957"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/><pair kern="-20" kpx2="947"/></kerning><kerning kpx1="963"><pair kern="-9" kpx2="8218"/><pair kern="-9" kpx2="46"/><pair kern="-9" kpx2="8222"/><pair kern="-9" kpx2="44"/></kerning><kerning kpx1="961"><pair kern="-9" kpx2="34"/><pair kern="-20" kpx2="957"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/><pair kern="-20" kpx2="947"/></kerning><kerning kpx1="967"><pair kern="-20" kpx2="959"/><pair kern="-20" kpx2="948"/><pair kern="-29" kpx2="46"/><pair kern="-20" kpx2="945"/><pair kern="-29" kpx2="44"/><pair kern="-20" kpx2="45"/><pair kern="-20" kpx2="8211"/><pair kern="-20" kpx2="940"/><pair kern="-20" kpx2="8213"/><pair kern="-20" kpx2="8212"/><pair kern="-20" kpx2="972"/><pair kern="-20" kpx2="963"/><pair kern="-29" kpx2="8218"/><pair kern="-20" kpx2="962"/><pair kern="-29" kpx2="8222"/><pair kern="-20" kpx2="966"/></kerning><kerning kpx1="966"><pair kern="-9" kpx2="34"/><pair kern="-20" kpx2="957"/><pair kern="-9" kpx2="39"/><pair kern="-9" kpx2="8217"/><pair kern="-9" kpx2="8221"/><pair kern="-20" kpx2="947"/></kerning></font-metrics>
    \ No newline at end of file
    diff --git a/jOOQ-website/src/main/resources/pdf.xsl b/jOOQ-website/src/main/resources/pdf.xsl
    deleted file mode 100644
    index eb5aa5393d..0000000000
    --- a/jOOQ-website/src/main/resources/pdf.xsl
    +++ /dev/null
    @@ -1,590 +0,0 @@
    -<?xml version="1.0" encoding="UTF-8"?>
    -<!-- 
    -  * Copyright (c) 2009-2013, Data Geekery GmbH (http://www.datageekery.com)
    -  * All rights reserved.
    -  *
    -  * This work is dual-licensed
    -  * - under the Apache Software License 2.0 (the "ASL")
    -  * - under the jOOQ License and Maintenance Agreement (the "jOOQ License")
    -  * ===========================================================================
    -  * You may choose which license applies to you:
    -  *
    -  * - If you're using this work with Open Source databases, you may choose
    -  *   either ASL or jOOQ License.
    -  * - If you're using this work with at least one commercial database, you must
    -  *   choose jOOQ License
    -  *
    -  * For more information, please visit http://www.jooq.org/licenses
    -  *
    -  * Apache Software License 2.0:
    -  * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -  * Licensed under the Apache License, Version 2.0 (the "License");
    -  * you may not use this file except in compliance with the License.
    -  * You may obtain a copy of the License at
    -  *
    -  *  http://www.apache.org/licenses/LICENSE-2.0
    -  *
    -  * Unless required by applicable law or agreed to in writing, software
    -  * distributed under the License is distributed on an "AS IS" BASIS,
    -  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    -  * See the License for the specific language governing permissions and
    -  * limitations under the License.
    -  *
    -  * jOOQ License and Maintenance Agreement:
    -  * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -  * Data Geekery grants the Customer the non-exclusive, timely limited and
    -  * non-transferable license to install and use the Software under the terms of
    -  * the jOOQ License and Maintenance Agreement.
    -  *
    -  * This library is distributed with a LIMITED WARRANTY. See the jOOQ License
    -  * and Maintenance Agreement for more details: http://www.jooq.org/licensing
    -  -->
    -<xsl:stylesheet version="1.0"
    -	xmlns:fo="http://www.w3.org/1999/XSL/Format"
    -	xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    -
    -	<xsl:output encoding="UTF-8" method="xml" indent="yes"/>
    -
    -	<xsl:variable name="apos">&apos;</xsl:variable>
    -	<xsl:variable name="page-width">210</xsl:variable>
    -	<xsl:variable name="page-margin">17</xsl:variable>
    -	<xsl:variable name="content-width" select="$page-width - (2 * $page-margin)"/>
    -
    -	<xsl:attribute-set name="static">
    -		<xsl:attribute name="font-size">7pt</xsl:attribute>
    -		<xsl:attribute name="color">#555555</xsl:attribute>
    -	</xsl:attribute-set>
    -
    -	<xsl:attribute-set name="div">
    -		<xsl:attribute name="font-size">11pt</xsl:attribute>
    -	</xsl:attribute-set>
    -
    -	<xsl:attribute-set name="pre">
    -		<xsl:attribute name="font-family">Courier</xsl:attribute>
    -		<xsl:attribute name="linefeed-treatment">preserve</xsl:attribute>
    -		<xsl:attribute name="white-space-collapse">false</xsl:attribute>
    -		<xsl:attribute name="white-space-treatment">preserve</xsl:attribute>
    -		<xsl:attribute name="font-size">6pt</xsl:attribute>
    -		<xsl:attribute name="margin-top">15pt</xsl:attribute>
    -        <xsl:attribute name="margin-bottom">15pt</xsl:attribute>
    -        <xsl:attribute name="margin-left">3pt</xsl:attribute>
    -        <xsl:attribute name="margin-right">3pt</xsl:attribute>
    -		<xsl:attribute name="padding">4pt</xsl:attribute>
    -        <xsl:attribute name="color">#eeeeee</xsl:attribute>
    -		<xsl:attribute name="background-color">#333333</xsl:attribute>
    -		<xsl:attribute name="page-break-inside">avoid</xsl:attribute>
    -	</xsl:attribute-set>
    -
    -	<xsl:attribute-set name="strong">
    -		<xsl:attribute name="font-weight">bold</xsl:attribute>
    -	</xsl:attribute-set>
    -
    -	<xsl:attribute-set name="h1">
    -		<xsl:attribute name="font-family">Roboto</xsl:attribute>
    -		<xsl:attribute name="font-size">22pt</xsl:attribute>
    -        <xsl:attribute name="font-weight">300</xsl:attribute>
    -		<xsl:attribute name="padding-top">24pt</xsl:attribute>
    -		<xsl:attribute name="padding-bottom">24pt</xsl:attribute>
    -		<xsl:attribute name="page-break-after">avoid</xsl:attribute>
    -	</xsl:attribute-set>
    -
    -	<xsl:attribute-set name="h2">
    -		<xsl:attribute name="font-family">Roboto</xsl:attribute>
    -		<xsl:attribute name="font-size">16pt</xsl:attribute>
    -        <xsl:attribute name="font-weight">300</xsl:attribute>
    -		<xsl:attribute name="padding-top">15pt</xsl:attribute>
    -		<xsl:attribute name="padding-bottom">15pt</xsl:attribute>
    -		<xsl:attribute name="page-break-after">avoid</xsl:attribute>
    -	</xsl:attribute-set>
    -
    -	<xsl:attribute-set name="h3">
    -		<xsl:attribute name="font-family">Roboto</xsl:attribute>
    -		<xsl:attribute name="font-size">15pt</xsl:attribute>
    -        <xsl:attribute name="font-weight">300</xsl:attribute>
    -		<xsl:attribute name="padding-top">15pt</xsl:attribute>
    -		<xsl:attribute name="padding-bottom">15pt</xsl:attribute>
    -		<xsl:attribute name="page-break-after">avoid</xsl:attribute>
    -	</xsl:attribute-set>
    -
    -	<xsl:attribute-set name="a">
    -		<xsl:attribute name="font-size">11pt</xsl:attribute>
    -		<xsl:attribute name="font-weight">bold</xsl:attribute>
    -        <xsl:attribute name="text-decoration">underline</xsl:attribute>
    -        <xsl:attribute name="color">#3333ee</xsl:attribute>
    -	</xsl:attribute-set>
    -
    -	<xsl:attribute-set name="p">
    -		<xsl:attribute name="font-size">11pt</xsl:attribute>
    -		<xsl:attribute name="text-align">justify</xsl:attribute>
    -	</xsl:attribute-set>
    -
    -	<xsl:attribute-set name="ul">
    -		<xsl:attribute name="padding-top">16pt</xsl:attribute>
    -		<xsl:attribute name="padding-bottom">16pt</xsl:attribute>
    -		<xsl:attribute name="page-break-inside">avoid</xsl:attribute>
    -	</xsl:attribute-set>
    -
    -	<xsl:attribute-set name="ol-toc">
    -		<xsl:attribute name="margin-bottom">3pt</xsl:attribute>
    -	</xsl:attribute-set>
    -
    -	<xsl:attribute-set name="ol">
    -		<xsl:attribute name="padding-top">16pt</xsl:attribute>
    -		<xsl:attribute name="padding-bottom">16pt</xsl:attribute>
    -	</xsl:attribute-set>
    -
    -	<xsl:attribute-set name="li-toc">
    -		<xsl:attribute name="font-size">9pt</xsl:attribute>
    -		<xsl:attribute name="page-break-inside">avoid</xsl:attribute>
    -	</xsl:attribute-set>
    -
    -	<xsl:attribute-set name="li">
    -		<xsl:attribute name="font-size">11pt</xsl:attribute>
    -		<xsl:attribute name="page-break-inside">avoid</xsl:attribute>
    -	</xsl:attribute-set>
    -
    -	<xsl:attribute-set name="img">
    -		<xsl:attribute name="padding-top">10pt</xsl:attribute>
    -		<xsl:attribute name="padding-bottom">10pt</xsl:attribute>
    -	</xsl:attribute-set>
    -
    -	<!-- Main match -->
    -
    -	<xsl:template match="/">
    -		<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
    -			<fo:layout-master-set>
    -			    <fo:simple-page-master
    -			        page-height="297mm"
    -			        page-width="{$page-width}mm"
    -					master-name="simple">
    -
    -         			<fo:region-body
    -						region-name="xsl-region-body"
    -            			margin="{$page-margin}mm" />
    -					<fo:region-before
    -            			region-name="xsl-region-before"
    -            			extent="{$page-margin}mm" />
    -         			<fo:region-after
    -						region-name="xsl-region-after"
    -          				extent="{$page-margin}mm" />
    -      			</fo:simple-page-master>
    -   			</fo:layout-master-set>
    -
    -   			<fo:page-sequence master-reference="simple">
    -   				<fo:flow flow-name="xsl-region-body" font-family="Open Sans" font-weight="300">
    -   					<fo:block width="100%" margin-left="20mm" margin-right="20mm" font-family="Roboto" font-weight="300">
    -	   					<fo:block width="100%" text-align="center" font-size="36pt" padding-top="60mm">
    -	   						<xsl:text>The jOOQâ„¢ User Manual</xsl:text>
    -	   					</fo:block>
    -	   					<fo:block width="100%" text-align="justify" font-size="12pt" color="#555555" padding-top="20mm">
    -	   						<xsl:text>SQL was never meant to be abstracted. To be confined in the narrow
    -	   						boundaries of heavy mappers, hiding the beauty and simplicity of relational data.
    -	   						SQL was never meant to be object-oriented. SQL was never meant to be anything
    -	   						other than... SQL!</xsl:text>
    -	   					</fo:block>
    -	   					<fo:block width="100%" text-align="center" padding-top="20mm">
    -	   						<fo:external-graphic
    -	   							src="url('C:/Users/lukas/workspace/jOOQ/jOOQ-website/img/jooq-logo-black.png')"
    -								xsl:use-attribute-sets="img"/>
    -	   					</fo:block>
    -   					</fo:block>
    -   				</fo:flow>
    -   			</fo:page-sequence>
    -
    -   			<fo:page-sequence master-reference="simple">
    -   				<fo:static-content flow-name="xsl-region-before" font-family="Open Sans" font-weight="300">
    -   					<fo:block>
    -	   					<fo:table table-layout="fixed" width="100%">
    -							<fo:table-column column-width="proportional-column-width(1)"/>
    -							<fo:table-column column-width="150mm"/>
    -
    -							<fo:table-body>
    -							  	<fo:table-row>
    -							    	<fo:table-cell padding-left="{$page-margin}mm" padding-top="{$page-margin * 2 div 3}mm">
    -							      		<fo:block xsl:use-attribute-sets="static">
    -							      			<xsl:text>
    -							      			The jOOQ User Manual
    -							      			</xsl:text>
    -							      		</fo:block>
    -							    	</fo:table-cell>
    -							    	<fo:table-cell padding-right="{$page-margin}mm" padding-top="{$page-margin * 2 div 3}mm" text-align="right">
    -							     		<fo:block xsl:use-attribute-sets="static">
    -							     			<fo:retrieve-marker retrieve-class-name="section"/>
    -							     		</fo:block>
    -							    	</fo:table-cell>
    -							  	</fo:table-row>
    -							</fo:table-body>
    -						</fo:table>
    -   					</fo:block>
    -   				</fo:static-content>
    -
    -   				<fo:static-content flow-name="xsl-region-after" font-family="Open Sans" font-weight="300">
    -   					<fo:block>
    -			      		<fo:table table-layout="fixed" width="100%">
    -							<fo:table-column column-width="150mm"/>
    -							<fo:table-column column-width="proportional-column-width(1)"/>
    -
    -							<fo:table-body>
    -							  	<fo:table-row>
    -							    	<fo:table-cell padding-left="{$page-margin}mm">
    -							      		<fo:block xsl:use-attribute-sets="static">
    -							      			<xsl:text>
    -							      			    © 2009 - 2013 by Data Geekery™ GmbH. All rights reserved. 
    -							      			</xsl:text>
    -							      		</fo:block>
    -							    	</fo:table-cell>
    -							    	<fo:table-cell padding-right="{$page-margin}mm" text-align="right">
    -							     		<fo:block xsl:use-attribute-sets="static">
    -							     			<xsl:text>Page&#160;</xsl:text>
    -							     			<fo:page-number/>
    -							     			<xsl:text>&#160;/&#160;</xsl:text>
    -							     			<fo:page-number-citation ref-id="last-page"/>
    -							     		</fo:block>
    -							    	</fo:table-cell>
    -							  	</fo:table-row>
    -							</fo:table-body>
    -						</fo:table>
    -					</fo:block>
    -			    </fo:static-content>
    -
    -      			<fo:flow flow-name="xsl-region-body" font-family="Open Sans" font-weight="300">
    -					<!-- Display the main section's content -->
    -					<xsl:apply-templates select="/manual/section/content"/>
    -
    -					<!-- Display the overall table of contents -->
    -					<fo:block break-after='page'/>
    -					<fo:block xsl:use-attribute-sets="h3">Table of contents</fo:block>
    -					<xsl:apply-templates select="/manual/section" mode="toc"/>
    -
    -					<xsl:for-each select="/manual/section//section">
    -						<!-- Break before top-level chapters -->
    -						<xsl:variable name="id" select="@id"/>
    -						<xsl:if test="/manual/section/sections/section[@id = $id]">
    -							<fo:block break-after='page'/>
    -						</xsl:if>
    -
    -						<fo:block xsl:use-attribute-sets="h1" id="{@id}">
    -							<fo:marker marker-class-name="section">
    -								<fo:block>
    -									<xsl:apply-templates select="." mode="chapter-number"/>
    -									<xsl:text> </xsl:text>
    -									<xsl:value-of select="title"/>
    -								</fo:block>
    -							</fo:marker>
    -
    -							<xsl:apply-templates select="." mode="chapter-number"/>
    -							<xsl:text> </xsl:text>
    -							<xsl:value-of select="title"/>
    -						</fo:block>
    -
    -						<xsl:apply-templates select="content" />
    -					</xsl:for-each>
    -
    -					<fo:block id="last-page"/>
    -      			</fo:flow>
    -  			</fo:page-sequence>
    -		</fo:root>
    -	</xsl:template>
    -
    -	<xsl:template match="html-only" mode="content"/>
    -
    -    <xsl:template match="content">
    -        <xsl:apply-templates select="@*|node()" mode="content"/>
    -    </xsl:template>
    -
    -    <xsl:template match="html" mode="content">
    -        <xsl:apply-templates select="@*|node()" mode="content"/>
    -    </xsl:template>
    -
    -	<xsl:template match="div" mode="content">
    -		<fo:block xsl:use-attribute-sets="div">
    -			<xsl:apply-templates mode="content"/>
    -		</fo:block>
    -	</xsl:template>
    -
    -	<xsl:template match="h1" mode="content">
    -		<fo:block xsl:use-attribute-sets="h1">
    -			<xsl:apply-templates mode="content"/>
    -		</fo:block>
    -	</xsl:template>
    -
    -	<xsl:template match="h2" mode="content">
    -		<fo:block xsl:use-attribute-sets="h2">
    -			<xsl:apply-templates mode="content"/>
    -		</fo:block>
    -	</xsl:template>
    -
    -	<xsl:template match="h3" mode="content">
    -		<fo:block xsl:use-attribute-sets="h3">
    -			<xsl:apply-templates mode="content"/>
    -		</fo:block>
    -	</xsl:template>
    -
    -	<xsl:template match="a" mode="content">
    -		<fo:basic-link xsl:use-attribute-sets="a">
    -			<xsl:attribute name="external-destination">
    -				<xsl:text>url('</xsl:text>
    -				<xsl:value-of select="@href"/>
    -				<xsl:text>')</xsl:text>
    -			</xsl:attribute>
    -
    -			<xsl:apply-templates mode="content"/>
    -		</fo:basic-link>
    -	</xsl:template>
    -
    -	<xsl:template match="reference[@id]" mode="content">
    -		<fo:basic-link xsl:use-attribute-sets="a" internal-destination="{@id}">
    -			<xsl:apply-templates select="." mode="reference-content"/>
    -		</fo:basic-link>
    -	</xsl:template>
    -
    -	<xsl:template match="reference[@class and starts-with(@class, 'org.jooq.test')]" mode="content">
    -		<fo:basic-link xsl:use-attribute-sets="a">
    -			<xsl:attribute name="external-destination">
    -				<xsl:text>url('</xsl:text>
    -				<xsl:text>https://github.com/jOOQ/jOOQ/blob/master/jOOQ-test/src/</xsl:text>
    -				<xsl:value-of select="translate(@class, '.', '/')"/>
    -				<xsl:text>.java</xsl:text>
    -				<xsl:value-of select="@anchor"/>
    -				<xsl:text>')</xsl:text>
    -			</xsl:attribute>
    -
    -			<xsl:apply-templates select="." mode="reference-content"/>
    -		</fo:basic-link>
    -	</xsl:template>
    -
    -	<xsl:template match="reference[@class and starts-with(@class, 'org.jooq.debug')]" mode="content">
    -		<fo:basic-link xsl:use-attribute-sets="a">
    -			<xsl:attribute name="external-destination">
    -				<xsl:text>url('</xsl:text>
    -				<xsl:text>https://github.com/jOOQ/jOOQ/blob/master/jOOQ-console/src/main/java/</xsl:text>
    -				<xsl:value-of select="translate(@class, '.', '/')"/>
    -				<xsl:text>.java</xsl:text>
    -				<xsl:value-of select="@anchor"/>
    -				<xsl:text>')</xsl:text>
    -			</xsl:attribute>
    -
    -			<xsl:apply-templates select="." mode="reference-content"/>
    -		</fo:basic-link>
    -	</xsl:template>
    -
    -	<xsl:template match="reference[@class and starts-with(@class, 'org.jooq')]" mode="content">
    -		<fo:basic-link xsl:use-attribute-sets="a">
    -			<xsl:attribute name="external-destination">
    -				<xsl:text>url('</xsl:text>
    -				<xsl:text>http://www.jooq.org/javadoc/latest/</xsl:text>
    -				<xsl:value-of select="translate(@class, '.', '/')"/>
    -				<xsl:text>.html</xsl:text>
    -				<xsl:value-of select="@anchor"/>
    -				<xsl:text>')</xsl:text>
    -			</xsl:attribute>
    -
    -			<xsl:apply-templates select="." mode="reference-content"/>
    -		</fo:basic-link>
    -	</xsl:template>
    -
    -	<xsl:template match="reference[@class and starts-with(@class, 'javax.persistence')]" mode="content">
    -		<fo:basic-link xsl:use-attribute-sets="a">
    -			<xsl:attribute name="external-destination">
    -				<xsl:text>url('</xsl:text>
    -				<xsl:text>http://docs.oracle.com/javaee/6/api/</xsl:text>
    -				<xsl:value-of select="translate(@class, '.', '/')"/>
    -				<xsl:text>.html</xsl:text>
    -				<xsl:value-of select="@anchor"/>
    -				<xsl:text>')</xsl:text>
    -			</xsl:attribute>
    -
    -			<xsl:apply-templates select="." mode="reference-content"/>
    -		</fo:basic-link>
    -	</xsl:template>
    -
    -	<xsl:template match="reference[@class and (starts-with(@class, 'java') or starts-with(@class, 'org.w3c.dom'))]" mode="content">
    -		<fo:basic-link xsl:use-attribute-sets="a">
    -			<xsl:attribute name="external-destination">
    -				<xsl:text>url('</xsl:text>
    -				<xsl:text>http://download.oracle.com/javase/6/docs/api/</xsl:text>
    -				<xsl:value-of select="translate(@class, '.', '/')"/>
    -				<xsl:text>.html</xsl:text>
    -				<xsl:value-of select="@anchor"/>
    -				<xsl:text>')</xsl:text>
    -			</xsl:attribute>
    -
    -			<xsl:apply-templates select="." mode="reference-content"/>
    -		</fo:basic-link>
    -	</xsl:template>
    -
    -	<xsl:template match="reference[@ticket]" mode="content">
    -		<fo:basic-link xsl:use-attribute-sets="a">
    -			<xsl:attribute name="external-destination">
    -				<xsl:text>url('</xsl:text>
    -				<xsl:text>https://github.com/jOOQ/jOOQ/issues/</xsl:text>
    -				<xsl:value-of select="@ticket"/>
    -				<xsl:value-of select="@anchor"/>
    -				<xsl:text>')</xsl:text>
    -			</xsl:attribute>
    -
    -			<xsl:apply-templates select="." mode="reference-content"/>
    -		</fo:basic-link>
    -	</xsl:template>
    -
    -	<xsl:template match="reference" mode="reference-content">
    -		<xsl:variable name="id" select="@id"/>
    -
    -		<xsl:choose>
    -			<xsl:when test="@title">
    -				<xsl:value-of select="@title"/>
    -			</xsl:when>
    -			<xsl:when test="@id">
    -				<xsl:value-of select="//section[@id = $id]/title"/>
    -			</xsl:when>
    -			<xsl:when test="@class">
    -				<xsl:value-of select="@class"/>
    -			</xsl:when>
    -			<xsl:when test="@ticket">
    -				<xsl:text>#</xsl:text>
    -				<xsl:value-of select="@ticket"/>
    -			</xsl:when>
    -		</xsl:choose>
    -	</xsl:template>
    -
    -	<xsl:template match="img" mode="content">
    -		<fo:block text-align="center">
    -			<fo:external-graphic
    -				src="url('C:/Users/lukas/workspace/jOOQ/jOOQ-website/img/{substring-after(@src, 'img/')}')"
    -				xsl:use-attribute-sets="img"/>
    -		</fo:block>
    -	</xsl:template>
    -
    -	<xsl:template match="p" mode="content">
    -		<fo:block xsl:use-attribute-sets="p">
    -			<xsl:if test="following-sibling::node()[name(.) = 'p']">
    -				<xsl:attribute name="margin-bottom">6pt</xsl:attribute>
    -			</xsl:if>
    -			
    -			<xsl:apply-templates mode="content"/>
    -		</fo:block>
    -	</xsl:template>
    -
    -	<xsl:template match="ul" mode="content">
    -		<fo:block xsl:use-attribute-sets="ul">
    -			<fo:list-block>
    -				<xsl:apply-templates mode="content" />
    -			</fo:list-block>
    -		</fo:block>
    -	</xsl:template>
    -
    -	<xsl:template match="ol" mode="content">
    -		<fo:block xsl:use-attribute-sets="ol">
    -			<fo:list-block>
    -				<xsl:apply-templates mode="content" />
    -			</fo:list-block>
    -		</fo:block>
    -	</xsl:template>
    -
    -	<xsl:template match="li" mode="content">
    -		<fo:list-item>
    -			<fo:list-item-label>
    -				<fo:block xsl:use-attribute-sets="li">
    -					<xsl:choose>
    -						<xsl:when test="count(ancestor::ul)=1">-</xsl:when>
    -						<xsl:when test="count(ancestor::ul)=2">*</xsl:when>
    -						<xsl:otherwise>o</xsl:otherwise>
    -					</xsl:choose>
    -				</fo:block>
    -			</fo:list-item-label>
    -			<fo:list-item-body start-indent="body-start()">
    -				<fo:block xsl:use-attribute-sets="li">
    -					<xsl:apply-templates mode="content" />
    -				</fo:block>
    -			</fo:list-item-body>
    -		</fo:list-item>
    -	</xsl:template>
    -
    -	<xsl:template match="br" mode="content">
    -		<fo:block/>
    -	</xsl:template>
    -
    -	<xsl:template match="strong" mode="content">
    -		<fo:inline xsl:use-attribute-sets="strong">
    -			<xsl:apply-templates mode="content" />
    -		</fo:inline>
    -	</xsl:template>
    -
    -	<xsl:template match="code-pair" mode="content">
    -		<fo:table table-layout="fixed" width="100%">
    -			<fo:table-column column-width="{$content-width div 2}mm"/>
    -			<fo:table-column column-width="{$content-width div 2}mm"/>
    -
    -			<fo:table-body>
    -			  	<fo:table-row>
    -			    	<fo:table-cell>
    -			      		<fo:block>
    -			      			<xsl:apply-templates select="*[position() = 1]" mode="content" />
    -			      		</fo:block>
    -			    	</fo:table-cell>
    -			    	<fo:table-cell>
    -			     		<fo:block>
    -			     			<xsl:apply-templates select="*[position() = 2]" mode="content" />
    -			     		</fo:block>
    -			    	</fo:table-cell>
    -			  	</fo:table-row>
    -			</fo:table-body>
    -		</fo:table>
    -	</xsl:template>
    -
    -	<xsl:template match="java | scala | sql | xml | text | config" mode="content">
    -		<fo:block xsl:use-attribute-sets="pre">
    -			<xsl:apply-templates mode="content" />
    -        </fo:block>
    -	</xsl:template>
    -
    -	<!-- Ignore code blocks, render contents as such -->
    -	<xsl:template match="code" mode="content">
    -		<xsl:apply-templates mode="content"/>
    -	</xsl:template>
    -
    -	<xsl:template match="@*|node()" mode="content">
    -		<xsl:copy>
    -            <xsl:apply-templates select="@*|node()" mode="content"/>
    -        </xsl:copy>
    -    </xsl:template>
    -
    -   	<xsl:template match="section" mode="toc">
    -   		<xsl:for-each select=".//section">
    -			<fo:block xsl:use-attribute-sets="ol-toc">
    -				<fo:list-block>
    -					<fo:list-item>
    -		          		<fo:list-item-label>
    -		          			<fo:block xsl:use-attribute-sets="li-toc">
    -	            			</fo:block>
    -		          		</fo:list-item-label>
    -		          		<fo:list-item-body>
    -		          			<fo:block xsl:use-attribute-sets="li-toc">
    -		          				<fo:block text-align-last="justify">
    -			          				<fo:inline>
    -			          					<fo:basic-link internal-destination="{@id}">
    -					          				<xsl:apply-templates select="." mode="chapter-number"/>
    -					          				<xsl:text>  </xsl:text>
    -					            			<xsl:value-of select="title" />
    -					            			<fo:leader leader-pattern="dots"/>
    -					            			<fo:page-number-citation ref-id="{@id}"/>
    -				            			</fo:basic-link>
    -			          				</fo:inline>
    -		          				</fo:block>
    -		            		</fo:block>
    -		          		</fo:list-item-body>
    -		        	</fo:list-item>
    -				</fo:list-block>
    -			</fo:block>
    -   		</xsl:for-each>
    -	</xsl:template>
    -
    -	<xsl:template match="section" mode="chapter-number">
    -		<xsl:if test="@id != 'manual'">
    -			<xsl:apply-templates select="../.." mode="chapter-number"/>
    -
    -			<xsl:value-of select="count(preceding-sibling::section) + 1"/>
    -			<xsl:text>.</xsl:text>
    -		</xsl:if>
    -	</xsl:template>
    -</xsl:stylesheet>
    \ No newline at end of file
    diff --git a/jOOQ-website/src/main/resources/roboto.xml b/jOOQ-website/src/main/resources/roboto.xml
    deleted file mode 100644
    index 526756b793..0000000000
    --- a/jOOQ-website/src/main/resources/roboto.xml
    +++ /dev/null
    @@ -1 +0,0 @@
    -<?xml version="1.0" encoding="UTF-8"?><font-metrics metrics-version="2" type="TYPE0"><font-name>Roboto-Light</font-name><full-name>Roboto Light</full-name><family-name>Roboto</family-name><embed/><cap-height>710</cap-height><x-height>528</x-height><ascender>761</ascender><descender>-203</descender><bbox><left>-744</left><bottom>-270</bottom><right>1146</right><top>1047</top></bbox><flags>33</flags><stemv>0</stemv><italicangle>0</italicangle><subtype>TYPE0</subtype><multibyte-extras><cid-type>CIDFontType2</cid-type><default-width>0</default-width><bfranges><bf gi="2" ue="13" us="13"/><bf gi="3" ue="32" us="32"/><bf gi="1039" ue="33" us="33"/><bf gi="4" ue="126" us="34"/><bf gi="481" ue="160" us="160"/><bf gi="97" ue="172" us="161"/><bf gi="482" ue="173" us="173"/><bf gi="109" ue="191" us="174"/><bf gi="488" ue="197" us="192"/><bf gi="127" ue="198" us="198"/><bf gi="495" ue="207" us="199"/><bf gi="484" ue="208" us="208"/><bf gi="504" ue="214" us="209"/><bf gi="128" ue="216" us="215"/><bf gi="510" ue="221" us="217"/><bf gi="130" ue="223" us="222"/><bf gi="515" ue="229" us="224"/><bf gi="132" ue="230" us="230"/><bf gi="522" ue="239" us="231"/><bf gi="133" ue="240" us="240"/><bf gi="531" ue="246" us="241"/><bf gi="134" ue="248" us="247"/><bf gi="537" ue="253" us="249"/><bf gi="136" ue="254" us="254"/><bf gi="542" ue="271" us="255"/><bf gi="483" ue="272" us="272"/><bf gi="997" ue="273" us="273"/><bf gi="559" ue="293" us="274"/><bf gi="137" ue="294" us="294"/><bf gi="485" ue="295" us="295"/><bf gi="579" ue="304" us="296"/><bf gi="138" ue="305" us="305"/><bf gi="588" ue="311" us="306"/><bf gi="139" ue="312" us="312"/><bf gi="594" ue="320" us="313"/><bf gi="140" ue="322" us="321"/><bf gi="602" ue="329" us="323"/><bf gi="142" ue="331" us="330"/><bf gi="609" ue="337" us="332"/><bf gi="144" ue="339" us="338"/><bf gi="615" ue="351" us="340"/><bf gi="629" ue="355" us="352"/><bf gi="635" ue="357" us="356"/><bf gi="486" ue="359" us="358"/><bf gi="637" ue="382" us="360"/><bf gi="146" ue="383" us="383"/><bf gi="147" ue="402" us="402"/><bf gi="148" ue="417" us="416"/><bf gi="150" ue="432" us="431"/><bf gi="839" ue="496" us="496"/><bf gi="494" ue="506" us="506"/><bf gi="521" ue="507" us="507"/><bf gi="660" ue="511" us="508"/><bf gi="627" ue="537" us="536"/><bf gi="633" ue="539" us="538"/><bf gi="152" ue="567" us="567"/><bf gi="153" ue="601" us="601"/><bf gi="840" ue="700" us="700"/><bf gi="154" ue="711" us="710"/><bf gi="110" ue="713" us="713"/><bf gi="156" ue="733" us="728"/><bf gi="162" ue="755" us="755"/><bf gi="163" ue="769" us="768"/><bf gi="165" ue="771" us="771"/><bf gi="166" ue="777" us="777"/><bf gi="167" ue="783" us="783"/><bf gi="168" ue="803" us="803"/><bf gi="169" ue="901" us="900"/><bf gi="751" ue="902" us="902"/><bf gi="171" ue="903" us="903"/><bf gi="752" ue="906" us="904"/><bf gi="755" ue="908" us="908"/><bf gi="756" ue="914" us="910"/><bf gi="172" ue="916" us="915"/><bf gi="761" ue="919" us="917"/><bf gi="174" ue="920" us="920"/><bf gi="764" ue="922" us="921"/><bf gi="175" ue="923" us="923"/><bf gi="766" ue="925" us="924"/><bf gi="176" ue="926" us="926"/><bf gi="768" ue="927" us="927"/><bf gi="177" ue="928" us="928"/><bf gi="769" ue="929" us="929"/><bf gi="178" ue="931" us="931"/><bf gi="770" ue="933" us="932"/><bf gi="179" ue="934" us="934"/><bf gi="772" ue="935" us="935"/><bf gi="180" ue="937" us="936"/><bf gi="773" ue="944" us="938"/><bf gi="182" ue="953" us="945"/><bf gi="780" ue="954" us="954"/><bf gi="191" ue="955" us="955"/><bf gi="782" ue="957" us="956"/><bf gi="192" ue="958" us="958"/><bf gi="781" ue="959" us="959"/><bf gi="193" ue="969" us="960"/><bf gi="784" ue="974" us="970"/><bf gi="203" ue="978" us="977"/><bf gi="205" ue="982" us="982"/><bf gi="848" ue="1024" us="1024"/><bf gi="789" ue="1025" us="1025"/><bf gi="206" ue="1026" us="1026"/><bf gi="790" ue="1027" us="1027"/><bf gi="207" ue="1028" us="1028"/><bf gi="791" ue="1032" us="1029"/><bf gi="208" ue="1035" us="1033"/><bf gi="796" ue="1036" us="1036"/><bf gi="849" ue="1037" us="1037"/><bf gi="797" ue="1038" us="1038"/><bf gi="211" ue="1039" us="1039"/><bf gi="798" ue="1040" us="1040"/><bf gi="212" ue="1041" us="1041"/><bf gi="799" ue="1043" us="1042"/><bf gi="213" ue="1044" us="1044"/><bf gi="801" ue="1045" us="1045"/><bf gi="214" ue="1048" us="1046"/><bf gi="802" ue="1049" us="1049"/><bf gi="795" ue="1050" us="1050"/><bf gi="217" ue="1051" us="1051"/><bf gi="803" ue="1058" us="1052"/><bf gi="218" ue="1060" us="1059"/><bf gi="810" ue="1061" us="1061"/><bf gi="220" ue="1071" us="1062"/><bf gi="811" ue="1072" us="1072"/><bf gi="230" ue="1076" us="1073"/><bf gi="812" ue="1077" us="1077"/><bf gi="234" ue="1080" us="1078"/><bf gi="813" ue="1081" us="1081"/><bf gi="237" ue="1085" us="1082"/><bf gi="814" ue="1086" us="1086"/><bf gi="241" ue="1087" us="1087"/><bf gi="815" ue="1089" us="1088"/><bf gi="242" ue="1090" us="1090"/><bf gi="817" ue="1091" us="1091"/><bf gi="243" ue="1092" us="1092"/><bf gi="818" ue="1093" us="1093"/><bf gi="244" ue="1103" us="1094"/><bf gi="850" ue="1104" us="1104"/><bf gi="819" ue="1105" us="1105"/><bf gi="254" ue="1106" us="1106"/><bf gi="820" ue="1107" us="1107"/><bf gi="255" ue="1108" us="1108"/><bf gi="821" ue="1112" us="1109"/><bf gi="256" ue="1115" us="1113"/><bf gi="825" ue="1116" us="1116"/><bf gi="851" ue="1117" us="1117"/><bf gi="826" ue="1118" us="1118"/><bf gi="259" ue="1121" us="1119"/><bf gi="1019" ue="1122" us="1122"/><bf gi="262" ue="1135" us="1123"/><bf gi="852" ue="1137" us="1136"/><bf gi="275" ue="1141" us="1138"/><bf gi="854" ue="1143" us="1142"/><bf gi="857" ue="1144" us="1144"/><bf gi="856" ue="1145" us="1145"/><bf gi="279" ue="1158" us="1146"/><bf gi="292" ue="1161" us="1160"/><bf gi="1024" ue="1163" us="1162"/><bf gi="1018" ue="1164" us="1164"/><bf gi="294" ue="1169" us="1165"/><bf gi="1020" ue="1171" us="1170"/><bf gi="299" ue="1173" us="1172"/><bf gi="1013" ue="1175" us="1174"/><bf gi="858" ue="1177" us="1176"/><bf gi="999" ue="1179" us="1178"/><bf gi="301" ue="1181" us="1180"/><bf gi="1022" ue="1183" us="1182"/><bf gi="303" ue="1185" us="1184"/><bf gi="1001" ue="1187" us="1186"/><bf gi="305" ue="1193" us="1188"/><bf gi="860" ue="1195" us="1194"/><bf gi="1003" ue="1197" us="1196"/><bf gi="862" ue="1199" us="1198"/><bf gi="1032" ue="1201" us="1200"/><bf gi="1005" ue="1203" us="1202"/><bf gi="311" ue="1205" us="1204"/><bf gi="1007" ue="1207" us="1206"/><bf gi="313" ue="1210" us="1208"/><bf gi="1017" ue="1211" us="1211"/><bf gi="316" ue="1213" us="1212"/><bf gi="1015" ue="1215" us="1214"/><bf gi="864" ue="1218" us="1216"/><bf gi="318" ue="1220" us="1219"/><bf gi="1030" ue="1222" us="1221"/><bf gi="320" ue="1224" us="1223"/><bf gi="1026" ue="1226" us="1225"/><bf gi="1009" ue="1228" us="1227"/><bf gi="1028" ue="1230" us="1229"/><bf gi="867" ue="1239" us="1231"/><bf gi="322" ue="1241" us="1240"/><bf gi="876" ue="1247" us="1242"/><bf gi="324" ue="1249" us="1248"/><bf gi="882" ue="1269" us="1250"/><bf gi="1011" ue="1271" us="1270"/><bf gi="902" ue="1273" us="1272"/><bf gi="326" ue="1275" us="1274"/><bf gi="904" ue="1277" us="1276"/><bf gi="1034" ue="1279" us="1278"/><bf gi="328" ue="1280" us="1280"/><bf gi="906" ue="1281" us="1281"/><bf gi="329" ue="1296" us="1282"/><bf gi="1036" ue="1297" us="1297"/><bf gi="907" ue="1299" us="1298"/><bf gi="843" ue="7681" us="7680"/><bf gi="841" ue="7743" us="7742"/><bf gi="827" ue="7813" us="7808"/><bf gi="909" ue="7921" us="7840"/><bf gi="833" ue="7923" us="7922"/><bf gi="991" ue="7929" us="7924"/><bf gi="845" ue="8013" us="8013"/><bf gi="344" ue="8203" us="8192"/><bf gi="356" ue="8212" us="8211"/><bf gi="1038" ue="8213" us="8213"/><bf gi="358" ue="8222" us="8215"/><bf gi="366" ue="8226" us="8224"/><bf gi="369" ue="8230" us="8229"/><bf gi="371" ue="8240" us="8240"/><bf gi="835" ue="8243" us="8242"/><bf gi="372" ue="8250" us="8249"/><bf gi="837" ue="8252" us="8252"/><bf gi="374" ue="8260" us="8260"/><bf gi="375" ue="8308" us="8308"/><bf gi="376" ue="8319" us="8319"/><bf gi="1037" ue="8355" us="8355"/><bf gi="377" ue="8356" us="8356"/><bf gi="378" ue="8359" us="8359"/><bf gi="998" ue="8363" us="8363"/><bf gi="379" ue="8364" us="8364"/><bf gi="380" ue="8453" us="8453"/><bf gi="381" ue="8467" us="8467"/><bf gi="382" ue="8470" us="8470"/><bf gi="383" ue="8482" us="8482"/><bf gi="181" ue="8486" us="8486"/><bf gi="384" ue="8494" us="8494"/><bf gi="385" ue="8542" us="8539"/><bf gi="389" ue="8706" us="8706"/><bf gi="173" ue="8710" us="8710"/><bf gi="390" ue="8719" us="8719"/><bf gi="391" ue="8722" us="8721"/><bf gi="393" ue="8730" us="8730"/><bf gi="394" ue="8734" us="8734"/><bf gi="395" ue="8747" us="8747"/><bf gi="396" ue="8776" us="8776"/><bf gi="397" ue="8800" us="8800"/><bf gi="398" ue="8805" us="8804"/><bf gi="400" ue="9674" us="9674"/><bf gi="401" ue="63171" us="63171"/><bf gi="402" ue="64257" us="64257"/><bf gi="838" ue="64258" us="64258"/><bf gi="846" ue="64260" us="64259"/><bf gi="403" ue="65279" us="65279"/><bf gi="404" ue="65533" us="65532"/><bf gi="0" ue="65535" us="65535"/></bfranges><cid-widths start-index="0"><wx w="243"/><wx w="0"/><wx w="243"/><wx w="243"/><wx w="287"/><wx w="620"/><wx w="554"/><wx w="739"/><wx w="615"/><wx w="169"/><wx w="312"/><wx w="318"/><wx w="424"/><wx w="564"/><wx w="191"/><wx w="286"/><wx w="238"/><wx w="396"/><wx w="583"/><wx w="554"/><wx w="554"/><wx w="554"/><wx w="554"/><wx w="554"/><wx w="554"/><wx w="554"/><wx w="554"/><wx w="554"/><wx w="211"/><wx w="213"/><wx w="511"/><wx w="560"/><wx w="518"/><wx w="454"/><wx w="913"/><wx w="624"/><wx w="619"/><wx w="641"/><wx w="656"/><wx w="576"/><wx w="576"/><wx w="684"/><wx w="707"/><wx w="270"/><wx w="550"/><wx w="638"/><wx w="526"/><wx w="866"/><wx w="709"/><wx w="672"/><wx w="618"/><wx w="673"/><wx w="658"/><wx w="601"/><wx w="592"/><wx w="670"/><wx w="616"/><wx w="895"/><wx w="613"/><wx w="607"/><wx w="597"/><wx w="239"/><wx w="394"/><wx w="239"/><wx w="416"/><wx w="431"/><wx w="285"/><wx w="537"/><wx w="556"/><wx w="518"/><wx w="556"/><wx w="515"/><wx w="328"/><wx w="557"/><wx w="556"/><wx w="227"/><wx w="236"/><wx w="491"/><wx w="227"/><wx w="886"/><wx w="556"/><wx w="556"/><wx w="556"/><wx w="556"/><wx w="340"/><wx w="509"/><wx w="332"/><wx w="556"/><wx w="489"/><wx w="756"/><wx w="489"/><wx w="489"/><wx w="489"/><wx w="330"/><wx w="220"/><wx w="330"/><wx w="684"/><wx w="220"/><wx w="544"/><wx w="571"/><wx w="723"/><wx w="597"/><wx w="216"/><wx w="604"/><wx w="468"/><wx w="799"/><wx w="442"/><wx w="455"/><wx w="545"/><wx w="801"/><wx w="426"/><wx w="377"/><wx w="530"/><wx w="407"/><wx w="416"/><wx w="281"/><wx w="556"/><wx w="475"/><wx w="245"/><wx w="243"/><wx w="249"/><wx w="450"/><wx w="453"/><wx w="762"/><wx w="765"/><wx w="835"/><wx w="467"/><wx w="910"/><wx w="523"/><wx w="673"/><wx w="592"/><wx w="585"/><wx w="845"/><wx w="581"/><wx w="568"/><wx w="557"/><wx w="562"/><wx w="689"/><wx w="222"/><wx w="542"/><wx w="521"/><wx w="258"/><wx w="700"/><wx w="556"/><wx w="934"/><wx w="923"/><wx w="227"/><wx w="327"/><wx w="697"/><wx w="559"/><wx w="681"/><wx w="590"/><wx w="228"/><wx w="515"/><wx w="429"/><wx w="408"/><wx w="422"/><wx w="237"/><wx w="330"/><wx w="250"/><wx w="435"/><wx w="377"/><wx w="319"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="253"/><wx w="479"/><wx w="245"/><wx w="551"/><wx w="696"/><wx w="673"/><wx w="647"/><wx w="559"/><wx w="707"/><wx w="559"/><wx w="714"/><wx w="694"/><wx w="654"/><wx w="562"/><wx w="592"/><wx w="489"/><wx w="556"/><wx w="543"/><wx w="498"/><wx w="556"/><wx w="573"/><wx w="299"/><wx w="556"/><wx w="510"/><wx w="595"/><wx w="556"/><wx w="534"/><wx w="556"/><wx w="511"/><wx w="556"/><wx w="685"/><wx w="533"/><wx w="683"/><wx w="858"/><wx w="614"/><wx w="536"/><wx w="786"/><wx w="744"/><wx w="660"/><wx w="1076"/><wx w="1079"/><wx w="804"/><wx w="705"/><wx w="627"/><wx w="723"/><wx w="879"/><wx w="594"/><wx w="709"/><wx w="702"/><wx w="627"/><wx w="742"/><wx w="713"/><wx w="665"/><wx w="925"/><wx w="942"/><wx w="774"/><wx w="834"/><wx w="612"/><wx w="660"/><wx w="910"/><wx w="611"/><wx w="550"/><wx w="559"/><wx w="421"/><wx w="573"/><wx w="767"/><wx w="506"/><wx w="562"/><wx w="518"/><wx w="562"/><wx w="730"/><wx w="562"/><wx w="562"/><wx w="483"/><wx w="724"/><wx w="569"/><wx w="532"/><wx w="793"/><wx w="802"/><wx w="629"/><wx w="750"/><wx w="535"/><wx w="534"/><wx w="812"/><wx w="542"/><wx w="557"/><wx w="534"/><wx w="854"/><wx w="861"/><wx w="557"/><wx w="562"/><wx w="887"/><wx w="823"/><wx w="534"/><wx w="893"/><wx w="743"/><wx w="600"/><wx w="527"/><wx w="877"/><wx w="752"/><wx w="814"/><wx w="706"/><wx w="1081"/><wx w="927"/><wx w="514"/><wx w="484"/><wx w="673"/><wx w="565"/><wx w="615"/><wx w="492"/><wx w="673"/><wx w="557"/><wx w="882"/><wx w="798"/><wx w="887"/><wx w="823"/><wx w="632"/><wx w="522"/><wx w="609"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="0"/><wx w="534"/><wx w="631"/><wx w="564"/><wx w="548"/><wx w="437"/><wx w="577"/><wx w="497"/><wx w="613"/><wx w="540"/><wx w="807"/><wx w="659"/><wx w="1007"/><wx w="724"/><wx w="1019"/><wx w="852"/><wx w="743"/><wx w="593"/><wx w="868"/><wx w="653"/><wx w="663"/><wx w="549"/><wx w="663"/><wx w="754"/><wx w="589"/><wx w="613"/><wx w="527"/><wx w="704"/><wx w="556"/><wx w="699"/><wx w="528"/><wx w="575"/><wx w="575"/><wx w="568"/><wx w="411"/><wx w="572"/><wx w="780"/><wx w="858"/><wx w="789"/><wx w="643"/><wx w="533"/><wx w="500"/><wx w="966"/><wx w="804"/><wx w="974"/><wx w="826"/><wx w="617"/><wx w="511"/><wx w="707"/><wx w="638"/><wx w="660"/><wx w="509"/><wx w="1020"/><wx w="509"/><wx w="1020"/><wx w="340"/><wx w="254"/><wx w="169"/><wx w="562"/><wx w="273"/><wx w="204"/><wx w="102"/><wx w="0"/><wx w="690"/><wx w="813"/><wx w="453"/><wx w="177"/><wx w="177"/><wx w="172"/><wx w="178"/><wx w="298"/><wx w="301"/><wx w="289"/><wx w="550"/><wx w="563"/><wx w="323"/><wx w="453"/><wx w="641"/><wx w="975"/><wx w="297"/><wx w="297"/><wx w="448"/><wx w="454"/><wx w="420"/><wx w="571"/><wx w="817"/><wx w="523"/><wx w="735"/><wx w="465"/><wx w="1096"/><wx w="617"/><wx w="633"/><wx w="830"/><wx w="895"/><wx w="916"/><wx w="846"/><wx w="578"/><wx w="657"/><wx w="577"/><wx w="570"/><wx w="545"/><wx w="1056"/><wx w="253"/><wx w="563"/><wx w="513"/><wx w="520"/><wx w="519"/><wx w="504"/><wx w="237"/><wx w="537"/><wx w="0"/><wx w="1022"/><wx w="1025"/><wx w="550"/><wx w="453"/><wx w="566"/><wx w="369"/><wx w="374"/><wx w="227"/><wx w="236"/><wx w="197"/><wx w="452"/><wx w="436"/><wx w="438"/><wx w="434"/><wx w="504"/><wx w="432"/><wx w="420"/><wx w="452"/><wx w="221"/><wx w="574"/><wx w="547"/><wx w="563"/><wx w="571"/><wx w="520"/><wx w="507"/><wx w="590"/><wx w="606"/><wx w="222"/><wx w="495"/><wx w="535"/><wx w="453"/><wx w="732"/><wx w="628"/><wx w="598"/><wx w="605"/><wx w="571"/><wx w="547"/><wx w="511"/><wx w="621"/><wx w="581"/><wx w="758"/><wx w="577"/><wx w="539"/><wx w="523"/><wx w="551"/><wx w="279"/><wx w="473"/><wx w="497"/><wx w="537"/><wx w="505"/><wx w="513"/><wx w="562"/><wx w="515"/><wx w="516"/><wx w="253"/><wx w="401"/><wx w="415"/><wx w="426"/><wx w="425"/><wx w="428"/><wx w="367"/><wx w="432"/><wx w="424"/><wx w="452"/><wx w="421"/><wx w="330"/><wx w="375"/><wx w="568"/><wx w="577"/><wx w="568"/><wx w="493"/><wx w="526"/><wx w="593"/><wx w="568"/><wx w="547"/><wx w="583"/><wx w="422"/><wx w="243"/><wx w="286"/><wx w="670"/><wx w="670"/><wx w="571"/><wx w="592"/><wx w="332"/><wx w="624"/><wx w="624"/><wx w="624"/><wx w="624"/><wx w="624"/><wx w="624"/><wx w="624"/><wx w="641"/><wx w="576"/><wx w="576"/><wx w="576"/><wx w="576"/><wx w="270"/><wx w="270"/><wx w="270"/><wx w="270"/><wx w="709"/><wx w="672"/><wx w="672"/><wx w="672"/><wx w="672"/><wx w="672"/><wx w="670"/><wx w="670"/><wx w="670"/><wx w="670"/><wx w="607"/><wx w="537"/><wx w="537"/><wx w="537"/><wx w="537"/><wx w="537"/><wx w="537"/><wx w="537"/><wx w="518"/><wx w="515"/><wx w="515"/><wx w="515"/><wx w="515"/><wx w="222"/><wx w="222"/><wx w="222"/><wx w="222"/><wx w="556"/><wx w="556"/><wx w="556"/><wx w="556"/><wx w="556"/><wx w="556"/><wx w="556"/><wx w="556"/><wx w="556"/><wx w="556"/><wx w="489"/><wx w="489"/><wx w="624"/><wx w="537"/><wx w="624"/><wx w="537"/><wx w="624"/><wx w="537"/><wx w="641"/><wx w="518"/><wx w="641"/><wx w="518"/><wx w="641"/><wx w="518"/><wx w="641"/><wx w="518"/><wx w="656"/><wx w="629"/><wx w="576"/><wx w="515"/><wx w="576"/><wx w="515"/><wx w="576"/><wx w="515"/><wx w="576"/><wx w="515"/><wx w="576"/><wx w="515"/><wx w="684"/><wx w="557"/><wx w="684"/><wx w="557"/><wx w="684"/><wx w="557"/><wx w="684"/><wx w="557"/><wx w="707"/><wx w="556"/><wx w="270"/><wx w="222"/><wx w="270"/><wx w="222"/><wx w="270"/><wx w="222"/><wx w="270"/><wx w="227"/><wx w="270"/><wx w="820"/><wx w="463"/><wx w="550"/><wx w="228"/><wx w="638"/><wx w="491"/><wx w="526"/><wx w="227"/><wx w="526"/><wx w="227"/><wx w="526"/><wx w="300"/><wx w="526"/><wx w="334"/><wx w="709"/><wx w="556"/><wx w="709"/><wx w="556"/><wx w="709"/><wx w="556"/><wx w="556"/><wx w="672"/><wx w="556"/><wx w="672"/><wx w="556"/><wx w="672"/><wx w="556"/><wx w="658"/><wx w="340"/><wx w="658"/><wx w="340"/><wx w="658"/><wx w="340"/><wx w="601"/><wx w="509"/><wx w="601"/><wx w="509"/><wx w="601"/><wx w="509"/><wx w="601"/><wx w="509"/><wx w="601"/><wx w="509"/><wx w="592"/><wx w="332"/><wx w="592"/><wx w="332"/><wx w="592"/><wx w="351"/><wx w="670"/><wx w="556"/><wx w="670"/><wx w="556"/><wx w="670"/><wx w="556"/><wx w="670"/><wx w="556"/><wx w="670"/><wx w="556"/><wx w="670"/><wx w="556"/><wx w="895"/><wx w="756"/><wx w="607"/><wx w="489"/><wx w="607"/><wx w="597"/><wx w="489"/><wx w="597"/><wx w="489"/><wx w="597"/><wx w="489"/><wx w="910"/><wx w="845"/><wx w="673"/><wx w="557"/><wx w="571"/><wx w="571"/><wx w="511"/><wx w="574"/><wx w="574"/><wx w="574"/><wx w="574"/><wx w="574"/><wx w="574"/><wx w="574"/><wx w="563"/><wx w="520"/><wx w="520"/><wx w="520"/><wx w="520"/><wx w="222"/><wx w="222"/><wx w="222"/><wx w="222"/><wx w="628"/><wx w="598"/><wx w="598"/><wx w="598"/><wx w="598"/><wx w="598"/><wx w="621"/><wx w="621"/><wx w="621"/><wx w="621"/><wx w="539"/><wx w="574"/><wx w="574"/><wx w="574"/><wx w="563"/><wx w="563"/><wx w="563"/><wx w="563"/><wx w="571"/><wx w="520"/><wx w="520"/><wx w="520"/><wx w="520"/><wx w="520"/><wx w="590"/><wx w="590"/><wx w="590"/><wx w="590"/><wx w="606"/><wx w="222"/><wx w="222"/><wx w="222"/><wx w="222"/><wx w="222"/><wx w="495"/><wx w="535"/><wx w="453"/><wx w="453"/><wx w="453"/><wx w="453"/><wx w="628"/><wx w="628"/><wx w="628"/><wx w="598"/><wx w="598"/><wx w="598"/><wx w="571"/><wx w="571"/><wx w="571"/><wx w="547"/><wx w="547"/><wx w="547"/><wx w="547"/><wx w="511"/><wx w="511"/><wx w="621"/><wx w="621"/><wx w="621"/><wx w="621"/><wx w="621"/><wx w="621"/><wx w="758"/><wx w="539"/><wx w="539"/><wx w="523"/><wx w="523"/><wx w="523"/><wx w="1095"/><wx w="624"/><wx w="625"/><wx w="755"/><wx w="319"/><wx w="682"/><wx w="656"/><wx w="664"/><wx w="299"/><wx w="624"/><wx w="619"/><wx w="576"/><wx w="597"/><wx w="707"/><wx w="270"/><wx w="638"/><wx w="866"/><wx w="709"/><wx w="672"/><wx w="618"/><wx w="592"/><wx w="607"/><wx w="613"/><wx w="270"/><wx w="607"/><wx w="562"/><wx w="543"/><wx w="556"/><wx w="299"/><wx w="556"/><wx w="542"/><wx w="556"/><wx w="556"/><wx w="489"/><wx w="299"/><wx w="556"/><wx w="556"/><wx w="556"/><wx w="858"/><wx w="576"/><wx w="551"/><wx w="601"/><wx w="270"/><wx w="270"/><wx w="550"/><wx w="638"/><wx w="638"/><wx w="627"/><wx w="624"/><wx w="619"/><wx w="551"/><wx w="576"/><wx w="709"/><wx w="866"/><wx w="707"/><wx w="672"/><wx w="707"/><wx w="618"/><wx w="641"/><wx w="592"/><wx w="613"/><wx w="537"/><wx w="515"/><wx w="562"/><wx w="556"/><wx w="556"/><wx w="518"/><wx w="489"/><wx w="489"/><wx w="515"/><wx w="421"/><wx w="509"/><wx w="227"/><wx w="222"/><wx w="236"/><wx w="518"/><wx w="489"/><wx w="895"/><wx w="756"/><wx w="895"/><wx w="756"/><wx w="895"/><wx w="756"/><wx w="607"/><wx w="489"/><wx w="169"/><wx w="287"/><wx w="451"/><wx w="555"/><wx w="228"/><wx w="177"/><wx w="866"/><wx w="886"/><wx w="624"/><wx w="537"/><wx w="672"/><wx w="865"/><wx w="884"/><wx w="576"/><wx w="709"/><wx w="515"/><wx w="562"/><wx w="694"/><wx w="683"/><wx w="615"/><wx w="492"/><wx w="1045"/><wx w="1162"/><wx w="594"/><wx w="506"/><wx w="641"/><wx w="518"/><wx w="607"/><wx w="489"/><wx w="270"/><wx w="879"/><wx w="767"/><wx w="270"/><wx w="624"/><wx w="537"/><wx w="624"/><wx w="537"/><wx w="910"/><wx w="845"/><wx w="576"/><wx w="515"/><wx w="699"/><wx w="528"/><wx w="879"/><wx w="767"/><wx w="594"/><wx w="506"/><wx w="709"/><wx w="562"/><wx w="709"/><wx w="562"/><wx w="672"/><wx w="556"/><wx w="673"/><wx w="565"/><wx w="673"/><wx w="565"/><wx w="660"/><wx w="534"/><wx w="627"/><wx w="489"/><wx w="627"/><wx w="489"/><wx w="627"/><wx w="489"/><wx w="665"/><wx w="532"/><wx w="834"/><wx w="750"/><wx w="613"/><wx w="489"/><wx w="556"/><wx w="702"/><wx w="562"/><wx w="624"/><wx w="537"/><wx w="624"/><wx w="537"/><wx w="624"/><wx w="537"/><wx w="624"/><wx w="537"/><wx w="624"/><wx w="537"/><wx w="624"/><wx w="537"/><wx w="624"/><wx w="537"/><wx w="624"/><wx w="537"/><wx w="624"/><wx w="537"/><wx w="624"/><wx w="537"/><wx w="624"/><wx w="537"/><wx w="624"/><wx w="537"/><wx w="576"/><wx w="515"/><wx w="576"/><wx w="515"/><wx w="576"/><wx w="515"/><wx w="576"/><wx w="515"/><wx w="576"/><wx w="515"/><wx w="576"/><wx w="515"/><wx w="576"/><wx w="515"/><wx w="576"/><wx w="515"/><wx w="270"/><wx w="222"/><wx w="270"/><wx w="227"/><wx w="672"/><wx w="556"/><wx w="672"/><wx w="556"/><wx w="672"/><wx w="556"/><wx w="672"/><wx w="556"/><wx w="672"/><wx w="556"/><wx w="672"/><wx w="556"/><wx w="672"/><wx w="556"/><wx w="697"/><wx w="559"/><wx w="697"/><wx w="559"/><wx w="697"/><wx w="559"/><wx w="697"/><wx w="559"/><wx w="697"/><wx w="559"/><wx w="670"/><wx w="556"/><wx w="670"/><wx w="556"/><wx w="681"/><wx w="590"/><wx w="681"/><wx w="590"/><wx w="681"/><wx w="590"/><wx w="681"/><wx w="590"/><wx w="681"/><wx w="590"/><wx w="607"/><wx w="489"/><wx w="607"/><wx w="489"/><wx w="607"/><wx w="489"/><wx w="571"/><wx w="571"/><wx w="638"/><wx w="518"/><wx w="707"/><wx w="562"/><wx w="592"/><wx w="483"/><wx w="613"/><wx w="489"/><wx w="665"/><wx w="532"/><wx w="665"/><wx w="532"/><wx w="551"/><wx w="421"/><wx w="879"/><wx w="767"/><wx w="754"/><wx w="589"/><wx w="556"/><wx w="612"/><wx w="612"/><wx w="551"/><wx w="421"/><wx w="648"/><wx w="500"/><wx w="709"/><wx w="562"/><wx w="707"/><wx w="562"/><wx w="866"/><wx w="730"/><wx w="702"/><wx w="562"/><wx w="607"/><wx w="489"/><wx w="613"/><wx w="489"/><wx w="543"/><wx w="576"/><wx w="813"/><wx w="225"/></cid-widths></multibyte-extras></font-metrics>
    \ No newline at end of file
    diff --git a/jOOQ-website/tutorial.php b/jOOQ-website/tutorial.php
    deleted file mode 100644
    index e7c1c01b43..0000000000
    --- a/jOOQ-website/tutorial.php
    +++ /dev/null
    @@ -1,4 +0,0 @@
    -<?php
    -require 'conf.php';
    -header('Location: ' . $root . '/doc/' . $minorVersion . '/manual/getting-started/tutorials/jooq-in-7-steps');
    -?>
    \ No newline at end of file
    diff --git a/jOOQ-website/users.csv b/jOOQ-website/users.csv
    deleted file mode 100644
    index e69de29bb2..0000000000
    diff --git a/jOOQ-website/xsd/.htaccess b/jOOQ-website/xsd/.htaccess
    deleted file mode 100644
    index 2f134288fc..0000000000
    --- a/jOOQ-website/xsd/.htaccess
    +++ /dev/null
    @@ -1 +0,0 @@
    -Options +Indexes
    \ No newline at end of file
    diff --git a/jOOQ-website/xsd/jooq-codegen-2.0.4.xsd b/jOOQ-website/xsd/jooq-codegen-2.0.4.xsd
    deleted file mode 100644
    index 3662d820dd..0000000000
    --- a/jOOQ-website/xsd/jooq-codegen-2.0.4.xsd
    +++ /dev/null
    @@ -1,313 +0,0 @@
    -<?xml version="1.0" encoding="UTF-8"?>
    -<schema xmlns="http://www.w3.org/2001/XMLSchema"
    -    xmlns:tns="http://www.jooq.org/xsd/jooq-codegen-2.0.4.xsd"
    -    targetNamespace="http://www.jooq.org/xsd/jooq-codegen-2.0.4.xsd"
    -    elementFormDefault="qualified">
    -
    -    <element name="configuration">
    -        <complexType>
    -            <all>
    -                <!--
    -                  The JDBC configuration element contains information about how
    -                  to set up the database connection used for source code generation
    -                  -->
    -                <element name="jdbc" type="tns:Jdbc" minOccurs="1"
    -                    maxOccurs="1" />
    -
    -                <!--
    -                  The GENERATOR configuration element contains information about
    -                  source code generation itself
    -                  -->
    -                <element name="generator" type="tns:Generator" minOccurs="1"
    -                    maxOccurs="1" />
    -            </all>
    -        </complexType>
    -    </element>
    -
    -    <complexType name="Jdbc">
    -        <all>
    -            <!-- The JDBC driver -->
    -            <element name="driver" type="string" minOccurs="1" maxOccurs="1" />
    -
    -            <!-- The JDBC connection URL -->
    -            <element name="url" type="string" minOccurs="1" maxOccurs="1" />
    -
    -            <!-- Deprecated. Use database schema configuration elements instead -->
    -            <element name="schema" type="string" minOccurs="0" maxOccurs="1" />
    -
    -            <!--
    -              The JDBC connection user. Be sure this user has all required
    -              GRANTs to the dictionary views/tables to generate the desired artefacts
    -              -->
    -            <element name="user" type="string" minOccurs="0" maxOccurs="1" />
    -
    -            <!-- The JDBC connection password -->
    -            <element name="password" type="string" minOccurs="0" maxOccurs="1" />
    -        </all>
    -    </complexType>
    -
    -    <complexType name="Generator">
    -        <all>
    -            <!--
    -             The class used to generate source code. You may override this with
    -             your custom source code generator
    -             -->
    -            <element name="name" type="string" default="org.jooq.util.DefaultGenerator"
    -                minOccurs="0" maxOccurs="1" />
    -
    -            <!-- The naming strategy used for class and field names -->
    -            <element name="strategy" type="tns:Strategy" minOccurs="0" maxOccurs="1" />
    -
    -            <!-- The jooq-meta configuration -->
    -            <element name="database" type="tns:Database" minOccurs="1" maxOccurs="1" />
    -
    -            <!-- The jooq-codegen configuration -->
    -            <element name="generate" type="tns:Generate" minOccurs="0" maxOccurs="1" />
    -
    -            <!-- Some information about generation output -->
    -            <element name="target" type="tns:Target" minOccurs="0" maxOccurs="1" />
    -        </all>
    -    </complexType>
    -
    -    <complexType name="Strategy">
    -        <all>
    -            <!--
    -              The class used to provide a naming strategy for generated source
    -              code. You may override this with your custom naming strategy
    -              -->
    -            <element name="name" type="string" minOccurs="0" maxOccurs="1"
    -                default="org.jooq.util.DefaultGeneratorStrategy" />
    -        </all>
    -    </complexType>
    -
    -    <complexType name="Database">
    -        <all>
    -            <!--
    -              The database dialect from jooq-meta. Available dialects are
    -              named org.util.[database].[database]Database. Known values are:
    -
    -              org.jooq.util.ase.ASEDatabase
    -              org.jooq.util.db2.DB2Database
    -              org.jooq.util.derby.DerbyDatabase
    -              org.jooq.util.h2.H2Database
    -              org.jooq.util.hsqldb.HSQLDBDatabase
    -              org.jooq.util.ingres.IngresDatabase
    -              org.jooq.util.mysql.MySQLDatabase
    -              org.jooq.util.oracle.OracleDatabase
    -              org.jooq.util.postgres.PostgresDatabase
    -              org.jooq.util.sqlite.SQLiteDatabaes
    -              org.jooq.util.sqlserver.SQLServerDatabase
    -              org.jooq.util.sybase.SybaseDatabase
    -
    -              You can also provide your own org.jooq.util.Database implementation
    -              here, if your database is currently not supported
    -              -->
    -            <element name="name" type="string" minOccurs="1" maxOccurs="1" />
    -
    -            <!--
    -              All elements that are generated from your schema (several Java
    -              regular expressions, separated by comma) Watch out for
    -              case-sensitivity. Depending on your database, this might be
    -              important! You can create case-insensitive regular expressions
    -              using this syntax: (?i:expr)A comma-separated list of regular
    -              expressions
    -              -->
    -            <element name="includes" type="string" default=".*" minOccurs="0" maxOccurs="1" />
    -
    -            <!--
    -              All elements that are excluded from your schema (several Java
    -              regular expressions, separated by comma). Excludes match before
    -              includes
    -              -->
    -            <element name="excludes" type="string" default="" minOccurs="0" maxOccurs="1" />
    -
    -            <!--
    -              Generate java.sql.Timestamp fields for DATE columns. This is
    -              particularly useful for Oracle databases
    -              -->
    -            <element name="dateAsTimestamp" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
    -
    -            <!--
    -              Generate jOOU data types for your unsigned data types, which are
    -              not natively supported in Java
    -              -->
    -            <element name="unsignedTypes" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
    -
    -            <!--
    -              The schema that is used locally as a source for meta information.
    -              This could be your development schema or the production schema, etc
    -              This cannot be combined with the schemata element.
    -              For backwards compatibility, this defaults to jdbc/schema
    -              -->
    -            <element name="inputSchema" type="string" default="" minOccurs="0" maxOccurs="1" />
    -
    -            <!--
    -              The schema that is used in generated source code. This will be the
    -              production schema. Use this to override your local development
    -              schema name for source code generation. If not specified, this
    -              will be the same as the input-schema.
    -              -->
    -            <element name="outputSchema" type="string" default="" minOccurs="0" maxOccurs="1" />
    -
    -            <!--
    -              A configuration element to configure several input and/or output
    -              schemata for jooq-meta, in case you're using jooq-meta in a multi-
    -              schema environment
    -              -->
    -            <element name="schemata" type="tns:Schemata" minOccurs="0" maxOccurs="1"/>
    -
    -            <!--
    -              A configuration element to configure master data table enum classes
    -              -->
    -            <element name="masterDataTables" type="tns:MasterDataTables" minOccurs="0" maxOccurs="1"/>
    -
    -            <!--
    -              A configuration element to configure synthetic enum types
    -              This is EXPERIMENTAL functionality. Use at your own risk
    -              -->
    -            <element name="enumTypes" type="tns:EnumTypes" minOccurs="0" maxOccurs="1"/>
    -
    -            <!--
    -              A configuration element to configure type overrides for generated
    -              artefacts (e.g. in combination with enumTypes)
    -              This is EXPERIMENTAL functionality. Use at your own risk
    -              -->
    -            <element name="forcedTypes" type="tns:ForcedTypes" minOccurs="0" maxOccurs="1"/>
    -        </all>
    -    </complexType>
    -
    -    <complexType name="Schemata">
    -        <sequence>
    -            <!--
    -              A configuration element for a single schema in multi-schema
    -              environments
    -              -->
    -            <element name="schema" type="tns:Schema" minOccurs="1" maxOccurs="unbounded"/>
    -        </sequence>
    -    </complexType>
    -
    -    <complexType name="Schema">
    -        <all>
    -            <!-- See also database/inputSchema -->
    -            <element name="inputSchema" type="string" default="" minOccurs="1" maxOccurs="1" />
    -
    -            <!-- See also database/outputSchema -->
    -            <element name="outputSchema" type="string" default="" minOccurs="0" maxOccurs="1" />
    -        </all>
    -    </complexType>
    -
    -    <complexType name="MasterDataTables">
    -        <sequence>
    -            <!-- A configuration element for a master data table -->
    -            <element name="masterDataTable" type="tns:MasterDataTable" minOccurs="0" maxOccurs="unbounded" />
    -        </sequence>
    -    </complexType>
    -
    -    <complexType name="EnumTypes">
    -        <sequence>
    -            <!-- A configuration element for a synthetic enum type -->
    -            <element name="enumType" type="tns:EnumType" minOccurs="0" maxOccurs="unbounded" />
    -        </sequence>
    -    </complexType>
    -
    -    <complexType name="ForcedTypes">
    -        <sequence>
    -            <!-- A configuration element for a forced type override -->
    -            <element name="forcedType" type="tns:ForcedType" minOccurs="0" maxOccurs="unbounded" />
    -        </sequence>
    -    </complexType>
    -
    -    <complexType name="MasterDataTable">
    -        <all>
    -            <!-- The name of a master data table -->
    -            <element name="name" type="string" minOccurs="1" maxOccurs="1" />
    -
    -            <!-- The column used for enum literals -->
    -            <element name="literal" type="string" minOccurs="0" maxOccurs="1" />
    -
    -            <!-- The column used for documentation -->
    -            <element name="description" type="string" minOccurs="0" maxOccurs="1" />
    -        </all>
    -    </complexType>
    -
    -    <complexType name="EnumType">
    -        <all>
    -            <!-- The name of the synthetic enum type -->
    -            <element name="name" type="string" minOccurs="1" maxOccurs="1" />
    -
    -            <!-- A comma separated (CSV format) list of enum literals -->
    -            <element name="literals" type="string" minOccurs="1" maxOccurs="1" />
    -        </all>
    -    </complexType>
    -
    -    <complexType name="ForcedType">
    -        <all>
    -            <!-- The name of the type to be forced upon various artefacts -->
    -            <element name="name" type="string" minOccurs="1" maxOccurs="1" />
    -
    -            <!--
    -              A comma-separated list of Java regular expressions matching
    -              columns, parameters, attributes, etc to be forced to have this
    -              type
    -              -->
    -            <element name="expressions" type="string" minOccurs="1" maxOccurs="1" />
    -        </all>
    -    </complexType>
    -
    -    <complexType name="Generate">
    -        <all>
    -            <!--
    -              Primary key / foreign key relations should be generated and used.
    -              This is a prerequisite for various advanced features
    -              -->
    -            <element name="relations" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
    -
    -            <!--
    -              Generate navigation methods to navigate foreign key relationships
    -              directly from Record classes. This is only relevant if relations
    -              is set to true, too
    -              -->
    -            <element name="navigationMethods" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
    -
    -            <!-- Generate deprecated code for backwards compatibility -->
    -            <element name="deprecated" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
    -
    -            <!--
    -              Generate instance fields in your tables, as opposed to static
    -              fields. This simplifies aliasing
    -              -->
    -            <element name="instanceFields" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
    -
    -            <!--
    -              Generate the javax.annotation.Generated annotation to indicate
    -              jOOQ version used for source code
    -              -->
    -            <element name="generatedAnnotation" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
    -
    -            <!--
    -              Generate POJOs in addition to Record classes for usage of the
    -              ResultQuery.fetchInto(Class) API
    -              -->
    -            <element name="pojos" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
    -
    -            <!--
    -              Annotate POJOs and Records with JPA annotations for increased
    -              compatibility and better integration with JPA/Hibernate, etc
    -              -->
    -            <element name="jpaAnnotations" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
    -        </all>
    -    </complexType>
    -
    -    <complexType name="Target">
    -        <all>
    -            <!--
    -              The destination package of your generated classes (within the
    -              destination directory)
    -              -->
    -            <element name="packageName" type="string" default="org.jooq.generated" minOccurs="0" maxOccurs="1" />
    -
    -            <!-- The destination directory of your generated classes -->
    -            <element name="directory" type="string" default="target/generated-sources/jooq" />
    -        </all>
    -    </complexType>
    -</schema>
    \ No newline at end of file
    diff --git a/jOOQ-website/xsd/jooq-codegen-2.1.0.xsd b/jOOQ-website/xsd/jooq-codegen-2.1.0.xsd
    deleted file mode 100644
    index 11e36fdf2c..0000000000
    --- a/jOOQ-website/xsd/jooq-codegen-2.1.0.xsd
    +++ /dev/null
    @@ -1,362 +0,0 @@
    -<?xml version="1.0" encoding="UTF-8"?>
    -<schema xmlns="http://www.w3.org/2001/XMLSchema"
    -  xmlns:tns="http://www.jooq.org/xsd/jooq-codegen-2.1.0.xsd"
    -  targetNamespace="http://www.jooq.org/xsd/jooq-codegen-2.1.0.xsd"
    -  elementFormDefault="qualified">
    -
    -  <element name="configuration">
    -    <complexType>
    -      <all>
    -        <!--
    -          The JDBC configuration element contains information about how
    -          to set up the database connection used for source code generation
    -          -->
    -        <element name="jdbc" type="tns:Jdbc" minOccurs="1"
    -          maxOccurs="1" />
    -
    -        <!--
    -          The GENERATOR configuration element contains information about
    -          source code generation itself
    -          -->
    -        <element name="generator" type="tns:Generator" minOccurs="1"
    -          maxOccurs="1" />
    -      </all>
    -    </complexType>
    -  </element>
    -
    -  <complexType name="Jdbc">
    -    <all>
    -      <!-- The JDBC driver -->
    -      <element name="driver" type="string" minOccurs="1" maxOccurs="1" />
    -
    -      <!-- The JDBC connection URL -->
    -      <element name="url" type="string" minOccurs="1" maxOccurs="1" />
    -
    -      <!-- Deprecated. Use database schema configuration elements instead -->
    -      <element name="schema" type="string" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        The JDBC connection user. Be sure this user has all required
    -        GRANTs to the dictionary views/tables to generate the desired artefacts
    -        -->
    -      <element name="user" type="string" minOccurs="0" maxOccurs="1" />
    -
    -      <!-- The JDBC connection password -->
    -      <element name="password" type="string" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Enlist custom JDBC driver properties that are provided to the
    -        java.sql.DriverManager when fetching a connection
    -        -->
    -      <element name="properties" type="tns:Properties" minOccurs="0" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="Properties">
    -    <sequence>
    -      <element name="property" type="tns:Property" minOccurs="0" maxOccurs="unbounded"/>
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="Property">
    -    <all>
    -      <element name="key" type="string" minOccurs="1" maxOccurs="1"/>
    -      <element name="value" type="string" minOccurs="1" maxOccurs="1"/>
    -    </all>
    -  </complexType>
    -
    -  <complexType name="Generator">
    -    <all>
    -      <!--
    -       The class used to generate source code. You may override this with
    -       your custom source code generator
    -       -->
    -      <element name="name" type="string" default="org.jooq.util.DefaultGenerator"
    -        minOccurs="0" maxOccurs="1" />
    -
    -      <!-- The naming strategy used for class and field names -->
    -      <element name="strategy" type="tns:Strategy" minOccurs="0" maxOccurs="1" />
    -
    -      <!-- The jooq-meta configuration -->
    -      <element name="database" type="tns:Database" minOccurs="1" maxOccurs="1" />
    -
    -      <!-- The jooq-codegen configuration -->
    -      <element name="generate" type="tns:Generate" minOccurs="0" maxOccurs="1" />
    -
    -      <!-- Some information about generation output -->
    -      <element name="target" type="tns:Target" minOccurs="0" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="Strategy">
    -    <all>
    -      <!--
    -        The class used to provide a naming strategy for generated source
    -        code. You may override this with your custom naming strategy
    -        -->
    -      <element name="name" type="string" minOccurs="0" maxOccurs="1"
    -        default="org.jooq.util.DefaultGeneratorStrategy" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="Database">
    -    <all>
    -      <!--
    -        The database dialect from jooq-meta. Available dialects are
    -        named org.util.[database].[database]Database. Known values are:
    -
    -        org.jooq.util.ase.ASEDatabase
    -        org.jooq.util.db2.DB2Database
    -        org.jooq.util.derby.DerbyDatabase
    -        org.jooq.util.h2.H2Database
    -        org.jooq.util.hsqldb.HSQLDBDatabase
    -        org.jooq.util.ingres.IngresDatabase
    -        org.jooq.util.mysql.MySQLDatabase
    -        org.jooq.util.oracle.OracleDatabase
    -        org.jooq.util.postgres.PostgresDatabase
    -        org.jooq.util.sqlite.SQLiteDatabaes
    -        org.jooq.util.sqlserver.SQLServerDatabase
    -        org.jooq.util.sybase.SybaseDatabase
    -
    -        You can also provide your own org.jooq.util.Database implementation
    -        here, if your database is currently not supported
    -        -->
    -      <element name="name" type="string" minOccurs="1" maxOccurs="1" />
    -
    -      <!--
    -        All elements that are generated from your schema (several Java
    -        regular expressions, separated by comma) Watch out for
    -        case-sensitivity. Depending on your database, this might be
    -        important! You can create case-insensitive regular expressions
    -        using this syntax: (?i:expr)A comma-separated list of regular
    -        expressions
    -        -->
    -      <element name="includes" type="string" default=".*" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        All elements that are excluded from your schema (several Java
    -        regular expressions, separated by comma). Excludes match before
    -        includes
    -        -->
    -      <element name="excludes" type="string" default="" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate java.sql.Timestamp fields for DATE columns. This is
    -        particularly useful for Oracle databases
    -        -->
    -      <element name="dateAsTimestamp" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate jOOU data types for your unsigned data types, which are
    -        not natively supported in Java
    -        -->
    -      <element name="unsignedTypes" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        The schema that is used locally as a source for meta information.
    -        This could be your development schema or the production schema, etc
    -        This cannot be combined with the schemata element.
    -        For backwards compatibility, this defaults to jdbc/schema
    -        -->
    -      <element name="inputSchema" type="string" default="" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        The schema that is used in generated source code. This will be the
    -        production schema. Use this to override your local development
    -        schema name for source code generation. If not specified, this
    -        will be the same as the input-schema.
    -        -->
    -      <element name="outputSchema" type="string" default="" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        A configuration element to configure several input and/or output
    -        schemata for jooq-meta, in case you're using jooq-meta in a multi-
    -        schema environment
    -        -->
    -      <element name="schemata" type="tns:Schemata" minOccurs="0" maxOccurs="1"/>
    -
    -      <!--
    -        A configuration element to configure master data table enum classes
    -        -->
    -      <element name="masterDataTables" type="tns:MasterDataTables" minOccurs="0" maxOccurs="1"/>
    -
    -      <!--
    -        A configuration element to configure custom types introduced to jOOQ
    -        using converters
    -        This is EXPERIMENTAL functionality. Use at your own risk
    -        -->
    -      <element name="customTypes" type="tns:CustomTypes" minOccurs="0" maxOccurs="1"/>
    -
    -      <!--
    -        A configuration element to configure synthetic enum types
    -        This is EXPERIMENTAL / DEPRECATED functionality. Do not re-use
    -        -->
    -      <element name="enumTypes" type="tns:EnumTypes" minOccurs="0" maxOccurs="1"/>
    -
    -      <!--
    -        A configuration element to configure type overrides for generated
    -        artefacts (e.g. in combination with enumTypes)
    -        This is EXPERIMENTAL functionality. Use at your own risk
    -        -->
    -      <element name="forcedTypes" type="tns:ForcedTypes" minOccurs="0" maxOccurs="1"/>
    -    </all>
    -  </complexType>
    -
    -  <complexType name="Schemata">
    -    <sequence>
    -      <!--
    -        A configuration element for a single schema in multi-schema
    -        environments
    -        -->
    -      <element name="schema" type="tns:Schema" minOccurs="1" maxOccurs="unbounded"/>
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="Schema">
    -    <all>
    -      <!-- See also database/inputSchema -->
    -      <element name="inputSchema" type="string" default="" minOccurs="1" maxOccurs="1" />
    -
    -      <!-- See also database/outputSchema -->
    -      <element name="outputSchema" type="string" default="" minOccurs="0" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="MasterDataTables">
    -    <sequence>
    -      <!-- A configuration element for a master data table -->
    -      <element name="masterDataTable" type="tns:MasterDataTable" minOccurs="0" maxOccurs="unbounded" />
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="CustomTypes">
    -    <sequence>
    -      <!-- A configuration element for a custom type -->
    -      <element name="customType" type="tns:CustomType" minOccurs="0" maxOccurs="unbounded" />
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="EnumTypes">
    -    <sequence>
    -      <!-- A configuration element for a synthetic enum type -->
    -      <element name="enumType" type="tns:EnumType" minOccurs="0" maxOccurs="unbounded" />
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="ForcedTypes">
    -    <sequence>
    -      <!-- A configuration element for a forced type override -->
    -      <element name="forcedType" type="tns:ForcedType" minOccurs="0" maxOccurs="unbounded" />
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="MasterDataTable">
    -    <all>
    -      <!-- The name of a master data table -->
    -      <element name="name" type="string" minOccurs="1" maxOccurs="1" />
    -
    -      <!-- The column used for enum literals -->
    -      <element name="literal" type="string" minOccurs="0" maxOccurs="1" />
    -
    -      <!-- The column used for documentation -->
    -      <element name="description" type="string" minOccurs="0" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="CustomType">
    -    <all>
    -      <!-- The name of the custom type -->
    -      <element name="name" type="string" minOccurs="1" maxOccurs="1" />
    -
    -      <!-- A converter implementation for the custom type -->
    -      <element name="converter" type="string" minOccurs="1" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="EnumType">
    -    <all>
    -      <!-- The name of the synthetic enum type -->
    -      <element name="name" type="string" minOccurs="1" maxOccurs="1" />
    -
    -      <!-- A comma separated (CSV format) list of enum literals -->
    -      <element name="literals" type="string" minOccurs="1" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="ForcedType">
    -    <all>
    -      <!-- The name of the type to be forced upon various artefacts -->
    -      <element name="name" type="string" minOccurs="1" maxOccurs="1" />
    -
    -      <!--
    -        A comma-separated list of Java regular expressions matching
    -        columns, parameters, attributes, etc to be forced to have this
    -        type
    -        -->
    -      <element name="expressions" type="string" minOccurs="1" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="Generate">
    -    <all>
    -      <!--
    -        Primary key / foreign key relations should be generated and used.
    -        This is a prerequisite for various advanced features
    -        -->
    -      <element name="relations" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate navigation methods to navigate foreign key relationships
    -        directly from Record classes. This is only relevant if relations
    -        is set to true, too
    -        -->
    -      <element name="navigationMethods" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
    -
    -      <!-- Generate deprecated code for backwards compatibility -->
    -      <element name="deprecated" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate instance fields in your tables, as opposed to static
    -        fields. This simplifies aliasing
    -        -->
    -      <element name="instanceFields" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate the javax.annotation.Generated annotation to indicate
    -        jOOQ version used for source code
    -        -->
    -      <element name="generatedAnnotation" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate TableRecord classes. Disable this when you don't
    -        need the additional type-safety
    -        -->
    -      <element name="records" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate POJOs in addition to Record classes for usage of the
    -        ResultQuery.fetchInto(Class) API
    -        -->
    -      <element name="pojos" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Annotate POJOs and Records with JPA annotations for increased
    -        compatibility and better integration with JPA/Hibernate, etc
    -        -->
    -      <element name="jpaAnnotations" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="Target">
    -    <all>
    -      <!--
    -        The destination package of your generated classes (within the
    -        destination directory)
    -        -->
    -      <element name="packageName" type="string" default="org.jooq.generated" minOccurs="0" maxOccurs="1" />
    -
    -      <!-- The destination directory of your generated classes -->
    -      <element name="directory" type="string" default="target/generated-sources/jooq" />
    -    </all>
    -  </complexType>
    -</schema>
    \ No newline at end of file
    diff --git a/jOOQ-website/xsd/jooq-codegen-2.3.0.xsd b/jOOQ-website/xsd/jooq-codegen-2.3.0.xsd
    deleted file mode 100644
    index 0ddf539ebd..0000000000
    --- a/jOOQ-website/xsd/jooq-codegen-2.3.0.xsd
    +++ /dev/null
    @@ -1,368 +0,0 @@
    -<?xml version="1.0" encoding="UTF-8"?>
    -<schema xmlns="http://www.w3.org/2001/XMLSchema"
    -  xmlns:tns="http://www.jooq.org/xsd/jooq-codegen-2.3.0.xsd"
    -  targetNamespace="http://www.jooq.org/xsd/jooq-codegen-2.3.0.xsd"
    -  elementFormDefault="qualified">
    -
    -  <element name="configuration">
    -    <complexType>
    -      <all>
    -        <!--
    -          The JDBC configuration element contains information about how
    -          to set up the database connection used for source code generation
    -          -->
    -        <element name="jdbc" type="tns:Jdbc" minOccurs="1"
    -          maxOccurs="1" />
    -
    -        <!--
    -          The GENERATOR configuration element contains information about
    -          source code generation itself
    -          -->
    -        <element name="generator" type="tns:Generator" minOccurs="1"
    -          maxOccurs="1" />
    -      </all>
    -    </complexType>
    -  </element>
    -
    -  <complexType name="Jdbc">
    -    <all>
    -      <!-- The JDBC driver -->
    -      <element name="driver" type="string" minOccurs="1" maxOccurs="1" />
    -
    -      <!-- The JDBC connection URL -->
    -      <element name="url" type="string" minOccurs="1" maxOccurs="1" />
    -
    -      <!-- Deprecated. Use database schema configuration elements instead -->
    -      <element name="schema" type="string" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        The JDBC connection user. Be sure this user has all required
    -        GRANTs to the dictionary views/tables to generate the desired artefacts
    -        -->
    -      <element name="user" type="string" minOccurs="0" maxOccurs="1" />
    -
    -      <!-- The JDBC connection password -->
    -      <element name="password" type="string" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Enlist custom JDBC driver properties that are provided to the
    -        java.sql.DriverManager when fetching a connection
    -        -->
    -      <element name="properties" type="tns:Properties" minOccurs="0" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="Properties">
    -    <sequence>
    -      <element name="property" type="tns:Property" minOccurs="0" maxOccurs="unbounded"/>
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="Property">
    -    <all>
    -      <element name="key" type="string" minOccurs="1" maxOccurs="1"/>
    -      <element name="value" type="string" minOccurs="1" maxOccurs="1"/>
    -    </all>
    -  </complexType>
    -
    -  <complexType name="Generator">
    -    <all>
    -      <!--
    -       The class used to generate source code. You may override this with
    -       your custom source code generator
    -       -->
    -      <element name="name" type="string" default="org.jooq.util.DefaultGenerator"
    -        minOccurs="0" maxOccurs="1" />
    -
    -      <!-- The naming strategy used for class and field names -->
    -      <element name="strategy" type="tns:Strategy" minOccurs="0" maxOccurs="1" />
    -
    -      <!-- The jooq-meta configuration -->
    -      <element name="database" type="tns:Database" minOccurs="1" maxOccurs="1" />
    -
    -      <!-- The jooq-codegen configuration -->
    -      <element name="generate" type="tns:Generate" minOccurs="0" maxOccurs="1" />
    -
    -      <!-- Some information about generation output -->
    -      <element name="target" type="tns:Target" minOccurs="0" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="Strategy">
    -    <all>
    -      <!--
    -        The class used to provide a naming strategy for generated source
    -        code. You may override this with your custom naming strategy
    -        -->
    -      <element name="name" type="string" minOccurs="0" maxOccurs="1"
    -        default="org.jooq.util.DefaultGeneratorStrategy" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="Database">
    -    <all>
    -      <!--
    -        The database dialect from jooq-meta. Available dialects are
    -        named org.util.[database].[database]Database. Known values are:
    -
    -        org.jooq.util.ase.ASEDatabase
    -        org.jooq.util.cubrid.CUBRIDDatabase
    -        org.jooq.util.db2.DB2Database
    -        org.jooq.util.derby.DerbyDatabase
    -        org.jooq.util.h2.H2Database
    -        org.jooq.util.hsqldb.HSQLDBDatabase
    -        org.jooq.util.ingres.IngresDatabase
    -        org.jooq.util.mysql.MySQLDatabase
    -        org.jooq.util.oracle.OracleDatabase
    -        org.jooq.util.postgres.PostgresDatabase
    -        org.jooq.util.sqlite.SQLiteDatabaes
    -        org.jooq.util.sqlserver.SQLServerDatabase
    -        org.jooq.util.sybase.SybaseDatabase
    -
    -        You can also provide your own org.jooq.util.Database implementation
    -        here, if your database is currently not supported
    -        -->
    -      <element name="name" type="string" minOccurs="1" maxOccurs="1" />
    -
    -      <!--
    -        All elements that are generated from your schema (several Java
    -        regular expressions, separated by comma) Watch out for
    -        case-sensitivity. Depending on your database, this might be
    -        important! You can create case-insensitive regular expressions
    -        using this syntax: (?i:expr)A comma-separated list of regular
    -        expressions
    -        -->
    -      <element name="includes" type="string" default=".*" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        All elements that are excluded from your schema (several Java
    -        regular expressions, separated by comma). Excludes match before
    -        includes
    -        -->
    -      <element name="excludes" type="string" default="" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate java.sql.Timestamp fields for DATE columns. This is
    -        particularly useful for Oracle databases
    -        -->
    -      <element name="dateAsTimestamp" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate jOOU data types for your unsigned data types, which are
    -        not natively supported in Java
    -        -->
    -      <element name="unsignedTypes" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        The schema that is used locally as a source for meta information.
    -        This could be your development schema or the production schema, etc
    -        This cannot be combined with the schemata element.
    -        For backwards compatibility, this defaults to jdbc/schema
    -        -->
    -      <element name="inputSchema" type="string" default="" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        The schema that is used in generated source code. This will be the
    -        production schema. Use this to override your local development
    -        schema name for source code generation. If not specified, this
    -        will be the same as the input-schema.
    -        -->
    -      <element name="outputSchema" type="string" default="" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        A configuration element to configure several input and/or output
    -        schemata for jooq-meta, in case you're using jooq-meta in a multi-
    -        schema environment
    -        -->
    -      <element name="schemata" type="tns:Schemata" minOccurs="0" maxOccurs="1"/>
    -
    -      <!--
    -        A configuration element to configure master data table enum classes
    -        -->
    -      <element name="masterDataTables" type="tns:MasterDataTables" minOccurs="0" maxOccurs="1"/>
    -
    -      <!--
    -        A configuration element to configure custom types introduced to jOOQ
    -        using converters
    -        This is EXPERIMENTAL functionality. Use at your own risk
    -        -->
    -      <element name="customTypes" type="tns:CustomTypes" minOccurs="0" maxOccurs="1"/>
    -
    -      <!--
    -        A configuration element to configure synthetic enum types
    -        This is EXPERIMENTAL / DEPRECATED functionality. Do not re-use
    -        -->
    -      <element name="enumTypes" type="tns:EnumTypes" minOccurs="0" maxOccurs="1"/>
    -
    -      <!--
    -        A configuration element to configure type overrides for generated
    -        artefacts (e.g. in combination with enumTypes)
    -        This is EXPERIMENTAL functionality. Use at your own risk
    -        -->
    -      <element name="forcedTypes" type="tns:ForcedTypes" minOccurs="0" maxOccurs="1"/>
    -    </all>
    -  </complexType>
    -
    -  <complexType name="Schemata">
    -    <sequence>
    -      <!--
    -        A configuration element for a single schema in multi-schema
    -        environments
    -        -->
    -      <element name="schema" type="tns:Schema" minOccurs="1" maxOccurs="unbounded"/>
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="Schema">
    -    <all>
    -      <!-- See also database/inputSchema -->
    -      <element name="inputSchema" type="string" default="" minOccurs="1" maxOccurs="1" />
    -
    -      <!-- See also database/outputSchema -->
    -      <element name="outputSchema" type="string" default="" minOccurs="0" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="MasterDataTables">
    -    <sequence>
    -      <!-- A configuration element for a master data table -->
    -      <element name="masterDataTable" type="tns:MasterDataTable" minOccurs="0" maxOccurs="unbounded" />
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="CustomTypes">
    -    <sequence>
    -      <!-- A configuration element for a custom type -->
    -      <element name="customType" type="tns:CustomType" minOccurs="0" maxOccurs="unbounded" />
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="EnumTypes">
    -    <sequence>
    -      <!-- A configuration element for a synthetic enum type -->
    -      <element name="enumType" type="tns:EnumType" minOccurs="0" maxOccurs="unbounded" />
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="ForcedTypes">
    -    <sequence>
    -      <!-- A configuration element for a forced type override -->
    -      <element name="forcedType" type="tns:ForcedType" minOccurs="0" maxOccurs="unbounded" />
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="MasterDataTable">
    -    <all>
    -      <!-- The name of a master data table -->
    -      <element name="name" type="string" minOccurs="1" maxOccurs="1" />
    -
    -      <!-- The column used for enum literals -->
    -      <element name="literal" type="string" minOccurs="0" maxOccurs="1" />
    -
    -      <!-- The column used for documentation -->
    -      <element name="description" type="string" minOccurs="0" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="CustomType">
    -    <all>
    -      <!-- The name of the custom type -->
    -      <element name="name" type="string" minOccurs="1" maxOccurs="1" />
    -
    -      <!-- A converter implementation for the custom type -->
    -      <element name="converter" type="string" minOccurs="1" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="EnumType">
    -    <all>
    -      <!-- The name of the synthetic enum type -->
    -      <element name="name" type="string" minOccurs="1" maxOccurs="1" />
    -
    -      <!-- A comma separated (CSV format) list of enum literals -->
    -      <element name="literals" type="string" minOccurs="1" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="ForcedType">
    -    <all>
    -      <!-- The name of the type to be forced upon various artefacts -->
    -      <element name="name" type="string" minOccurs="1" maxOccurs="1" />
    -
    -      <!--
    -        A comma-separated list of Java regular expressions matching
    -        columns, parameters, attributes, etc to be forced to have this
    -        type
    -        -->
    -      <element name="expressions" type="string" minOccurs="1" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="Generate">
    -    <all>
    -      <!--
    -        Primary key / foreign key relations should be generated and used.
    -        This is a prerequisite for various advanced features
    -        -->
    -      <element name="relations" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate navigation methods to navigate foreign key relationships
    -        directly from Record classes. This is only relevant if relations
    -        is set to true, too
    -        -->
    -      <element name="navigationMethods" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
    -
    -      <!-- Generate deprecated code for backwards compatibility -->
    -      <element name="deprecated" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate instance fields in your tables, as opposed to static
    -        fields. This simplifies aliasing
    -        -->
    -      <element name="instanceFields" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate the javax.annotation.Generated annotation to indicate
    -        jOOQ version used for source code
    -        -->
    -      <element name="generatedAnnotation" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate TableRecord classes. Disable this when you don't
    -        need the additional type-safety
    -        -->
    -      <element name="records" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate POJOs in addition to Record classes for usage of the
    -        ResultQuery.fetchInto(Class) API
    -        -->
    -      <element name="pojos" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Annotate POJOs and Records with JPA annotations for increased
    -        compatibility and better integration with JPA/Hibernate, etc
    -        -->
    -      <element name="jpaAnnotations" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Annotate POJOs and Records with JSR-303 validation annotations
    -        -->
    -      <element name="validationAnnotations" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="Target">
    -    <all>
    -      <!--
    -        The destination package of your generated classes (within the
    -        destination directory)
    -        -->
    -      <element name="packageName" type="string" default="org.jooq.generated" minOccurs="0" maxOccurs="1" />
    -
    -      <!-- The destination directory of your generated classes -->
    -      <element name="directory" type="string" default="target/generated-sources/jooq" />
    -    </all>
    -  </complexType>
    -</schema>
    \ No newline at end of file
    diff --git a/jOOQ-website/xsd/jooq-codegen-2.4.0.xsd b/jOOQ-website/xsd/jooq-codegen-2.4.0.xsd
    deleted file mode 100644
    index eb22c0ecd0..0000000000
    --- a/jOOQ-website/xsd/jooq-codegen-2.4.0.xsd
    +++ /dev/null
    @@ -1,380 +0,0 @@
    -<?xml version="1.0" encoding="UTF-8"?>
    -<schema xmlns="http://www.w3.org/2001/XMLSchema"
    -  xmlns:tns="http://www.jooq.org/xsd/jooq-codegen-2.4.0.xsd"
    -  targetNamespace="http://www.jooq.org/xsd/jooq-codegen-2.4.0.xsd"
    -  elementFormDefault="qualified">
    -
    -  <element name="configuration">
    -    <complexType>
    -      <all>
    -        <!--
    -          The JDBC configuration element contains information about how
    -          to set up the database connection used for source code generation
    -          -->
    -        <element name="jdbc" type="tns:Jdbc" minOccurs="1"
    -          maxOccurs="1" />
    -
    -        <!--
    -          The GENERATOR configuration element contains information about
    -          source code generation itself
    -          -->
    -        <element name="generator" type="tns:Generator" minOccurs="1"
    -          maxOccurs="1" />
    -      </all>
    -    </complexType>
    -  </element>
    -
    -  <complexType name="Jdbc">
    -    <all>
    -      <!-- The JDBC driver -->
    -      <element name="driver" type="string" minOccurs="1" maxOccurs="1" />
    -
    -      <!-- The JDBC connection URL -->
    -      <element name="url" type="string" minOccurs="1" maxOccurs="1" />
    -
    -      <!-- Deprecated. Use database schema configuration elements instead -->
    -      <element name="schema" type="string" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        The JDBC connection user. Be sure this user has all required
    -        GRANTs to the dictionary views/tables to generate the desired artefacts
    -        -->
    -      <element name="user" type="string" minOccurs="0" maxOccurs="1" />
    -
    -      <!-- The JDBC connection password -->
    -      <element name="password" type="string" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Enlist custom JDBC driver properties that are provided to the
    -        java.sql.DriverManager when fetching a connection
    -        -->
    -      <element name="properties" type="tns:Properties" minOccurs="0" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="Properties">
    -    <sequence>
    -      <element name="property" type="tns:Property" minOccurs="0" maxOccurs="unbounded"/>
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="Property">
    -    <all>
    -      <element name="key" type="string" minOccurs="1" maxOccurs="1"/>
    -      <element name="value" type="string" minOccurs="1" maxOccurs="1"/>
    -    </all>
    -  </complexType>
    -
    -  <complexType name="Generator">
    -    <all>
    -      <!--
    -       The class used to generate source code. You may override this with
    -       your custom source code generator
    -       -->
    -      <element name="name" type="string" default="org.jooq.util.DefaultGenerator"
    -        minOccurs="0" maxOccurs="1" />
    -
    -      <!-- The naming strategy used for class and field names -->
    -      <element name="strategy" type="tns:Strategy" minOccurs="0" maxOccurs="1" />
    -
    -      <!-- The jooq-meta configuration -->
    -      <element name="database" type="tns:Database" minOccurs="1" maxOccurs="1" />
    -
    -      <!-- The jooq-codegen configuration -->
    -      <element name="generate" type="tns:Generate" minOccurs="0" maxOccurs="1" />
    -
    -      <!-- Some information about generation output -->
    -      <element name="target" type="tns:Target" minOccurs="0" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="Strategy">
    -    <all>
    -      <!--
    -        The class used to provide a naming strategy for generated source
    -        code. You may override this with your custom naming strategy
    -        -->
    -      <element name="name" type="string" minOccurs="0" maxOccurs="1"
    -        default="org.jooq.util.DefaultGeneratorStrategy" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="Database">
    -    <all>
    -      <!--
    -        The database dialect from jooq-meta. Available dialects are
    -        named org.util.[database].[database]Database. Known values are:
    -
    -        org.jooq.util.ase.ASEDatabase
    -        org.jooq.util.cubrid.CUBRIDDatabase
    -        org.jooq.util.db2.DB2Database
    -        org.jooq.util.derby.DerbyDatabase
    -        org.jooq.util.h2.H2Database
    -        org.jooq.util.hsqldb.HSQLDBDatabase
    -        org.jooq.util.ingres.IngresDatabase
    -        org.jooq.util.mysql.MySQLDatabase
    -        org.jooq.util.oracle.OracleDatabase
    -        org.jooq.util.postgres.PostgresDatabase
    -        org.jooq.util.sqlite.SQLiteDatabaes
    -        org.jooq.util.sqlserver.SQLServerDatabase
    -        org.jooq.util.sybase.SybaseDatabase
    -
    -        You can also provide your own org.jooq.util.Database implementation
    -        here, if your database is currently not supported
    -        -->
    -      <element name="name" type="string" minOccurs="1" maxOccurs="1" />
    -
    -      <!--
    -        All elements that are generated from your schema (several Java
    -        regular expressions, separated by comma) Watch out for
    -        case-sensitivity. Depending on your database, this might be
    -        important! You can create case-insensitive regular expressions
    -        using this syntax: (?i:expr)A comma-separated list of regular
    -        expressions
    -        -->
    -      <element name="includes" type="string" default=".*" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        All elements that are excluded from your schema (several Java
    -        regular expressions, separated by comma). Excludes match before
    -        includes
    -        -->
    -      <element name="excludes" type="string" default="" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate java.sql.Timestamp fields for DATE columns. This is
    -        particularly useful for Oracle databases
    -        -->
    -      <element name="dateAsTimestamp" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate jOOU data types for your unsigned data types, which are
    -        not natively supported in Java
    -        -->
    -      <element name="unsignedTypes" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        The schema that is used locally as a source for meta information.
    -        This could be your development schema or the production schema, etc
    -        This cannot be combined with the schemata element.
    -        If left empty (and without any schemata element), jOOQ will generate all available schemata.
    -        For backwards compatibility, this defaults to jdbc/schema
    -        -->
    -      <element name="inputSchema" type="string" default="" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        The schema that is used in generated source code. This will be the
    -        production schema. Use this to override your local development
    -        schema name for source code generation. If not specified, this
    -        will be the same as the input-schema.
    -        -->
    -      <element name="outputSchema" type="string" default="" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        A configuration element to configure several input and/or output
    -        schemata for jooq-meta, in case you're using jooq-meta in a multi-
    -        schema environment
    -        -->
    -      <element name="schemata" type="tns:Schemata" minOccurs="0" maxOccurs="1"/>
    -
    -      <!--
    -        A configuration element to configure master data table enum classes
    -        -->
    -      <element name="masterDataTables" type="tns:MasterDataTables" minOccurs="0" maxOccurs="1"/>
    -
    -      <!--
    -        A configuration element to configure custom types introduced to jOOQ
    -        using converters
    -        This is EXPERIMENTAL functionality. Use at your own risk
    -        -->
    -      <element name="customTypes" type="tns:CustomTypes" minOccurs="0" maxOccurs="1"/>
    -
    -      <!--
    -        A configuration element to configure synthetic enum types
    -        This is EXPERIMENTAL / DEPRECATED functionality. Do not re-use
    -        -->
    -      <element name="enumTypes" type="tns:EnumTypes" minOccurs="0" maxOccurs="1"/>
    -
    -      <!--
    -        A configuration element to configure type overrides for generated
    -        artefacts (e.g. in combination with enumTypes)
    -        This is EXPERIMENTAL functionality. Use at your own risk
    -        -->
    -      <element name="forcedTypes" type="tns:ForcedTypes" minOccurs="0" maxOccurs="1"/>
    -    </all>
    -  </complexType>
    -
    -  <complexType name="Schemata">
    -    <sequence>
    -      <!--
    -        A configuration element for a single schema in multi-schema
    -        environments
    -        -->
    -      <element name="schema" type="tns:Schema" minOccurs="1" maxOccurs="unbounded"/>
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="Schema">
    -    <all>
    -      <!-- See also database/inputSchema -->
    -      <element name="inputSchema" type="string" default="" minOccurs="1" maxOccurs="1" />
    -
    -      <!-- See also database/outputSchema -->
    -      <element name="outputSchema" type="string" default="" minOccurs="0" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="MasterDataTables">
    -    <sequence>
    -      <!-- A configuration element for a master data table -->
    -      <element name="masterDataTable" type="tns:MasterDataTable" minOccurs="0" maxOccurs="unbounded" />
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="CustomTypes">
    -    <sequence>
    -      <!-- A configuration element for a custom type -->
    -      <element name="customType" type="tns:CustomType" minOccurs="0" maxOccurs="unbounded" />
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="EnumTypes">
    -    <sequence>
    -      <!-- A configuration element for a synthetic enum type -->
    -      <element name="enumType" type="tns:EnumType" minOccurs="0" maxOccurs="unbounded" />
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="ForcedTypes">
    -    <sequence>
    -      <!-- A configuration element for a forced type override -->
    -      <element name="forcedType" type="tns:ForcedType" minOccurs="0" maxOccurs="unbounded" />
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="MasterDataTable">
    -    <all>
    -      <!-- The name of a master data table -->
    -      <element name="name" type="string" minOccurs="1" maxOccurs="1" />
    -
    -      <!-- The column used for enum literals -->
    -      <element name="literal" type="string" minOccurs="0" maxOccurs="1" />
    -
    -      <!-- The column used for documentation -->
    -      <element name="description" type="string" minOccurs="0" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="CustomType">
    -    <all>
    -      <!-- The name of the custom type -->
    -      <element name="name" type="string" minOccurs="1" maxOccurs="1" />
    -
    -      <!-- A converter implementation for the custom type -->
    -      <element name="converter" type="string" minOccurs="1" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="EnumType">
    -    <all>
    -      <!-- The name of the synthetic enum type -->
    -      <element name="name" type="string" minOccurs="1" maxOccurs="1" />
    -
    -      <!-- A comma separated (CSV format) list of enum literals -->
    -      <element name="literals" type="string" minOccurs="1" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="ForcedType">
    -    <all>
    -      <!-- The name of the type to be forced upon various artefacts -->
    -      <element name="name" type="string" minOccurs="1" maxOccurs="1" />
    -
    -      <!--
    -        A comma-separated list of Java regular expressions matching
    -        columns, parameters, attributes, etc to be forced to have this
    -        type
    -        -->
    -      <element name="expressions" type="string" minOccurs="1" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="Generate">
    -    <all>
    -      <!--
    -        Primary key / foreign key relations should be generated and used.
    -        This is a prerequisite for various advanced features
    -        -->
    -      <element name="relations" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate navigation methods to navigate foreign key relationships
    -        directly from Record classes. This is only relevant if relations
    -        is set to true, too
    -        -->
    -      <element name="navigationMethods" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
    -
    -      <!-- Generate deprecated code for backwards compatibility -->
    -      <element name="deprecated" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate instance fields in your tables, as opposed to static
    -        fields. This simplifies aliasing
    -        -->
    -      <element name="instanceFields" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate the javax.annotation.Generated annotation to indicate
    -        jOOQ version used for source code
    -        -->
    -      <element name="generatedAnnotation" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate TableRecord classes. Disable this when you don't
    -        need the additional type-safety
    -        -->
    -      <element name="records" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate POJOs for usage of the ResultQuery.fetchInto(Class) API
    -        -->
    -      <element name="pojos" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate interfaces that will be implemented by records and/or pojos.
    -        You can also use these interfaces in Record.into(Class<?>) and similar
    -        methods, to let jOOQ return proxy objects for them.
    -        -->
    -      <element name="interfaces" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate DAOs in addition to POJO classes
    -        -->
    -      <element name="daos" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Annotate POJOs and Records with JPA annotations for increased
    -        compatibility and better integration with JPA/Hibernate, etc
    -        -->
    -      <element name="jpaAnnotations" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Annotate POJOs and Records with JSR-303 validation annotations
    -        -->
    -      <element name="validationAnnotations" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="Target">
    -    <all>
    -      <!--
    -        The destination package of your generated classes (within the
    -        destination directory)
    -        -->
    -      <element name="packageName" type="string" default="org.jooq.generated" minOccurs="0" maxOccurs="1" />
    -
    -      <!-- The destination directory of your generated classes -->
    -      <element name="directory" type="string" default="target/generated-sources/jooq" />
    -    </all>
    -  </complexType>
    -</schema>
    \ No newline at end of file
    diff --git a/jOOQ-website/xsd/jooq-codegen-2.5.0.xsd b/jOOQ-website/xsd/jooq-codegen-2.5.0.xsd
    deleted file mode 100644
    index 574535afc2..0000000000
    --- a/jOOQ-website/xsd/jooq-codegen-2.5.0.xsd
    +++ /dev/null
    @@ -1,400 +0,0 @@
    -<?xml version="1.0" encoding="UTF-8"?>
    -<schema xmlns="http://www.w3.org/2001/XMLSchema"
    -  xmlns:tns="http://www.jooq.org/xsd/jooq-codegen-2.5.0.xsd"
    -  targetNamespace="http://www.jooq.org/xsd/jooq-codegen-2.5.0.xsd"
    -  elementFormDefault="qualified">
    -
    -  <element name="configuration">
    -    <complexType>
    -      <all>
    -        <!--
    -          The JDBC configuration element contains information about how
    -          to set up the database connection used for source code generation
    -          -->
    -        <element name="jdbc" type="tns:Jdbc" minOccurs="1"
    -          maxOccurs="1" />
    -
    -        <!--
    -          The GENERATOR configuration element contains information about
    -          source code generation itself
    -          -->
    -        <element name="generator" type="tns:Generator" minOccurs="1"
    -          maxOccurs="1" />
    -      </all>
    -    </complexType>
    -  </element>
    -
    -  <complexType name="Jdbc">
    -    <all>
    -      <!-- The JDBC driver -->
    -      <element name="driver" type="string" minOccurs="1" maxOccurs="1" />
    -
    -      <!-- The JDBC connection URL -->
    -      <element name="url" type="string" minOccurs="1" maxOccurs="1" />
    -
    -      <!-- Deprecated. Use database schema configuration elements instead -->
    -      <element name="schema" type="string" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        The JDBC connection user. Be sure this user has all required
    -        GRANTs to the dictionary views/tables to generate the desired artefacts
    -        -->
    -      <element name="user" type="string" minOccurs="0" maxOccurs="1" />
    -
    -      <!-- The JDBC connection password -->
    -      <element name="password" type="string" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Enlist custom JDBC driver properties that are provided to the
    -        java.sql.DriverManager when fetching a connection
    -        -->
    -      <element name="properties" type="tns:Properties" minOccurs="0" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="Properties">
    -    <sequence>
    -      <element name="property" type="tns:Property" minOccurs="0" maxOccurs="unbounded"/>
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="Property">
    -    <all>
    -      <element name="key" type="string" minOccurs="1" maxOccurs="1"/>
    -      <element name="value" type="string" minOccurs="1" maxOccurs="1"/>
    -    </all>
    -  </complexType>
    -
    -  <complexType name="Generator">
    -    <all>
    -      <!--
    -       The class used to generate source code. You may override this with
    -       your custom source code generator
    -       -->
    -      <element name="name" type="string" default="org.jooq.util.DefaultGenerator"
    -        minOccurs="0" maxOccurs="1" />
    -
    -      <!-- The naming strategy used for class and field names -->
    -      <element name="strategy" type="tns:Strategy" minOccurs="0" maxOccurs="1" />
    -
    -      <!-- The jooq-meta configuration -->
    -      <element name="database" type="tns:Database" minOccurs="1" maxOccurs="1" />
    -
    -      <!-- The jooq-codegen configuration -->
    -      <element name="generate" type="tns:Generate" minOccurs="0" maxOccurs="1" />
    -
    -      <!-- Some information about generation output -->
    -      <element name="target" type="tns:Target" minOccurs="0" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="Strategy">
    -    <all>
    -      <!--
    -        The class used to provide a naming strategy for generated source
    -        code. You may override this with your custom naming strategy
    -        -->
    -      <element name="name" type="string" minOccurs="0" maxOccurs="1"
    -        default="org.jooq.util.DefaultGeneratorStrategy" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="Database">
    -    <all>
    -      <!--
    -        The database dialect from jooq-meta. Available dialects are
    -        named org.util.[database].[database]Database. Known values are:
    -
    -        org.jooq.util.ase.ASEDatabase
    -        org.jooq.util.cubrid.CUBRIDDatabase
    -        org.jooq.util.db2.DB2Database
    -        org.jooq.util.derby.DerbyDatabase
    -        org.jooq.util.h2.H2Database
    -        org.jooq.util.hsqldb.HSQLDBDatabase
    -        org.jooq.util.ingres.IngresDatabase
    -        org.jooq.util.mysql.MySQLDatabase
    -        org.jooq.util.oracle.OracleDatabase
    -        org.jooq.util.postgres.PostgresDatabase
    -        org.jooq.util.sqlite.SQLiteDatabaes
    -        org.jooq.util.sqlserver.SQLServerDatabase
    -        org.jooq.util.sybase.SybaseDatabase
    -
    -        You can also provide your own org.jooq.util.Database implementation
    -        here, if your database is currently not supported
    -        -->
    -      <element name="name" type="string" minOccurs="1" maxOccurs="1" />
    -
    -      <!--
    -        All elements that are generated from your schema (several Java
    -        regular expressions, separated by comma) Watch out for
    -        case-sensitivity. Depending on your database, this might be
    -        important! You can create case-insensitive regular expressions
    -        using this syntax: (?i:expr)A comma-separated list of regular
    -        expressions
    -        -->
    -      <element name="includes" type="string" default=".*" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        All elements that are excluded from your schema (several Java
    -        regular expressions, separated by comma). Excludes match before
    -        includes
    -        -->
    -      <element name="excludes" type="string" default="" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        All table and view columns that are used as "version" fields for
    -        optimistic locking (several Java regular expressions, separated by comma).
    -        See UpdatableRecord.store() and UpdatableRecord.delete() for details
    -        -->
    -      <element name="recordVersionFields" type="string" default="" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        All table and view columns that are used as "timestamp" fields for
    -        optimistic locking (several Java regular expressions, separated by comma).
    -        See UpdatableRecord.store() and UpdatableRecord.delete() for details
    -        -->
    -      <element name="recordTimestampFields" type="string" default="" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate java.sql.Timestamp fields for DATE columns. This is
    -        particularly useful for Oracle databases
    -        -->
    -      <element name="dateAsTimestamp" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate jOOU data types for your unsigned data types, which are
    -        not natively supported in Java
    -        -->
    -      <element name="unsignedTypes" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        The schema that is used locally as a source for meta information.
    -        This could be your development schema or the production schema, etc
    -        This cannot be combined with the schemata element.
    -        If left empty (and without any schemata element), jOOQ will generate all available schemata.
    -        For backwards compatibility, this defaults to jdbc/schema
    -        -->
    -      <element name="inputSchema" type="string" default="" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        The schema that is used in generated source code. This will be the
    -        production schema. Use this to override your local development
    -        schema name for source code generation. If not specified, this
    -        will be the same as the input-schema.
    -        -->
    -      <element name="outputSchema" type="string" default="" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        A configuration element to configure several input and/or output
    -        schemata for jooq-meta, in case you're using jooq-meta in a multi-
    -        schema environment
    -        -->
    -      <element name="schemata" type="tns:Schemata" minOccurs="0" maxOccurs="1"/>
    -
    -      <!--
    -        A configuration element to configure master data table enum classes
    -        -->
    -      <element name="masterDataTables" type="tns:MasterDataTables" minOccurs="0" maxOccurs="1"/>
    -
    -      <!--
    -        A configuration element to configure custom types introduced to jOOQ
    -        using converters
    -        This is EXPERIMENTAL functionality. Use at your own risk
    -        -->
    -      <element name="customTypes" type="tns:CustomTypes" minOccurs="0" maxOccurs="1"/>
    -
    -      <!--
    -        A configuration element to configure synthetic enum types
    -        This is EXPERIMENTAL / DEPRECATED functionality. Do not re-use
    -        -->
    -      <element name="enumTypes" type="tns:EnumTypes" minOccurs="0" maxOccurs="1"/>
    -
    -      <!--
    -        A configuration element to configure type overrides for generated
    -        artefacts (e.g. in combination with enumTypes)
    -        This is EXPERIMENTAL functionality. Use at your own risk
    -        -->
    -      <element name="forcedTypes" type="tns:ForcedTypes" minOccurs="0" maxOccurs="1"/>
    -    </all>
    -  </complexType>
    -
    -  <complexType name="Schemata">
    -    <sequence>
    -      <!--
    -        A configuration element for a single schema in multi-schema
    -        environments
    -        -->
    -      <element name="schema" type="tns:Schema" minOccurs="1" maxOccurs="unbounded"/>
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="Schema">
    -    <all>
    -      <!-- See also database/inputSchema -->
    -      <element name="inputSchema" type="string" default="" minOccurs="1" maxOccurs="1" />
    -
    -      <!-- See also database/outputSchema -->
    -      <element name="outputSchema" type="string" default="" minOccurs="0" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="MasterDataTables">
    -    <sequence>
    -      <!-- A configuration element for a master data table -->
    -      <element name="masterDataTable" type="tns:MasterDataTable" minOccurs="0" maxOccurs="unbounded" />
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="CustomTypes">
    -    <sequence>
    -      <!-- A configuration element for a custom type -->
    -      <element name="customType" type="tns:CustomType" minOccurs="0" maxOccurs="unbounded" />
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="EnumTypes">
    -    <sequence>
    -      <!-- A configuration element for a synthetic enum type -->
    -      <element name="enumType" type="tns:EnumType" minOccurs="0" maxOccurs="unbounded" />
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="ForcedTypes">
    -    <sequence>
    -      <!-- A configuration element for a forced type override -->
    -      <element name="forcedType" type="tns:ForcedType" minOccurs="0" maxOccurs="unbounded" />
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="MasterDataTable">
    -    <all>
    -      <!-- The name of a master data table -->
    -      <element name="name" type="string" minOccurs="1" maxOccurs="1" />
    -
    -      <!-- The column used for enum literals -->
    -      <element name="literal" type="string" minOccurs="0" maxOccurs="1" />
    -
    -      <!-- The column used for documentation -->
    -      <element name="description" type="string" minOccurs="0" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="CustomType">
    -    <all>
    -      <!-- The name of the custom type -->
    -      <element name="name" type="string" minOccurs="1" maxOccurs="1" />
    -
    -      <!-- A converter implementation for the custom type -->
    -      <element name="converter" type="string" minOccurs="1" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="EnumType">
    -    <all>
    -      <!-- The name of the synthetic enum type -->
    -      <element name="name" type="string" minOccurs="1" maxOccurs="1" />
    -
    -      <!-- A comma separated (CSV format) list of enum literals -->
    -      <element name="literals" type="string" minOccurs="1" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="ForcedType">
    -    <all>
    -      <!-- The name of the type to be forced upon various artefacts -->
    -      <element name="name" type="string" minOccurs="1" maxOccurs="1" />
    -
    -      <!--
    -        A comma-separated list of Java regular expressions matching
    -        columns, parameters, attributes, etc to be forced to have this
    -        type
    -        -->
    -      <element name="expressions" type="string" minOccurs="1" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="Generate">
    -    <all>
    -      <!--
    -        Primary key / foreign key relations should be generated and used.
    -        This is a prerequisite for various advanced features
    -        -->
    -      <element name="relations" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate navigation methods to navigate foreign key relationships
    -        directly from Record classes. This is only relevant if relations
    -        is set to true, too
    -        -->
    -      <element name="navigationMethods" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
    -
    -      <!-- Generate deprecated code for backwards compatibility -->
    -      <element name="deprecated" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate instance fields in your tables, as opposed to static
    -        fields. This simplifies aliasing
    -        -->
    -      <element name="instanceFields" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate the javax.annotation.Generated annotation to indicate
    -        jOOQ version used for source code
    -        -->
    -      <element name="generatedAnnotation" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate TableRecord classes. Disable this when you don't
    -        need the additional type-safety
    -        -->
    -      <element name="records" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate POJOs for usage of the ResultQuery.fetchInto(Class) API
    -        -->
    -      <element name="pojos" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate immutable POJOs for usage of the ResultQuery.fetchInto(Class) API
    -        This overrides any value set in <pojos/>
    -        -->
    -      <element name="immutablePojos" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate interfaces that will be implemented by records and/or pojos.
    -        You can also use these interfaces in Record.into(Class<?>) and similar
    -        methods, to let jOOQ return proxy objects for them.
    -        -->
    -      <element name="interfaces" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate DAOs in addition to POJO classes
    -        -->
    -      <element name="daos" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Annotate POJOs and Records with JPA annotations for increased
    -        compatibility and better integration with JPA/Hibernate, etc
    -        -->
    -      <element name="jpaAnnotations" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Annotate POJOs and Records with JSR-303 validation annotations
    -        -->
    -      <element name="validationAnnotations" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="Target">
    -    <all>
    -      <!--
    -        The destination package of your generated classes (within the
    -        destination directory)
    -        -->
    -      <element name="packageName" type="string" default="org.jooq.generated" minOccurs="0" maxOccurs="1" />
    -
    -      <!-- The destination directory of your generated classes -->
    -      <element name="directory" type="string" default="target/generated-sources/jooq" />
    -    </all>
    -  </complexType>
    -</schema>
    \ No newline at end of file
    diff --git a/jOOQ-website/xsd/jooq-codegen-3.0.0.xsd b/jOOQ-website/xsd/jooq-codegen-3.0.0.xsd
    deleted file mode 100644
    index fd482bacab..0000000000
    --- a/jOOQ-website/xsd/jooq-codegen-3.0.0.xsd
    +++ /dev/null
    @@ -1,381 +0,0 @@
    -<?xml version="1.0" encoding="UTF-8"?>
    -<schema xmlns="http://www.w3.org/2001/XMLSchema"
    -  xmlns:tns="http://www.jooq.org/xsd/jooq-codegen-3.0.0.xsd"
    -  targetNamespace="http://www.jooq.org/xsd/jooq-codegen-3.0.0.xsd"
    -  elementFormDefault="qualified">
    -
    -  <element name="configuration">
    -    <complexType>
    -      <all>
    -        <!--
    -          The JDBC configuration element contains information about how
    -          to set up the database connection used for source code generation
    -          -->
    -        <element name="jdbc" type="tns:Jdbc" minOccurs="1"
    -          maxOccurs="1" />
    -
    -        <!--
    -          The GENERATOR configuration element contains information about
    -          source code generation itself
    -          -->
    -        <element name="generator" type="tns:Generator" minOccurs="1"
    -          maxOccurs="1" />
    -      </all>
    -    </complexType>
    -  </element>
    -
    -  <complexType name="Jdbc">
    -    <all>
    -      <!-- The JDBC driver -->
    -      <element name="driver" type="string" minOccurs="1" maxOccurs="1" />
    -
    -      <!-- The JDBC connection URL -->
    -      <element name="url" type="string" minOccurs="1" maxOccurs="1" />
    -
    -      <!-- Deprecated. Use database schema configuration elements instead -->
    -      <element name="schema" type="string" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        The JDBC connection user. Be sure this user has all required
    -        GRANTs to the dictionary views/tables to generate the desired artefacts
    -        -->
    -      <element name="user" type="string" minOccurs="0" maxOccurs="1" />
    -
    -      <!-- The JDBC connection password -->
    -      <element name="password" type="string" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Enlist custom JDBC driver properties that are provided to the
    -        java.sql.DriverManager when fetching a connection
    -        -->
    -      <element name="properties" type="tns:Properties" minOccurs="0" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="Properties">
    -    <sequence>
    -      <element name="property" type="tns:Property" minOccurs="0" maxOccurs="unbounded"/>
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="Property">
    -    <all>
    -      <element name="key" type="string" minOccurs="1" maxOccurs="1"/>
    -      <element name="value" type="string" minOccurs="1" maxOccurs="1"/>
    -    </all>
    -  </complexType>
    -
    -  <complexType name="Generator">
    -    <all>
    -      <!--
    -       The class used to generate source code. You may override this with
    -       your custom source code generator
    -       -->
    -      <element name="name" type="string" default="org.jooq.util.DefaultGenerator"
    -        minOccurs="0" maxOccurs="1" />
    -
    -      <!-- The naming strategy used for class and field names -->
    -      <element name="strategy" type="tns:Strategy" minOccurs="0" maxOccurs="1" />
    -
    -      <!-- The jooq-meta configuration -->
    -      <element name="database" type="tns:Database" minOccurs="1" maxOccurs="1" />
    -
    -      <!-- The jooq-codegen configuration -->
    -      <element name="generate" type="tns:Generate" minOccurs="0" maxOccurs="1" />
    -
    -      <!-- Some information about generation output -->
    -      <element name="target" type="tns:Target" minOccurs="0" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="Strategy">
    -    <all>
    -      <!--
    -        The class used to provide a naming strategy for generated source
    -        code. You may override this with your custom naming strategy
    -        -->
    -      <element name="name" type="string" minOccurs="0" maxOccurs="1"
    -        default="org.jooq.util.DefaultGeneratorStrategy" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="Database">
    -    <all>
    -      <!--
    -        The database dialect from jooq-meta. Available dialects are
    -        named org.util.[database].[database]Database. Known values are:
    -
    -        org.jooq.util.ase.ASEDatabase
    -        org.jooq.util.cubrid.CUBRIDDatabase
    -        org.jooq.util.db2.DB2Database
    -        org.jooq.util.derby.DerbyDatabase
    -        org.jooq.util.h2.H2Database
    -        org.jooq.util.hsqldb.HSQLDBDatabase
    -        org.jooq.util.ingres.IngresDatabase
    -        org.jooq.util.mysql.MySQLDatabase
    -        org.jooq.util.oracle.OracleDatabase
    -        org.jooq.util.postgres.PostgresDatabase
    -        org.jooq.util.sqlite.SQLiteDatabaes
    -        org.jooq.util.sqlserver.SQLServerDatabase
    -        org.jooq.util.sybase.SybaseDatabase
    -
    -        You can also provide your own org.jooq.util.Database implementation
    -        here, if your database is currently not supported
    -        -->
    -      <element name="name" type="string" minOccurs="1" maxOccurs="1" />
    -
    -      <!--
    -        All elements that are generated from your schema (A Java regular expression. 
    -        Use the pipe to separate several expressions) Watch out for
    -        case-sensitivity. Depending on your database, this might be
    -        important! You can create case-insensitive regular expressions
    -        using this syntax: (?i:expr)A comma-separated list of regular
    -        expressions
    -        -->
    -      <element name="includes" type="string" default=".*" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        All elements that are excluded from your schema (A Java regular expression. 
    -        Use the pipe to separate several expressions). Excludes match before
    -        includes
    -        -->
    -      <element name="excludes" type="string" default="" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        All table and view columns that are used as "version" fields for
    -        optimistic locking (A Java regular expression. Use the pipe to separate several expressions).
    -        See UpdatableRecord.store() and UpdatableRecord.delete() for details
    -        -->
    -      <element name="recordVersionFields" type="string" default="" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        All table and view columns that are used as "timestamp" fields for
    -        optimistic locking (A Java regular expression. Use the pipe to separate several expressions).
    -        See UpdatableRecord.store() and UpdatableRecord.delete() for details
    -        -->
    -      <element name="recordTimestampFields" type="string" default="" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate java.sql.Timestamp fields for DATE columns. This is
    -        particularly useful for Oracle databases
    -        -->
    -      <element name="dateAsTimestamp" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate jOOU data types for your unsigned data types, which are
    -        not natively supported in Java
    -        -->
    -      <element name="unsignedTypes" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        The schema that is used locally as a source for meta information.
    -        This could be your development schema or the production schema, etc
    -        This cannot be combined with the schemata element.
    -        If left empty (and without any schemata element), jOOQ will generate all available schemata.
    -        For backwards compatibility, this defaults to jdbc/schema
    -        -->
    -      <element name="inputSchema" type="string" default="" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        The schema that is used in generated source code. This will be the
    -        production schema. Use this to override your local development
    -        schema name for source code generation. If not specified, this
    -        will be the same as the input-schema.
    -        -->
    -      <element name="outputSchema" type="string" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        A configuration element to configure several input and/or output
    -        schemata for jooq-meta, in case you're using jooq-meta in a multi-
    -        schema environment
    -        -->
    -      <element name="schemata" type="tns:Schemata" minOccurs="0" maxOccurs="1"/>
    -
    -      <!--
    -        A configuration element to configure custom types introduced to jOOQ
    -        using converters
    -        This is EXPERIMENTAL functionality. Use at your own risk
    -        -->
    -      <element name="customTypes" type="tns:CustomTypes" minOccurs="0" maxOccurs="1"/>
    -
    -      <!--
    -        A configuration element to configure synthetic enum types
    -        This is EXPERIMENTAL / DEPRECATED functionality. Do not re-use
    -        -->
    -      <element name="enumTypes" type="tns:EnumTypes" minOccurs="0" maxOccurs="1"/>
    -
    -      <!--
    -        A configuration element to configure type overrides for generated
    -        artefacts (e.g. in combination with enumTypes)
    -        This is EXPERIMENTAL functionality. Use at your own risk
    -        -->
    -      <element name="forcedTypes" type="tns:ForcedTypes" minOccurs="0" maxOccurs="1"/>
    -    </all>
    -  </complexType>
    -
    -  <complexType name="Schemata">
    -    <sequence>
    -      <!--
    -        A configuration element for a single schema in multi-schema
    -        environments
    -        -->
    -      <element name="schema" type="tns:Schema" minOccurs="1" maxOccurs="unbounded"/>
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="Schema">
    -    <all>
    -      <!-- See also database/inputSchema -->
    -      <element name="inputSchema" type="string" default="" minOccurs="1" maxOccurs="1" />
    -
    -      <!-- See also database/outputSchema -->
    -      <element name="outputSchema" type="string" minOccurs="0" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="CustomTypes">
    -    <sequence>
    -      <!-- A configuration element for a custom type -->
    -      <element name="customType" type="tns:CustomType" minOccurs="0" maxOccurs="unbounded" />
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="EnumTypes">
    -    <sequence>
    -      <!-- A configuration element for a synthetic enum type -->
    -      <element name="enumType" type="tns:EnumType" minOccurs="0" maxOccurs="unbounded" />
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="ForcedTypes">
    -    <sequence>
    -      <!-- A configuration element for a forced type override -->
    -      <element name="forcedType" type="tns:ForcedType" minOccurs="0" maxOccurs="unbounded" />
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="CustomType">
    -    <all>
    -      <!-- The name of the custom type -->
    -      <element name="name" type="string" minOccurs="1" maxOccurs="1" />
    -
    -      <!-- A converter implementation for the custom type -->
    -      <element name="converter" type="string" minOccurs="1" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="EnumType">
    -    <all>
    -      <!-- The name of the synthetic enum type -->
    -      <element name="name" type="string" minOccurs="1" maxOccurs="1" />
    -
    -      <!-- A comma separated (CSV format) list of enum literals -->
    -      <element name="literals" type="string" minOccurs="1" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="ForcedType">
    -    <all>
    -      <!-- The name of the type to be forced upon various artefacts -->
    -      <element name="name" type="string" minOccurs="1" maxOccurs="1" />
    -
    -      <!--
    -        A Java regular expression matching columns, parameters, attributes, 
    -        etc to be forced to have this type
    -        -->
    -      <element name="expressions" type="string" minOccurs="1" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="Generate">
    -    <all>
    -      <!--
    -        Primary key / foreign key relations should be generated and used.
    -        This is a prerequisite for various advanced features
    -        -->
    -      <element name="relations" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
    -
    -      <!-- Generate deprecated code for backwards compatibility -->
    -      <element name="deprecated" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate instance fields in your tables, as opposed to static
    -        fields. This simplifies aliasing
    -        -->
    -      <element name="instanceFields" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate the javax.annotation.Generated annotation to indicate
    -        jOOQ version used for source code
    -        -->
    -      <element name="generatedAnnotation" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate TableRecord classes. Disable this when you don't
    -        need the additional type-safety
    -        -->
    -      <element name="records" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate POJOs for usage of the ResultQuery.fetchInto(Class) API
    -        -->
    -      <element name="pojos" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate immutable POJOs for usage of the ResultQuery.fetchInto(Class) API
    -        This overrides any value set in <pojos/>
    -        -->
    -      <element name="immutablePojos" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate interfaces that will be implemented by records and/or pojos.
    -        You can also use these interfaces in Record.into(Class<?>) and similar
    -        methods, to let jOOQ return proxy objects for them.
    -        -->
    -      <element name="interfaces" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate DAOs in addition to POJO classes
    -        -->
    -      <element name="daos" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Annotate POJOs and Records with JPA annotations for increased
    -        compatibility and better integration with JPA/Hibernate, etc
    -        -->
    -      <element name="jpaAnnotations" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Annotate POJOs and Records with JSR-303 validation annotations
    -        -->
    -      <element name="validationAnnotations" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
    -      
    -      <!-- 
    -        Allow to turn off the generation of global object references, which include
    -        
    -        - Tables.java
    -        - Sequences.java
    -        - UDTs.java
    -        
    -        Turning off the generation of the above files may be necessary for very
    -        large schemas, which exceed the amount of allowed constants in a class's
    -        constant pool (64k) or, whose static initialiser would exceed 64k of
    -        byte code
    -        -->
    -      <element name="globalObjectReferences" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="Target">
    -    <all>
    -      <!--
    -        The destination package of your generated classes (within the
    -        destination directory)
    -        -->
    -      <element name="packageName" type="string" default="org.jooq.generated" minOccurs="0" maxOccurs="1" />
    -
    -      <!-- The destination directory of your generated classes -->
    -      <element name="directory" type="string" default="target/generated-sources/jooq" />
    -    </all>
    -  </complexType>
    -</schema>
    \ No newline at end of file
    diff --git a/jOOQ-website/xsd/jooq-codegen-3.2.0.xsd b/jOOQ-website/xsd/jooq-codegen-3.2.0.xsd
    deleted file mode 100644
    index b3058048e2..0000000000
    --- a/jOOQ-website/xsd/jooq-codegen-3.2.0.xsd
    +++ /dev/null
    @@ -1,389 +0,0 @@
    -<?xml version="1.0" encoding="UTF-8"?>
    -<schema xmlns="http://www.w3.org/2001/XMLSchema"
    -  xmlns:tns="http://www.jooq.org/xsd/jooq-codegen-3.2.0.xsd"
    -  targetNamespace="http://www.jooq.org/xsd/jooq-codegen-3.2.0.xsd"
    -  elementFormDefault="qualified">
    -
    -  <element name="configuration">
    -    <complexType>
    -      <all>
    -        <!--
    -          The JDBC configuration element contains information about how
    -          to set up the database connection used for source code generation
    -          -->
    -        <element name="jdbc" type="tns:Jdbc" minOccurs="1"
    -          maxOccurs="1" />
    -
    -        <!--
    -          The GENERATOR configuration element contains information about
    -          source code generation itself
    -          -->
    -        <element name="generator" type="tns:Generator" minOccurs="1"
    -          maxOccurs="1" />
    -      </all>
    -    </complexType>
    -  </element>
    -
    -  <complexType name="Jdbc">
    -    <all>
    -      <!-- The JDBC driver -->
    -      <element name="driver" type="string" minOccurs="1" maxOccurs="1" />
    -
    -      <!-- The JDBC connection URL -->
    -      <element name="url" type="string" minOccurs="1" maxOccurs="1" />
    -
    -      <!-- Deprecated. Use database schema configuration elements instead -->
    -      <element name="schema" type="string" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        The JDBC connection user. Be sure this user has all required
    -        GRANTs to the dictionary views/tables to generate the desired artefacts
    -        -->
    -      <element name="user" type="string" minOccurs="0" maxOccurs="1" />
    -
    -      <!-- The JDBC connection password -->
    -      <element name="password" type="string" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Enlist custom JDBC driver properties that are provided to the
    -        java.sql.DriverManager when fetching a connection
    -        -->
    -      <element name="properties" type="tns:Properties" minOccurs="0" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="Properties">
    -    <sequence>
    -      <element name="property" type="tns:Property" minOccurs="0" maxOccurs="unbounded"/>
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="Property">
    -    <all>
    -      <element name="key" type="string" minOccurs="1" maxOccurs="1"/>
    -      <element name="value" type="string" minOccurs="1" maxOccurs="1"/>
    -    </all>
    -  </complexType>
    -
    -  <complexType name="Generator">
    -    <all>
    -      <!--
    -       The class used to generate source code. You may override this with
    -       your custom source code generator
    -       -->
    -      <element name="name" type="string" default="org.jooq.util.DefaultGenerator"
    -        minOccurs="0" maxOccurs="1" />
    -
    -      <!-- The naming strategy used for class and field names -->
    -      <element name="strategy" type="tns:Strategy" minOccurs="0" maxOccurs="1" />
    -
    -      <!-- The jooq-meta configuration -->
    -      <element name="database" type="tns:Database" minOccurs="1" maxOccurs="1" />
    -
    -      <!-- The jooq-codegen configuration -->
    -      <element name="generate" type="tns:Generate" minOccurs="0" maxOccurs="1" />
    -
    -      <!-- Some information about generation output -->
    -      <element name="target" type="tns:Target" minOccurs="0" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="Strategy">
    -    <all>
    -      <!--
    -        The class used to provide a naming strategy for generated source
    -        code. You may override this with your custom naming strategy
    -        -->
    -      <element name="name" type="string" minOccurs="0" maxOccurs="1"
    -        default="org.jooq.util.DefaultGeneratorStrategy" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="Database">
    -    <all>
    -      <!--
    -        The database dialect from jooq-meta. Available dialects are
    -        named org.util.[database].[database]Database. Known values are:
    -
    -        org.jooq.util.ase.ASEDatabase
    -        org.jooq.util.cubrid.CUBRIDDatabase
    -        org.jooq.util.db2.DB2Database
    -        org.jooq.util.derby.DerbyDatabase
    -        org.jooq.util.h2.H2Database
    -        org.jooq.util.hsqldb.HSQLDBDatabase
    -        org.jooq.util.ingres.IngresDatabase
    -        org.jooq.util.mysql.MySQLDatabase
    -        org.jooq.util.oracle.OracleDatabase
    -        org.jooq.util.postgres.PostgresDatabase
    -        org.jooq.util.sqlite.SQLiteDatabaes
    -        org.jooq.util.sqlserver.SQLServerDatabase
    -        org.jooq.util.sybase.SybaseDatabase
    -
    -        You can also provide your own org.jooq.util.Database implementation
    -        here, if your database is currently not supported
    -        -->
    -      <element name="name" type="string" minOccurs="1" maxOccurs="1" />
    -
    -      <!--
    -        All elements that are generated from your schema (A Java regular expression. 
    -        Use the pipe to separate several expressions) Watch out for
    -        case-sensitivity. Depending on your database, this might be
    -        important! You can create case-insensitive regular expressions
    -        using this syntax: (?i:expr)A comma-separated list of regular
    -        expressions
    -        -->
    -      <element name="includes" type="string" default=".*" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        All elements that are excluded from your schema (A Java regular expression. 
    -        Use the pipe to separate several expressions). Excludes match before
    -        includes
    -        -->
    -      <element name="excludes" type="string" default="" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        This flag indicates whether include / exclude patterns should also match
    -        columns within tables. 
    -        -->
    -      <element name="includeExcludeColumns" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        All table and view columns that are used as "version" fields for
    -        optimistic locking (A Java regular expression. Use the pipe to separate several expressions).
    -        See UpdatableRecord.store() and UpdatableRecord.delete() for details
    -        -->
    -      <element name="recordVersionFields" type="string" default="" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        All table and view columns that are used as "timestamp" fields for
    -        optimistic locking (A Java regular expression. Use the pipe to separate several expressions).
    -        See UpdatableRecord.store() and UpdatableRecord.delete() for details
    -        -->
    -      <element name="recordTimestampFields" type="string" default="" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate java.sql.Timestamp fields for DATE columns. This is
    -        particularly useful for Oracle databases
    -        -->
    -      <element name="dateAsTimestamp" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate jOOU data types for your unsigned data types, which are
    -        not natively supported in Java
    -        -->
    -      <element name="unsignedTypes" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        The schema that is used locally as a source for meta information.
    -        This could be your development schema or the production schema, etc
    -        This cannot be combined with the schemata element.
    -        If left empty (and without any schemata element), jOOQ will generate all available schemata.
    -        For backwards compatibility, this defaults to jdbc/schema
    -        -->
    -      <element name="inputSchema" type="string" default="" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        The schema that is used in generated source code. This will be the
    -        production schema. Use this to override your local development
    -        schema name for source code generation. If not specified, this
    -        will be the same as the input-schema.
    -        -->
    -      <element name="outputSchema" type="string" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        A configuration element to configure several input and/or output
    -        schemata for jooq-meta, in case you're using jooq-meta in a multi-
    -        schema environment
    -        -->
    -      <element name="schemata" type="tns:Schemata" minOccurs="0" maxOccurs="1"/>
    -
    -      <!--
    -        A configuration element to configure custom types introduced to jOOQ
    -        using converters
    -        -->
    -      <element name="customTypes" type="tns:CustomTypes" minOccurs="0" maxOccurs="1"/>
    -
    -      <!--
    -        A configuration element to configure synthetic enum types
    -        This is EXPERIMENTAL / DEPRECATED functionality. Do not re-use
    -        -->
    -      <element name="enumTypes" type="tns:EnumTypes" minOccurs="0" maxOccurs="1"/>
    -
    -      <!--
    -        A configuration element to configure type overrides for generated
    -        artefacts (e.g. in combination with enumTypes)
    -        -->
    -      <element name="forcedTypes" type="tns:ForcedTypes" minOccurs="0" maxOccurs="1"/>
    -    </all>
    -  </complexType>
    -
    -  <complexType name="Schemata">
    -    <sequence>
    -      <!--
    -        A configuration element for a single schema in multi-schema
    -        environments
    -        -->
    -      <element name="schema" type="tns:Schema" minOccurs="1" maxOccurs="unbounded"/>
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="Schema">
    -    <all>
    -      <!-- See also database/inputSchema -->
    -      <element name="inputSchema" type="string" default="" minOccurs="1" maxOccurs="1" />
    -
    -      <!-- See also database/outputSchema -->
    -      <element name="outputSchema" type="string" minOccurs="0" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="CustomTypes">
    -    <sequence>
    -      <!-- A configuration element for a custom type -->
    -      <element name="customType" type="tns:CustomType" minOccurs="0" maxOccurs="unbounded" />
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="EnumTypes">
    -    <sequence>
    -      <!-- A configuration element for a synthetic enum type -->
    -      <element name="enumType" type="tns:EnumType" minOccurs="0" maxOccurs="unbounded" />
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="ForcedTypes">
    -    <sequence>
    -      <!-- A configuration element for a forced type override -->
    -      <element name="forcedType" type="tns:ForcedType" minOccurs="0" maxOccurs="unbounded" />
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="CustomType">
    -    <all>
    -      <!-- The name of the custom type -->
    -      <element name="name" type="string" minOccurs="1" maxOccurs="1" />
    -
    -      <!-- A converter implementation for the custom type -->
    -      <element name="converter" type="string" minOccurs="1" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="EnumType">
    -    <all>
    -      <!-- The name of the synthetic enum type -->
    -      <element name="name" type="string" minOccurs="1" maxOccurs="1" />
    -
    -      <!-- A comma separated (CSV format) list of enum literals -->
    -      <element name="literals" type="string" minOccurs="1" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="ForcedType">
    -    <all>
    -      <!-- The name of the type to be forced upon various artefacts -->
    -      <element name="name" type="string" minOccurs="1" maxOccurs="1" />
    -
    -      <!--
    -        A Java regular expression matching columns, parameters, attributes, 
    -        etc to be forced to have this type
    -        -->
    -      <element name="expressions" type="string" minOccurs="1" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="Generate">
    -    <all>
    -      <!--
    -        Primary key / foreign key relations should be generated and used.
    -        This is a prerequisite for various advanced features
    -        -->
    -      <element name="relations" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
    -
    -      <!-- Generate deprecated code for backwards compatibility -->
    -      <element name="deprecated" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate instance fields in your tables, as opposed to static
    -        fields. This simplifies aliasing
    -        -->
    -      <element name="instanceFields" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate the javax.annotation.Generated annotation to indicate
    -        jOOQ version used for source code
    -        -->
    -      <element name="generatedAnnotation" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate TableRecord classes. Disable this when you don't
    -        need the additional type-safety
    -        -->
    -      <element name="records" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate POJOs for usage of the ResultQuery.fetchInto(Class) API
    -        -->
    -      <element name="pojos" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate immutable POJOs for usage of the ResultQuery.fetchInto(Class) API
    -        This overrides any value set in <pojos/>
    -        -->
    -      <element name="immutablePojos" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate interfaces that will be implemented by records and/or pojos.
    -        You can also use these interfaces in Record.into(Class<?>) and similar
    -        methods, to let jOOQ return proxy objects for them.
    -        -->
    -      <element name="interfaces" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Generate DAOs in addition to POJO classes
    -        -->
    -      <element name="daos" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Annotate POJOs and Records with JPA annotations for increased
    -        compatibility and better integration with JPA/Hibernate, etc
    -        -->
    -      <element name="jpaAnnotations" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
    -
    -      <!--
    -        Annotate POJOs and Records with JSR-303 validation annotations
    -        -->
    -      <element name="validationAnnotations" type="boolean" default="false" minOccurs="0" maxOccurs="1" />
    -      
    -      <!-- 
    -        Allow to turn off the generation of global object references, which include
    -        
    -        - Tables.java
    -        - Sequences.java
    -        - UDTs.java
    -        
    -        Turning off the generation of the above files may be necessary for very
    -        large schemas, which exceed the amount of allowed constants in a class's
    -        constant pool (64k) or, whose static initialiser would exceed 64k of
    -        byte code
    -        -->
    -      <element name="globalObjectReferences" type="boolean" default="true" minOccurs="0" maxOccurs="1" />
    -    </all>
    -  </complexType>
    -
    -  <complexType name="Target">
    -    <all>
    -      <!--
    -        The destination package of your generated classes (within the
    -        destination directory)
    -           
    -        jOOQ may append the schema name to this package if generating multiple schemas,
    -        e.g. org.jooq.generated.schema1
    -             org.jooq.generated.schema2
    -        -->
    -      <element name="packageName" type="string" default="org.jooq.generated" minOccurs="0" maxOccurs="1" />
    -
    -      <!-- The destination directory of your generated classes -->
    -      <element name="directory" type="string" default="target/generated-sources/jooq" />
    -    </all>
    -  </complexType>
    -</schema>
    \ No newline at end of file
    diff --git a/jOOQ-website/xsd/jooq-export-1.6.2.xsd b/jOOQ-website/xsd/jooq-export-1.6.2.xsd
    deleted file mode 100644
    index 02325219ce..0000000000
    --- a/jOOQ-website/xsd/jooq-export-1.6.2.xsd
    +++ /dev/null
    @@ -1,45 +0,0 @@
    -<?xml version="1.0" encoding="UTF-8"?>
    -<schema 
    -	xmlns="http://www.w3.org/2001/XMLSchema" 
    -	xmlns:jooq-export="http://www.jooq.org/xsd/jooq-export-1.6.2.xsd"
    -	targetNamespace="http://www.jooq.org/xsd/jooq-export-1.6.2.xsd">
    -    
    -    <element name="result" type="jooq-export:Result"/>
    -
    -    <complexType name="Result">
    -     	<sequence>
    -     		<element name="fields" type="jooq-export:Fields" maxOccurs="1" minOccurs="1"/>
    -     		<element name="records" type="jooq-export:Records" maxOccurs="1" minOccurs="1"/>
    -     	</sequence>
    -    </complexType>
    -    
    -    <complexType name="Fields">
    -    	<sequence>
    -    		<element name="field" type="jooq-export:Field" maxOccurs="unbounded" minOccurs="0"/>
    -    	</sequence>
    -    </complexType>
    -    
    -    <complexType name="Field">
    -    	<attribute name="name" type="string"/>
    -    </complexType>
    -    
    -    <complexType name="Records">
    -    	<sequence>
    -    		<element name="record" type="jooq-export:Record" maxOccurs="unbounded" minOccurs="0"/>
    -    	</sequence>
    -    </complexType>
    -    
    -    <complexType name="Record">
    -    	<sequence>
    -    		<element name="value" type="jooq-export:Value" maxOccurs="unbounded" minOccurs="0"/>
    -    	</sequence>
    -    </complexType>
    -    
    -    <complexType name="Value">
    -    	<simpleContent>
    -    		<extension base="string">
    -    			<attribute name="field" type="string"/>
    -    		</extension>
    -    	</simpleContent>
    -    </complexType>
    -</schema>
    \ No newline at end of file
    diff --git a/jOOQ-website/xsd/jooq-export-2.6.0.xsd b/jOOQ-website/xsd/jooq-export-2.6.0.xsd
    deleted file mode 100644
    index 47a0cd4e8c..0000000000
    --- a/jOOQ-website/xsd/jooq-export-2.6.0.xsd
    +++ /dev/null
    @@ -1,46 +0,0 @@
    -<?xml version="1.0" encoding="UTF-8"?>
    -<schema
    -    xmlns="http://www.w3.org/2001/XMLSchema"
    -    xmlns:jooq-export="http://www.jooq.org/xsd/jooq-export-1.6.2.xsd"
    -    targetNamespace="http://www.jooq.org/xsd/jooq-export-1.6.2.xsd">
    -
    -    <element name="result" type="jooq-export:Result"/>
    -
    -    <complexType name="Result">
    -         <sequence>
    -             <element name="fields" type="jooq-export:Fields" maxOccurs="1" minOccurs="1"/>
    -             <element name="records" type="jooq-export:Records" maxOccurs="1" minOccurs="1"/>
    -         </sequence>
    -    </complexType>
    -
    -    <complexType name="Fields">
    -        <sequence>
    -            <element name="field" type="jooq-export:Field" maxOccurs="unbounded" minOccurs="0"/>
    -        </sequence>
    -    </complexType>
    -
    -    <complexType name="Field">
    -        <attribute name="name" type="string"/>
    -        <attribute name="type" type="string"/>
    -    </complexType>
    -
    -    <complexType name="Records">
    -        <sequence>
    -            <element name="record" type="jooq-export:Record" maxOccurs="unbounded" minOccurs="0"/>
    -        </sequence>
    -    </complexType>
    -
    -    <complexType name="Record">
    -        <sequence>
    -            <element name="value" type="jooq-export:Value" maxOccurs="unbounded" minOccurs="0"/>
    -        </sequence>
    -    </complexType>
    -
    -    <complexType name="Value">
    -        <simpleContent>
    -            <extension base="string">
    -                <attribute name="field" type="string"/>
    -            </extension>
    -        </simpleContent>
    -    </complexType>
    -</schema>
    \ No newline at end of file
    diff --git a/jOOQ-website/xsd/jooq-runtime-2.0.5.xsd b/jOOQ-website/xsd/jooq-runtime-2.0.5.xsd
    deleted file mode 100644
    index eb66ec3ec0..0000000000
    --- a/jOOQ-website/xsd/jooq-runtime-2.0.5.xsd
    +++ /dev/null
    @@ -1,105 +0,0 @@
    -<?xml version="1.0" encoding="UTF-8"?>
    -<schema
    -	xmlns="http://www.w3.org/2001/XMLSchema"
    -	xmlns:jooq-runtime="http://www.jooq.org/xsd/jooq-runtime-2.0.5.xsd"
    -	xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
    -    xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
    -    jaxb:version="1.0" jaxb:extensionBindingPrefixes="xjc"
    -	targetNamespace="http://www.jooq.org/xsd/jooq-runtime-2.0.5.xsd">
    -
    -	<annotation>
    -	    <appinfo>
    -	        <jaxb:globalBindings>
    -	            <xjc:serializable uid="205"/>
    -	        </jaxb:globalBindings>
    -	    </appinfo>
    -	</annotation>
    -
    -    <element name="settings" type="jooq-runtime:Settings"/>
    -
    -	<complexType name="Settings">
    -		<all>
    -			<!-- Configure render mapping for runtime schema / table rewriting in
    -			     generated SQL -->
    -			<element name="renderMapping" type="jooq-runtime:RenderMapping" minOccurs="0" maxOccurs="1"/>
    -
    -			<!-- The type of statement that is to be executed -->
    -			<element name="statementType" type="jooq-runtime:StatementType" minOccurs="0" maxOccurs="1" default="PREPARED_STATEMENT"/>
    -
    -			<!-- When set to true, this will add jOOQ's default logging ExecuteListeners -->
    -			<element name="executeLogging" type="boolean" minOccurs="0" maxOccurs="1" default="true"/>
    -
    -			<!-- The event listeners to be notified upon execution events -->
    -			<element name="executeListeners" type="jooq-runtime:ExecuteListeners" minOccurs="0" maxOccurs="1"/>
    -		</all>
    -	</complexType>
    -
    -	<complexType name="RenderMapping">
    -		<all>
    -			<!-- The default schema as defined in org.jooq.Schema.getName()
    -			     This schema will be omitted in rendered SQL -->
    -			<element name="defaultSchema" type="string" minOccurs="0" maxOccurs="1"/>
    -
    -			<!-- The mapped schemata configuration -->
    -			<element name="schemata" type="jooq-runtime:MappedSchemata" minOccurs="0" maxOccurs="1"/>
    -		</all>
    -	</complexType>
    -
    -	<complexType name="MappedSchemata">
    -		<sequence>
    -			<element name="schema" type="jooq-runtime:MappedSchema" minOccurs="0" maxOccurs="unbounded"/>
    -		</sequence>
    -	</complexType>
    -
    -	<complexType name="MappedSchema">
    -		<all>
    -			<!-- The input schema as defined in org.jooq.Schema.getName() -->
    -			<element name="input" type="string" minOccurs="1" maxOccurs="1"/>
    -
    -			<!-- The output schema as it will be rendered in SQL
    -			     When this is omitted, you can still apply table mapping -->
    -			<element name="output" type="string" minOccurs="0" maxOccurs="1"/>
    -
    -			<!-- Configure table mapping for runtime table rewriting in
    -			     generated SQL -->
    -			<element name="tables" type="jooq-runtime:MappedTables" minOccurs="0" maxOccurs="1"/>
    -		</all>
    -	</complexType>
    -
    -	<complexType name="MappedTables">
    -		<sequence>
    -			<element name="table" type="jooq-runtime:MappedTable" minOccurs="0" maxOccurs="unbounded"/>
    -		</sequence>
    -	</complexType>
    -
    -	<complexType name="MappedTable">
    -		<all>
    -			<!-- The input schema as defined in org.jooq.Table.getName() -->
    -			<element name="input" type="string" minOccurs="1" maxOccurs="1"/>
    -
    -			<!-- The output schema as it will be rendered in SQL -->
    -			<element name="output" type="string" minOccurs="1" maxOccurs="1"/>
    -		</all>
    -	</complexType>
    -
    -	<simpleType name="StatementType">
    -		<restriction base="string">
    -
    -			<!-- Execute statements with inlined bind values, avoiding JDBC's
    -			     PreparedStatements -->
    -			<enumeration value="STATIC_STATEMENT"/>
    -
    -			<!-- Execute statements with bind values, using JDBC's
    -			     PreparedStatements -->
    -			<enumeration value="PREPARED_STATEMENT"/>
    -		</restriction>
    -	</simpleType>
    -
    -	<complexType name="ExecuteListeners">
    -		<sequence>
    -
    -			<!-- An event listener implementing org.jooq.ExecuteListener -->
    -			<element name="executeListener" type="string" minOccurs="0" maxOccurs="unbounded"/>
    -		</sequence>
    -	</complexType>
    -</schema>
    \ No newline at end of file
    diff --git a/jOOQ-website/xsd/jooq-runtime-2.1.0.xsd b/jOOQ-website/xsd/jooq-runtime-2.1.0.xsd
    deleted file mode 100644
    index 4147bfda11..0000000000
    --- a/jOOQ-website/xsd/jooq-runtime-2.1.0.xsd
    +++ /dev/null
    @@ -1,160 +0,0 @@
    -<?xml version="1.0" encoding="UTF-8"?>
    -<schema
    -  xmlns="http://www.w3.org/2001/XMLSchema"
    -  xmlns:jooq-runtime="http://www.jooq.org/xsd/jooq-runtime-2.1.0.xsd"
    -  xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
    -  xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
    -  jaxb:version="1.0" jaxb:extensionBindingPrefixes="xjc"
    -  targetNamespace="http://www.jooq.org/xsd/jooq-runtime-2.1.0.xsd">
    -
    -  <annotation>
    -    <appinfo>
    -      <jaxb:globalBindings>
    -        <xjc:serializable uid="205"/>
    -      </jaxb:globalBindings>
    -    </appinfo>
    -  </annotation>
    -
    -  <element name="settings" type="jooq-runtime:Settings"/>
    -
    -  <complexType name="Settings">
    -    <all>
    -      <!-- Configure render mapping for runtime schema / table rewriting in
    -           generated SQL -->
    -      <element name="renderMapping" type="jooq-runtime:RenderMapping" minOccurs="0" maxOccurs="1"/>
    -
    -      <!-- Whether rendered schema, table, column names, etc should be quoted
    -           in rendered SQL, or transformed in any other way.
    -           This is set to "QUOTED" by default for backwards-compatibility -->
    -      <element name="renderNameStyle" type="jooq-runtime:RenderNameStyle" minOccurs="0" maxOccurs="1" default="QUOTED"/>
    -
    -      <!-- Whether SQL keywords should be rendered with upper or lower case -->
    -      <element name="renderKeywordStyle" type="jooq-runtime:RenderKeywordStyle" minOccurs="0" maxOccurs="1" default="LOWER"/>
    -
    -      <!-- Whether rendered SQL should be pretty-printed -->
    -      <element name="renderFormatted" type="boolean" minOccurs="0" maxOccurs="1" default="false"/>
    -
    -      <!-- The type of statement that is to be executed -->
    -      <element name="statementType" type="jooq-runtime:StatementType" minOccurs="0" maxOccurs="1" default="PREPARED_STATEMENT"/>
    -
    -      <!-- When set to true, this will add jOOQ's default logging ExecuteListeners -->
    -      <element name="executeLogging" type="boolean" minOccurs="0" maxOccurs="1" default="true"/>
    -
    -      <!-- The event listeners to be notified upon execution events -->
    -      <element name="executeListeners" type="jooq-runtime:ExecuteListeners" minOccurs="0" maxOccurs="1"/>
    -    </all>
    -  </complexType>
    -
    -  <complexType name="RenderMapping">
    -    <all>
    -      <!-- The default schema as defined in org.jooq.Schema.getName()
    -           This schema will be omitted in rendered SQL -->
    -      <element name="defaultSchema" type="string" minOccurs="0" maxOccurs="1"/>
    -
    -      <!-- The mapped schemata configuration -->
    -      <element name="schemata" type="jooq-runtime:MappedSchemata" minOccurs="0" maxOccurs="1"/>
    -    </all>
    -  </complexType>
    -
    -  <complexType name="MappedSchemata">
    -    <sequence>
    -      <element name="schema" type="jooq-runtime:MappedSchema" minOccurs="0" maxOccurs="unbounded"/>
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="MappedSchema">
    -    <all>
    -      <!-- The input schema as defined in org.jooq.Schema.getName() -->
    -      <element name="input" type="string" minOccurs="1" maxOccurs="1"/>
    -
    -      <!-- The output schema as it will be rendered in SQL
    -           When this is omitted, you can still apply table mapping -->
    -      <element name="output" type="string" minOccurs="0" maxOccurs="1"/>
    -
    -      <!-- Configure table mapping for runtime table rewriting in
    -           generated SQL -->
    -      <element name="tables" type="jooq-runtime:MappedTables" minOccurs="0" maxOccurs="1"/>
    -    </all>
    -  </complexType>
    -
    -  <complexType name="MappedTables">
    -    <sequence>
    -      <element name="table" type="jooq-runtime:MappedTable" minOccurs="0" maxOccurs="unbounded"/>
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="MappedTable">
    -    <all>
    -      <!-- The input schema as defined in org.jooq.Table.getName() -->
    -      <element name="input" type="string" minOccurs="1" maxOccurs="1"/>
    -
    -      <!-- The output schema as it will be rendered in SQL -->
    -      <element name="output" type="string" minOccurs="1" maxOccurs="1"/>
    -    </all>
    -  </complexType>
    -
    -  <simpleType name="StatementType">
    -    <restriction base="string">
    -
    -      <!-- Execute statements with inlined bind values, avoiding JDBC's
    -           PreparedStatements -->
    -      <enumeration value="STATIC_STATEMENT"/>
    -
    -      <!-- Execute statements with bind values, using JDBC's
    -           PreparedStatements -->
    -      <enumeration value="PREPARED_STATEMENT"/>
    -    </restriction>
    -  </simpleType>
    -
    -  <simpleType name="RenderNameStyle">
    -    <restriction base="string">
    -
    -      <!-- Render object names quoted, as defined in the database. Use this
    -           to stay on the safe side with case-sensitivity and special
    -           characters. For instance:
    -           Oracle    : "SYS"."ALL_TAB_COLS"
    -           MySQL     : `information_schema`.`TABLES`
    -           SQL Server: [INFORMATION_SCHEMA].[TABLES] -->
    -      <enumeration value="QUOTED"/>
    -
    -      <!-- Render object names, as defined in the database. For instance:
    -           Oracle    : SYS.ALL_TAB_COLS
    -           MySQL     : information_schema.TABLES
    -           SQL Server: INFORMATION_SCHEMA.TABLES -->
    -      <enumeration value="AS_IS"/>
    -
    -      <!-- Force rendering object names in lower case. For instance:
    -           Oracle    : sys.all_tab_cols
    -           MySQL     : information_schema.tables
    -           SQL Server: information_schema.tables -->
    -      <enumeration value="LOWER"/>
    -
    -      <!-- Force rendering object names in upper case. For instance:
    -           Oracle    : SYS.ALL_TAB_COLS
    -           MySQL     : INFORMATION_SCHEMA.TABLES
    -           SQL Server: INFORMATION_SCHEMA.TABLES -->
    -      <enumeration value="UPPER"/>
    -    </restriction>
    -  </simpleType>
    -
    -  <simpleType name="RenderKeywordStyle">
    -    <restriction base="string">
    -
    -      <!-- Keywords are rendered in lower case. For instance:
    -           select .. from .. where .. -->
    -      <enumeration value="LOWER"/>
    -
    -      <!-- Keywords are rendered in upper case. For instance:
    -           SELECT .. FROM .. WHERE .. -->
    -      <enumeration value="UPPER"/>
    -    </restriction>
    -  </simpleType>
    -
    -  <complexType name="ExecuteListeners">
    -    <sequence>
    -
    -      <!-- An event listener implementing org.jooq.ExecuteListener -->
    -      <element name="executeListener" type="string" minOccurs="0" maxOccurs="unbounded"/>
    -    </sequence>
    -  </complexType>
    -</schema>
    \ No newline at end of file
    diff --git a/jOOQ-website/xsd/jooq-runtime-2.3.0.xsd b/jOOQ-website/xsd/jooq-runtime-2.3.0.xsd
    deleted file mode 100644
    index 35f16369d1..0000000000
    --- a/jOOQ-website/xsd/jooq-runtime-2.3.0.xsd
    +++ /dev/null
    @@ -1,165 +0,0 @@
    -<?xml version="1.0" encoding="UTF-8"?>
    -<schema
    -  xmlns="http://www.w3.org/2001/XMLSchema"
    -  xmlns:jooq-runtime="http://www.jooq.org/xsd/jooq-runtime-2.3.0.xsd"
    -  xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
    -  xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
    -  jaxb:version="1.0" jaxb:extensionBindingPrefixes="xjc"
    -  targetNamespace="http://www.jooq.org/xsd/jooq-runtime-2.3.0.xsd">
    -
    -  <annotation>
    -    <appinfo>
    -      <jaxb:globalBindings>
    -        <xjc:serializable uid="205"/>
    -      </jaxb:globalBindings>
    -    </appinfo>
    -  </annotation>
    -
    -  <element name="settings" type="jooq-runtime:Settings"/>
    -
    -  <complexType name="Settings">
    -    <all>
    -      <!-- Whether any schema name should be rendered at all.
    -           Use this for single-schema environments, or when all objects are made
    -           available using synonyms -->
    -      <element name="renderSchema" type="boolean" minOccurs="0" maxOccurs="1" default="true"/>
    -
    -      <!-- Configure render mapping for runtime schema / table rewriting in
    -           generated SQL -->
    -      <element name="renderMapping" type="jooq-runtime:RenderMapping" minOccurs="0" maxOccurs="1"/>
    -
    -      <!-- Whether rendered schema, table, column names, etc should be quoted
    -           in rendered SQL, or transformed in any other way.
    -           This is set to "QUOTED" by default for backwards-compatibility -->
    -      <element name="renderNameStyle" type="jooq-runtime:RenderNameStyle" minOccurs="0" maxOccurs="1" default="QUOTED"/>
    -
    -      <!-- Whether SQL keywords should be rendered with upper or lower case -->
    -      <element name="renderKeywordStyle" type="jooq-runtime:RenderKeywordStyle" minOccurs="0" maxOccurs="1" default="LOWER"/>
    -
    -      <!-- Whether rendered SQL should be pretty-printed -->
    -      <element name="renderFormatted" type="boolean" minOccurs="0" maxOccurs="1" default="false"/>
    -
    -      <!-- The type of statement that is to be executed -->
    -      <element name="statementType" type="jooq-runtime:StatementType" minOccurs="0" maxOccurs="1" default="PREPARED_STATEMENT"/>
    -
    -      <!-- When set to true, this will add jOOQ's default logging ExecuteListeners -->
    -      <element name="executeLogging" type="boolean" minOccurs="0" maxOccurs="1" default="true"/>
    -
    -      <!-- The event listeners to be notified upon execution events -->
    -      <element name="executeListeners" type="jooq-runtime:ExecuteListeners" minOccurs="0" maxOccurs="1"/>
    -    </all>
    -  </complexType>
    -
    -  <complexType name="RenderMapping">
    -    <all>
    -      <!-- The default schema as defined in org.jooq.Schema.getName()
    -           This schema will be omitted in rendered SQL -->
    -      <element name="defaultSchema" type="string" minOccurs="0" maxOccurs="1"/>
    -
    -      <!-- The mapped schemata configuration -->
    -      <element name="schemata" type="jooq-runtime:MappedSchemata" minOccurs="0" maxOccurs="1"/>
    -    </all>
    -  </complexType>
    -
    -  <complexType name="MappedSchemata">
    -    <sequence>
    -      <element name="schema" type="jooq-runtime:MappedSchema" minOccurs="0" maxOccurs="unbounded"/>
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="MappedSchema">
    -    <all>
    -      <!-- The input schema as defined in org.jooq.Schema.getName() -->
    -      <element name="input" type="string" minOccurs="1" maxOccurs="1"/>
    -
    -      <!-- The output schema as it will be rendered in SQL
    -           When this is omitted, you can still apply table mapping -->
    -      <element name="output" type="string" minOccurs="0" maxOccurs="1"/>
    -
    -      <!-- Configure table mapping for runtime table rewriting in
    -           generated SQL -->
    -      <element name="tables" type="jooq-runtime:MappedTables" minOccurs="0" maxOccurs="1"/>
    -    </all>
    -  </complexType>
    -
    -  <complexType name="MappedTables">
    -    <sequence>
    -      <element name="table" type="jooq-runtime:MappedTable" minOccurs="0" maxOccurs="unbounded"/>
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="MappedTable">
    -    <all>
    -      <!-- The input schema as defined in org.jooq.Table.getName() -->
    -      <element name="input" type="string" minOccurs="1" maxOccurs="1"/>
    -
    -      <!-- The output schema as it will be rendered in SQL -->
    -      <element name="output" type="string" minOccurs="1" maxOccurs="1"/>
    -    </all>
    -  </complexType>
    -
    -  <simpleType name="StatementType">
    -    <restriction base="string">
    -
    -      <!-- Execute statements with inlined bind values, avoiding JDBC's
    -           PreparedStatements -->
    -      <enumeration value="STATIC_STATEMENT"/>
    -
    -      <!-- Execute statements with bind values, using JDBC's
    -           PreparedStatements -->
    -      <enumeration value="PREPARED_STATEMENT"/>
    -    </restriction>
    -  </simpleType>
    -
    -  <simpleType name="RenderNameStyle">
    -    <restriction base="string">
    -
    -      <!-- Render object names quoted, as defined in the database. Use this
    -           to stay on the safe side with case-sensitivity and special
    -           characters. For instance:
    -           Oracle    : "SYS"."ALL_TAB_COLS"
    -           MySQL     : `information_schema`.`TABLES`
    -           SQL Server: [INFORMATION_SCHEMA].[TABLES] -->
    -      <enumeration value="QUOTED"/>
    -
    -      <!-- Render object names, as defined in the database. For instance:
    -           Oracle    : SYS.ALL_TAB_COLS
    -           MySQL     : information_schema.TABLES
    -           SQL Server: INFORMATION_SCHEMA.TABLES -->
    -      <enumeration value="AS_IS"/>
    -
    -      <!-- Force rendering object names in lower case. For instance:
    -           Oracle    : sys.all_tab_cols
    -           MySQL     : information_schema.tables
    -           SQL Server: information_schema.tables -->
    -      <enumeration value="LOWER"/>
    -
    -      <!-- Force rendering object names in upper case. For instance:
    -           Oracle    : SYS.ALL_TAB_COLS
    -           MySQL     : INFORMATION_SCHEMA.TABLES
    -           SQL Server: INFORMATION_SCHEMA.TABLES -->
    -      <enumeration value="UPPER"/>
    -    </restriction>
    -  </simpleType>
    -
    -  <simpleType name="RenderKeywordStyle">
    -    <restriction base="string">
    -
    -      <!-- Keywords are rendered in lower case. For instance:
    -           select .. from .. where .. -->
    -      <enumeration value="LOWER"/>
    -
    -      <!-- Keywords are rendered in upper case. For instance:
    -           SELECT .. FROM .. WHERE .. -->
    -      <enumeration value="UPPER"/>
    -    </restriction>
    -  </simpleType>
    -
    -  <complexType name="ExecuteListeners">
    -    <sequence>
    -
    -      <!-- An event listener implementing org.jooq.ExecuteListener -->
    -      <element name="executeListener" type="string" minOccurs="0" maxOccurs="unbounded"/>
    -    </sequence>
    -  </complexType>
    -</schema>
    \ No newline at end of file
    diff --git a/jOOQ-website/xsd/jooq-runtime-2.5.0.xsd b/jOOQ-website/xsd/jooq-runtime-2.5.0.xsd
    deleted file mode 100644
    index ed5ae2ee27..0000000000
    --- a/jOOQ-website/xsd/jooq-runtime-2.5.0.xsd
    +++ /dev/null
    @@ -1,171 +0,0 @@
    -<?xml version="1.0" encoding="UTF-8"?>
    -<schema
    -  xmlns="http://www.w3.org/2001/XMLSchema"
    -  xmlns:jooq-runtime="http://www.jooq.org/xsd/jooq-runtime-2.5.0.xsd"
    -  xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
    -  xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
    -  jaxb:version="1.0" jaxb:extensionBindingPrefixes="xjc"
    -  targetNamespace="http://www.jooq.org/xsd/jooq-runtime-2.5.0.xsd">
    -
    -  <annotation>
    -    <appinfo>
    -      <jaxb:globalBindings>
    -        <xjc:serializable uid="250"/>
    -      </jaxb:globalBindings>
    -    </appinfo>
    -  </annotation>
    -
    -  <element name="settings" type="jooq-runtime:Settings"/>
    -
    -  <complexType name="Settings">
    -    <all>
    -      <!-- Whether any schema name should be rendered at all.
    -           Use this for single-schema environments, or when all objects are made
    -           available using synonyms -->
    -      <element name="renderSchema" type="boolean" minOccurs="0" maxOccurs="1" default="true"/>
    -
    -      <!-- Configure render mapping for runtime schema / table rewriting in
    -           generated SQL -->
    -      <element name="renderMapping" type="jooq-runtime:RenderMapping" minOccurs="0" maxOccurs="1"/>
    -
    -      <!-- Whether rendered schema, table, column names, etc should be quoted
    -           in rendered SQL, or transformed in any other way.
    -           This is set to "QUOTED" by default for backwards-compatibility -->
    -      <element name="renderNameStyle" type="jooq-runtime:RenderNameStyle" minOccurs="0" maxOccurs="1" default="QUOTED"/>
    -
    -      <!-- Whether SQL keywords should be rendered with upper or lower case -->
    -      <element name="renderKeywordStyle" type="jooq-runtime:RenderKeywordStyle" minOccurs="0" maxOccurs="1" default="LOWER"/>
    -
    -      <!-- Whether rendered SQL should be pretty-printed -->
    -      <element name="renderFormatted" type="boolean" minOccurs="0" maxOccurs="1" default="false"/>
    -
    -      <!-- The type of statement that is to be executed -->
    -      <element name="statementType" type="jooq-runtime:StatementType" minOccurs="0" maxOccurs="1" default="PREPARED_STATEMENT"/>
    -
    -      <!-- When set to true, this will add jOOQ's default logging ExecuteListeners -->
    -      <element name="executeLogging" type="boolean" minOccurs="0" maxOccurs="1" default="true"/>
    -
    -      <!-- The event listeners to be notified upon execution events -->
    -      <element name="executeListeners" type="jooq-runtime:ExecuteListeners" minOccurs="0" maxOccurs="1"/>
    -
    -      <!-- Whether store() and delete() methods should be executed with optimistic locking -->
    -      <element name="executeWithOptimisticLocking" type="boolean" minOccurs="0" maxOccurs="1" default="false"/>
    -      
    -      <!-- Whether fetched records should be attached to the fetching configuration -->
    -      <element name="attachRecords" type="boolean" minOccurs="0" maxOccurs="1" default="true"/>
    -    </all>
    -  </complexType>
    -
    -  <complexType name="RenderMapping">
    -    <all>
    -      <!-- The default schema as defined in org.jooq.Schema.getName()
    -           This schema will be omitted in rendered SQL -->
    -      <element name="defaultSchema" type="string" minOccurs="0" maxOccurs="1"/>
    -
    -      <!-- The mapped schemata configuration -->
    -      <element name="schemata" type="jooq-runtime:MappedSchemata" minOccurs="0" maxOccurs="1"/>
    -    </all>
    -  </complexType>
    -
    -  <complexType name="MappedSchemata">
    -    <sequence>
    -      <element name="schema" type="jooq-runtime:MappedSchema" minOccurs="0" maxOccurs="unbounded"/>
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="MappedSchema">
    -    <all>
    -      <!-- The input schema as defined in org.jooq.Schema.getName() -->
    -      <element name="input" type="string" minOccurs="1" maxOccurs="1"/>
    -
    -      <!-- The output schema as it will be rendered in SQL
    -           When this is omitted, you can still apply table mapping -->
    -      <element name="output" type="string" minOccurs="0" maxOccurs="1"/>
    -
    -      <!-- Configure table mapping for runtime table rewriting in
    -           generated SQL -->
    -      <element name="tables" type="jooq-runtime:MappedTables" minOccurs="0" maxOccurs="1"/>
    -    </all>
    -  </complexType>
    -
    -  <complexType name="MappedTables">
    -    <sequence>
    -      <element name="table" type="jooq-runtime:MappedTable" minOccurs="0" maxOccurs="unbounded"/>
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="MappedTable">
    -    <all>
    -      <!-- The input schema as defined in org.jooq.Table.getName() -->
    -      <element name="input" type="string" minOccurs="1" maxOccurs="1"/>
    -
    -      <!-- The output schema as it will be rendered in SQL -->
    -      <element name="output" type="string" minOccurs="1" maxOccurs="1"/>
    -    </all>
    -  </complexType>
    -
    -  <simpleType name="StatementType">
    -    <restriction base="string">
    -
    -      <!-- Execute statements with inlined bind values, avoiding JDBC's
    -           PreparedStatements -->
    -      <enumeration value="STATIC_STATEMENT"/>
    -
    -      <!-- Execute statements with bind values, using JDBC's
    -           PreparedStatements -->
    -      <enumeration value="PREPARED_STATEMENT"/>
    -    </restriction>
    -  </simpleType>
    -
    -  <simpleType name="RenderNameStyle">
    -    <restriction base="string">
    -
    -      <!-- Render object names quoted, as defined in the database. Use this
    -           to stay on the safe side with case-sensitivity and special
    -           characters. For instance:
    -           Oracle    : "SYS"."ALL_TAB_COLS"
    -           MySQL     : `information_schema`.`TABLES`
    -           SQL Server: [INFORMATION_SCHEMA].[TABLES] -->
    -      <enumeration value="QUOTED"/>
    -
    -      <!-- Render object names, as defined in the database. For instance:
    -           Oracle    : SYS.ALL_TAB_COLS
    -           MySQL     : information_schema.TABLES
    -           SQL Server: INFORMATION_SCHEMA.TABLES -->
    -      <enumeration value="AS_IS"/>
    -
    -      <!-- Force rendering object names in lower case. For instance:
    -           Oracle    : sys.all_tab_cols
    -           MySQL     : information_schema.tables
    -           SQL Server: information_schema.tables -->
    -      <enumeration value="LOWER"/>
    -
    -      <!-- Force rendering object names in upper case. For instance:
    -           Oracle    : SYS.ALL_TAB_COLS
    -           MySQL     : INFORMATION_SCHEMA.TABLES
    -           SQL Server: INFORMATION_SCHEMA.TABLES -->
    -      <enumeration value="UPPER"/>
    -    </restriction>
    -  </simpleType>
    -
    -  <simpleType name="RenderKeywordStyle">
    -    <restriction base="string">
    -
    -      <!-- Keywords are rendered in lower case. For instance:
    -           select .. from .. where .. -->
    -      <enumeration value="LOWER"/>
    -
    -      <!-- Keywords are rendered in upper case. For instance:
    -           SELECT .. FROM .. WHERE .. -->
    -      <enumeration value="UPPER"/>
    -    </restriction>
    -  </simpleType>
    -
    -  <complexType name="ExecuteListeners">
    -    <sequence>
    -
    -      <!-- An event listener implementing org.jooq.ExecuteListener -->
    -      <element name="executeListener" type="string" minOccurs="0" maxOccurs="unbounded"/>
    -    </sequence>
    -  </complexType>
    -</schema>
    \ No newline at end of file
    diff --git a/jOOQ-website/xsd/jooq-runtime-2.6.0.xsd b/jOOQ-website/xsd/jooq-runtime-2.6.0.xsd
    deleted file mode 100644
    index 0578a8629d..0000000000
    --- a/jOOQ-website/xsd/jooq-runtime-2.6.0.xsd
    +++ /dev/null
    @@ -1,160 +0,0 @@
    -<?xml version="1.0" encoding="UTF-8"?>
    -<schema
    -  xmlns="http://www.w3.org/2001/XMLSchema"
    -  xmlns:jooq-runtime="http://www.jooq.org/xsd/jooq-runtime-2.6.0.xsd"
    -  targetNamespace="http://www.jooq.org/xsd/jooq-runtime-2.6.0.xsd">
    -
    -  <element name="settings" type="jooq-runtime:Settings"/>
    -
    -  <complexType name="Settings">
    -    <all>
    -      <!-- Whether any schema name should be rendered at all.
    -           Use this for single-schema environments, or when all objects are made
    -           available using synonyms -->
    -      <element name="renderSchema" type="boolean" minOccurs="0" maxOccurs="1" default="true"/>
    -
    -      <!-- Configure render mapping for runtime schema / table rewriting in
    -           generated SQL -->
    -      <element name="renderMapping" type="jooq-runtime:RenderMapping" minOccurs="0" maxOccurs="1"/>
    -
    -      <!-- Whether rendered schema, table, column names, etc should be quoted
    -           in rendered SQL, or transformed in any other way.
    -           This is set to "QUOTED" by default for backwards-compatibility -->
    -      <element name="renderNameStyle" type="jooq-runtime:RenderNameStyle" minOccurs="0" maxOccurs="1" default="QUOTED"/>
    -
    -      <!-- Whether SQL keywords should be rendered with upper or lower case -->
    -      <element name="renderKeywordStyle" type="jooq-runtime:RenderKeywordStyle" minOccurs="0" maxOccurs="1" default="LOWER"/>
    -
    -      <!-- Whether rendered SQL should be pretty-printed -->
    -      <element name="renderFormatted" type="boolean" minOccurs="0" maxOccurs="1" default="false"/>
    -
    -      <!-- The type of statement that is to be executed -->
    -      <element name="statementType" type="jooq-runtime:StatementType" minOccurs="0" maxOccurs="1" default="PREPARED_STATEMENT"/>
    -
    -      <!-- When set to true, this will add jOOQ's default logging ExecuteListeners -->
    -      <element name="executeLogging" type="boolean" minOccurs="0" maxOccurs="1" default="true"/>
    -
    -      <!-- The event listeners to be notified upon execution events -->
    -      <element name="executeListeners" type="jooq-runtime:ExecuteListeners" minOccurs="0" maxOccurs="1"/>
    -
    -      <!-- Whether store() and delete() methods should be executed with optimistic locking -->
    -      <element name="executeWithOptimisticLocking" type="boolean" minOccurs="0" maxOccurs="1" default="false"/>
    -      
    -      <!-- Whether fetched records should be attached to the fetching configuration -->
    -      <element name="attachRecords" type="boolean" minOccurs="0" maxOccurs="1" default="true"/>
    -    </all>
    -  </complexType>
    -
    -  <complexType name="RenderMapping">
    -    <all>
    -      <!-- The default schema as defined in org.jooq.Schema.getName()
    -           This schema will be omitted in rendered SQL -->
    -      <element name="defaultSchema" type="string" minOccurs="0" maxOccurs="1"/>
    -
    -      <!-- The mapped schemata configuration -->
    -      <element name="schemata" type="jooq-runtime:MappedSchemata" minOccurs="0" maxOccurs="1"/>
    -    </all>
    -  </complexType>
    -
    -  <complexType name="MappedSchemata">
    -    <sequence>
    -      <element name="schema" type="jooq-runtime:MappedSchema" minOccurs="0" maxOccurs="unbounded"/>
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="MappedSchema">
    -    <all>
    -      <!-- The input schema as defined in org.jooq.Schema.getName() -->
    -      <element name="input" type="string" minOccurs="1" maxOccurs="1"/>
    -
    -      <!-- The output schema as it will be rendered in SQL
    -           When this is omitted, you can still apply table mapping -->
    -      <element name="output" type="string" minOccurs="0" maxOccurs="1"/>
    -
    -      <!-- Configure table mapping for runtime table rewriting in
    -           generated SQL -->
    -      <element name="tables" type="jooq-runtime:MappedTables" minOccurs="0" maxOccurs="1"/>
    -    </all>
    -  </complexType>
    -
    -  <complexType name="MappedTables">
    -    <sequence>
    -      <element name="table" type="jooq-runtime:MappedTable" minOccurs="0" maxOccurs="unbounded"/>
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="MappedTable">
    -    <all>
    -      <!-- The input schema as defined in org.jooq.Table.getName() -->
    -      <element name="input" type="string" minOccurs="1" maxOccurs="1"/>
    -
    -      <!-- The output schema as it will be rendered in SQL -->
    -      <element name="output" type="string" minOccurs="1" maxOccurs="1"/>
    -    </all>
    -  </complexType>
    -
    -  <simpleType name="StatementType">
    -    <restriction base="string">
    -
    -      <!-- Execute statements with inlined bind values, avoiding JDBC's
    -           PreparedStatements -->
    -      <enumeration value="STATIC_STATEMENT"/>
    -
    -      <!-- Execute statements with bind values, using JDBC's
    -           PreparedStatements -->
    -      <enumeration value="PREPARED_STATEMENT"/>
    -    </restriction>
    -  </simpleType>
    -
    -  <simpleType name="RenderNameStyle">
    -    <restriction base="string">
    -
    -      <!-- Render object names quoted, as defined in the database. Use this
    -           to stay on the safe side with case-sensitivity and special
    -           characters. For instance:
    -           Oracle    : "SYS"."ALL_TAB_COLS"
    -           MySQL     : `information_schema`.`TABLES`
    -           SQL Server: [INFORMATION_SCHEMA].[TABLES] -->
    -      <enumeration value="QUOTED"/>
    -
    -      <!-- Render object names, as defined in the database. For instance:
    -           Oracle    : SYS.ALL_TAB_COLS
    -           MySQL     : information_schema.TABLES
    -           SQL Server: INFORMATION_SCHEMA.TABLES -->
    -      <enumeration value="AS_IS"/>
    -
    -      <!-- Force rendering object names in lower case. For instance:
    -           Oracle    : sys.all_tab_cols
    -           MySQL     : information_schema.tables
    -           SQL Server: information_schema.tables -->
    -      <enumeration value="LOWER"/>
    -
    -      <!-- Force rendering object names in upper case. For instance:
    -           Oracle    : SYS.ALL_TAB_COLS
    -           MySQL     : INFORMATION_SCHEMA.TABLES
    -           SQL Server: INFORMATION_SCHEMA.TABLES -->
    -      <enumeration value="UPPER"/>
    -    </restriction>
    -  </simpleType>
    -
    -  <simpleType name="RenderKeywordStyle">
    -    <restriction base="string">
    -
    -      <!-- Keywords are rendered in lower case. For instance:
    -           select .. from .. where .. -->
    -      <enumeration value="LOWER"/>
    -
    -      <!-- Keywords are rendered in upper case. For instance:
    -           SELECT .. FROM .. WHERE .. -->
    -      <enumeration value="UPPER"/>
    -    </restriction>
    -  </simpleType>
    -
    -  <complexType name="ExecuteListeners">
    -    <sequence>
    -
    -      <!-- An event listener implementing org.jooq.ExecuteListener -->
    -      <element name="executeListener" type="string" minOccurs="0" maxOccurs="unbounded"/>
    -    </sequence>
    -  </complexType>
    -</schema>
    \ No newline at end of file
    diff --git a/jOOQ-website/xsd/jooq-runtime-3.0.0.xsd b/jOOQ-website/xsd/jooq-runtime-3.0.0.xsd
    deleted file mode 100644
    index 64c136e5eb..0000000000
    --- a/jOOQ-website/xsd/jooq-runtime-3.0.0.xsd
    +++ /dev/null
    @@ -1,150 +0,0 @@
    -<?xml version="1.0" encoding="UTF-8"?>
    -<schema
    -  xmlns="http://www.w3.org/2001/XMLSchema"
    -  xmlns:jooq-runtime="http://www.jooq.org/xsd/jooq-runtime-3.0.0.xsd"
    -  targetNamespace="http://www.jooq.org/xsd/jooq-runtime-3.0.0.xsd"
    -  elementFormDefault="qualified">
    -
    -  <element name="settings" type="jooq-runtime:Settings"/>
    -
    -  <complexType name="Settings">
    -    <all>
    -      <!-- Whether any schema name should be rendered at all.
    -           Use this for single-schema environments, or when all objects are made
    -           available using synonyms -->
    -      <element name="renderSchema" type="boolean" minOccurs="0" maxOccurs="1" default="true"/>
    -
    -      <!-- Configure render mapping for runtime schema / table rewriting in
    -           generated SQL -->
    -      <element name="renderMapping" type="jooq-runtime:RenderMapping" minOccurs="0" maxOccurs="1"/>
    -
    -      <!-- Whether rendered schema, table, column names, etc should be quoted
    -           in rendered SQL, or transformed in any other way.
    -           This is set to "QUOTED" by default for backwards-compatibility -->
    -      <element name="renderNameStyle" type="jooq-runtime:RenderNameStyle" minOccurs="0" maxOccurs="1" default="QUOTED"/>
    -
    -      <!-- Whether SQL keywords should be rendered with upper or lower case -->
    -      <element name="renderKeywordStyle" type="jooq-runtime:RenderKeywordStyle" minOccurs="0" maxOccurs="1" default="LOWER"/>
    -
    -      <!-- Whether rendered SQL should be pretty-printed -->
    -      <element name="renderFormatted" type="boolean" minOccurs="0" maxOccurs="1" default="false"/>
    -
    -      <!-- The type of statement that is to be executed -->
    -      <element name="statementType" type="jooq-runtime:StatementType" minOccurs="0" maxOccurs="1" default="PREPARED_STATEMENT"/>
    -
    -      <!-- When set to true, this will add jOOQ's default logging ExecuteListeners -->
    -      <element name="executeLogging" type="boolean" minOccurs="0" maxOccurs="1" default="true"/>
    -
    -      <!-- Whether store() and delete() methods should be executed with optimistic locking -->
    -      <element name="executeWithOptimisticLocking" type="boolean" minOccurs="0" maxOccurs="1" default="false"/>
    -      
    -      <!-- Whether fetched records should be attached to the fetching configuration -->
    -      <element name="attachRecords" type="boolean" minOccurs="0" maxOccurs="1" default="true"/>
    -    </all>
    -  </complexType>
    -
    -  <complexType name="RenderMapping">
    -    <all>
    -      <!-- The default schema as defined in org.jooq.Schema.getName()
    -           This schema will be omitted in rendered SQL -->
    -      <element name="defaultSchema" type="string" minOccurs="0" maxOccurs="1"/>
    -
    -      <!-- The mapped schemata configuration -->
    -      <element name="schemata" type="jooq-runtime:MappedSchemata" minOccurs="0" maxOccurs="1"/>
    -    </all>
    -  </complexType>
    -
    -  <complexType name="MappedSchemata">
    -    <sequence>
    -      <element name="schema" type="jooq-runtime:MappedSchema" minOccurs="0" maxOccurs="unbounded"/>
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="MappedSchema">
    -    <all>
    -      <!-- The input schema as defined in org.jooq.Schema.getName() -->
    -      <element name="input" type="string" minOccurs="1" maxOccurs="1"/>
    -
    -      <!-- The output schema as it will be rendered in SQL
    -           When this is omitted, you can still apply table mapping -->
    -      <element name="output" type="string" minOccurs="0" maxOccurs="1"/>
    -
    -      <!-- Configure table mapping for runtime table rewriting in
    -           generated SQL -->
    -      <element name="tables" type="jooq-runtime:MappedTables" minOccurs="0" maxOccurs="1"/>
    -    </all>
    -  </complexType>
    -
    -  <complexType name="MappedTables">
    -    <sequence>
    -      <element name="table" type="jooq-runtime:MappedTable" minOccurs="0" maxOccurs="unbounded"/>
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="MappedTable">
    -    <all>
    -      <!-- The input schema as defined in org.jooq.Table.getName() -->
    -      <element name="input" type="string" minOccurs="1" maxOccurs="1"/>
    -
    -      <!-- The output schema as it will be rendered in SQL -->
    -      <element name="output" type="string" minOccurs="1" maxOccurs="1"/>
    -    </all>
    -  </complexType>
    -
    -  <simpleType name="StatementType">
    -    <restriction base="string">
    -
    -      <!-- Execute statements with inlined bind values, avoiding JDBC's
    -           PreparedStatements -->
    -      <enumeration value="STATIC_STATEMENT"/>
    -
    -      <!-- Execute statements with bind values, using JDBC's
    -           PreparedStatements -->
    -      <enumeration value="PREPARED_STATEMENT"/>
    -    </restriction>
    -  </simpleType>
    -
    -  <simpleType name="RenderNameStyle">
    -    <restriction base="string">
    -
    -      <!-- Render object names quoted, as defined in the database. Use this
    -           to stay on the safe side with case-sensitivity and special
    -           characters. For instance:
    -           Oracle    : "SYS"."ALL_TAB_COLS"
    -           MySQL     : `information_schema`.`TABLES`
    -           SQL Server: [INFORMATION_SCHEMA].[TABLES] -->
    -      <enumeration value="QUOTED"/>
    -
    -      <!-- Render object names, as defined in the database. For instance:
    -           Oracle    : SYS.ALL_TAB_COLS
    -           MySQL     : information_schema.TABLES
    -           SQL Server: INFORMATION_SCHEMA.TABLES -->
    -      <enumeration value="AS_IS"/>
    -
    -      <!-- Force rendering object names in lower case. For instance:
    -           Oracle    : sys.all_tab_cols
    -           MySQL     : information_schema.tables
    -           SQL Server: information_schema.tables -->
    -      <enumeration value="LOWER"/>
    -
    -      <!-- Force rendering object names in upper case. For instance:
    -           Oracle    : SYS.ALL_TAB_COLS
    -           MySQL     : INFORMATION_SCHEMA.TABLES
    -           SQL Server: INFORMATION_SCHEMA.TABLES -->
    -      <enumeration value="UPPER"/>
    -    </restriction>
    -  </simpleType>
    -
    -  <simpleType name="RenderKeywordStyle">
    -    <restriction base="string">
    -
    -      <!-- Keywords are rendered in lower case. For instance:
    -           select .. from .. where .. -->
    -      <enumeration value="LOWER"/>
    -
    -      <!-- Keywords are rendered in upper case. For instance:
    -           SELECT .. FROM .. WHERE .. -->
    -      <enumeration value="UPPER"/>
    -    </restriction>
    -  </simpleType>
    -</schema>
    \ No newline at end of file
    diff --git a/jOOQ-website/xsd/jooq-runtime-3.1.0.xsd b/jOOQ-website/xsd/jooq-runtime-3.1.0.xsd
    deleted file mode 100644
    index 2c32aea4b1..0000000000
    --- a/jOOQ-website/xsd/jooq-runtime-3.1.0.xsd
    +++ /dev/null
    @@ -1,175 +0,0 @@
    -<?xml version="1.0" encoding="UTF-8"?>
    -<schema
    -  xmlns="http://www.w3.org/2001/XMLSchema"
    -  xmlns:jooq-runtime="http://www.jooq.org/xsd/jooq-runtime-3.1.0.xsd"
    -  targetNamespace="http://www.jooq.org/xsd/jooq-runtime-3.1.0.xsd"
    -  elementFormDefault="qualified">
    -
    -  <element name="settings" type="jooq-runtime:Settings"/>
    -
    -  <complexType name="Settings">
    -    <all>
    -      <!-- Whether any schema name should be rendered at all.
    -           Use this for single-schema environments, or when all objects are made
    -           available using synonyms -->
    -      <element name="renderSchema" type="boolean" minOccurs="0" maxOccurs="1" default="true"/>
    -
    -      <!-- Configure render mapping for runtime schema / table rewriting in
    -           generated SQL -->
    -      <element name="renderMapping" type="jooq-runtime:RenderMapping" minOccurs="0" maxOccurs="1"/>
    -
    -      <!-- Whether rendered schema, table, column names, etc should be quoted
    -           in rendered SQL, or transformed in any other way.
    -           This is set to "QUOTED" by default for backwards-compatibility -->
    -      <element name="renderNameStyle" type="jooq-runtime:RenderNameStyle" minOccurs="0" maxOccurs="1" default="QUOTED"/>
    -
    -      <!-- Whether SQL keywords should be rendered with upper or lower case -->
    -      <element name="renderKeywordStyle" type="jooq-runtime:RenderKeywordStyle" minOccurs="0" maxOccurs="1" default="LOWER"/>
    -
    -      <!-- Whether rendered SQL should be pretty-printed -->
    -      <element name="renderFormatted" type="boolean" minOccurs="0" maxOccurs="1" default="false"/>
    -
    -      <!-- Whether rendered bind values should be rendered as:
    -      
    -           - question marks
    -           - named parameters
    -           - inlined values
    -           
    -           This value is overridden by statementType == STATIC_STATEMENT, in 
    -           case of which, this defaults to INLINED
    -        -->
    -      <element name="paramType" type="jooq-runtime:ParamType" minOccurs="0" maxOccurs="1" default="INDEXED"/>
    -      
    -      <!-- The type of statement that is to be executed -->
    -      <element name="statementType" type="jooq-runtime:StatementType" minOccurs="0" maxOccurs="1" default="PREPARED_STATEMENT"/>
    -
    -      <!-- When set to true, this will add jOOQ's default logging ExecuteListeners -->
    -      <element name="executeLogging" type="boolean" minOccurs="0" maxOccurs="1" default="true"/>
    -
    -      <!-- Whether store() and delete() methods should be executed with optimistic locking -->
    -      <element name="executeWithOptimisticLocking" type="boolean" minOccurs="0" maxOccurs="1" default="false"/>
    -      
    -      <!-- Whether fetched records should be attached to the fetching configuration -->
    -      <element name="attachRecords" type="boolean" minOccurs="0" maxOccurs="1" default="true"/>
    -    </all>
    -  </complexType>
    -
    -  <complexType name="RenderMapping">
    -    <all>
    -      <!-- The default schema as defined in org.jooq.Schema.getName()
    -           This schema will be omitted in rendered SQL -->
    -      <element name="defaultSchema" type="string" minOccurs="0" maxOccurs="1"/>
    -
    -      <!-- The mapped schemata configuration -->
    -      <element name="schemata" type="jooq-runtime:MappedSchemata" minOccurs="0" maxOccurs="1"/>
    -    </all>
    -  </complexType>
    -
    -  <complexType name="MappedSchemata">
    -    <sequence>
    -      <element name="schema" type="jooq-runtime:MappedSchema" minOccurs="0" maxOccurs="unbounded"/>
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="MappedSchema">
    -    <all>
    -      <!-- The input schema as defined in org.jooq.Schema.getName() -->
    -      <element name="input" type="string" minOccurs="1" maxOccurs="1"/>
    -
    -      <!-- The output schema as it will be rendered in SQL
    -           When this is omitted, you can still apply table mapping -->
    -      <element name="output" type="string" minOccurs="0" maxOccurs="1"/>
    -
    -      <!-- Configure table mapping for runtime table rewriting in
    -           generated SQL -->
    -      <element name="tables" type="jooq-runtime:MappedTables" minOccurs="0" maxOccurs="1"/>
    -    </all>
    -  </complexType>
    -
    -  <complexType name="MappedTables">
    -    <sequence>
    -      <element name="table" type="jooq-runtime:MappedTable" minOccurs="0" maxOccurs="unbounded"/>
    -    </sequence>
    -  </complexType>
    -
    -  <complexType name="MappedTable">
    -    <all>
    -      <!-- The input schema as defined in org.jooq.Table.getName() -->
    -      <element name="input" type="string" minOccurs="1" maxOccurs="1"/>
    -
    -      <!-- The output schema as it will be rendered in SQL -->
    -      <element name="output" type="string" minOccurs="1" maxOccurs="1"/>
    -    </all>
    -  </complexType>
    -
    -  <simpleType name="ParamType">
    -    <restriction base="string">
    -
    -      <!-- Execute statements with indexed parameters, the way JDBC expects them -->
    -      <enumeration value="INDEXED"/>
    -
    -      <!-- Execute statements with named parameters -->
    -      <enumeration value="NAMED"/>
    -
    -      <!-- Execute statements with inlined parameters -->
    -      <enumeration value="INLINED"/>
    -    </restriction>
    -  </simpleType>
    -
    -  <simpleType name="StatementType">
    -    <restriction base="string">
    -
    -      <!-- Execute statements with inlined bind values, avoiding JDBC's
    -           PreparedStatements -->
    -      <enumeration value="STATIC_STATEMENT"/>
    -
    -      <!-- Execute statements with bind values, using JDBC's
    -           PreparedStatements -->
    -      <enumeration value="PREPARED_STATEMENT"/>
    -    </restriction>
    -  </simpleType>
    -
    -  <simpleType name="RenderNameStyle">
    -    <restriction base="string">
    -
    -      <!-- Render object names quoted, as defined in the database. Use this
    -           to stay on the safe side with case-sensitivity and special
    -           characters. For instance:
    -           Oracle    : "SYS"."ALL_TAB_COLS"
    -           MySQL     : `information_schema`.`TABLES`
    -           SQL Server: [INFORMATION_SCHEMA].[TABLES] -->
    -      <enumeration value="QUOTED"/>
    -
    -      <!-- Render object names, as defined in the database. For instance:
    -           Oracle    : SYS.ALL_TAB_COLS
    -           MySQL     : information_schema.TABLES
    -           SQL Server: INFORMATION_SCHEMA.TABLES -->
    -      <enumeration value="AS_IS"/>
    -
    -      <!-- Force rendering object names in lower case. For instance:
    -           Oracle    : sys.all_tab_cols
    -           MySQL     : information_schema.tables
    -           SQL Server: information_schema.tables -->
    -      <enumeration value="LOWER"/>
    -
    -      <!-- Force rendering object names in upper case. For instance:
    -           Oracle    : SYS.ALL_TAB_COLS
    -           MySQL     : INFORMATION_SCHEMA.TABLES
    -           SQL Server: INFORMATION_SCHEMA.TABLES -->
    -      <enumeration value="UPPER"/>
    -    </restriction>
    -  </simpleType>
    -
    -  <simpleType name="RenderKeywordStyle">
    -    <restriction base="string">
    -
    -      <!-- Keywords are rendered in lower case. For instance:
    -           select .. from .. where .. -->
    -      <enumeration value="LOWER"/>
    -
    -      <!-- Keywords are rendered in upper case. For instance:
    -           SELECT .. FROM .. WHERE .. -->
    -      <enumeration value="UPPER"/>
    -    </restriction>
    -  </simpleType>
    -</schema>
    \ No newline at end of file
    
  • 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�?eK0lt#Kk==53EG`T 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 diff --git a/jOOQ-website/img/joox-big.png b/jOOQ-website/img/joox-big.png deleted file mode 100644 index 56d8162c6a5adec0e615f90b0e4ca8de925cbe8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1394281 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�#h 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 -up3M%&iBO+r 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