Source
List<String> alterColumnNullability(SchemaTable table, SchemaColumn column, String unencodedInitialValue) {
if (column.isNullable) {
return ["ALTER TABLE ${table.name} ALTER COLUMN ${_columnNameForColumn(column)} DROP NOT NULL"];
} else {
if (unencodedInitialValue == null && column.defaultValue == null) {
throw new SchemaException("Attempting to change column ${column
.name} to 'not nullable', but not defaultValue or unencodedInitialValue is set for existing columns.");
}
if (column.defaultValue == null) {
return [
"UPDATE ${table.name} SET ${_columnNameForColumn(column)}=$unencodedInitialValue WHERE ${_columnNameForColumn(
column)} IS NULL",
"ALTER TABLE ${table.name} ALTER COLUMN ${_columnNameForColumn(column)} SET NOT NULL",
];
} else {
return ["ALTER TABLE ${table.name} ALTER COLUMN ${_columnNameForColumn(column)} SET NOT NULL"];
}
}
}