2010-07-23 Martyn Russell Release 0.9.14 Updated NEWS 2010-07-22 Aleksander Morgado Fixes NB#181538: Assume tar program is in $PATH 2010-07-22 Jürg Billeter SPARQL: Fix generated SQL when not retrieving actual data SPARQL: Add support for EXISTS and NOT EXISTS 2010-07-22 Aleksander Morgado libtracker-miner: file may not have parent libtracker-db tests moved to libtracker-data 2010-07-22 Jürg Billeter maemo: Add contactGroup{Audio,Video,Vibration}Ringtone 2010-07-21 Aleksander Morgado Fixes NB#179894: Reset sqlite3 stmt if detected as expired, and retry libtracker-data: Avoid reading already disposed memory Re-fixes NB#180236: Filter not removed when going into UNAVAILABLE Fixes NB#180679: Make sure DBusGProxy is destroyed when destroying miner * It's quite a race condition, but could happen that the miner object gets fully disposed, but the DBusGProxy was still alive as there was an extra reference of it. In this case, if receiving a new message in the filter for NameOwnerChanged, we were calling g_object_get_qdata() on an already destroyed GObject. 2010-07-21 Jürg Billeter NAO: Set maximum cardinality of propertyName and propertyValue to 1 2010-07-20 Aleksander Morgado libtracker-client: Fix double free, error was freed in callback tracker-miner-fs: Fix memleak in get_metadata_fast_cb() libtracker-data: Improve logging after sqlite error, before aborting 2010-07-20 Jürg Billeter tracker-extract: Fix crash in albumart when pixbuf cannot be created 2010-07-20 Aleksander Morgado tracker-extract: check if user_data expected one only if proper message path and interface Fixes NB#180236, tracker-store: check if user_data expected one only if proper message path and interface 2010-07-20 Philip Van Hoof libtracker-data: Remove the unused contents.db libtracker-data: Remove storing of local locale for no reason libtracker-data: Do not cope with ontology changes in read-only mode 2010-07-20 Jürg Billeter libtracker-data: Do not reindex in read-only mode libtracker-data: Do not fetch resource count in read-only mode libtracker-data: Replace interrupt_thread by GCancellable Merge libtracker-db into libtracker-data Update .gitignore 2010-07-20 Aleksander Morgado libtracker-common: If error splicing, let user callback free it 2010-07-19 Aleksander Morgado libtracker-common: Fix memory leak when receiving partial reply plus error in DBus sync call * So, we're using g_memory_output_stream_new () with a NULL destroy_function. This means we take ownership and control of the internal buffer if the GOutputStream. Then, if the SYNC DBus query results in an error, we won't pass the stream->data to upper layers, so we need to explicitly free it, or a memleak will happen. * Same issue as in commit 2891b982414900a0844265ea831df83c9dfc9895, but for SYNC method this time. libtracker-common: Better call stream_get_data() after dbus_pending_call_block() * Just in case, to avoid crash if realloc() happens with stream->data. libtracker-common: Fix memory leak when receiving partial reply plus error in DBus async call * So, we're using g_memory_output_stream_new () with a NULL destroy_function. This means we take ownership and control of the internal buffer if the GOutputStream. Then, if the async DBus query results in an error, we won't pass the stream->data to upper layers, so we need to explicitly free it, or a memleak will happen. * Could reproduce the issue easily with PDF files giving DBus-timeouts. libtracker-client: Fix memleak, unref DBusPendingCall missing in notify callback Fixes GB#624747 and NB#179434: Avoid double-free in send_and_splice_async_callback() libtracker-client: Avoid compiler warning when using FD-passing Fixed GB#624731: Don't emit signals while iterating HT Probably fixes GB#616199: Avoid second nie:title in msoffice/xml and oasis documents coverage: excluded several files in libtracker-miner which are difficult to test with unit-tests Fix leaks when not unref-ing GFileInfo libtracker-db, journal: Just in case, check if block was allocated libtracker-db, journal: Remove duplicated assert libtracker-db, journal: Remove unreachable code 2010-07-18 Jessica Update Simplified Chinese translation. 2010-07-18 Jorge González Updated Spanish translation 2010-07-17 Andrej Žnidaršič Updated Slovenian translation 2010-07-16 Aleksander Morgado libtracker-miner: Fix memleak in item_move() libtracker-miner, storage: Fix memleak, GUnixMountEntry was not being disposed 2010-07-16 Martyn Russell Release 0.9.13 Updated NEWS 2010-07-16 Aleksander Morgado libtracker-miner: minor style fixes libtracker-miner, miner-fs: Avoid querying with fn:starts-with if not needed * So, if miner-fs knows that it created one of the dummy nfo:Folders without a specific parent (when initializing mounts), it will notify about that created nfo:Folder to the underlying TrackerMinerFS, so that it takes it into account when regenerating mtime and IRI caches. This avoids querying the store with fn:starts-with for all empty folders, so that query is only done if the parent in the query is exactly one of the parents of the previously created directories without parent. * For example, if we got a mount in /home/user/whatever, we need to create the nfo:Folder of that /home/user/whatever before creating the tracker:Volume. When we do so, we do not set the proper parent (nfo:belongsToContainer) in the newly created nfo:Folder, because we still don't know it. But in this case we will tell the TrackerMinerFS that we got a new directory without parent. MinerFS will store the parent of this directory without parent, /home/user in this case; so that when regenerating caches, if first query using nfo:belongsToContainer yields no results; and if the uri used in nfo:belongsToContainer corresponds exactly to one of the GFiles we stored in the internal list, then we do a second query using the given uri (/home/user) as filter in fn:starts-with. This will avoid duplicates in the store for the /home/user/whatever folder, as we properly populated the IRI cache. Fixes GB#624346, libtracker-miner: Proper tracker:mountPoint set for volumes * Before creating a tracker:Volume, we will first check that the specified tracker:mountPoint exists in the store. If it does not exist, we will create a dummy nfo:Folder for that mount point. But, in order to get it populated with the proper information when crawling it, we need to hack the mtime and iri caches, so that if cache is empty after querying the store with nfo:belongsToContainer; we do a second query using a FILTER with fn:start-with(uri). The dummy nfo:Folder we're inserting won't have initially the proper nfo:belongsToContainer property, that's why we need this hack. tracker-miner-fs: Unix time origin not good as dummy time... ... because the directories where removable media is mounted, may actually have mtime=0. So better use a random mtime value in the past. tracker-miner-fs: Create dummy nfo:Folder for mountpoint if needed tracker-miner-files: Make initial volume query synchronous, and check if mount point exists in store libtracker-miner: New tracker_miner_execute_sparql_sync() API method libtracker-miner: New tracker_miner_fs_query_urn() API method libtracker-miner: Fix alignment and some missing semicolons tracker-miner-fs: Improve logs 2010-07-16 Philip Van Hoof libtracker-data: Set default journal-chunk size to 50MB 2010-07-16 Jürg Billeter tracker-store: Fix journal rotating support Revert "Require GLib 2.24 for GZlibDecompressor" This reverts commit 426b1443ef9b5e4ab6428095351a243358fccccb. 2010-07-16 Philip Van Hoof libtracker-db: Keep it possible to compile with GLib 2.22 Disable journal rotating when GLib not recent enough 2010-07-16 Jürg Billeter libtracker-db: Fix critical on journal reader shutdown libtracker-db: Fix critical when removing all database files libtracker-db: Drop duplicate code libtracker-db: Various fixes to journal rotation and compression Use .1 for first rotated journal. Work around GLib flush bug when using G_OUTPUT_STREAM_SPLICE_CLOSE_TARGET. libtracker-db: Compress on journal rotation libtracker-db: Rotate all inactive journal files libtracker-db: Support reading compressed journals 2010-07-16 Philip Van Hoof libtracker-db: Support for moving rotated chunks to another location libtracker-data, libtracker-db: Reimplement Backup() and Restore() to use tar The original implementation of Backup() and Restore() used a simple file copy of the journal. When we have rotated journals we of course can't use only the active journal for Backup(). And for Restore() we want to put the rotation state back the way it was when the backup was made too. So the best option I could come up with was to use a simple tar. libtracker-db, libtracker-data: Support for journal rotation Revert "libtracker-db, journal: remove trailing whitespaces" This reverts commit 25c6701a6a97a8b6acb05db99cc9e3533c37084c. Revert "libtracker-db, journal: Remove unreachable code" This reverts commit 267f28ac48b4410fdfa4561c38cbe891271d2066. NMM: NB#179559, Added domainIndex on nie:title for nmm:MusicPiece tests/libtracker-data: Make distcheck work tests/libtracker-data: Split ontology and ontology change tests tests/libtracker-data: Added some more domainIndex tests libtracker-data: Test for domainIndex already being a first-class property tests/libtracker-data: Allow tests inbetween ontology change phases Adapt test-4 to do something relevant to domain indexes tests/libtracker-data: Added unit test for ontology change coping for domain indexes libtracker-data: Fixed deleting a tracker:domainIndex The normal columns where not being recreated after deleting a tracker:domainIndex from a class. libtracker-data: Merge fix libtracker-data: Fixed a bug in support for domain specific indexes libtracker-data: Guard against null for domain specific index support libtracker-data: Add support for domain specific indexes to the SPARQL engine libtracker-data: Adapt the introspection of the ontology on domainIndex deletion libtracker-data: Fix coping with deletion of tracker:domainIndex Still TODO is updating the introspection too libtracker-data: Disallow multi-value properties for domain specific indexes libtracker-data: Support for deleting a tracker:domainIndex from ontology libtracker-data: Only write to the domain-index class if the resource is one of them libtracker-data: Also write to the domain class' table in case of domain specific index libtracker-data: Added debugging output libtracker-data: Copy data from source to domain-index mirror column libtracker-data: Altering the tables for domain-specific indices libtracker-data: Added tracker:domainIndex property In this commit the tracker:domainIndex property has no function yet. It'll be implemented to represent a setting that will make the storage redundantly store a property in the table of its domain, in order to allow placing an index on the column for that table. For example nmm:MusicPiece has a domain-index on nie:title. This will make it store a redundent copy of nie:title in nmm:MusicPiece's SQL table, while also having a copy in nie:InformationElement's table. The advantage is a less complex query and the possibility to set an index on the redundant column in nmm:MusicPiece's table. 2010-07-15 Petr Kovar Update Czech translation by Marek Cernocky 2010-07-15 Aleksander Morgado Fixes GB#624071, t-s-t: Query results is always a 2 dimensional array. * So when query returns no results, 'results' will be not NULL, but results[0] will be NULL. We need to check for this latter case as well before using the results array or we end up reading garbage. 2010-07-14 Aleksander Morgado libtracker-fts: Helper log better after NEAR-related fixes libtracker-fts: Avoid segfault when using the NEAR/N operator in FTS libtracker-fts: Fix NEAR/XX operator with more than 2 digits libtracker-fts: useful debugging log included, disabled by default Fixes NB#179798: Wrong detection of ignored directory as a directory Fixes NB#176090, libtracker-miner: Don't use same parent GFile for both mtime and iri caches * If the same GFile parent is used to check if cache corresponds to that given parent GFile, it may happen that while ensuring mtime cache, parent is updated but IRI cache is untouched, so that when a new file is inserted the parent of the IRI cache is no longer the one in the parent GFile. Instead of cleaning both caches when the common parent changes, it seems better to have a specific parent for each one. libtracker-miner: Improving logs libtracker-miner: sparql_query_cb() called now item_query_exists_cb() libtracker-miner: Improve logging when found duplicates for a given uri 2010-07-13 Mario Blättermann [i18n] Updated German translation 2010-07-12 Aleksander Morgado libtracker-data: abort if getting max ID fails 2010-07-12 Philip Van Hoof libtracker-data: NB#178599, extra checks for finding the problem 2010-07-12 Aleksander Morgado tracker-extract, pdf: Avoid possible NULL dereference Fixes NB#178825: New --feeds option in tracker-search to look for feeds libtracker-fts: Avoid possible NULL dereference tracker-extract, msoffice-xml: Avoid possible NULL dereference libtracker-miner tests: Avoid unused variable warning Fixes NB#178808: Default verbosity should be errors-only in tracker-store 2010-07-12 Nicolau Gonçalves Updated Portuguese translation Updated Portuguese translation 2010-07-11 Petr Kovar Update Czech translation by Marek Cernocky 2010-07-09 Jürg Billeter libtracker-client: Fix double free in error handling Do not free error received in callback. Fixes NB#174590: NCO: Remove cardinality restriction in nco:title 2010-07-08 Aleksander Morgado tracker-miner-fs: Use 60s as default DBus timeout for requests to extractor tracker-extract: avoid warnings when compiling C++ code with C-only warning flags Fixes GB#623836: Avoid crashing if table of pieces is empty in the msword file