diff --git a/jOOQ/src/main/java/org/jooq/impl/AliasedSelect.java b/jOOQ/src/main/java/org/jooq/impl/AliasedSelect.java index 3978c99f9b..ba0aa51dc7 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AliasedSelect.java +++ b/jOOQ/src/main/java/org/jooq/impl/AliasedSelect.java @@ -42,6 +42,7 @@ import static org.jooq.impl.DSL.selectFrom; import static org.jooq.impl.Names.NQ_SELECT; import static org.jooq.impl.Names.N_T; import static org.jooq.impl.SubqueryCharacteristics.DERIVED_TABLE; +import static org.jooq.impl.Tools.anyMatch; import static org.jooq.impl.Tools.collect; import static org.jooq.impl.Tools.fieldNames; import static org.jooq.impl.Tools.flattenCollection; diff --git a/jOOQ/src/main/java/org/jooq/impl/FetchCount.java b/jOOQ/src/main/java/org/jooq/impl/FetchCount.java index cba594f8c9..52bf67e0fd 100644 --- a/jOOQ/src/main/java/org/jooq/impl/FetchCount.java +++ b/jOOQ/src/main/java/org/jooq/impl/FetchCount.java @@ -40,6 +40,7 @@ package org.jooq.impl; import static org.jooq.impl.DSL.count; import static org.jooq.impl.DSL.select; +import static org.jooq.impl.Tools.anyMatch; import org.jooq.Configuration; import org.jooq.Context; @@ -66,7 +67,17 @@ final class FetchCount extends AbstractResultQuery> implements @Override public final void accept(Context ctx) { - ctx.visit(select(count).from(new AliasedSelect<>(query, true, true, false).as("t"))); + + // [#17425] Without native support for nested records, the projected aliases will be off + // There's likely a more generic bug, related to AliasedSelect in general, not just to + // FetchCount, where this fix should be moved, instead + AliasedSelect s = new AliasedSelect<>(query, true, true, false); + + ctx.visit(select(count).from( + RowAsField.NO_NATIVE_SUPPORT.contains(ctx.dialect()) && anyMatch(query.getSelect(), f -> f.getDataType().isRecord()) + ? s.as("t", Tools.EMPTY_STRING) + : s.as("t") + )); } @Override