[tracker: 1/9] libtracker-data: Add SparqlRand sqlite function



commit ec3bae5d78db8a01f3dd87367eb8c8216ca3d07e
Author: Carlos Garnacho <carlosg gnome org>
Date:   Tue Jul 28 23:59:45 2015 +0200

    libtracker-data: Add SparqlRand sqlite function
    
    This will be used to back up the RAND() sparql 1.1 function. Unlike
    the random() sqlite builtin function, g_random_double() gives us
    the random number in the same range than described in the
    recommendation, so it seems a better fit.

 src/libtracker-data/tracker-db-interface-sqlite.c |   17 +++++++++++++++++
 1 files changed, 17 insertions(+), 0 deletions(-)
---
diff --git a/src/libtracker-data/tracker-db-interface-sqlite.c 
b/src/libtracker-data/tracker-db-interface-sqlite.c
index 04932a6..6fb6fdc 100644
--- a/src/libtracker-data/tracker-db-interface-sqlite.c
+++ b/src/libtracker-data/tracker-db-interface-sqlite.c
@@ -1012,6 +1012,19 @@ function_sparql_floor (sqlite3_context *context,
 }
 
 static void
+function_sparql_rand (sqlite3_context *context,
+                      int              argc,
+                      sqlite3_value   *argv[])
+{
+       if (argc != 0) {
+               sqlite3_result_error (context, "Invalid argument count", -1);
+               return;
+       }
+
+       sqlite3_result_double (context, g_random_double ());
+}
+
+static void
 function_sparql_checksum (sqlite3_context *context,
                          int              argc,
                          sqlite3_value   *argv[])
@@ -1191,6 +1204,10 @@ open_database (TrackerDBInterface  *db_interface,
                                 db_interface, &function_sparql_floor,
                                 NULL, NULL);
 
+       sqlite3_create_function (db_interface->db, "SparqlRand", 0, SQLITE_ANY,
+                                db_interface, &function_sparql_rand,
+                                NULL, NULL);
+
        sqlite3_create_function (db_interface->db, "SparqlChecksum", 2, SQLITE_ANY,
                                 db_interface, &function_sparql_checksum,
                                 NULL, NULL);


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