From 840a256b1a20a4fab00fad161482c228260175b9 Mon Sep 17 00:00:00 2001 From: Philippe Marschall Date: Fri, 15 Apr 2022 17:15:26 +0200 Subject: [PATCH] Change batch sequence query Change batch sequence query to be simpler and work with H2 2.x. Fixes #428 --- .../hibernate/id/BatchSequenceGenerator.java | 20 +++++++++---------- .../hibernate/id/BatchSequenceGenerator.java | 20 +++++++++---------- .../hibernate/id/BatchSequenceGenerator.java | 20 +++++++++---------- .../hibernate/id/BatchSequenceGenerator.java | 20 +++++++++---------- .../hibernate/id/BatchSequenceGenerator.java | 20 +++++++++---------- .../hibernate/id/BatchSequenceGenerator.java | 20 +++++++++---------- 6 files changed, 60 insertions(+), 60 deletions(-) diff --git a/hibernate-types-4/src/main/java/com/vladmihalcea/hibernate/id/BatchSequenceGenerator.java b/hibernate-types-4/src/main/java/com/vladmihalcea/hibernate/id/BatchSequenceGenerator.java index 88151c904..01f11aa51 100644 --- a/hibernate-types-4/src/main/java/com/vladmihalcea/hibernate/id/BatchSequenceGenerator.java +++ b/hibernate-types-4/src/main/java/com/vladmihalcea/hibernate/id/BatchSequenceGenerator.java @@ -43,13 +43,13 @@ *

SQL

* Per default the generated SELECT will look something like this *

- * WITH RECURSIVE t(n, level_num) AS (
- *   SELECT nextval(seq_xxx) as n, 1 as level_num
+ * WITH RECURSIVE t(n) AS (
+ *   SELECT 1
  *     UNION ALL
- *   SELECT nextval(seq_xxx) as n, level_num + 1 as level_num
+ *   SELECT n + 1
  *   FROM t
- *   WHERE level_num < ?)
- * SELECT n
+ *   WHERE n < ?)
+ * SELECT nextval(seq_xxx)
  *   FROM t;
  * 
* @@ -210,13 +210,13 @@ private static String buildSelect(String sequenceName, Dialect dialect) { + " WHERE level_num < ?) " + "SELECT n FROM t"; } - return "WITH RECURSIVE t(n, level_num) AS (" - + "SELECT " + dialect.getSelectSequenceNextValString(sequenceName) + " as n, 1 as level_num " + return "WITH RECURSIVE t(n) AS (" + + "SELECT 1 " + "UNION ALL " - + "SELECT " + dialect.getSelectSequenceNextValString(sequenceName) + " as n, level_num + 1 as level_num " + + "SELECT n + 1" + " FROM t " - + " WHERE level_num < ?) " - + "SELECT n FROM t"; + + " WHERE n < ?) " + + "SELECT " + dialect.getSelectSequenceNextValString(sequenceName) + " FROM t"; } private SequenceStructure buildDatabaseStructure(Type type, String sequenceName, Dialect dialect) { diff --git a/hibernate-types-43/src/main/java/com/vladmihalcea/hibernate/id/BatchSequenceGenerator.java b/hibernate-types-43/src/main/java/com/vladmihalcea/hibernate/id/BatchSequenceGenerator.java index 4092679a2..fadce57a5 100644 --- a/hibernate-types-43/src/main/java/com/vladmihalcea/hibernate/id/BatchSequenceGenerator.java +++ b/hibernate-types-43/src/main/java/com/vladmihalcea/hibernate/id/BatchSequenceGenerator.java @@ -47,13 +47,13 @@ *

SQL

* Per default the generated SELECT will look something like this *

- * WITH RECURSIVE t(n, level_num) AS (
- *   SELECT nextval(seq_xxx) as n, 1 as level_num
+ * WITH RECURSIVE t(n) AS (
+ *   SELECT 1
  *     UNION ALL
- *   SELECT nextval(seq_xxx) as n, level_num + 1 as level_num
+ *   SELECT n + 1
  *   FROM t
- *   WHERE level_num < ?)
- * SELECT n
+ *   WHERE n < ?)
+ * SELECT nextval(seq_xxx)
  *   FROM t;
  * 
* @@ -214,13 +214,13 @@ private static String buildSelect(String sequenceName, Dialect dialect) { + " WHERE level_num < ?) " + "SELECT n FROM t"; } - return "WITH RECURSIVE t(n, level_num) AS (" - + "SELECT " + dialect.getSelectSequenceNextValString(sequenceName) + " as n, 1 as level_num " + return "WITH RECURSIVE t(n) AS (" + + "SELECT 1 " + "UNION ALL " - + "SELECT " + dialect.getSelectSequenceNextValString(sequenceName) + " as n, level_num + 1 as level_num " + + "SELECT n + 1" + " FROM t " - + " WHERE level_num < ?) " - + "SELECT n FROM t"; + + " WHERE n < ?) " + + "SELECT " + dialect.getSelectSequenceNextValString(sequenceName) + " FROM t"; } private SequenceStructure buildDatabaseStructure(Type type, String sequenceName, Dialect dialect) { diff --git a/hibernate-types-5/src/main/java/com/vladmihalcea/hibernate/id/BatchSequenceGenerator.java b/hibernate-types-5/src/main/java/com/vladmihalcea/hibernate/id/BatchSequenceGenerator.java index 74b939e85..863f06bb8 100644 --- a/hibernate-types-5/src/main/java/com/vladmihalcea/hibernate/id/BatchSequenceGenerator.java +++ b/hibernate-types-5/src/main/java/com/vladmihalcea/hibernate/id/BatchSequenceGenerator.java @@ -49,13 +49,13 @@ *

SQL

* Per default the generated SELECT will look something like this *

- * WITH RECURSIVE t(n, level_num) AS (
- *   SELECT nextval(seq_xxx) AS n, 1 AS level_num
+ * WITH RECURSIVE t(n) AS (
+ *   SELECT 1
  *     UNION ALL
- *   SELECT nextval(seq_xxx) AS n, level_num + 1 AS level_num
+ *   SELECT n + 1
  *   FROM t
- *   WHERE level_num < ?)
- * SELECT n
+ *   WHERE n < ?)
+ * SELECT nextval(seq_xxx)
  *   FROM t;
  * 
* @@ -218,13 +218,13 @@ private static String buildSelect(String sequenceName, Dialect dialect) { + " WHERE level_num < ?) " + "SELECT n FROM t"; } - return "WITH RECURSIVE t(n, level_num) AS (" - + "SELECT " + dialect.getSelectSequenceNextValString(sequenceName) + " AS n, 1 AS level_num " + return "WITH RECURSIVE t(n) AS (" + + "SELECT 1 " + "UNION ALL " - + "SELECT " + dialect.getSelectSequenceNextValString(sequenceName) + " AS n, level_num + 1 AS level_num " + + "SELECT n + 1" + " FROM t " - + " WHERE level_num < ?) " - + "SELECT n FROM t"; + + " WHERE n < ?) " + + "SELECT " + dialect.getSelectSequenceNextValString(sequenceName) + " FROM t"; } private SequenceStructure buildDatabaseStructure(Type type, String sequenceName, JdbcEnvironment jdbcEnvironment) { diff --git a/hibernate-types-52/src/main/java/com/vladmihalcea/hibernate/id/BatchSequenceGenerator.java b/hibernate-types-52/src/main/java/com/vladmihalcea/hibernate/id/BatchSequenceGenerator.java index 1a9fd757d..89931c287 100644 --- a/hibernate-types-52/src/main/java/com/vladmihalcea/hibernate/id/BatchSequenceGenerator.java +++ b/hibernate-types-52/src/main/java/com/vladmihalcea/hibernate/id/BatchSequenceGenerator.java @@ -49,13 +49,13 @@ *

SQL

* Per default the generated SELECT will look something like this *

- * WITH RECURSIVE t(n, level_num) AS (
- *   SELECT nextval(seq_xxx) AS n, 1 AS level_num
+ * WITH RECURSIVE t(n) AS (
+ *   SELECT 1
  *     UNION ALL
- *   SELECT nextval(seq_xxx) AS n, level_num + 1 AS level_num
+ *   SELECT n + 1
  *   FROM t
- *   WHERE level_num < ?)
- * SELECT n
+ *   WHERE n < ?)
+ * SELECT nextval(seq_xxx)
  *   FROM t;
  * 
* @@ -218,13 +218,13 @@ private static String buildSelect(String sequenceName, Dialect dialect) { + " WHERE level_num < ?) " + "SELECT n FROM t"; } - return "WITH RECURSIVE t(n, level_num) AS (" - + "SELECT " + dialect.getSelectSequenceNextValString(sequenceName) + " AS n, 1 AS level_num " + return "WITH RECURSIVE t(n) AS (" + + "SELECT 1 " + "UNION ALL " - + "SELECT " + dialect.getSelectSequenceNextValString(sequenceName) + " AS n, level_num + 1 AS level_num " + + "SELECT n + 1" + " FROM t " - + " WHERE level_num < ?) " - + "SELECT n FROM t"; + + " WHERE n < ?) " + + "SELECT " + dialect.getSelectSequenceNextValString(sequenceName) + " FROM t"; } private SequenceStructure buildDatabaseStructure(Type type, String sequenceName, JdbcEnvironment jdbcEnvironment) { diff --git a/hibernate-types-55/src/main/java/com/vladmihalcea/hibernate/id/BatchSequenceGenerator.java b/hibernate-types-55/src/main/java/com/vladmihalcea/hibernate/id/BatchSequenceGenerator.java index ead1b59df..2a82a43f9 100644 --- a/hibernate-types-55/src/main/java/com/vladmihalcea/hibernate/id/BatchSequenceGenerator.java +++ b/hibernate-types-55/src/main/java/com/vladmihalcea/hibernate/id/BatchSequenceGenerator.java @@ -46,13 +46,13 @@ *

SQL

* Per default the generated SELECT will look something like this *

- * WITH RECURSIVE t(n, level_num) AS (
- *   SELECT nextval(seq_xxx) AS n, 1 AS level_num
+ * WITH RECURSIVE t(n) AS (
+ *   SELECT 1
  *     UNION ALL
- *   SELECT nextval(seq_xxx) AS n, level_num + 1 AS level_num
+ *   SELECT n + 1
  *   FROM t
- *   WHERE level_num < ?)
- * SELECT n
+ *   WHERE n < ?)
+ * SELECT nextval(seq_xxx)
  *   FROM t;
  * 
* @@ -215,13 +215,13 @@ private static String buildSelect(String sequenceName, Dialect dialect) { + " WHERE level_num < ?) " + "SELECT n FROM t"; } - return "WITH RECURSIVE t(n, level_num) AS (" - + "SELECT " + dialect.getSelectSequenceNextValString(sequenceName) + " AS n, 1 AS level_num " + return "WITH RECURSIVE t(n) AS (" + + "SELECT 1 " + "UNION ALL " - + "SELECT " + dialect.getSelectSequenceNextValString(sequenceName) + " AS n, level_num + 1 AS level_num " + + "SELECT n + 1" + " FROM t " - + " WHERE level_num < ?) " - + "SELECT n FROM t"; + + " WHERE n < ?) " + + "SELECT " + dialect.getSelectSequenceNextValString(sequenceName) + " FROM t"; } private SequenceStructure buildDatabaseStructure(Type type, String sequenceName, JdbcEnvironment jdbcEnvironment) { diff --git a/hibernate-types-60/src/main/java/com/vladmihalcea/hibernate/id/BatchSequenceGenerator.java b/hibernate-types-60/src/main/java/com/vladmihalcea/hibernate/id/BatchSequenceGenerator.java index 65155ebc8..8c14ec698 100644 --- a/hibernate-types-60/src/main/java/com/vladmihalcea/hibernate/id/BatchSequenceGenerator.java +++ b/hibernate-types-60/src/main/java/com/vladmihalcea/hibernate/id/BatchSequenceGenerator.java @@ -47,13 +47,13 @@ *

SQL

* Per default the generated SELECT will look something like this *

- * WITH RECURSIVE t(n, level_num) AS (
- *   SELECT nextval(seq_xxx) AS n, 1 AS level_num
+ * WITH RECURSIVE t(n) AS (
+ *   SELECT 1
  *     UNION ALL
- *   SELECT nextval(seq_xxx) AS n, level_num + 1 AS level_num
+ *   SELECT n + 1
  *   FROM t
- *   WHERE level_num < ?)
- * SELECT n
+ *   WHERE n < ?)
+ * SELECT nextval(seq_xxx)
  *   FROM t;
  * 
* @@ -205,13 +205,13 @@ private static String buildSelect(String sequenceName, Dialect dialect) { // https://stackoverflow.com/questions/44472280/cte-based-sequence-generation-with-hsqldb/52329862 return "SELECT " + dialect.getSequenceSupport().getSelectSequenceNextValString(sequenceName) + " FROM UNNEST(SEQUENCE_ARRAY(1, ?, 1))"; } - return "WITH RECURSIVE t(n, level_num) AS (" - + "SELECT " + dialect.getSequenceSupport().getSelectSequenceNextValString(sequenceName) + " AS n, 1 AS level_num " + return "WITH RECURSIVE t(n) AS (" + + "SELECT 1 " + "UNION ALL " - + "SELECT " + dialect.getSequenceSupport().getSelectSequenceNextValString(sequenceName) + " AS n, level_num + 1 AS level_num " + + "SELECT n + 1" + " FROM t " - + " WHERE level_num < ?) " - + "SELECT n FROM t"; + + " WHERE n < ?) " + + "SELECT " + dialect.getSequenceSupport().getSelectSequenceNextValString(sequenceName) + " FROM t"; } private SequenceStructure buildDatabaseStructure(Type type, String sequenceName, JdbcEnvironment jdbcEnvironment) {