package liquibase.sqlgenerator.core; import liquibase.database.Database; import liquibase.database.core.SQLiteDatabase; import liquibase.sql.Sql; import liquibase.sql.UnparsedSql; import liquibase.sqlgenerator.SqlGeneratorChain; import liquibase.statement.core.AddColumnStatement; public class AddColumnGeneratorSQLite extends AddColumnGenerator { @Override public int getPriority() { return PRIORITY_DATABASE; } @Override public boolean supports(AddColumnStatement statement, Database database) { return database instanceof SQLiteDatabase; } @Override public Sql[] generateSql(final AddColumnStatement statement, Database database, SqlGeneratorChain sqlGeneratorChain) { // // SQLite does not support this ALTER TABLE operation until now. // // For more information see: http://www.sqlite.org/omitted.html. // // This is a small work around... // // List<SqlStatement> statements = new ArrayList<SqlStatement>(); // // // define alter table logic // SQLiteDatabase.AlterTableVisitor rename_alter_visitor = // new SQLiteDatabase.AlterTableVisitor() { // public ColumnConfig[] getColumnsToAdd() { // return new ColumnConfig[] { // new ColumnConfig() // .setName(statement.getColumnName()) // .setType(statement.getDataType()) // .setAutoIncrement(statement.isAutoIncrement()) // }; // } // public boolean copyThisColumn(ColumnConfig column) { // return true; // } // public boolean createThisColumn(ColumnConfig column) { // return true; // } // public boolean createThisIndex(Index index) { // return true; // } // }; // // try { // // alter table // statements.addAll(SQLiteDatabase.getAlterTableStatements(rename_alter_visitor, database,statement.getSchemaName(),statement.getTableName())); // } catch (DatabaseException e) { // System.err.println(e); // e.printStackTrace(); // } // // return statements.toArray(new SqlStatement[statements.size()]); return new Sql[] { new UnparsedSql("not supported. FIXME!!") }; } }