summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2022-01-16 16:20:22 +0100
committerCarlos Garnacho <carlosg@gnome.org>2022-02-10 23:36:58 +0100
commit85064638967f6261165dd9a71b60c966b58ff0f5 (patch)
treef0205aeb71a1be9d0c2ff5c429b7e2899177431c
parente312cb33bd513bf463c8bde5a055b5e6463ef0aa (diff)
downloadtracker-85064638967f6261165dd9a71b60c966b58ff0f5.tar.gz
libtracker-data: Store graph IDs as TrackerRowid
This was stored and used as ints in various places, move them to TrackerRowid.
-rw-r--r--src/libtracker-data/tracker-data-manager.c25
-rw-r--r--src/libtracker-data/tracker-data-manager.h2
-rw-r--r--src/libtracker-data/tracker-sparql.c39
3 files changed, 38 insertions, 28 deletions
diff --git a/src/libtracker-data/tracker-data-manager.c b/src/libtracker-data/tracker-data-manager.c
index 640f1de87..1fbd45bac 100644
--- a/src/libtracker-data/tracker-data-manager.c
+++ b/src/libtracker-data/tracker-data-manager.c
@@ -172,7 +172,7 @@ tracker_data_manager_initialize_graphs (TrackerDataManager *manager,
graphs = g_hash_table_new_full (g_str_hash,
g_str_equal,
g_free,
- NULL);
+ (GDestroyNotify) tracker_rowid_free);
stmt = tracker_db_interface_create_statement (iface, TRACKER_DB_STATEMENT_CACHE_TYPE_NONE, error,
"SELECT ID, Uri FROM Resource WHERE ID IN (SELECT ID FROM Graph)");
@@ -191,13 +191,13 @@ tracker_data_manager_initialize_graphs (TrackerDataManager *manager,
while (tracker_db_cursor_iter_next (cursor, NULL, NULL)) {
const gchar *name;
- gint id;
+ TrackerRowid id;
id = tracker_db_cursor_get_int (cursor, 0);
name = tracker_db_cursor_get_string (cursor, 1, NULL);
g_hash_table_insert (graphs, g_strdup (name),
- GINT_TO_POINTER (id));
+ tracker_rowid_copy (&id));
}
g_object_unref (cursor);
@@ -4057,14 +4057,17 @@ update_attached_databases (TrackerDBInterface *iface,
g_hash_table_remove (data_manager->graphs, name);
*changed = TRUE;
} else if (tracker_db_cursor_get_int (cursor, 2)) {
+ TrackerRowid id;
+
if (!tracker_db_manager_attach_database (data_manager->db_manager,
iface, name, FALSE, error)) {
retval = FALSE;
break;
}
+ id = tracker_db_cursor_get_int (cursor, 3);
g_hash_table_insert (data_manager->graphs, g_strdup (name),
- GINT_TO_POINTER (tracker_db_cursor_get_int (cursor, 3)));
+ tracker_rowid_copy (&id));
*changed = TRUE;
}
}
@@ -5058,11 +5061,11 @@ copy_graphs (GHashTable *graphs)
copy = g_hash_table_new_full (g_str_hash,
g_str_equal,
g_free,
- NULL);
+ (GDestroyNotify) tracker_rowid_free);
g_hash_table_iter_init (&iter, graphs);
while (g_hash_table_iter_next (&iter, &key, &value))
- g_hash_table_insert (copy, g_strdup (key), value);
+ g_hash_table_insert (copy, g_strdup (key), tracker_rowid_copy (value));
return copy;
}
@@ -5073,8 +5076,7 @@ tracker_data_manager_create_graph (TrackerDataManager *manager,
GError **error)
{
TrackerDBInterface *iface;
- gint id;
-
+ TrackerRowid id;
iface = tracker_db_manager_get_writable_db_interface (manager->db_manager);
@@ -5096,7 +5098,8 @@ tracker_data_manager_create_graph (TrackerDataManager *manager,
if (!manager->transaction_graphs)
manager->transaction_graphs = copy_graphs (manager->graphs);
- g_hash_table_insert (manager->transaction_graphs, g_strdup (name), GINT_TO_POINTER (id));
+ g_hash_table_insert (manager->transaction_graphs, g_strdup (name),
+ tracker_rowid_copy (&id));
return TRUE;
@@ -5137,13 +5140,13 @@ tracker_data_manager_drop_graph (TrackerDataManager *manager,
return TRUE;
}
-gint
+TrackerRowid
tracker_data_manager_find_graph (TrackerDataManager *manager,
const gchar *name,
gboolean in_transaction)
{
GHashTable *graphs;
- gint graph_id;
+ TrackerRowid graph_id;
graphs = tracker_data_manager_get_graphs (manager, in_transaction);
graph_id = GPOINTER_TO_UINT (g_hash_table_lookup (graphs, name));
diff --git a/src/libtracker-data/tracker-data-manager.h b/src/libtracker-data/tracker-data-manager.h
index 130695421..c132f2b0c 100644
--- a/src/libtracker-data/tracker-data-manager.h
+++ b/src/libtracker-data/tracker-data-manager.h
@@ -99,7 +99,7 @@ gboolean tracker_data_manager_copy_graph (TrackerDataManager *mana
GHashTable * tracker_data_manager_get_graphs (TrackerDataManager *manager,
gboolean in_transaction);
-gint tracker_data_manager_find_graph (TrackerDataManager *manager,
+TrackerRowid tracker_data_manager_find_graph (TrackerDataManager *manager,
const gchar *name,
gboolean in_transaction);
diff --git a/src/libtracker-data/tracker-sparql.c b/src/libtracker-data/tracker-sparql.c
index 2931c18d7..d02686360 100644
--- a/src/libtracker-data/tracker-sparql.c
+++ b/src/libtracker-data/tracker-sparql.c
@@ -716,7 +716,7 @@ tracker_sparql_get_effective_graphs (TrackerSparql *sparql)
g_hash_table_new_full (g_str_hash,
g_str_equal,
g_free,
- NULL);
+ (GDestroyNotify) tracker_rowid_free);
for (i = 0; i < sparql->policy.graphs->len; i++) {
gpointer key, value;
@@ -725,7 +725,8 @@ tracker_sparql_get_effective_graphs (TrackerSparql *sparql)
g_ptr_array_index (sparql->policy.graphs, i),
&key, &value)) {
g_hash_table_insert (sparql->policy.filtered_graphs,
- g_strdup (key), value);
+ g_strdup (key),
+ tracker_rowid_copy (value));
}
}
}
@@ -761,7 +762,7 @@ _append_union_graph_with_clause (TrackerSparql *sparql,
const gchar *properties,
gint n_properties)
{
- gpointer graph_name, graph_id;
+ gpointer graph_name, value;
GHashTable *graphs;
GHashTableIter iter;
@@ -779,11 +780,13 @@ _append_union_graph_with_clause (TrackerSparql *sparql,
}
g_hash_table_iter_init (&iter, graphs);
- while (g_hash_table_iter_next (&iter, &graph_name, &graph_id)) {
+ while (g_hash_table_iter_next (&iter, &graph_name, &value)) {
+ TrackerRowid *graph_id = value;
+
_append_string_printf (sparql,
- "UNION ALL SELECT ID, %s %d AS graph FROM \"%s\".\"%s\" ",
+ "UNION ALL SELECT ID, %s %" G_GINT64_FORMAT " AS graph FROM \"%s\".\"%s\" ",
properties,
- GPOINTER_TO_INT (graph_id),
+ *graph_id,
(gchar *) graph_name,
table_name);
}
@@ -854,7 +857,7 @@ static void
tracker_sparql_add_union_graph_subquery_for_named_graphs (TrackerSparql *sparql)
{
TrackerStringBuilder *old;
- gpointer graph_id;
+ gpointer value;
GHashTable *graphs;
GHashTableIter iter;
gboolean first = TRUE;
@@ -875,13 +878,15 @@ tracker_sparql_add_union_graph_subquery_for_named_graphs (TrackerSparql *sparql)
_append_string (sparql, "\"unionGraph_graphs\"(graph) AS (");
g_hash_table_iter_init (&iter, graphs);
- while (g_hash_table_iter_next (&iter, NULL, &graph_id)) {
+ while (g_hash_table_iter_next (&iter, NULL, &value)) {
+ TrackerRowid *graph_id = value;
+
if (first)
_append_string (sparql, "VALUES ");
else
_append_string (sparql, ", ");
- _append_string_printf (sparql, "(%d) ", GPOINTER_TO_INT (graph_id));
+ _append_string_printf (sparql, "(%" G_GINT64_FORMAT ") ", *graph_id);
first = FALSE;
}
@@ -894,7 +899,7 @@ tracker_sparql_add_union_graph_subquery_for_named_graphs (TrackerSparql *sparql)
g_hash_table_unref (graphs);
}
-static gint
+static TrackerRowid
tracker_sparql_find_graph (TrackerSparql *sparql,
const gchar *name)
{
@@ -947,7 +952,7 @@ _prepend_path_element (TrackerSparql *sparql,
TRACKER_PROPERTY_TYPE_RESOURCE,
TRACKER_PROPERTY_TYPE_RESOURCE);
} else if (tracker_sparql_find_graph (sparql, graph)) {
- zero_length_match = g_strdup_printf ("SELECT ID, ID, %d, %d, %d "
+ zero_length_match = g_strdup_printf ("SELECT ID, ID, %" G_GINT64_FORMAT ", %d, %d "
"FROM \"%s\".\"rdfs:Resource\"",
tracker_sparql_find_graph (sparql, graph),
TRACKER_PROPERTY_TYPE_RESOURCE,
@@ -981,7 +986,7 @@ _prepend_path_element (TrackerSparql *sparql,
if (tracker_sparql_find_graph (sparql, graph)) {
table_name = g_strdup_printf ("\"%s\".\"%s\"", graph,
tracker_property_get_table_name (path_elem->data.property));
- graph_column = g_strdup_printf ("%d",
+ graph_column = g_strdup_printf ("%" G_GINT64_FORMAT,
tracker_sparql_find_graph (sparql, graph));
} else {
/* Graph does not exist, ensure to come back empty */
@@ -1588,7 +1593,7 @@ tracker_sparql_add_fts_subquery (TrackerSparql *sparql,
_append_empty_select (sparql, n_properties);
}
} else {
- gpointer graph_name, graph_id;
+ gpointer graph_name, value;
GHashTable *graphs;
GHashTableIter iter;
@@ -1606,13 +1611,15 @@ tracker_sparql_add_fts_subquery (TrackerSparql *sparql,
graphs = tracker_sparql_get_effective_graphs (sparql);
g_hash_table_iter_init (&iter, graphs);
- while (g_hash_table_iter_next (&iter, &graph_name, &graph_id)) {
+ while (g_hash_table_iter_next (&iter, &graph_name, &value)) {
+ TrackerRowid *graph_id = value;
+
_append_string_printf (sparql,
- "UNION ALL %s, %d AS graph "
+ "UNION ALL %s, %" G_GINT64_FORMAT " AS graph "
"FROM \"%s\".\"fts5\" "
"WHERE fts5 = '\"' || REPLACE (",
select_items->str,
- GPOINTER_TO_INT (graph_id),
+ *graph_id,
(gchar *) graph_name);
_append_literal_sql (sparql, binding);
_append_string (sparql, ", '\"', ' ') || '\"*'");