package liquibase.datatype.core; import java.util.Arrays; import liquibase.database.Database; import liquibase.database.core.*; import liquibase.datatype.DataTypeInfo; import liquibase.datatype.DatabaseDataType; import liquibase.datatype.LiquibaseDataType; import liquibase.util.StringUtils; @DataTypeInfo(name="float", aliases = {"java.sql.Types.FLOAT", "java.lang.Float", "real", "java.sql.Types.REAL"}, minParameters = 0, maxParameters = 2, priority = LiquibaseDataType.PRIORITY_DEFAULT) public class FloatType extends LiquibaseDataType { @Override public DatabaseDataType toDatabaseDataType(Database database) { String originalDefinition = StringUtils.trimToEmpty(getRawDefinition()); if (database instanceof MSSQLDatabase) { if ("real".equalsIgnoreCase(originalDefinition) || "[real]".equals(originalDefinition) || "java.lang.Float".equals(originalDefinition) || "java.sql.Types.REAL".equals(originalDefinition)) { return new DatabaseDataType(database.escapeDataTypeName("real")); } Object[] parameters = getParameters(); if (parameters.length == 0) { parameters = new Object[] { 53 }; } else if (parameters.length > 1) { parameters = Arrays.copyOfRange(parameters, 0, 1); } return new DatabaseDataType(database.escapeDataTypeName("float"), parameters); } if (database instanceof MySQLDatabase || database instanceof DB2Database || database instanceof H2Database) { if (originalDefinition.equalsIgnoreCase("REAL")) { return new DatabaseDataType("REAL"); } } if (database instanceof FirebirdDatabase || database instanceof InformixDatabase) { return new DatabaseDataType("FLOAT"); } else if (database instanceof PostgresDatabase) { if (originalDefinition.equalsIgnoreCase("real")) { return new DatabaseDataType("REAL"); } } return super.toDatabaseDataType(database); } //sqlite // } else if (columnTypeString.equals("REAL") || // columnTypeString.toLowerCase(Locale.ENGLISH).contains("float")) { // type = new FloatType("REAL"); //postgres // } else if (type.toDatabaseDataType().toLowerCase().startsWith("float8")) { // type.setDataTypeName("FLOAT8"); // } else if (type.toDatabaseDataType().toLowerCase().startsWith("float4")) { // type.setDataTypeName("FLOAT4"); }