[#3886] Add Field<Record[N]<T1, ..., T[N]>> DSL.field(Row[N]) to allow for nesting rows in SELECT clauses

This commit is contained in:
Lukas Eder 2015-01-06 15:22:12 +01:00
parent 208abdbfbe
commit 97fd143471
7 changed files with 249 additions and 181 deletions

View File

@ -94,7 +94,7 @@ class CursorImpl<R extends Record> implements Cursor<R> {
private final ExecuteContext ctx;
private final ExecuteListener listener;
private final Field<?>[] fields;
private final Field<?>[] cursorFields;
private final boolean[] intern;
private final boolean keepResultSet;
private final boolean keepStatement;
@ -113,7 +113,7 @@ class CursorImpl<R extends Record> implements Cursor<R> {
CursorImpl(ExecuteContext ctx, ExecuteListener listener, Field<?>[] fields, int[] internIndexes, boolean keepStatement, boolean keepResultSet, Class<? extends R> type) {
this.ctx = ctx;
this.listener = (listener != null ? listener : new ExecuteListeners(ctx));
this.fields = fields;
this.cursorFields = fields;
this.factory = recordFactory(type, fields);
this.keepStatement = keepStatement;
this.keepResultSet = keepResultSet;
@ -130,13 +130,13 @@ class CursorImpl<R extends Record> implements Cursor<R> {
@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
public final RecordType<R> recordType() {
return new RowImpl(fields).fields;
return new RowImpl(cursorFields).fields;
}
@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
public final Row fieldsRow() {
return new RowImpl(fields);
return new RowImpl(cursorFields);
}
@Override
@ -151,12 +151,12 @@ class CursorImpl<R extends Record> implements Cursor<R> {
@Override
public final Field<?> field(int index) {
return index >= 0 && index < fields.length ? fields[index] : null;
return index >= 0 && index < cursorFields.length ? cursorFields[index] : null;
}
@Override
public final Field<?>[] fields() {
return fields.clone();
return cursorFields.clone();
}
@Override
@ -196,7 +196,7 @@ class CursorImpl<R extends Record> implements Cursor<R> {
// Before listener.resultStart(ctx)
iterator();
ResultImpl<R> result = new ResultImpl<R>(ctx.configuration(), fields);
ResultImpl<R> result = new ResultImpl<R>(ctx.configuration(), cursorFields);
ctx.result(result);
listener.resultStart(ctx);
@ -1371,11 +1371,6 @@ class CursorImpl<R extends Record> implements Cursor<R> {
*/
private Boolean hasNext;
/**
* A delegate runnable that handles record initialisation.
*/
private final CursorRecordInitialiser initialiser = new CursorRecordInitialiser();
@Override
public final boolean hasNext() {
if (hasNext == null) {
@ -1412,7 +1407,7 @@ class CursorImpl<R extends Record> implements Cursor<R> {
}
record = Utils.newRecord(true, (RecordFactory<AbstractRecord>) factory, ctx.configuration())
.operate(initialiser);
.operate(new CursorRecordInitialiser(cursorFields, 0));
rows++;
}
@ -1450,13 +1445,21 @@ class CursorImpl<R extends Record> implements Cursor<R> {
private class CursorRecordInitialiser implements RecordOperation<AbstractRecord, SQLException> {
private final Field<?>[] initaliserFields;
private int offset;
CursorRecordInitialiser(Field<?>[] fields, int offset) {
this.initaliserFields = fields;
this.offset = offset;
}
@Override
public AbstractRecord operate(AbstractRecord record) throws SQLException {
ctx.record(record);
listener.recordStart(ctx);
for (int i = 0; i < fields.length; i++) {
setValue(record, fields[i], i);
for (int i = 0; i < initaliserFields.length; i++) {
setValue(record, initaliserFields[i], i);
if (intern[i]) {
record.intern0(i);
@ -1472,10 +1475,23 @@ class CursorImpl<R extends Record> implements Cursor<R> {
/**
* Utility method to prevent unnecessary unchecked conversions
*/
@SuppressWarnings("unchecked")
private final <T> void setValue(AbstractRecord record, Field<T> field, int index) throws SQLException {
DefaultBindingGetResultSetContext<T> out = new DefaultBindingGetResultSetContext<T>(ctx.configuration(), ctx.resultSet(), index + 1);
field.getBinding().get(out);
T value = out.value();
T value;
if (field instanceof RowField) {
Field<?>[] emulatedFields = ((RowField<?, ?>) field).emulatedFields();
value = (T) Utils.newRecord(true, RecordImpl.class, emulatedFields, ctx.configuration())
.operate(new CursorRecordInitialiser(emulatedFields, offset + index));
offset += emulatedFields.length - 1;
}
else {
DefaultBindingGetResultSetContext<T> out = new DefaultBindingGetResultSetContext<T>(ctx.configuration(), ctx.resultSet(), offset + index + 1);
field.getBinding().get(out);
value = out.value();
}
record.values[index] = value;
record.originals[index] = value;

View File

@ -6558,287 +6558,287 @@ public class DSL {
* Turn a row value expression of degree <code>1</code> into a {@code Field}.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@Support({ POSTGRES })
@Support
public static <T1> Field<Record1<T1>> field(Row1<T1> row) {
return new RowField<Row1<T1>, Record1<T1>>(row);
}
}
/**
* Turn a row value expression of degree <code>2</code> into a {@code Field}.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@Support({ POSTGRES })
@Support
public static <T1, T2> Field<Record2<T1, T2>> field(Row2<T1, T2> row) {
return new RowField<Row2<T1, T2>, Record2<T1, T2>>(row);
}
}
/**
* Turn a row value expression of degree <code>3</code> into a {@code Field}.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@Support({ POSTGRES })
@Support
public static <T1, T2, T3> Field<Record3<T1, T2, T3>> field(Row3<T1, T2, T3> row) {
return new RowField<Row3<T1, T2, T3>, Record3<T1, T2, T3>>(row);
}
}
/**
* Turn a row value expression of degree <code>4</code> into a {@code Field}.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@Support({ POSTGRES })
@Support
public static <T1, T2, T3, T4> Field<Record4<T1, T2, T3, T4>> field(Row4<T1, T2, T3, T4> row) {
return new RowField<Row4<T1, T2, T3, T4>, Record4<T1, T2, T3, T4>>(row);
}
}
/**
* Turn a row value expression of degree <code>5</code> into a {@code Field}.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@Support({ POSTGRES })
@Support
public static <T1, T2, T3, T4, T5> Field<Record5<T1, T2, T3, T4, T5>> field(Row5<T1, T2, T3, T4, T5> row) {
return new RowField<Row5<T1, T2, T3, T4, T5>, Record5<T1, T2, T3, T4, T5>>(row);
}
}
/**
* Turn a row value expression of degree <code>6</code> into a {@code Field}.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@Support({ POSTGRES })
@Support
public static <T1, T2, T3, T4, T5, T6> Field<Record6<T1, T2, T3, T4, T5, T6>> field(Row6<T1, T2, T3, T4, T5, T6> row) {
return new RowField<Row6<T1, T2, T3, T4, T5, T6>, Record6<T1, T2, T3, T4, T5, T6>>(row);
}
}
/**
* Turn a row value expression of degree <code>7</code> into a {@code Field}.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@Support({ POSTGRES })
@Support
public static <T1, T2, T3, T4, T5, T6, T7> Field<Record7<T1, T2, T3, T4, T5, T6, T7>> field(Row7<T1, T2, T3, T4, T5, T6, T7> row) {
return new RowField<Row7<T1, T2, T3, T4, T5, T6, T7>, Record7<T1, T2, T3, T4, T5, T6, T7>>(row);
}
}
/**
* Turn a row value expression of degree <code>8</code> into a {@code Field}.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@Support({ POSTGRES })
@Support
public static <T1, T2, T3, T4, T5, T6, T7, T8> Field<Record8<T1, T2, T3, T4, T5, T6, T7, T8>> field(Row8<T1, T2, T3, T4, T5, T6, T7, T8> row) {
return new RowField<Row8<T1, T2, T3, T4, T5, T6, T7, T8>, Record8<T1, T2, T3, T4, T5, T6, T7, T8>>(row);
}
}
/**
* Turn a row value expression of degree <code>9</code> into a {@code Field}.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@Support({ POSTGRES })
@Support
public static <T1, T2, T3, T4, T5, T6, T7, T8, T9> Field<Record9<T1, T2, T3, T4, T5, T6, T7, T8, T9>> field(Row9<T1, T2, T3, T4, T5, T6, T7, T8, T9> row) {
return new RowField<Row9<T1, T2, T3, T4, T5, T6, T7, T8, T9>, Record9<T1, T2, T3, T4, T5, T6, T7, T8, T9>>(row);
}
}
/**
* Turn a row value expression of degree <code>10</code> into a {@code Field}.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@Support({ POSTGRES })
@Support
public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Field<Record10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>> field(Row10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> row) {
return new RowField<Row10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>, Record10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>>(row);
}
}
/**
* Turn a row value expression of degree <code>11</code> into a {@code Field}.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@Support({ POSTGRES })
@Support
public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Field<Record11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>> field(Row11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> row) {
return new RowField<Row11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>, Record11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>>(row);
}
}
/**
* Turn a row value expression of degree <code>12</code> into a {@code Field}.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@Support({ POSTGRES })
@Support
public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Field<Record12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>> field(Row12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> row) {
return new RowField<Row12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>, Record12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>>(row);
}
}
/**
* Turn a row value expression of degree <code>13</code> into a {@code Field}.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@Support({ POSTGRES })
@Support
public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Field<Record13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>> field(Row13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> row) {
return new RowField<Row13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>, Record13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>>(row);
}
}
/**
* Turn a row value expression of degree <code>14</code> into a {@code Field}.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@Support({ POSTGRES })
@Support
public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> Field<Record14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>> field(Row14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> row) {
return new RowField<Row14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>, Record14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>>(row);
}
}
/**
* Turn a row value expression of degree <code>15</code> into a {@code Field}.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@Support({ POSTGRES })
@Support
public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> Field<Record15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>> field(Row15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> row) {
return new RowField<Row15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>, Record15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>>(row);
}
}
/**
* Turn a row value expression of degree <code>16</code> into a {@code Field}.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@Support({ POSTGRES })
@Support
public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> Field<Record16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>> field(Row16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> row) {
return new RowField<Row16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>, Record16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>>(row);
}
}
/**
* Turn a row value expression of degree <code>17</code> into a {@code Field}.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@Support({ POSTGRES })
@Support
public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17> Field<Record17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>> field(Row17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17> row) {
return new RowField<Row17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>, Record17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>>(row);
}
}
/**
* Turn a row value expression of degree <code>18</code> into a {@code Field}.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@Support({ POSTGRES })
@Support
public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18> Field<Record18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>> field(Row18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18> row) {
return new RowField<Row18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>, Record18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>>(row);
}
}
/**
* Turn a row value expression of degree <code>19</code> into a {@code Field}.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@Support({ POSTGRES })
@Support
public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19> Field<Record19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>> field(Row19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19> row) {
return new RowField<Row19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>, Record19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>>(row);
}
}
/**
* Turn a row value expression of degree <code>20</code> into a {@code Field}.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@Support({ POSTGRES })
@Support
public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20> Field<Record20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>> field(Row20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20> row) {
return new RowField<Row20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>, Record20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>>(row);
}
}
/**
* Turn a row value expression of degree <code>21</code> into a {@code Field}.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@Support({ POSTGRES })
@Support
public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21> Field<Record21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>> field(Row21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21> row) {
return new RowField<Row21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>, Record21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>>(row);
}
}
/**
* Turn a row value expression of degree <code>22</code> into a {@code Field}.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@Support({ POSTGRES })
@Support
public static <T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22> Field<Record22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>> field(Row22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22> row) {
return new RowField<Row22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>, Record22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>>(row);
}
}
// [jooq-tools] END [row-field]
@ -11515,7 +11515,7 @@ public class DSL {
* Create a row value expression of degree <code>1</code>.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@ -11528,7 +11528,7 @@ public class DSL {
* Create a row value expression of degree <code>2</code>.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@ -11541,7 +11541,7 @@ public class DSL {
* Create a row value expression of degree <code>3</code>.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@ -11554,7 +11554,7 @@ public class DSL {
* Create a row value expression of degree <code>4</code>.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@ -11567,7 +11567,7 @@ public class DSL {
* Create a row value expression of degree <code>5</code>.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@ -11580,7 +11580,7 @@ public class DSL {
* Create a row value expression of degree <code>6</code>.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@ -11593,7 +11593,7 @@ public class DSL {
* Create a row value expression of degree <code>7</code>.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@ -11606,7 +11606,7 @@ public class DSL {
* Create a row value expression of degree <code>8</code>.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@ -11619,7 +11619,7 @@ public class DSL {
* Create a row value expression of degree <code>9</code>.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@ -11632,7 +11632,7 @@ public class DSL {
* Create a row value expression of degree <code>10</code>.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@ -11645,7 +11645,7 @@ public class DSL {
* Create a row value expression of degree <code>11</code>.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@ -11658,7 +11658,7 @@ public class DSL {
* Create a row value expression of degree <code>12</code>.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@ -11671,7 +11671,7 @@ public class DSL {
* Create a row value expression of degree <code>13</code>.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@ -11684,7 +11684,7 @@ public class DSL {
* Create a row value expression of degree <code>14</code>.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@ -11697,7 +11697,7 @@ public class DSL {
* Create a row value expression of degree <code>15</code>.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@ -11710,7 +11710,7 @@ public class DSL {
* Create a row value expression of degree <code>16</code>.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@ -11723,7 +11723,7 @@ public class DSL {
* Create a row value expression of degree <code>17</code>.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@ -11736,7 +11736,7 @@ public class DSL {
* Create a row value expression of degree <code>18</code>.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@ -11749,7 +11749,7 @@ public class DSL {
* Create a row value expression of degree <code>19</code>.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@ -11762,7 +11762,7 @@ public class DSL {
* Create a row value expression of degree <code>20</code>.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@ -11775,7 +11775,7 @@ public class DSL {
* Create a row value expression of degree <code>21</code>.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@ -11788,7 +11788,7 @@ public class DSL {
* Create a row value expression of degree <code>22</code>.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@ -11817,7 +11817,7 @@ public class DSL {
* Create a row value expression of degree <code>1</code>.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@ -11830,7 +11830,7 @@ public class DSL {
* Create a row value expression of degree <code>2</code>.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@ -11843,7 +11843,7 @@ public class DSL {
* Create a row value expression of degree <code>3</code>.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@ -11856,7 +11856,7 @@ public class DSL {
* Create a row value expression of degree <code>4</code>.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@ -11869,7 +11869,7 @@ public class DSL {
* Create a row value expression of degree <code>5</code>.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@ -11882,7 +11882,7 @@ public class DSL {
* Create a row value expression of degree <code>6</code>.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@ -11895,7 +11895,7 @@ public class DSL {
* Create a row value expression of degree <code>7</code>.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@ -11908,7 +11908,7 @@ public class DSL {
* Create a row value expression of degree <code>8</code>.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@ -11921,7 +11921,7 @@ public class DSL {
* Create a row value expression of degree <code>9</code>.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@ -11934,7 +11934,7 @@ public class DSL {
* Create a row value expression of degree <code>10</code>.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@ -11947,7 +11947,7 @@ public class DSL {
* Create a row value expression of degree <code>11</code>.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@ -11960,7 +11960,7 @@ public class DSL {
* Create a row value expression of degree <code>12</code>.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@ -11973,7 +11973,7 @@ public class DSL {
* Create a row value expression of degree <code>13</code>.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@ -11986,7 +11986,7 @@ public class DSL {
* Create a row value expression of degree <code>14</code>.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@ -11999,7 +11999,7 @@ public class DSL {
* Create a row value expression of degree <code>15</code>.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@ -12012,7 +12012,7 @@ public class DSL {
* Create a row value expression of degree <code>16</code>.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@ -12025,7 +12025,7 @@ public class DSL {
* Create a row value expression of degree <code>17</code>.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@ -12038,7 +12038,7 @@ public class DSL {
* Create a row value expression of degree <code>18</code>.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@ -12051,7 +12051,7 @@ public class DSL {
* Create a row value expression of degree <code>19</code>.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@ -12064,7 +12064,7 @@ public class DSL {
* Create a row value expression of degree <code>20</code>.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@ -12077,7 +12077,7 @@ public class DSL {
* Create a row value expression of degree <code>21</code>.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@ -12090,7 +12090,7 @@ public class DSL {
* Create a row value expression of degree <code>22</code>.
* <p>
* Note: Not all databases support row value expressions, but many row value
* expression operations can be simulated on all databases. See relevant row
* expression operations can be emulated on all databases. See relevant row
* value expression method Javadocs for details.
*/
@Generated("This method was generated using jOOQ-tools")
@ -12182,7 +12182,7 @@ public class DSL {
* databases to allow for constructing tables from constant values.
* <p>
* If a database doesn't support the <code>VALUES()</code> constructor, it
* can be simulated using <code>SELECT .. UNION ALL ..</code>. The following
* can be emulated using <code>SELECT .. UNION ALL ..</code>. The following
* expressions are equivalent:
* <p>
* <pre><code>
@ -12214,7 +12214,7 @@ public class DSL {
* databases to allow for constructing tables from constant values.
* <p>
* If a database doesn't support the <code>VALUES()</code> constructor, it
* can be simulated using <code>SELECT .. UNION ALL ..</code>. The following
* can be emulated using <code>SELECT .. UNION ALL ..</code>. The following
* expressions are equivalent:
* <p>
* <pre><code>
@ -12246,7 +12246,7 @@ public class DSL {
* databases to allow for constructing tables from constant values.
* <p>
* If a database doesn't support the <code>VALUES()</code> constructor, it
* can be simulated using <code>SELECT .. UNION ALL ..</code>. The following
* can be emulated using <code>SELECT .. UNION ALL ..</code>. The following
* expressions are equivalent:
* <p>
* <pre><code>
@ -12278,7 +12278,7 @@ public class DSL {
* databases to allow for constructing tables from constant values.
* <p>
* If a database doesn't support the <code>VALUES()</code> constructor, it
* can be simulated using <code>SELECT .. UNION ALL ..</code>. The following
* can be emulated using <code>SELECT .. UNION ALL ..</code>. The following
* expressions are equivalent:
* <p>
* <pre><code>
@ -12310,7 +12310,7 @@ public class DSL {
* databases to allow for constructing tables from constant values.
* <p>
* If a database doesn't support the <code>VALUES()</code> constructor, it
* can be simulated using <code>SELECT .. UNION ALL ..</code>. The following
* can be emulated using <code>SELECT .. UNION ALL ..</code>. The following
* expressions are equivalent:
* <p>
* <pre><code>
@ -12342,7 +12342,7 @@ public class DSL {
* databases to allow for constructing tables from constant values.
* <p>
* If a database doesn't support the <code>VALUES()</code> constructor, it
* can be simulated using <code>SELECT .. UNION ALL ..</code>. The following
* can be emulated using <code>SELECT .. UNION ALL ..</code>. The following
* expressions are equivalent:
* <p>
* <pre><code>
@ -12374,7 +12374,7 @@ public class DSL {
* databases to allow for constructing tables from constant values.
* <p>
* If a database doesn't support the <code>VALUES()</code> constructor, it
* can be simulated using <code>SELECT .. UNION ALL ..</code>. The following
* can be emulated using <code>SELECT .. UNION ALL ..</code>. The following
* expressions are equivalent:
* <p>
* <pre><code>
@ -12406,7 +12406,7 @@ public class DSL {
* databases to allow for constructing tables from constant values.
* <p>
* If a database doesn't support the <code>VALUES()</code> constructor, it
* can be simulated using <code>SELECT .. UNION ALL ..</code>. The following
* can be emulated using <code>SELECT .. UNION ALL ..</code>. The following
* expressions are equivalent:
* <p>
* <pre><code>
@ -12438,7 +12438,7 @@ public class DSL {
* databases to allow for constructing tables from constant values.
* <p>
* If a database doesn't support the <code>VALUES()</code> constructor, it
* can be simulated using <code>SELECT .. UNION ALL ..</code>. The following
* can be emulated using <code>SELECT .. UNION ALL ..</code>. The following
* expressions are equivalent:
* <p>
* <pre><code>
@ -12470,7 +12470,7 @@ public class DSL {
* databases to allow for constructing tables from constant values.
* <p>
* If a database doesn't support the <code>VALUES()</code> constructor, it
* can be simulated using <code>SELECT .. UNION ALL ..</code>. The following
* can be emulated using <code>SELECT .. UNION ALL ..</code>. The following
* expressions are equivalent:
* <p>
* <pre><code>
@ -12502,7 +12502,7 @@ public class DSL {
* databases to allow for constructing tables from constant values.
* <p>
* If a database doesn't support the <code>VALUES()</code> constructor, it
* can be simulated using <code>SELECT .. UNION ALL ..</code>. The following
* can be emulated using <code>SELECT .. UNION ALL ..</code>. The following
* expressions are equivalent:
* <p>
* <pre><code>
@ -12534,7 +12534,7 @@ public class DSL {
* databases to allow for constructing tables from constant values.
* <p>
* If a database doesn't support the <code>VALUES()</code> constructor, it
* can be simulated using <code>SELECT .. UNION ALL ..</code>. The following
* can be emulated using <code>SELECT .. UNION ALL ..</code>. The following
* expressions are equivalent:
* <p>
* <pre><code>
@ -12566,7 +12566,7 @@ public class DSL {
* databases to allow for constructing tables from constant values.
* <p>
* If a database doesn't support the <code>VALUES()</code> constructor, it
* can be simulated using <code>SELECT .. UNION ALL ..</code>. The following
* can be emulated using <code>SELECT .. UNION ALL ..</code>. The following
* expressions are equivalent:
* <p>
* <pre><code>
@ -12598,7 +12598,7 @@ public class DSL {
* databases to allow for constructing tables from constant values.
* <p>
* If a database doesn't support the <code>VALUES()</code> constructor, it
* can be simulated using <code>SELECT .. UNION ALL ..</code>. The following
* can be emulated using <code>SELECT .. UNION ALL ..</code>. The following
* expressions are equivalent:
* <p>
* <pre><code>
@ -12630,7 +12630,7 @@ public class DSL {
* databases to allow for constructing tables from constant values.
* <p>
* If a database doesn't support the <code>VALUES()</code> constructor, it
* can be simulated using <code>SELECT .. UNION ALL ..</code>. The following
* can be emulated using <code>SELECT .. UNION ALL ..</code>. The following
* expressions are equivalent:
* <p>
* <pre><code>
@ -12662,7 +12662,7 @@ public class DSL {
* databases to allow for constructing tables from constant values.
* <p>
* If a database doesn't support the <code>VALUES()</code> constructor, it
* can be simulated using <code>SELECT .. UNION ALL ..</code>. The following
* can be emulated using <code>SELECT .. UNION ALL ..</code>. The following
* expressions are equivalent:
* <p>
* <pre><code>
@ -12694,7 +12694,7 @@ public class DSL {
* databases to allow for constructing tables from constant values.
* <p>
* If a database doesn't support the <code>VALUES()</code> constructor, it
* can be simulated using <code>SELECT .. UNION ALL ..</code>. The following
* can be emulated using <code>SELECT .. UNION ALL ..</code>. The following
* expressions are equivalent:
* <p>
* <pre><code>
@ -12726,7 +12726,7 @@ public class DSL {
* databases to allow for constructing tables from constant values.
* <p>
* If a database doesn't support the <code>VALUES()</code> constructor, it
* can be simulated using <code>SELECT .. UNION ALL ..</code>. The following
* can be emulated using <code>SELECT .. UNION ALL ..</code>. The following
* expressions are equivalent:
* <p>
* <pre><code>
@ -12758,7 +12758,7 @@ public class DSL {
* databases to allow for constructing tables from constant values.
* <p>
* If a database doesn't support the <code>VALUES()</code> constructor, it
* can be simulated using <code>SELECT .. UNION ALL ..</code>. The following
* can be emulated using <code>SELECT .. UNION ALL ..</code>. The following
* expressions are equivalent:
* <p>
* <pre><code>
@ -12790,7 +12790,7 @@ public class DSL {
* databases to allow for constructing tables from constant values.
* <p>
* If a database doesn't support the <code>VALUES()</code> constructor, it
* can be simulated using <code>SELECT .. UNION ALL ..</code>. The following
* can be emulated using <code>SELECT .. UNION ALL ..</code>. The following
* expressions are equivalent:
* <p>
* <pre><code>
@ -12822,7 +12822,7 @@ public class DSL {
* databases to allow for constructing tables from constant values.
* <p>
* If a database doesn't support the <code>VALUES()</code> constructor, it
* can be simulated using <code>SELECT .. UNION ALL ..</code>. The following
* can be emulated using <code>SELECT .. UNION ALL ..</code>. The following
* expressions are equivalent:
* <p>
* <pre><code>
@ -12854,7 +12854,7 @@ public class DSL {
* databases to allow for constructing tables from constant values.
* <p>
* If a database doesn't support the <code>VALUES()</code> constructor, it
* can be simulated using <code>SELECT .. UNION ALL ..</code>. The following
* can be emulated using <code>SELECT .. UNION ALL ..</code>. The following
* expressions are equivalent:
* <p>
* <pre><code>

View File

@ -1414,7 +1414,6 @@ public class DefaultBinding<T, U> implements Binding<T, U> {
result = (T) ctx.resultSet().getObject(ctx.index(), DataTypes.udtRecords());
break;
}
}
else if (Result.class.isAssignableFrom(type)) {
ResultSet nested = (ResultSet) ctx.resultSet().getObject(ctx.index());

View File

@ -42,6 +42,7 @@
package org.jooq.impl;
import static java.util.Arrays.asList;
import static org.jooq.impl.Utils.DATA_LIST_ALREADY_INDENTED;
import java.util.ArrayList;
import java.util.Collection;
@ -91,20 +92,20 @@ class QueryPartList<T extends QueryPart> extends AbstractQueryPart implements Li
String separator = "";
boolean indent = (size() > 1);
if (indent)
if (indent && ctx.data(DATA_LIST_ALREADY_INDENTED) == null)
ctx.formatIndentStart();
for (T queryPart : this) {
for (int i = 0; i < size(); i++) {
ctx.sql(separator);
if (indent)
if (i > 0 || ctx.data(DATA_LIST_ALREADY_INDENTED) == null)
ctx.formatNewLine();
ctx.visit(queryPart);
ctx.visit(get(i));
separator = ", ";
}
if (indent)
if (indent && ctx.data(DATA_LIST_ALREADY_INDENTED) == null)
ctx.formatIndentEnd();
}
}

View File

@ -84,7 +84,7 @@ class RecordDelegate<R extends Record> {
}
@SuppressWarnings("unchecked")
final <E extends Exception> R operate(RecordOperation<R, E> operation) throws E {
final <E extends Exception> R operate(RecordOperation<? super R, E> operation) throws E {
RecordListenerProvider[] providers = null;
RecordListener[] listeners = null;
DefaultRecordContext ctx = null;

View File

@ -40,31 +40,68 @@
*/
package org.jooq.impl;
import static org.jooq.impl.Utils.DATA_LIST_ALREADY_INDENTED;
import org.jooq.Context;
import org.jooq.DataType;
import org.jooq.Field;
import org.jooq.Record;
import org.jooq.Row;
/**
* @author Lukas Eder
*/
class RowField<R1 extends Row, R2 extends Record> extends AbstractField<R2> {
class RowField<ROW extends Row, REC extends Record> extends AbstractField<REC> {
/**
* Generated UID
*/
private static final long serialVersionUID = -2065258332642911588L;
private final R1 row;
private final ROW row;
private final String as;
private final Field<?>[] emulatedFields;
RowField(R1 row) {
super("row", (DataType) SQLDataType.RECORD);
RowField(ROW row) {
this(row, "row");
}
RowField(ROW row, String as) {
super(as, (DataType) SQLDataType.RECORD);
this.row = row;
this.as = as;
this.emulatedFields = new Field[row.fields().length];
for (int i = 0; i < emulatedFields.length; i++)
emulatedFields[i] = row.field(i).as(as + "." + row.field(i).getName());
}
Field<?>[] emulatedFields() {
return emulatedFields;
}
@Override
public final void accept(Context<?> ctx) {
ctx.visit(row);
if (ctx.declareFields()) {
Object previous = ctx.data(DATA_LIST_ALREADY_INDENTED);
ctx.data(DATA_LIST_ALREADY_INDENTED, true);
ctx.visit(new SelectFieldList(emulatedFields()));
ctx.data(DATA_LIST_ALREADY_INDENTED, previous);
}
else {
ctx.visit(row);
}
}
@Override
public Field<REC> as(String alias) {
return new RowField<ROW, REC>(row, alias);
}
@Override
public boolean declaresFields() {
return true;
}
}

View File

@ -140,7 +140,7 @@ import org.jooq.tools.reflect.Reflect;
*/
final class Utils {
static final JooqLogger log = JooqLogger.getLogger(Utils.class);
static final JooqLogger log = JooqLogger.getLogger(Utils.class);
// ------------------------------------------------------------------------
// Some constants for use with Context.data()
@ -151,7 +151,7 @@ final class Utils {
* clause in {@link DSLContext#batchStore(UpdatableRecord...)} calls for
* {@link SQLDialect#POSTGRES}.
*/
static final String DATA_OMIT_RETURNING_CLAUSE = "org.jooq.configuration.omit-returning-clause";
static final String DATA_OMIT_RETURNING_CLAUSE = "org.jooq.configuration.omit-returning-clause";
/**
* [#1905] This constant is used internally by jOOQ to indicate to
@ -161,20 +161,20 @@ final class Utils {
* This is particularly useful for H2, which pretends that ARRAYs and RVEs
* are the same
*/
static final String DATA_ROW_VALUE_EXPRESSION_PREDICATE_SUBQUERY = "org.jooq.configuration.row-value-expression-subquery";
static final String DATA_ROW_VALUE_EXPRESSION_PREDICATE_SUBQUERY = "org.jooq.configuration.row-value-expression-subquery";
/**
* [#1296] This constant is used internally by jOOQ to indicate that
* {@link ResultSet} rows must be locked to simulate a
* <code>FOR UPDATE</code> clause.
*/
static final String DATA_LOCK_ROWS_FOR_UPDATE = "org.jooq.configuration.lock-rows-for-update";
static final String DATA_LOCK_ROWS_FOR_UPDATE = "org.jooq.configuration.lock-rows-for-update";
/**
* [#1520] Count the number of bind values, and potentially enforce a static
* statement.
*/
static final String DATA_COUNT_BIND_VALUES = "org.jooq.configuration.count-bind-values";
static final String DATA_COUNT_BIND_VALUES = "org.jooq.configuration.count-bind-values";
/**
* [#1520] Enforce executing static statements.
@ -189,7 +189,7 @@ final class Utils {
* <li>{@link SQLDialect#SQLSERVER} : 2100</li>
* </ul>
*/
static final String DATA_FORCE_STATIC_STATEMENT = "org.jooq.configuration.force-static-statement";
static final String DATA_FORCE_STATIC_STATEMENT = "org.jooq.configuration.force-static-statement";
/**
* [#2665] Omit the emission of clause events by {@link QueryPart}s.
@ -199,7 +199,7 @@ final class Utils {
* {@link Clause#FIELD_REFERENCE} may contain a
* {@link Clause#TABLE_REFERENCE}.
*/
static final String DATA_OMIT_CLAUSE_EVENT_EMISSION = "org.jooq.configuration.omit-clause-event-emission";
static final String DATA_OMIT_CLAUSE_EVENT_EMISSION = "org.jooq.configuration.omit-clause-event-emission";
/**
* [#2665] Wrap derived tables in parentheses.
@ -210,7 +210,7 @@ final class Utils {
* practice should no longer be pursued, as such "sub-renderers" will emit /
* divert {@link Clause} events.
*/
static final String DATA_WRAP_DERIVED_TABLES_IN_PARENTHESES = "org.jooq.configuration.wrap-derived-tables-in-parentheses";
static final String DATA_WRAP_DERIVED_TABLES_IN_PARENTHESES = "org.jooq.configuration.wrap-derived-tables-in-parentheses";
/**
* [#2790] A locally scoped data map.
@ -220,7 +220,7 @@ final class Utils {
* when communicating between SELECT and WINDOW clauses, as is required to
* emulate #531.
*/
static final String DATA_LOCALLY_SCOPED_DATA_MAP = "org.jooq.configuration.locally-scoped-data-map";
static final String DATA_LOCALLY_SCOPED_DATA_MAP = "org.jooq.configuration.locally-scoped-data-map";
/**
* [#531] The local window definitions.
@ -229,7 +229,7 @@ final class Utils {
* needed in the <code>SELECT</code> clause when emulating them by inlining
* window specifications.
*/
static final String DATA_WINDOW_DEFINITIONS = "org.jooq.configuration.local-window-definitions";
static final String DATA_WINDOW_DEFINITIONS = "org.jooq.configuration.local-window-definitions";
/* [pro] xx
xxx
@ -238,26 +238,26 @@ final class Utils {
x xx xxxx x xxxxxxxxxxx xxxxx xxxxxxx xxxxxxxxxxx xxxxxx xxxxxxx xxxxx
x xxxxxxxxxxx xx xxx xxxxxxxxxx xxxxxxxxxxxx xx xxxxxxxxxxxxxxxx xxxxxxx
xx
xxxxxx xxxxx xxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx x xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxx xxxxx xxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx x xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xx [/pro] */
/**
* [#1629] The {@link Connection#getAutoCommit()} flag value before starting
* a new transaction.
*/
static final String DATA_DEFAULT_TRANSACTION_PROVIDER_AUTOCOMMIT = "org.jooq.configuration.default-transaction-provider-autocommit";
static final String DATA_DEFAULT_TRANSACTION_PROVIDER_AUTOCOMMIT = "org.jooq.configuration.default-transaction-provider-autocommit";
/**
* [#1629] The {@link Connection#getAutoCommit()} flag value before starting
* a new transaction.
*/
static final String DATA_DEFAULT_TRANSACTION_PROVIDER_SAVEPOINTS = "org.jooq.configuration.default-transaction-provider-savepoints";
static final String DATA_DEFAULT_TRANSACTION_PROVIDER_SAVEPOINTS = "org.jooq.configuration.default-transaction-provider-savepoints";
/**
* [#1629] The {@link DefaultConnectionProvider} instance to be used during
* the transaction.
*/
static final String DATA_DEFAULT_TRANSACTION_PROVIDER_CONNECTION = "org.jooq.configuration.default-transaction-provider-connection-provider";
static final String DATA_DEFAULT_TRANSACTION_PROVIDER_CONNECTION = "org.jooq.configuration.default-transaction-provider-connection-provider";
/**
* [#2080] When emulating OFFSET pagination in certain databases, synthetic
@ -265,7 +265,7 @@ final class Utils {
* <code>ORDER BY</code> clauses, in lieu of their corresponding original
* aliases.
*/
static final String DATA_OVERRIDE_ALIASES_IN_ORDER_BY = "org.jooq.configuration.override-aliases-in-order-by";
static final String DATA_OVERRIDE_ALIASES_IN_ORDER_BY = "org.jooq.configuration.override-aliases-in-order-by";
/**
* [#2080] When emulating OFFSET pagination in certain databases, synthetic
@ -273,22 +273,27 @@ final class Utils {
* <code>ORDER BY</code> clauses, in lieu of their corresponding original
* aliases.
*/
static final String DATA_UNALIAS_ALIASES_IN_ORDER_BY = "org.jooq.configuration.unalias-aliases-in-order-by";
static final String DATA_UNALIAS_ALIASES_IN_ORDER_BY = "org.jooq.configuration.unalias-aliases-in-order-by";
/**
* [#3381] The table to be used for the {@link Clause#SELECT_INTO} clause.
*/
static final String DATA_SELECT_INTO_TABLE = "org.jooq.configuration.select-into-table";
static final String DATA_SELECT_INTO_TABLE = "org.jooq.configuration.select-into-table";
/**
* [#3381] Omit the {@link Clause#SELECT_INTO}, as it is being emulated.
*/
static final String DATA_OMIT_INTO_CLAUSE = "org.jooq.configuration.omit-into-clause";
static final String DATA_OMIT_INTO_CLAUSE = "org.jooq.configuration.omit-into-clause";
/**
* [#1658] Specify whether the trailing LIMIT clause needs to be rendered.
*/
static final String DATA_RENDER_TRAILING_LIMIT_IF_APPLICABLE = "org.jooq.configuration.render-trailing-limit-if-applicable";
static final String DATA_RENDER_TRAILING_LIMIT_IF_APPLICABLE = "org.jooq.configuration.render-trailing-limit-if-applicable";
/**
* [#3886] Whether a list has already been indented.
*/
static final String DATA_LIST_ALREADY_INDENTED = "org.jooq.configuration.list-already-indented";
/**
* [#2965] These are {@link ConcurrentHashMap}s containing caches for
@ -1876,6 +1881,16 @@ final class Utils {
V guarded();
}
/**
* A default implementation for {@link GuardedOperation#guarded()}.
*/
abstract static class AbstractGuardedOperation<V> implements GuardedOperation<V> {
@Override
public V guarded() {
return null;
}
}
/**
* Run an operation using a guard.
*/