diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2019-03-14 21:50:42 +0100 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2019-09-10 00:22:57 +0200 |
commit | b96d321ff55aef26cced6ec0de8f12be2408dceb (patch) | |
tree | e11469e87260f32b83f17a45a82d36070733c76e | |
parent | b312d1ff70cd45c89969c2f895fa5ed744135a98 (diff) | |
download | tracker-b96d321ff55aef26cced6ec0de8f12be2408dceb.tar.gz |
libtracker-data: Remove support for tracker:transient
It was unused, plus we could better harness temporary tables for this.
-rw-r--r-- | src/libtracker-data/tracker-data-manager.c | 156 | ||||
-rw-r--r-- | src/libtracker-data/tracker-data-update.c | 73 | ||||
-rw-r--r-- | src/libtracker-data/tracker-property.c | 28 | ||||
-rw-r--r-- | src/libtracker-data/tracker-property.h | 3 | ||||
-rw-r--r-- | src/ontologies/11-rdf.ontology | 5 |
5 files changed, 25 insertions, 240 deletions
diff --git a/src/libtracker-data/tracker-data-manager.c b/src/libtracker-data/tracker-data-manager.c index 76c898dde..fade91c47 100644 --- a/src/libtracker-data/tracker-data-manager.c +++ b/src/libtracker-data/tracker-data-manager.c @@ -398,53 +398,6 @@ is_allowed_conversion (const gchar *oldv, } static gboolean -check_unsupported_property_value_change (TrackerDataManager *manager, - const gchar *ontology_path, - const gchar *kind, - const gchar *subject, - const gchar *predicate, - const gchar *object) -{ - GError *error = NULL; - gboolean needed = TRUE; - gchar *query = NULL; - TrackerDBCursor *cursor; - - query = g_strdup_printf ("SELECT ?old_value WHERE { " - "<%s> %s ?old_value " - "}", subject, kind); - - cursor = tracker_data_query_sparql_cursor (manager, query, &error); - - if (cursor && tracker_db_cursor_iter_next (cursor, NULL, NULL)) { - if (g_strcmp0 (object, tracker_db_cursor_get_string (cursor, 0, NULL)) == 0) { - needed = FALSE; - } else { - needed = TRUE; - } - - } else { - if (object && (g_strcmp0 (object, "false") == 0)) { - needed = FALSE; - } else { - needed = (object != NULL); - } - } - - g_free (query); - if (cursor) { - g_object_unref (cursor); - } - - if (error) { - g_critical ("Ontology change, %s", error->message); - g_clear_error (&error); - } - - return needed; -} - -static gboolean update_property_value (TrackerDataManager *manager, const gchar *ontology_path, const gchar *kind, @@ -1157,44 +1110,6 @@ tracker_data_ontology_load_statement (TrackerDataManager *manager, } tracker_property_set_secondary_index (property, secondary_index); - } else if (g_strcmp0 (predicate, TRACKER_PREFIX_TRACKER "transient") == 0) { - TrackerProperty *property; - gboolean is_new; - - property = tracker_ontologies_get_property_by_uri (manager->ontologies, subject); - if (property == NULL) { - g_critical ("%s: Unknown property %s", ontology_path, subject); - return; - } - - is_new = tracker_property_get_is_new (property); - if (is_new != in_update) { - /* Detect unsupported ontology change. - * Wouldn't be very hard to support this, just dropping the tabtle - * or creating the table in the-non memdisk db file, but afaik this - * isn't supported right now */ - if (in_update == TRUE && is_new == FALSE) { - if (check_unsupported_property_value_change (manager, - ontology_path, - "tracker:transient", - subject, - predicate, - object)) { - handle_unsupported_ontology_change (manager, - ontology_path, - tracker_property_get_name (property), - "tracker:transient", - tracker_property_get_transient (property) ? "true" : "false", - g_strcmp0 (object, "true") ==0 ? "true" : "false", - error); - } - } - return; - } - - if (g_strcmp0 (object, "true") == 0) { - tracker_property_set_transient (property, TRUE); - } } else if (g_strcmp0 (predicate, TRACKER_PREFIX_TRACKER "fulltextIndexed") == 0) { TrackerProperty *property; @@ -1977,7 +1892,6 @@ tracker_data_ontology_process_statement (TrackerDataManager *manager, g_strcmp0 (predicate, RDFS_RANGE) == 0 || /* g_strcmp0 (predicate, NRL_MAX_CARDINALITY) == 0 || */ g_strcmp0 (predicate, TRACKER_PREFIX_TRACKER "indexed") == 0 || - g_strcmp0 (predicate, TRACKER_PREFIX_TRACKER "transient") == 0 || g_strcmp0 (predicate, TRACKER_PREFIX_TRACKER "fulltextIndexed") == 0) { TrackerProperty *prop; @@ -2336,7 +2250,6 @@ db_get_static_data (TrackerDBInterface *iface, "\"tracker:indexed\", " "(SELECT Uri FROM Resource WHERE ID = \"tracker:secondaryIndex\"), " "\"tracker:fulltextIndexed\", " - "\"tracker:transient\", " "\"tracker:writeback\", " "(SELECT 1 FROM \"rdfs:Resource_rdf:type\" WHERE ID = \"rdf:Property\".ID AND " "\"rdf:type\" = (SELECT ID FROM Resource WHERE Uri = '" NRL_INVERSE_FUNCTIONAL_PROPERTY "')), " @@ -2354,7 +2267,7 @@ db_get_static_data (TrackerDBInterface *iface, TrackerProperty *property; const gchar *uri, *domain_uri, *range_uri, *secondary_index_uri, *default_value; gboolean multi_valued, indexed, fulltext_indexed; - gboolean transient, is_inverse_functional_property; + gboolean is_inverse_functional_property; gboolean writeback; gint id; @@ -2398,18 +2311,8 @@ db_get_static_data (TrackerDBInterface *iface, fulltext_indexed = FALSE; } - tracker_db_cursor_get_value (cursor, 8, &value); - - if (G_VALUE_TYPE (&value) != 0) { - transient = (g_value_get_int64 (&value) == 1); - g_value_unset (&value); - } else { - /* NULL */ - transient = FALSE; - } - /* tracker:writeback column */ - tracker_db_cursor_get_value (cursor, 9, &value); + tracker_db_cursor_get_value (cursor, 8, &value); if (G_VALUE_TYPE (&value) != 0) { writeback = (g_value_get_int64 (&value) == 1); @@ -2420,7 +2323,7 @@ db_get_static_data (TrackerDBInterface *iface, } /* NRL_INVERSE_FUNCTIONAL_PROPERTY column */ - tracker_db_cursor_get_value (cursor, 10, &value); + tracker_db_cursor_get_value (cursor, 9, &value); if (G_VALUE_TYPE (&value) != 0) { is_inverse_functional_property = TRUE; @@ -2430,13 +2333,12 @@ db_get_static_data (TrackerDBInterface *iface, is_inverse_functional_property = FALSE; } - default_value = tracker_db_cursor_get_string (cursor, 11, NULL); + default_value = tracker_db_cursor_get_string (cursor, 10, NULL); tracker_property_set_ontologies (property, manager->ontologies); tracker_property_set_is_new_domain_index (property, tracker_ontologies_get_class_by_uri (manager->ontologies, domain_uri), FALSE); tracker_property_set_is_new (property, FALSE); tracker_property_set_cardinality_changed (property, FALSE); - tracker_property_set_transient (property, transient); tracker_property_set_uri (property, uri); tracker_property_set_id (property, id); tracker_property_set_domain (property, tracker_ontologies_get_class_by_uri (manager->ontologies, domain_uri)); @@ -3398,52 +3300,6 @@ error_out: } static void -clean_decomposed_transient_metadata (TrackerDataManager *manager, - TrackerDBInterface *iface) -{ - TrackerProperty **properties; - TrackerProperty *property; - guint i, n_props; - - properties = tracker_ontologies_get_properties (manager->ontologies, &n_props); - - for (i = 0; i < n_props; i++) { - property = properties[i]; - - if (tracker_property_get_transient (property)) { - TrackerClass *domain; - const gchar *service_name; - const gchar *prop_name; - GError *error = NULL; - - domain = tracker_property_get_domain (property); - service_name = tracker_class_get_name (domain); - prop_name = tracker_property_get_name (property); - - if (tracker_property_get_multiple_values (property)) { - /* create the disposable table */ - tracker_db_interface_execute_query (iface, &error, "DELETE FROM \"%s_%s\"", - service_name, - prop_name); - } else { - /* create the disposable table */ - tracker_db_interface_execute_query (iface, &error, "UPDATE \"%s\" SET \"%s\" = NULL", - service_name, - prop_name); - } - - if (error) { - g_critical ("Cleaning transient propery '%s:%s' failed: %s", - service_name, - prop_name, - error->message); - g_error_free (error); - } - } - } -} - -static void tracker_data_ontology_import_finished (TrackerDataManager *manager) { TrackerClass **classes; @@ -4172,10 +4028,6 @@ tracker_data_manager_initable_init (GInitable *initable, } write_ontologies_gvdb (manager, FALSE /* overwrite */, NULL); - - /* Skipped in the read-only case as it can't work with direct access and - it reduces initialization time */ - clean_decomposed_transient_metadata (manager, iface); } else { GError *gvdb_error = NULL; diff --git a/src/libtracker-data/tracker-data-update.c b/src/libtracker-data/tracker-data-update.c index 66c605f7e..25baa6df7 100644 --- a/src/libtracker-data/tracker-data-update.c +++ b/src/libtracker-data/tracker-data-update.c @@ -173,7 +173,6 @@ static gint ensure_resource_id (TrackerData *data, static void cache_insert_value (TrackerData *data, const gchar *table_name, const gchar *field_name, - gboolean transient, GValue *value, gint graph, gboolean multiple_values, @@ -565,12 +564,11 @@ cache_table_free (TrackerDataUpdateBufferTable *table) static TrackerDataUpdateBufferTable * cache_ensure_table (TrackerData *data, const gchar *table_name, - gboolean multiple_values, - gboolean transient) + gboolean multiple_values) { TrackerDataUpdateBufferTable *table; - if (!data->resource_buffer->modified && !transient) { + if (!data->resource_buffer->modified) { /* first modification of this particular resource, update tracker:modified */ GValue gvalue = { 0 }; @@ -580,7 +578,7 @@ cache_ensure_table (TrackerData *data, g_value_init (&gvalue, G_TYPE_INT64); g_value_set_int64 (&gvalue, get_transaction_modseq (data)); cache_insert_value (data, "rdfs:Resource", "tracker:modified", - TRUE, &gvalue, 0, + &gvalue, 0, FALSE, FALSE, FALSE); } @@ -600,7 +598,7 @@ cache_insert_row (TrackerData *data, { TrackerDataUpdateBufferTable *table; - table = cache_ensure_table (data, tracker_class_get_name (class), FALSE, FALSE); + table = cache_ensure_table (data, tracker_class_get_name (class), FALSE); table->class = class; table->insert = TRUE; } @@ -609,7 +607,6 @@ static void cache_insert_value (TrackerData *data, const gchar *table_name, const gchar *field_name, - gboolean transient, GValue *value, gint graph, gboolean multiple_values, @@ -630,7 +627,7 @@ cache_insert_value (TrackerData *data, #endif property.date_time = date_time; - table = cache_ensure_table (data, table_name, multiple_values, transient); + table = cache_ensure_table (data, table_name, multiple_values); g_array_append_val (table->properties, property); } @@ -640,7 +637,7 @@ cache_delete_row (TrackerData *data, { TrackerDataUpdateBufferTable *table; - table = cache_ensure_table (data, tracker_class_get_name (class), FALSE, FALSE); + table = cache_ensure_table (data, tracker_class_get_name (class), FALSE); table->class = class; table->delete_row = TRUE; } @@ -649,7 +646,6 @@ static void cache_delete_value (TrackerData *data, const gchar *table_name, const gchar *field_name, - gboolean transient, GValue *value, gboolean multiple_values, gboolean fts, @@ -666,7 +662,7 @@ cache_delete_value (TrackerData *data, #endif property.date_time = date_time; - table = cache_ensure_table (data, table_name, multiple_values, transient); + table = cache_ensure_table (data, table_name, multiple_values); table->delete_value = TRUE; g_array_append_val (table->properties, property); } @@ -1114,7 +1110,7 @@ tracker_data_update_buffer_might_flush (TrackerData *data, GError **error) { /* avoid high memory usage by update buffer */ - if (g_hash_table_size (data->update_buffer.resources)) >= 1000) { + if (g_hash_table_size (data->update_buffer.resources) >= 1000) { tracker_data_update_buffer_flush (data, error); } } @@ -1267,7 +1263,7 @@ cache_create_service_decomposed (TrackerData *data, g_value_set_int64 (&gvalue, class_id); cache_insert_value (data, "rdfs:Resource_rdf:type", "rdf:type", - FALSE, &gvalue, final_graph_id, + &gvalue, final_graph_id, TRUE, FALSE, FALSE); add_class_count (data, cl, 1); @@ -1331,7 +1327,6 @@ cache_create_service_decomposed (TrackerData *data, cache_insert_value (data, tracker_class_get_name (cl), tracker_property_get_name (*domain_indexes), - tracker_property_get_transient (*domain_indexes), &gvalue_copy, graph != NULL ? ensure_graph_id (data, graph, NULL) : graph_id, tracker_property_get_multiple_values (*domain_indexes), @@ -1719,7 +1714,6 @@ process_domain_indexes (TrackerData *data, cache_insert_value (data, tracker_class_get_name (*domain_index_classes), field_name, - tracker_property_get_transient (property), &gvalue_copy, graph != NULL ? ensure_graph_id (data, graph, NULL) : graph_id, FALSE, @@ -1831,7 +1825,6 @@ cache_insert_metadata_decomposed (TrackerData *data, } else { cache_insert_value (data, table_name, field_name, - tracker_property_get_transient (property), &gvalue, graph != NULL ? ensure_graph_id (data, graph, NULL) : graph_id, multiple_values, @@ -2009,7 +2002,6 @@ cache_update_metadata_decomposed (TrackerData *data, } cache_insert_value (data, table_name, field_name, - tracker_property_get_transient (property), &gvalue, graph != NULL ? ensure_graph_id (data, graph, NULL) : graph_id, multiple_values, @@ -2067,7 +2059,6 @@ delete_metadata_decomposed (TrackerData *data, g_value_unset (&gvalue); } else { cache_delete_value (data, table_name, field_name, - tracker_property_get_transient (property), &gvalue, multiple_values, tracker_property_get_fulltext_indexed (property), tracker_property_get_data_type (property) == TRACKER_PROPERTY_TYPE_DATETIME); @@ -2085,7 +2076,6 @@ delete_metadata_decomposed (TrackerData *data, cache_delete_value (data, tracker_class_get_name (*domain_index_classes), field_name, - tracker_property_get_transient (property), &gvalue_copy, multiple_values, tracker_property_get_fulltext_indexed (property), tracker_property_get_data_type (property) == TRACKER_PROPERTY_TYPE_DATETIME); @@ -2265,7 +2255,6 @@ cache_delete_resource_type_full (TrackerData *data, value_set_remove_value (old_values, &gvalue); cache_delete_value (data, table_name, field_name, - tracker_property_get_transient (prop), &gvalue, multiple_values, tracker_property_get_fulltext_indexed (prop), tracker_property_get_data_type (prop) == TRACKER_PROPERTY_TYPE_DATETIME); @@ -2283,7 +2272,6 @@ cache_delete_resource_type_full (TrackerData *data, cache_delete_value (data, tracker_class_get_name (*domain_index_classes), field_name, - tracker_property_get_transient (prop), &gvalue_copy, multiple_values, tracker_property_get_fulltext_indexed (prop), tracker_property_get_data_type (prop) == TRACKER_PROPERTY_TYPE_DATETIME); @@ -2454,11 +2442,7 @@ tracker_data_delete_statement (TrackerData *data, field = tracker_ontologies_get_property_by_uri (ontologies, predicate); if (field != NULL) { pred_id = tracker_property_get_id (field); - - if (!tracker_property_get_transient (field)) { - data->has_persistent = TRUE; - } - + data->has_persistent = TRUE; change = delete_metadata_decomposed (data, field, object, 0, error); } else { g_set_error (error, TRACKER_SPARQL_ERROR, TRACKER_SPARQL_ERROR_UNKNOWN_PROPERTY, @@ -2513,10 +2497,7 @@ delete_all_objects (TrackerData *data, if (field != NULL) { GArray *old_values; - if (!tracker_property_get_transient (field)) { - data->has_persistent = TRUE; - } - + data->has_persistent = TRUE; old_values = get_old_property_values (data, field, &new_error); if (new_error) { g_propagate_error (error, new_error); @@ -2711,9 +2692,7 @@ tracker_data_insert_statement_with_uri (TrackerData *data, prop_id = tracker_property_get_id (property); } - if (!tracker_property_get_transient (property)) { - data->has_persistent = TRUE; - } + data->has_persistent = TRUE; /* subjects and objects starting with `:' are anonymous blank nodes */ if (g_str_has_prefix (object, ":")) { @@ -2748,11 +2727,9 @@ tracker_data_insert_statement_with_uri (TrackerData *data, return; } - if (!tracker_property_get_transient (property)) { - graph_id = (graph != NULL ? query_resource_id (data, graph) : 0); - final_prop_id = (prop_id != 0) ? prop_id : tracker_data_query_resource_id (data->manager, iface, predicate); - object_id = query_resource_id (data, object); - } + graph_id = (graph != NULL ? query_resource_id (data, graph) : 0); + final_prop_id = (prop_id != 0) ? prop_id : tracker_data_query_resource_id (data->manager, iface, predicate); + object_id = query_resource_id (data, object); change = TRUE; } else { @@ -2822,9 +2799,7 @@ tracker_data_insert_statement_with_string (TrackerData *data, pred_id = tracker_property_get_id (property); } - if (!tracker_property_get_transient (property)) { - data->has_persistent = TRUE; - } + data->has_persistent = TRUE; if (!tracker_data_insert_statement_common (data, graph, subject, predicate, object, &actual_error)) { if (actual_error) { @@ -2899,9 +2874,7 @@ tracker_data_update_statement_with_uri (TrackerData *data, prop_id = tracker_property_get_id (property); } - if (!tracker_property_get_transient (property)) { - data->has_persistent = TRUE; - } + data->has_persistent = TRUE; /* subjects and objects starting with `:' are anonymous blank nodes */ if (g_str_has_prefix (object, ":")) { @@ -2938,11 +2911,9 @@ tracker_data_update_statement_with_uri (TrackerData *data, return; } - if (!tracker_property_get_transient (property)) { - graph_id = (graph != NULL ? query_resource_id (data, graph) : 0); - final_prop_id = (prop_id != 0) ? prop_id : tracker_data_query_resource_id (data->manager, iface, predicate); - object_id = query_resource_id (data, object); - } + graph_id = (graph != NULL ? query_resource_id (data, graph) : 0); + final_prop_id = (prop_id != 0) ? prop_id : tracker_data_query_resource_id (data->manager, iface, predicate); + object_id = query_resource_id (data, object); change = TRUE; } else { @@ -3102,9 +3073,7 @@ tracker_data_update_statement_with_string (TrackerData *data, multiple_values = tracker_property_get_multiple_values (property); - if (!tracker_property_get_transient (property)) { - data->has_persistent = TRUE; - } + data->has_persistent = TRUE; /* Update and insert share the exact same code here */ if (!tracker_data_insert_statement_common (data, graph, subject, predicate, object, &actual_error)) { diff --git a/src/libtracker-data/tracker-property.c b/src/libtracker-data/tracker-property.c index 739d360a9..83efcc1da 100644 --- a/src/libtracker-data/tracker-property.c +++ b/src/libtracker-data/tracker-property.c @@ -58,7 +58,6 @@ struct _TrackerPropertyPrivate { gboolean fulltext_indexed; gboolean multiple_values; gboolean last_multiple_values; - gboolean transient; gboolean is_inverse_functional_property; gboolean is_new; gboolean db_schema_changed; @@ -137,7 +136,6 @@ tracker_property_init (TrackerProperty *property) priv->id = 0; priv->weight = 1; - priv->transient = FALSE; priv->multiple_values = TRUE; priv->force_journal = TRUE; priv->super_properties = g_array_new (TRUE, TRUE, sizeof (TrackerProperty *)); @@ -220,19 +218,6 @@ tracker_property_get_uri (TrackerProperty *property) return priv->uri; } -gboolean -tracker_property_get_transient (TrackerProperty *property) -{ - TrackerPropertyPrivate *priv; - - g_return_val_if_fail (TRACKER_IS_PROPERTY (property), FALSE); - - priv = tracker_property_get_instance_private (property); - - return priv->transient; -} - - const gchar * tracker_property_get_name (TrackerProperty *property) { @@ -728,19 +713,6 @@ tracker_property_set_uri (TrackerProperty *property, } void -tracker_property_set_transient (TrackerProperty *property, - gboolean value) -{ - TrackerPropertyPrivate *priv; - - g_return_if_fail (TRACKER_IS_PROPERTY (property)); - - priv = tracker_property_get_instance_private (property); - - priv->transient = value; -} - -void tracker_property_set_domain (TrackerProperty *property, TrackerClass *value) { diff --git a/src/libtracker-data/tracker-property.h b/src/libtracker-data/tracker-property.h index d6c314d47..a84072268 100644 --- a/src/libtracker-data/tracker-property.h +++ b/src/libtracker-data/tracker-property.h @@ -89,7 +89,6 @@ gboolean tracker_property_get_fulltext_indexed (TrackerProperty gboolean tracker_property_get_multiple_values (TrackerProperty *property); gboolean tracker_property_get_last_multiple_values(TrackerProperty *property); gboolean tracker_property_get_orig_multiple_values(TrackerProperty *property); -gboolean tracker_property_get_transient (TrackerProperty *property); gboolean tracker_property_get_is_new (TrackerProperty *property); gboolean tracker_property_get_is_new_domain_index (TrackerProperty *property, TrackerClass *class); @@ -130,8 +129,6 @@ void tracker_property_set_last_multiple_values(TrackerProperty gboolean value); void tracker_property_set_orig_multiple_values(TrackerProperty *property, gboolean value); -void tracker_property_set_transient (TrackerProperty *property, - gboolean value); void tracker_property_set_is_new (TrackerProperty *property, gboolean value); void tracker_property_set_is_new_domain_index (TrackerProperty *property, diff --git a/src/ontologies/11-rdf.ontology b/src/ontologies/11-rdf.ontology index 4bd497715..bdb6e1200 100644 --- a/src/ontologies/11-rdf.ontology +++ b/src/ontologies/11-rdf.ontology @@ -101,11 +101,6 @@ tracker:fulltextNoLimit a rdf:Property ; rdfs:domain rdf:Property ; rdfs:range xsd:boolean . -tracker:transient a rdf:Property ; - nrl:maxCardinality 1 ; - rdfs:domain rdf:Property ; - rdfs:range xsd:boolean . - tracker:weight a rdf:Property ; nrl:maxCardinality 1 ; rdfs:domain rdf:Property ; |