[tracker/wip/carlosg/sparql1.1: 146/201] libtracker-data: Pass explicitly URI prefix to SparqlUUID



commit 215e3855de9e340567e74fefaa76b49e12a7e626
Author: Carlos Garnacho <carlosg gnome org>
Date:   Sun Jul 7 20:16:27 2019 +0200

    libtracker-data: Pass explicitly URI prefix to SparqlUUID
    
    Allows STRUUID to be implemented without hacks to remove the unused
    URI prefix.

 src/libtracker-data/tracker-db-interface-sqlite.c | 9 ++++++---
 src/libtracker-data/tracker-sparql.c              | 8 ++++----
 2 files changed, 10 insertions(+), 7 deletions(-)
---
diff --git a/src/libtracker-data/tracker-db-interface-sqlite.c 
b/src/libtracker-data/tracker-db-interface-sqlite.c
index 14f7d83ab..0c40a23ba 100644
--- a/src/libtracker-data/tracker-db-interface-sqlite.c
+++ b/src/libtracker-data/tracker-db-interface-sqlite.c
@@ -1773,12 +1773,15 @@ function_sparql_uuid (sqlite3_context *context,
                       int              argc,
                       sqlite3_value   *argv[])
 {
-       if (argc > 0) {
+       const gchar *prefix;
+
+       if (argc > 1) {
                sqlite3_result_error (context, "Invalid argument count", -1);
                return;
        }
 
-       generate_uuid (context, "urn:uuid");
+       prefix = sqlite3_value_text (argv[0]);
+       generate_uuid (context, prefix);
 }
 
 static void
@@ -1878,7 +1881,7 @@ initialize_functions (TrackerDBInterface *db_interface)
                { "SparqlDataType", 1, SQLITE_ANY | SQLITE_DETERMINISTIC,
                  function_sparql_data_type },
                /* UUID */
-               { "SparqlUUID", 0, SQLITE_ANY, function_sparql_uuid },
+               { "SparqlUUID", 1, SQLITE_ANY, function_sparql_uuid },
                { "SparqlBNODE", -1, SQLITE_ANY | SQLITE_DETERMINISTIC, function_sparql_bnode },
        };
 
diff --git a/src/libtracker-data/tracker-sparql.c b/src/libtracker-data/tracker-sparql.c
index 2f8895742..4a0defbce 100644
--- a/src/libtracker-data/tracker-sparql.c
+++ b/src/libtracker-data/tracker-sparql.c
@@ -7378,9 +7378,9 @@ translate_BuiltInCall (TrackerSparql  *sparql,
                sparql->current_state.expression_type = TRACKER_PROPERTY_TYPE_BOOLEAN;
        } else if (_accept (sparql, RULE_TYPE_LITERAL, LITERAL_BNODE)) {
                if (_accept (sparql, RULE_TYPE_TERMINAL, TERMINAL_TYPE_NIL)) {
-                       _append_string (sparql, "SparqlUUID() ");
+                       _append_string (sparql, "SparqlUUID(\"urn:bnode\") ");
                } else {
-                       _append_string (sparql, "SparqlBNODE( ");
+                       _append_string (sparql, "SparqlBNODE(");
                        _expect (sparql, RULE_TYPE_LITERAL, LITERAL_OPEN_PARENS);
                        _call_rule (sparql, NAMED_RULE_Expression, error);
                        _expect (sparql, RULE_TYPE_LITERAL, LITERAL_CLOSE_PARENS);
@@ -7398,11 +7398,11 @@ translate_BuiltInCall (TrackerSparql  *sparql,
                sparql->current_state.expression_type = TRACKER_PROPERTY_TYPE_DATETIME;
        } else if (_accept (sparql, RULE_TYPE_LITERAL, LITERAL_UUID)) {
                _expect (sparql, RULE_TYPE_TERMINAL, TERMINAL_TYPE_NIL);
-               _append_string (sparql, "SparqlUUID() ");
+               _append_string (sparql, "SparqlUUID(\"urn:uuid\") ");
                sparql->current_state.expression_type = TRACKER_PROPERTY_TYPE_STRING;
        } else if (_accept (sparql, RULE_TYPE_LITERAL, LITERAL_STRUUID)) {
                _expect (sparql, RULE_TYPE_TERMINAL, TERMINAL_TYPE_NIL);
-               _append_string (sparql, "SUBSTR(SparqlUUID(), 10) ");
+               _append_string (sparql, "SparqlUUID() ");
                sparql->current_state.expression_type = TRACKER_PROPERTY_TYPE_STRING;
        } else if (_accept (sparql, RULE_TYPE_LITERAL, LITERAL_CONCAT)) {
                sparql->current_state.convert_to_string = TRUE;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]