diff --git a/jOOQ/src/main/java/org/jooq/MergeKeyStepN.java b/jOOQ/src/main/java/org/jooq/MergeKeyStepN.java index 6d6ec50ca3..7549fd9076 100644 --- a/jOOQ/src/main/java/org/jooq/MergeKeyStepN.java +++ b/jOOQ/src/main/java/org/jooq/MergeKeyStepN.java @@ -71,8 +71,9 @@ import org.jetbrains.annotations.NotNull; * .execute(); * * - * @author Lukas Eder + * @deprecated - [#10045] - 3.14.0 - Use the standard SQL MERGE API instead, via {@link DSLContext#mergeInto(Table)} */ +@Deprecated(forRemoval = true, since = "3.14") public interface MergeKeyStepN extends MergeValuesStepN { /** diff --git a/jOOQ/src/main/java/org/jooq/MergeUsingStep.java b/jOOQ/src/main/java/org/jooq/MergeUsingStep.java index 985cddfb96..832ecfbdb1 100644 --- a/jOOQ/src/main/java/org/jooq/MergeUsingStep.java +++ b/jOOQ/src/main/java/org/jooq/MergeUsingStep.java @@ -37,8 +37,6 @@ */ package org.jooq; -// ... -// ... import static org.jooq.SQLDialect.CUBRID; // ... import static org.jooq.SQLDialect.DERBY; @@ -48,9 +46,6 @@ import static org.jooq.SQLDialect.H2; // ... import static org.jooq.SQLDialect.HSQLDB; // ... -import static org.jooq.SQLDialect.MARIADB; -// ... -import static org.jooq.SQLDialect.MYSQL; // ... import static org.jooq.SQLDialect.POSTGRES; // ... @@ -58,10 +53,6 @@ import static org.jooq.SQLDialect.POSTGRES; // ... // ... // ... -// ... -import static org.jooq.SQLDialect.YUGABYTEDB; - -import java.util.Collection; import org.jetbrains.annotations.NotNull; @@ -102,7 +93,7 @@ import org.jetbrains.annotations.NotNull; * * @author Lukas Eder */ -public interface MergeUsingStep extends MergeKeyStepN { +public interface MergeUsingStep extends MergeColumnsStep { /** * Add the USING clause to the SQL standard MERGE @@ -127,320 +118,4 @@ public interface MergeUsingStep extends MergeKeyStepN { @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, POSTGRES }) MergeOnStep usingDual(); - /** - * Set the columns for merge (H2-specific syntax). - *

- * This statement is available from DSL syntax only. It is known to be - * supported in some way by any of these dialects: - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
H2H2 natively supports this special syntaxhttps://www.h2database.com/html/commands.html#merge_into
HANAHANA natively supports this syntaxhttp://help.sap.com/saphelp_hanaplatform/helpdata/en/20/fc06a7751910149892c0d09be21a38/content.htm
PostgreSQLThis database can emulate the H2-specific MERGE statement via - * INSERT … ON CONFLICT DO UPDATEhttp://www.postgresql.org/docs/9.5/static/sql-insert.html
DB2, Firebird, HSQLDB, Oracle, SQL Server, Sybase SQL AnywhereThese databases can emulate the H2-specific MERGE statement using a - * standard SQL MERGE statement, without restrictionsSee {@link DSLContext#mergeInto(Table)} for the standard MERGE statement
- * @deprecated - [#10045] - 3.14.0 - Use the standard SQL MERGE API instead, via {@link DSLContext#mergeInto(Table)} - */ - @Deprecated(forRemoval = true, since = "3.14") - @NotNull @CheckReturnValue - @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, YUGABYTEDB }) - MergeKeyStepN columns(Field... fields); - - /** - * Set the columns for merge (H2-specific syntax). - * - * @see #columns(Field...) - * @deprecated - [#10045] - 3.14.0 - Use the standard SQL MERGE API instead, via {@link DSLContext#mergeInto(Table)} - */ - @Deprecated(forRemoval = true, since = "3.14") - @NotNull @CheckReturnValue - @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, YUGABYTEDB }) - MergeKeyStepN columns(Collection> fields); - - - - /** - * Create a new DSL UPSERT statement ({@link SQLDialect#H2} - * MERGE) or {@link SQLDialect#HANA} UPSERT). - * - * @see DSLContext#mergeInto(Table, Field...) - * @deprecated - [#10045] - 3.14.0 - Use the standard SQL MERGE API instead, via {@link DSLContext#mergeInto(Table)} - */ - @NotNull @CheckReturnValue - @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, YUGABYTEDB }) - @Deprecated(forRemoval = true, since = "3.14") - MergeKeyStep1 columns(Field field1); - - /** - * Create a new DSL UPSERT statement ({@link SQLDialect#H2} - * MERGE) or {@link SQLDialect#HANA} UPSERT). - * - * @see DSLContext#mergeInto(Table, Field...) - * @deprecated - [#10045] - 3.14.0 - Use the standard SQL MERGE API instead, via {@link DSLContext#mergeInto(Table)} - */ - @NotNull @CheckReturnValue - @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, YUGABYTEDB }) - @Deprecated(forRemoval = true, since = "3.14") - MergeKeyStep2 columns(Field field1, Field field2); - - /** - * Create a new DSL UPSERT statement ({@link SQLDialect#H2} - * MERGE) or {@link SQLDialect#HANA} UPSERT). - * - * @see DSLContext#mergeInto(Table, Field...) - * @deprecated - [#10045] - 3.14.0 - Use the standard SQL MERGE API instead, via {@link DSLContext#mergeInto(Table)} - */ - @NotNull @CheckReturnValue - @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, YUGABYTEDB }) - @Deprecated(forRemoval = true, since = "3.14") - MergeKeyStep3 columns(Field field1, Field field2, Field field3); - - /** - * Create a new DSL UPSERT statement ({@link SQLDialect#H2} - * MERGE) or {@link SQLDialect#HANA} UPSERT). - * - * @see DSLContext#mergeInto(Table, Field...) - * @deprecated - [#10045] - 3.14.0 - Use the standard SQL MERGE API instead, via {@link DSLContext#mergeInto(Table)} - */ - @NotNull @CheckReturnValue - @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, YUGABYTEDB }) - @Deprecated(forRemoval = true, since = "3.14") - MergeKeyStep4 columns(Field field1, Field field2, Field field3, Field field4); - - /** - * Create a new DSL UPSERT statement ({@link SQLDialect#H2} - * MERGE) or {@link SQLDialect#HANA} UPSERT). - * - * @see DSLContext#mergeInto(Table, Field...) - * @deprecated - [#10045] - 3.14.0 - Use the standard SQL MERGE API instead, via {@link DSLContext#mergeInto(Table)} - */ - @NotNull @CheckReturnValue - @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, YUGABYTEDB }) - @Deprecated(forRemoval = true, since = "3.14") - MergeKeyStep5 columns(Field field1, Field field2, Field field3, Field field4, Field field5); - - /** - * Create a new DSL UPSERT statement ({@link SQLDialect#H2} - * MERGE) or {@link SQLDialect#HANA} UPSERT). - * - * @see DSLContext#mergeInto(Table, Field...) - * @deprecated - [#10045] - 3.14.0 - Use the standard SQL MERGE API instead, via {@link DSLContext#mergeInto(Table)} - */ - @NotNull @CheckReturnValue - @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, YUGABYTEDB }) - @Deprecated(forRemoval = true, since = "3.14") - MergeKeyStep6 columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6); - - /** - * Create a new DSL UPSERT statement ({@link SQLDialect#H2} - * MERGE) or {@link SQLDialect#HANA} UPSERT). - * - * @see DSLContext#mergeInto(Table, Field...) - * @deprecated - [#10045] - 3.14.0 - Use the standard SQL MERGE API instead, via {@link DSLContext#mergeInto(Table)} - */ - @NotNull @CheckReturnValue - @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, YUGABYTEDB }) - @Deprecated(forRemoval = true, since = "3.14") - MergeKeyStep7 columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7); - - /** - * Create a new DSL UPSERT statement ({@link SQLDialect#H2} - * MERGE) or {@link SQLDialect#HANA} UPSERT). - * - * @see DSLContext#mergeInto(Table, Field...) - * @deprecated - [#10045] - 3.14.0 - Use the standard SQL MERGE API instead, via {@link DSLContext#mergeInto(Table)} - */ - @NotNull @CheckReturnValue - @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, YUGABYTEDB }) - @Deprecated(forRemoval = true, since = "3.14") - MergeKeyStep8 columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8); - - /** - * Create a new DSL UPSERT statement ({@link SQLDialect#H2} - * MERGE) or {@link SQLDialect#HANA} UPSERT). - * - * @see DSLContext#mergeInto(Table, Field...) - * @deprecated - [#10045] - 3.14.0 - Use the standard SQL MERGE API instead, via {@link DSLContext#mergeInto(Table)} - */ - @NotNull @CheckReturnValue - @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, YUGABYTEDB }) - @Deprecated(forRemoval = true, since = "3.14") - MergeKeyStep9 columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9); - - /** - * Create a new DSL UPSERT statement ({@link SQLDialect#H2} - * MERGE) or {@link SQLDialect#HANA} UPSERT). - * - * @see DSLContext#mergeInto(Table, Field...) - * @deprecated - [#10045] - 3.14.0 - Use the standard SQL MERGE API instead, via {@link DSLContext#mergeInto(Table)} - */ - @NotNull @CheckReturnValue - @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, YUGABYTEDB }) - @Deprecated(forRemoval = true, since = "3.14") - MergeKeyStep10 columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10); - - /** - * Create a new DSL UPSERT statement ({@link SQLDialect#H2} - * MERGE) or {@link SQLDialect#HANA} UPSERT). - * - * @see DSLContext#mergeInto(Table, Field...) - * @deprecated - [#10045] - 3.14.0 - Use the standard SQL MERGE API instead, via {@link DSLContext#mergeInto(Table)} - */ - @NotNull @CheckReturnValue - @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, YUGABYTEDB }) - @Deprecated(forRemoval = true, since = "3.14") - MergeKeyStep11 columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11); - - /** - * Create a new DSL UPSERT statement ({@link SQLDialect#H2} - * MERGE) or {@link SQLDialect#HANA} UPSERT). - * - * @see DSLContext#mergeInto(Table, Field...) - * @deprecated - [#10045] - 3.14.0 - Use the standard SQL MERGE API instead, via {@link DSLContext#mergeInto(Table)} - */ - @NotNull @CheckReturnValue - @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, YUGABYTEDB }) - @Deprecated(forRemoval = true, since = "3.14") - MergeKeyStep12 columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12); - - /** - * Create a new DSL UPSERT statement ({@link SQLDialect#H2} - * MERGE) or {@link SQLDialect#HANA} UPSERT). - * - * @see DSLContext#mergeInto(Table, Field...) - * @deprecated - [#10045] - 3.14.0 - Use the standard SQL MERGE API instead, via {@link DSLContext#mergeInto(Table)} - */ - @NotNull @CheckReturnValue - @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, YUGABYTEDB }) - @Deprecated(forRemoval = true, since = "3.14") - MergeKeyStep13 columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13); - - /** - * Create a new DSL UPSERT statement ({@link SQLDialect#H2} - * MERGE) or {@link SQLDialect#HANA} UPSERT). - * - * @see DSLContext#mergeInto(Table, Field...) - * @deprecated - [#10045] - 3.14.0 - Use the standard SQL MERGE API instead, via {@link DSLContext#mergeInto(Table)} - */ - @NotNull @CheckReturnValue - @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, YUGABYTEDB }) - @Deprecated(forRemoval = true, since = "3.14") - MergeKeyStep14 columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14); - - /** - * Create a new DSL UPSERT statement ({@link SQLDialect#H2} - * MERGE) or {@link SQLDialect#HANA} UPSERT). - * - * @see DSLContext#mergeInto(Table, Field...) - * @deprecated - [#10045] - 3.14.0 - Use the standard SQL MERGE API instead, via {@link DSLContext#mergeInto(Table)} - */ - @NotNull @CheckReturnValue - @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, YUGABYTEDB }) - @Deprecated(forRemoval = true, since = "3.14") - MergeKeyStep15 columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15); - - /** - * Create a new DSL UPSERT statement ({@link SQLDialect#H2} - * MERGE) or {@link SQLDialect#HANA} UPSERT). - * - * @see DSLContext#mergeInto(Table, Field...) - * @deprecated - [#10045] - 3.14.0 - Use the standard SQL MERGE API instead, via {@link DSLContext#mergeInto(Table)} - */ - @NotNull @CheckReturnValue - @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, YUGABYTEDB }) - @Deprecated(forRemoval = true, since = "3.14") - MergeKeyStep16 columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15, Field field16); - - /** - * Create a new DSL UPSERT statement ({@link SQLDialect#H2} - * MERGE) or {@link SQLDialect#HANA} UPSERT). - * - * @see DSLContext#mergeInto(Table, Field...) - * @deprecated - [#10045] - 3.14.0 - Use the standard SQL MERGE API instead, via {@link DSLContext#mergeInto(Table)} - */ - @NotNull @CheckReturnValue - @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, YUGABYTEDB }) - @Deprecated(forRemoval = true, since = "3.14") - MergeKeyStep17 columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15, Field field16, Field field17); - - /** - * Create a new DSL UPSERT statement ({@link SQLDialect#H2} - * MERGE) or {@link SQLDialect#HANA} UPSERT). - * - * @see DSLContext#mergeInto(Table, Field...) - * @deprecated - [#10045] - 3.14.0 - Use the standard SQL MERGE API instead, via {@link DSLContext#mergeInto(Table)} - */ - @NotNull @CheckReturnValue - @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, YUGABYTEDB }) - @Deprecated(forRemoval = true, since = "3.14") - MergeKeyStep18 columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15, Field field16, Field field17, Field field18); - - /** - * Create a new DSL UPSERT statement ({@link SQLDialect#H2} - * MERGE) or {@link SQLDialect#HANA} UPSERT). - * - * @see DSLContext#mergeInto(Table, Field...) - * @deprecated - [#10045] - 3.14.0 - Use the standard SQL MERGE API instead, via {@link DSLContext#mergeInto(Table)} - */ - @NotNull @CheckReturnValue - @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, YUGABYTEDB }) - @Deprecated(forRemoval = true, since = "3.14") - MergeKeyStep19 columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15, Field field16, Field field17, Field field18, Field field19); - - /** - * Create a new DSL UPSERT statement ({@link SQLDialect#H2} - * MERGE) or {@link SQLDialect#HANA} UPSERT). - * - * @see DSLContext#mergeInto(Table, Field...) - * @deprecated - [#10045] - 3.14.0 - Use the standard SQL MERGE API instead, via {@link DSLContext#mergeInto(Table)} - */ - @NotNull @CheckReturnValue - @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, YUGABYTEDB }) - @Deprecated(forRemoval = true, since = "3.14") - MergeKeyStep20 columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15, Field field16, Field field17, Field field18, Field field19, Field field20); - - /** - * Create a new DSL UPSERT statement ({@link SQLDialect#H2} - * MERGE) or {@link SQLDialect#HANA} UPSERT). - * - * @see DSLContext#mergeInto(Table, Field...) - * @deprecated - [#10045] - 3.14.0 - Use the standard SQL MERGE API instead, via {@link DSLContext#mergeInto(Table)} - */ - @NotNull @CheckReturnValue - @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, YUGABYTEDB }) - @Deprecated(forRemoval = true, since = "3.14") - MergeKeyStep21 columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15, Field field16, Field field17, Field field18, Field field19, Field field20, Field field21); - - /** - * Create a new DSL UPSERT statement ({@link SQLDialect#H2} - * MERGE) or {@link SQLDialect#HANA} UPSERT). - * - * @see DSLContext#mergeInto(Table, Field...) - * @deprecated - [#10045] - 3.14.0 - Use the standard SQL MERGE API instead, via {@link DSLContext#mergeInto(Table)} - */ - @NotNull @CheckReturnValue - @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, YUGABYTEDB }) - @Deprecated(forRemoval = true, since = "3.14") - MergeKeyStep22 columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15, Field field16, Field field17, Field field18, Field field19, Field field20, Field field21, Field field22); - - - } diff --git a/jOOQ/src/main/java/org/jooq/MergeValuesStepN.java b/jOOQ/src/main/java/org/jooq/MergeValuesStepN.java index d90dcb2c0d..7d34c90867 100644 --- a/jOOQ/src/main/java/org/jooq/MergeValuesStepN.java +++ b/jOOQ/src/main/java/org/jooq/MergeValuesStepN.java @@ -77,8 +77,9 @@ import org.jetbrains.annotations.NotNull; * .execute(); * * - * @author Lukas Eder + * @deprecated - [#10045] - 3.14.0 - Use the standard SQL MERGE API instead, via {@link DSLContext#mergeInto(Table)} */ +@Deprecated(forRemoval = true, since = "3.14") public interface MergeValuesStepN { /** diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultDSLContext.java b/jOOQ/src/main/java/org/jooq/impl/DefaultDSLContext.java index c3df72ea50..a12ca3debc 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultDSLContext.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultDSLContext.java @@ -2513,7 +2513,7 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri @Deprecated(forRemoval = true, since = "3.14") @Override public MergeKeyStep1 mergeInto(Table table, Field field1) { - return new MergeImpl(configuration(), null, table, Arrays.asList(field1)); + return new MergeUpsert(configuration(), null, table, Arrays.asList(field1)); } /** @@ -2522,7 +2522,7 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri @Deprecated(forRemoval = true, since = "3.14") @Override public MergeKeyStep2 mergeInto(Table table, Field field1, Field field2) { - return new MergeImpl(configuration(), null, table, Arrays.asList(field1, field2)); + return new MergeUpsert(configuration(), null, table, Arrays.asList(field1, field2)); } /** @@ -2531,7 +2531,7 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri @Deprecated(forRemoval = true, since = "3.14") @Override public MergeKeyStep3 mergeInto(Table table, Field field1, Field field2, Field field3) { - return new MergeImpl(configuration(), null, table, Arrays.asList(field1, field2, field3)); + return new MergeUpsert(configuration(), null, table, Arrays.asList(field1, field2, field3)); } /** @@ -2540,7 +2540,7 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri @Deprecated(forRemoval = true, since = "3.14") @Override public MergeKeyStep4 mergeInto(Table table, Field field1, Field field2, Field field3, Field field4) { - return new MergeImpl(configuration(), null, table, Arrays.asList(field1, field2, field3, field4)); + return new MergeUpsert(configuration(), null, table, Arrays.asList(field1, field2, field3, field4)); } /** @@ -2549,7 +2549,7 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri @Deprecated(forRemoval = true, since = "3.14") @Override public MergeKeyStep5 mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5) { - return new MergeImpl(configuration(), null, table, Arrays.asList(field1, field2, field3, field4, field5)); + return new MergeUpsert(configuration(), null, table, Arrays.asList(field1, field2, field3, field4, field5)); } /** @@ -2558,7 +2558,7 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri @Deprecated(forRemoval = true, since = "3.14") @Override public MergeKeyStep6 mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6) { - return new MergeImpl(configuration(), null, table, Arrays.asList(field1, field2, field3, field4, field5, field6)); + return new MergeUpsert(configuration(), null, table, Arrays.asList(field1, field2, field3, field4, field5, field6)); } /** @@ -2567,7 +2567,7 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri @Deprecated(forRemoval = true, since = "3.14") @Override public MergeKeyStep7 mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7) { - return new MergeImpl(configuration(), null, table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7)); + return new MergeUpsert(configuration(), null, table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7)); } /** @@ -2576,7 +2576,7 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri @Deprecated(forRemoval = true, since = "3.14") @Override public MergeKeyStep8 mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8) { - return new MergeImpl(configuration(), null, table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8)); + return new MergeUpsert(configuration(), null, table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8)); } /** @@ -2585,7 +2585,7 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri @Deprecated(forRemoval = true, since = "3.14") @Override public MergeKeyStep9 mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9) { - return new MergeImpl(configuration(), null, table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9)); + return new MergeUpsert(configuration(), null, table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9)); } /** @@ -2594,7 +2594,7 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri @Deprecated(forRemoval = true, since = "3.14") @Override public MergeKeyStep10 mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10) { - return new MergeImpl(configuration(), null, table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10)); + return new MergeUpsert(configuration(), null, table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10)); } /** @@ -2603,7 +2603,7 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri @Deprecated(forRemoval = true, since = "3.14") @Override public MergeKeyStep11 mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11) { - return new MergeImpl(configuration(), null, table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11)); + return new MergeUpsert(configuration(), null, table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11)); } /** @@ -2612,7 +2612,7 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri @Deprecated(forRemoval = true, since = "3.14") @Override public MergeKeyStep12 mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12) { - return new MergeImpl(configuration(), null, table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12)); + return new MergeUpsert(configuration(), null, table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12)); } /** @@ -2621,7 +2621,7 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri @Deprecated(forRemoval = true, since = "3.14") @Override public MergeKeyStep13 mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13) { - return new MergeImpl(configuration(), null, table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13)); + return new MergeUpsert(configuration(), null, table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13)); } /** @@ -2630,7 +2630,7 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri @Deprecated(forRemoval = true, since = "3.14") @Override public MergeKeyStep14 mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14) { - return new MergeImpl(configuration(), null, table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13, field14)); + return new MergeUpsert(configuration(), null, table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13, field14)); } /** @@ -2639,7 +2639,7 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri @Deprecated(forRemoval = true, since = "3.14") @Override public MergeKeyStep15 mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15) { - return new MergeImpl(configuration(), null, table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13, field14, field15)); + return new MergeUpsert(configuration(), null, table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13, field14, field15)); } /** @@ -2648,7 +2648,7 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri @Deprecated(forRemoval = true, since = "3.14") @Override public MergeKeyStep16 mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15, Field field16) { - return new MergeImpl(configuration(), null, table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13, field14, field15, field16)); + return new MergeUpsert(configuration(), null, table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13, field14, field15, field16)); } /** @@ -2657,7 +2657,7 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri @Deprecated(forRemoval = true, since = "3.14") @Override public MergeKeyStep17 mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15, Field field16, Field field17) { - return new MergeImpl(configuration(), null, table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13, field14, field15, field16, field17)); + return new MergeUpsert(configuration(), null, table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13, field14, field15, field16, field17)); } /** @@ -2666,7 +2666,7 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri @Deprecated(forRemoval = true, since = "3.14") @Override public MergeKeyStep18 mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15, Field field16, Field field17, Field field18) { - return new MergeImpl(configuration(), null, table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13, field14, field15, field16, field17, field18)); + return new MergeUpsert(configuration(), null, table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13, field14, field15, field16, field17, field18)); } /** @@ -2675,7 +2675,7 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri @Deprecated(forRemoval = true, since = "3.14") @Override public MergeKeyStep19 mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15, Field field16, Field field17, Field field18, Field field19) { - return new MergeImpl(configuration(), null, table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13, field14, field15, field16, field17, field18, field19)); + return new MergeUpsert(configuration(), null, table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13, field14, field15, field16, field17, field18, field19)); } /** @@ -2684,7 +2684,7 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri @Deprecated(forRemoval = true, since = "3.14") @Override public MergeKeyStep20 mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15, Field field16, Field field17, Field field18, Field field19, Field field20) { - return new MergeImpl(configuration(), null, table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13, field14, field15, field16, field17, field18, field19, field20)); + return new MergeUpsert(configuration(), null, table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13, field14, field15, field16, field17, field18, field19, field20)); } /** @@ -2693,7 +2693,7 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri @Deprecated(forRemoval = true, since = "3.14") @Override public MergeKeyStep21 mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15, Field field16, Field field17, Field field18, Field field19, Field field20, Field field21) { - return new MergeImpl(configuration(), null, table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13, field14, field15, field16, field17, field18, field19, field20, field21)); + return new MergeUpsert(configuration(), null, table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13, field14, field15, field16, field17, field18, field19, field20, field21)); } /** @@ -2702,19 +2702,27 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri @Deprecated(forRemoval = true, since = "3.14") @Override public MergeKeyStep22 mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15, Field field16, Field field17, Field field18, Field field19, Field field20, Field field21, Field field22) { - return new MergeImpl(configuration(), null, table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13, field14, field15, field16, field17, field18, field19, field20, field21, field22)); + return new MergeUpsert(configuration(), null, table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13, field14, field15, field16, field17, field18, field19, field20, field21, field22)); } + /** + * @deprecated - [#10045] - 3.14.0 - Use the standard SQL MERGE API instead, via {@link #mergeInto(Table)} + */ + @Deprecated(forRemoval = true, since = "3.14") @Override public MergeKeyStepN mergeInto(Table table, Field... fields) { return mergeInto(table, Arrays.asList(fields)); } + /** + * @deprecated - [#10045] - 3.14.0 - Use the standard SQL MERGE API instead, via {@link #mergeInto(Table)} + */ + @Deprecated(forRemoval = true, since = "3.14") @Override public MergeKeyStepN mergeInto(Table table, Collection> fields) { - return new MergeImpl(configuration(), null, table, fields); + return new MergeUpsert(configuration(), null, table, fields); } @Override diff --git a/jOOQ/src/main/java/org/jooq/impl/MergeImpl.java b/jOOQ/src/main/java/org/jooq/impl/MergeImpl.java index 429ecc22f9..73cb6624c7 100644 --- a/jOOQ/src/main/java/org/jooq/impl/MergeImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/MergeImpl.java @@ -314,18 +314,7 @@ implements private transient boolean notMatchedClause; private final List notMatched; - // Objects for the UPSERT syntax (including H2 MERGE, HANA UPSERT, etc.) - private boolean upsertStyle; - private QueryPartList> upsertFields; - private QueryPartList> upsertKeys; - private QueryPartList> upsertValues; - private Select upsertSelect; - MergeImpl(Configuration configuration, WithImpl with, Table table) { - this(configuration, with, table, null); - } - - MergeImpl(Configuration configuration, WithImpl with, Table table, Collection> fields) { super(configuration); this.with = with; @@ -333,9 +322,6 @@ implements this.on = new ConditionProviderImpl(); this.matched = new ArrayList<>(); this.notMatched = new ArrayList<>(); - - if (fields != null) - columns(fields); } // ------------------------------------------------------------------------- @@ -346,27 +332,6 @@ implements return table; } - final QueryPartList> getUpsertFields() { - if (upsertFields == null) - upsertFields = new QueryPartList<>(table.fields()); - - return upsertFields; - } - - final QueryPartList> getUpsertKeys() { - if (upsertKeys == null) - upsertKeys = new QueryPartList<>(); - - return upsertKeys; - } - - final QueryPartList> getUpsertValues() { - if (upsertValues == null) - upsertValues = new QueryPartList<>(); - - return upsertValues; - } - final MatchedClause getLastMatched() { return matched.get(matched.size() - 1); } @@ -376,149 +341,144 @@ implements } @Override - public final MergeImpl columns(Field... fields) { + public final MergeUpsert columns(Field... fields) { return columns(Arrays.asList(fields)); } @Override - public final MergeImpl columns(Collection fields) { - upsertStyle = true; - upsertFields = new QueryPartList<>(fields); - - return this; + public final MergeUpsert columns(Collection fields) { + return new MergeUpsert(configuration(), with, table, fields); } @Override - public final MergeImpl columns(Field field1) { + public final MergeUpsert columns(Field field1) { return columns(Arrays.asList(field1)); } @Override - public final MergeImpl columns(Field field1, Field field2) { + public final MergeUpsert columns(Field field1, Field field2) { return columns(Arrays.asList(field1, field2)); } @Override - public final MergeImpl columns(Field field1, Field field2, Field field3) { + public final MergeUpsert columns(Field field1, Field field2, Field field3) { return columns(Arrays.asList(field1, field2, field3)); } @Override - public final MergeImpl columns(Field field1, Field field2, Field field3, Field field4) { + public final MergeUpsert columns(Field field1, Field field2, Field field3, Field field4) { return columns(Arrays.asList(field1, field2, field3, field4)); } @Override - public final MergeImpl columns(Field field1, Field field2, Field field3, Field field4, Field field5) { + public final MergeUpsert columns(Field field1, Field field2, Field field3, Field field4, Field field5) { return columns(Arrays.asList(field1, field2, field3, field4, field5)); } @Override - public final MergeImpl columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6) { + public final MergeUpsert columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6) { return columns(Arrays.asList(field1, field2, field3, field4, field5, field6)); } @Override - public final MergeImpl columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7) { + public final MergeUpsert columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7) { return columns(Arrays.asList(field1, field2, field3, field4, field5, field6, field7)); } @Override - public final MergeImpl columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8) { + public final MergeUpsert columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8) { return columns(Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8)); } @Override - public final MergeImpl columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9) { + public final MergeUpsert columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9) { return columns(Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9)); } @Override - public final MergeImpl columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10) { + public final MergeUpsert columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10) { return columns(Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10)); } @Override - public final MergeImpl columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11) { + public final MergeUpsert columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11) { return columns(Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11)); } @Override - public final MergeImpl columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12) { + public final MergeUpsert columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12) { return columns(Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12)); } @Override - public final MergeImpl columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13) { + public final MergeUpsert columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13) { return columns(Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13)); } @Override - public final MergeImpl columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14) { + public final MergeUpsert columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14) { return columns(Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13, field14)); } @Override - public final MergeImpl columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15) { + public final MergeUpsert columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15) { return columns(Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13, field14, field15)); } @Override - public final MergeImpl columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15, Field field16) { + public final MergeUpsert columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15, Field field16) { return columns(Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13, field14, field15, field16)); } @Override - public final MergeImpl columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15, Field field16, Field field17) { + public final MergeUpsert columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15, Field field16, Field field17) { return columns(Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13, field14, field15, field16, field17)); } @Override - public final MergeImpl columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15, Field field16, Field field17, Field field18) { + public final MergeUpsert columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15, Field field16, Field field17, Field field18) { return columns(Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13, field14, field15, field16, field17, field18)); } @Override - public final MergeImpl columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15, Field field16, Field field17, Field field18, Field field19) { + public final MergeUpsert columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15, Field field16, Field field17, Field field18, Field field19) { return columns(Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13, field14, field15, field16, field17, field18, field19)); } @Override - public final MergeImpl columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15, Field field16, Field field17, Field field18, Field field19, Field field20) { + public final MergeUpsert columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15, Field field16, Field field17, Field field18, Field field19, Field field20) { return columns(Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13, field14, field15, field16, field17, field18, field19, field20)); } @Override - public final MergeImpl columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15, Field field16, Field field17, Field field18, Field field19, Field field20, Field field21) { + public final MergeUpsert columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15, Field field16, Field field17, Field field18, Field field19, Field field20, Field field21) { return columns(Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13, field14, field15, field16, field17, field18, field19, field20, field21)); } @Override - public final MergeImpl columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15, Field field16, Field field17, Field field18, Field field19, Field field20, Field field21, Field field22) { + public final MergeUpsert columns(Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15, Field field16, Field field17, Field field18, Field field19, Field field20, Field field21, Field field22) { return columns(Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13, field14, field15, field16, field17, field18, field19, field20, field21, field22)); } @Override - public final MergeImpl select(Select select) { - upsertStyle = true; - upsertSelect = select; - return this; + public final MergeUpsert select(Select select) { + MergeUpsert result = new MergeUpsert(configuration(), with, table); + result.upsertSelect = select; + return result; } @Override - public final MergeImpl key(Field... k) { + public final MergeUpsert key(Field... k) { return key(Arrays.asList(k)); } @Override - public final MergeImpl key(Collection> keys) { - upsertStyle = true; - getUpsertKeys().addAll(keys); - return this; + public final MergeUpsert key(Collection> keys) { + return new MergeUpsert(configuration(), with, table).key(keys); } // ------------------------------------------------------------------------- @@ -752,16 +712,7 @@ implements @Override public final MergeImpl values(Object... values) { - - // [#1541] The VALUES() clause is also supported in the H2-specific - // syntax, in case of which, the USING() was not added - if (using == null && !usingDual) { - upsertStyle = true; - getUpsertValues().addAll(Tools.fields(values, getUpsertFields().toArray(EMPTY_FIELD))); - } - else - getLastNotMatched().insertMap.set(Tools.fields(values, getLastNotMatched().insertMap.values.keySet().toArray(EMPTY_FIELD))); - + getLastNotMatched().insertMap.set(Tools.fields(values, getLastNotMatched().insertMap.values.keySet().toArray(EMPTY_FIELD))); return this; } @@ -1467,97 +1418,6 @@ implements // QueryPart API // ------------------------------------------------------------------------- - /** - * Return a standard MERGE statement emulating the H2-specific syntax - */ - private final QueryPart getStandardMerge(boolean usingSubqueries) { - - // The SRC for the USING() clause: - // ------------------------------ - Table src; - List> srcFields; - - // [#5110] This is not yet supported by Derby - if (upsertSelect != null) { - Table s = upsertSelect.asTable("s"); - - // [#579] TODO: Currently, this syntax may require aliasing - // on the call-site - src = DSL.select(map(s.fieldsRow().fields(), (f, i) -> f.as("s" + (i + 1)))).from(s).asTable("src"); - srcFields = Arrays.asList(src.fields()); - } - else if (usingSubqueries) { - src = DSL.select(map(getUpsertValues(), (f, i) -> f.as("s" + (i + 1)))).asTable("src"); - srcFields = Arrays.asList(src.fields()); - } - else { - src = new Dual(); - srcFields = map(getUpsertValues(), f -> f); - } - - // The condition for the ON clause: - // -------------------------------- - Set> onFields = new HashSet<>(); - Condition condition = null; - if (getUpsertKeys().isEmpty()) { - UniqueKey key = table.getPrimaryKey(); - - if (key != null) { - onFields.addAll(key.getFields()); - - for (int i = 0; i < key.getFields().size(); i++) { - Condition rhs = key.getFields().get(i).equal((Field) srcFields.get(i)); - - if (condition == null) - condition = rhs; - else - condition = condition.and(rhs); - } - } - - // This should probably execute an INSERT statement - else - throw new IllegalStateException("Cannot omit KEY() clause on a non-Updatable Table"); - } - else { - for (int i = 0; i < getUpsertKeys().size(); i++) { - int matchIndex = getUpsertFields().indexOf(getUpsertKeys().get(i)); - if (matchIndex == -1) - throw new IllegalStateException("Fields in KEY() clause must be part of the fields specified in MERGE INTO table (...)"); - - onFields.addAll(getUpsertKeys()); - Condition rhs = getUpsertKeys().get(i).equal((Field) srcFields.get(matchIndex)); - - if (condition == null) - condition = rhs; - else - condition = condition.and(rhs); - } - } - - // INSERT and UPDATE clauses - // ------------------------- - Map, Field> update = new LinkedHashMap<>(); - Map, Field> insert = new LinkedHashMap<>(); - - for (int i = 0; i < srcFields.size(); i++) { - - // Oracle does not allow to update fields from the ON clause - if (!onFields.contains(getUpsertFields().get(i))) - update.put(getUpsertFields().get(i), srcFields.get(i)); - - insert.put(getUpsertFields().get(i), srcFields.get(i)); - } - - return DSL.mergeInto(table) - .using(src) - .on(condition) - .whenMatchedThenUpdate() - .set(update) - .whenNotMatchedThenInsert() - .set(insert); - } - final MergeImpl copy(Consumer> finisher) { return copy(finisher, table); } @@ -1638,180 +1498,6 @@ implements if (with != null) ctx.visit(with); - if (upsertStyle) { - switch (ctx.family()) { - case H2: - toSQLH2Merge(ctx); - break; - - - - case MARIADB: - case MYSQL: - toSQLMySQLOnDuplicateKeyUpdate(ctx); - break; - - - - case POSTGRES: - case YUGABYTEDB: - toPostgresInsertOnConflict(ctx); - break; - - - - - - - - case DERBY: - ctx.visit(getStandardMerge(false)); - break; - - default: - ctx.visit(getStandardMerge(true)); - break; - } - } - else - toSQLStandard(ctx); - } - - private final void toSQLMySQLOnDuplicateKeyUpdate(Context ctx) { - FieldsImpl fields = new FieldsImpl<>(getUpsertFields()); - Map, Field> map = new LinkedHashMap<>(); - for (Field field : fields.fields) - map.put(field, getUpsertValues().get(fields.indexOf(field))); - - if (upsertSelect != null) { - ctx.sql("[ merge with select is not supported in MySQL / MariaDB ]"); - } - else { - ctx.visit(insertInto(table, getUpsertFields()) - .values(getUpsertValues()) - .onDuplicateKeyUpdate() - .set(map)); - } - } - - private final void toPostgresInsertOnConflict(Context ctx) { - if (upsertSelect != null) { - ctx.visit(getStandardMerge(true)); - } - else { - FieldsImpl fields = new FieldsImpl<>(getUpsertFields()); - Map, Field> map = new LinkedHashMap<>(); - - for (Field field : fields.fields) { - int i = fields.indexOf(field); - - if (i > -1 && i < getUpsertValues().size()) - map.put(field, getUpsertValues().get(i)); - } - - ctx.visit(insertInto(table, getUpsertFields()) - .values(getUpsertValues()) - .onConflict(getUpsertKeys()) - .doUpdate() - .set(map)); - } - } - - private final void toSQLH2Merge(Context ctx) { - - - - - ctx.visit(K_MERGE_INTO) - .sql(' ') - .declareTables(true, c -> c.visit(table)) - .formatSeparator(); - - ctx.sql('(') - .visit(wrap(collect(removeReadonly(ctx, getUpsertFields()))).qualify(false)) - .sql(')'); - - if (!getUpsertKeys().isEmpty()) - ctx.formatSeparator() - .visit(K_KEY).sql(" (") - .visit(wrap(getUpsertKeys()).qualify(false)) - .sql(')'); - - if (upsertSelect != null) - ctx.formatSeparator() - .visit(upsertSelect); - else - ctx.formatSeparator() - .visit(K_VALUES).sql(" (") - .visit(wrap(collect(removeReadonly(ctx, getUpsertFields(), getUpsertValues())))) - .sql(')'); - } - - static final Iterable> removeReadonly(Context ctx, List> it) { - return removeReadonly(ctx, it, it); - } - - static final Iterable> removeReadonly(Context ctx, List> checkIt, List> removeIt) { - - - - - return removeIt; - } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - private final void toSQLStandard(Context ctx) { Table t = InlineDerivedTable.inlineDerivedTable(ctx, table); ctx.start(MERGE_MERGE_INTO) diff --git a/jOOQ/src/main/java/org/jooq/impl/WithImpl.java b/jOOQ/src/main/java/org/jooq/impl/WithImpl.java index 2f242487fc..1372bdc948 100644 --- a/jOOQ/src/main/java/org/jooq/impl/WithImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/WithImpl.java @@ -1029,146 +1029,146 @@ implements @Override @Deprecated(forRemoval = true, since = "3.14") - public final MergeImpl mergeInto(Table table, Field field1) { + public final MergeUpsert mergeInto(Table table, Field field1) { return mergeInto(table, Arrays.asList(field1)); } @Override @Deprecated(forRemoval = true, since = "3.14") - public final MergeImpl mergeInto(Table table, Field field1, Field field2) { + public final MergeUpsert mergeInto(Table table, Field field1, Field field2) { return mergeInto(table, Arrays.asList(field1, field2)); } @Override @Deprecated(forRemoval = true, since = "3.14") - public final MergeImpl mergeInto(Table table, Field field1, Field field2, Field field3) { + public final MergeUpsert mergeInto(Table table, Field field1, Field field2, Field field3) { return mergeInto(table, Arrays.asList(field1, field2, field3)); } @Override @Deprecated(forRemoval = true, since = "3.14") - public final MergeImpl mergeInto(Table table, Field field1, Field field2, Field field3, Field field4) { + public final MergeUpsert mergeInto(Table table, Field field1, Field field2, Field field3, Field field4) { return mergeInto(table, Arrays.asList(field1, field2, field3, field4)); } @Override @Deprecated(forRemoval = true, since = "3.14") - public final MergeImpl mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5) { + public final MergeUpsert mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5) { return mergeInto(table, Arrays.asList(field1, field2, field3, field4, field5)); } @Override @Deprecated(forRemoval = true, since = "3.14") - public final MergeImpl mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6) { + public final MergeUpsert mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6) { return mergeInto(table, Arrays.asList(field1, field2, field3, field4, field5, field6)); } @Override @Deprecated(forRemoval = true, since = "3.14") - public final MergeImpl mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7) { + public final MergeUpsert mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7) { return mergeInto(table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7)); } @Override @Deprecated(forRemoval = true, since = "3.14") - public final MergeImpl mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8) { + public final MergeUpsert mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8) { return mergeInto(table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8)); } @Override @Deprecated(forRemoval = true, since = "3.14") - public final MergeImpl mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9) { + public final MergeUpsert mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9) { return mergeInto(table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9)); } @Override @Deprecated(forRemoval = true, since = "3.14") - public final MergeImpl mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10) { + public final MergeUpsert mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10) { return mergeInto(table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10)); } @Override @Deprecated(forRemoval = true, since = "3.14") - public final MergeImpl mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11) { + public final MergeUpsert mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11) { return mergeInto(table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11)); } @Override @Deprecated(forRemoval = true, since = "3.14") - public final MergeImpl mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12) { + public final MergeUpsert mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12) { return mergeInto(table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12)); } @Override @Deprecated(forRemoval = true, since = "3.14") - public final MergeImpl mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13) { + public final MergeUpsert mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13) { return mergeInto(table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13)); } @Override @Deprecated(forRemoval = true, since = "3.14") - public final MergeImpl mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14) { + public final MergeUpsert mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14) { return mergeInto(table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13, field14)); } @Override @Deprecated(forRemoval = true, since = "3.14") - public final MergeImpl mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15) { + public final MergeUpsert mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15) { return mergeInto(table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13, field14, field15)); } @Override @Deprecated(forRemoval = true, since = "3.14") - public final MergeImpl mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15, Field field16) { + public final MergeUpsert mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15, Field field16) { return mergeInto(table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13, field14, field15, field16)); } @Override @Deprecated(forRemoval = true, since = "3.14") - public final MergeImpl mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15, Field field16, Field field17) { + public final MergeUpsert mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15, Field field16, Field field17) { return mergeInto(table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13, field14, field15, field16, field17)); } @Override @Deprecated(forRemoval = true, since = "3.14") - public final MergeImpl mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15, Field field16, Field field17, Field field18) { + public final MergeUpsert mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15, Field field16, Field field17, Field field18) { return mergeInto(table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13, field14, field15, field16, field17, field18)); } @Override @Deprecated(forRemoval = true, since = "3.14") - public final MergeImpl mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15, Field field16, Field field17, Field field18, Field field19) { + public final MergeUpsert mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15, Field field16, Field field17, Field field18, Field field19) { return mergeInto(table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13, field14, field15, field16, field17, field18, field19)); } @Override @Deprecated(forRemoval = true, since = "3.14") - public final MergeImpl mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15, Field field16, Field field17, Field field18, Field field19, Field field20) { + public final MergeUpsert mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15, Field field16, Field field17, Field field18, Field field19, Field field20) { return mergeInto(table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13, field14, field15, field16, field17, field18, field19, field20)); } @Override @Deprecated(forRemoval = true, since = "3.14") - public final MergeImpl mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15, Field field16, Field field17, Field field18, Field field19, Field field20, Field field21) { + public final MergeUpsert mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15, Field field16, Field field17, Field field18, Field field19, Field field20, Field field21) { return mergeInto(table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13, field14, field15, field16, field17, field18, field19, field20, field21)); } @Override @Deprecated(forRemoval = true, since = "3.14") - public final MergeImpl mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15, Field field16, Field field17, Field field18, Field field19, Field field20, Field field21, Field field22) { + public final MergeUpsert mergeInto(Table table, Field field1, Field field2, Field field3, Field field4, Field field5, Field field6, Field field7, Field field8, Field field9, Field field10, Field field11, Field field12, Field field13, Field field14, Field field15, Field field16, Field field17, Field field18, Field field19, Field field20, Field field21, Field field22) { return mergeInto(table, Arrays.asList(field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13, field14, field15, field16, field17, field18, field19, field20, field21, field22)); } @Override - public final MergeImpl mergeInto(Table table, Field... fields) { + public final MergeUpsert mergeInto(Table table, Field... fields) { return mergeInto(table, Arrays.asList(fields)); } @Override - public final MergeImpl mergeInto(Table table, Collection fields) { - return new MergeImpl(configuration, this, table, fields); + public final MergeUpsert mergeInto(Table table, Collection fields) { + return new MergeUpsert(configuration, this, table, fields); } @Override