protected void alterColumnType(DdlWrite writer, AlterColumn alter) throws IOException { String ddl = platformDdl.alterColumnType(alter.getTableName(), alter.getColumnName(), alter.getType()); if (hasValue(ddl)) { writer.apply().append(ddl).endOfStatement(); if (isTrue(alter.isWithHistory())) { // apply same type change to matching column in the history table ddl = platformDdl.alterColumnType( historyTable(alter.getTableName()), alter.getColumnName(), alter.getType()); writer.apply().append(ddl).endOfStatement(); } } }
/** This is mysql specific - alter all the base attributes of the column together. */ protected void alterColumnBaseAttributes(DdlWrite writer, AlterColumn alter) throws IOException { String ddl = platformDdl.alterColumnBaseAttributes(alter); if (hasValue(ddl)) { writer.apply().append(ddl).endOfStatement(); if (isTrue(alter.isWithHistory()) && alter.getType() != null) { // mysql and sql server column type change allowing nulls in the history table column AlterColumn alterHistoryColumn = new AlterColumn(); alterHistoryColumn.setTableName(historyTable(alter.getTableName())); alterHistoryColumn.setColumnName(alter.getColumnName()); alterHistoryColumn.setType(alter.getType()); String histColumnDdl = platformDdl.alterColumnBaseAttributes(alterHistoryColumn); writer.apply().append(histColumnDdl).endOfStatement(); } } }
/** Add all the appropriate changes based on the column changes. */ @Override public void generate(DdlWrite writer, AlterColumn alterColumn) throws IOException { if (isTrue(alterColumn.isHistoryExclude())) { regenerateHistoryTriggers( alterColumn.getTableName(), HistoryTableUpdate.Change.EXCLUDE, alterColumn.getColumnName()); } else if (isFalse(alterColumn.isHistoryExclude())) { regenerateHistoryTriggers( alterColumn.getTableName(), HistoryTableUpdate.Change.INCLUDE, alterColumn.getColumnName()); } if (hasValue(alterColumn.getDropForeignKey())) { alterColumnDropForeignKey(writer, alterColumn); } if (hasValue(alterColumn.getReferences())) { alterColumnAddForeignKey(writer, alterColumn); } if (hasValue(alterColumn.getDropUnique())) { alterColumnDropUniqueConstraint(writer, alterColumn); } if (hasValue(alterColumn.getUnique())) { alterColumnAddUniqueConstraint(writer, alterColumn); } if (hasValue(alterColumn.getUniqueOneToOne())) { alterColumnAddUniqueOneToOneConstraint(writer, alterColumn); } boolean alterBaseAttributes = false; if (hasValue(alterColumn.getType())) { alterColumnType(writer, alterColumn); alterBaseAttributes = true; } if (hasValue(alterColumn.getDefaultValue())) { alterColumnDefaultValue(writer, alterColumn); alterBaseAttributes = true; } if (alterColumn.isNotnull() != null) { alterColumnNotnull(writer, alterColumn); alterBaseAttributes = true; } if (alterBaseAttributes) { alterColumnBaseAttributes(writer, alterColumn); } }