diff --git a/jOOQ/src/main/java/org/jooq/AssignmentTarget.java b/jOOQ/src/main/java/org/jooq/AssignmentTarget.java index 33413abb24..3ca5dc9deb 100644 --- a/jOOQ/src/main/java/org/jooq/AssignmentTarget.java +++ b/jOOQ/src/main/java/org/jooq/AssignmentTarget.java @@ -51,6 +51,11 @@ + + + + + diff --git a/jOOQ/src/main/java/org/jooq/impl/Assignment.java b/jOOQ/src/main/java/org/jooq/impl/Assignment.java index 06e647668c..662aabda51 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Assignment.java +++ b/jOOQ/src/main/java/org/jooq/impl/Assignment.java @@ -75,6 +75,15 @@ + + + + + + + + + diff --git a/jOOQ/src/main/java/org/jooq/impl/BlockImpl.java b/jOOQ/src/main/java/org/jooq/impl/BlockImpl.java index a3d64ab486..19285a0ecc 100644 --- a/jOOQ/src/main/java/org/jooq/impl/BlockImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/BlockImpl.java @@ -71,6 +71,7 @@ import org.jooq.Context; import org.jooq.DDLQuery; // ... +import org.jooq.Field; import org.jooq.SQLDialect; import org.jooq.Statement; @@ -176,6 +177,7 @@ private final void accept0(Context ctx) { accept1(ctx, new ArrayList(statements)); } + @SuppressWarnings({ "rawtypes", "unchecked" }) private static final void accept1(Context ctx, List statements) { @@ -197,6 +199,20 @@ private static final void accept1(Context ctx, List statements) { + + + + + + + + + + + + + + @@ -208,6 +224,14 @@ private static final void accept1(Context ctx, List statements) { accept2(ctx, statements); } + private static final void semicolonAfterStatement(Context ctx, Statement s) { + if (!(s instanceof Block)) + + + + ctx.sql(';'); + } + @@ -277,11 +301,7 @@ private static final void accept2(Context ctx, List statements) { - if (!(s instanceof Block)) - - - - ctx.sql(';'); + semicolonAfterStatement(ctx, s); } } diff --git a/jOOQ/src/main/java/org/jooq/impl/DeclarationImpl.java b/jOOQ/src/main/java/org/jooq/impl/DeclarationImpl.java index 781e574775..2ab54f1ede 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DeclarationImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/DeclarationImpl.java @@ -37,6 +37,15 @@ */ package org.jooq.impl; +import static org.jooq.impl.DSL.field; + + + + + + + + diff --git a/jOOQ/src/main/java/org/jooq/impl/ScalarSubquery.java b/jOOQ/src/main/java/org/jooq/impl/ScalarSubquery.java index a5ee220bc0..a8414479ff 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ScalarSubquery.java +++ b/jOOQ/src/main/java/org/jooq/impl/ScalarSubquery.java @@ -50,8 +50,7 @@ final class ScalarSubquery extends AbstractField { private static final long serialVersionUID = 3463144434073231750L; - - private final Select query; + final Select query; ScalarSubquery(Select query, DataType type) { super(DSL.name("select"), type); diff --git a/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java b/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java index 9fc3952176..d989146af6 100644 --- a/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java @@ -167,6 +167,7 @@ import org.jooq.OrderField; import org.jooq.Param; import org.jooq.QualifiedAsterisk; +import org.jooq.QueryPart; import org.jooq.Record; import org.jooq.Row; import org.jooq.SQLDialect; @@ -201,7 +202,7 @@ final class SelectQueryImpl extends AbstractResultQuery imp private static final EnumSet EMULATE_SELECT_INTO_AS_CTAS = EnumSet.of(CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE); private static final EnumSet NO_SUPPORT_FOR_UPDATE = EnumSet.of(CUBRID); private static final EnumSet NO_SUPPORT_FOR_UPDATE_QUALIFIED = EnumSet.of(DERBY, FIREBIRD, H2, HSQLDB); - private static final EnumSet SUPPORT_SELECT_INTO = EnumSet.of(HSQLDB, POSTGRES); + private static final EnumSet SUPPORT_SELECT_INTO_TABLE = EnumSet.of(HSQLDB, POSTGRES); static final EnumSet SUPPORT_WINDOW_CLAUSE = EnumSet.of(H2, MYSQL, POSTGRES, SQLITE); private static final EnumSet REQUIRES_FROM_CLAUSE = EnumSet.of(CUBRID, DERBY, FIREBIRD, HSQLDB, MARIADB, MYSQL); private static final EnumSet EMULATE_EMPTY_GROUP_BY_OTHER = EnumSet.of(FIREBIRD, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE); @@ -1254,13 +1255,17 @@ else if (context.subquery() && dialect == H2 && context.data(DATA_ROW_VALUE_EXPR ) { context.start(SELECT_INTO); - Table actualInto = (Table) context.data(DATA_SELECT_INTO_TABLE); + QueryPart actualInto = (QueryPart) context.data(DATA_SELECT_INTO_TABLE); + + + + if (actualInto == null) actualInto = into; if (actualInto != null && context.data(DATA_OMIT_INTO_CLAUSE) == null - && SUPPORT_SELECT_INTO.contains(family)) { + && (SUPPORT_SELECT_INTO_TABLE.contains(family) || !(actualInto instanceof Table))) { context.formatSeparator() .visit(K_INTO) diff --git a/jOOQ/src/main/java/org/jooq/impl/Tools.java b/jOOQ/src/main/java/org/jooq/impl/Tools.java index 6b54c233f6..58558711f8 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Tools.java +++ b/jOOQ/src/main/java/org/jooq/impl/Tools.java @@ -415,6 +415,13 @@ enum DataKey { */ DATA_SELECT_INTO_TABLE, + + + + + + + /** * [#7139] No data must be selected in the SELECT statement. */ diff --git a/jOOQ/src/main/java/org/jooq/impl/VariableImpl.java b/jOOQ/src/main/java/org/jooq/impl/VariableImpl.java index 2aef2d9d07..3d4245d8ea 100644 --- a/jOOQ/src/main/java/org/jooq/impl/VariableImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/VariableImpl.java @@ -67,6 +67,13 @@ + + + + + + +