* 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);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1038,4 +1038,8 @@ static void upgradeStore09()
 | 
				
			||||||
    cerr << "\n";
 | 
					    cerr << "\n";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    txn.commit();
 | 
					    txn.commit();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    nixDB.closeTable(dbReferers);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    nixDB.deleteTable("referers");
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue