diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractTable.java b/jOOQ/src/main/java/org/jooq/impl/AbstractTable.java index a65814abae..30cd98fab8 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractTable.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractTable.java @@ -879,7 +879,7 @@ implements // [#1199] The public API of Table returns immutable field lists if (table instanceof TableImpl t) - t.fields0().add(tableField); + t.fields.add(tableField); return tableField; } diff --git a/jOOQ/src/main/java/org/jooq/impl/InlineDerivedTable.java b/jOOQ/src/main/java/org/jooq/impl/InlineDerivedTable.java index 7a74de2510..239b1a8216 100644 --- a/jOOQ/src/main/java/org/jooq/impl/InlineDerivedTable.java +++ b/jOOQ/src/main/java/org/jooq/impl/InlineDerivedTable.java @@ -39,6 +39,7 @@ package org.jooq.impl; import static org.jooq.impl.DSL.selectFrom; +import static org.jooq.impl.DSL.table; import org.jooq.Condition; import org.jooq.QueryPart; @@ -47,8 +48,6 @@ import org.jooq.Record; import org.jooq.Table; // ... -import org.jetbrains.annotations.NotNull; - /** * @author Lukas Eder */ @@ -90,13 +89,15 @@ final class InlineDerivedTable extends DerivedTable { @Override final FieldsImpl fields0() { - // [#8012] Re-use the existing fields row if this is an aliased table + // [#8012] Re-use the existing fields row if this is an aliased table. if (table instanceof TableAlias) return new FieldsImpl<>(table.fields()); - // [#8012] Re-wrap fields in new TableAlias to prevent StackOverflowError + // [#8012] Re-wrap fields in new TableAlias to prevent StackOverflowError. + // Cannot produce qualified table references here in case the + // InlineDerivedTable cannot be inlined. else - return new FieldsImpl<>(table.as(table).fields()); + return new FieldsImpl<>(Tools.qualify(table(table.getUnqualifiedName()), table.as(table).fields())); } diff --git a/jOOQ/src/main/java/org/jooq/impl/Tools.java b/jOOQ/src/main/java/org/jooq/impl/Tools.java index 63373e409f..fa0214c23f 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Tools.java +++ b/jOOQ/src/main/java/org/jooq/impl/Tools.java @@ -6208,6 +6208,10 @@ final class Tools { throw new UnsupportedOperationException("Unsupported field : " + field); } + static final Field[] qualify(Table table, Field[] fields) { + return map(fields, f -> qualify(table, f), Field[]::new); + } + static final Field qualify(Table table, Field field) { Field result = table.field(field);