From 5352cdfce37e75a0c7129b51fb2826c94a373ff0 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Thu, 14 Sep 2023 15:21:01 +0200 Subject: [PATCH] [jOOQ/jOOQ#15592] Add missing Asterisk and QualifiedAsterisk.except(Collection>) overloads --- jOOQ/src/main/java/org/jooq/Asterisk.java | 13 +++++++++++++ .../main/java/org/jooq/QualifiedAsterisk.java | 16 +++++++++++++++- .../main/java/org/jooq/impl/AsteriskImpl.java | 3 ++- .../org/jooq/impl/QualifiedAsteriskImpl.java | 3 ++- .../org/jooq/impl/QualifiedAsteriskProxy.java | 7 +++++++ 5 files changed, 39 insertions(+), 3 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/Asterisk.java b/jOOQ/src/main/java/org/jooq/Asterisk.java index c62853a287..9764edc98b 100644 --- a/jOOQ/src/main/java/org/jooq/Asterisk.java +++ b/jOOQ/src/main/java/org/jooq/Asterisk.java @@ -40,6 +40,8 @@ package org.jooq; import org.jetbrains.annotations.*; import org.jetbrains.annotations.ApiStatus.Experimental; +import java.util.Collection; + import org.jooq.impl.DSL; import org.jooq.impl.QOM; import org.jooq.impl.QOM.UnmodifiableList; @@ -106,6 +108,17 @@ public non-sealed interface Asterisk extends SelectFieldOrAsterisk { @Support Asterisk except(Field... fields); + /** + * The asterisk (*) to be used in SELECT clauses. + *

+ * This expression is a convenient way to select "all but some fields". Some + * dialects (e.g. {@link SQLDialect#H2}) implement this feature natively. In + * other dialects, jOOQ expands the asterisk if possible. + */ + @NotNull + @Support + Asterisk except(Collection> fields); + // ------------------------------------------------------------------------- // XXX: Query Object Model // ------------------------------------------------------------------------- diff --git a/jOOQ/src/main/java/org/jooq/QualifiedAsterisk.java b/jOOQ/src/main/java/org/jooq/QualifiedAsterisk.java index 62042e17da..fec44f6a36 100644 --- a/jOOQ/src/main/java/org/jooq/QualifiedAsterisk.java +++ b/jOOQ/src/main/java/org/jooq/QualifiedAsterisk.java @@ -37,11 +37,13 @@ */ package org.jooq; +import java.util.Collection; + import org.jooq.impl.QOM; import org.jooq.impl.QOM.UnmodifiableList; -import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.ApiStatus.Experimental; +import org.jetbrains.annotations.NotNull; /** @@ -113,6 +115,18 @@ public non-sealed interface QualifiedAsterisk extends SelectFieldOrAsterisk { @Support QualifiedAsterisk except(Field... fields); + /** + * The qualified asterisk (t.* EXCEPT (fields)) expression to + * be used in SELECT clauses. + *

+ * This expression is a convenient way to select "all but some fields". Some + * dialects (e.g. {@link SQLDialect#H2}) implement this feature natively. In + * other dialects, jOOQ expands the asterisk if possible. + */ + @NotNull + @Support + QualifiedAsterisk except(Collection> fields); + // ------------------------------------------------------------------------- // XXX: Query Object Model // ------------------------------------------------------------------------- diff --git a/jOOQ/src/main/java/org/jooq/impl/AsteriskImpl.java b/jOOQ/src/main/java/org/jooq/impl/AsteriskImpl.java index 31f4b5723e..b30e1473db 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AsteriskImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/AsteriskImpl.java @@ -136,7 +136,8 @@ final class AsteriskImpl extends AbstractQueryPart implements Asterisk { return except(Arrays.asList(f)); } - final Asterisk except(Collection> f) { + @Override + public final Asterisk except(Collection> f) { QueryPartList> list = new QueryPartList<>(); list.addAll(fields); diff --git a/jOOQ/src/main/java/org/jooq/impl/QualifiedAsteriskImpl.java b/jOOQ/src/main/java/org/jooq/impl/QualifiedAsteriskImpl.java index af2b190eb6..36c9abb0fd 100644 --- a/jOOQ/src/main/java/org/jooq/impl/QualifiedAsteriskImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/QualifiedAsteriskImpl.java @@ -119,7 +119,8 @@ final class QualifiedAsteriskImpl extends AbstractQueryPart implements Qualified return except(Arrays.asList(f)); } - final QualifiedAsterisk except(Collection> f) { + @Override + public final QualifiedAsterisk except(Collection> f) { QueryPartList> list = new QueryPartList<>(); list.addAll(fields); diff --git a/jOOQ/src/main/java/org/jooq/impl/QualifiedAsteriskProxy.java b/jOOQ/src/main/java/org/jooq/impl/QualifiedAsteriskProxy.java index 719eb198c6..9d9efd6155 100644 --- a/jOOQ/src/main/java/org/jooq/impl/QualifiedAsteriskProxy.java +++ b/jOOQ/src/main/java/org/jooq/impl/QualifiedAsteriskProxy.java @@ -37,6 +37,8 @@ */ package org.jooq.impl; +import java.util.Collection; + import org.jooq.Clause; import org.jooq.Context; import org.jooq.Field; @@ -189,6 +191,11 @@ implements return new QualifiedAsteriskProxy((QualifiedAsteriskImpl) delegate.except(fields), position); } + @Override + public final QualifiedAsterisk except(Collection> fields) { + return new QualifiedAsteriskProxy((QualifiedAsteriskImpl) delegate.except(fields), position); + } + // ------------------------------------------------------------------------- // XXX: Query Object Model // -------------------------------------------------------------------------