Skip to content

Commit

Permalink
Merge pull request #2372 from liquibase/h2-autoincrement
Browse files Browse the repository at this point in the history
Use "GENERATED BY DEFAULT AS IDENTITY" for h2 2.0+
  • Loading branch information
nvoxland committed Feb 17, 2022
2 parents e606925 + fb1f669 commit e72711a
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 7 deletions.
Expand Up @@ -291,7 +291,15 @@ public boolean supportsInitiallyDeferrableColumns() {

@Override
protected String getAutoIncrementClause() {
return "AUTO_INCREMENT";
try {
if (getDatabaseMajorVersion() == 1) {
return "AUTO_INCREMENT";
} else {
return "GENERATED BY DEFAULT AS IDENTITY";
}
} catch (DatabaseException e) {
return "AUTO_INCREMENT";
}
}

@Override
Expand Down
Expand Up @@ -521,7 +521,7 @@ public void testAutoIncrementH2Database() throws Exception {

Sql[] generatedSql = this.generatorUnderTest.generateSql(statement, database, null);

assertEquals("CREATE TABLE SCHEMA_NAME.TABLE_NAME (COLUMN1_NAME BIGINT AUTO_INCREMENT)", generatedSql[0].toSql());
assertEquals("CREATE TABLE SCHEMA_NAME.TABLE_NAME (COLUMN1_NAME BIGINT GENERATED BY DEFAULT AS IDENTITY)", generatedSql[0].toSql());
}
}
}
Expand All @@ -539,7 +539,7 @@ public void testAutoIncrementStartWithH2Database() throws Exception {

Sql[] generatedSql = this.generatorUnderTest.generateSql(statement, database, null);

assertEquals("CREATE TABLE SCHEMA_NAME.TABLE_NAME (COLUMN1_NAME BIGINT AUTO_INCREMENT (0))", generatedSql[0].toSql());
assertEquals("CREATE TABLE SCHEMA_NAME.TABLE_NAME (COLUMN1_NAME BIGINT GENERATED BY DEFAULT AS IDENTITY (0))", generatedSql[0].toSql());
}
}
}
Expand All @@ -557,7 +557,7 @@ public void testAutoIncrementStartWithIncrementByH2Database() throws Exception {

Sql[] generatedSql = this.generatorUnderTest.generateSql(statement, database, null);

assertEquals("CREATE TABLE SCHEMA_NAME.TABLE_NAME (COLUMN1_NAME BIGINT AUTO_INCREMENT (0, 10))", generatedSql[0].toSql());
assertEquals("CREATE TABLE SCHEMA_NAME.TABLE_NAME (COLUMN1_NAME BIGINT GENERATED BY DEFAULT AS IDENTITY (0, 10))", generatedSql[0].toSql());
}
}
}
Expand Down
Expand Up @@ -2,4 +2,4 @@
-- Change Parameter: columnDataType=int
-- Change Parameter: columnName=id
-- Change Parameter: tableName=person
ALTER TABLE person ALTER COLUMN id int AUTO_INCREMENT;
ALTER TABLE person ALTER COLUMN id int GENERATED BY DEFAULT AS IDENTITY;
Expand Up @@ -47,8 +47,7 @@ public void noSchema() throws Exception {
assertCorrect("alter table [table_name] modify column_name integer generated by default as identity", PostgresDatabase.class, CockroachDatabase.class, EnterpriseDBDatabase.class);
assertCorrect("alter table table_name modify column_name int auto_increment", MySQLDatabase.class);
assertCorrect("ALTER TABLE [table_name] ALTER COLUMN [column_name] SET GENERATED BY DEFAULT AS IDENTITY", DB2Database.class);
assertCorrect("alter table table_name alter column column_name int generated by default as identity", HsqlDatabase.class);
assertCorrect("alter table table_name alter column column_name int auto_increment", H2Database.class);
assertCorrect("alter table table_name alter column column_name int generated by default as identity", HsqlDatabase.class, H2Database.class);

assertCorrect("ALTER TABLE [table_name] MODIFY [column_name] serial", InformixDatabase.class);
assertCorrect("ALTER TABLE [table_name] ALTER [column_name] SET DEFAULT AUTOINCREMENT", SybaseASADatabase.class);
Expand Down

0 comments on commit e72711a

Please sign in to comment.