This is the full 0.6 Changelog:
- Implemented no reasoning ending tag "@@" which prevents the reasoner
from being called. Only objects with direct tagging will be returned
as query results. Very useful while doing housekeeping of the archive,
moving files in subtags. A new constant has been defined in tagsistant.h:
#define TAGSISTANT_QUERY_DELIMITER_NO_REASONING "@@"
and its value is reported by stats/configuration.
- Added tagsistant_querytree_check_tagging_consistency() call to:
- Changed tagsistant_rename() to return EXDEV if both from and to paths
are not taggable. This will cause calling program to use
open-read/write-close cycle to copy files. This is required if you
are moving myfiles/tags/t1/@/directory/files* to myfiles/tags/t2/@/
because source files* are not tagsistant managed objects (hence
is_taggable is 0).
- Fixed a bug in src/fuse_operations/readdir.c which caused the inclusion
of '@' and '+' even after a '+/' ending path.
- fixed a bug in mkdir() which used tagsistant_create_and_tag_object() in
place of tagsistant_force_create_and_tag_object()
- reduced reasoner SQL queries
- enabled some caches, properly working
- tagsistant_querytree_check_tagging_consistency() moved from
tagsistant_querytree_new() to fuse_operations, where appropriated:
- mknod() created new files using provided mode_t permissions. If user
was not granted write permission, following open() and write() calls
would fail. I've forced S_IWUSR in mknod() mode_t permissions to fix
- If requested DBD driver is not available, a message is printed
- Debugging output uses --debug=<profile> switch, where <profile> is a
string containing any combination of the following flags:
f: file tree (readdir)
F: FUSE operations (open, read, write, symlink, ...)
l: low level
q: query parsing
s: SQL queries
- Implemented tag_id cache.
- Implemented inode resolution by objectname and and_set cache.
- Moved resoning code to reasoner.c
- Deleted some dead code.
- Avoided some transactions where no SQL insert/update were involved.
- When a tagsistant_querytree object was fetch from the cache, the
transaction_started field were not set accordingly to
tagsistant_querytree_new() actual parameters, thus preventing proper
SQL transaction commit. This bug was especially evident inside
- stats/ now contains some meaningful files:
cached_queries: how many queries got cached
configuration: the whole configuration given at run time
connections: how many connections to SQL are active
objects: how many objects are tagged
relations: how many relations are established
tags: how many tags have been created
- repository.ini file implementation
- removed any warning at compile time
- code cleanup
- Queries are cached. Since a lot of time is spent by
tagsistant_querytree_new() in reasoning the tags of a query,
once is done a copy of the data structure is saved in a hash
table and later reloaded. Performance improved by a 5-10x.
- Tag removal (rmdir ~/mifiles/tags/a_tag/) lead to an error. Bug
reported by Lingnan.
- Speeds up reasoning by cutting one SQL query every three.
- Bug reported by Matei David:
$ mkdir myfiles/tags/tag-a
$ mkdir myfiles/tags/tag-b
$ touch some-file
$ cp some-file myfiles/tags/tag-a/tag-b/@/
$ rm myfiles/tags/tag-b/@/some-file
$ ls myfiles/tags/tag-a/@/
ls: cannot access myfiles/tags/tag-a/@/some-file: No such file or directory
- Introduces universal tagging: not just files can be tagged, but
directories and devices and pipes too.