Skip to content

Commit

Permalink
Fix the batch sequence generation for the 2.x version of H2 #428
Browse files Browse the repository at this point in the history
  • Loading branch information
marschall authored and vladmihalcea committed Apr 16, 2022
1 parent d15a2e3 commit 7821cc3
Show file tree
Hide file tree
Showing 6 changed files with 60 additions and 60 deletions.
Expand Up @@ -43,13 +43,13 @@
* <h2>SQL</h2>
* Per default the generated SELECT will look something like this
* <pre><code>
* 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 &lt; ?)
* SELECT n
* WHERE n &lt; ?)
* SELECT nextval(seq_xxx)
* FROM t;
* </code></pre>
*
Expand Down Expand Up @@ -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) {
Expand Down
Expand Up @@ -47,13 +47,13 @@
* <h2>SQL</h2>
* Per default the generated SELECT will look something like this
* <pre><code>
* 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 &lt; ?)
* SELECT n
* WHERE n &lt; ?)
* SELECT nextval(seq_xxx)
* FROM t;
* </code></pre>
*
Expand Down Expand Up @@ -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) {
Expand Down
Expand Up @@ -49,13 +49,13 @@
* <h2>SQL</h2>
* Per default the generated SELECT will look something like this
* <pre><code>
* 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 &lt; ?)
* SELECT n
* WHERE n &lt; ?)
* SELECT nextval(seq_xxx)
* FROM t;
* </code></pre>
*
Expand Down Expand Up @@ -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) {
Expand Down
Expand Up @@ -49,13 +49,13 @@
* <h2>SQL</h2>
* Per default the generated SELECT will look something like this
* <pre><code>
* 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 &lt; ?)
* SELECT n
* WHERE n &lt; ?)
* SELECT nextval(seq_xxx)
* FROM t;
* </code></pre>
*
Expand Down Expand Up @@ -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) {
Expand Down
Expand Up @@ -46,13 +46,13 @@
* <h2>SQL</h2>
* Per default the generated SELECT will look something like this
* <pre><code>
* 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 &lt; ?)
* SELECT n
* WHERE n &lt; ?)
* SELECT nextval(seq_xxx)
* FROM t;
* </code></pre>
*
Expand Down Expand Up @@ -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) {
Expand Down
Expand Up @@ -47,13 +47,13 @@
* <h2>SQL</h2>
* Per default the generated SELECT will look something like this
* <pre><code>
* 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 &lt; ?)
* SELECT n
* WHERE n &lt; ?)
* SELECT nextval(seq_xxx)
* FROM t;
* </code></pre>
*
Expand Down Expand Up @@ -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) {
Expand Down

0 comments on commit 7821cc3

Please sign in to comment.