classify method

  1. @override
DVSchemaChangeClass? classify(
  1. DVSchemaChange change
)
override

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,
};