[ZODB-Dev] IndexedCatalog 0.6.0-RC1
Christian Reis
kiko at async.com.br
Wed Sep 17 19:06:27 EDT 2003
After a long winter, here's the first release candidate of
IndexedCatalog 0.6.0. A description of this pre-release follows, and
comments are invited.
! New Features
* Subclassing
IC now supports complete catalog subclassing. 0.5.0 included this
as a preview, but 0.6.0 provides full functionality. Subclassing
means you can have a hierarchy of classes:
class Shape | class Triangle(Shape) | class Rectangle(Shape)
and all Triangle and Rectangle objects created are automatically
indexed by the Shape catalog (as well as by their own catalogs).
Queries done to the Shape catalog can return objects of all
subclasses (including Triangle and Rectangle objects).
Subclasses also inherit attributes defined in their parent classes,
which mirrors conventional inheritance, and provides the required
semantics for parent catalog queries.
* Schema Updating
A fact of your application's life is that your object schema will
change. IC now provides API that triggers an update to catalogs,
which automatically creates and removes indexes according to the
changes in your class' attributes. This feature is a must for using
IC in an evolving application schema, and (minus three minor
issues) it works quite well.
[These issues will be fixed in 0.6.0 final.]
* Reindexing
Catalogs now offer a reindex() API, which allows indexes to be
rebuilt on-demand. This also provides a simple way to repair indexes
that have "somehow" become damaged.
* Integrity Checking
The Shelf and Catalog now include classes that perform integrity
checking, which allows diagnosing damaged indexes and inconsistent
objects. [This was used to a major extent while cleaning up
inconsistencies and bugs in the catalog and index code itself.]
* C extensions
Nicholas Henke contributed an implementation of IndexedObject and a
number of Util methods as C extensions, as a performance
enhancement.
Lots of other small enhancements went in, including support for
indexing class types, API improvements, internal schema updates, and
more.
! Fixes
A *large* number of fixes were implemented, most notably a rewrite of
the mutable indexes to use special classes that notify the index as
modifications are made.
Many of the tests in the testsuite were renamed, and many tests were
added.
Quite a few bugs were caught by running pychecker through the code,
including numerous typos and not a small amount of dead code.
The full ChangeLog is included in the distribution tarball.
! Show Me the Code
http://async.com.br/projects/IC/dist/IndexedCatalog-0.6.0-RC1.tar.gz
A bonsai query to see all changes that went in since 0.5.0:
http://makeashorterlink.com/?P33B15EE5
Meaningless statistics: since 0.5.0, roughly (+6000/-3000) lines
were changed. IC itself is around 4500 lines of python, and 300
lines of C; the testsuite has over 60 tests in around 2500 lines.
! Comments and Flames
indexedcatalog at async.com.br
http://www.async.com.br/mailman/listinfo/indexedcatalog
This iteration of IC had us holding our breath for a long time, but
we've come out with fairly-rounded set of features, and nicer
performance with better code. I feel IC is really at the point where
it's solid and performant enough for day-to-day use (and our
customers are beginning to agree too!). If you've been wondering
what IC is like, or what it is for, this is a great time to try it
out and send in feedback on what you think.
Thanks to Nic, Johan and Pinazo, Rico and Salgado at Async Open
Source for their hard work on getting another release candidate out
the door.
Take care,
--
Christian Reis | http://async.com.br/~kiko/ | [+55 16] 261 2331
More information about the ZODB-Dev
mailing list