tracker r1751 - in branches/indexer-split: . src/libtracker-db src/tracker-indexer
- From: pvanhoof svn gnome org
- To: svn-commits-list gnome org
- Subject: tracker r1751 - in branches/indexer-split: . src/libtracker-db src/tracker-indexer
- Date: Tue, 24 Jun 2008 14:56:21 +0000 (UTC)
Author: pvanhoof
Date: Tue Jun 24 14:56:21 2008
New Revision: 1751
URL: http://svn.gnome.org/viewvc/tracker?rev=1751&view=rev
Log:
2008-06-24 Philip Van Hoof <pvanhoof gnome org>
* src/tracker-indexer/tracker-indexer.c:
* src/libtracker-db/tracker-db-manager.c:
* src/libtracker-db/tracker-db-manager.h:
First piece of the puzzle for transactions in the indexer
Modified:
branches/indexer-split/ChangeLog
branches/indexer-split/src/libtracker-db/tracker-db-manager.c
branches/indexer-split/src/libtracker-db/tracker-db-manager.h
branches/indexer-split/src/tracker-indexer/tracker-indexer.c
Modified: branches/indexer-split/src/libtracker-db/tracker-db-manager.c
==============================================================================
--- branches/indexer-split/src/libtracker-db/tracker-db-manager.c (original)
+++ branches/indexer-split/src/libtracker-db/tracker-db-manager.c Tue Jun 24 14:56:21 2008
@@ -2438,6 +2438,45 @@
}
TrackerDBInterface *
+tracker_db_manager_get_db_interfaces (gint num, ...)
+{
+ gint n_args;
+ va_list args;
+ TrackerDBInterface *connection = NULL;
+
+ va_start (args, num);
+ for (n_args = 1; n_args <= num; n_args++) {
+ TrackerDB db = va_arg (args, TrackerDB);
+
+ if (!connection) {
+ connection = tracker_db_interface_sqlite_new (dbs[db].abs_filename);
+ tracker_db_interface_set_procedure_table (connection,
+ prepared_queries);
+
+ /* You could set specific cache and page sizes for the
+ * indexer's INSERT connection here. */
+
+ db_set_params (connection,
+ dbs[db].cache_size,
+ dbs[db].page_size,
+ TRUE,
+ FALSE);
+
+ } else {
+ db_exec_no_reply (connection,
+ "ATTACH '%s' as '%s'",
+ dbs[db].abs_filename,
+ dbs[db].name);
+ }
+
+ }
+ va_end (args);
+
+ return connection;
+}
+
+
+TrackerDBInterface *
tracker_db_manager_get_db_interface (TrackerDB db)
{
g_return_val_if_fail (initialized != FALSE, NULL);
Modified: branches/indexer-split/src/libtracker-db/tracker-db-manager.h
==============================================================================
--- branches/indexer-split/src/libtracker-db/tracker-db-manager.h (original)
+++ branches/indexer-split/src/libtracker-db/tracker-db-manager.h Tue Jun 24 14:56:21 2008
@@ -57,6 +57,8 @@
TrackerDBInterface *
tracker_db_manager_get_db_interface (TrackerDB db);
TrackerDBInterface *
+ tracker_db_manager_get_db_interfaces (gint num, ...);
+TrackerDBInterface *
tracker_db_manager_get_db_interface_by_service (const gchar *service,
gboolean content);
TrackerDBInterface *
Modified: branches/indexer-split/src/tracker-indexer/tracker-indexer.c
==============================================================================
--- branches/indexer-split/src/tracker-indexer/tracker-indexer.c (original)
+++ branches/indexer-split/src/tracker-indexer/tracker-indexer.c Tue Jun 24 14:56:21 2008
@@ -342,7 +342,7 @@
priv->cache = tracker_db_manager_get_db_interface (TRACKER_DB_CACHE);
priv->common = tracker_db_manager_get_db_interface (TRACKER_DB_COMMON);
- priv->metadata = tracker_db_manager_get_db_interface (TRACKER_DB_FILE_METADATA);
+ priv->metadata = tracker_db_manager_get_db_interfaces (3, TRACKER_DB_COMMON, TRACKER_DB_CACHE, TRACKER_DB_FILE_METADATA);
priv->contents = tracker_db_manager_get_db_interface (TRACKER_DB_FILE_CONTENTS);
priv->timer = g_timer_new ();
@@ -487,15 +487,24 @@
service = tracker_ontology_get_service_type_by_name (service_type);
id = tracker_db_get_new_service_id (priv->common);
+ /* Begin of transaction point X */
+
+ /* If you ever need to remove this transaction, because it gets
+ * wrapped into a larger one, that's fine IF you indeed have a
+ * larger one in place that spans cache,common and the selected
+ * metadata database file */
+
+ tracker_db_interface_start_transaction (priv->metadata);
+
if (tracker_db_create_service (priv->metadata, id, service, info->path, metadata)) {
gchar *text;
guint32 eid;
- eid = tracker_db_get_new_event_id (priv->common);
+ eid = tracker_db_get_new_event_id (priv->metadata);
- tracker_db_create_event (priv->cache, eid, id, "Create");
+ tracker_db_create_event (priv->metadata, eid, id, "Create");
- tracker_db_increment_stats (priv->common, service);
+ tracker_db_increment_stats (priv->metadata, service);
index_metadata (indexer, id, service, metadata);
@@ -506,6 +515,10 @@
g_free (text);
}
}
+
+ tracker_db_interface_end_transaction (priv->metadata);
+
+ /* End of transaction point X */
g_hash_table_destroy (metadata);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]