package liquibase.sqlgenerator.core;
import liquibase.database.Database;
import liquibase.database.core.H2Database;
import liquibase.sqlgenerator.SqlGeneratorChain;
import liquibase.sqlgenerator.core.InsertOrUpdateGenerator;
import liquibase.statement.core.InsertOrUpdateStatement;
public class InsertOrUpdateGeneratorH2 extends InsertOrUpdateGenerator {
@Override
public boolean supports(InsertOrUpdateStatement statement, Database database) {
return database instanceof H2Database;
}
@Override
protected String getInsertStatement(InsertOrUpdateStatement insertOrUpdateStatement, Database database, SqlGeneratorChain sqlGeneratorChain) {
String insertStatement = super.getInsertStatement(insertOrUpdateStatement, database, sqlGeneratorChain);
return insertStatement.replaceAll("(?i)insert into (.+) (values .+)", "MERGE INTO $1 KEY(" + insertOrUpdateStatement.getPrimaryKey() + ") $2");
}
@Override
protected String getUpdateStatement(InsertOrUpdateStatement insertOrUpdateStatement, Database database, String whereClause, SqlGeneratorChain sqlGeneratorChain) {
return "";
}
@Override
protected String getRecordCheck(InsertOrUpdateStatement insertOrUpdateStatement, Database database, String whereClause) {
return "";
}
@Override
protected String getElse(Database database) {
return "";
}
}