CONNECT BY clause to the query
*/
@Support({ SQLDialect.CUBRID, SQLDialect.ORACLE })
-SelectConnectByConditionStep connectBy(Condition condition);]]>
+SelectConnectByConditionStep
jOOQ API methods which are not annotated with the
@@ -2712,6 +2712,28 @@ create.insertInto(AUTHOR, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
The above row value expressions usages are completely typesafe.
+ The Firebird and Postgres databases support a
+ The
- 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.
+ As you can see in the above example, calling
- TODO document this
+ Only few table expressions provide the SQL syntax typesafety as shown above, where generated tables are used. Most tables, however, expose their fields through
+ 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):
+
+ 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
+ Only few databaes really support such a syntax, but fortunately, jOOQ can simulate it easily using
+ In jOOQ, you would simply specify a varargs list of column aliases as such:
+
The
+ 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.
+
+ 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.
+ jOOQ's SQL clause simulation capabilities
UPDATE .. RETURNING
+ RETURNING clause on their UPDATE statements, similar as the RETURNING clause in UPDATE .. RETURNING clause is currently not simulated for other databases. Future versions might execute an additional 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.
Dereferencing columns from other table expressions
field() methods:
Derived column lists
+ UNION ALL and an empty dummy record specifying the new column names. The two statements are equivalent:
+ Higher-degree row value expressions
+ Higher-degree records
+
+ SQL result tables are not optimal in terms of used memory as they are not designed to represent hierarchical data as produced by JOIN operations. Specifically, FOREIGN KEY values may repeat themselves unnecessarily:
+
+ Now, if you have millions of records with only few distinct values for AUTHOR_ID, you may not want to hold references to distinct (but equal)
+ You can specify as many fields as you want for interning. The above has the following effect: +
+ +
+ Future versions of jOOQ will implement interning of data for non-String data types by collecting values in
+ Note, that jOOQ will not use interned data for identity comparisons: string1 == string2. Interning is used only to reduce the memory footprint of
+ The FieldProvider marker interface was removed. Its methods still exist on FieldProvider subtypes. Note, they have changed names from getField() to field() and from getIndex() to indexOf()
+
- GroupField has been introduced as a DSL marker interface to denote fields that can be passed to GROUP BY clauses. This includes all org.jooq.Field types. However, fields obtained from ROLLUP(), CUBE(), and GROUPING SETS() functions no longer implement Field. Instead, they only implement GroupField. An example:
+ GroupField has been introduced as a DSL marker interface to denote fields that can be passed to GROUP BY clauses. This includes all org.jooq.Field types. However, fields obtained from ROLLUP(), CUBE(), and GROUPING SETS() functions no longer implement Field. Instead, they only implement GroupField. An example: