~NavDataCachePrivate()
{
- BOOST_FOREACH(sqlite3_stmt_ptr stmt, prepared) {
- sqlite3_finalize(stmt);
- }
- prepared.clear();
-
- sqlite3_close(db);
+ close();
}
void init()
prepareQueries();
}
+ void close()
+ {
+ BOOST_FOREACH(sqlite3_stmt_ptr stmt, prepared) {
+ sqlite3_finalize(stmt);
+ }
+ prepared.clear();
+ sqlite3_close(db);
+ }
+
void checkCacheFile()
{
SG_LOG(SG_NAVCACHE, SG_INFO, "running DB integrity check");
void NavDataCache::doRebuild()
{
try {
- Transaction txn(this);
- d->runSQL("DELETE FROM positioned");
- d->runSQL("DELETE FROM airport");
- d->runSQL("DELETE FROM runway");
- d->runSQL("DELETE FROM navaid");
- d->runSQL("DELETE FROM comm");
- d->runSQL("DELETE FROM octree");
- d->runSQL("DELETE FROM airway");
- d->runSQL("DELETE FROM airway_edge");
- d->runSQL("DELETE FROM taxi_node");
- d->runSQL("DELETE FROM parking");
- d->runSQL("DELETE FROM groundnet_edge");
- d->runSQL("DELETE FROM stat_cache");
+ d->close(); // completely close the sqlite object
+ d->path.remove(); // remove the file on disk
+ d->init(); // star again from scratch
+ Transaction txn(this);
// initialise the root octree node
d->runSQL("INSERT INTO octree (rowid, children) VALUES (1, 0)");