summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* libtracker-data: Also set up blank node map on InsertDatawip/carlosg/issue-56Carlos Garnacho2018-11-131-0/+14
| | | | | | | The blank node map must be set up there, both for the URN storage aspect and the GVariant generation one. Closes: https://gitlab.gnome.org/GNOME/tracker/issues/56
* libtracker-data: Always set up blank node map on InsertClauseCarlos Garnacho2018-11-131-4/+5
| | | | | | | | Commit c58f7aa419 late in wip/carlosg/sparql-parser-ng wrongly made this dependent on the query being an update_blank() one (i.e. we need to generate a GVariant with blank node results to give back). This actually defeated the path where we generate unique URNs for blank nodes on inserts, resulting in simple urns like <1> being generated.
* libtracker-data: Perform caseless comparisonCarlos Garnacho2018-11-131-1/+1
| | | | | | The SPARQL protocol is supposedly case insensitive, and TrackerResource uses "TRUE"/"FALSE" for boolean strings. We must use caseless comparion or we get false negatives.
* fooCarlos Garnacho2018-11-131-1/+1
|
* tracker: Fix search subcommandCarlos Garnacho2018-11-131-2/+2
| | | | | The SPARQL was referring to a non-existent variable, which older parser used to ignore.
* Release 2.2.0-alpha12.2.0-alpha1Carlos Garnacho2018-11-131-0/+20
|
* Merge branch 'wip/carlosg/automatic-store-shutdown'Carlos Garnacho2018-11-137-92/+105
|\
| * tracker-store: Automatically shutdown on inactivitywip/carlosg/automatic-store-shutdownCarlos Garnacho2018-11-132-11/+80
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If the right conditions apply, tracker-store will shut down after 30s of inactivity (no clients doing updates/selects). Bringing it back again is relatively cheap, so let's see how this flies. For the cases it won't, tracker-store has a --disable-shutdown switch (also useful for testing from terminal), also running on other buses than the session one will disable it, since both shutting down and later restart pose questions and risks. In theory, this will make tracker-store disappear 99% of the time, since database updates are sparse. There's also the possibility of clients running with TRACKER_SPARQL_BACKEND=bus or resorting to bus connection (eg. flatpak apps), that will make selects go through tracker-store.
| * libtracker-miner: Drop pause/resume on tracker-store name availabilityCarlos Garnacho2018-11-131-68/+0
| | | | | | | | | | This no longer makes sense with tracker-store automatic shutdown, assume the activatable through DBus and keep the miner running in that situation.
| * libtracker-bus: Avoid pinging tracker-store on initializationCarlos Garnacho2018-11-134-13/+25
|/ | | | | | | | | | | Avoid possibly raising tracker-store when initializating a bus connection. This can be done in a delayed manner (eg. when some other dbus message is sent in its way). There is one situation where this is necessary though, the database may not exist yet. In this case we must poke tracker-store before setting up the direct connection. Detect those cases by handling direct connection initialization errors.
* Merge branch 'wip/carlosg/sparql-parser-ng'Carlos Garnacho2018-11-1377-4509/+12618
|\
| * libtracker-sparql: Silence -Wformat-security warningwip/carlosg/sparql-parser-ngCarlos Garnacho2018-11-131-9/+9
| | | | | | | | | | | | Since we no longer pass the string directly, we must also avoid the escaping of the strftime format modifiers. Those aren't any longer at risk of being mistaken for printf ones.
| * libtracker-sparql: Avoid implicitly relying on hashtable iteration orderCarlos Garnacho2018-11-131-12/+8
| | | | | | | | | | | | Recent GLib changed the hashtable hashing, thus changing the order in which the contents are iterated by a GHashTableIter. Avoid doing that in the one place we used to (also used to happen in previous vala code).
| * tests: Add some tests for the supported property pathsCarlos Garnacho2018-11-1318-0/+99
| | | | | | | | Inverse and sequence paths are tested thus far.
| * docs: Add references to TrackerSparqlStatementCarlos Garnacho2018-11-133-0/+27
| |
| * libtracker-data: Make unimplemented property path errors more specificCarlos Garnacho2018-11-131-4/+5
| | | | | | | | There's now partial support of property paths, so better be specific.
| * libtracker-data: Support sequence property pathCarlos Garnacho2018-11-131-3/+24
| | | | | | | | | | | | "?a :foo/:bar ?b" is equivalent to "?a :foo ?gen . ?gen :bar ?b", make the parser make up those generated variables before processing the current predicate property.
| * libtracker-data: Support inverse property pathCarlos Garnacho2018-11-131-1/+13
| | | | | | | | | | "?a ^:foo ?b" is equivalent to "?b :foo ?a", invert the subject/predicate in order to handle this.
| * libtracker-data: Prepare for property pathsCarlos Garnacho2018-11-131-17/+28
| | | | | | | | | | | | | | Property paths may introduce intermediate anonymous resources, or shuffle subject/object. We still do the bulk of the job while parsing the predicate, so prepare for the predicate being pre-filled, and the Path grammar element to alter the next parsed token.
| * tests: Add an FTS testCarlos Garnacho2018-11-133-1/+3
| | | | | | | | | | This query form was broken in the previous parser, add a test for it now that it is supported.
| * tests: Add more anonymous/blank nodes testsCarlos Garnacho2018-11-1319-0/+96
| | | | | | | | | | Some of those combinations were broken in the previous parser, now that they are handled properly, add tests for them.
| * libtracker-sparql-backend: Expose direct connection's query_statement()Carlos Garnacho2018-11-131-0/+10
| | | | | | | | | | This should eventually be implemented in the bus backend as well, but not yet.
| * libtracker-direct: Implement query_statement()Carlos Garnacho2018-11-135-0/+331
| | | | | | | | This uses an internal TrackerSparql to hold the query.
| * libtracker-sparql: Add TrackerSparqlStatementCarlos Garnacho2018-11-134-0/+136
| | | | | | | | | | This object can hold a long lived query, in which parameters may be changed prior to execution.
| * libtracker-data: Support parameter bindingsCarlos Garnacho2018-11-136-20/+199
| | | | | | | | | | Those relate to PARAMETERIZED_VAR, and allow binding values through it at query preparation time.
| * libtracker-data: Add syntax support for parameterized variablesCarlos Garnacho2018-11-131-5/+33
| | | | | | | | | | | | These variables (with "~var" syntax) will be bound through API, providing a decent protection against injections. They can be used in every place a boolean/numeric/string literal is allowed.
| * libtracker-data: Add tracker_db_interface_bind_valueCarlos Garnacho2018-11-132-0/+46
| | | | | | | | | | This function takes a generic GValue, and uses the right sqlite3_bind* function underneath, or transforms to a string.
| * libtracker-data: Drop old SPARQL parserCarlos Garnacho2018-11-134-4491/+0
| |
| * libtracker-data: Flip the TrackerSparql switchCarlos Garnacho2018-11-133-12/+15
| | | | | | | | From now on, TrackerSparql will be used for handling SPARQL queries.
| * libtracker-data: Append literals directly past the variable limitCarlos Garnacho2018-11-131-3/+79
| | | | | | | | | | | | Once we are past the variable limit (Currently hardcoded to 999, matching SQLite limits) resort to appending literals in SQL directly. This used to happen in the older parser, and unbreaks 02-sparql-bugs which tests this.
| * libtracker-data: Add back 'NULL' literal handling for INSERT OR REPLACECarlos Garnacho2018-11-132-1/+15
| | | | | | | | | | This is a tracker extension that allows INSERT OR REPLACE to also delete values.
| * libtracker-data: Fix handling of fn:string-joinCarlos Garnacho2018-11-132-1/+23
| | | | | | | | | | | | | | In a quite unstandard way, this function takes the list of strings to join surrounded by parentheses, eg. fn:string-join(('a', 'b'), '|'). Handle this through allowing nesting of ArgList for this case, it will error out in every other case.
| * libtracker-data: Preprocess \u and \U sequences in SPARQL queriesCarlos Garnacho2018-11-131-3/+5
| |
| * libtracker-common: Add helper function to escape \u and \U sequencesCarlos Garnacho2018-11-132-0/+91
| |
| * libtracker-data: Accept comma as GROUP_CONCAT separatorCarlos Garnacho2018-11-132-2/+33
| | | | | | | | This is a tracker extension present in previous SPARQL parser.
| * libtracker-sparql: Use INSERT DATA on insertionsCarlos Garnacho2018-11-131-1/+1
| |
| * libtracker-data: Add "INSERT INTO iri" syntax backCarlos Garnacho2018-11-132-3/+17
| | | | | | | | This is a Tracker extension to SPARQL.
| * libtracker-sparql: Allow non bracketted expressions in OrderClauseCarlos Garnacho2018-11-132-5/+12
| | | | | | | | This is a Tracker SPARQL extension present in the previous parser.
| * libtracker-data: Add back support for DELETE{}/INSERT{} with no WHERE clauseCarlos Garnacho2018-11-132-6/+20
| | | | | | | | This is a Tracker extension to SPARQL.
| * libtracker-data: Add INSERT/DELETE SILENT syntax backCarlos Garnacho2018-11-132-5/+22
| | | | | | | | This is a tracker extension to SPARQL.
| * libtracker-data: Add 'INSERT OR REPLACE' SPARQL extension backCarlos Garnacho2018-11-132-1/+19
| | | | | | | | This is syntax traditionally allowed by Tracker.
| * libtracker-data: Make ';' separator between updates optional againCarlos Garnacho2018-11-132-3/+11
| | | | | | | | This is a Tracker extension to the SPARQL1.1 syntax.
| * libtracker-data: Add back support for SPARQL updatesCarlos Garnacho2018-11-131-45/+437
| |
| * libtracker-data: Add method to fetch unused URNsCarlos Garnacho2018-11-132-0/+36
| |
| * libtracker-data: Add internal UUID generator SQL functionCarlos Garnacho2018-11-135-0/+123
| |
| * libtracker-data: Expose TrackerSparql API for updatesCarlos Garnacho2018-11-132-0/+60
| |
| * libtracker-data: Invert processing of Verb and ObjectList clausesCarlos Garnacho2018-11-131-4/+19
| | | | | | | | | | | | For sequential property paths it will be more convenient to have the ObjectList node available before processing the property path, so we can explode those properly into intermediate blank nodes.
| * libtracker-data: Implement MINUSCarlos Garnacho2018-11-131-1/+6
| | | | | | | | Use the equivalent EXCEPT sqlite syntax.
| * libtracker-data: Implement SHA384Carlos Garnacho2018-11-132-1/+10
| | | | | | | | If glib >= 2.51.0 is available, we can implement this.
| * libtracker-data: Accept Expression in BOUND()Carlos Garnacho2018-11-132-9/+6
| | | | | | | | This is a syntax extension we used to accept, so bring it back.