All steps are important, because if e.g. step 3. is skipped, the bug does not appear. Same for step 6.
Steps to reproduce- Set-up a new database.
- Import some testfiles (I've imported approx 330 jpg-files).
- Create new Attribute Set "Empty" (File).
- Create new Attribute Set "Test" (File).
- Within "Test" create new Attribute "Value" (Integer).
- Fill in some values in "Test.Value" for some files (only one entry per file) (I've enterend "1" in first jpg-file, "2" in second jpg-file and "3" in third jpg-file).
- Within Category-view, create two new categories:
- Name "novalue"; Formula "@Attribute[Test.Value,novalue]"
- Name "hasvalue"; Formula "@Attribute[Test.Value,hasvalue]"
The sum of the two categories "novalue" and "hasvalue" does not sum up to the total files in the database.
sc1.jpg
Doing the following does not solve the problem:
- Running Database Diagnostics.
- Closing and re-opening IMatch.
- Shutting-down and re-starting the Computer.
Probably this formula ignores files without an Attribute record?
This is to check if an attribute in a record has a value. If a file has no Attribute records, it is probably ignored.
Did you check that?
I've just entered and Attribute record for 3 files (see first post step 6.). In total there are 336 files in the DB. That means the "
novalue / hasvalue" categories should show:
- 333 / 3 or
- 0 / 3 but definitely not
- 30 / 3
Because these 30 files do not differ from all the other files (apart of the 3 files with Attribute record).
By the way: I've imported 336 times the same file just with different filenames, so also no difference here.
That's definitely not right. I shall investigate at the earliest opportunity I'll look into it!
Would it help if I provide you with the IMatch-DB (test-DB; approx. 30MB) containing above described behaviour?
I'll create a small test db with 10 files and an Attribute Set. I post more after I had time to test this.
I have fixed this for the next release, thanks.
Out of curiosity, what was the problem?
Wrongly used BitVector operations in the QueryManager when processing the result of a nvalue query.
Basically | instead of &
Thanks for explaining and fixing.