dropTable method

Future<void> dropTable(
  1. String name
)

Implementation

Future<void> dropTable(String name) async {
  if (!tables.containsKey(name)) {
    throw Exception('Table "$name" does not exist');
  }

  tables.remove(name);
  mvccTables.remove(name);
  pageTables.remove(name);
  btreeIndexes.remove(name);
  statsRegistry.remove(name);

  // Remove all index files (both legacy .json and binary .btree2).
  final d = Directory(dir);
  await for (final f in d.list()) {
    final basename = f.path.split('/').last;
    if (basename.startsWith('idx_${name}_')) {
      await File(f.path).delete().catchError((_) => File(f.path));
    }
  }

  final lsn = await wal.append(WalOp.dropTable, name, {});
  pager.setWalFlushedLsn(lsn);
  await _saveCatalog();
}