Hi!

On miƩ, 2010-02-03 at 12:08 +0000, Martyn Russell wrote:
> Hi all,
> 
> Carlos and Philip recently worked on the anonymous-file-nodes branch to 
> fix a regression with the way resources are stored in the database which 
> was changed recently. This is the review of that branch:
> 
>    http://git.gnome.org/browse/tracker/log/?h=anonymous-file-nodes
> 
> 
> 1. We should use G_DIR_SEPARATOR_S here instead:
> 
> +       slash_uri = g_strconcat (source_uri, "/", NULL);

Hmm, we're building an uri here, I don't think we want uris with '\' if
tracker is ported (again?) to Windows :)

> 
> 
> 2. This looks like some left over crack that needs fixing :)
> 
> -       tracker_sparql_builder_object_iri (sparql, uri);
> +       tracker_sparql_builder_object (sparql, "_:foo");

I guess _:foo can be renamed to something more descriptive, but that's
precisely the way to create autogenerated urns.

> 
> 
> 3. In the search-bar you have these changes, but surely urn should be 
> changed for uri in ALL cases here, otherwise we have no ranking? I could 
> be wrong though.
> 
> +       "  ?uri ?title ?tooltip ?urn fts:rank(?urn) " \

I think it only changed for queries that return files (as of now at
least), I guess all queries could change to provide both urn and uri

> 
> 
> 4. Don't we need quotes round ?f (in add_tag_for_urns and again in 
> remove_tag_for_urns)?
> 
> -                                        "  ?urn nie:isStoredAs ?f ."
> +                                        "  ?urn nie:url ?f ."

not AFAIK, if we used a literal there such as \"%s\" we'd need these.

> 
> 
> 5. I would improve the this so the query is more readable personally:
> 
> stmt = tracker_db_interface_create_statement (iface, "SELECT ID FROM 
> \"nie:DataObject\" WHERE \"nie:DataObject\".\"nie:url\" = ?")

hmm? has that changed in this branch?

> 
> It also looks erroneous to me. Why do we have this addition "." before 
> \"nie:url\" ?
> 
> Shouldn't that be \"nie:DataObject\" ?do . \"nie:url\" ...
> 
> 
> 6. I think we should add proper error handling here:
> 
> +          /* For fallback to the old behaviour, we could do this here:
> +           * resource_id = tracker_data_query_resource_id (url); */
> +          return;

hmm, I don't remember this changing in the branch. There should be only
changes to extractors, tracker-miner-fs and libtracker-common.

> 
> 
> 7. Hmm, not sure why this change was added, usually if result is set and 
>  > 0 in length then there was no error, checking that here seems 
> pointless to me as we would still check the array and its length even if 
> there was no error so? This is in 
> src/tracker-writeback/tracker-writeback-consumer.c in sparql_query_cb().
> 
> -       if (result && result->len > 0) {
> +       if (!error && result && result->len > 0) {
> 
> 
> 8. Again, I would make queries like this easier to read for maintainability:
> 
> + query = g_strdup_printf ("SELECT ?url '%s' ?predicate ?object {"
> +                          "  <%s> ?predicate ?object ; nie:url ?url ."
> +                          "  ?predicate tracker:writeback true "
> +                          "}", data->subject, data->subject);
> 
> Also, I presume this is valid SPARQL to put '%s' after ?url, looks to me 
> like it will just be included as one of the columns in the results - 
> isn't that a little inefficient (depending on how many results are 
> returned).
> 
> 
> 9. I didn't know this could be used as an OPTIONAL replacement:
> 
> - query = g_strdup_printf ("SELECT ?city ?state ?address ?country "
> -                          "WHERE { <%s> mlo:location ?location . "
> -                          "OPTIONAL { ?location mlo:address ?address } . "
> -                          "OPTIONAL { ?location mlo:city ?city } . "
> -                          "OPTIONAL { ?location mlo:country ?country } . "
> -                          "OPTIONAL { ?location mlo:state ?state} "
> -                          "}", row[0]);
> + query = g_strdup_printf ("SELECT mlo:city (?city) mlo:state (?state) "
> +                          " mlo:address (?address) "
> +                          " mlo:country (?country) "
> +                          "WHERE { <%s> mlo:location ?location }",
> 
> If this works then it is a nice reduction and simplification in the 
> SPARQL :)
> 
> 
> 10. Please don't add spaces after conditional statements (in extract_mp3 
> and extract_vorbis) :)
> 
>                  if (md.track_count > 0) {
> +
> +                       tracker_sparql_builder_insert_close (preupdate);
> 
> 
> 11. Another case of "_foo" in miner_files_add_to_datasource() and 
> process_file_cb(), should use something more meaningful. The "_foo" is 
> used to generate the id you know :P and it looks unprofessional :)
> 
> 
> 12. The documentation here needs a small fix:
> 
> + * through tracker_sparql_builder_new_embedded_insert(), The subject
> 
> No need to capitalise "The" there. Unless the comma should be a ".".
> 
> + * function should just provide predicate/object(s) pairs. the data
> 
> Here there is no capital "T".
> 
> 
> 13. Hmm, is this correct in extract_html(), extract_imagemagick(), etc:
> 
> -       tracker_sparql_builder_subject_iri (metadata, uri);

Yes it is, metadata here is now an embedded TrackerSparqlBuilder, and
the subject must be set by tracker-extract.c so it's the same than the
one used in tracker-miner-fs, so extractors now must not specify
subjects for the embedded metadata.

> 
> 
> 14. The get_file_metadata() function in tracker-extract.c needs fixing 
> more I think for failure conditions. More specifically, I think the _out 
> variables should be set to NULL initially so they don't have to be set 
> in every place where we return FALSE. The libstreamanalyser part doesn't 
> set them at all, which would break and likely crash things. We also 
> don't unref the preupdate variable when we return FALSE on line 267.

Yeah, the LSA part could need some double checking, I don't think it's
going to provide us the sparql we actually expect.

> 
> 
> 15. No need for braces here round preinserts_str:
> 
> +  dbus_g_method_return (context,
> +                       (preinserts_str) ? preinserts_str : "",
> +                        tracker_sparql_builder_get_result (sparql));
> 
> 
> 
> Other than that the rest looks good. Let's see if we can get these fixed 
> so we can merge to master for tomorrow's release :)
> 
> Thanks guys,
> 


_______________________________________________
tracker-list mailing list
tracker-list@gnome.org
http://mail.gnome.org/mailman/listinfo/tracker-list

Reply via email to