classify method
Implementation
@override
DVSchemaChangeClass? classify(DVSchemaChange change) => switch (change) {
DVCreateTable() => DVSchemaChangeClass.instant,
DVAddColumn(nullable: true, defaultSql: null) =>
DVSchemaChangeClass.instant,
// A NOT NULL column with no default fails on a table with rows, and
// making it succeed means filling every row first.
DVAddColumn(nullable: false, defaultSql: null) =>
DVSchemaChangeClass.blocking,
// 11 stores a constant default in the catalogue; 10 rewrites the table.
DVAddColumn() =>
version >= const DVDatabaseServerVersion(11)
? DVSchemaChangeClass.instant
: DVSchemaChangeClass.blocking,
// CREATE INDEX CONCURRENTLY.
DVAddIndex() => DVSchemaChangeClass.online,
// From 12, SET NOT NULL skips its scan when a validated CHECK already
// proves it, and the check validates without holding writers.
DVAddNotNull() =>
version >= const DVDatabaseServerVersion(12)
? DVSchemaChangeClass.online
: DVSchemaChangeClass.blocking,
DVChangeColumnType() => DVSchemaChangeClass.blocking,
DVRenameColumn() => DVSchemaChangeClass.instant,
DVDropColumn() => DVSchemaChangeClass.instant,
DVRawSchemaChange() => null,
};