[tracker/tracker-store-queue] tracker-store: Fix transaction handling for non-batch updates



commit 72ca3a18a9377a5d69564ee05ae3a07dec2f14f0
Author: Jürg Billeter <j bitron ch>
Date:   Tue May 26 13:59:09 2009 +0200

    tracker-store: Fix transaction handling for non-batch updates
---
 src/tracker-store/tracker-store.c |   36 ++++++++++++++++++++++++++++++++++++
 1 files changed, 36 insertions(+), 0 deletions(-)

diff --git a/src/tracker-store/tracker-store.c b/src/tracker-store/tracker-store.c
index a215a03..eb3521b 100644
--- a/src/tracker-store/tracker-store.c
+++ b/src/tracker-store/tracker-store.c
@@ -361,6 +361,18 @@ void
 tracker_store_sparql_update (const gchar *sparql, 
                              GError     **error)
 {
+	TrackerStorePrivate *private;
+
+	private = g_static_private_get (&private_key);
+	g_return_if_fail (private != NULL);
+
+	if (private->batch_mode) {
+		/* commit pending batch items */
+		tracker_data_commit_transaction ();
+		private->batch_mode = FALSE;
+		private->batch_count = 0;
+	}
+
 	tracker_data_update_sparql (sparql, error);
 }
 
@@ -434,6 +446,18 @@ tracker_store_insert_statement (const gchar   *subject,
                                 const gchar   *predicate,
                                 const gchar   *object)
 {
+	TrackerStorePrivate *private;
+
+	private = g_static_private_get (&private_key);
+	g_return_if_fail (private != NULL);
+
+	if (private->batch_mode) {
+		/* commit pending batch items */
+		tracker_data_commit_transaction ();
+		private->batch_mode = FALSE;
+		private->batch_count = 0;
+	}
+
 	tracker_data_insert_statement (subject, predicate, object);
 }
 
@@ -442,6 +466,18 @@ tracker_store_delete_statement (const gchar   *subject,
                                 const gchar   *predicate,
                                 const gchar   *object)
 {
+	TrackerStorePrivate *private;
+
+	private = g_static_private_get (&private_key);
+	g_return_if_fail (private != NULL);
+
+	if (private->batch_mode) {
+		/* commit pending batch items */
+		tracker_data_commit_transaction ();
+		private->batch_mode = FALSE;
+		private->batch_count = 0;
+	}
+
 	tracker_data_delete_statement (subject, predicate, object);
 }
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]