diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2020-05-23 13:15:52 +0200 |
---|---|---|
committer | Jean Felder <jean.felder@gmail.com> | 2020-08-21 15:05:10 +0000 |
commit | 7d36826be38ae055642901f90718a3da6f9882d4 (patch) | |
tree | 5e814a1f0f29734021850c0af23806665679d9bb | |
parent | 2b035e09b059a365859f06e3a06d4b00e83e56b8 (diff) | |
download | grilo-plugins-7d36826be38ae055642901f90718a3da6f9882d4.tar.gz |
tracker3: Port grl_source_query() to the statement cache
We drop the support for full queries, the query is extended so that
subselects work.
-rw-r--r-- | src/tracker3/grl-tracker-source-api.c | 51 |
1 files changed, 8 insertions, 43 deletions
diff --git a/src/tracker3/grl-tracker-source-api.c b/src/tracker3/grl-tracker-source-api.c index 2000f9b..87f251e 100644 --- a/src/tracker3/grl-tracker-source-api.c +++ b/src/tracker3/grl-tracker-source-api.c @@ -57,20 +57,6 @@ GRL_LOG_DOMAIN_STATIC(tracker_source_result_log_domain); /* ------- Definitions ------- */ -#define TRACKER_QUERY_LIMIT \ - "OFFSET %u " \ - "LIMIT %u" - -#define TRACKER_QUERY_PARTIAL_REQUEST \ - "SELECT rdf:type(?urn) %s " \ - "WHERE { %s } " \ - "ORDER BY DESC(nfo:fileLastModified(?urn)) " \ - TRACKER_QUERY_LIMIT - -#define TRACKER_QUERY_FULL_REQUEST \ - "%s " \ - TRACKER_QUERY_LIMIT - #define TRACKER_DELETE_REQUEST \ "DELETE { <%s> %s } WHERE { <%s> a nfo:Media . %s }" @@ -696,12 +682,7 @@ grl_tracker_source_query (GrlSource *source, GrlSourceQuerySpec *qs) { GError *error = NULL; - GrlTrackerSourcePriv *priv = GRL_TRACKER_SOURCE_GET_PRIVATE (source); - gchar *sparql_final; - gchar *sparql_select; GrlTrackerOp *os; - gint count = grl_operation_options_get_count (qs->options); - guint skip = grl_operation_options_get_skip (qs->options); TrackerSparqlStatement *statement; GRL_IDEBUG ("%s: id=%u", __FUNCTION__, qs->operation_id); @@ -713,31 +694,15 @@ grl_tracker_source_query (GrlSource *source, goto send_error; } - /* Check if it is a full sparql query */ - if (g_ascii_strncasecmp (qs->query, "select ", 7) != 0) { - sparql_select = grl_tracker_source_get_select_string (qs->keys); - sparql_final = g_strdup_printf (TRACKER_QUERY_PARTIAL_REQUEST, - sparql_select, - qs->query, - skip, - count); - g_free (qs->query); - g_free (sparql_select); - qs->query = sparql_final; - } else { - /* Append offset and limit */ - sparql_final = g_strdup_printf (TRACKER_QUERY_FULL_REQUEST, - qs->query, - skip, - count); - g_free (qs->query); - qs->query = sparql_final; - } - statement = - tracker_sparql_connection_query_statement (priv->tracker_connection, - qs->query, - NULL, NULL); + grl_tracker_source_create_statement (GRL_TRACKER_SOURCE (source), + GRL_TRACKER_QUERY_ALL, + qs->options, + qs->keys, + qs->query, + &error); + if (!statement) + goto send_error; os = grl_tracker_op_new (grl_operation_options_get_type_filter (qs->options), qs->keys, qs); |