- Maintenance release.
- Further improvements in index-accelerated ordering strategy.
- ResultSet now implements java.io.Closeable, allowing use with Java 7 try-with-resources - closes issue #52.
- Deployed to Maven Central.
- Maintenance release.
- Merged pull request #54 from devinrsmith which fixes an issue where calling MaterializingResultSet.hasNext() repeatedly without calling next() advances the iterator when it should not.
- Fixed an edge case when index-accelerated ordering is enabled: if the primary attribute used for sorting was multi-valued, and some objects did not have any value for that attribute, then the objects which did not have a value for the attribute could be returned after the main results even if they did not fully match the query.
- Deployed to Maven Central.
- Maintenance release.
- Merged pull requests from gzsombor and kminder which improve the handling of in() queries - many thanks!
- Deployed to Maven Central.
- Support for running SQL queries on the collection.
- Support for running CQN (CQEngine Native) string-based queries on the collection (queries with the same syntax as programmatic queries, but in string form).
- Significant performance improvements for complex queries.
- Bulk import support for Off-heap and Disk persistence.
- More fine-grained control over the ordering of objects by attributes where some objects might not have values for the attribute: orderBy(missingFirst(attribute)) and orderBy(missingLast(attribute)).
- Nearly all indexes (On-heap, Off-heap and Disk) can now accelerate standing queries; StandingQueryIndex, which was on-heap only, is deprecated.
- The statistics APIs exposed by indexes, now provide additional statistics on the distribution of values in the index, and allow applications to traverse indexes directly (for advanced use cases).
- The performance of the "index" ordering strategy, useful for time time-series queries is improved.
- Deployed to Maven central.
- For more information and usage examples for this release see this post.
- Updated Xerial SQLite driver used by
DiskIndex
andOffHeapIndex
to 3.8.10.1, improves hot redeploy support in webapps - Deployed to Maven central
- Improved the performance of
DiskIndex
andOffHeapIndex
when processing stringstartsWith
queries - Deployed to Maven central
- Fixed exception when using index ordering strategy, when a range of values in the query is not in the collection
- Added validation to prevent duplicate indexes getting added
- Deployed to Maven central
- New
TransactionalIndexedCollection
supports read-committed transaction isolation using Multi-Version Concurrency Control (MVCC) - New ordering algorithm which can take advantage of indexes (see
orderingStrategy(INDEX)
) - New support to generate attributes automatically as bytecode (see
AttributeBytecodeGenerator
) IndexedCollection
can now be located in off-heap memory, or persisted on disk (seeOffHeapPersistence
andDiskPersistence
)- New indexes can be located in off-heap memory, or persisted on disk (see
OffHeapIndex
andDiskIndex
) - Tested with an IndexedCollections of 100 million objects
- CQEngine 2.0 contains some API changes since 1.3.2 - see the updated examples on the site for details
- Deployed to Maven central
- Bugfix to
NavigableIndex
's handling of range queries where the range values are exclusive and a quantizer is configured - Deployed to Maven central
- Added new query types:
all()
,none()
, andregexMatches()
- Deployed to Maven central
- Maintenance release
- Bugfix for
ObjectLockingIndexedCollection.StripedLock
's handling of negative hashcodes (issue 35) - Deployed to Maven central
- Maintenance release
- Bugfix for deduplication MATERIALIZE strategy (issue 32)
- Deployed to Maven central
- Maintenance release
- Fixed "FilteringIterator.hasNext advances iterator every time it is called", with thanks to Gabe Hicks for patch (issue 23)
- Fixed performance bottleneck in
Query.hashCode()
, with thanks to Atul Vasu for contribution (issue 25) - Fixed "Set remove() and removeAll() doesn't follow substitutability principle", with thanks to Atul Vasu for patch (issue 27)
- Deployed to Maven central
- Added
AttributesGenerator
, it is no longer necessary to write attributes by hand (issue 22) - See wiki page AttributesGenerator
- Deployed to Maven central
- Improved the toString representation of Query objects, query toStrings are now human readable (issue 19)
- Bugfix in
SelfAttribute
(issue 21) - Deployed to Maven central
- Added support to sort results in ascending/descending order on an attribute-by-attribute basis, with thanks to Roberto Socrates for patch (issue 16)
- Example usage:
cars.retrieve(query, queryOptions(orderBy(ascending(Car.DOORS), descending(Car.PRICE))))
- This release involves a minor API change from CQEngine 1.1.x, so is not a drop-in replacement
- Code using the old API to order results such as
cars.retrieve(query, queryOptions(orderByDescending(Car.PRICE, Car.DOORS)))
should be changed to that above - Deployed to Maven central
- Additional work on
ReflectiveAttribute
to play nicer with inherited fields (issue 18) - Deployed to Maven central
- Updated
RadixTreeIndex
,ReversedRadixTreeIndex
,InvertedRadixTreeIndex
,SuffixTreeIndex
to use concurrent-trees library 2.1 for lower memory usage and lower latency (issue 14) - Added
CQEngine.newObjectLockingInstance(int concurrencyLevel)
providing object-level locking on the write path for applications in which threads might race each other to add/remove the same object (issue 9) - Bugfix to hashCode implementation in Not.java, would reduce collisions if queries stored in hash maps (issue 13)
- Added support to
SimpleAttribute
to specify generic types manually via constructor to bypass reflection (issue 17) - Bugfix to
ReflectiveAttribute
to allow it to access private fields (issue 18) - Deployed to Maven central
- Added new type of index,
UniqueIndex
, with thanks to Kinz Liu (issue 8) - can be used with primary-key type attributes to reduce memory usage and yield faster query performance - Added
ReflectiveAttribute
- reflection-based attribute, for trading performance for convenience/flexibility/simplifying dynamic queries in some cases (issue 6) - Added benchmarks for indexing overhead (issue 7)
- Deployed to Maven central
- Added support for Has queries -
has(Car.DESCRIPTION)
andnot(has(Car.DESCRIPTION))
- the equivalent of SQLIS NOT NULL
andIS NULL
respectively. Use withSimpleNullableAttribute
. These queries can be accelerated viaStandingQueryIndex
- Bugfix to updating compound indexes for objects added/removed after index added
- Deployed to Maven central
- Added support for customizing via factories, the construction of maps and sets used internally by
HashIndex
,NavigableIndex
andCompoundIndex
(concurrency level, load factor etc.) (issue 5) - Deployed to Maven central
- Added support for attributes returning null values via
SimpleNullableAttribute
,MultiValueNullableAttribute
(issue 2) - Bugfix to
ResultSet.uniqueResult()
(issue 4) - API same as in 0.9.1, no code changes necessary
- Deployed to Maven central
- Deployed to Maven central
- Public upload of source