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"
];
}
}
}