From f56955497f32fba3c5485845ab213d0d900e75c8 Mon Sep 17 00:00:00 2001 From: Knut Wannheden Date: Thu, 13 Jun 2019 16:00:55 +0200 Subject: [PATCH] [jOOQ/jOOQ#8796] Support FIREBIRD_3_0 in InsertOnDuplicateSetStep The `InsertOnDuplicateSetStep#set()` methods should declare FIREBIRD_3_0 support as with `InsertOnConflictDoUpdateStep#doUpdate()`. Support this in `InsertQueryImpl` by emulating it using `MERGE`. --- .../java/org/jooq/InsertOnDuplicateSetStep.java | 13 +++++++------ .../main/java/org/jooq/impl/InsertQueryImpl.java | 1 + 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/InsertOnDuplicateSetStep.java b/jOOQ/src/main/java/org/jooq/InsertOnDuplicateSetStep.java index 01582f0808..8c87dcb202 100644 --- a/jOOQ/src/main/java/org/jooq/InsertOnDuplicateSetStep.java +++ b/jOOQ/src/main/java/org/jooq/InsertOnDuplicateSetStep.java @@ -42,6 +42,7 @@ package org.jooq; import static org.jooq.SQLDialect.CUBRID; // ... import static org.jooq.SQLDialect.DERBY; +import static org.jooq.SQLDialect.FIREBIRD; import static org.jooq.SQLDialect.H2; import static org.jooq.SQLDialect.HSQLDB; // ... @@ -99,7 +100,7 @@ public interface InsertOnDuplicateSetStep { * ON DUPLICATE KEY UPDATE or * ON CONFLICT ... DO UPDATE clause. */ - @Support({ CUBRID, DERBY, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE }) + @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE }) InsertOnDuplicateSetMoreStep set(Field field, T value); /** @@ -107,7 +108,7 @@ public interface InsertOnDuplicateSetStep { * ON DUPLICATE KEY UPDATE or * ON CONFLICT ... DO UPDATE clause. */ - @Support({ CUBRID, DERBY, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE }) + @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE }) InsertOnDuplicateSetMoreStep set(Field field, Field value); /** @@ -115,7 +116,7 @@ public interface InsertOnDuplicateSetStep { * ON DUPLICATE KEY UPDATE or * ON CONFLICT ... DO UPDATE clause. */ - @Support({ CUBRID, DERBY, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE }) + @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE }) InsertOnDuplicateSetMoreStep set(Field field, Select> value); /** @@ -127,7 +128,7 @@ public interface InsertOnDuplicateSetStep { * without the necessity of casting the Java null literal to * (T). */ - @Support({ CUBRID, DERBY, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE }) + @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE }) InsertOnDuplicateSetMoreStep setNull(Field field); /** @@ -142,7 +143,7 @@ public interface InsertOnDuplicateSetStep { * Field<T>. jOOQ will attempt to convert values to their * corresponding field's type. */ - @Support({ CUBRID, DERBY, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE }) + @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE }) InsertOnDuplicateSetMoreStep set(Map map); /** @@ -155,7 +156,7 @@ public interface InsertOnDuplicateSetStep { * * @see #set(Map) */ - @Support({ CUBRID, DERBY, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE }) + @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE }) InsertOnDuplicateSetMoreStep set(Record record); } diff --git a/jOOQ/src/main/java/org/jooq/impl/InsertQueryImpl.java b/jOOQ/src/main/java/org/jooq/impl/InsertQueryImpl.java index f291f319b6..c9c1ea2a3c 100644 --- a/jOOQ/src/main/java/org/jooq/impl/InsertQueryImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/InsertQueryImpl.java @@ -401,6 +401,7 @@ final class InsertQueryImpl extends AbstractStoreQuery impl case DERBY: + case FIREBIRD: case H2: case HSQLDB: { ctx.visit(toMerge(ctx.configuration()));