[jOOQ/jOOQ#9212] Add support for MariaDB INSERT and DELETE RETURNING
This commit is contained in:
parent
11e9ec7eac
commit
f40a591bf4
@ -42,6 +42,7 @@ package org.jooq;
|
||||
// ...
|
||||
// ...
|
||||
import static org.jooq.SQLDialect.FIREBIRD;
|
||||
import static org.jooq.SQLDialect.MARIADB;
|
||||
// ...
|
||||
import static org.jooq.SQLDialect.POSTGRES;
|
||||
|
||||
@ -153,7 +154,7 @@ public interface DeleteQuery<R extends Record> extends ConditionProvider, Delete
|
||||
*
|
||||
* @see #getReturnedRecords()
|
||||
*/
|
||||
@Support({ FIREBIRD, POSTGRES })
|
||||
@Support({ FIREBIRD, MARIADB, POSTGRES })
|
||||
void setReturning();
|
||||
|
||||
/**
|
||||
@ -163,7 +164,7 @@ public interface DeleteQuery<R extends Record> extends ConditionProvider, Delete
|
||||
* @param fields Fields to be returned
|
||||
* @see #getReturnedRecords()
|
||||
*/
|
||||
@Support({ FIREBIRD, POSTGRES })
|
||||
@Support({ FIREBIRD, MARIADB, POSTGRES })
|
||||
void setReturning(SelectFieldOrAsterisk... fields);
|
||||
|
||||
/**
|
||||
@ -173,7 +174,7 @@ public interface DeleteQuery<R extends Record> extends ConditionProvider, Delete
|
||||
* @param fields Fields to be returned
|
||||
* @see #getReturnedRecords()
|
||||
*/
|
||||
@Support({ FIREBIRD, POSTGRES })
|
||||
@Support({ FIREBIRD, MARIADB, POSTGRES })
|
||||
void setReturning(Collection<? extends SelectFieldOrAsterisk> fields);
|
||||
|
||||
/**
|
||||
@ -196,7 +197,7 @@ public interface DeleteQuery<R extends Record> extends ConditionProvider, Delete
|
||||
* @see #getReturnedRecords()
|
||||
*/
|
||||
@Nullable
|
||||
@Support({ FIREBIRD, POSTGRES })
|
||||
@Support({ FIREBIRD, MARIADB, POSTGRES })
|
||||
R getReturnedRecord();
|
||||
|
||||
/**
|
||||
@ -222,7 +223,7 @@ public interface DeleteQuery<R extends Record> extends ConditionProvider, Delete
|
||||
* </ul>
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ FIREBIRD, POSTGRES })
|
||||
@Support({ FIREBIRD, MARIADB, POSTGRES })
|
||||
Result<R> getReturnedRecords();
|
||||
|
||||
}
|
||||
|
||||
@ -41,6 +41,7 @@ package org.jooq;
|
||||
// ...
|
||||
// ...
|
||||
import static org.jooq.SQLDialect.FIREBIRD;
|
||||
import static org.jooq.SQLDialect.MARIADB;
|
||||
// ...
|
||||
import static org.jooq.SQLDialect.POSTGRES;
|
||||
// ...
|
||||
@ -110,7 +111,7 @@ public interface DeleteResultStep<R extends Record> extends Delete<R> {
|
||||
* @see DeleteQuery#getReturnedRecords()
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ FIREBIRD, POSTGRES })
|
||||
@Support({ FIREBIRD, MARIADB, POSTGRES })
|
||||
Result<R> fetch() throws DataAccessException;
|
||||
|
||||
/**
|
||||
@ -126,7 +127,7 @@ public interface DeleteResultStep<R extends Record> extends Delete<R> {
|
||||
* @see DeleteQuery#getReturnedRecord()
|
||||
*/
|
||||
@Nullable
|
||||
@Support({ FIREBIRD, POSTGRES })
|
||||
@Support({ FIREBIRD, MARIADB, POSTGRES })
|
||||
R fetchOne() throws DataAccessException, TooManyRowsException;
|
||||
|
||||
|
||||
@ -141,7 +142,7 @@ public interface DeleteResultStep<R extends Record> extends Delete<R> {
|
||||
* @see DeleteQuery#getReturnedRecord()
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ FIREBIRD, POSTGRES })
|
||||
@Support({ FIREBIRD, MARIADB, POSTGRES })
|
||||
Optional<R> fetchOptional() throws DataAccessException, TooManyRowsException;
|
||||
|
||||
}
|
||||
|
||||
@ -37,19 +37,19 @@
|
||||
*/
|
||||
package org.jooq;
|
||||
|
||||
import org.jetbrains.annotations.*;
|
||||
|
||||
|
||||
// ...
|
||||
// ...
|
||||
// ...
|
||||
import static org.jooq.SQLDialect.FIREBIRD;
|
||||
import static org.jooq.SQLDialect.MARIADB;
|
||||
// ...
|
||||
import static org.jooq.SQLDialect.POSTGRES;
|
||||
// ...
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
* This type is used for the {@link Delete}'s DSL API.
|
||||
* <p>
|
||||
@ -100,7 +100,7 @@ public interface DeleteReturningStep<R extends Record> extends DeleteFinalStep<R
|
||||
* @see DeleteResultStep
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ FIREBIRD, POSTGRES })
|
||||
@Support({ FIREBIRD, MARIADB, POSTGRES })
|
||||
DeleteResultStep<R> returning();
|
||||
|
||||
/**
|
||||
@ -119,7 +119,7 @@ public interface DeleteReturningStep<R extends Record> extends DeleteFinalStep<R
|
||||
* @see DeleteResultStep
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ FIREBIRD, POSTGRES })
|
||||
@Support({ FIREBIRD, MARIADB, POSTGRES })
|
||||
DeleteResultStep<R> returning(SelectFieldOrAsterisk... fields);
|
||||
|
||||
/**
|
||||
@ -138,7 +138,7 @@ public interface DeleteReturningStep<R extends Record> extends DeleteFinalStep<R
|
||||
* @see DeleteResultStep
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ FIREBIRD, POSTGRES })
|
||||
@Support({ FIREBIRD, MARIADB, POSTGRES })
|
||||
DeleteResultStep<R> returning(Collection<? extends SelectFieldOrAsterisk> fields);
|
||||
|
||||
/**
|
||||
@ -151,7 +151,7 @@ public interface DeleteReturningStep<R extends Record> extends DeleteFinalStep<R
|
||||
* @see DeleteResultStep
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ FIREBIRD, POSTGRES })
|
||||
@Support({ FIREBIRD, MARIADB, POSTGRES })
|
||||
DeleteResultStep<Record> returningResult(SelectFieldOrAsterisk... fields);
|
||||
|
||||
/**
|
||||
@ -164,7 +164,7 @@ public interface DeleteReturningStep<R extends Record> extends DeleteFinalStep<R
|
||||
* @see DeleteResultStep
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ FIREBIRD, POSTGRES })
|
||||
@Support({ FIREBIRD, MARIADB, POSTGRES })
|
||||
DeleteResultStep<Record> returningResult(Collection<? extends SelectFieldOrAsterisk> fields);
|
||||
|
||||
|
||||
@ -178,7 +178,7 @@ public interface DeleteReturningStep<R extends Record> extends DeleteFinalStep<R
|
||||
* @see DeleteResultStep
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ FIREBIRD, POSTGRES })
|
||||
@Support({ FIREBIRD, MARIADB, POSTGRES })
|
||||
<T1> DeleteResultStep<Record1<T1>> returningResult(SelectField<T1> field1);
|
||||
|
||||
/**
|
||||
@ -190,7 +190,7 @@ public interface DeleteReturningStep<R extends Record> extends DeleteFinalStep<R
|
||||
* @see DeleteResultStep
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ FIREBIRD, POSTGRES })
|
||||
@Support({ FIREBIRD, MARIADB, POSTGRES })
|
||||
<T1, T2> DeleteResultStep<Record2<T1, T2>> returningResult(SelectField<T1> field1, SelectField<T2> field2);
|
||||
|
||||
/**
|
||||
@ -202,7 +202,7 @@ public interface DeleteReturningStep<R extends Record> extends DeleteFinalStep<R
|
||||
* @see DeleteResultStep
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ FIREBIRD, POSTGRES })
|
||||
@Support({ FIREBIRD, MARIADB, POSTGRES })
|
||||
<T1, T2, T3> DeleteResultStep<Record3<T1, T2, T3>> returningResult(SelectField<T1> field1, SelectField<T2> field2, SelectField<T3> field3);
|
||||
|
||||
/**
|
||||
@ -214,7 +214,7 @@ public interface DeleteReturningStep<R extends Record> extends DeleteFinalStep<R
|
||||
* @see DeleteResultStep
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ FIREBIRD, POSTGRES })
|
||||
@Support({ FIREBIRD, MARIADB, POSTGRES })
|
||||
<T1, T2, T3, T4> DeleteResultStep<Record4<T1, T2, T3, T4>> returningResult(SelectField<T1> field1, SelectField<T2> field2, SelectField<T3> field3, SelectField<T4> field4);
|
||||
|
||||
/**
|
||||
@ -226,7 +226,7 @@ public interface DeleteReturningStep<R extends Record> extends DeleteFinalStep<R
|
||||
* @see DeleteResultStep
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ FIREBIRD, POSTGRES })
|
||||
@Support({ FIREBIRD, MARIADB, POSTGRES })
|
||||
<T1, T2, T3, T4, T5> DeleteResultStep<Record5<T1, T2, T3, T4, T5>> returningResult(SelectField<T1> field1, SelectField<T2> field2, SelectField<T3> field3, SelectField<T4> field4, SelectField<T5> field5);
|
||||
|
||||
/**
|
||||
@ -238,7 +238,7 @@ public interface DeleteReturningStep<R extends Record> extends DeleteFinalStep<R
|
||||
* @see DeleteResultStep
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ FIREBIRD, POSTGRES })
|
||||
@Support({ FIREBIRD, MARIADB, POSTGRES })
|
||||
<T1, T2, T3, T4, T5, T6> DeleteResultStep<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);
|
||||
|
||||
/**
|
||||
@ -250,7 +250,7 @@ public interface DeleteReturningStep<R extends Record> extends DeleteFinalStep<R
|
||||
* @see DeleteResultStep
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ FIREBIRD, POSTGRES })
|
||||
@Support({ FIREBIRD, MARIADB, POSTGRES })
|
||||
<T1, T2, T3, T4, T5, T6, T7> DeleteResultStep<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);
|
||||
|
||||
/**
|
||||
@ -262,7 +262,7 @@ public interface DeleteReturningStep<R extends Record> extends DeleteFinalStep<R
|
||||
* @see DeleteResultStep
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ FIREBIRD, POSTGRES })
|
||||
@Support({ FIREBIRD, MARIADB, POSTGRES })
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8> DeleteResultStep<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);
|
||||
|
||||
/**
|
||||
@ -274,7 +274,7 @@ public interface DeleteReturningStep<R extends Record> extends DeleteFinalStep<R
|
||||
* @see DeleteResultStep
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ FIREBIRD, POSTGRES })
|
||||
@Support({ FIREBIRD, MARIADB, POSTGRES })
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9> DeleteResultStep<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);
|
||||
|
||||
/**
|
||||
@ -286,7 +286,7 @@ public interface DeleteReturningStep<R extends Record> extends DeleteFinalStep<R
|
||||
* @see DeleteResultStep
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ FIREBIRD, POSTGRES })
|
||||
@Support({ FIREBIRD, MARIADB, POSTGRES })
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> DeleteResultStep<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);
|
||||
|
||||
/**
|
||||
@ -298,7 +298,7 @@ public interface DeleteReturningStep<R extends Record> extends DeleteFinalStep<R
|
||||
* @see DeleteResultStep
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ FIREBIRD, POSTGRES })
|
||||
@Support({ FIREBIRD, MARIADB, POSTGRES })
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> DeleteResultStep<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);
|
||||
|
||||
/**
|
||||
@ -310,7 +310,7 @@ public interface DeleteReturningStep<R extends Record> extends DeleteFinalStep<R
|
||||
* @see DeleteResultStep
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ FIREBIRD, POSTGRES })
|
||||
@Support({ FIREBIRD, MARIADB, POSTGRES })
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> DeleteResultStep<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);
|
||||
|
||||
/**
|
||||
@ -322,7 +322,7 @@ public interface DeleteReturningStep<R extends Record> extends DeleteFinalStep<R
|
||||
* @see DeleteResultStep
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ FIREBIRD, POSTGRES })
|
||||
@Support({ FIREBIRD, MARIADB, POSTGRES })
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> DeleteResultStep<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);
|
||||
|
||||
/**
|
||||
@ -334,7 +334,7 @@ public interface DeleteReturningStep<R extends Record> extends DeleteFinalStep<R
|
||||
* @see DeleteResultStep
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ FIREBIRD, POSTGRES })
|
||||
@Support({ FIREBIRD, MARIADB, POSTGRES })
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> DeleteResultStep<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);
|
||||
|
||||
/**
|
||||
@ -346,7 +346,7 @@ public interface DeleteReturningStep<R extends Record> extends DeleteFinalStep<R
|
||||
* @see DeleteResultStep
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ FIREBIRD, POSTGRES })
|
||||
@Support({ FIREBIRD, MARIADB, POSTGRES })
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> DeleteResultStep<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);
|
||||
|
||||
/**
|
||||
@ -358,7 +358,7 @@ public interface DeleteReturningStep<R extends Record> extends DeleteFinalStep<R
|
||||
* @see DeleteResultStep
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ FIREBIRD, POSTGRES })
|
||||
@Support({ FIREBIRD, MARIADB, POSTGRES })
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> DeleteResultStep<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);
|
||||
|
||||
/**
|
||||
@ -370,7 +370,7 @@ public interface DeleteReturningStep<R extends Record> extends DeleteFinalStep<R
|
||||
* @see DeleteResultStep
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ FIREBIRD, POSTGRES })
|
||||
@Support({ FIREBIRD, MARIADB, POSTGRES })
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17> DeleteResultStep<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);
|
||||
|
||||
/**
|
||||
@ -382,7 +382,7 @@ public interface DeleteReturningStep<R extends Record> extends DeleteFinalStep<R
|
||||
* @see DeleteResultStep
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ FIREBIRD, POSTGRES })
|
||||
@Support({ FIREBIRD, MARIADB, POSTGRES })
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18> DeleteResultStep<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);
|
||||
|
||||
/**
|
||||
@ -394,7 +394,7 @@ public interface DeleteReturningStep<R extends Record> extends DeleteFinalStep<R
|
||||
* @see DeleteResultStep
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ FIREBIRD, POSTGRES })
|
||||
@Support({ FIREBIRD, MARIADB, POSTGRES })
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19> DeleteResultStep<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);
|
||||
|
||||
/**
|
||||
@ -406,7 +406,7 @@ public interface DeleteReturningStep<R extends Record> extends DeleteFinalStep<R
|
||||
* @see DeleteResultStep
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ FIREBIRD, POSTGRES })
|
||||
@Support({ FIREBIRD, MARIADB, POSTGRES })
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20> DeleteResultStep<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);
|
||||
|
||||
/**
|
||||
@ -418,7 +418,7 @@ public interface DeleteReturningStep<R extends Record> extends DeleteFinalStep<R
|
||||
* @see DeleteResultStep
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ FIREBIRD, POSTGRES })
|
||||
@Support({ FIREBIRD, MARIADB, POSTGRES })
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21> DeleteResultStep<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);
|
||||
|
||||
/**
|
||||
@ -430,7 +430,7 @@ public interface DeleteReturningStep<R extends Record> extends DeleteFinalStep<R
|
||||
* @see DeleteResultStep
|
||||
*/
|
||||
@NotNull
|
||||
@Support({ FIREBIRD, POSTGRES })
|
||||
@Support({ FIREBIRD, MARIADB, POSTGRES })
|
||||
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22> DeleteResultStep<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);
|
||||
|
||||
|
||||
|
||||
@ -42,6 +42,8 @@ import static java.lang.Boolean.TRUE;
|
||||
// ...
|
||||
// ...
|
||||
// ...
|
||||
// ...
|
||||
// ...
|
||||
import static org.jooq.SQLDialect.DERBY;
|
||||
import static org.jooq.SQLDialect.FIREBIRD;
|
||||
import static org.jooq.SQLDialect.H2;
|
||||
@ -50,9 +52,12 @@ import static org.jooq.SQLDialect.HSQLDB;
|
||||
// ...
|
||||
import static org.jooq.SQLDialect.MARIADB;
|
||||
// ...
|
||||
// ...
|
||||
// ...
|
||||
import static org.jooq.SQLDialect.MYSQL;
|
||||
// ...
|
||||
// ...
|
||||
import static org.jooq.SQLDialect.POSTGRES;
|
||||
// ...
|
||||
// ...
|
||||
// ...
|
||||
@ -122,10 +127,12 @@ import org.jooq.QualifiedAsterisk;
|
||||
import org.jooq.Record;
|
||||
import org.jooq.Result;
|
||||
import org.jooq.SQLDialect;
|
||||
import org.jooq.Scope;
|
||||
import org.jooq.Select;
|
||||
import org.jooq.SelectFieldOrAsterisk;
|
||||
import org.jooq.Table;
|
||||
import org.jooq.UniqueKey;
|
||||
import org.jooq.Update;
|
||||
import org.jooq.conf.ExecuteWithoutWhere;
|
||||
import org.jooq.conf.RenderNameCase;
|
||||
import org.jooq.conf.SettingsTools;
|
||||
@ -147,6 +154,10 @@ abstract class AbstractDMLQuery<R extends Record> extends AbstractRowCountQuery
|
||||
private static final JooqLogger log = JooqLogger.getLogger(AbstractQuery.class);
|
||||
|
||||
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);
|
||||
private static final Set<SQLDialect> NATIVE_SUPPORT_UPDATE_RETURNING = SQLDialect.supportedBy(FIREBIRD, POSTGRES);
|
||||
private static final Set<SQLDialect> NATIVE_SUPPORT_DELETE_RETURNING = SQLDialect.supportedBy(FIREBIRD, MARIADB, POSTGRES);
|
||||
|
||||
|
||||
|
||||
|
||||
@ -758,40 +769,48 @@ abstract class AbstractDMLQuery<R extends Record> extends AbstractRowCountQuery
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
final void toSQLReturning(Context<?> ctx) {
|
||||
if (!returning.isEmpty()) {
|
||||
switch (ctx.family()) {
|
||||
// Other dialects don't render a RETURNING clause, but
|
||||
// use JDBC's Statement.RETURN_GENERATED_KEYS mode instead
|
||||
|
||||
if (nativeSupportReturning(ctx)) {
|
||||
boolean declareFields = ctx.declareFields();
|
||||
boolean qualify = ctx.qualify();
|
||||
boolean unqualify = ctx.family() == MARIADB;
|
||||
|
||||
if (unqualify)
|
||||
ctx.qualify(false);
|
||||
|
||||
ctx.formatSeparator()
|
||||
.visit(K_RETURNING)
|
||||
.sql(' ')
|
||||
.declareFields(true)
|
||||
|
||||
case FIREBIRD:
|
||||
case POSTGRES: {
|
||||
boolean previous = ctx.declareFields();
|
||||
.visit(
|
||||
|
||||
ctx.formatSeparator()
|
||||
.visit(K_RETURNING)
|
||||
.sql(' ')
|
||||
.declareFields(true)
|
||||
.visit(ctx.family() == FIREBIRD ? new SelectFieldList<>(returningResolvedAsterisks) : returning)
|
||||
.declareFields(previous);
|
||||
// Firebird doesn't support asterisks at all here
|
||||
// MariaDB doesn't support qualified asterisks: https://jira.mariadb.org/browse/MDEV-23178
|
||||
ctx.family() == FIREBIRD || ctx.family() == MARIADB
|
||||
? new SelectFieldList<>(returningResolvedAsterisks)
|
||||
: returning
|
||||
)
|
||||
.declareFields(declareFields);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
// Other dialects don't render a RETURNING clause, but
|
||||
// use JDBC's Statement.RETURN_GENERATED_KEYS mode instead
|
||||
break;
|
||||
if (unqualify)
|
||||
ctx.qualify(qualify);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private final boolean nativeSupportReturning(Scope ctx) {
|
||||
return this instanceof Insert && NATIVE_SUPPORT_INSERT_RETURNING.contains(ctx.dialect())
|
||||
|| this instanceof Update && NATIVE_SUPPORT_UPDATE_RETURNING.contains(ctx.dialect())
|
||||
|| this instanceof Delete && NATIVE_SUPPORT_DELETE_RETURNING.contains(ctx.dialect());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected final void prepare(ExecuteContext ctx) throws SQLException {
|
||||
@ -799,7 +818,7 @@ abstract class AbstractDMLQuery<R extends Record> extends AbstractRowCountQuery
|
||||
Tools.setFetchSize(ctx, 0);
|
||||
}
|
||||
|
||||
private void prepare0(ExecuteContext ctx) throws SQLException {
|
||||
private final void prepare0(ExecuteContext ctx) throws SQLException {
|
||||
Connection connection = ctx.connection();
|
||||
|
||||
|
||||
@ -810,10 +829,8 @@ abstract class AbstractDMLQuery<R extends Record> extends AbstractRowCountQuery
|
||||
|
||||
|
||||
|
||||
|
||||
if (returning.isEmpty()) {
|
||||
super.prepare(ctx);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@ -823,8 +840,9 @@ abstract class AbstractDMLQuery<R extends Record> extends AbstractRowCountQuery
|
||||
|
||||
|
||||
|
||||
|
||||
// Values should be returned from the INSERT
|
||||
else if (nativeSupportReturning(ctx)) {
|
||||
super.prepare(ctx);
|
||||
}
|
||||
else {
|
||||
switch (ctx.family()) {
|
||||
|
||||
@ -836,15 +854,9 @@ abstract class AbstractDMLQuery<R extends Record> extends AbstractRowCountQuery
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Postgres uses the RETURNING clause in SQL
|
||||
case FIREBIRD:
|
||||
case POSTGRES:
|
||||
// SQLite will select last_insert_rowid() after the INSER
|
||||
case SQLITE:
|
||||
case CUBRID:
|
||||
|
||||
super.prepare(ctx);
|
||||
break;
|
||||
|
||||
@ -861,8 +873,12 @@ abstract class AbstractDMLQuery<R extends Record> extends AbstractRowCountQuery
|
||||
|
||||
|
||||
|
||||
|
||||
case DERBY:
|
||||
case H2:
|
||||
|
||||
// [#9212] Older MariaDB versions that don't support RETURNING
|
||||
// yet, or UPDATE .. RETURNING
|
||||
case MARIADB:
|
||||
case MYSQL:
|
||||
ctx.statement(connection.prepareStatement(ctx.sql(), Statement.RETURN_GENERATED_KEYS));
|
||||
@ -999,11 +1015,18 @@ abstract class AbstractDMLQuery<R extends Record> extends AbstractRowCountQuery
|
||||
|
||||
case DERBY:
|
||||
case H2:
|
||||
case MARIADB:
|
||||
case MYSQL: {
|
||||
return executeReturningGeneratedKeysFetchAdditionalRows(ctx, listener);
|
||||
}
|
||||
|
||||
case MARIADB: {
|
||||
if (!nativeSupportReturning(ctx))
|
||||
return executeReturningGeneratedKeysFetchAdditionalRows(ctx, listener);
|
||||
|
||||
rs = executeReturningQuery(ctx, listener);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1245,7 +1268,7 @@ abstract class AbstractDMLQuery<R extends Record> extends AbstractRowCountQuery
|
||||
}
|
||||
}
|
||||
|
||||
private Field<?> returnedIdentity() {
|
||||
private final Field<?> returnedIdentity() {
|
||||
if (table.getIdentity() != null)
|
||||
return table.getIdentity().getField();
|
||||
else
|
||||
|
||||
@ -1322,11 +1322,27 @@ final class Tools {
|
||||
Field<?>[] result = new Field[fields.length];
|
||||
|
||||
for (int i = 0; i < fields.length; i++)
|
||||
result[i] = DSL.field(fields[i].getUnqualifiedName(), fields[i].getDataType());
|
||||
result[i] = unqualified(fields[i]);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
static final List<Field<?>> unqualified(Collection<? extends Field<?>> fields) {
|
||||
if (fields == null)
|
||||
return null;
|
||||
|
||||
List<Field<?>> result = new ArrayList<>(fields.size());
|
||||
|
||||
for (Field<?> field : fields)
|
||||
result.add(unqualified(field));
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
static final <T> Field<T> unqualified(Field<T> field) {
|
||||
return DSL.field(field.getUnqualifiedName(), field.getDataType());
|
||||
}
|
||||
|
||||
static final Name[] unqualifiedNames(Field<?>[] fields) {
|
||||
if (fields == null)
|
||||
return null;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user