diff options
author | Juan A. Suarez Romero <jasuarez@igalia.com> | 2013-03-23 23:01:12 +0000 |
---|---|---|
committer | Juan A. Suarez Romero <jasuarez@igalia.com> | 2013-03-23 23:02:16 +0000 |
commit | 457c4e6b6d56eadcbc1b12cd133f7714e26b106c (patch) | |
tree | 435e7e12f673a80d0f48d202f906a2611696df33 | |
parent | d21a34b195dcb531af780a4ad83358259d3d9367 (diff) |
tracker: Do not allow LIMIT and OFFSET in the query
Rather, they should be specified in the skip and count parameters.
-rw-r--r-- | src/tracker/grl-tracker-source-api.c | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/src/tracker/grl-tracker-source-api.c b/src/tracker/grl-tracker-source-api.c index 8adea4c..dfccb4e 100644 --- a/src/tracker/grl-tracker-source-api.c +++ b/src/tracker/grl-tracker-source-api.c @@ -57,12 +57,19 @@ GRL_LOG_DOMAIN_STATIC(tracker_source_result_log_domain); /* ------- Definitions ------- */ -#define TRACKER_QUERY_REQUEST \ +#define TRACKER_QUERY_LIMIT \ + "OFFSET %u " \ + "LIMIT %u" + +#define TRACKER_QUERY_PARTIAL_REQUEST \ "SELECT rdf:type(?urn) %s " \ "WHERE { %s . %s } " \ "ORDER BY DESC(nfo:fileLastModified(?urn)) " \ - "OFFSET %u " \ - "LIMIT %u" + TRACKER_QUERY_LIMIT + +#define TRACKER_QUERY_FULL_REQUEST \ + "%s " \ + TRACKER_QUERY_LIMIT #define TRACKER_SEARCH_REQUEST \ "SELECT rdf:type(?urn) %s " \ @@ -626,7 +633,7 @@ grl_tracker_source_query (GrlSource *source, if (g_ascii_strncasecmp (qs->query, "select ", 7) != 0) { constraint = grl_tracker_source_get_device_constraint (priv); sparql_select = grl_tracker_source_get_select_string (qs->keys); - sparql_final = g_strdup_printf (TRACKER_QUERY_REQUEST, + sparql_final = g_strdup_printf (TRACKER_QUERY_PARTIAL_REQUEST, sparql_select, qs->query, constraint, @@ -636,12 +643,16 @@ grl_tracker_source_query (GrlSource *source, g_free (qs->query); g_free (sparql_select); qs->query = sparql_final; - grl_tracker_source_query (source, qs); - return; + } 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; } - GRL_IDEBUG ("\tselect : '%s'", qs->query); - os = grl_tracker_op_initiate_query (qs->operation_id, g_strdup (qs->query), (GAsyncReadyCallback) tracker_query_cb, |