From a465035339ceb7b3cfc56a737d69048c5e516221 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Wed, 8 Apr 2020 17:14:50 +0200 Subject: [PATCH] [jOOQ/jOOQ#7291] Fixed Firebird support --- .../main/java/org/jooq/MergeMatchedDeleteStep.java | 7 ++++--- jOOQ/src/main/java/org/jooq/MergeMatchedStep.java | 2 +- jOOQ/src/main/java/org/jooq/MergeMatchedThenStep.java | 2 +- jOOQ/src/main/java/org/jooq/impl/MergeImpl.java | 11 +++++------ 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/MergeMatchedDeleteStep.java b/jOOQ/src/main/java/org/jooq/MergeMatchedDeleteStep.java index 842c63143c..a56434d822 100644 --- a/jOOQ/src/main/java/org/jooq/MergeMatchedDeleteStep.java +++ b/jOOQ/src/main/java/org/jooq/MergeMatchedDeleteStep.java @@ -39,6 +39,7 @@ package org.jooq; // ... import static org.jooq.SQLDialect.DERBY; +import static org.jooq.SQLDialect.FIREBIRD; import static org.jooq.SQLDialect.H2; import static org.jooq.SQLDialect.HSQLDB; // ... @@ -96,7 +97,7 @@ public interface MergeMatchedDeleteStep extends MergeMatchedSt * >http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_9016. * htm for a full definition of the Oracle MERGE statement */ - @Support({ DERBY, H2, HSQLDB }) + @Support({ DERBY, FIREBIRD, H2, HSQLDB }) MergeNotMatchedStep deleteWhere(Condition condition); /** @@ -108,7 +109,7 @@ public interface MergeMatchedDeleteStep extends MergeMatchedSt * >http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_9016. * htm for a full definition of the Oracle MERGE statement */ - @Support({ DERBY, H2, HSQLDB }) + @Support({ DERBY, FIREBIRD, H2, HSQLDB }) MergeNotMatchedStep deleteWhere(Field condition); /** @@ -130,6 +131,6 @@ public interface MergeMatchedDeleteStep extends MergeMatchedSt * method will be removed in the future. */ @Deprecated - @Support({ DERBY, H2, HSQLDB }) + @Support({ DERBY, FIREBIRD, H2, HSQLDB }) MergeNotMatchedStep deleteWhere(Boolean condition); } diff --git a/jOOQ/src/main/java/org/jooq/MergeMatchedStep.java b/jOOQ/src/main/java/org/jooq/MergeMatchedStep.java index 231ad17738..87bc86b538 100644 --- a/jOOQ/src/main/java/org/jooq/MergeMatchedStep.java +++ b/jOOQ/src/main/java/org/jooq/MergeMatchedStep.java @@ -101,7 +101,7 @@ public interface MergeMatchedStep extends MergeNotMatchedStep< * Add the WHEN MATCHED THEN DELETE clause to the * MERGE statement. */ - @Support({ DERBY, H2, HSQLDB }) + @Support({ DERBY, FIREBIRD, H2, HSQLDB }) MergeMatchedStep whenMatchedThenDelete(); /** diff --git a/jOOQ/src/main/java/org/jooq/MergeMatchedThenStep.java b/jOOQ/src/main/java/org/jooq/MergeMatchedThenStep.java index 9a03d30aa7..503da04466 100644 --- a/jOOQ/src/main/java/org/jooq/MergeMatchedThenStep.java +++ b/jOOQ/src/main/java/org/jooq/MergeMatchedThenStep.java @@ -98,6 +98,6 @@ public interface MergeMatchedThenStep { * Add the THEN UPDATE clause to the * MERGE statement. */ - @Support({ DERBY, H2, HSQLDB }) + @Support({ DERBY, FIREBIRD, H2, HSQLDB }) MergeMatchedStep thenDelete(); } diff --git a/jOOQ/src/main/java/org/jooq/impl/MergeImpl.java b/jOOQ/src/main/java/org/jooq/impl/MergeImpl.java index f2be9d0387..470f68af65 100644 --- a/jOOQ/src/main/java/org/jooq/impl/MergeImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/MergeImpl.java @@ -47,7 +47,6 @@ import static org.jooq.Clause.MERGE_USING; import static org.jooq.Clause.MERGE_VALUES; import static org.jooq.Clause.MERGE_WHEN_MATCHED_THEN_UPDATE; import static org.jooq.Clause.MERGE_WHEN_NOT_MATCHED_THEN_INSERT; -import static org.jooq.SQLDialect.FIREBIRD; import static org.jooq.SQLDialect.H2; import static org.jooq.SQLDialect.HSQLDB; // ... @@ -246,8 +245,8 @@ implements */ private static final long serialVersionUID = -8835479296876774391L; private static final Clause[] CLAUSES = { MERGE }; - private static final Set NO_SUPPORT_AND = SQLDialect.supportedBy(FIREBIRD); - private static final Set NO_SUPPORT_MULTI = SQLDialect.supportedBy(FIREBIRD, HSQLDB); + private static final Set NO_SUPPORT_AND = SQLDialect.supportedBy(); + private static final Set NO_SUPPORT_MULTI = SQLDialect.supportedBy(HSQLDB); private static final Set REQUIRE_NEGATION = SQLDialect.supportedBy(H2); private final WithImpl with; @@ -1179,7 +1178,7 @@ implements @Override public final MergeImpl whenNotMatchedThenInsert(Collection> fields) { notMatchedClause = true; - notMatched.add(new NotMatchedClause(null)); + notMatched.add(new NotMatchedClause(noCondition())); getLastNotMatched().insertMap.addFields(fields); matchedClause = false; @@ -1692,7 +1691,7 @@ implements .visit(K_NOT).sql(' ') .visit(K_MATCHED).sql(' '); - if (m.condition != null && !(m.condition instanceof NoCondition) && !NO_SUPPORT_AND.contains(ctx.dialect())) + if (!(m.condition instanceof NoCondition) && !NO_SUPPORT_AND.contains(ctx.dialect())) ctx.visit(K_AND).sql(' ').visit(m.condition).sql(' '); ctx.visit(K_THEN).sql(' ') @@ -1794,7 +1793,7 @@ implements NotMatchedClause(Condition condition) { this.insertMap = new FieldMapsForInsert(table); - this.condition = condition; + this.condition = condition == null ? noCondition() : condition; } } }