Siegfried Gevatter has proposed merging lp:~rainct/zeitgeist/961974 into
lp:zeitgeist.
Requested reviews:
Zeitgeist Framework Team (zeitgeist)
Related bugs:
Bug #961974 in Zeitgeist Framework: Recover from Zeitgeist database
corruption (detected at query time)
https://bugs.launchpad.net/zeitgeist/+bug/961974
For more details, see:
https://code.launchpad.net/~rainct/zeitgeist/961974/+merge/100946
--
https://code.launchpad.net/~rainct/zeitgeist/961974/+merge/100946
Your team Zeitgeist Framework Team is requested to review the proposed merge of
lp:~rainct/zeitgeist/961974 into lp:zeitgeist.
=== modified file 'extensions/histogram.vala'
--- extensions/histogram.vala 2011-12-07 12:17:29 +
+++ extensions/histogram.vala 2012-04-05 12:15:23 +
@@ -96,14 +96,8 @@
builder.add ((xu), t, count);
}
-
-if (rc != Sqlite.DONE)
-{
-string error_message = Error in get_histogram_data: +
-%d, %s.printf (rc, db.errmsg ());
-warning (%s, error_message);
-throw new EngineError.DATABASE_ERROR (error_message);
-}
+database.assert_query_success (rc, Error in get_histogram_data,
+Sqlite.DONE);
return builder.end ();
}
=== modified file 'src/db-reader.vala'
--- src/db-reader.vala 2012-03-19 19:56:38 +
+++ src/db-reader.vala 2012-04-05 12:15:23 +
@@ -55,13 +55,22 @@
database.set_deletion_callback (delete_from_cache);
db = database.database;
-interpretations_table = new TableLookup (database, interpretation);
-manifestations_table = new TableLookup (database, manifestation);
-mimetypes_table = new TableLookup (database, mimetype);
-actors_table = new TableLookup (database, actor);
+try
+{
+interpretations_table = new TableLookup (database, interpretation);
+manifestations_table = new TableLookup (database, manifestation);
+mimetypes_table = new TableLookup (database, mimetype);
+actors_table = new TableLookup (database, actor);
+}
+catch (EngineError err)
+{
+// FIXME: propagate this properly?
+critical (TableLookup initialization failed: %s, err.message);
+}
}
protected Event get_event_from_row (Sqlite.Statement stmt, uint32 event_id)
+throws EngineError
{
Event event = new Event ();
event.id = event_id;
@@ -88,6 +97,7 @@
}
protected Subject get_subject_from_row (Sqlite.Statement stmt)
+throws EngineError
{
Subject subject = new Subject ();
subject.uri = stmt.column_text (EventViewRows.SUBJECT_URI);
@@ -142,11 +152,7 @@
Subject subject = get_subject_from_row(stmt);
event.add_subject(subject);
}
-if (rc != Sqlite.DONE)
-{
-throw new EngineError.DATABASE_ERROR (Error: %d, %s\n,
-rc, db.errmsg ());
-}
+database.assert_query_success (rc, Error, Sqlite.DONE);
// Sort events according to the sequence of event_ids
var results = new GenericArrayEvent? ();
@@ -270,7 +276,7 @@
warning (error_message);
throw new EngineError.INVALID_ARGUMENT (error_message);
}
-
+
// complete the sort rule
bool time_asc = ResultType.is_sort_order_asc ((ResultType) result_type);
sql += timestamp %s.printf ((time_asc) ? ASC : DESC);
@@ -306,6 +312,7 @@
string error_message = Error in find_event_ids: %d, %s.printf (
rc, db.errmsg ());
warning (error_message);
+database.assert_not_corrupt (rc);
throw new EngineError.DATABASE_ERROR (error_message);
}
@@ -458,14 +465,7 @@
// for (int i=0; irelated_uris.length; i++)
//related_uris[i] = temp_related_uris[i];
-if (rc != Sqlite.DONE)
-{
-string error_message =
-Error in find_related_uris: %d, %s.printf (
-rc, db.errmsg ());
-warning (error_message);
-throw new EngineError.DATABASE_ERROR (error_message);
-}
+database.assert_query_success (rc, Error in find_related_uris);
var uri_counter = new HashTablestring, RelatedUri?(
str_hash, str_equal);
=== modified file 'src/engine.vala'
--- src/engine.vala 2012-03-14 14:26:11 +
+++ src/engine.vala 2012-04-05 12:15:23 +
@@ -241,6 +241,7 @@
if ((rc = insert_stmt.step()) != Sqlite.DONE) {
if (rc != Sqlite.CONSTRAINT)
{
+database.assert_not_corrupt (rc);
warning (SQL error: %d, %s\n, rc, db.errmsg ());
return 0