summaryrefslogtreecommitdiff
path: root/src/libtracker-data
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2015-07-28 23:59:45 +0200
committerCarlos Garnacho <carlosg@gnome.org>2015-10-19 14:02:57 +0200
commite00afca1ff3184d229090467c25346fcab1a660c (patch)
treebb54df732bfcb544dc0c75cbe575156339ea45f2 /src/libtracker-data
parent3ab7ca19c48052868020452ba0bf504984d63ac4 (diff)
downloadtracker-e00afca1ff3184d229090467c25346fcab1a660c.tar.gz
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.
Diffstat (limited to 'src/libtracker-data')
-rw-r--r--src/libtracker-data/tracker-db-interface-sqlite.c17
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 b7d0f834c..bb3ae3b76 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);