[tracker/tracker-0.6] Added a preprocessor option for DB transactions
- From: Martyn James Russell <mr src gnome org>
- To: svn-commits-list gnome org
- Subject: [tracker/tracker-0.6] Added a preprocessor option for DB transactions
- Date: Thu, 14 May 2009 08:45:39 -0400 (EDT)
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 (¤t_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]