diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2015-07-28 23:59:45 +0200 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2015-10-19 14:02:57 +0200 |
commit | e00afca1ff3184d229090467c25346fcab1a660c (patch) | |
tree | bb54df732bfcb544dc0c75cbe575156339ea45f2 /src/libtracker-data | |
parent | 3ab7ca19c48052868020452ba0bf504984d63ac4 (diff) | |
download | tracker-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.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 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); |