| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
| |
/opt/tracker/share# cat tracker/domain-ontologies/test.rule
[DomainOntology]
DataLocation=%HOME%/.cache/test/data
CacheLocation=%HOME%/.cache/test/cache
OntologyLocation=%SHAREDIR%/tracker/ontologies
Domain=test
DBusPath=/test
OntologyName=test
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
specific ontologies
|
|
|
|
|
|
|
|
|
|
|
|
| |
And set the differing locales in the error message. Errors here are
mainly due to 1) inconsistent locales, specifically the client running
with a different locale than tracker-store, and 2) faulty apps that don't
call setlocale() as appropriate.
We already used to warn when locales differ, but the message wasn't
that useful. Including the differing locales helps narrow down the
issue. This error is mainly visible in the libtracker-direct backend,
tracker-store shall handle locale changes on (re)start.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Our old stale copy of the FTS3/4 module is now deleted, replaced by
a shinier FTS5 embedded module. If at configure time we detect that
SQLite doesn't offer the FTS5 module, we will load our own, just as
we used to do with FTS4.
FTS5 brings a few differences in the ways it's meant to be extended,
the tokenizer has been updated to cope with the differences. Also,
FTS5 offers no offsets() builtin function, nor matchinfo() which we
used to implement ranking. It offers though ways to implement
additional functions, and builtin rank support which can be tweaked
to achieve the same functional results than we did.
Other than that, the ways to interact with the FTS virtual table
are roughly similar to those in FTS4, insertions and deletions have
been updated to do things the FTS5 way.
Since it's not worth to bump the database format (data is reproducted
from the journal, so we drop some embedded data such as
nie:plainTextContent), the nco:hobby property has been modified to
no longer be fulltext indexed, AFAIK there's no users ever setting/
accessing that, and the FTS properties change will trigger the
regeneration of the FTS view and virtual tables, resulting in a
seamless update to FTS5.
However, we don't leave completely unscathed from the fts3_tokenizer()
change. Since the older FTS3/4 tokenizer is not registered, we can't
just drop the older FTS table. So it is left dangling and never
accessed again, in favor of the newer fts5 table. This is obviously
not a problem when creating the database from scratch.
In the way, a few bugs were found. per-property weights in ranking
were being given in a scrambled way (although stable across database
generations). And deletion of FTS properties (or entire rows) could
result in the tokens not being fully removed from the FTS table,
resulting in confused searches. These are now fixed.
Impact to users of tracker should be none. All the FTS Sparql-to-SQL
translation has been updated to just use FTS5 syntax and tables.
|
|
|
|
|
|
|
|
| |
We no longer have a reason to deem this change incompatible. Since
no actual text is stored in the FTS tables, and it merely updates
its tokenization info from the original class tables, we can just
drop this info and reconstruct at will. So there's no longer need
to consider tracker:fulltextIndexed changes as incompatible.
|
|
|
|
|
| |
All callers require both hashtables, so remove NULL handling for those.
Fixes a possible memory leak if fts_properties is NULL.
|
|
|
|
| |
This reverts commit e4a0f7be0c138a733b74413ff7a11a9431c7fe08.
|
|
|
|
|
|
| |
There's otherwise name collision between the old single-valued index
and the new multivalued table. The index for the multivalued table
will be created afterwards.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The Resource table can be left populated with stale resources, in order to
avoid these from accumulating, clean these up during startup.
This assumes all miners and clients will be educated and will clean up all
references to deleted resources (triples of the form {?urn some:prop ?deleted})
at the moment deletes happen, and always during the lifetime of the previous
run of tracker-store.
If there's sloppy miners/clients that don't fully unlink the resource, or
users mess with the lifetime of tracker-store in the middle of such
maintenance operations, we will leave such stale values around the
database, possibly confusing queries where the predicate is used in the
WHERE section. Short of having fully refcounted resources, seems like a
minor drawback.
|
|
|
|
|
|
|
|
| |
Whenever there's a change in the implementation of our tokenizers, we'll
trigger a rebuild of the FTS table. This allows for live updates to our
tokenizers without the need to redo the database from scratch.
The FTS rebuild is also triggered on locale changes.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If, during database update, the migration code chose to create a table from
scratch, dumping data from the original one (eg. removing columns for
properties that now have maxCardinality>1 and move to their own table),
the destination table would be missing virtually all fields.
When this happens, in_update differs from in_alter (the former tells whether
we're creating the DB from scratch, the latter whether we're altering the
original table). As we're actually creating the table from scratch, we must
behave as such when dealing with the affected properties.
https://bugzilla.gnome.org/show_bug.cgi?id=745737
|
|
|
|
|
|
|
|
|
| |
If a property changes from maxCardinality 1 to many, the database
format is updated to cope with that, but at the time of migrating
data, it doesn't account for resources having no elements. In order
to avoid constraint errors, those must be skipped.
https://bugzilla.gnome.org/show_bug.cgi?id=743727
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The Namespace has been cleaned up too, all APIs now start with:
TRACKER_PREFIX_
or
TRACKER_DATASOURCE_
The well known definition for the TrackerMinerFS graph has also been changed
to:
TRACKER_OWN_GRAPH_URN
because it now applies to more than just the TrackerMinerFS, we're using it
in:
tracker-writeback
tracker-miner-apps
tracker-miner-user-guides
...
libtracker-data
It should probably be internal actually.
|
| |
|
| |
|
| |
|
|
|
|
| |
Fixes GB#693889, E: tracker no-return-in-nonvoid-function tracker-data-manager.c:361
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
FTS support on Tracker is now implemented using external content
support available in sqlite >= 3.7.9 FTS4.
FTS tables created this way fetch data from a single table/view,
for this purpose an intermediate view has been created to
interface with the FTS table. As this view is mainly queried by
ID (both when populating the FTS contents, and when querying
throught the FTS table), queries are fast enough on it.
As FTS indirectly points to the data on the real tables where tracker
data is stored, strings themselves are stored only once in the database,
so there is no impact in database size when compared to the previous
custom FTS code. Performance had little changes too from testing.
|
|
|
|
|
| |
Use a define that actually exists around tracker_fts_init(), which
also checked for the inverted value.
|
|
|
|
|
| |
commit/rollback should happen now with the rest of the
operations, and update_init() isn't necessary anymore.
|
|
|
|
|
| |
If a new property is with tracker:fulltextIndexed, we need to add
a new column for it in the FTS table.
|
|
|
|
|
| |
there is now one column per ontology property with FTS enabled,
the column name is that of the property.
|
|
|
|
|
|
| |
The code isn't yet feature complete, but cleans up the tracker
integration with the FTS module, which means that fts3* files
are taken verbatim from sqlite, and are licenced as such.
|
| |
|
|
|
|
| |
Fixes NB#286610.
|
|
|
|
|
|
| |
Tracker can operate with missing indices.
Fixes NB#283501.
|
|
|
|
|
|
|
| |
Recreating an index with new collation while indexes with old collation
still exist may result in SQLite reporting database corruption.
Fixes NB#282541.
|
|
|
|
|
| |
fix_indexed already prints the index name before all SQL statements
executed, no need to print class and property name in recreate_indexes.
|
|
|
|
| |
Fixes NB#281335.
|
| |
|
| |
|
|
|
|
|
|
| |
If the journal is disabled, do not reset database on unsupported
ontology change as this would loose data. Instead, continue operation
with old ontology version.
|
|
|
|
|
|
| |
This does not make a difference when replaying journal, however, if
the journal is disabled, we want to continue using the old ontology
if we cannot use the new version.
|
| |
|
|
|
|
| |
Fixes NB#279789.
|
| |
|
|
|
|
| |
Fixes NB#268105.
|
|
|
|
|
|
| |
In case the initialization of the db fails during the restore of a
backup, and only in case of --disable-journal, then should the init
fail with an error instead of trying to recreate a clean meta.db
|
| |
|
| |
|