[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`.
This commit is contained in:
Knut Wannheden 2019-06-13 16:00:55 +02:00
parent cb176e2e08
commit f56955497f
2 changed files with 8 additions and 6 deletions

View File

@ -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<R extends Record> {
* <code>ON DUPLICATE KEY UPDATE</code> or
* <code>ON CONFLICT ... DO UPDATE</code> clause.
*/
@Support({ CUBRID, DERBY, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
@Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
<T> InsertOnDuplicateSetMoreStep<R> set(Field<T> field, T value);
/**
@ -107,7 +108,7 @@ public interface InsertOnDuplicateSetStep<R extends Record> {
* <code>ON DUPLICATE KEY UPDATE</code> or
* <code>ON CONFLICT ... DO UPDATE</code> clause.
*/
@Support({ CUBRID, DERBY, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
@Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
<T> InsertOnDuplicateSetMoreStep<R> set(Field<T> field, Field<T> value);
/**
@ -115,7 +116,7 @@ public interface InsertOnDuplicateSetStep<R extends Record> {
* <code>ON DUPLICATE KEY UPDATE</code> or
* <code>ON CONFLICT ... DO UPDATE</code> clause.
*/
@Support({ CUBRID, DERBY, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
@Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
<T> InsertOnDuplicateSetMoreStep<R> set(Field<T> field, Select<? extends Record1<T>> value);
/**
@ -127,7 +128,7 @@ public interface InsertOnDuplicateSetStep<R extends Record> {
* without the necessity of casting the Java <code>null</code> literal to
* <code>(T)</code>.
*/
@Support({ CUBRID, DERBY, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
@Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
<T> InsertOnDuplicateSetMoreStep<R> setNull(Field<T> field);
/**
@ -142,7 +143,7 @@ public interface InsertOnDuplicateSetStep<R extends Record> {
* <code>Field&lt;T&gt;</code>. 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<R> set(Map<?, ?> map);
/**
@ -155,7 +156,7 @@ public interface InsertOnDuplicateSetStep<R extends Record> {
*
* @see #set(Map)
*/
@Support({ CUBRID, DERBY, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
@Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE })
InsertOnDuplicateSetMoreStep<R> set(Record record);
}

View File

@ -401,6 +401,7 @@ final class InsertQueryImpl<R extends Record> extends AbstractStoreQuery<R> impl
case DERBY:
case FIREBIRD:
case H2:
case HSQLDB: {
ctx.visit(toMerge(ctx.configuration()));