diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractTable.java b/jOOQ/src/main/java/org/jooq/impl/AbstractTable.java index de27760d88..891d8ec243 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractTable.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractTable.java @@ -1093,17 +1093,17 @@ abstract class AbstractTable extends AbstractNamed implements @Override public /* non-final */ Table where(Condition condition) { - return table(selectFrom(this).where(condition)).as(this); + return selectFrom(this).where(condition).asTable(this); } @Override public /* non-final */ Table where(Condition... conditions) { - return table(selectFrom(this).where(conditions)).as(this); + return selectFrom(this).where(conditions).asTable(this); } @Override public /* non-final */ Table where(Collection conditions) { - return table(selectFrom(this).where(conditions)).as(this); + return selectFrom(this).where(conditions).asTable(this); } @Override diff --git a/jOOQ/src/main/java/org/jooq/impl/ArrayTableEmulation.java b/jOOQ/src/main/java/org/jooq/impl/ArrayTableEmulation.java index 23ca5c4a7f..67ba043f9d 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ArrayTableEmulation.java +++ b/jOOQ/src/main/java/org/jooq/impl/ArrayTableEmulation.java @@ -138,20 +138,17 @@ final class ArrayTableEmulation extends AbstractTable { Field val = DSL.val(element, field.fields[0].getDataType()); Select subselect = using(configuration).select(val.as("COLUMN_VALUE")).select(); - if (select == null) { + if (select == null) select = subselect; - } - else { + else select = select.unionAll(subselect); - } } // Empty arrays should result in empty tables - if (select == null) { + if (select == null) select = using(configuration).select(one().as("COLUMN_VALUE")).select().where(falseCondition()); - } - table = DSL.table(select).as(alias); + table = select.asTable(alias); } return table; diff --git a/jOOQ/src/main/java/org/jooq/impl/CreateTableImpl.java b/jOOQ/src/main/java/org/jooq/impl/CreateTableImpl.java index 25d32903d7..998d469cff 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CreateTableImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/CreateTableImpl.java @@ -575,7 +575,7 @@ final class CreateTableImpl extends AbstractRowCountQuery implements ctx.start(CREATE_TABLE_AS); if (!columnFields.isEmpty() && NO_SUPPORT_CTAS_COLUMN_NAMES.contains(ctx.family())) - ctx.visit(select(asterisk()).from(table(select).as(table(name("t")), columnFields.toArray(EMPTY_FIELD)))); + ctx.visit(select(asterisk()).from(select.asTable(table(name("t")), columnFields.toArray(EMPTY_FIELD)))); else ctx.visit(select); diff --git a/jOOQ/src/main/java/org/jooq/impl/CreateViewImpl.java b/jOOQ/src/main/java/org/jooq/impl/CreateViewImpl.java index 6e78bfd548..2b75d0f395 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CreateViewImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/CreateViewImpl.java @@ -58,7 +58,6 @@ import static org.jooq.SQLDialect.POSTGRES; import static org.jooq.conf.ParamType.INLINED; import static org.jooq.impl.DSL.name; import static org.jooq.impl.DSL.selectFrom; -import static org.jooq.impl.DSL.table; import static org.jooq.impl.Keywords.K_ALTER; import static org.jooq.impl.Keywords.K_AS; import static org.jooq.impl.Keywords.K_CREATE; @@ -285,7 +284,7 @@ final class CreateViewImpl extends AbstractRowCountQuery imple .paramType(INLINED) .visit( rename && !renameSupported - ? selectFrom(table(parsed()).as(name("t"), Tools.fieldNames(f))) + ? selectFrom(parsed().asTable(name("t"), Tools.fieldNames(f))) : select) .paramType(paramType) .end(CREATE_VIEW_AS); diff --git a/jOOQ/src/main/java/org/jooq/impl/FieldMapsForInsert.java b/jOOQ/src/main/java/org/jooq/impl/FieldMapsForInsert.java index e34ca35363..ff9e596960 100644 --- a/jOOQ/src/main/java/org/jooq/impl/FieldMapsForInsert.java +++ b/jOOQ/src/main/java/org/jooq/impl/FieldMapsForInsert.java @@ -44,7 +44,6 @@ import static org.jooq.Clause.INSERT_VALUES; import static org.jooq.SQLDialect.POSTGRES; // ... import static org.jooq.impl.DSL.name; -import static org.jooq.impl.DSL.table; import static org.jooq.impl.Keywords.K_DEFAULT_VALUES; import static org.jooq.impl.Keywords.K_VALUES; import static org.jooq.impl.Tools.BooleanDataKey.DATA_EMULATE_BULK_INSERT_RETURNING; diff --git a/jOOQ/src/main/java/org/jooq/impl/InsertQueryImpl.java b/jOOQ/src/main/java/org/jooq/impl/InsertQueryImpl.java index 7f307e0801..614eb0f49a 100644 --- a/jOOQ/src/main/java/org/jooq/impl/InsertQueryImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/InsertQueryImpl.java @@ -769,7 +769,7 @@ final class InsertQueryImpl extends AbstractStoreQuery impl return configuration.dsl() .insertInto(table()) .columns(insertMaps.fields()) - .select(selectFrom(DSL.table(rows).as("t"))); + .select(selectFrom(rows.asTable("t"))); } else { throw new IllegalStateException("The ON DUPLICATE KEY IGNORE/UPDATE clause cannot be emulated when inserting into tables without any known keys : " + table()); @@ -784,7 +784,7 @@ final class InsertQueryImpl extends AbstractStoreQuery impl // [#6375] INSERT .. VALUES and INSERT .. SELECT distinction also in MERGE Table t = select == null ? dual() - : DSL.table(select).as("t", fieldNameStrings(insertMaps.fields().toArray(EMPTY_FIELD))); + : select.asTable("t", fieldNameStrings(insertMaps.fields().toArray(EMPTY_FIELD))); MergeOnConditionStep on = select == null ? configuration.dsl().mergeInto(table()) diff --git a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java index 54f77172a3..d585190cbc 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java @@ -2063,6 +2063,7 @@ final class ParserImpl implements Parser { return map; } + @SuppressWarnings("null") private static final Merge parseMerge(ParserContext ctx, WithImpl with) { parseKeyword(ctx, "MERGE"); parseKeywordIf(ctx, "INTO"); @@ -2085,7 +2086,7 @@ final class ParserImpl implements Parser { TableLike usingTable = (table != null ? table : using); if (parseKeywordIf(ctx, "AS") || !peekKeyword(ctx, "ON")) - usingTable = (table != null ? table : DSL.table(using)).as(parseIdentifier(ctx)); + usingTable = usingTable.asTable(parseIdentifier(ctx)); parseKeyword(ctx, "ON"); Condition on = parseCondition(ctx); diff --git a/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java b/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java index 4eb5235f8f..7f154c6823 100644 --- a/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java @@ -872,7 +872,7 @@ final class SelectQueryImpl extends AbstractResultQuery imp && REQUIRES_DERIVED_TABLE_DML.contains(context.family()) && (dmlTable = (Table) context.data(DATA_DML_TARGET_TABLE)) != null && containsTable(dmlTable)) { - context.visit(DSL.select(asterisk()).from(DSL.table(this).as("t"))); + context.visit(DSL.select(asterisk()).from(asTable("t"))); }