diff --git a/jOOQ/src/main/java/org/jooq/impl/DerivedTable.java b/jOOQ/src/main/java/org/jooq/impl/DerivedTable.java index 0d8c127806..3ccaf8c1e4 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DerivedTable.java +++ b/jOOQ/src/main/java/org/jooq/impl/DerivedTable.java @@ -66,21 +66,21 @@ import org.jooq.TableOptions; */ class DerivedTable extends AbstractTable implements QOM.DerivedTable { - static final Set NO_SUPPORT_CORRELATED_DERIVED_TABLE = SQLDialect.supportedUntil(DERBY, H2, MARIADB); - private final Select query; + static final Set NO_SUPPORT_CORRELATED_DERIVED_TABLE = SQLDialect.supportedUntil(DERBY, H2, MARIADB); + private final Lazy> query; DerivedTable(Select query) { - this(query, N_T); + this(Lazy.of(() -> query), N_T); } - DerivedTable(Select query, Name name) { + DerivedTable(Lazy> query, Name name) { super(TableOptions.expression(), name); this.query = query; } final Select query() { - return query; + return query.get(); } @Override @@ -95,12 +95,12 @@ class DerivedTable extends AbstractTable implements QOM.Der @Override /* non-final */ FieldsImpl fields0() { - return new FieldsImpl<>(query.getSelect()); + return new FieldsImpl<>(query().getSelect()); } @Override public final Class getRecordType() { - return query.getRecordType(); + return query().getRecordType(); } @Override @@ -109,7 +109,7 @@ class DerivedTable extends AbstractTable implements QOM.Der - visitSubquery(ctx, query, DERIVED_TABLE, false); + visitSubquery(ctx, query(), DERIVED_TABLE, false); } @Override // Avoid AbstractTable implementation @@ -128,6 +128,6 @@ class DerivedTable extends AbstractTable implements QOM.Der @Override public final Select $arg1() { - return query; + return query(); } } diff --git a/jOOQ/src/main/java/org/jooq/impl/InlineDerivedTable.java b/jOOQ/src/main/java/org/jooq/impl/InlineDerivedTable.java index 548c4370b5..7a74de2510 100644 --- a/jOOQ/src/main/java/org/jooq/impl/InlineDerivedTable.java +++ b/jOOQ/src/main/java/org/jooq/impl/InlineDerivedTable.java @@ -62,7 +62,7 @@ final class InlineDerivedTable extends DerivedTable { } InlineDerivedTable(Table table, Condition condition) { - super(selectFrom(table).where(condition), table.getUnqualifiedName()); + super(Lazy.of(() -> selectFrom(table).where(condition)), table.getUnqualifiedName()); this.table = table; this.condition = condition;