diff --git a/jOOQ/src/main/java/org/jooq/DSLContext.java b/jOOQ/src/main/java/org/jooq/DSLContext.java index 20d7f326e1..8608f5caac 100644 --- a/jOOQ/src/main/java/org/jooq/DSLContext.java +++ b/jOOQ/src/main/java/org/jooq/DSLContext.java @@ -3776,6 +3776,38 @@ public interface DSLContext extends Scope , AutoCloseable { @Support({ FIREBIRD, H2, HSQLDB, MYSQL_8_0, POSTGRES }) WithAsStep with(String alias, String... fieldAliases); + /** + * Create a WITH clause to supply subsequent + * SELECT, UPDATE, INSERT, + * DELETE, and MERGE statements with + * {@link CommonTableExpression}s. + *

+ * The RECURSIVE keyword may be optional or unsupported in some + * databases, in case of which it will not be rendered. For optimal database + * interoperability and readability, however, it is suggested that you use + * {@link #with(Name)} for strictly non-recursive CTE + * and {@link #withRecursive(Name)} for strictly + * recursive CTE. + */ + @Support({ FIREBIRD, H2, HSQLDB, MYSQL_8_0, POSTGRES }) + WithAsStep with(Name alias); + + /** + * Create a WITH clause to supply subsequent + * SELECT, UPDATE, INSERT, + * DELETE, and MERGE statements with + * {@link CommonTableExpression}s. + *

+ * The RECURSIVE keyword may be optional or unsupported in some + * databases, in case of which it will not be rendered. For optimal database + * interoperability and readability, however, it is suggested that you use + * {@link #with(Name, Name...)} for strictly non-recursive CTE + * and {@link #withRecursive(Name, Name...)} for strictly + * recursive CTE. + */ + @Support({ FIREBIRD, H2, HSQLDB, MYSQL_8_0, POSTGRES }) + WithAsStep with(Name alias, Name... fieldAliases); + /** * Create a WITH clause to supply subsequent @@ -4604,9 +4636,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String)} for strictly non-recursive CTE * and {@link #withRecursive(String)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Support({ FIREBIRD, H2, HSQLDB, MYSQL_8_0, POSTGRES }) WithAsStep withRecursive(String alias); @@ -4623,13 +4652,42 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String, String...)} for strictly non-recursive CTE * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Support({ FIREBIRD, H2, HSQLDB, MYSQL_8_0, POSTGRES }) WithAsStep withRecursive(String alias, String... fieldAliases); + /** + * Create a WITH clause to supply subsequent + * SELECT, UPDATE, INSERT, + * DELETE, and MERGE statements with + * {@link CommonTableExpression}s. + *

+ * The RECURSIVE keyword may be optional or unsupported in some + * databases, in case of which it will not be rendered. For optimal database + * interoperability and readability, however, it is suggested that you use + * {@link #with(Name)} for strictly non-recursive CTE + * and {@link #withRecursive(Name)} for strictly + * recursive CTE. + */ + @Support({ FIREBIRD, H2, HSQLDB, MYSQL_8_0, POSTGRES }) + WithAsStep withRecursive(Name alias); + + /** + * Create a WITH clause to supply subsequent + * SELECT, UPDATE, INSERT, + * DELETE, and MERGE statements with + * {@link CommonTableExpression}s. + *

+ * The RECURSIVE keyword may be optional or unsupported in some + * databases, in case of which it will not be rendered. For optimal database + * interoperability and readability, however, it is suggested that you use + * {@link #with(Name, Name...)} for strictly non-recursive CTE + * and {@link #withRecursive(Name, Name...)} for strictly + * recursive CTE. + */ + @Support({ FIREBIRD, H2, HSQLDB, MYSQL_8_0, POSTGRES }) + WithAsStep withRecursive(Name alias, Name... fieldAliases); + /** * Create a WITH clause to supply subsequent @@ -4644,9 +4702,6 @@ public interface DSLContext extends Scope , AutoCloseable { * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. - *

* This works in a similar way as {@link #with(String, String...)}, except * that all column names are produced by a function that receives the CTE's * {@link Select} columns as input. @@ -4667,9 +4722,6 @@ public interface DSLContext extends Scope , AutoCloseable { * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. - *

* This works in a similar way as {@link #with(String, String...)}, except * that all column names are produced by a function that receives the CTE's * {@link Select} columns and their column indexes as input. @@ -4692,9 +4744,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String, String...)} for strictly non-recursive CTE * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Generated("This method was generated using jOOQ-tools") @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) @@ -4712,9 +4761,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String, String...)} for strictly non-recursive CTE * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Generated("This method was generated using jOOQ-tools") @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) @@ -4732,9 +4778,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String, String...)} for strictly non-recursive CTE * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Generated("This method was generated using jOOQ-tools") @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) @@ -4752,9 +4795,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String, String...)} for strictly non-recursive CTE * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Generated("This method was generated using jOOQ-tools") @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) @@ -4772,9 +4812,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String, String...)} for strictly non-recursive CTE * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Generated("This method was generated using jOOQ-tools") @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) @@ -4792,9 +4829,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String, String...)} for strictly non-recursive CTE * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Generated("This method was generated using jOOQ-tools") @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) @@ -4812,9 +4846,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String, String...)} for strictly non-recursive CTE * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Generated("This method was generated using jOOQ-tools") @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) @@ -4832,9 +4863,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String, String...)} for strictly non-recursive CTE * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Generated("This method was generated using jOOQ-tools") @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) @@ -4852,9 +4880,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String, String...)} for strictly non-recursive CTE * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Generated("This method was generated using jOOQ-tools") @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) @@ -4872,9 +4897,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String, String...)} for strictly non-recursive CTE * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Generated("This method was generated using jOOQ-tools") @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) @@ -4892,9 +4914,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String, String...)} for strictly non-recursive CTE * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Generated("This method was generated using jOOQ-tools") @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) @@ -4912,9 +4931,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String, String...)} for strictly non-recursive CTE * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Generated("This method was generated using jOOQ-tools") @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) @@ -4932,9 +4948,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String, String...)} for strictly non-recursive CTE * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Generated("This method was generated using jOOQ-tools") @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) @@ -4952,9 +4965,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String, String...)} for strictly non-recursive CTE * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Generated("This method was generated using jOOQ-tools") @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) @@ -4972,9 +4982,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String, String...)} for strictly non-recursive CTE * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Generated("This method was generated using jOOQ-tools") @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) @@ -4992,9 +4999,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String, String...)} for strictly non-recursive CTE * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Generated("This method was generated using jOOQ-tools") @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) @@ -5012,9 +5016,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String, String...)} for strictly non-recursive CTE * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Generated("This method was generated using jOOQ-tools") @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) @@ -5032,9 +5033,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String, String...)} for strictly non-recursive CTE * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Generated("This method was generated using jOOQ-tools") @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) @@ -5052,9 +5050,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String, String...)} for strictly non-recursive CTE * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Generated("This method was generated using jOOQ-tools") @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) @@ -5072,9 +5067,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String, String...)} for strictly non-recursive CTE * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Generated("This method was generated using jOOQ-tools") @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) @@ -5092,9 +5084,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String, String...)} for strictly non-recursive CTE * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Generated("This method was generated using jOOQ-tools") @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) @@ -5112,9 +5101,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String, String...)} for strictly non-recursive CTE * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Generated("This method was generated using jOOQ-tools") @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) @@ -5132,9 +5118,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String, String...)} for strictly non-recursive CTE * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Generated("This method was generated using jOOQ-tools") @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) @@ -5152,9 +5135,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String, String...)} for strictly non-recursive CTE * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Generated("This method was generated using jOOQ-tools") @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) @@ -5172,9 +5152,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String, String...)} for strictly non-recursive CTE * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Generated("This method was generated using jOOQ-tools") @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) @@ -5192,9 +5169,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String, String...)} for strictly non-recursive CTE * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Generated("This method was generated using jOOQ-tools") @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) @@ -5212,9 +5186,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String, String...)} for strictly non-recursive CTE * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Generated("This method was generated using jOOQ-tools") @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) @@ -5232,9 +5203,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String, String...)} for strictly non-recursive CTE * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Generated("This method was generated using jOOQ-tools") @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) @@ -5252,9 +5220,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String, String...)} for strictly non-recursive CTE * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Generated("This method was generated using jOOQ-tools") @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) @@ -5272,9 +5237,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String, String...)} for strictly non-recursive CTE * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Generated("This method was generated using jOOQ-tools") @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) @@ -5292,9 +5254,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String, String...)} for strictly non-recursive CTE * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Generated("This method was generated using jOOQ-tools") @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) @@ -5312,9 +5271,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String, String...)} for strictly non-recursive CTE * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Generated("This method was generated using jOOQ-tools") @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) @@ -5332,9 +5288,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String, String...)} for strictly non-recursive CTE * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Generated("This method was generated using jOOQ-tools") @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) @@ -5352,9 +5305,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String, String...)} for strictly non-recursive CTE * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Generated("This method was generated using jOOQ-tools") @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) @@ -5372,9 +5322,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String, String...)} for strictly non-recursive CTE * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Generated("This method was generated using jOOQ-tools") @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) @@ -5392,9 +5339,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String, String...)} for strictly non-recursive CTE * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Generated("This method was generated using jOOQ-tools") @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) @@ -5412,9 +5356,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String, String...)} for strictly non-recursive CTE * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Generated("This method was generated using jOOQ-tools") @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) @@ -5432,9 +5373,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String, String...)} for strictly non-recursive CTE * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Generated("This method was generated using jOOQ-tools") @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) @@ -5452,9 +5390,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String, String...)} for strictly non-recursive CTE * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Generated("This method was generated using jOOQ-tools") @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) @@ -5472,9 +5407,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String, String...)} for strictly non-recursive CTE * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Generated("This method was generated using jOOQ-tools") @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) @@ -5492,9 +5424,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String, String...)} for strictly non-recursive CTE * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Generated("This method was generated using jOOQ-tools") @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) @@ -5512,9 +5441,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String, String...)} for strictly non-recursive CTE * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Generated("This method was generated using jOOQ-tools") @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) @@ -5532,9 +5458,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String, String...)} for strictly non-recursive CTE * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Generated("This method was generated using jOOQ-tools") @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) @@ -5552,9 +5475,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(String, String...)} for strictly non-recursive CTE * and {@link #withRecursive(String, String...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Generated("This method was generated using jOOQ-tools") @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) @@ -5582,9 +5502,6 @@ public interface DSLContext extends Scope , AutoCloseable { * {@link #with(CommonTableExpression...)} for strictly non-recursive CTE * and {@link #withRecursive(CommonTableExpression...)} for strictly * recursive CTE. - *

- * Note that the {@link SQLDialect#H2} database only supports single-table, - * RECURSIVE common table expression lists. */ @Support({ FIREBIRD, H2, HSQLDB, MYSQL_8_0, POSTGRES }) WithStep withRecursive(CommonTableExpression... tables); diff --git a/jOOQ/src/main/java/org/jooq/impl/DSL.java b/jOOQ/src/main/java/org/jooq/impl/DSL.java index 2d91fbb620..360d053dee 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DSL.java +++ b/jOOQ/src/main/java/org/jooq/impl/DSL.java @@ -720,6 +720,42 @@ public class DSL { return new WithImpl(null, false).with(alias, fieldAliases); } + /** + * Create a WITH clause to supply subsequent + * SELECT, UPDATE, INSERT, + * DELETE, and MERGE statements with + * {@link CommonTableExpression}s. + *

+ * The RECURSIVE keyword may be optional or unsupported in some + * databases, in case of which it will not be rendered. For optimal database + * interoperability and readability, however, it is suggested that you use + * {@link #with(Name)} for strictly non-recursive CTE + * and {@link #withRecursive(Name)} for strictly + * recursive CTE. + */ + @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) + public static WithAsStep with(Name alias) { + return new WithImpl(null, false).with(alias); + } + + /** + * Create a WITH clause to supply subsequent + * SELECT, UPDATE, INSERT, + * DELETE, and MERGE statements with + * {@link CommonTableExpression}s. + *

+ * The RECURSIVE keyword may be optional or unsupported in some + * databases, in case of which it will not be rendered. For optimal database + * interoperability and readability, however, it is suggested that you use + * {@link #with(Name, Name...)} for strictly non-recursive CTE + * and {@link #withRecursive(Name, Name...)} for strictly + * recursive CTE. + */ + @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) + public static WithAsStep with(Name alias, Name... fieldAliases) { + return new WithImpl(null, false).with(alias, fieldAliases); + } + /** * Create a WITH clause to supply subsequent @@ -1651,6 +1687,45 @@ public class DSL { return new WithImpl(null, true).with(alias, fieldAliases); } + /** + * Create a WITH clause to supply subsequent + * SELECT, UPDATE, INSERT, + * DELETE, and MERGE statements with + * {@link CommonTableExpression}s. + *

+ * The RECURSIVE keyword may be optional or unsupported in some + * databases, in case of which it will not be rendered. For optimal database + * interoperability and readability, however, it is suggested that you use + * {@link #with(Name)} for strictly non-recursive CTE + * and {@link #withRecursive(Name)} for strictly + * recursive CTE. + *

+ * Note that the {@link SQLDialect#H2} database only supports single-table, + * RECURSIVE common table expression lists. + */ + @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) + public static WithAsStep withRecursive(Name alias) { + return new WithImpl(null, true).with(alias); + } + + /** + * Create a WITH clause to supply subsequent + * SELECT, UPDATE, INSERT, + * DELETE, and MERGE statements with + * {@link CommonTableExpression}s. + *

+ * The RECURSIVE keyword may be optional or unsupported in some + * databases, in case of which it will not be rendered. For optimal database + * interoperability and readability, however, it is suggested that you use + * {@link #with(Name, Name...)} for strictly non-recursive CTE + * and {@link #withRecursive(Name, Name...)} for strictly + * recursive CTE. + */ + @Support({ FIREBIRD, H2, HSQLDB, POSTGRES }) + public static WithAsStep withRecursive(Name alias, Name... fieldAliases) { + return new WithImpl(null, true).with(alias, fieldAliases); + } + /** * Create a WITH clause to supply subsequent diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultDSLContext.java b/jOOQ/src/main/java/org/jooq/impl/DefaultDSLContext.java index c144b9c64d..aaeae9c4f6 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultDSLContext.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultDSLContext.java @@ -1511,6 +1511,16 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri return new WithImpl(configuration(), false).with(alias, fieldAliases); } + @Override + public WithAsStep with(Name alias) { + return new WithImpl(configuration(), false).with(alias); + } + + @Override + public WithAsStep with(Name alias, Name... fieldAliases) { + return new WithImpl(configuration(), false).with(alias, fieldAliases); + } + @Override public WithAsStep with(String alias, Function, ? extends String> fieldNameFunction) { @@ -1806,6 +1816,16 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri return new WithImpl(configuration(), true).with(alias, fieldAliases); } + @Override + public WithAsStep withRecursive(Name alias) { + return new WithImpl(configuration(), true).with(alias); + } + + @Override + public WithAsStep withRecursive(Name alias, Name... fieldAliases) { + return new WithImpl(configuration(), true).with(alias, fieldAliases); + } + @Override public WithAsStep withRecursive(String alias, Function, ? extends String> fieldNameFunction) {