summaryrefslogtreecommitdiff
path: root/src/libtracker-data/tracker-db-interface-sqlite.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libtracker-data/tracker-db-interface-sqlite.c')
-rw-r--r--src/libtracker-data/tracker-db-interface-sqlite.c45
1 files changed, 30 insertions, 15 deletions
diff --git a/src/libtracker-data/tracker-db-interface-sqlite.c b/src/libtracker-data/tracker-db-interface-sqlite.c
index 0fd28c066..260b81d87 100644
--- a/src/libtracker-data/tracker-db-interface-sqlite.c
+++ b/src/libtracker-data/tracker-db-interface-sqlite.c
@@ -2341,7 +2341,7 @@ tracker_db_interface_sqlite_fts_update_text (TrackerDBInterface *db_interface,
stmt = tracker_db_interface_create_statement (db_interface,
TRACKER_DB_STATEMENT_CACHE_TYPE_UPDATE,
&error,
- "%s", query);
+ query);
g_free (query);
if (!stmt || error) {
@@ -2395,7 +2395,7 @@ tracker_db_interface_sqlite_fts_delete_text (TrackerDBInterface *db_interface,
stmt = tracker_db_interface_create_statement (db_interface,
TRACKER_DB_STATEMENT_CACHE_TYPE_UPDATE,
&error,
- "%s", query);
+ query);
g_free (query);
if (!stmt || error) {
@@ -2434,7 +2434,7 @@ tracker_db_interface_sqlite_fts_delete_id (TrackerDBInterface *db_interface,
stmt = tracker_db_interface_create_statement (db_interface,
TRACKER_DB_STATEMENT_CACHE_TYPE_UPDATE,
&error,
- "%s", query);
+ query);
g_free (query);
if (!stmt || error) {
@@ -2785,35 +2785,27 @@ TrackerDBStatement *
tracker_db_interface_create_statement (TrackerDBInterface *db_interface,
TrackerDBStatementCacheType cache_type,
GError **error,
- const gchar *query,
- ...)
+ const gchar *query)
{
TrackerDBStatement *stmt = NULL;
- va_list args;
- gchar *full_query;
g_return_val_if_fail (TRACKER_IS_DB_INTERFACE (db_interface), NULL);
- va_start (args, query);
- full_query = g_strdup_vprintf (query, args);
- va_end (args);
-
tracker_db_interface_lock (db_interface);
if (cache_type != TRACKER_DB_STATEMENT_CACHE_TYPE_NONE) {
stmt = tracker_db_interface_lru_lookup (db_interface, &cache_type,
- full_query);
+ query);
}
if (!stmt) {
sqlite3_stmt *sqlite_stmt;
sqlite_stmt = tracker_db_interface_prepare_stmt (db_interface,
- full_query,
+ query,
error);
if (!sqlite_stmt) {
tracker_db_interface_unlock (db_interface);
- g_free (full_query);
return NULL;
}
@@ -2831,13 +2823,36 @@ tracker_db_interface_create_statement (TrackerDBInterface *db_interfac
}
stmt->stmt_is_owned = TRUE;
- g_free (full_query);
tracker_db_interface_unlock (db_interface);
return g_object_ref_sink (stmt);
}
+TrackerDBStatement *
+tracker_db_interface_create_vstatement (TrackerDBInterface *db_interface,
+ TrackerDBStatementCacheType cache_type,
+ GError **error,
+ const gchar *query,
+ ...)
+{
+ TrackerDBStatement *stmt;
+ va_list args;
+ gchar *full_query;
+
+ g_return_val_if_fail (TRACKER_IS_DB_INTERFACE (db_interface), NULL);
+
+ va_start (args, query);
+ full_query = g_strdup_vprintf (query, args);
+ va_end (args);
+
+ stmt = tracker_db_interface_create_statement (db_interface, cache_type,
+ error, full_query);
+ g_free (full_query);
+
+ return stmt;
+}
+
static gboolean
execute_stmt (TrackerDBInterface *interface,
sqlite3_stmt *stmt,