From: Wolfgang Meier <wolfgang@ex...> - 2010-07-26 21:00:12
I just fixed a bug regarding range indexes, which has been around for
a while. Scenario: you have defined an index on qname "b" for
collection /db/a, but not for /db/b. A query on the entire database
may return incorrect results if a wildcard step is involved:
collection("/db")//a[b = 'x'] returns correct results, but
collection("/db")//*[b = 'x'] results in an empty sequence.
Rev 12059 in 1.4.x 12062 in trunk fix this issue.
For future versions, I think about changing eXist's current behavior
with respect to range indexes: right now, the query engine will only
use an index if it is available for all queried collections. This
guarantees you always get complete results, even for collections with
inconsistent index configurations, but it limits performance. I think
the query engine should rather trust the user, assuming that he did
exclude certain collections from indexing by purpose and use the
available indexes even if they are partial. This will result in better
performance and is maybe easier to understand (than figuring out why
an index is not used).
Get latest updates about Open Source Projects, Conferences and News.