+#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 extends Number>)
+#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 extends T>) 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 extends T>) 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