[jOOQ/jOOQ#10523] Emulate UPDATE .. SET row = (SELECT ...) for dialects
with no native support
This commit is contained in:
parent
0a1181b460
commit
2ffd6f4246
@ -220,139 +220,139 @@ public interface UpdateQuery<R extends Record> extends StoreQuery<R>, ConditionP
|
||||
/**
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
void addValues(RowN row, Select<? extends Record> select);
|
||||
|
||||
/**
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
<T1> void addValues(Row1<T1> row, Select<? extends Record1<T1>> select);
|
||||
|
||||
/**
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
<T1, T2> void addValues(Row2<T1, T2> row, Select<? extends Record2<T1, T2>> select);
|
||||
|
||||
/**
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
<T1, T2, T3> void addValues(Row3<T1, T2, T3> row, Select<? extends Record3<T1, T2, T3>> select);
|
||||
|
||||
/**
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
<T1, T2, T3, T4> void addValues(Row4<T1, T2, T3, T4> row, Select<? extends Record4<T1, T2, T3, T4>> select);
|
||||
|
||||
/**
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
<T1, T2, T3, T4, T5> void addValues(Row5<T1, T2, T3, T4, T5> row, Select<? extends Record5<T1, T2, T3, T4, T5>> select);
|
||||
|
||||
/**
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
<T1, T2, T3, T4, T5, T6> void addValues(Row6<T1, T2, T3, T4, T5, T6> row, Select<? extends Record6<T1, T2, T3, T4, T5, T6>> select);
|
||||
|
||||
/**
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
<T1, T2, T3, T4, T5, T6, T7> void addValues(Row7<T1, T2, T3, T4, T5, T6, T7> row, Select<? extends Record7<T1, T2, T3, T4, T5, T6, T7>> select);
|
||||
|
||||
/**
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8> void addValues(Row8<T1, T2, T3, T4, T5, T6, T7, T8> row, Select<? extends Record8<T1, T2, T3, T4, T5, T6, T7, T8>> select);
|
||||
|
||||
/**
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9> void addValues(Row9<T1, T2, T3, T4, T5, T6, T7, T8, T9> row, Select<? extends Record9<T1, T2, T3, T4, T5, T6, T7, T8, T9>> select);
|
||||
|
||||
/**
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> void addValues(Row10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> row, Select<? extends Record10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>> select);
|
||||
|
||||
/**
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> void addValues(Row11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> row, Select<? extends Record11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>> select);
|
||||
|
||||
/**
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> void addValues(Row12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> row, Select<? extends Record12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>> select);
|
||||
|
||||
/**
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> void addValues(Row13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> row, Select<? extends Record13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>> select);
|
||||
|
||||
/**
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> void addValues(Row14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> row, Select<? extends Record14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>> select);
|
||||
|
||||
/**
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> void addValues(Row15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> row, Select<? extends Record15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>> select);
|
||||
|
||||
/**
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> void addValues(Row16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> row, Select<? extends Record16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>> select);
|
||||
|
||||
/**
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17> void addValues(Row17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17> row, Select<? extends Record17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>> select);
|
||||
|
||||
/**
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18> void addValues(Row18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18> row, Select<? extends Record18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>> select);
|
||||
|
||||
/**
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19> void addValues(Row19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19> row, Select<? extends Record19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>> select);
|
||||
|
||||
/**
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20> void addValues(Row20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20> row, Select<? extends Record20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>> select);
|
||||
|
||||
/**
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21> void addValues(Row21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21> row, Select<? extends Record21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>> select);
|
||||
|
||||
/**
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22> void addValues(Row22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22> row, Select<? extends Record22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>> select);
|
||||
|
||||
|
||||
|
||||
@ -337,161 +337,161 @@ public interface UpdateSetFirstStep<R extends Record> extends UpdateSetStep<R> {
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
UpdateFromStep<R> set(RowN row, Select<? extends Record> select);
|
||||
|
||||
/**
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
<T1> UpdateFromStep<R> set(Row1<T1> row, Select<? extends Record1<T1>> select);
|
||||
|
||||
/**
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
<T1, T2> UpdateFromStep<R> set(Row2<T1, T2> row, Select<? extends Record2<T1, T2>> select);
|
||||
|
||||
/**
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
<T1, T2, T3> UpdateFromStep<R> set(Row3<T1, T2, T3> row, Select<? extends Record3<T1, T2, T3>> select);
|
||||
|
||||
/**
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
<T1, T2, T3, T4> UpdateFromStep<R> set(Row4<T1, T2, T3, T4> row, Select<? extends Record4<T1, T2, T3, T4>> select);
|
||||
|
||||
/**
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
<T1, T2, T3, T4, T5> UpdateFromStep<R> set(Row5<T1, T2, T3, T4, T5> row, Select<? extends Record5<T1, T2, T3, T4, T5>> select);
|
||||
|
||||
/**
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
<T1, T2, T3, T4, T5, T6> UpdateFromStep<R> set(Row6<T1, T2, T3, T4, T5, T6> row, Select<? extends Record6<T1, T2, T3, T4, T5, T6>> select);
|
||||
|
||||
/**
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
<T1, T2, T3, T4, T5, T6, T7> UpdateFromStep<R> set(Row7<T1, T2, T3, T4, T5, T6, T7> row, Select<? extends Record7<T1, T2, T3, T4, T5, T6, T7>> select);
|
||||
|
||||
/**
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8> UpdateFromStep<R> set(Row8<T1, T2, T3, T4, T5, T6, T7, T8> row, Select<? extends Record8<T1, T2, T3, T4, T5, T6, T7, T8>> select);
|
||||
|
||||
/**
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9> UpdateFromStep<R> set(Row9<T1, T2, T3, T4, T5, T6, T7, T8, T9> row, Select<? extends Record9<T1, T2, T3, T4, T5, T6, T7, T8, T9>> select);
|
||||
|
||||
/**
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> UpdateFromStep<R> set(Row10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> row, Select<? extends Record10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>> select);
|
||||
|
||||
/**
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> UpdateFromStep<R> set(Row11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> row, Select<? extends Record11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>> select);
|
||||
|
||||
/**
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> UpdateFromStep<R> set(Row12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> row, Select<? extends Record12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>> select);
|
||||
|
||||
/**
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> UpdateFromStep<R> set(Row13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> row, Select<? extends Record13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>> select);
|
||||
|
||||
/**
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> UpdateFromStep<R> set(Row14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> row, Select<? extends Record14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>> select);
|
||||
|
||||
/**
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> UpdateFromStep<R> set(Row15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> row, Select<? extends Record15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>> select);
|
||||
|
||||
/**
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> UpdateFromStep<R> set(Row16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> row, Select<? extends Record16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>> select);
|
||||
|
||||
/**
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17> UpdateFromStep<R> set(Row17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17> row, Select<? extends Record17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>> select);
|
||||
|
||||
/**
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18> UpdateFromStep<R> set(Row18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18> row, Select<? extends Record18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>> select);
|
||||
|
||||
/**
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19> UpdateFromStep<R> set(Row19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19> row, Select<? extends Record19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>> select);
|
||||
|
||||
/**
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20> UpdateFromStep<R> set(Row20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20> row, Select<? extends Record20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>> select);
|
||||
|
||||
/**
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21> UpdateFromStep<R> set(Row21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21> row, Select<? extends Record21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>> select);
|
||||
|
||||
/**
|
||||
* Specify a multi-column set clause for the <code>UPDATE</code> statement.
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB })
|
||||
@Support
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22> UpdateFromStep<R> set(Row22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22> row, Select<? extends Record22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>> select);
|
||||
|
||||
}
|
||||
|
||||
@ -37,22 +37,33 @@
|
||||
*/
|
||||
package org.jooq.impl;
|
||||
|
||||
import static org.jooq.Clause.UPDATE_SET_ASSIGNMENT;
|
||||
// ...
|
||||
// ...
|
||||
// ...
|
||||
// ...
|
||||
// ...
|
||||
// ...
|
||||
import static org.jooq.SQLDialect.CUBRID;
|
||||
// ...
|
||||
import static org.jooq.SQLDialect.DERBY;
|
||||
// ...
|
||||
import static org.jooq.SQLDialect.FIREBIRD;
|
||||
import static org.jooq.SQLDialect.H2;
|
||||
// ...
|
||||
import static org.jooq.SQLDialect.HSQLDB;
|
||||
import static org.jooq.SQLDialect.IGNITE;
|
||||
// ...
|
||||
// ...
|
||||
import static org.jooq.SQLDialect.MARIADB;
|
||||
// ...
|
||||
import static org.jooq.SQLDialect.MYSQL;
|
||||
// ...
|
||||
import static org.jooq.SQLDialect.POSTGRES;
|
||||
// ...
|
||||
// ...
|
||||
// ...
|
||||
// ...
|
||||
// ...
|
||||
import static org.jooq.SQLDialect.SQLITE;
|
||||
// ...
|
||||
// ...
|
||||
@ -61,10 +72,13 @@ import static org.jooq.SQLDialect.SQLITE;
|
||||
import static org.jooq.SQLDialect.YUGABYTEDB;
|
||||
import static org.jooq.conf.WriteIfReadonly.IGNORE;
|
||||
import static org.jooq.conf.WriteIfReadonly.THROW;
|
||||
import static org.jooq.impl.DSL.field;
|
||||
import static org.jooq.impl.DSL.name;
|
||||
import static org.jooq.impl.DSL.row;
|
||||
import static org.jooq.impl.DSL.select;
|
||||
import static org.jooq.impl.DSL.table;
|
||||
import static org.jooq.impl.DSL.when;
|
||||
import static org.jooq.impl.FieldMapsForInsert.keysAndComputedOnClient;
|
||||
import static org.jooq.impl.Keywords.K_ROW;
|
||||
import static org.jooq.impl.Tools.anyMatch;
|
||||
import static org.jooq.impl.Tools.collect;
|
||||
@ -101,22 +115,25 @@ import org.jooq.impl.QOM.UNotYetImplemented;
|
||||
*/
|
||||
final class FieldMapForUpdate extends AbstractQueryPartMap<FieldOrRow, FieldOrRowOrSelect> implements UNotYetImplemented {
|
||||
|
||||
static final Set<SQLDialect> CASTS_NEEDED = SQLDialect.supportedBy(POSTGRES, YUGABYTEDB);
|
||||
static final Set<SQLDialect> NO_SUPPORT_QUALIFY = SQLDialect.supportedBy(POSTGRES, SQLITE, YUGABYTEDB);
|
||||
static final Set<SQLDialect> CASTS_NEEDED = SQLDialect.supportedBy(POSTGRES, YUGABYTEDB);
|
||||
static final Set<SQLDialect> NO_SUPPORT_QUALIFY = SQLDialect.supportedBy(POSTGRES, SQLITE, YUGABYTEDB);
|
||||
static final Set<SQLDialect> EMULATE_RVE_SET_QUERY = SQLDialect.supportedBy(CUBRID, DERBY, FIREBIRD, IGNITE, MARIADB, MYSQL, SQLITE);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
static final Set<SQLDialect> SUPPORT_RVE_SET = SQLDialect.supportedBy(H2, HSQLDB, POSTGRES, YUGABYTEDB);
|
||||
static final Set<SQLDialect> REQUIRE_RVE_ROW_CLAUSE = SQLDialect.supportedBy(POSTGRES, YUGABYTEDB);
|
||||
static final Set<SQLDialect> SUPPORT_RVE_SET = SQLDialect.supportedBy(H2, HSQLDB, POSTGRES, YUGABYTEDB);
|
||||
static final Set<SQLDialect> REQUIRE_RVE_ROW_CLAUSE = SQLDialect.supportedBy(POSTGRES, YUGABYTEDB);
|
||||
|
||||
private final Table<?> table;
|
||||
private final Clause assignmentClause;
|
||||
final Table<?> table;
|
||||
final SetClause setClause;
|
||||
final Clause assignmentClause;
|
||||
|
||||
FieldMapForUpdate(Table<?> table, Clause assignmentClause) {
|
||||
FieldMapForUpdate(Table<?> table, SetClause setClause, Clause assignmentClause) {
|
||||
this.table = table;
|
||||
this.setClause = setClause;
|
||||
this.assignmentClause = assignmentClause;
|
||||
}
|
||||
|
||||
@ -157,12 +174,7 @@ final class FieldMapForUpdate extends AbstractQueryPartMap<FieldOrRow, FieldOrRo
|
||||
|
||||
|
||||
|
||||
if (!"".equals(separator))
|
||||
ctx.sql(separator)
|
||||
.formatSeparator();
|
||||
|
||||
acceptAssignmentClause(ctx, supportsQualify, key, value);
|
||||
separator = ",";
|
||||
separator = acceptAssignmentClause(ctx, supportsQualify, key, value, separator);
|
||||
}
|
||||
|
||||
if (!CASTS_NEEDED.contains(ctx.dialect()))
|
||||
@ -173,12 +185,17 @@ final class FieldMapForUpdate extends AbstractQueryPartMap<FieldOrRow, FieldOrRo
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private final void acceptAssignmentClause(
|
||||
private final String acceptAssignmentClause(
|
||||
Context<?> ctx,
|
||||
boolean supportsQualify,
|
||||
FieldOrRow key,
|
||||
FieldOrRowOrSelect value
|
||||
FieldOrRowOrSelect value,
|
||||
String separator
|
||||
) {
|
||||
if (!"".equals(separator))
|
||||
ctx.sql(separator)
|
||||
.formatSeparator();
|
||||
|
||||
if (assignmentClause != null)
|
||||
ctx.start(assignmentClause);
|
||||
|
||||
@ -189,7 +206,7 @@ final class FieldMapForUpdate extends AbstractQueryPartMap<FieldOrRow, FieldOrRo
|
||||
|
||||
// [#6884] This syntax can be emulated trivially, if the RHS is not a SELECT subquery
|
||||
if (multiValue != null && !SUPPORT_RVE_SET.contains(ctx.dialect())) {
|
||||
FieldMapForUpdate map = new FieldMapForUpdate(table(), null);
|
||||
FieldMapForUpdate map = new FieldMapForUpdate(table(), setClause, null);
|
||||
|
||||
for (int i = 0; i < multiRow.size(); i++) {
|
||||
Field<?> k = multiRow.field(i);
|
||||
@ -198,7 +215,7 @@ final class FieldMapForUpdate extends AbstractQueryPartMap<FieldOrRow, FieldOrRo
|
||||
map.put(k, Tools.field(v, k));
|
||||
}
|
||||
|
||||
toSQLUpdateMap(ctx, map);
|
||||
ctx.visit(map);
|
||||
}
|
||||
|
||||
|
||||
@ -215,6 +232,42 @@ final class FieldMapForUpdate extends AbstractQueryPartMap<FieldOrRow, FieldOrRo
|
||||
|
||||
|
||||
|
||||
|
||||
// [#10523] Generic SET ROW = (SELECT ..) emulation that works
|
||||
// everywhere, but inefficiently duplicates the subquery
|
||||
else if (multiSelect != null && EMULATE_RVE_SET_QUERY.contains(ctx.dialect())) {
|
||||
Row row = removeReadonly(ctx, multiRow);
|
||||
int size = row.size();
|
||||
Select<?> select;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
select = multiSelect;
|
||||
|
||||
// [#10523] Simplify special case
|
||||
if (size == 1) {
|
||||
ctx.qualify(false, c -> c.visit(row.field(0)))
|
||||
.sql(" = ");
|
||||
|
||||
visitSubquery(ctx, select, false, false, false);
|
||||
}
|
||||
else {
|
||||
Field<?>[] f = Tools.fields(size);
|
||||
|
||||
for (int i = 0; i < size; i++) {
|
||||
FieldMapForUpdate mu = new FieldMapForUpdate(table, setClause, null);
|
||||
separator = mu.acceptAssignmentClause(ctx,
|
||||
supportsQualify,
|
||||
row.field(i),
|
||||
field(select(f[i]).from(select.asTable(table(name("t")), f))),
|
||||
separator
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
Row row = removeReadonly(ctx, multiRow);
|
||||
|
||||
@ -270,13 +323,8 @@ final class FieldMapForUpdate extends AbstractQueryPartMap<FieldOrRow, FieldOrRo
|
||||
|
||||
if (assignmentClause != null)
|
||||
ctx.end(assignmentClause);
|
||||
}
|
||||
|
||||
static final void toSQLUpdateMap(Context<?> ctx, FieldMapForUpdate updateMap) {
|
||||
ctx.formatIndentStart()
|
||||
.formatSeparator()
|
||||
.visit(updateMap)
|
||||
.formatIndentEnd();
|
||||
return ",";
|
||||
}
|
||||
|
||||
static final Row removeReadonly(Context<?> ctx, Row row) {
|
||||
@ -293,8 +341,13 @@ final class FieldMapForUpdate extends AbstractQueryPartMap<FieldOrRow, FieldOrRo
|
||||
|
||||
final void set(Map<?, ?> map) {
|
||||
map.forEach((k, v) -> {
|
||||
Field<?> field = Tools.tableField(table, k);
|
||||
put(field, Tools.field(v, field));
|
||||
if (k instanceof Row) { Row r = (Row) k;
|
||||
put(r, (FieldOrRowOrSelect) v);
|
||||
}
|
||||
else {
|
||||
Field<?> field = Tools.tableField(table, k);
|
||||
put(field, Tools.field(v, field));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@ -315,4 +368,27 @@ final class FieldMapForUpdate extends AbstractQueryPartMap<FieldOrRow, FieldOrRo
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
enum SetClause {
|
||||
UPDATE,
|
||||
INSERT,
|
||||
MERGE
|
||||
}
|
||||
}
|
||||
|
||||
@ -66,6 +66,7 @@ import static org.jooq.impl.DSL.row;
|
||||
import static org.jooq.impl.DSL.select;
|
||||
import static org.jooq.impl.DSL.selectFrom;
|
||||
import static org.jooq.impl.DSL.selectOne;
|
||||
import static org.jooq.impl.FieldMapsForInsert.keysAndComputedOnClient;
|
||||
import static org.jooq.impl.FieldMapsForInsert.toSQLInsertSelect;
|
||||
import static org.jooq.impl.Keywords.K_DEFAULT;
|
||||
import static org.jooq.impl.Keywords.K_DEFAULT_VALUES;
|
||||
@ -97,6 +98,7 @@ import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
@ -124,6 +126,7 @@ import org.jooq.Table;
|
||||
import org.jooq.TableField;
|
||||
import org.jooq.UniqueKey;
|
||||
import org.jooq.conf.WriteIfReadonly;
|
||||
import org.jooq.impl.FieldMapForUpdate.SetClause;
|
||||
import org.jooq.impl.QOM.UNotYetImplemented;
|
||||
import org.jooq.impl.Tools.DataExtendedKey;
|
||||
import org.jooq.tools.StringUtils;
|
||||
@ -160,7 +163,7 @@ implements
|
||||
InsertQueryImpl(Configuration configuration, WithImpl with, Table<R> into) {
|
||||
super(configuration, with, into);
|
||||
|
||||
this.updateMap = new FieldMapForUpdate(into, INSERT_ON_DUPLICATE_KEY_UPDATE_ASSIGNMENT);
|
||||
this.updateMap = new FieldMapForUpdate(into, SetClause.INSERT, INSERT_ON_DUPLICATE_KEY_UPDATE_ASSIGNMENT);
|
||||
this.insertMaps = new FieldMapsForInsert(into);
|
||||
this.onConflictWhere = new ConditionProviderImpl();
|
||||
this.condition = new ConditionProviderImpl();
|
||||
@ -224,7 +227,7 @@ implements
|
||||
onConflictOnConstraint0(constraint(constraint));
|
||||
}
|
||||
|
||||
private void onConflictOnConstraint0(Constraint constraint) {
|
||||
private final void onConflictOnConstraint0(Constraint constraint) {
|
||||
this.onConstraint = constraint;
|
||||
|
||||
if (onConstraintUniqueKey == null)
|
||||
@ -554,7 +557,7 @@ implements
|
||||
|
||||
// CUBRID can emulate this using ON DUPLICATE KEY UPDATE
|
||||
case CUBRID: {
|
||||
FieldMapForUpdate update = new FieldMapForUpdate(table(), INSERT_ON_DUPLICATE_KEY_UPDATE_ASSIGNMENT);
|
||||
FieldMapForUpdate update = new FieldMapForUpdate(table(), SetClause.INSERT, INSERT_ON_DUPLICATE_KEY_UPDATE_ASSIGNMENT);
|
||||
Field<?> field = table().field(0);
|
||||
update.put(field, field);
|
||||
|
||||
@ -876,6 +879,15 @@ implements
|
||||
if (s == null)
|
||||
s = select(map(f, x -> x.getDataType().defaulted() ? x.getDataType().default_() : DSL.NULL(x)));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// [#6375] INSERT .. VALUES and INSERT .. SELECT distinction also in MERGE
|
||||
t = s.asTable("t", map(f, Field::getName, String[]::new));
|
||||
|
||||
@ -894,10 +906,23 @@ implements
|
||||
// [#1295] Use UPDATE clause only when with ON DUPLICATE KEY UPDATE,
|
||||
// not with ON DUPLICATE KEY IGNORE
|
||||
MergeNotMatchedStep<R> notMatched = on;
|
||||
if (onDuplicateKeyUpdate)
|
||||
if (onDuplicateKeyUpdate) {
|
||||
final FieldMapForUpdate um;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
um = updateMap;
|
||||
|
||||
notMatched = condition.hasWhere()
|
||||
? on.whenMatchedAnd(condition.getWhere()).thenUpdate().set(updateMap)
|
||||
: on.whenMatchedThenUpdate().set(updateMap);
|
||||
? on.whenMatchedAnd(condition.getWhere()).thenUpdate().set(um)
|
||||
: on.whenMatchedThenUpdate().set(um);
|
||||
}
|
||||
|
||||
return t != null
|
||||
? notMatched.whenNotMatchedThenInsert(f).values(t.fields())
|
||||
|
||||
@ -175,6 +175,7 @@ import org.jooq.Table;
|
||||
import org.jooq.TableLike;
|
||||
import org.jooq.UniqueKey;
|
||||
import org.jooq.exception.DataTypeException;
|
||||
import org.jooq.impl.FieldMapForUpdate.SetClause;
|
||||
import org.jooq.impl.QOM.UNotYetImplemented;
|
||||
import org.jooq.impl.Tools.DataExtendedKey;
|
||||
import org.jooq.tools.StringUtils;
|
||||
@ -1796,7 +1797,7 @@ implements
|
||||
}
|
||||
|
||||
MatchedClause(Condition condition, boolean delete) {
|
||||
this(condition, delete, new FieldMapForUpdate(table, MERGE_SET_ASSIGNMENT));
|
||||
this(condition, delete, new FieldMapForUpdate(table, SetClause.MERGE, MERGE_SET_ASSIGNMENT));
|
||||
}
|
||||
|
||||
MatchedClause(Condition condition, boolean delete, FieldMapForUpdate updateMap) {
|
||||
|
||||
@ -185,6 +185,7 @@ import static org.jooq.impl.SQLDataType.OTHER;
|
||||
import static org.jooq.impl.SQLDataType.SMALLINT;
|
||||
import static org.jooq.impl.SQLDataType.VARCHAR;
|
||||
import static org.jooq.impl.SQLDataType.XML;
|
||||
import static org.jooq.impl.Tools.anyMatch;
|
||||
import static org.jooq.impl.Tools.DataKey.DATA_BLOCK_NESTING;
|
||||
import static org.jooq.tools.StringUtils.defaultIfNull;
|
||||
|
||||
@ -5301,6 +5302,11 @@ final class Tools {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -157,6 +157,7 @@ import org.jooq.Select;
|
||||
import org.jooq.Table;
|
||||
import org.jooq.TableLike;
|
||||
import org.jooq.UpdateQuery;
|
||||
import org.jooq.impl.FieldMapForUpdate.SetClause;
|
||||
import org.jooq.impl.QOM.UNotYetImplemented;
|
||||
|
||||
/**
|
||||
@ -193,7 +194,7 @@ implements
|
||||
UpdateQueryImpl(Configuration configuration, WithImpl with, Table<R> table) {
|
||||
super(configuration, with, table);
|
||||
|
||||
this.updateMap = new FieldMapForUpdate(table, UPDATE_SET_ASSIGNMENT);
|
||||
this.updateMap = new FieldMapForUpdate(table, SetClause.UPDATE, UPDATE_SET_ASSIGNMENT);
|
||||
this.from = new TableList();
|
||||
this.condition = new ConditionProviderImpl();
|
||||
this.orderBy = new SortFieldList();
|
||||
@ -542,15 +543,6 @@ implements
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
accept1(ctx);
|
||||
}
|
||||
|
||||
@ -598,10 +590,12 @@ implements
|
||||
ctx.formatSeparator()
|
||||
.start(UPDATE_SET)
|
||||
.visit(K_SET)
|
||||
.separatorRequired(true);
|
||||
|
||||
FieldMapForUpdate.toSQLUpdateMap(ctx, updateMap);
|
||||
ctx.end(UPDATE_SET);
|
||||
.separatorRequired(true)
|
||||
.formatIndentStart()
|
||||
.formatSeparator()
|
||||
.visit(updateMap)
|
||||
.formatIndentEnd()
|
||||
.end(UPDATE_SET);
|
||||
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user