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
  final names = await vfs.listNames(dir);
  for (final fname in names) {
    if (fname.startsWith('idx_${name}_')) {
      await vfs.delete('$dir/$fname');
    }
  }

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