From 80395e3c5b78b4cf15dc44ffa9be6b54b4d73e9e Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Fri, 16 Dec 2022 14:56:56 +0100 Subject: [PATCH] [jOOQ/jOOQ#11981] Fix ARRAY_OVERLAP emulation --- jOOQ/src/main/java/org/jooq/Table.java | 2 +- .../main/java/org/jooq/impl/ArrayOverlap.java | 8 +++++++- jOOQ/src/main/java/org/jooq/impl/DSL.java | 16 ++++++++-------- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/Table.java b/jOOQ/src/main/java/org/jooq/Table.java index bd022666a3..1df2f4068f 100644 --- a/jOOQ/src/main/java/org/jooq/Table.java +++ b/jOOQ/src/main/java/org/jooq/Table.java @@ -3047,7 +3047,7 @@ extends * assigned uniquely. */ @NotNull - @Support({ CUBRID, FIREBIRD, H2, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTEDB }) + @Support({ CUBRID, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTEDB }) Table withOrdinality(); /** diff --git a/jOOQ/src/main/java/org/jooq/impl/ArrayOverlap.java b/jOOQ/src/main/java/org/jooq/impl/ArrayOverlap.java index 6fd38b7ef1..9331f9c526 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ArrayOverlap.java +++ b/jOOQ/src/main/java/org/jooq/impl/ArrayOverlap.java @@ -98,10 +98,16 @@ implements case H2: + ctx.visit(exists( + select(asterisk()).from(unnest(arg1)) + .intersect(select(asterisk()).from(unnest(arg2))) + )); + break; + case HSQLDB: ctx.visit(exists( select(asterisk()).from(unnest(arg1)) - .unionAll(select(asterisk()).from(unnest(arg2))) + .intersectAll(select(asterisk()).from(unnest(arg2))) )); break; diff --git a/jOOQ/src/main/java/org/jooq/impl/DSL.java b/jOOQ/src/main/java/org/jooq/impl/DSL.java index a8ad0ef385..d05da86841 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DSL.java +++ b/jOOQ/src/main/java/org/jooq/impl/DSL.java @@ -19838,7 +19838,7 @@ public class DSL { * Check if 2 arrays overlap. */ @NotNull - @Support({ POSTGRES, YUGABYTEDB }) + @Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB }) public static Condition arrayOverlap(T[] arg1, T[] arg2) { return new ArrayOverlap<>(Tools.field(arg1), Tools.field(arg2)); } @@ -19849,7 +19849,7 @@ public class DSL { * Check if 2 arrays overlap. */ @NotNull - @Support({ POSTGRES, YUGABYTEDB }) + @Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB }) public static Condition arrayOverlap(T[] arg1, Field arg2) { return new ArrayOverlap<>(Tools.field(arg1), arg2); } @@ -19860,7 +19860,7 @@ public class DSL { * Check if 2 arrays overlap. */ @NotNull - @Support({ POSTGRES, YUGABYTEDB }) + @Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB }) public static Condition arrayOverlap(Field arg1, T[] arg2) { return new ArrayOverlap<>(arg1, Tools.field(arg2, arg1)); } @@ -19871,7 +19871,7 @@ public class DSL { * Check if 2 arrays overlap. */ @NotNull - @Support({ POSTGRES, YUGABYTEDB }) + @Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB }) public static Condition arrayOverlap(Field arg1, Field arg2) { return new ArrayOverlap<>(arg1, arg2); } @@ -19884,7 +19884,7 @@ public class DSL { * @param arg2 is wrapped as {@link #val(Object)}. */ @NotNull - @Support({ POSTGRES, YUGABYTEDB }) + @Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB }) public static Field arrayRemove(T[] arg1, T arg2) { return new ArrayRemove<>(Tools.field(arg1), Tools.field(arg2)); } @@ -19895,7 +19895,7 @@ public class DSL { * Remove an element from an array. */ @NotNull - @Support({ POSTGRES, YUGABYTEDB }) + @Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB }) public static Field arrayRemove(T[] arg1, Field arg2) { return new ArrayRemove<>(Tools.field(arg1), arg2); } @@ -19908,7 +19908,7 @@ public class DSL { * @param arg2 is wrapped as {@link #val(Object)}. */ @NotNull - @Support({ POSTGRES, YUGABYTEDB }) + @Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB }) public static Field arrayRemove(Field arg1, T arg2) { return new ArrayRemove<>(arg1, Tools.field(arg2)); } @@ -19919,7 +19919,7 @@ public class DSL { * Remove an element from an array. */ @NotNull - @Support({ POSTGRES, YUGABYTEDB }) + @Support({ H2, HSQLDB, POSTGRES, YUGABYTEDB }) public static Field arrayRemove(Field arg1, Field arg2) { return new ArrayRemove<>(arg1, arg2); }