[tracker/wip/carlosg/anonymous-nodes: 13/24] libtracker-data: Return int64 when creating new blank node
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker/wip/carlosg/anonymous-nodes: 13/24] libtracker-data: Return int64 when creating new blank node
- Date: Fri, 8 Oct 2021 09:40:54 +0000 (UTC)
commit 4e35396717b76bc06b6c7559132020515b6a4859
Author: Carlos Garnacho <carlosg gnome org>
Date: Sat Sep 25 13:35:41 2021 +0200
libtracker-data: Return int64 when creating new blank node
The URN is no longer relevant in callers, avoid the small roundtrip
to create a blank node, and get its ID from the returned URN.
src/libtracker-data/tracker-data-update.c | 34 +++++++++++++++----------------
src/libtracker-data/tracker-data-update.h | 5 ++---
2 files changed, 19 insertions(+), 20 deletions(-)
---
diff --git a/src/libtracker-data/tracker-data-update.c b/src/libtracker-data/tracker-data-update.c
index 9bf38e806..21fee5316 100644
--- a/src/libtracker-data/tracker-data-update.c
+++ b/src/libtracker-data/tracker-data-update.c
@@ -1676,23 +1676,23 @@ get_bnode_for_resource (GHashTable *bnodes,
TrackerResource *resource,
GError **error)
{
- TrackerDBInterface *iface;
const gchar *identifier;
- gchar *bnode;
+ gint64 *value, bnode_id;
identifier = tracker_resource_get_identifier (resource);
- bnode = g_hash_table_lookup (bnodes, identifier);
- if (bnode)
- return query_resource_id (data, bnode, error);
+ value = g_hash_table_lookup (bnodes, identifier);
+ if (value)
+ return *value;
- iface = tracker_data_manager_get_writable_db_interface (data->manager);
- bnode = tracker_data_update_ensure_new_bnode (data, iface, error);
- if (!bnode)
+ bnode_id = tracker_data_generate_bnode (data, error);
+ if (bnode_id == 0)
return 0;
- g_hash_table_insert (bnodes, g_strdup (identifier), bnode);
+ value = g_new0 (gint64, 1);
+ *value = bnode_id;
+ g_hash_table_insert (bnodes, g_strdup (identifier), value);
- return query_resource_id (data, bnode, error);
+ return bnode_id;
}
static gboolean
@@ -3183,11 +3183,11 @@ tracker_data_update_resource (TrackerData *data,
return retval;
}
-gchar *
-tracker_data_update_ensure_new_bnode (TrackerData *data,
- TrackerDBInterface *iface,
- GError **error)
+gint64
+tracker_data_generate_bnode (TrackerData *data,
+ GError **error)
{
+ TrackerDBInterface *iface;
TrackerDBStatement *stmt = NULL;
GError *inner_error = NULL;
gchar *uuid, *key;
@@ -3200,7 +3200,7 @@ tracker_data_update_ensure_new_bnode (TrackerData *data,
"INSERT INTO Resource (Uri, BlankNode) VALUES (?, ?)");
if (!stmt) {
g_propagate_error (error, inner_error);
- return NULL;
+ return 0;
}
while (TRUE) {
@@ -3226,7 +3226,7 @@ tracker_data_update_ensure_new_bnode (TrackerData *data,
if (inner_error) {
g_propagate_error (error, inner_error);
- return NULL;
+ return 0;
}
id = tracker_db_interface_sqlite_get_last_insert_id (iface);
@@ -3236,5 +3236,5 @@ tracker_data_update_ensure_new_bnode (TrackerData *data,
g_hash_table_insert (data->update_buffer.resource_cache, key, value);
g_hash_table_add (data->update_buffer.new_resources, value);
- return uuid;
+ return id;
}
diff --git a/src/libtracker-data/tracker-data-update.h b/src/libtracker-data/tracker-data-update.h
index 123dbf532..2c26f3c4d 100644
--- a/src/libtracker-data/tracker-data-update.h
+++ b/src/libtracker-data/tracker-data-update.h
@@ -140,9 +140,8 @@ gboolean tracker_data_update_resource (TrackerData *data,
gint64 tracker_data_update_ensure_resource (TrackerData *data,
const gchar *uri,
GError **error);
-gchar * tracker_data_update_ensure_new_bnode (TrackerData *data,
- TrackerDBInterface *iface,
- GError **error);
+gint64 tracker_data_generate_bnode (TrackerData *data,
+ GError **error);
GType tracker_data_get_type (void) G_GNUC_CONST;
TrackerData * tracker_data_new (TrackerDataManager *manager);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]