From af835dbd254b92507f36e479412f3e3944e58491 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Wed, 8 Jul 2020 15:35:13 +0200 Subject: [PATCH] [jOOQ/jOOQ#10370] General exception error has occurred in the optimizer in Informix code generation, when generating only one schema and is turned on --- jOOQ/src/main/java/org/jooq/impl/RowCondition.java | 10 ++++++++-- .../main/java/org/jooq/impl/RowSubqueryCondition.java | 1 + 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/RowCondition.java b/jOOQ/src/main/java/org/jooq/impl/RowCondition.java index 8db08c757b..8c2fbc3d5e 100644 --- a/jOOQ/src/main/java/org/jooq/impl/RowCondition.java +++ b/jOOQ/src/main/java/org/jooq/impl/RowCondition.java @@ -94,11 +94,17 @@ final class RowCondition extends AbstractCondition { private final Row left; private final Row right; private final Comparator comparator; + private final boolean forceEmulation; RowCondition(Row left, Row right, Comparator comparator) { + this(left, right, comparator, false); + } + + RowCondition(Row left, Row right, Comparator comparator, boolean forceEmulation) { this.left = left; this.right = right; this.comparator = comparator; + this.forceEmulation = forceEmulation; } @Override @@ -114,7 +120,7 @@ final class RowCondition extends AbstractCondition { private final QueryPartInternal delegate(Configuration configuration) { // Regular comparison predicate emulation if ((comparator == EQUALS || comparator == NOT_EQUALS) && - EMULATE_EQ_AND_NE.contains(configuration.dialect())) { + (forceEmulation || EMULATE_EQ_AND_NE.contains(configuration.dialect()))) { Field[] leftFields = left.fields(); Field[] rightFields = right.fields(); @@ -133,7 +139,7 @@ final class RowCondition extends AbstractCondition { // Ordering comparison predicate emulation else if ((comparator == GREATER || comparator == GREATER_OR_EQUAL || comparator == LESS || comparator == LESS_OR_EQUAL) && - EMULATE_RANGES.contains(configuration.dialect())) { + (forceEmulation || EMULATE_RANGES.contains(configuration.dialect()))) { // The order component of the comparator (stripping the equal component) Comparator order diff --git a/jOOQ/src/main/java/org/jooq/impl/RowSubqueryCondition.java b/jOOQ/src/main/java/org/jooq/impl/RowSubqueryCondition.java index 5665a2814b..e67442cf61 100644 --- a/jOOQ/src/main/java/org/jooq/impl/RowSubqueryCondition.java +++ b/jOOQ/src/main/java/org/jooq/impl/RowSubqueryCondition.java @@ -48,6 +48,7 @@ import static org.jooq.Comparator.NOT_IN; // ... import static org.jooq.SQLDialect.H2; import static org.jooq.SQLDialect.HSQLDB; +// ... import static org.jooq.SQLDialect.MARIADB; import static org.jooq.SQLDialect.MYSQL; // ...