Source
List<String> addColumn(SchemaTable table, SchemaColumn column, {String unencodedInitialValue}) {
var commands = <String>[];
if (!column.isNullable && column.defaultValue == null) {
if (unencodedInitialValue == null) {
throw new SchemaException(
"Attempting to addColumn to database that is not nullable, has no default value, and does not have unencodedInitialValue.");
}
column.defaultValue = unencodedInitialValue;
commands.addAll([
"ALTER TABLE ${table.name} ADD COLUMN ${_columnStringForColumn(column)}",
"ALTER TABLE ${table.name} ALTER COLUMN ${_columnNameForColumn(column)} DROP DEFAULT"
]);
} else {
commands.addAll(["ALTER TABLE ${table.name} ADD COLUMN ${_columnStringForColumn(column)}"]);
}
if (column.isIndexed) {
commands.addAll(addIndexToColumn(table, column));
}
if (column.isForeignKey) {
commands.addAll(_addConstraintsForColumn(table.name, column));
}
return commands;
}