[Zeitgeist] [Merge] lp:~rainct/zeitgeist/rebuild-fts-on-new-db into lp:zeitgeist

2012-04-06 Thread noreply
The proposal to merge lp:~rainct/zeitgeist/rebuild-fts-on-new-db into 
lp:zeitgeist has been updated.

Status: Needs review = Merged

For more details, see:
https://code.launchpad.net/~rainct/zeitgeist/rebuild-fts-on-new-db/+merge/101024
-- 
https://code.launchpad.net/~rainct/zeitgeist/rebuild-fts-on-new-db/+merge/101024
Your team Zeitgeist Framework Team is subscribed to branch lp:zeitgeist.

___
Mailing list: https://launchpad.net/~zeitgeist
Post to : zeitgeist@lists.launchpad.net
Unsubscribe : https://launchpad.net/~zeitgeist
More help   : https://help.launchpad.net/ListHelp


[Zeitgeist] [Merge] lp:~rainct/zeitgeist/rebuild-fts-on-new-db into lp:zeitgeist

2012-04-05 Thread Siegfried Gevatter
Siegfried Gevatter has proposed merging 
lp:~rainct/zeitgeist/rebuild-fts-on-new-db into lp:zeitgeist.

Requested reviews:
  Zeitgeist Framework Team (zeitgeist)

For more details, see:
https://code.launchpad.net/~rainct/zeitgeist/rebuild-fts-on-new-db/+merge/101024
-- 
https://code.launchpad.net/~rainct/zeitgeist/rebuild-fts-on-new-db/+merge/101024
Your team Zeitgeist Framework Team is requested to review the proposed merge of 
lp:~rainct/zeitgeist/rebuild-fts-on-new-db into lp:zeitgeist.
=== modified file 'extensions/fts++/controller.cpp'
--- extensions/fts++/controller.cpp	2012-04-03 18:40:44 +
+++ extensions/fts++/controller.cpp	2012-04-05 19:10:22 +
@@ -17,6 +17,8 @@
  */
 
 #include controller.h
+#include string
+#include sstream
 
 namespace ZeitgeistFTS {
 
@@ -81,6 +83,12 @@
 
 // Set the db metadata key only once we're done
 PushTask (new MetadataTask (fts_index_version, INDEX_VERSION));
+gint64 zg_creation_date = indexer-GetZeitgeistCreationDate ();
+std::stringstream tmpstream;
+std::string zg_creation_date_str;
+tmpstream  zg_creation_date;
+tmpstream  zg_creation_date_str;
+PushTask (new MetadataTask (zg_db_creation_date, zg_creation_date_str));
   }
 
   g_object_unref (time_range);

=== modified file 'extensions/fts++/indexer.cpp'
--- extensions/fts++/indexer.cpp	2012-04-03 18:40:44 +
+++ extensions/fts++/indexer.cpp	2012-04-05 19:10:22 +
@@ -23,6 +23,8 @@
 #include xapian.h
 #include queue
 #include vector
+#include string
+#include sstream
 
 #include gio/gio.h
 #include gio/gdesktopappinfo.h
@@ -146,6 +148,14 @@
   }
 }
 
+gint64 Indexer::GetZeitgeistCreationDate ()
+{
+  ZeitgeistSQLiteDatabase *database = zeitgeist_db_reader_get_database (
+  zg_reader);
+  return zeitgeist_sq_lite_database_schema_get_creation_date (
+  database-database);
+}
+
 /**
  * Returns true if and only if the index is good.
  * Otherwise the index should be rebuild.
@@ -164,6 +174,28 @@
 return false;
   }
 
+  // Get stored Zeitgeist DB creation date
+  gint64 metadata_date;
+  std::string metadata_date_str (db-get_metadata (zg_db_creation_date));
+  if (metadata_date_str == )
+metadata_date = -1;
+  else
+  {
+std::stringstream tmpstream;
+tmpstream  metadata_date_str;
+tmpstream  metadata_date;
+  }
+
+  // In case the Zeitgeist DB is newer than Xapian, we need to re-build.
+  // This may happen if the Zeitgeist DB gets corrupt and is re-created
+  // from scratch.
+  gint64 database_creation_date = GetZeitgeistCreationDate ();
+  if (database_creation_date  metadata_date)
+  {
+g_message (Zeitgeist database has been replaced. Doing full rebuild);
+return false;
+  }
+
   return true;
 }
 

=== modified file 'extensions/fts++/indexer.h'
--- extensions/fts++/indexer.h	2012-04-03 19:01:28 +
+++ extensions/fts++/indexer.h	2012-04-05 19:10:22 +
@@ -80,6 +80,7 @@
   void IndexEvent (ZeitgeistEvent *event);
   void DeleteEvent (guint32 event_id);
   void SetDbMetadata (std::string const key, std::string const value);
+  gint64 GetZeitgeistCreationDate ();
 
   GPtrArray* Search (const gchar *search,
  ZeitgeistTimeRange *time_range,

=== modified file 'src/sql-schema.vala'
--- src/sql-schema.vala	2012-04-05 12:12:49 +
+++ src/sql-schema.vala	2012-04-05 19:10:22 +
@@ -38,6 +38,8 @@
 public const string CORE_SCHEMA = core;
 public const int CORE_SCHEMA_VERSION = 6;
 
+private const string DATABASE_CREATION = database_creation;
+
 public static void ensure_schema (Sqlite.Database database)
 throws EngineError
 {
@@ -48,6 +50,11 @@
 {
 // most likely a new DB
 create_schema (database);
+
+// set database creation date
+var schema_sql = INSERT INTO schema_version VALUES ('%s', %l64d)
+.printf (DATABASE_CREATION, Timestamp.now ());
+exec_query (database, schema_sql);
 }
 else if (schema_version == 4 || schema_version == 5)
 {
@@ -123,28 +130,44 @@
 public static int get_schema_version (Sqlite.Database database)
 throws EngineError
 {
-  var sql = SELECT version FROM schema_version WHERE schema='core';
-  int schema_version = -1;
-  database.exec (sql,
-  (n_cols, values, column_names) =
-  {
-  if (values[0] != null)
-  {
-  schema_version = int.parse (values[0]);
-  }
-  return 0;
-  }, null);
-
-  // we don't really care about the return value of exec, the result
-  // will be -1 if something went wrong anyway
-  debug (schema_version is %d, schema_version);
-
-  if (schema_version  -1)
-  {
-  throw new EngineError.DATABASE_CORRUPT (
-  Database corruption flag

Re: [Zeitgeist] [Merge] lp:~rainct/zeitgeist/rebuild-fts-on-new-db into lp:zeitgeist

2012-04-05 Thread Michal Hruby
Review: Needs Fixing

114 +var schema_sql = INSERT INTO schema_version VALUES 
('%s', %l64d)

Let's use int64.FORMAT here.
-- 
https://code.launchpad.net/~rainct/zeitgeist/rebuild-fts-on-new-db/+merge/101024
Your team Zeitgeist Framework Team is subscribed to branch lp:zeitgeist.

___
Mailing list: https://launchpad.net/~zeitgeist
Post to : zeitgeist@lists.launchpad.net
Unsubscribe : https://launchpad.net/~zeitgeist
More help   : https://help.launchpad.net/ListHelp


Re: [Zeitgeist] [Merge] lp:~rainct/zeitgeist/rebuild-fts-on-new-db into lp:zeitgeist

2012-04-05 Thread Michal Hruby
Also

74  +  if (database_creation_date  metadata_date)

 database_creation_date = 0 should be added
-- 
https://code.launchpad.net/~rainct/zeitgeist/rebuild-fts-on-new-db/+merge/101024
Your team Zeitgeist Framework Team is subscribed to branch lp:zeitgeist.

___
Mailing list: https://launchpad.net/~zeitgeist
Post to : zeitgeist@lists.launchpad.net
Unsubscribe : https://launchpad.net/~zeitgeist
More help   : https://help.launchpad.net/ListHelp


Re: [Zeitgeist] [Merge] lp:~rainct/zeitgeist/rebuild-fts-on-new-db into lp:zeitgeist

2012-04-05 Thread Siegfried Gevatter
OK, updated.

 Also, shouldn't we insert the schema row also when upgrading a DB from ver 
 4/5?
  database_creation_date = 0 should be added

Nope, -1 works just fine and saves us having to bump the schema version again 
for nothing.
-- 
https://code.launchpad.net/~rainct/zeitgeist/rebuild-fts-on-new-db/+merge/101024
Your team Zeitgeist Framework Team is subscribed to branch lp:zeitgeist.

___
Mailing list: https://launchpad.net/~zeitgeist
Post to : zeitgeist@lists.launchpad.net
Unsubscribe : https://launchpad.net/~zeitgeist
More help   : https://help.launchpad.net/ListHelp


Re: [Zeitgeist] [Merge] lp:~rainct/zeitgeist/rebuild-fts-on-new-db into lp:zeitgeist

2012-04-05 Thread Michal Hruby
Review: Needs Fixing

24  +#include sstream

Remove pls.

50  +  if (metadata_date_str == )

if (metadata_date_str.empty())

52  +  else
53  +  {
54  +std::stringstream tmpstream;
55  +tmpstream  metadata_date_str;
56  +tmpstream  metadata_date;
57  +  }

metadata_date = g_ascii_strtoll (metadata_date_str.c_str (), NULL, 0);
-- 
https://code.launchpad.net/~rainct/zeitgeist/rebuild-fts-on-new-db/+merge/101024
Your team Zeitgeist Framework Team is subscribed to branch lp:zeitgeist.

___
Mailing list: https://launchpad.net/~zeitgeist
Post to : zeitgeist@lists.launchpad.net
Unsubscribe : https://launchpad.net/~zeitgeist
More help   : https://help.launchpad.net/ListHelp