* Automatically delete the old referers table.

This commit is contained in:
Eelco Dolstra 2005-12-12 19:14:38 +00:00
parent 8463f27d8c
commit d87549c1c7
3 changed files with 31 additions and 5 deletions

View File

@ -292,11 +292,12 @@ void Database::close()
try {
for (map<TableId, Db *>::iterator i = tables.begin();
i != tables.end(); i++)
i != tables.end(); )
{
Db * db = i->second;
db->close(DB_NOSYNC);
delete db;
map<TableId, Db *>::iterator j = i;
++j;
closeTable(i->first);
i = j;
}
/* Do a checkpoint every 128 kilobytes, or every 5 minutes. */
@ -336,6 +337,25 @@ TableId Database::openTable(const string & tableName, bool sorted)
}
void Database::closeTable(TableId table)
{
try {
Db * db = getDb(table);
db->close(DB_NOSYNC);
delete db;
tables.erase(table);
} catch (DbException e) { rethrow(e); }
}
void Database::deleteTable(const string & table)
{
try {
env->dbremove(0, table.c_str(), 0, DB_AUTO_COMMIT);
} catch (DbException e) { rethrow(e); }
}
bool Database::queryString(const Transaction & txn, TableId table,
const string & key, string & data)
{

View File

@ -65,6 +65,8 @@ public:
void close();
TableId openTable(const string & table, bool sorted = false);
void closeTable(TableId table);
void deleteTable(const string & table);
bool queryString(const Transaction & txn, TableId table,
const string & key, string & data);

View File

@ -1034,8 +1034,12 @@ static void upgradeStore09()
nixDB.setString(txn, dbReferrers, addPrefix(*i, *j), "");
cerr << ".";
}
cerr << "\n";
txn.commit();
nixDB.closeTable(dbReferers);
nixDB.deleteTable("referers");
}