[jOOQ/jOOQ#13928] Emulate UPDATE .. RETURNING in MariaDB 10.5+ using INSERT .. SELECT .. ON DUPLICATE KEY UPDATE .. RETURNING
This commit is contained in:
parent
d558c4ba9f
commit
69f62e6b69
@ -45,6 +45,7 @@ import org.jetbrains.annotations.*;
|
||||
// ...
|
||||
import static org.jooq.SQLDialect.FIREBIRD;
|
||||
import static org.jooq.SQLDialect.H2;
|
||||
import static org.jooq.SQLDialect.MARIADB;
|
||||
// ...
|
||||
import static org.jooq.SQLDialect.POSTGRES;
|
||||
// ...
|
||||
@ -106,7 +107,7 @@ public interface UpdateReturningStep<R extends Record> extends UpdateFinalStep<R
|
||||
* @see UpdateResultStep
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ FIREBIRD, H2, POSTGRES, YUGABYTEDB })
|
||||
@Support({ FIREBIRD, H2, MARIADB, POSTGRES, YUGABYTEDB })
|
||||
UpdateResultStep<R> returning();
|
||||
|
||||
/**
|
||||
@ -126,7 +127,7 @@ public interface UpdateReturningStep<R extends Record> extends UpdateFinalStep<R
|
||||
* @see UpdateResultStep
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ FIREBIRD, H2, POSTGRES, YUGABYTEDB })
|
||||
@Support({ FIREBIRD, H2, MARIADB, POSTGRES, YUGABYTEDB })
|
||||
UpdateResultStep<R> returning(SelectFieldOrAsterisk... fields);
|
||||
|
||||
/**
|
||||
@ -146,7 +147,7 @@ public interface UpdateReturningStep<R extends Record> extends UpdateFinalStep<R
|
||||
* @see UpdateResultStep
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ FIREBIRD, H2, POSTGRES, YUGABYTEDB })
|
||||
@Support({ FIREBIRD, H2, MARIADB, POSTGRES, YUGABYTEDB })
|
||||
UpdateResultStep<R> returning(Collection<? extends SelectFieldOrAsterisk> fields);
|
||||
|
||||
/**
|
||||
@ -160,7 +161,7 @@ public interface UpdateReturningStep<R extends Record> extends UpdateFinalStep<R
|
||||
* @see UpdateResultStep
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ FIREBIRD, H2, POSTGRES, YUGABYTEDB })
|
||||
@Support({ FIREBIRD, H2, MARIADB, POSTGRES, YUGABYTEDB })
|
||||
UpdateResultStep<Record> returningResult(SelectFieldOrAsterisk... fields);
|
||||
|
||||
/**
|
||||
@ -174,7 +175,7 @@ public interface UpdateReturningStep<R extends Record> extends UpdateFinalStep<R
|
||||
* @see UpdateResultStep
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ FIREBIRD, H2, POSTGRES, YUGABYTEDB })
|
||||
@Support({ FIREBIRD, H2, MARIADB, POSTGRES, YUGABYTEDB })
|
||||
UpdateResultStep<Record> returningResult(Collection<? extends SelectFieldOrAsterisk> fields);
|
||||
|
||||
|
||||
@ -189,7 +190,7 @@ public interface UpdateReturningStep<R extends Record> extends UpdateFinalStep<R
|
||||
* @see UpdateResultStep
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ FIREBIRD, H2, POSTGRES, YUGABYTEDB })
|
||||
@Support({ FIREBIRD, H2, MARIADB, POSTGRES, YUGABYTEDB })
|
||||
<T1> UpdateResultStep<Record1<T1>> returningResult(SelectField<T1> field1);
|
||||
|
||||
/**
|
||||
@ -202,7 +203,7 @@ public interface UpdateReturningStep<R extends Record> extends UpdateFinalStep<R
|
||||
* @see UpdateResultStep
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ FIREBIRD, H2, POSTGRES, YUGABYTEDB })
|
||||
@Support({ FIREBIRD, H2, MARIADB, POSTGRES, YUGABYTEDB })
|
||||
<T1, T2> UpdateResultStep<Record2<T1, T2>> returningResult(SelectField<T1> field1, SelectField<T2> field2);
|
||||
|
||||
/**
|
||||
@ -215,7 +216,7 @@ public interface UpdateReturningStep<R extends Record> extends UpdateFinalStep<R
|
||||
* @see UpdateResultStep
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ FIREBIRD, H2, POSTGRES, YUGABYTEDB })
|
||||
@Support({ FIREBIRD, H2, MARIADB, POSTGRES, YUGABYTEDB })
|
||||
<T1, T2, T3> UpdateResultStep<Record3<T1, T2, T3>> returningResult(SelectField<T1> field1, SelectField<T2> field2, SelectField<T3> field3);
|
||||
|
||||
/**
|
||||
@ -228,7 +229,7 @@ public interface UpdateReturningStep<R extends Record> extends UpdateFinalStep<R
|
||||
* @see UpdateResultStep
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ FIREBIRD, H2, POSTGRES, YUGABYTEDB })
|
||||
@Support({ FIREBIRD, H2, MARIADB, POSTGRES, YUGABYTEDB })
|
||||
<T1, T2, T3, T4> UpdateResultStep<Record4<T1, T2, T3, T4>> returningResult(SelectField<T1> field1, SelectField<T2> field2, SelectField<T3> field3, SelectField<T4> field4);
|
||||
|
||||
/**
|
||||
@ -241,7 +242,7 @@ public interface UpdateReturningStep<R extends Record> extends UpdateFinalStep<R
|
||||
* @see UpdateResultStep
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ FIREBIRD, H2, POSTGRES, YUGABYTEDB })
|
||||
@Support({ FIREBIRD, H2, MARIADB, POSTGRES, YUGABYTEDB })
|
||||
<T1, T2, T3, T4, T5> UpdateResultStep<Record5<T1, T2, T3, T4, T5>> returningResult(SelectField<T1> field1, SelectField<T2> field2, SelectField<T3> field3, SelectField<T4> field4, SelectField<T5> field5);
|
||||
|
||||
/**
|
||||
@ -254,7 +255,7 @@ public interface UpdateReturningStep<R extends Record> extends UpdateFinalStep<R
|
||||
* @see UpdateResultStep
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ FIREBIRD, H2, POSTGRES, YUGABYTEDB })
|
||||
@Support({ FIREBIRD, H2, MARIADB, POSTGRES, YUGABYTEDB })
|
||||
<T1, T2, T3, T4, T5, T6> UpdateResultStep<Record6<T1, T2, T3, T4, T5, T6>> returningResult(SelectField<T1> field1, SelectField<T2> field2, SelectField<T3> field3, SelectField<T4> field4, SelectField<T5> field5, SelectField<T6> field6);
|
||||
|
||||
/**
|
||||
@ -267,7 +268,7 @@ public interface UpdateReturningStep<R extends Record> extends UpdateFinalStep<R
|
||||
* @see UpdateResultStep
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ FIREBIRD, H2, POSTGRES, YUGABYTEDB })
|
||||
@Support({ FIREBIRD, H2, MARIADB, POSTGRES, YUGABYTEDB })
|
||||
<T1, T2, T3, T4, T5, T6, T7> UpdateResultStep<Record7<T1, T2, T3, T4, T5, T6, T7>> returningResult(SelectField<T1> field1, SelectField<T2> field2, SelectField<T3> field3, SelectField<T4> field4, SelectField<T5> field5, SelectField<T6> field6, SelectField<T7> field7);
|
||||
|
||||
/**
|
||||
@ -280,7 +281,7 @@ public interface UpdateReturningStep<R extends Record> extends UpdateFinalStep<R
|
||||
* @see UpdateResultStep
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ FIREBIRD, H2, POSTGRES, YUGABYTEDB })
|
||||
@Support({ FIREBIRD, H2, MARIADB, POSTGRES, YUGABYTEDB })
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8> UpdateResultStep<Record8<T1, T2, T3, T4, T5, T6, T7, T8>> returningResult(SelectField<T1> field1, SelectField<T2> field2, SelectField<T3> field3, SelectField<T4> field4, SelectField<T5> field5, SelectField<T6> field6, SelectField<T7> field7, SelectField<T8> field8);
|
||||
|
||||
/**
|
||||
@ -293,7 +294,7 @@ public interface UpdateReturningStep<R extends Record> extends UpdateFinalStep<R
|
||||
* @see UpdateResultStep
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ FIREBIRD, H2, POSTGRES, YUGABYTEDB })
|
||||
@Support({ FIREBIRD, H2, MARIADB, POSTGRES, YUGABYTEDB })
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9> UpdateResultStep<Record9<T1, T2, T3, T4, T5, T6, T7, T8, T9>> returningResult(SelectField<T1> field1, SelectField<T2> field2, SelectField<T3> field3, SelectField<T4> field4, SelectField<T5> field5, SelectField<T6> field6, SelectField<T7> field7, SelectField<T8> field8, SelectField<T9> field9);
|
||||
|
||||
/**
|
||||
@ -306,7 +307,7 @@ public interface UpdateReturningStep<R extends Record> extends UpdateFinalStep<R
|
||||
* @see UpdateResultStep
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ FIREBIRD, H2, POSTGRES, YUGABYTEDB })
|
||||
@Support({ FIREBIRD, H2, MARIADB, POSTGRES, YUGABYTEDB })
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> UpdateResultStep<Record10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>> returningResult(SelectField<T1> field1, SelectField<T2> field2, SelectField<T3> field3, SelectField<T4> field4, SelectField<T5> field5, SelectField<T6> field6, SelectField<T7> field7, SelectField<T8> field8, SelectField<T9> field9, SelectField<T10> field10);
|
||||
|
||||
/**
|
||||
@ -319,7 +320,7 @@ public interface UpdateReturningStep<R extends Record> extends UpdateFinalStep<R
|
||||
* @see UpdateResultStep
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ FIREBIRD, H2, POSTGRES, YUGABYTEDB })
|
||||
@Support({ FIREBIRD, H2, MARIADB, POSTGRES, YUGABYTEDB })
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> UpdateResultStep<Record11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>> returningResult(SelectField<T1> field1, SelectField<T2> field2, SelectField<T3> field3, SelectField<T4> field4, SelectField<T5> field5, SelectField<T6> field6, SelectField<T7> field7, SelectField<T8> field8, SelectField<T9> field9, SelectField<T10> field10, SelectField<T11> field11);
|
||||
|
||||
/**
|
||||
@ -332,7 +333,7 @@ public interface UpdateReturningStep<R extends Record> extends UpdateFinalStep<R
|
||||
* @see UpdateResultStep
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ FIREBIRD, H2, POSTGRES, YUGABYTEDB })
|
||||
@Support({ FIREBIRD, H2, MARIADB, POSTGRES, YUGABYTEDB })
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> UpdateResultStep<Record12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>> returningResult(SelectField<T1> field1, SelectField<T2> field2, SelectField<T3> field3, SelectField<T4> field4, SelectField<T5> field5, SelectField<T6> field6, SelectField<T7> field7, SelectField<T8> field8, SelectField<T9> field9, SelectField<T10> field10, SelectField<T11> field11, SelectField<T12> field12);
|
||||
|
||||
/**
|
||||
@ -345,7 +346,7 @@ public interface UpdateReturningStep<R extends Record> extends UpdateFinalStep<R
|
||||
* @see UpdateResultStep
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ FIREBIRD, H2, POSTGRES, YUGABYTEDB })
|
||||
@Support({ FIREBIRD, H2, MARIADB, POSTGRES, YUGABYTEDB })
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> UpdateResultStep<Record13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>> returningResult(SelectField<T1> field1, SelectField<T2> field2, SelectField<T3> field3, SelectField<T4> field4, SelectField<T5> field5, SelectField<T6> field6, SelectField<T7> field7, SelectField<T8> field8, SelectField<T9> field9, SelectField<T10> field10, SelectField<T11> field11, SelectField<T12> field12, SelectField<T13> field13);
|
||||
|
||||
/**
|
||||
@ -358,7 +359,7 @@ public interface UpdateReturningStep<R extends Record> extends UpdateFinalStep<R
|
||||
* @see UpdateResultStep
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ FIREBIRD, H2, POSTGRES, YUGABYTEDB })
|
||||
@Support({ FIREBIRD, H2, MARIADB, POSTGRES, YUGABYTEDB })
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> UpdateResultStep<Record14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>> returningResult(SelectField<T1> field1, SelectField<T2> field2, SelectField<T3> field3, SelectField<T4> field4, SelectField<T5> field5, SelectField<T6> field6, SelectField<T7> field7, SelectField<T8> field8, SelectField<T9> field9, SelectField<T10> field10, SelectField<T11> field11, SelectField<T12> field12, SelectField<T13> field13, SelectField<T14> field14);
|
||||
|
||||
/**
|
||||
@ -371,7 +372,7 @@ public interface UpdateReturningStep<R extends Record> extends UpdateFinalStep<R
|
||||
* @see UpdateResultStep
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ FIREBIRD, H2, POSTGRES, YUGABYTEDB })
|
||||
@Support({ FIREBIRD, H2, MARIADB, POSTGRES, YUGABYTEDB })
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> UpdateResultStep<Record15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>> returningResult(SelectField<T1> field1, SelectField<T2> field2, SelectField<T3> field3, SelectField<T4> field4, SelectField<T5> field5, SelectField<T6> field6, SelectField<T7> field7, SelectField<T8> field8, SelectField<T9> field9, SelectField<T10> field10, SelectField<T11> field11, SelectField<T12> field12, SelectField<T13> field13, SelectField<T14> field14, SelectField<T15> field15);
|
||||
|
||||
/**
|
||||
@ -384,7 +385,7 @@ public interface UpdateReturningStep<R extends Record> extends UpdateFinalStep<R
|
||||
* @see UpdateResultStep
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ FIREBIRD, H2, POSTGRES, YUGABYTEDB })
|
||||
@Support({ FIREBIRD, H2, MARIADB, POSTGRES, YUGABYTEDB })
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> UpdateResultStep<Record16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>> returningResult(SelectField<T1> field1, SelectField<T2> field2, SelectField<T3> field3, SelectField<T4> field4, SelectField<T5> field5, SelectField<T6> field6, SelectField<T7> field7, SelectField<T8> field8, SelectField<T9> field9, SelectField<T10> field10, SelectField<T11> field11, SelectField<T12> field12, SelectField<T13> field13, SelectField<T14> field14, SelectField<T15> field15, SelectField<T16> field16);
|
||||
|
||||
/**
|
||||
@ -397,7 +398,7 @@ public interface UpdateReturningStep<R extends Record> extends UpdateFinalStep<R
|
||||
* @see UpdateResultStep
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ FIREBIRD, H2, POSTGRES, YUGABYTEDB })
|
||||
@Support({ FIREBIRD, H2, MARIADB, POSTGRES, YUGABYTEDB })
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17> UpdateResultStep<Record17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>> returningResult(SelectField<T1> field1, SelectField<T2> field2, SelectField<T3> field3, SelectField<T4> field4, SelectField<T5> field5, SelectField<T6> field6, SelectField<T7> field7, SelectField<T8> field8, SelectField<T9> field9, SelectField<T10> field10, SelectField<T11> field11, SelectField<T12> field12, SelectField<T13> field13, SelectField<T14> field14, SelectField<T15> field15, SelectField<T16> field16, SelectField<T17> field17);
|
||||
|
||||
/**
|
||||
@ -410,7 +411,7 @@ public interface UpdateReturningStep<R extends Record> extends UpdateFinalStep<R
|
||||
* @see UpdateResultStep
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ FIREBIRD, H2, POSTGRES, YUGABYTEDB })
|
||||
@Support({ FIREBIRD, H2, MARIADB, POSTGRES, YUGABYTEDB })
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18> UpdateResultStep<Record18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>> returningResult(SelectField<T1> field1, SelectField<T2> field2, SelectField<T3> field3, SelectField<T4> field4, SelectField<T5> field5, SelectField<T6> field6, SelectField<T7> field7, SelectField<T8> field8, SelectField<T9> field9, SelectField<T10> field10, SelectField<T11> field11, SelectField<T12> field12, SelectField<T13> field13, SelectField<T14> field14, SelectField<T15> field15, SelectField<T16> field16, SelectField<T17> field17, SelectField<T18> field18);
|
||||
|
||||
/**
|
||||
@ -423,7 +424,7 @@ public interface UpdateReturningStep<R extends Record> extends UpdateFinalStep<R
|
||||
* @see UpdateResultStep
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ FIREBIRD, H2, POSTGRES, YUGABYTEDB })
|
||||
@Support({ FIREBIRD, H2, MARIADB, POSTGRES, YUGABYTEDB })
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19> UpdateResultStep<Record19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>> returningResult(SelectField<T1> field1, SelectField<T2> field2, SelectField<T3> field3, SelectField<T4> field4, SelectField<T5> field5, SelectField<T6> field6, SelectField<T7> field7, SelectField<T8> field8, SelectField<T9> field9, SelectField<T10> field10, SelectField<T11> field11, SelectField<T12> field12, SelectField<T13> field13, SelectField<T14> field14, SelectField<T15> field15, SelectField<T16> field16, SelectField<T17> field17, SelectField<T18> field18, SelectField<T19> field19);
|
||||
|
||||
/**
|
||||
@ -436,7 +437,7 @@ public interface UpdateReturningStep<R extends Record> extends UpdateFinalStep<R
|
||||
* @see UpdateResultStep
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ FIREBIRD, H2, POSTGRES, YUGABYTEDB })
|
||||
@Support({ FIREBIRD, H2, MARIADB, POSTGRES, YUGABYTEDB })
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20> UpdateResultStep<Record20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>> returningResult(SelectField<T1> field1, SelectField<T2> field2, SelectField<T3> field3, SelectField<T4> field4, SelectField<T5> field5, SelectField<T6> field6, SelectField<T7> field7, SelectField<T8> field8, SelectField<T9> field9, SelectField<T10> field10, SelectField<T11> field11, SelectField<T12> field12, SelectField<T13> field13, SelectField<T14> field14, SelectField<T15> field15, SelectField<T16> field16, SelectField<T17> field17, SelectField<T18> field18, SelectField<T19> field19, SelectField<T20> field20);
|
||||
|
||||
/**
|
||||
@ -449,7 +450,7 @@ public interface UpdateReturningStep<R extends Record> extends UpdateFinalStep<R
|
||||
* @see UpdateResultStep
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ FIREBIRD, H2, POSTGRES, YUGABYTEDB })
|
||||
@Support({ FIREBIRD, H2, MARIADB, POSTGRES, YUGABYTEDB })
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21> UpdateResultStep<Record21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>> returningResult(SelectField<T1> field1, SelectField<T2> field2, SelectField<T3> field3, SelectField<T4> field4, SelectField<T5> field5, SelectField<T6> field6, SelectField<T7> field7, SelectField<T8> field8, SelectField<T9> field9, SelectField<T10> field10, SelectField<T11> field11, SelectField<T12> field12, SelectField<T13> field13, SelectField<T14> field14, SelectField<T15> field15, SelectField<T16> field16, SelectField<T17> field17, SelectField<T18> field18, SelectField<T19> field19, SelectField<T20> field20, SelectField<T21> field21);
|
||||
|
||||
/**
|
||||
@ -462,7 +463,7 @@ public interface UpdateReturningStep<R extends Record> extends UpdateFinalStep<R
|
||||
* @see UpdateResultStep
|
||||
*/
|
||||
@NotNull @CheckReturnValue
|
||||
@Support({ FIREBIRD, H2, POSTGRES, YUGABYTEDB })
|
||||
@Support({ FIREBIRD, H2, MARIADB, POSTGRES, YUGABYTEDB })
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22> UpdateResultStep<Record22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>> returningResult(SelectField<T1> field1, SelectField<T2> field2, SelectField<T3> field3, SelectField<T4> field4, SelectField<T5> field5, SelectField<T6> field6, SelectField<T7> field7, SelectField<T8> field8, SelectField<T9> field9, SelectField<T10> field10, SelectField<T11> field11, SelectField<T12> field12, SelectField<T13> field13, SelectField<T14> field14, SelectField<T15> field15, SelectField<T16> field16, SelectField<T17> field17, SelectField<T18> field18, SelectField<T19> field19, SelectField<T20> field20, SelectField<T21> field21, SelectField<T22> field22);
|
||||
|
||||
|
||||
|
||||
@ -179,7 +179,7 @@ abstract class AbstractDMLQuery<R extends Record> extends AbstractRowCountQuery
|
||||
|
||||
private static final Set<SQLDialect> NO_SUPPORT_INSERT_ALIASED_TABLE = SQLDialect.supportedBy(DERBY, FIREBIRD, H2, MARIADB, MYSQL);
|
||||
private static final Set<SQLDialect> NATIVE_SUPPORT_INSERT_RETURNING = SQLDialect.supportedBy(FIREBIRD, MARIADB, POSTGRES, YUGABYTEDB);
|
||||
private static final Set<SQLDialect> NATIVE_SUPPORT_UPDATE_RETURNING = SQLDialect.supportedBy(FIREBIRD, POSTGRES, YUGABYTEDB);
|
||||
private static final Set<SQLDialect> NATIVE_SUPPORT_UPDATE_RETURNING = SQLDialect.supportedBy(FIREBIRD, MARIADB, POSTGRES, YUGABYTEDB);
|
||||
private static final Set<SQLDialect> NATIVE_SUPPORT_DELETE_RETURNING = SQLDialect.supportedBy(FIREBIRD, MARIADB, POSTGRES, YUGABYTEDB);
|
||||
private static final Set<SQLDialect> NATIVE_SUPPORT_DATA_CHANGE_DELTA_TABLE = SQLDialect.supportedBy(H2);
|
||||
private static final Set<SQLDialect> NO_SUPPORT_FETCHING_KEYS = SQLDialect.supportedBy(IGNITE);
|
||||
|
||||
@ -63,6 +63,7 @@ import static org.jooq.SQLDialect.HSQLDB;
|
||||
import static org.jooq.SQLDialect.IGNITE;
|
||||
// ...
|
||||
// ...
|
||||
import static org.jooq.SQLDialect.MARIADB;
|
||||
// ...
|
||||
// ...
|
||||
import static org.jooq.SQLDialect.POSTGRES;
|
||||
@ -76,10 +77,14 @@ import static org.jooq.SQLDialect.SQLITE;
|
||||
// ...
|
||||
import static org.jooq.SQLDialect.YUGABYTEDB;
|
||||
import static org.jooq.conf.SettingsTools.getExecuteUpdateWithoutWhere;
|
||||
import static org.jooq.impl.DSL.insertInto;
|
||||
import static org.jooq.impl.DSL.mergeInto;
|
||||
import static org.jooq.impl.DSL.name;
|
||||
import static org.jooq.impl.DSL.noCondition;
|
||||
import static org.jooq.impl.DSL.noField;
|
||||
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.trueCondition;
|
||||
import static org.jooq.impl.Keywords.K_FROM;
|
||||
import static org.jooq.impl.Keywords.K_LIMIT;
|
||||
@ -87,6 +92,7 @@ import static org.jooq.impl.Keywords.K_ORDER_BY;
|
||||
import static org.jooq.impl.Keywords.K_SET;
|
||||
import static org.jooq.impl.Keywords.K_UPDATE;
|
||||
import static org.jooq.impl.Keywords.K_WHERE;
|
||||
import static org.jooq.impl.SQLDataType.INTEGER;
|
||||
import static org.jooq.impl.Tools.findAny;
|
||||
|
||||
import java.util.Arrays;
|
||||
@ -176,7 +182,7 @@ implements
|
||||
UNotYetImplemented
|
||||
{
|
||||
|
||||
private static final Clause[] CLAUSES = { UPDATE };
|
||||
private static final Clause[] CLAUSES = { UPDATE };
|
||||
|
||||
|
||||
|
||||
@ -184,14 +190,15 @@ implements
|
||||
|
||||
|
||||
|
||||
private static final Set<SQLDialect> EMULATE_FROM_WITH_MERGE = SQLDialect.supportedBy(CUBRID, DERBY, FIREBIRD, H2, HSQLDB);
|
||||
private static final Set<SQLDialect> EMULATE_FROM_WITH_MERGE = SQLDialect.supportedBy(CUBRID, DERBY, FIREBIRD, H2, HSQLDB);
|
||||
private static final Set<SQLDialect> EMULATE_RETURNING_WITH_UPSERT = SQLDialect.supportedBy(MARIADB);
|
||||
|
||||
// LIMIT is not supported at all
|
||||
private static final Set<SQLDialect> NO_SUPPORT_LIMIT = SQLDialect.supportedUntil(CUBRID, DERBY, FIREBIRD, H2, HSQLDB, POSTGRES, SQLITE, YUGABYTEDB);
|
||||
private static final Set<SQLDialect> NO_SUPPORT_LIMIT = SQLDialect.supportedUntil(CUBRID, DERBY, FIREBIRD, H2, HSQLDB, POSTGRES, SQLITE, YUGABYTEDB);
|
||||
|
||||
// LIMIT is supported but not ORDER BY
|
||||
private static final Set<SQLDialect> NO_SUPPORT_ORDER_BY_LIMIT = SQLDialect.supportedBy(IGNITE);
|
||||
static final Set<SQLDialect> NO_SUPPORT_UPDATE_JOIN = SQLDialect.supportedBy(CUBRID, DERBY, FIREBIRD, H2, HSQLDB, IGNITE, POSTGRES, SQLITE, YUGABYTEDB);
|
||||
private static final Set<SQLDialect> NO_SUPPORT_ORDER_BY_LIMIT = SQLDialect.supportedBy(IGNITE);
|
||||
static final Set<SQLDialect> NO_SUPPORT_UPDATE_JOIN = SQLDialect.supportedBy(CUBRID, DERBY, FIREBIRD, H2, HSQLDB, IGNITE, POSTGRES, SQLITE, YUGABYTEDB);
|
||||
|
||||
private final FieldMapForUpdate updateMap;
|
||||
private final TableList from;
|
||||
@ -547,6 +554,10 @@ implements
|
||||
acceptFromAsMerge(ctx);
|
||||
return;
|
||||
}
|
||||
else if (!returning.isEmpty() && EMULATE_RETURNING_WITH_UPSERT.contains(ctx.dialect())) {
|
||||
acceptReturningAsUpsert(ctx);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -562,6 +573,20 @@ implements
|
||||
accept1(ctx);
|
||||
}
|
||||
|
||||
private final void acceptReturningAsUpsert(Context<?> ctx) {
|
||||
ctx.visit(
|
||||
insertInto(table)
|
||||
.select(
|
||||
selectFrom(table)
|
||||
.where(hasWhere() ? getWhere() : noCondition())
|
||||
.orderBy(orderBy)
|
||||
.limit(limit != null ? limit : noField(INTEGER)))
|
||||
.onDuplicateKeyUpdate()
|
||||
.set(updateMap)
|
||||
.returning(returning)
|
||||
);
|
||||
}
|
||||
|
||||
private final void acceptFromAsMerge(Context<?> ctx) {
|
||||
// TODO: What about RETURNING?
|
||||
// TODO: What if there are multiple FROM tables?
|
||||
|
||||
Loading…
Reference in New Issue
Block a user