diff --git a/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java b/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java index 47e45cd56d..7b9cba84c1 100644 --- a/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java @@ -3730,7 +3730,8 @@ final class SelectQueryImpl extends AbstractResultQuery imp // [#7921] TODO Find a better, more efficient way to resolve asterisks SelectFieldList list = getSelectResolveImplicitAsterisks(); - for (SelectFieldOrAsterisk s : list) + int size = 0; + for (SelectFieldOrAsterisk s : list) { if (s instanceof Field f) result.add(getResolveProjection(ctx, f)); else if (s instanceof QualifiedAsteriskImpl q) { @@ -3762,6 +3763,15 @@ final class SelectQueryImpl extends AbstractResultQuery imp else throw new AssertionError("Type not supported: " + s); + // [#7841] Each iteration must contribute new fields to the result. + // Otherwise, we couldn't resolve an asterisk, and must fall + // back to determining fields from the ResultSetMetaData + if (size == result.size()) + return new SelectFieldList<>(); + else + size = result.size(); + } + return result; }