* Automatically delete the old referers table.
This commit is contained in:
parent
8463f27d8c
commit
d87549c1c7
3 changed files with 31 additions and 5 deletions
|
@ -292,11 +292,12 @@ void Database::close()
|
||||||
try {
|
try {
|
||||||
|
|
||||||
for (map<TableId, Db *>::iterator i = tables.begin();
|
for (map<TableId, Db *>::iterator i = tables.begin();
|
||||||
i != tables.end(); i++)
|
i != tables.end(); )
|
||||||
{
|
{
|
||||||
Db * db = i->second;
|
map<TableId, Db *>::iterator j = i;
|
||||||
db->close(DB_NOSYNC);
|
++j;
|
||||||
delete db;
|
closeTable(i->first);
|
||||||
|
i = j;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Do a checkpoint every 128 kilobytes, or every 5 minutes. */
|
/* 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,
|
bool Database::queryString(const Transaction & txn, TableId table,
|
||||||
const string & key, string & data)
|
const string & key, string & data)
|
||||||
{
|
{
|
||||||
|
|
|
@ -65,6 +65,8 @@ public:
|
||||||
void close();
|
void close();
|
||||||
|
|
||||||
TableId openTable(const string & table, bool sorted = false);
|
TableId openTable(const string & table, bool sorted = false);
|
||||||
|
void closeTable(TableId table);
|
||||||
|
void deleteTable(const string & table);
|
||||||
|
|
||||||
bool queryString(const Transaction & txn, TableId table,
|
bool queryString(const Transaction & txn, TableId table,
|
||||||
const string & key, string & data);
|
const string & key, string & data);
|
||||||
|
|
|
@ -1034,8 +1034,12 @@ static void upgradeStore09()
|
||||||
nixDB.setString(txn, dbReferrers, addPrefix(*i, *j), "");
|
nixDB.setString(txn, dbReferrers, addPrefix(*i, *j), "");
|
||||||
cerr << ".";
|
cerr << ".";
|
||||||
}
|
}
|
||||||
|
|
||||||
cerr << "\n";
|
cerr << "\n";
|
||||||
|
|
||||||
txn.commit();
|
txn.commit();
|
||||||
|
|
||||||
|
nixDB.closeTable(dbReferers);
|
||||||
|
|
||||||
|
nixDB.deleteTable("referers");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue