[tracker/tracker-0.6] Added a preprocessor option for DB transactions



commit 80f92106cdd779642fac1a92d57ce0b6e3dd3144
Author: Martyn Russell <martyn imendio com>
Date:   Thu May 14 13:43:58 2009 +0100

    Added a preprocessor option for DB transactions
---
 src/libtracker-db/tracker-db-interface-sqlite.c |   14 +++-
 src/libtracker-db/tracker-db-interface.c        |   83 ++++++++++++++++++++++-
 src/libtracker-db/tracker-db-interface.h        |   28 +++++++-
 3 files changed, 117 insertions(+), 8 deletions(-)

diff --git a/src/libtracker-db/tracker-db-interface-sqlite.c b/src/libtracker-db/tracker-db-interface-sqlite.c
index 22f1221..b9c3989 100644
--- a/src/libtracker-db/tracker-db-interface-sqlite.c
+++ b/src/libtracker-db/tracker-db-interface-sqlite.c
@@ -19,6 +19,7 @@
  */
 
 #include <glib/gstdio.h>
+
 #include <sqlite3.h>
 
 #include "tracker-db-interface-sqlite.h"
@@ -72,7 +73,7 @@ G_DEFINE_TYPE_WITH_CODE (TrackerDBInterfaceSqlite, tracker_db_interface_sqlite,
 void 
 tracker_db_interface_sqlite_enable_shared_cache (void) 
 {
-  sqlite3_enable_shared_cache (1);
+	sqlite3_enable_shared_cache (1);
 }
 
 static GObject *
@@ -619,7 +620,11 @@ get_stored_stmt (TrackerDBInterfaceSqlite *db_interface,
 			return NULL;
 		}
 
-                /* g_debug ("Running procedure: '%s'", procedure); */
+                tracker_db_interface_debug (TRACKER_DB_INTERFACE (db_interface), 
+					    "[SP:'%s'] -- %s",
+					    procedure_name,
+					    procedure);
+
 		result = sqlite3_prepare_v2 (priv->db, procedure, -1, &stmt, NULL);
 
 		if (result == SQLITE_OK && stmt) {
@@ -696,7 +701,10 @@ tracker_db_interface_sqlite_execute_query (TrackerDBInterface  *db_interface,
 
 	priv = TRACKER_DB_INTERFACE_SQLITE_GET_PRIVATE (db_interface);
 
-        /* g_debug ("Running query: '%s'", query); */
+	tracker_db_interface_debug (TRACKER_DB_INTERFACE (db_interface), 
+				    "[Q] -- %s",
+				    query);
+
 	retval = sqlite3_prepare_v2 (priv->db, query, -1, &stmt, NULL);
 
 	if (retval != SQLITE_OK) {
diff --git a/src/libtracker-db/tracker-db-interface.c b/src/libtracker-db/tracker-db-interface.c
index 0dfdb96..7cbfbc6 100644
--- a/src/libtracker-db/tracker-db-interface.c
+++ b/src/libtracker-db/tracker-db-interface.c
@@ -18,7 +18,12 @@
  * Boston, MA  02110-1301, USA.
  */
 
+#include <stdio.h>
 #include <string.h>
+#include <errno.h>
+
+#include <glib.h>
+#include <glib/gstdio.h>
 
 #include <gobject/gvaluecollector.h>
 
@@ -40,6 +45,13 @@ enum {
 	PROP_COLUMNS
 };
 
+#ifndef DISABLE_DEBUG
+
+static FILE *log_fd;
+static gchar *log_filename;
+
+#endif /* DISABLE_DEBUG */
+
 G_DEFINE_TYPE (TrackerDBResultSet, tracker_db_result_set, G_TYPE_OBJECT)
 
 GQuark
@@ -216,6 +228,75 @@ tracker_db_result_set_init (TrackerDBResultSet *result_set)
 {
 }
 
+#ifndef DISABLE_DEBUG
+
+#include <glib/gprintf.h>
+
+void
+tracker_db_interface_debug_impl (TrackerDBInterface *iface,
+				 const gchar        *msg, 
+				 ...)
+{
+        va_list args;
+	time_t now;
+	gchar time_str[64];
+	struct tm *local_time;
+	GTimeVal current_time;
+
+	if (!log_filename) {
+		/* Set up */
+		gchar *str;
+		
+		str = g_strdup_printf ("tracker-%s-db-interface.log", 
+				       g_get_application_name ());
+		log_filename =
+			g_build_filename (g_get_user_data_dir (),
+					  "tracker",
+					  str,
+					  NULL);
+		g_free (str);
+		
+		g_unlink (log_filename);
+		
+		log_fd = g_fopen (log_filename, "a");
+		if (!log_fd) {
+			const gchar *error_string;
+			
+			error_string = g_strerror (errno);
+			g_fprintf (stderr,
+				   "Could not open log:'%s', %s\n",
+				   log_filename,
+				   error_string);
+			g_fprintf (stderr,
+				   "All logging will go to stderr\n");
+			
+			return;
+		}
+	}
+
+	if (!log_fd) {
+		return;
+	}
+
+	g_get_current_time (&current_time);
+
+	now = time ((time_t *) NULL);
+	local_time = localtime (&now);
+	strftime (time_str, 64, "%d %b %Y, %H:%M:%S:", local_time);
+
+	g_fprintf (log_fd, "%s ", time_str);
+
+        va_start (args, msg);
+        g_vfprintf (log_fd, msg, args);
+        va_end (args);
+
+        g_fprintf (log_fd, "\n");
+
+	fflush (log_fd);
+}
+
+#endif /* DISABLE_DEBUG */
+
 static TrackerDBResultSet *
 ensure_result_set_state (TrackerDBResultSet *result_set)
 {
@@ -261,8 +342,6 @@ tracker_db_interface_execute_vquery (TrackerDBInterface  *interface,
 	return ensure_result_set_state (result_set);
 }
 
-
-
 TrackerDBResultSet *
 tracker_db_interface_execute_query (TrackerDBInterface	*interface,
 				    GError	       **error,
diff --git a/src/libtracker-db/tracker-db-interface.h b/src/libtracker-db/tracker-db-interface.h
index 14964ba..71952fc 100644
--- a/src/libtracker-db/tracker-db-interface.h
+++ b/src/libtracker-db/tracker-db-interface.h
@@ -70,6 +70,28 @@ struct TrackerDBInterfaceIface {
 
 };
 
+#undef DISABLE_DEBUG
+
+#ifdef G_HAVE_ISO_VARARGS
+#  ifdef DISABLE_DEBUG
+#    define tracker_db_interface_debug(iface, ...)
+#  else
+#    define tracker_db_interface_debug(iface, ...) tracker_db_interface_debug_impl (iface, __VA_ARGS__)
+#  endif
+#elif defined(G_HAVE_GNUC_VARARGS)
+#  if DISABLE_DEBUG
+#    define tracker_db_interface_debug(iface, fmt...)
+#  else
+#    define tracker_db_interface_debug(iface, fmt...) tracker_db_interface_impl(iface, fmt)
+#  endif
+#else
+#  if DISABLE_DEBUG
+#    define tracker_db_interface_debug(x)
+#  else
+#    define tracker_db_interface_debug tracker_db_interface_impl
+#  endif
+#endif
+
 struct TrackerDBResultSet {
 	GObject parent_class;
 };
@@ -78,15 +100,16 @@ struct TrackerDBResultSetClass {
 	GObjectClass parent_class;
 };
 
-
 GQuark tracker_db_interface_error_quark (void);
 
 GType tracker_db_interface_get_type (void);
 GType tracker_db_result_set_get_type (void);
 GType tracker_db_blob_get_type (void);
 
-
 /* Functions to create queries/procedures */
+void                    tracker_db_interface_debug_impl          (TrackerDBInterface   *iface,
+								  const gchar          *msg, 
+								  ...);
 TrackerDBResultSet *	tracker_db_interface_execute_vquery	 (TrackerDBInterface   *interface,
 								  GError	     **error,
 								  const gchar	       *query,
@@ -137,7 +160,6 @@ gboolean		  tracker_db_result_set_iter_next      (TrackerDBResultSet *result_set
 guint			  tracker_db_result_set_get_n_columns  (TrackerDBResultSet *result_set);
 guint			  tracker_db_result_set_get_n_rows     (TrackerDBResultSet *result_set);
 
-
 G_END_DECLS
 
 #endif /* __TRACKER_DB_INTERFACE_H__ */



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