[tracker] Removing the database file when it's corrupted, just before we bail out and crash
- From: Jürg Billeter <juergbi src gnome org>
- To: svn-commits-list gnome org
- Subject: [tracker] Removing the database file when it's corrupted, just before we bail out and crash
- Date: Wed, 15 Apr 2009 12:10:38 -0400 (EDT)
commit 7820b8a54f2f5d021b999e11074f9592a6b0bc53
Author: Philip Van Hoof <philip codeminded be>
Date: Wed Apr 15 12:00:42 2009 +0200
Removing the database file when it's corrupted, just before we bail out and crash
---
src/libtracker-db/tracker-db-interface-sqlite.c | 10 +++++++---
1 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/src/libtracker-db/tracker-db-interface-sqlite.c b/src/libtracker-db/tracker-db-interface-sqlite.c
index 8693398..112d69b 100644
--- a/src/libtracker-db/tracker-db-interface-sqlite.c
+++ b/src/libtracker-db/tracker-db-interface-sqlite.c
@@ -18,7 +18,9 @@
* Boston, MA 02110-1301, USA.
*/
+#include <glib/gstdio.h>
#include <sqlite3.h>
+
#include "tracker-db-interface-sqlite.h"
#define TRACKER_DB_INTERFACE_SQLITE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TRACKER_TYPE_DB_INTERFACE_SQLITE, TrackerDBInterfaceSqlitePrivate))
@@ -556,9 +558,11 @@ create_result_set_from_stmt (TrackerDBInterfaceSqlite *interface,
g_hash_table_foreach (priv->statements, foreach_print_error, stmt);
if (result == SQLITE_CORRUPT) {
- g_critical ("Sqlite3 database:'%s' is corrupt, can not live without it",
- priv->filename);
- g_assert_not_reached ();
+ sqlite3_finalize (stmt);
+ sqlite3_close (priv->db);
+ g_unlink (priv->filename);
+ g_error ("SQLite database:'%s' has been corrupted and removed, it will be recreated on restart, shutting down now",
+ priv->filename);
}
if (!error) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]